wiki:GENIExperimenter/Tutorials/OpenFlowOVS

Version 14 (modified by lnevers@bbn.com, 6 years ago) (diff)

--

Intro to OpenFlow using OVS

Overview:

This is a simple OpenFlow tutorial that will guide you through the writing of simple OpenFlow controllers to showcase some of the OpenFlow capabilities. We are going to write three different controllers:

  1. Write a controller that will duplicate all the traffic of the OpenFlow switch out a specific port
  2. TCP Port Forward controller. Diverge all traffic destined to host A on TCP port X to TCP port Y
  3. Proxy Controller. Write a controller that will diverge all traffic destined to host A, TCP port X to host B, TCP port Y

In this tutorial we are going to use Open vSwitch (OVS) as an OpenFlow switch connected to three hosts. OVS is a software switch running on a compute resource. The other three hosts can only communicate through the OVS switch. Although the controller for the switch can run anywhere in the internet, we are going to run it on the same host as the OVS switch to minimize the required resources. For this tutorial we are going to use the PoX controller, this is just an example of many controllers. The OVS switch that we use runs in userspace which although not optimized for performance, it is enough for getting acquainted with OpenFlow.

Prerequisites:

  • A GENI account, if you don't have one sign up!
  • Familiarity with how to reserve GENI resources with any of the GENI Tools (GENI Experimenter Portal, Omni, Flack). If you don't know you can take any of the tutorials:
    • Reserving resources using Flack tutorial
    • Reserving resources using Omni tutorial
  • Familiarity with logging in to GENI compute resources.
  • Basic understanding of OpenFlow. If you are going over this tutorial at home, flip through the tutorial's slides
  • Familiarity with Unix Command line
  • Familiarity with python programming language. We are going to use the PoX controller, this is just an example of many controllers, and PoX is written in python.

Tools:

Where to get help:

Resources:

Tutorial Instructions

Design/Setup
Execute
  • Part II: Execute
    • Step 2: Configure and Initialize Services
    • Step 3: Execute Experiment
Finish

Attachments (2)