lantz edited this page Jan 9, 2015 · 23 revisions

Welcome to the OpenFlow tutorial!

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):

  • Main Slides pptx, pdf
  • Virtualization
  • Controller Showdown
  • Deployment Experiences
Archived Tutorial Slides:
  • OpenNetSummit Tutorial (10/19/2011)
    • Main Slides: pdf, pptx
    • Deployment Forum:
      • Johan van Reijendam (Stanford): tgz
      • David Erickson (Stanford): pptx
      • Subhasree Mandal (Google): pdf

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
After the tutorial, you can apply what you've learned to physical networks based on software switches, NetFPGAs, or even hardware switches at line rate.

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.

The tutorial instructions require no prior knowledge of OpenFlow. The OpenFlow Learn More page is a concise introduction, and more information is available from the Open Networking Foundation.

Stuck? Found a bug? Questions?

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.

Learn More


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.

Additional Tools


This tutorial was originally written by Brandon Heller and Yiannis Yiakoumis and beta-tested by Bob Lantz, KK Yap and Masayoshi Kobayashi.