OpenFlow        (osho@galibier.org)@oshothebig
•• OpenFlow• OpenFlow•••
•              (Twitter: oshothebig)•    ••    •                     , GMPLS, VLAN Tag Swapped        Ethernet,           ...
OpenFlow• 4, 5• Galibier OpenFlow Controller•    • 300                     Java    OpenFlow             (http://bit.ly/qXo...
OpenFlow• NOX (Nicira)• Trema (NEC)• Beacon (David Erickson, Stanford University)• Floodlight (BigSwitch Networks?)• Maest...
NOX• Nicira Networks• http://noxrepo.org/• C++/Python• GPLv3•
Trema•   NEC•   https://github.com/trema/trema•   C/Ruby•   GPLv2••
Beacon•   David Erickson (Stanford University)•   http://www.beaconcontroller.net/•   Java•   GPL v2 and the Stanford Univ...
Floodlight• Big Switch Networks?• http://www.openflowhub.org/display/Floodlight/  Floodlight+is+a+Java-based+OpenFlow+Contr...
Beacon            Floodlight• Floodlight Beacon  • OSS                      OSGi• Big Switch Networks  • git://github.com/...
Maestro• Rice University• http://code.google.com/p/maestro-platform/• Java• LGPL v2.1• DAG
Nettle•   Yale University•   http://haskell.cs.yale.edu/?page_id=376•   Haskell•   BSD3•   Nettle: Functional Reactive Pro...
OpenFlow
Applicatioin        ApplicationAPI                     Controller                            OpenFlowOpen vSwitch         ...
OpenFlow• Ver. 1.0.0  http://www.openflow.org/documents/openflow-spec-  v1.0.0.pdf               Headerver.   type    length...
• Symmetric Message  • Hello, Echo,       ,• Controller/Switch Message  •                ,           ,• Async Message  • P...
Switch   Controller
Switch   Controller
Switch           Controller         HELLO         HELLO
Switch                     Controller             HELLO             HELLO         FEATURE_REQUEST          FEATURE_REPLY
Switch   Controller
Switch                  Controller         ECHO_REQUEST          ECHO_REPLY
Switch                  Controller         ECHO_REQUEST          ECHO_REPLY         ECHO_REQUEST          ECHO_REPLY
Switch   Controller
Switch   Controller
Switch               Controller         PACKET_IN
Switch               Controller         PACKET_IN   PACKET_OUT or FLOW_MOD
Galibier OpenFlow Controller•    • Mac• Java• OpenFlow              : openflowj•           IO: Netty• http://github.com/osh...
•••   API
Headerver.   type      length     xid   payload       22• length (2 bytes)• LengthFieldBasedFrameDecoder
ControllerChannelPipeline    OpenFlowControllerHandler     OpenFlow        OpenFlowEncoder        OpenFlowDecoder  LengthF...
OpenFlow•                 → HELLO• HELLO    → FEATURE_REQUEST• FEATURE_REPLY     →• ECHO_REQUEST       → ECHO_REPLY•      ...
HELLOprivate void handleHello(OFHello in) {    send(factory.getMessage(OFType.FEATURES_REQUEST));}
API•   switchConnected(Switch sw)•   switchDisconnected(Switch sw)•   handlePacketIn(Switch sw, OFPacketIn msg)•   handleF...
Controller Performance ?http://www.openflow.org/wk/index.php/Controller_Performance_Comparisons
Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops      Cbench                          Controller
Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops      Cbench                          Controller...
Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops      Cbench                          Controller...
ChannelPipeline   OpenFlowBenchmarkHandler        OpenFlowEncoder        OpenFlowDecoder  LengthFieldBasedFrameDecoder    ...
•• OpenFlow    •          Open vSwitch••            API
••• OpenFlow    • Logically centralized
Onix• OSDI’10    Onix: A Distributed Control Platform for Large-scale    Production Networks    http://www.usenix.org/even...
Onix                             Server 1                                                         Server N                ...
Onix• Network Information Base (NIB)    •                               Forwarding   1   n   Forwarding                  C...
OpenFlow•    • OpenFlow• OpenFlow    ••        API    •            =OS
•    OpenFlow• OpenFlow• OpenFlow•               Onix•
Thank you!osho@galibier.org
第2回クラウドネットワーク研究会 「OpenFlowコントローラとその実装」
Upcoming SlideShare
Loading in …5
×

第2回クラウドネットワーク研究会 「OpenFlowコントローラとその実装」

8,850 views

Published on

Published in: Technology, Education
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,850
On SlideShare
0
From Embeds
0
Number of Embeds
77
Actions
Shares
0
Downloads
200
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

第2回クラウドネットワーク研究会 「OpenFlowコントローラとその実装」

  1. 1. OpenFlow (osho@galibier.org)@oshothebig
  2. 2. •• OpenFlow• OpenFlow•••
  3. 3. • (Twitter: oshothebig)• •• • , GMPLS, VLAN Tag Swapped Ethernet, , etc.
  4. 4. OpenFlow• 4, 5• Galibier OpenFlow Controller• • 300 Java OpenFlow (http://bit.ly/qXoMGM) • OpenFlow Java (http://bit.ly/pbI3Or)
  5. 5. OpenFlow• NOX (Nicira)• Trema (NEC)• Beacon (David Erickson, Stanford University)• Floodlight (BigSwitch Networks?)• Maestro (Rice University)• Nettle (Yale University)
  6. 6. NOX• Nicira Networks• http://noxrepo.org/• C++/Python• GPLv3•
  7. 7. Trema• NEC• https://github.com/trema/trema• C/Ruby• GPLv2••
  8. 8. 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
  9. 9. 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 •
  10. 10. Beacon Floodlight• Floodlight Beacon • OSS OSGi• Big Switch Networks • git://github.com/bigswitch/BeaconMirror.git ( ) • git://github.com/bigswitch/floodlight.git
  11. 11. Maestro• Rice University• http://code.google.com/p/maestro-platform/• Java• LGPL v2.1• DAG
  12. 12. 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
  13. 13. OpenFlow
  14. 14. Applicatioin ApplicationAPI Controller OpenFlowOpen vSwitch Switch
  15. 15. OpenFlow• Ver. 1.0.0 http://www.openflow.org/documents/openflow-spec- v1.0.0.pdf Headerver. type length xid payload 22
  16. 16. • Symmetric Message • Hello, Echo, ,• Controller/Switch Message • , ,• Async Message • Packet in, ,
  17. 17. Switch Controller
  18. 18. Switch Controller
  19. 19. Switch Controller HELLO HELLO
  20. 20. Switch Controller HELLO HELLO FEATURE_REQUEST FEATURE_REPLY
  21. 21. Switch Controller
  22. 22. Switch Controller ECHO_REQUEST ECHO_REPLY
  23. 23. Switch Controller ECHO_REQUEST ECHO_REPLY ECHO_REQUEST ECHO_REPLY
  24. 24. Switch Controller
  25. 25. Switch Controller
  26. 26. Switch Controller PACKET_IN
  27. 27. Switch Controller PACKET_IN PACKET_OUT or FLOW_MOD
  28. 28. Galibier OpenFlow Controller• • Mac• Java• OpenFlow : openflowj• IO: Netty• http://github.com/oshothebig/galibier
  29. 29. ••• API
  30. 30. Headerver. type length xid payload 22• length (2 bytes)• LengthFieldBasedFrameDecoder
  31. 31. ControllerChannelPipeline OpenFlowControllerHandler OpenFlow OpenFlowEncoder OpenFlowDecoder LengthFieldBasedFrameDecoder Netty Internal I/O Threads
  32. 32. OpenFlow• → HELLO• HELLO → FEATURE_REQUEST• FEATURE_REPLY →• ECHO_REQUEST → ECHO_REPLY• ECHO_REQUEST
  33. 33. HELLOprivate void handleHello(OFHello in) { send(factory.getMessage(OFType.FEATURES_REQUEST));}
  34. 34. API• switchConnected(Switch sw)• switchDisconnected(Switch sw)• handlePacketIn(Switch sw, OFPacketIn msg)• handleFlowRemoved(Switch sw, OFFlowRemoved msg)• handlePortStatus(Switch sw, OFPortStatus msg)
  35. 35. Controller Performance ?http://www.openflow.org/wk/index.php/Controller_Performance_Comparisons
  36. 36. Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops Cbench Controller
  37. 37. Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops Cbench Controller PACKET_IN PACKET_OUT
  38. 38. Benchmark for controller• Cbench http://www.openflow.org/wk/index.php/Oflops Cbench Controller PACKET_IN PACKET_OUT PACKET_IN PACKET_OUT
  39. 39. ChannelPipeline OpenFlowBenchmarkHandler OpenFlowEncoder OpenFlowDecoder LengthFieldBasedFrameDecoder Netty Internal I/O Threads
  40. 40. •• OpenFlow • Open vSwitch•• API
  41. 41. ••• OpenFlow • Logically centralized
  42. 42. 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•
  43. 43. Onix Server 1 Server N Network Control Logic Network Control Logic NIB NIB Onix Switch Import / Export Distribution I / E Distribution I / E Switch Import / Export Management Connectivity Network Infrastructure Managed Physical Network InfrastructureFigure 1: There are four components in an Onix controllednetwork: managed physical infrastructure, connectivity
  44. 44. Onix• Network Information Base (NIB) • Forwarding 1 n Forwarding Category Host Link Table Engine Query Create, dest 1 2 Network Node 1 n Port Access attri Notification Figure 2: The default network entity classes provided by Synchronize• Onix’s API. Solid lines represent inheritance,DB dashed lines while Configuratio correspond to referential relation between entity instances. The numbers on the dashed lines show the quantitative mapping • Transactional(e.g., one Linkdatabase Ports, and two relationship persistent maps to two Pull Ports can map to the same Link). Nodes, ports and links • One-hop, eventually-consistent, memory-only DHT constitute the network topology. All entity classes inherit the same base class providing generic key-value pair access. Table 1: Fu
  45. 45. OpenFlow• • OpenFlow• OpenFlow •• API • =OS
  46. 46. • OpenFlow• OpenFlow• OpenFlow• Onix•
  47. 47. Thank you!osho@galibier.org

×