Presentation on theme: "OpenFlow Costin Raiciu Using slides from Brandon Heller and Nick McKeown."— Presentation transcript:
OpenFlow Costin Raiciu Using slides from Brandon Heller and Nick McKeown
How do we test a new idea in computer networking?
I have my shiny new protocol. How do I test it? Implement and test it in software – Quick prototyping, bad performance Build your own hardware! – Prohibitive costs – Difficult to change the design after its built Convince a vendor to implement a protocol – Huh!
Million of lines of source code 5400 RFCsBarrier to entry Billions of gates ComplexPower Hungry Many complex functions baked into the infrastructure OSPF, BGP, multicast, differentiated services, Traffic Engineering, NAT, firewalls, MPLS, redundant layers, … An industry with a “mainframe-mentality” Little ability for non-telco network operators to get what they want Functionality defined by standards, put in hardware, deployed on nodes The Networking Industry (2007) Specialized Packet Forwarding Hardware Operating System Operating System Feature Routing, management, mobility management, access control, VPNs, … 4
Closed Systems (Vendor Hardware) Can’t extend Stuck with interfaces (CLI, SNMP, etc) Hard to meaningfully extend Hard to meaningfully collaborate Vendors starting to open up, but not usefully 5
OpenFlow basic idea Give a simple interface to the data plane in hardware – Goes fast – Don’t need to change functionality Implement control plane in software – Can change as often as required
Flow Table Entry “Type 0” OpenFlow Switch Switch Port MAC src MAC dst Eth type VLAN ID IP Src IP Dst IP Prot TCP sport TCP dport RuleActionStats 1.Forward packet to port(s) 2.Encapsulate and forward to controller 3.Drop packet 4.Send to normal processing pipeline + mask Packet + byte counters
OpenFlow actions When a packet does not match any rule, encapsulate and send it to the controller The controller can decide to: – Insert a new rule to process the flow – Drop the packet
OpenFlow controllers Reference implementation – C NOX – python, C++ Trema – C, Ruby Many others…
OpenFlow protocol On controller startup:
OpenFlow Messages: at runtime
Supporting OpenFlow in Switches Dedicated OpenFlow switches – Forwarding done only based on OF rules – Rules can be inserted beforehand to reduce lookup times OpenFlow-Enabled Switches – Enable experiments to take place alongside existing traffic – Allow the use of the “normal” processing pipeline
OpenFlow Today Spec maintained by the OpenFlow consortium – Currently at version 1.1 Supported by most switch vendors Flow tables increasing in size – Hundreds to thousands of rules Big hype on software-defined networking