sharing networking research results with openflow and mininet in a few easy steps
DESCRIPTION
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 [email protected]. Reproducible science. Mathematics: theorem-proof Biology: methodology refinement / rebuttal papers - PowerPoint PPT PresentationTRANSCRIPT
Sharing Networking Research Results with OpenFlow and Mininet in a few Easy Steps
Felicián NémethBalázs Sonkoly, András Gulyás
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 Urs Holzle, 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)
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
OperatingSystem
OperatingSystem
OperatingSystem
OperatingSystem
OperatingSystem
App
App
App
6
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
OperatingSystem
OperatingSystem
OperatingSystem
OperatingSystem
OperatingSystem
App
App
App
Network Operating System
App App App
“Software Defined Networking” approachto open it
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 (e.g., OpenFlow)
The “Software-defined Network”
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 speedSimulation is not enough
Ethernet Switch
Data Path (Hardware)
Control PathControl Path (Software)
Data Path (Hardware)
Control Path OpenFlow
OpenFlow Controller
OpenFlow Protocol (SSL/TCP)
OpenFlowSwitch.org
Controller
OpenFlow Switch
PC
OpenFlow Usage
OpenFlow Switch
OpenFlow Switch
OpenFlowProtocol
Rule Action
Rule Action Rule Action
Controller
PC
HardwareLayer
SoftwareLayer
Flow Table
MACsrc
MACdst
IPSrc
IPDst
TCPsport
TCPdport Action
OpenFlow Firmware
**5.6.7.8*** port 1
port 4port 3port 2port 1
1.2.3.45.6.7.8
OpenFlow Flow Table Abstraction
Possible actions1. Forward packet to port(s)2. Encapsulate and forward
to controller3. Drop packet4. Send to normal
processing pipeline5. Modify Fields
OF Controller is King
• 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
Controller
PC
• 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
OF switches: Software → Hardware• 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
more to follow...
NEC IP8800
HP ProCurve 5400 and others
Juniper MX-series(prototype)
Cisco Catalyst 6k(prototype)Core
Router
EnterpriseCampusData Center
CircuitSwitch
Wireless
Pronto
Prototype Product
Ciena CoreDirectorWiMAX (NEC)
Cisco Catalyst 3750 (prototype) Arista 7100 series
(Q4 2010)
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
Multicast with MPLS
Network Coding
• XOR-based NC in the butterfly topology
• Packet format
XOR =XOR =XOR =
Network Coding
MPLS label:Flow id
MPLS label: Seq. no 1
MPLS label:Seq. no 2. data Impossible in OpenFlow
1.Create seq. numbers at s5 & s62. Encode at s73. Decode at s9 and s10
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• Protocol is designed for extendibility • New message types can be added
as experimenter messages
1. Get an Experimenter ID– create from an IEEE OUI
(if you have one)– request one from ONF
2. Define the wire format
https://www.opennetworking.org/wiki/display/PUBLIC/ONF+Registry
type = experimenter
length
Experimenter ID
vendor specific data
experimenter action:
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: Seq. no 1
MPLS label:Seq. no 2. data
MPLS label:Flow id data
Experimenter Action:Set MPLS label from a counter
• reuse existing actions
• action parameters• packet being processed
in the pipeline
Flow table at Node s9
• Decoded packet is re-processed: Flexibility– New actions support other scenarios too
Match: flow id actions
red decode, output
blue decode, output
red blue decode, drop
red’ output
blue’ output
Packet
next action, e.g., output re-process packet
decode action
Duplicate Decode
Re-label decodedpacket to red’ or blue’
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 everywhereleads to maintenance problems
alter Mininet’s behavior by monkey patchesmodify 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
SummarySoftware 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”