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. OpenFlowͱͷؔ܎ • Galibier OpenFlow Controller • https://github.com/oshothebig/galibier • ϒϩά •

    300ߦ଍ΒͣͰॻ͚ΔJavaʹΑΔOpenFlowίϯτ ϩʔϥ (http://bit.ly/qXoMGM) • OpenFlowͷϕϯνϚʔΫϓϩάϥϜΛJavaͰॻ͘ (http://bit.ly/pbI3Or)
  2. OpenFlowεΠον ιϑτ΢ΣΞ࣮૷ ϋʔυ΢ΣΞ࣮૷ • Reference Implementation • Open vSwitch •

    NEC UNIVERGE PF5240/ PF5820 • Pronto Systems 3240/3290 • IBM RackSwitch G8264 • HP 3500/5400/8200
  3. NOX • http://noxrepo.org/ • GPL v3 • Nicira Networks͕ओಋ •

    C++/Python • ࠷΋ྺ࢙ͷ͋Δίϯτϩʔϥ • ελϯϑΥʔυେֶΩϟϯύε಺Ͱ࢖༻ • ࠷ۙɺ։ൃ͕ఀ଺ؾຯʁ • 2011/1/1Ҏ߱ͷίϛοτ਺͕53
  4. Trema • https://github.com/trema/trema • GPL v2 • NEC͕։ൃΛओಋ • C/Ruby

    • ϑϧελοΫ • 1୆ͷPCͰ։ൃ͕׬݁ • ؆ܿͳهड़ͰΞϓϦέʔγϣϯ͕هड़Մೳ
  5. Beacon/Floodlight Beacon Floodlight ྫ֎৚߲෇͖GPL v2 Apache License Version 2.0 Java

    Java David Erickson (Stanford) Big Switch Networks • http://www.beaconcontroller.net/ (Beacon) http://floodlight.openflowhub.org/ (Floodlight) • ඇಉظIOΛ༻͍ͯߴύϑΥʔϚϯε 600ສ Flow req/sec Ҏ্@4εϨου࢖༻࣌ (Beacon)
  6. 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, UC Berkeley • ෼ࢄίϯτϩʔϥ • ZookeeperΛ࢖༻࣮ͯ͠૷ • 15ສߦͷC++ίʔυ
  7. 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
  8. • 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
  9. ϝοηʔδ • Symmetric Message • Hello, Echo, Τϥʔ, ϕϯμʔ֦ு •

    Controller/Switch Message • ϑϩʔͷ௥Ճ, εΠονͷঢ়ଶऔಘ, ౷ܭऔಘͳͲ • Async Message • Packet in, ϑϩʔͷ࡟আ, ϙʔτͷঢ়ଶͷมߋ
  10. Controller.java (಺෦ΫϥεOFChannelHandler) protected void processOFMessage(OFMessage m) throws IOException, SwitchStateException {

    switch (m.getType()) { case HELLO: .... case ECHO_REQUEST: .... case FEATURES_REPLY: .... default: .... } ※ Tremaͩͱsrc/switch_manager/ofpmsg_recv.c: ofpmsg_recv()ΛݟΔͱ෼͔Δ
  11. Controller.java protected void handleMessage( IOFSwitch sw, OFMessage m, FloodlightContext bContext)

    { switch (m.getType()) { case PACKET_IN: .... default: .... } default಺ͰΠϕϯτϋϯυϥΛݺͼग़͢
  12. • OpenFlow 1.1͕ެ։͞Ε͍ͯΔ࠷৽όʔδϣϯ • Ұํɺ΄΅શͯͷίϯτϩʔϥͷ࣮૷͸1.0४ڌ • Ver. 1.1͸ϋʔυ΢ΣΞ࣮૷͕೉͍͠ͱݴΘΕ͍ͯΔ • Ver.

    1.1ʹ४ڌͨ͠εΠονͷ࣮૷͕ͳ͍ • Αͬͯɺίϯτϩʔϥͷ࣮૷΋ͳ͍ • ۙʑɺVer. 1.2͕ެ։͞ΕΔ༧ఆ • ίϯτϩʔϥ࣮૷͸Ͳ͏ͳΔ͔ʁ OpenFlowͷόʔδϣϯͱ࣮૷