330 likes | 474 Views
Sharing Networking Research Results with OpenFlow and Mininet in a few Easy Steps. Felicián Németh Balázs Sonkoly, András Gulyás Nemeth F@tmit.bme.hu. Reproducible science. Mathematics: theorem-proof Biology: methodology refinement / rebuttal papers
E N D
Sharing Networking Research Results with OpenFlow and Mininet in a few Easy Steps Felicián Németh Balázs Sonkoly, András Gulyás NemethF@tmit.bme.hu
Reproducible science • Mathematics: theorem-proof • Biology: methodology refinement / rebuttal papers • Nature Editorial If you want reproducible science, the software needs to be open source
Research paper witheasily reproducible results Pros • Better quality higher acceptance probability • Reproducibility • follow-up works, citations Cons • Fear of being surpassed • You have at least couples of months advantage
Part One: Primer to OpenFlow Slide Credits • Rob Sherwood • “GENI Engineering Workshop June 2010” • Guido Appenzeller • Nick McKeown • Guru Parulkar • Brandon Heller • Lots of others • (this slide was also stolen)(with the previous note)
Why? • “Google is using OpenFlow on custom-designed hardware for all the internal networks it runs connecting its global data centers, said UrsHolzle, senior vice president of technology infrastructure at Google” • “How Google is using OpenFlow to lower its network costs? Google is checking out a new form of networking protocol known as OpenFlow, in the communications networks that run between its data centers. The search giant is testing the use of software defined networks in order to lower the cost of delivering a bit of information.” (gigaom.com) • “Virtualization and cloud infrastructure provider VMware (NYSE: VMW), announced this week that it will pay $1.05 billion in cash plus approximately $210 million in assumed unvested equity awards to acquire Nicira, a software-defined networking (SDN) specialist and provider of network virtualization for open source initiatives.“ (RCR Wireless News – Americas)
Current Internet Closed to Innovations in the Infrastructure App App App Closed App App App Operating System Specialized Packet Forwarding Hardware Operating System App App App App App App Specialized Packet Forwarding Hardware Operating System Specialized Packet Forwarding Hardware Operating System Specialized Packet Forwarding Hardware App App App Operating System Specialized Packet Forwarding Hardware 6
“Software Defined Networking” approachto open it App App App Network Operating System App App App App App App Operating System Specialized Packet Forwarding Hardware Operating System App App App App App App Specialized Packet Forwarding Hardware Operating System Specialized Packet Forwarding Hardware Operating System Specialized Packet Forwarding Hardware App App App Operating System Specialized Packet Forwarding Hardware
The “Software-defined Network” App App App 1. Open interface to hardware (e.g., OpenFlow) Network Operating System Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware Simple Packet Forwarding Hardware
What is OpenFlow? • OpenFlow is an open interface to hardware • Control how packets are forwarded • Implementable on COTS hardware • Make deployed networks programmable • not just configurable • Vendors don’t need to expose implementation • Makes innovation easier • Goal (experimenter’s perspective): • No more special purpose testbeds • Validate your experiments on deployed hardware with real traffic at full line speed Simulation is not enough
Control Path Control Path (Software) Data Path (Hardware)
OpenFlow Controller OpenFlow Protocol (SSL/TCP) Control Path OpenFlow Data Path (Hardware)
OpenFlow Usage Action Action Action Rule Rule Rule Controller PC OpenFlow Switch OpenFlow Protocol OpenFlow Switch OpenFlow Switch OpenFlowSwitch.org
MAC src MAC dst IP Src IP Dst TCP sport TCP dport * * * 5.6.7.8 * * port 1 Action OpenFlow Flow Table Abstraction Controller PC OpenFlow Firmware Software Layer Flow Table • Possible actions • Forward packet to port(s) • Encapsulate and forward to controller • Drop packet • Send to normalprocessing pipeline • Modify Fields Hardware Layer port 3 port 4 port 2 port 1 5.6.7.8 1.2.3.4
OF Controller is King Controller PC • Write your own controller • handle ~20 OpenFlow messages • Download, configure existing controller • Extend existing controller • many frameworks to choose from(NOX, POX, Beacon, Maestro, Helios, …) • event-driven • module-based extensibility
OF switches: Software → Hardware • Stanford Reference Implementation v1.0 • Ericsson implementation v1.1 & v1.2 • Linux-based Software Switch running in User Space • Limited by host PC, typically 4x 1Gb/s • Useful for development & testing • Starting point for other implementations • Open vSwitch • Linux-based Software Switch running in Kernel Space • Not just an OF switch, widely used by virtual machines (VirtualBox, XEN) • Limited by host PC, typically 4x 1Gb/s • Firmware of some devices based on Open vSwitch • NetFPGA-based implementation • Requires PC and NetFPGA card • Hardware accelerated • 4 x 1 Gb/s OR • 4 x 10 Gb/s throughput • 1G: $500 for academics • 10G: $1,675 for academics Product Prototype Juniper MX-series (prototype) Cisco Catalyst 6k (prototype) Core Router HP ProCurve 5400 and others Pronto Enterprise Campus Data Center Cisco Catalyst 3750 (prototype) Arista 7100 series (Q4 2010) NEC IP8800 Circuit Switch Ciena CoreDirector WiMAX (NEC) more to follow... Wireless
MiniNet:“Network in a Laptop” • Machine-local emulated network • great dev/testing tool • Uses linux virtual network features • lightweight virtualization: cheaper than VMs • one switch is one small linux process • Arbitrary topologies, nodes • Rapid prototyping, scalable, shareable, path to hardware
Part Two: Adding a new forwarding mechanism to OpenFlow Implementations highlightsto show how easy it is
Network Coding • XOR-based NC in the butterfly topology • Packet format = XOR • Impossible in OpenFlow • Create seq. numbers at s5 & s6 • Encode at s7 • Decode at s9 and s10 = XOR MPLS label: Flow id data MPLS label: Seq. no 1 MPLS label: Seq. no 2. = XOR
Network Coding in OpenFlow:Implementation Steps • Extending the OpenFlow protocol • by defining new experimenter actions to encode and decode packets • Writing a controller application • that proactively fills up the flow tables • Extending the software switch's forwarding mechanism • to handle the newly defined actions • Extending Mininet by • creating the topology, and • adding new CLI commands for the demo • Sharing the virtual machine
Extending the OpenFlow protocol • https://www.opennetworking.org/wiki • /display/PUBLIC/ONF+Registry • Protocol is designed for extendibility • New message types can be added as experimenter messages • Get an Experimenter ID • create from an IEEE OUI(if you have one) • request one from ONF • Define the wire format experimenter action: type = experimenter length Experimenter ID vendor specific data
Network Coding in OpenFlow:Implementation Steps • Extending the OpenFlow protocol • by defining new experimenter actions to encode and decode packets • Writing a controller application • that proactively fills up the flow tables • Extending the software switch's forwarding mechanism • to handle the newly defined actions • Extending Mininet by • creating the topology, and • adding new CLI commands for the demo • Sharing the virtual machine
Flow tables at s5 • MPLS Paths • Network Coding MPLS label: Flow id MPLS label: Flow id data MPLS label: Seq. no 2. data MPLS label: Seq. no 1
Experimenter Action:Set MPLS label from a counter • action parameters • packet being processed in the pipeline • reuse existing actions
Flow table at Node s9 • Decoded packet is re-processed: Flexibility • New actions support other scenarios too Packet decode action Duplicate Decode Re-label decodedpacket to red’ or blue’ re-process packet next action, e.g., output
Network Coding in OpenFlow:Implementation Steps • Extending the OpenFlow protocol • by defining new experimenter actions to encode and decode packets • Writing a controller application • that proactively fills up the flow tables • Extending the software switch's forwarding mechanism • to handle the newly defined actions • Extending Mininet by • creating the topology, and • adding new CLI commands for the demo • Sharing the virtual machine
Extending Mininet 1. • mn --custom=topo.py custom topology and node parameters from a python file …
Extending Mininet 2. • Mininet isn’t designed for general extendibility • Source can be enhanced • open-source, object-oriented • small modifications spread everywhere leads to maintenance problems alter Mininet’s behavior by monkey patches modify a class by overriding its method form another file • can lead to upgrade problems as well
Network Coding in OpenFlow:Implementation Steps • Extending the OpenFlow protocol • by defining new experimenter actions to encode and decode packets • Writing a controller application • that proactively fills up the flow tables • Extending the software switch's forwarding mechanism • to handle the newly defined actions • Extending Mininet by • creating the topology, and • adding new CLI commands for the demo • Sharing the virtual machine
Sharing the VM • Just upload the disk image somewhere • Put the sources up, e.g., to github
Summary Software Defined Networking • is about to change the equipment market • by the commoditization of routers and switches, • reshapes the active research areas • from distributed computing towards centralization Reproducible research results • Articles have no room for experiments’ details • Sharing a proof-of-concept, prototype implementation is enough • usually a Mininet script will do • “runnable papers”