Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenFlowコントローラとその実装

 OpenFlowコントローラとその実装

Sho Shimizu

April 29, 2012
Tweet

More Decks by Sho Shimizu

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • ਗ਼ਫɹᠳ (Twitter: oshothebig) • ๭ࣾݚڀॴۈ຿ • লిྗωοτϫʔΫٕज़ʢओʹɺϧʔςΟϯάʣ •

    ωοτϫʔΫΞʔΩςΫνϟɺϓϩτίϧ • શޫωοτϫʔΫ, GMPLS, VLAN Tag Swapped Ethernet, ಈత࠶ߏ੒ϓϩηοα, etc.
  2. OpenFlowͱͷؔ܎ • 4, 5೥લɺݚڀࣨͷڭत͔Β஌Δ • Galibier OpenFlow Controller • ϒϩά

    • 300ߦ଍ΒͣͰॻ͚ΔJavaʹΑΔOpenFlowίϯτ ϩʔϥ (http://bit.ly/qXoMGM) • OpenFlowͷϕϯνϚʔΫϓϩάϥϜΛJavaͰॻ͘ (http://bit.ly/pbI3Or)
  3. OpenFlowίϯτϩʔϥ࣮૷ • NOX (Nicira) • Trema (NEC) • Beacon (David

    Erickson, Stanford University) • Floodlight (BigSwitch Networks?) • Maestro (Rice University) • Nettle (Yale University)
  4. Trema • NEC • https://github.com/trema/trema • C/Ruby • GPLv2 •

    ίʔυ͕៉ྷ • Ծ૝ωοτϫʔΫػೳͰ࢖͍΍͍͢
  5. Beacon • David Erickson (Stanford University) • http://www.beaconcontroller.net/ • Java

    • GPL v2 and the Stanford University FOSS License Exception v1.0 • τϙϩδσΟεΧόϦʔ, WebΠϯλʔϑΣΠε • 2011/9/12ʹVer. 1.0.0ϦϦʔε
  6. Floodlight • Big Switch Networks? • http://www.openflowhub.org/display/Floodlight/ Floodlight+is+a+Java-based+OpenFlow+Controller • Java

    • Apache License • git://github.com/bigswitch/floodlight.git • ιʔε͸·ͩೖखͰ͖ͳ͍
  7. BeaconͱFloodlight • Floodlight͸Beacon͔ΒͷϑΥʔΫ • OSSϥΠηϯεͷҧ͍ͱOSGiґଘͷ༗ແ • Big Switch Networks͕བྷΜͰΔʁ •

    git://github.com/bigswitch/BeaconMirror.git (Ҏલ) • git://github.com/bigswitch/floodlight.git
  8. Nettle • Yale University • http://haskell.cs.yale.edu/?page_id=376 • Haskell • BSD3

    • Nettle: Functional Reactive Programming of OpenFlow Networks http://haskell.cs.yale.edu/wp-content/uploads/2011/03/ NettlePADL2011.pdf
  9. ϝοηʔδ • Symmetric Message • Hello, Echo, Τϥʔ, ϕϯμʔ֦ு •

    Controller/Switch Message • ϑϩʔͷ௥Ճ, εΠονͷঢ়ଶऔಘ, ౷ܭऔಘͳͲ • Async Message • Packet in, ϑϩʔͷ࡟আ, ϙʔτͷঢ়ଶ
  10. Galibier OpenFlow Controller • ͖͔͚ͬ • Mac্ͰίϯτϩʔϥΛಈ͔͢ͷ͕໘౗ͩͬͨ • Java •

    OpenFlowϥΠϒϥϦ: openflowj • ඇಉظIO: Netty • http://github.com/oshothebig/galibier
  11. OpenFlowݻ༗ಈ࡞ • ηογϣϯཱ֬ → HELLOૹ৴ • HELLOड৴ → FEATURE_REQUESTૹ৴ •

    FEATURE_REPLYड৴ → ϋϯυγΣΠΫ׬ྃ • ECHO_REQUESTड৴ → ECHO_REPLYૹ৴ • ఆظతʹECHO_REQUESTૹ৴
  12. ΠϕϯτAPI • switchConnected(Switch sw) • switchDisconnected(Switch sw) • handlePacketIn(Switch sw,

    OFPacketIn msg) • handleFlowRemoved(Switch sw, OFFlowRemoved msg) • handlePortStatus(Switch sw, OFPortStatus msg)
  13. Onix • OSDI’10Ͱൃද Onix: A Distributed Control Platform for Large-scale

    Production Networks http://www.usenix.org/event/osdi10/tech/full_papers/ Koponen.pdf • Nicira Networks, Google, NEC • ෼ࢄίϯτϩʔϥ
  14. Onix Onix Switch Import / Export NIB Distribution I /

    E Network Control Logic Switch Import / Export NIB Distribution I / E Network Control Logic Server 1 Server N Managed Physical Network Infrastructure Management Connectivity Network Infrastructure Figure 1: There are four components in an Onix controlled network: managed physical infrastructure, connectivity
  15. • Network Information Base (NIB) • ωοτϫʔΫͷεςʔτ͸άϥϑͰදݱͰ͖Δ • ΞϓϦέʔγϣϯಛੑʹ߹ΘͤͨDB •

    Transactional persistent database • One-hop, eventually-consistent, memory-only DHT Onixͷࢥ૝ 1 Node Forwarding Engine Host Forwarding Table n n Port 1 Network Link 2 1 Figure 2: The default network entity classes provided by Onix’s API. Solid lines represent inheritance, while dashed lines correspond to referential relation between entity instances. The numbers on the dashed lines show the quantitative mapping relationship (e.g., one Link maps to two Ports, and two Ports can map to the same Link). Nodes, ports and links constitute the network topology. All entity classes inherit the same base class providing generic key-value pair access. Category Query Create, dest Access attri Notification Synchronize Configuratio Pull Table 1: Fu