= Intro to OpenFlow Tutorial = TinyURL: http://www.tinyurl.com/geni-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. Divert all traffic destined to host A on TCP port X to TCP port Y 3. '''Proxy Controller'''. Write a controller that will divert all traffic destined to host A, TCP port X to host B, TCP port Y In this tutorial we have a choice of using an '''''!OpenFlow Software Switch''''', [http://openvswitch.org/ Open vSwitch (OVS)], or using an '''''!OpenFlow-Capable Hardware Switch'''''. The general topology is as pictured below. In general, the controller just needs to have a public IP address, so that it can exchange messages with the !OpenFlow switch. The controller for the switch can run anywhere in the Internet. For this tutorial we are going to use a [http://www.noxrepo.org/pox/about-pox/ POX based controller], which is just one example of [wiki:OpenFlow/Controllers many controller frameworks]. [[Image(GENIExperimenter/Graphics:SimpleOpenFlow.jpg,40%)]] == Prerequisites: == - A GENI account, if you don't have one [wiki:SignMeUp 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 [wiki:GENIExperimenter/Tutorials/RunHelloGENI tutorial] * Reserving resources using Omni [wiki:GENIExperimenter/Tutorials/HelloOmni tutorial] - Familiarity with [wiki:HowTo/LoginToNodes logging in to GENI compute resources]. - Basic understanding of OpenFlow. If you are doing this tutorial at home, flip through the [attachment:IntroToOpenFlow_140123.pptx tutorial's slides] - Familiarity with the Unix Command line - Familiarity with the python programming language. We are going to use the [http://www.noxrepo.org/pox/about-pox/ POX controller], which is just one example of [wiki:OpenFlow/Controllers many controller frameworks], and POX is written in python. == Tools: == - [http://openvswitch.org/ Open vSwitch]. OVS will be be installed. Installation was completed as described [http://groups.geni.net/geni/wiki/HowTo/InstallOVSInProtoGENI here]. - [http://www.noxrepo.org/pox/about-pox/ POX controller]. POX controller is installed as part of the resource reservation. == Where to get help: == - If you need help with GENI, email [mailto:geni-users@googlegroups.com] - If you have questions about !OpenFlow, OVS, Pox you can subscribe to [https://mailman.stanford.edu/mailman/listinfo/openflow-discuss openflow-discuss] or any of the other mailing lists listed. == Resources: == - [http://www.openflow.org/ Learn more about OpenFlow] - [https://openflow.stanford.edu/display/ONL/POX+Wiki POX wiki] - [http://openvswitch.org/ Learn more about OVS] == Tutorial Instructions == {{{ #!html
Design/Setup
Execute
Finish