OpenFlow tutorial

29,891 views

Published on

OpenFlow tutorial by Srini Seetharaman from the Stanford Clean Slate Lab

Published in: Technology
0 Comments
36 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
29,891
On SlideShare
0
From Embeds
0
Number of Embeds
43
Actions
Shares
0
Downloads
1,884
Comments
0
Likes
36
Embeds 0
No embeds

No notes for slide
  • The next 3 slides are a set of animation to show how we enable innovation: - Infrastructure is closed to innovation and only driven by vendors. Consumers have little say - Business model makes it hard for new features to be added
  • How do we redefine the architecture to open up networking infrastructure and the industry! By bring to the networking industry what we did to the computing world
  • Switches, routers and other middleboxes are dumbed down The key is to have a standardized control interface that speaks directly to hardware
  • How the actual protocol works
  • Now I’ll describe the API that tries to meet these goals.
  • What is possible in the controller? Anything that needs intelligent routing of a flow At Stanford, we have even shown how OpenFlow may be used for: VM migration Power management Load balancing Network monitoring and debugging Easier network visualization
  • There are components at different levels that work together in making it work The commercial switch details will follow in next slide There are a plethora of applications possible. I only list those available at Stanford
  • All support ver 1.0 All have approx 1500 flow table entry limit
  • Hidden slide (just for backup reasons) Shows how far along we can go in opening up the network
  • Experiments running on PRODUCTION infrastructure Key to get scale, key to get traffic on the network (e.g. can’t just do a reset...)
  • OpenFlow tutorial

    1. 1. OpenFlow/Software-defined Networking Nov, 2011 Srini Seetharaman Tech Lead, SDN Deutsche Telekom Innovation Center
    2. 2. The Ossified Network 6000+ RFCs Barrier to entry Bloated Power Hungry <ul><li>Many complex functions baked into the infrastructure </li></ul><ul><ul><ul><li>OSPF, BGP, multicast, differentiated services, Traffic Engineering, NAT, firewalls, MPLS, redundant layers, … </li></ul></ul></ul><ul><li>An industry with a “mainframe-mentality”, reluctant to change </li></ul>Million of lines of source code Billions of gates Specialized Packet Forwarding Hardware Operating System Feature Feature Routing, management, mobility management, access control, VPNs, …
    3. 3. Open Systems gap in the tool space none have all the desired attributes! Performance Fidelity Scale Real User Traffic? Complexity Open Simulation medium medium no medium yes Emulation medium low no medium yes Software Switches poor low yes medium yes NetFPGA high low yes high yes Network Processors high medium yes high yes Vendor Switches high high yes low no
    4. 4. Current Internet Closed to Innovations in the Infrastructure Closed Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware Operating System Operating System Operating System Operating System Operating System App App App
    5. 5. “ Software Defined Networking” approach to open it Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware App App App Specialized Packet Forwarding Hardware Operating System Operating System Operating System Operating System Operating System App App App Network Operating System App App App
    6. 6. The “Software-defined Network” App Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware App App Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Network Operating System 1. Open interface to hardware 3. Well-defined open API 2. At least one good operating system Extensible, possibly open-source
    7. 7. How does OpenFlow work?
    8. 8. Ethernet Switch
    9. 9. Data Path (Hardware) Control Path Control Path (Software)
    10. 10. Data Path (Hardware) Control Path OpenFlow OpenFlow Controller OpenFlow Protocol (SSL/TCP)
    11. 11. OpenFlow usage Controller OpenFlow Switch OpenFlow Switch OpenFlow Switch Alice’s code Decision? OpenFlow Protocol OpenFlow offloads control intelligence to a remote software PC Alice’s Rule Alice’s Rule Alice’s Rule
    12. 12. Controller PC Hardware Layer Software Layer Flow Table OpenFlow Client port 4 port 3 port 2 port 1 1.2.3.4 5.6.7.8 OpenFlow Example MAC src MAC dst IP Src IP Dst TCP sport TCP dport Action * * 5.6.7.8 * * * port 1
    13. 13. OpenFlow Basics Flow Table Entries Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot L4 sport L4 dport Rule Action Stats <ul><li>Forward packet to zero or more ports </li></ul><ul><li>Encapsulate and forward to controller </li></ul><ul><li>Send to normal processing pipeline </li></ul><ul><li>Modify Fields </li></ul><ul><li>Any extensions you add! </li></ul>+ mask what fields to match Packet + byte counters VLAN pcp IP ToS
    14. 14. OpenFlow: a pragmatic compromise <ul><li>+ Speed, scale, fidelity of vendor hardware </li></ul><ul><li>+ Flexibility and control of software and simulation </li></ul><ul><li>Vendors don’t need to expose implementation </li></ul><ul><li>Leverages hardware inside most switches today (ACL tables) </li></ul>
    15. 15. Examples Switching * * 00:1f:.. * * * * * * * port6 Flow Switching port3 00:20.. 00:1f.. 0800 vlan1 1.2.3.4 5.6.7.8 4 17264 80 port6 Firewall * * * * * * * * * 22 drop Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport Action Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport Action Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport Action
    16. 16. Examples Routing * * * * * * 5.6.7.8 * * * port6 VLAN Switching * * * vlan1 * * * * * port6, port7, port9 00:1f.. Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport Action Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport Action
    17. 17. Centralized vs Distributed Control Both models are possible with OpenFlow <ul><li>Centralized Control </li></ul>Controller Distributed Control Controller Controller Controller OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch OpenFlow Switch
    18. 18. Flow Routing vs. Aggregation Both models are possible with OpenFlow <ul><li>Flow-Based </li></ul><ul><li>Every flow is individually set up by controller </li></ul><ul><li>Exact-match flow entries </li></ul><ul><li>Flow table contains one entry per flow </li></ul><ul><li>Good for fine grain control, e.g. campus networks </li></ul><ul><li>Aggregated </li></ul><ul><li>One flow entry covers large groups of flows </li></ul><ul><li>Wildcard flow entries </li></ul><ul><li>Flow table contains one entry per category of flows </li></ul><ul><li>Good for large number of flows, e.g. backbone </li></ul>
    19. 19. Reactive vs. Proactive (pre-populated) Both models are possible with OpenFlow <ul><li>Reactive </li></ul><ul><li>First packet of flow triggers controller to insert flow entries </li></ul><ul><li>Efficient use of flow table </li></ul><ul><li>Every flow incurs small additional flow setup time </li></ul><ul><li>If control connection lost, switch has limited utility </li></ul><ul><li>Proactive </li></ul><ul><li>Controller pre-populates flow table in switch </li></ul><ul><li>Zero additional flow setup time </li></ul><ul><li>Loss of control connection does not disrupt traffic </li></ul><ul><li>Essentially requires aggregated (wildcard) rules </li></ul>
    20. 20. Usage examples <ul><li>Alice’s code: </li></ul><ul><ul><li>Simple learning switch </li></ul></ul><ul><ul><li>Per Flow switching </li></ul></ul><ul><ul><li>Network access control/firewall </li></ul></ul><ul><ul><li>Static “VLANs” </li></ul></ul><ul><ul><li>Her own new routing protocol: unicast, multicast, multipath </li></ul></ul><ul><ul><li>Home network manager </li></ul></ul><ul><ul><li>Packet processor (in controller) </li></ul></ul><ul><ul><li>IPvAlice </li></ul></ul><ul><ul><li>Stanford demonstrated </li></ul></ul><ul><ul><li>VM migration </li></ul></ul><ul><ul><li>Server Load balancing </li></ul></ul><ul><ul><li>Mobility manager </li></ul></ul><ul><ul><li>Power management </li></ul></ul><ul><ul><li>Network monitoring and visualization </li></ul></ul><ul><ul><li>Network debugging </li></ul></ul><ul><ul><li>Network slicing </li></ul></ul><ul><ul><li>… and much more you can create! </li></ul></ul>
    21. 21. Quiz Time <ul><li>How do I provide control connectivity? Is it really clean slate? </li></ul><ul><li>Why aren’t users complaining about time to setup flows over OpenFlow? (Hint: What is the predominant traffic today?) </li></ul><ul><li>Considering switch CPU is the major limit, how can one take down an OpenFlow network? </li></ul><ul><li>How to perform topology discovery over OpenFlow-enabled switches? </li></ul><ul><li>What happens when you have a non-OpenFlow switch inbetween? </li></ul><ul><li>What if there are two islands connected to same controller? </li></ul><ul><li>How scalable is OpenFlow? How does one scale deployments? </li></ul>
    22. 22. What can you not do with OpenFlow ver1.0 <ul><li>Non-flow-based (per-packet) networking </li></ul><ul><ul><li>e.g., Handling pkt 1 differently from pkt 2 of same flow </li></ul></ul><ul><ul><li>yes, this is a fundamental limitation </li></ul></ul><ul><ul><li>BUT OpenFlow provides the plumbing to connect devices </li></ul></ul><ul><li>New forwarding primitives </li></ul><ul><ul><li>BUT provides a nice way to integrate them through extensions </li></ul></ul><ul><li>New packet formats/field definitions </li></ul><ul><ul><li>BUT a generalized OpenFlow (2.0) is on the horizon </li></ul></ul><ul><li>Optical Circuits </li></ul><ul><ul><li>BUT efforts underway to apply OpenFlow model to circuits </li></ul></ul><ul><li>Low-setup-time individual flows </li></ul><ul><ul><li>BUT can push down flows proactively to avoid delays </li></ul></ul>
    23. 23. Where it’s going <ul><li>OF v1.1: Extensions for WAN, spring 2011 </li></ul><ul><ul><li>multiple tables: leverage additional tables </li></ul></ul><ul><ul><li>tags and tunnels </li></ul></ul><ul><ul><li>multipath forwarding </li></ul></ul><ul><li>OF v2+ </li></ul><ul><ul><li>generalized matching and actions: an “instruction set” for networking </li></ul></ul>
    24. 24. OpenFlow Implementations (Switch and Controller)
    25. 25. OpenFlow building blocks Controller NOX Slicing Software FlowVisor FlowVisor Console Applications LAVI ENVI (GUI) Expedient n-Casting NetFPGA Software Ref. Switch Broadcom Ref. Switch OpenWRT PCEngine WiFi AP Commercial Switches Stanford Provided OpenFlow Switches SNAC Stanford Provided Monitoring/ debugging tools oflops oftrace openseer OpenVSwitch HP, NEC, Pronto, Juniper.. and many more Beacon Helios Maestro
    26. 26. Current SDN hardware Ciena Coredirector NEC IP8800 More coming soon... Juniper MX-series HP Procurve 5400 Pronto 3240/3290 WiMax (NEC) PC Engines Netgear 7324
    27. 27. Commercial Switch Vendors Notes Virtualize Model <ul><li>No legacy protocols (like VLAN and STP) </li></ul><ul><li>Most actions processed in hardware </li></ul><ul><li>MAC header rewriting in h/w </li></ul><ul><li>OpenFlow takes precedence </li></ul><ul><li>Most actions processed in hardware </li></ul><ul><li>MAC header rewriting in h/w </li></ul><ul><li>LACP, VLAN and STP processing before OpenFlow </li></ul><ul><li>Wildcard rules or non-IP pkts processed in s/w </li></ul><ul><li>Header rewriting in s/w </li></ul><ul><li>CPU protects mgmt during loop </li></ul>1 OF instance per switch Pronto 3240 or 3290 with Pica8 or Indigo firmware 1 OF instance per VLAN NEC IP8800 1 OF instance per VLAN HP Procurve 5400zl or 6600
    28. 28. Controller Vendors <ul><li>Closed-source </li></ul><ul><li>Datacenter networks </li></ul>Nicira’s ONIX <ul><li>Open-source GPL </li></ul><ul><li>Code based on NOX0.4 </li></ul><ul><li>Enterprise network </li></ul><ul><li>C++, Python and Javascript </li></ul><ul><li>Currently used by campuses </li></ul>SNAC Notes Vendor <ul><li>Open-source GPL </li></ul><ul><li>C++ and Python </li></ul><ul><li>Researcher friendly </li></ul>Nicira’s NOX <ul><li>Open-source </li></ul><ul><li>Researcher friendly </li></ul><ul><li>Java-based </li></ul>Stanford’s Beacon <ul><li>Open-source </li></ul><ul><li>Based on Java </li></ul>Maestro (from Rice Univ) Notes Vendor <ul><li>Open-source </li></ul><ul><li>Written in C </li></ul><ul><li>Closed source </li></ul><ul><li>Based on Beacon </li></ul><ul><li>Enterprise network </li></ul>NEC’s Helios BigSwitch controller
    29. 29. Growing Community Vendors and start-ups Providers and business-unit More... More... Note: Level of interest varies
    30. 30. Virtualizing OpenFlow
    31. 31. Trend Computer Industry Network Industry Windows (OS) Windows (OS) Linux Mac OS x86 (Computer) Windows (OS) App App Linux Linux Mac OS Mac OS Virtualization layer App Controller 1 App App Controller 2 Virtualization or “Slicing” App OpenFlow Controller 1 NOX (Network OS) Controller 2 Network OS
    32. 32. Simple Packet Forwarding Hardware Network Operating System 1 Open interface to hardware Virtualization or “Slicing” Layer Network Operating System 2 Network Operating System 3 Network Operating System 4 App App App App App App App App Many operating systems, or Many versions Open interface to hardware Isolated “slices” Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware
    33. 33. Switch Based Virtualization Exists for NEC, HP switches but not flexible enough Normal L2/L3 Processing Production VLANs Research VLAN 1 Research VLAN 2 Flow Table Controller Flow Table Controller
    34. 34. FlowVisor-based Virtualization OpenFlow Protocol Craig’s Controller Heidi’s Controller Aaron’s Controller OpenFlow Protocol Topology discovery is per slice OpenFlow Switch OpenFlow FlowVisor & Policy Control OpenFlow Switch OpenFlow Switch
    35. 35. OpenFlow Protocol Broadcast Multicast http Load-balancer FlowVisor-based Virtualization Separation not only by VLANs, but any L1-L4 pattern dl_dst=FFFFFFFFFFFF tp_src=80, or tp_dst=80 OpenFlow FlowVisor & Policy Control OpenFlow Protocol OpenFlow Switch OpenFlow Switch OpenFlow Switch
    36. 36. FlowSpace: Maps Packets to Slices
    37. 37. FlowVisor Message Handling Packet Exception Policy Check: Is this rule allowed? Policy Check: Who controls this packet? Full Line Rate Forwarding Rule Packet OpenFlow Firmware Data Path Alice Controller Bob Controller Cathy Controller FlowVisor OpenFlow OpenFlow
    38. 38. Use Case: New CDN - Turbo Coral ++ <ul><li>Basic Idea: Build a CDN where you control the entire network </li></ul><ul><ul><li>All traffic to or from Coral IP space controlled by Experimenter </li></ul></ul><ul><ul><li>All other traffic controlled by default routing </li></ul></ul><ul><ul><li>Topology is entire network </li></ul></ul><ul><ul><li>End hosts are automatically added (no opt-in) </li></ul></ul>Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport * * * * * 84.65.* * * * * * * * * * * 84.65.* * * * * * * * * * * * * *
    39. 39. Summary
    40. 40. Summary <ul><li>Software-defined networking is still evolving </li></ul><ul><li>OpenFlow is being deployed in over 100 organizations world-wide </li></ul><ul><ul><li>GEC9 in Nov, 2010 showcased nation-wide OF </li></ul></ul><ul><ul><li>Internet 2 and NLR starting to serve as the GENI Backbone </li></ul></ul><ul><li>Are you innovating in your networks?? </li></ul>
    41. 41. Credits <ul><li>Thanks to following for contributing content to the tutorial: </li></ul><ul><ul><li>Nick McKeown </li></ul></ul><ul><ul><li>Guru Parulkar </li></ul></ul><ul><ul><li>Brandon Heller </li></ul></ul><ul><ul><li>Yiannis Yiakoumis </li></ul></ul><ul><ul><li>Guido Appenzeller </li></ul></ul><ul><ul><li>Rob Sherwood </li></ul></ul><ul><ul><li>Masa Kobayashi </li></ul></ul>

    ×