OpenFlow Controllers
and Tools
OpenFlow
Raj Jain
Washington University in Saint Louis
Saint Louis, MO 63130
[email protected]
These slides and audio/video recordings of this class lecture are at:
http://www.cse.wustl.edu/~jain/cse570-13/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-1
Overview
1. OpenFlow Controllers
2. Software Routing Platform
3. OpenFlow Related Tools
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-2
OpenFlow Controllers
1. NOX
2. POX
3. SNAC
4. Beacon
5. Trema
6. Maestro
7. Floodlight
Many more…This is not a complete list.
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-3
NOX
One of the first open source OpenFlow controllers
Developed by Nicira and donated to research community in
2008
Supported by ON.LAB at Stanford and by UC Berkeley and
ICSI
Provides a C++ API for OpenFlow 1.0
Both a controller and a framework for developing OpenFlow
applications
Includes sample components for topology discovery, learning
switch, network-wide switch
Superseded by POX
Ref: http://www.noxrepo.org/forum/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-4
POX
Python-based newer version of NOX.
Platform for rapid development of network control software
using Python
OpenFlow controller plus a framework for interacting with
OpenFlow switches, debugging, network virtualization, …
Reusable components for path selection, topology discovery
Supports the same GUI and visualization tools as NOX
Runs on Linux, MACs, Windows and can be bundled with
install-free PyPy runtime for easy deployment
Ref: http://www.noxrepo.org/pox/about-pox/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-5
SNAC
Open source OpenFlow controller with graphical user
interface
Uses a web-based policy manager to manage the network
It is a module of NOX and requires appropriate version of
NOX
Allows programming NOX routing module’s policies without
editing the code
Allows admission control, shows network components,
network usage, and events
Reports many flow-level traffic details using REST API
New hosts joining the network are automatically directed to
SNAC for authentication
Ref: http://www.openflowhub.org/display/Snac/SNAC+Home
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-6
Beacon
Open source cross-platform modular OpenFlow controller
implemented in Java
Developed at Stanford University
Java Runs on many platforms including Android Phones
and multi-core Linux servers
Dynamic Code bundles in Beacon can be
started/stopped/refreshed/installed at runtime without
disrupting other non-dependent bundles
Uses Eclipse Integrated Development Environment
Ref: https://openflow.stanford.edu/display/Beacon/Home
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-7
Onix
Basic design framework of many OpenFlow Controllers
Distributed Controller platform using a cluster of servers
Multiple Onix instances synchronize their “Network
information base (NIB)” similar to “Routing Information Base
(RIB)”
Network control logic is implemented on the top of Onix’s API
Use in-memory database for state management
Server 1 Server n
Network Control Logic Network Control Logic
Network Information Base (NIB) Network Information Base (NIB)
Onix
Switch Distribution
Sync Distribution Switch
Import/Export Import/Export Import/Export Import/Export
Switch Switch Switch Switch Switch Switch
Ref: T. Koponen, et al., “Onix: A distributed Control Platform for Large Scale Production Networks,” OSDI 2010,
http://static.usenix.org/events/osdi10/tech/full_papers/Koponen.pdf
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-8
Trema
Full-stack easy-to-use framework for developing OpenFlow
controllers in Ruby and C
Open source. Developed by NEC Research Lab.
Modular extensible architecture
Integrated development environment for testing and debugging
Ref: http://github.com/trema/
Ref: http://trema.github.com/trema/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-9
Maestro
Java based: Portable to various operating systems and
architectures
Developed by Rice University and supported by NSF FIND
program
Multi-threaded: Provides parallelism within a single machine
so that the controller is not a bottleneck
Programming framework allows introducing new control
functions
Ref: https://code.google.com/p/maestro-platform/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-10
Floodlight
Java based OpenFlow controller based on Beacon
runs within a JVM. Developers from Big Switch Networks
Indigo: Software to make switch hardware OpenFlow
compatible
Floodlight is the core of Big Switch Controller from Big
Switch Networks
Circuit Quantum Other
Pusher Plugin Apps
Northbound REST API
Floodlight Controller
Indigo Data plane Interface
OpenFlow OpenFlow
OpenFlow OpenFlow
Hypervisor Physical
Hypervisor Physical
Switches Switches
Switches Switches
Ref: S. Azodolmolky, "Software Defined Networking with OpenFlow," Packt Publishing, October 2013, 152 pp.,
ISBN:978-1-84969-872-6 (Safari Book)
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-11
Floodlight (Cont)
A number of real-world networking applications
Neutron plug-in for OpenStack cloud management system
Static Flow Pusher: Allows users to manually insert flows
Circuit Pusher: Creates permanent entries on all switches
along the path
Firewall: Enforces access control list (ACL) rules on
packets
Big Virtual Switch: Automates network provisioning for a large
scale data centers. Includes provisioning, multi-tenant partitioning
Big Virtual Switch
OpenStack Big Network Controller
Switch Switch … Switch
Ref: http://www.projectfloodlight.org/floodlight/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-12
Open Source Routing Software
Bird Internet Routing Daemon (BIRD):
TCP/IP routing daemon for Unix-like systems
Developed at Charles University, Prague
Provides BGP, RIP, OSPF for IPv4 and IPv6
Included in many Linux distributions
Used in several internet exchanges as a route server and has
replaced Quagga because of its scalability issues
Quagga: Includes OSPF, RIP, BGP, IS-IS on Unix-like OSs
eXensible Open Router Platform (XORP):
Designed at ICSI in Berkeley
Supports OSPF, BGP, RIP, PIM, IGMP, OLSR
Generally replace by Quagga
Ref: http://en.wikipedia.org/wiki/Bird_Internet_routing_daemon
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-13
Key OpenFlow Related Software
FlowVisor
Mininet
Ryu
RouteFlow
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-14
FlowVisor
Transparent Proxy between OpenFlow switches and multiple
OpenFlow Controllers
Creates network slices that can be managed by different
controllers Isolates slices from each other
All control traffic goes through FlowVisor Slight latency
App App App App App App
OF Controller OF Controller … OF Controller
FlowVisor
Switch Switch Switch Switch Switch
Ref: https://github.com/OPENNETWORKINGLAB/flowvisor/wiki?
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-15
Mininet
Widely used open source network emulation environment.
Can simulate a number of end-hosts, switches, routers, links on
a Linux
Used for rapid prototyping of software define networks
Built-in Open vSwitch, and a OpenFlow capable switch
Command line launcher and Python API for creating networks
of varying sizes, e.g., mn –topo tree,depth=2,fanout=3
Useful diagnositc commands like iperf, ping, and other
commands in a host, e.g., mininet> h11 ifconfig –a
Mininet code for several popular commercial switches are
available.
Ref: https://github.com/mininet/mininet
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-16
Ryu
Component-based framework that integrates with OpenStack
and supports OpenFlow
Provides software component with well defined API for
network management and control applications
Supports various versions of OpenFlow, OF-Config, Nicira
extensions
Developed by NTT laboratories
Can easily setup a multi-node OpenStack environment using
pre-configured Ryu VM image file
Ref: http://osrg.github.io/ryu/
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-17
RouteFlow
Provides virtualized IP routing servicers over
OpenFlow enabled hardware
IP routing engines (e.g., Quagga) in the networking devices
generate the forwarding information base (FIB) into the Linux
IP tables using OSPF, BGP, etc.
RouteFlow Client processes collect the IP and ARP tables and
translate into OpenFlow tuples that are installed in the
OpenFlow devices in the forwarding plane
RouteFlow
VM
Clients RouteFlow Server
Virtual
VM Topology VM OpenFlow Controller
Switch Switch … Switch
VM
Ref: https://sites.google.com/site/routeflow/home
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-18
RouteFlow (Cont)
Key components: RouteFlow Client,
RouteFlow Server, and RouteFlow Proxy
Route RouteFlow Clients
Engine Database RouteFlow Server GUI
User Space
ARP Route Kernel
Space
Table Table Topology Flow Apps RouteFlow
Discovery Stats Proxy
Virtual Routers
Network Controller
VM VM
Quagga
vSwitch vSwitch … Switch
Ref: https://sites.google.com/site/routeflow/home
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-19
Other OpenFlow Related Projects
Avior: Graphical user interface for floodlight network
administration and testing. Can monitor Controllers, Switches,
nodes, etc.
OFlops: OpenFlow Operations Per Second (OFlops) measures
various aspects of OpenFlow switch performance
Cbench: Controller Benchmarker (Cbench) measures
performance of controllers by generating packet-in events for
new flows from a bunch of switches.
Twister: Test automation framework to manage and drive test
cases written in shell scripting languages. Supports TCL,
Python, and Perl.
FortNOX: An extension of NOX which automatically checks
if new flow rules violate security policies
Ref: https://github.com/travelping/flower, https://github.com/Sovietaced/Avior, https://sites.google.com/site/routeflow/home,
http://archive.openflow.org/wk/index.php/Oflops, http://www.es.net/services/virtual-circuits-oscars, http://github.com/Luxoft/Twister,
http://www.openflowsec.org/OpenFlow_Security/Home.html
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-20
Summary
1. OpenFlow Controllers:
NOX, SNAC, POX, BEACON, Floodlight, Trema, …
2. Software Routers: Quagga, BIRD, XORP
3. FlowVisor provides multi-tenancy and multi-controllers
4. Tools: Mininet, RouteFlow, Ryu, …
5. Other Tools: Testing, security, benchmarking, etc.
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-21
Reading List
S. Azodolmolky, "Software Defined Networking with OpenFlow," Packt
Publishing, October 2013, 152 pp., ISBN:978-1-84969-872-6 (Safari Book)
T. Koponen, et al., “Onix: A distributed Control Platform for Large Scale
Production Networks,” OSDI 2010,
http://static.usenix.org/events/osdi10/tech/full_papers/Koponen.pdf
http://www.noxrepo.org/forum/
http://www.noxrepo.org/pox/about-pox/
http://www.openflowhub.org/display/Snac/SNAC+Home
https://openflow.stanford.edu/display/Beacon/Home
http://github.com/trema/
http://trema.github.com/trema/
http://www.projectfloodlight.org/floodlight/
https://code.google.com/p/maestro-platform/
https://github.com/mininet/mininet
https://github.com/OPENNETWORKINGLAB/flowvisor/wiki?
http://osrg.github.io/ryu/
https://sites.google.com/site/routeflow/home
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-22
Reading List (Cont)
http://en.wikipedia.org/wiki/Bird_Internet_routing_daemon
https://github.com/travelping/flower
https://github.com/Sovietaced/Avior
http://archive.openflow.org/wk/index.php/Oflops
http://www.es.net/services/virtual-circuits-oscars
http://github.com/Luxoft/Twister
http://www.openflowsec.org/OpenFlow_Security/Home.html
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-23
Acronyms
ACL Access control list
API Application Programming Interface
BGP Border Gateway Protocol
BGP Border Gateway Protocol
BIRD Bird Internet Routing Daemon
FIB Forwarding information base
GUI Graphical User Interface
ICSI International Computer Science Institute
IGMP Internet Group Management Protocol
IP Internet Protocol
IPv4 Internet Protocol V4
IPv6 Internet Protocol V6
IS-IS Intermediate System to Intermediate System
JVM Java Virtual Machine
MAC Mecia Access Control
NIB Network Information Base
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-24
Acronyms (Cont)
NSF National Science Foundation
NTT Nippon Telegraph and Telephone
OF OpenFlow
OFlops OpenFlow Operations Per Second
OLSR Optimized Link State Routing
ON.LAB Open Networking Lab at Stanford
OS Operating System
OSPF Open Shortest Path First
PIM Protocol Independent Multicast
REST Representational State Transfer
RIB Routing Information Base
RIP Routing Information Protocol
SNAC
TCL Tool Command Language
TCP Transmission Control Protocol
UC University of California
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-25
Acronyms (Cont)
VM Virtual Machine
XORP eXensible Open Router Platform
Washington University in St. Louis http://www.cse.wustl.edu/~jain/cse570-13/ ©2013 Raj Jain
15-26