Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
OpenFlow is an open interface for remotely controlling the forwarding tables in network switches, routers, and access points. Upon this low-level primitive, researchers can build networks with new high-level properties. For example, OpenFlow enables more secure default-off networks, wireless networks with smooth handoffs, scalable data center networks, host mobility, more energy-efficient networks and new wide-area networks – to name a few.
This tutorial is your opportunity to gain hands-on experience with the platforms and debugging tools most useful for developing network control applications on OpenFlow. This page contains some material to get you started with Openflow and Mininet. Check the side bar on the right for a list of assignments to walk you through everything from the creation of your virtual machine to the implementation of an openflow router.
The sidebar to the right is an index to the various sections of the tutorial. A good place to start is Installing Required Software.
Innovate in your network!
Active ONS Tutorial Slides (4/16/2012):
- OpenNetSummit Tutorial (10/19/2011)
Table of Contents
In this tutorial, you'll turn the provided hub controller into a controller-based learning switch, then a flow-accelerated learning switch, and extend this from a single-switch network to a multiple-switch multiple-host network. You can also find guidelines for further extensions. Along the way, you'll learn the full suite of OpenFlow debugging tools. You will:
- view flow tables with dpctl
- dissect OpenFlow message with Wireshark
- simulate a multi-switch, multi-host network with Mininet
- benchmark your controller with cbench
To get you started quickly, we provide a preconfigured virtual machine with the needed software.
You will need a computer with at least 1GB (preferably 2GB+) of RAM and at least 5GB of free hard disk space (more preferred). A faster processor may speed up the virtual machine boot time, and a larger screen may help to manage multiple terminal windows.
These instructions consider Linux, OS X, and Windows. Linux and OS X are preferred - there's less to install.
You will need administrative access to the machine.
Email openflow-discuss - at - lists.stanford.edu if you're stuck, think you've found a bug, or just want to send some feedback.
If you are asking a question or reporting a bug, try to include as many details about your setup as possible. Include your OS, virtualization software info, X11 and ssh software you're using, VM image you're using, memory size, and the step you're on.
To learn more about OpenFlow in general, consult the Open Networking Foundation OpenFlow site and the historical OpenFlow page. There are videos, blog entries, and more. Check the wiki for link to OpenFlow-based projects and demos.
This tutorial was originally written by Brandon Heller and Yiannis Yiakoumis and beta-tested by Bob Lantz, KK Yap and Masayoshi Kobayashi.