| 1 | = [wiki:GENIExperimenter/Tutorials/OpenFlowOVS Intro to OpenFlow Tutorial (Hardware Switch)] = |
| 2 | {{{ |
| 3 | #!html |
| 4 | |
| 5 | <div style="text-align:center; width:495px; margin-left:auto; margin-right:auto;"> |
| 6 | <img id="Image-Maps_5201305222028436" src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/Setup.jpg?format=raw" usemap="#Image-Maps_5201305222028436" border="0" width="495" height="138" alt="" /> |
| 7 | <map id="_Image-Maps_5201305222028436" name="Image-Maps_5201305222028436"> |
| 8 | <area shape="rect" coords="18,18,135,110" href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OpenFlowHW/DesignSetup" alt="" title="" /> |
| 9 | <area shape="rect" coords="180,18,297,111" href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OpenFlowOVS/Execute" alt="" title="" /> |
| 10 | <area shape="rect" coords="344,17,460,110" href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OpenFlowOVS/Finish" alt="" title="" /> |
| 11 | <area shape="rect" coords="493,136,495,138" href="http://www.image-maps.com/index.php?aff=mapped_users_5201305222028436" alt="Image Map" title="Image Map" /> |
| 12 | </map> |
| 13 | <!-- Image map text links - End - --> |
| 14 | |
| 15 | </div> |
| 16 | }}} |
| 17 | [[PageOutline]] |
| 18 | == Step 1. Obtain resources == |
| 19 | |
| 20 | * The topology used in this experiment is the same as the one used in the [wiki:GENIExperimenter/Tutorials/OpenFlowSW/DesignSetup OpenFlow using OVS] part of this tutorial: Three virtual machines (VMs) connected by an !OpenFlow switch. However this tutorial uses the hardware !OpenFlow switch on the rack instead of a software OVS switch. |
| 21 | * If you have not reserved a controller yet, make sure to create a slice that will run the !OpenFlow controller by reserving a VM running the controller using the request RSpec [http://www.gpolab.bbn.com/exp/OpenFlowOVS/pox-controller.rspec]. This RSpec is available at the Portal and is called ''XEN VM POX Ctrl''''''''. |
| 22 | |
| 23 | [[Image(GENIExperimenter/Graphics:SimpleHardwareOpenFlow.jpg,40%)]] |
| 24 | |
| 25 | |
| 26 | '''About GENI !OpenFlow switches''' [[BR]] |
| 27 | GENI offers access to hardware !OpenFlow switches. Each !OpenFlow switch, in most cases, can support only one controller. There are two ways of slicing the controller flowspace: |
| 28 | 1. By VLAN id. This is used when each slice has its own VLANs. |
| 29 | 2. By IP addresses or by Ethernet type. This is used when multiple slices share the same VLAN. For example, the Mesoscale VLAN 1750 that has been set up as a shared VLAN on all GENI racks. |
| 30 | Both approaches to slicing are covered in this tutorial. |
| 31 | |
| 32 | To force the links between the VMs to go through the rack !OpenFlow switch, the three VMs must be on separate physical hosts on the rack. Our experiment will: |
| 33 | * Bind the Xen VMs to different physical hosts. |
| 34 | |
| 35 | === 1.1 Find your RSPecs === |
| 36 | |
| 37 | The RSpecs for this tutorial are site specific. If you are attending a tutorial, use the site and IP network that was given to you on your worksheet. If you are doing this at home, choose a site from : `clemson, cornell, gatech, gpo, illinois, kansas, uky, kettering, max, missouri, northwestern, nysernet, nyu, sox, stanford, wisconsin`. |
| 38 | |
| 39 | ''In the URLs below, replace <AGGREGATE-NAME> with the name of the site you are using (clemson, cornell, kansas, uky, kettering, max, northwestern, nysernet, stanford or wisconsin). '' |
| 40 | |
| 41 | The RSpec you need is at: |
| 42 | * {{{http://www.gpolab.bbn.com/experiment-support/OpenFlowHW/pvtVlan/ig-<AGGREGATE-NAME>.rspec}}}. (Reserves compute resources and specifies location of your controller.) |
| 43 | |
| 44 | |
| 45 | === 1.2 Edit your RSpecs === |
| 46 | |
| 47 | Open your RSpec in a text editor to make the following changes: |
| 48 | |
| 49 | * Replace the string <CONTROLLER_IP> (at the bottom of the RSpec) with the IP address of your controller. |
| 50 | |
| 51 | |
| 52 | |
| 53 | === 1.3 Reserve Resources === |
| 54 | |
| 55 | * Use your favorite resource reservation tool (Omni, jFed, Portal) to reserve your resources. For example, if you are using Omni and the MAX aggregate: |
| 56 | {{{ omni -a max-ig createsliver <YOUR_SLICE_NAME> ig-max.rspec }}} |
| 57 | |
| 58 | |
| 59 | == Step 2. Configure and Initialize == |
| 60 | |
| 61 | To get ready for the tutorial you will need to have the following windows open: |
| 62 | * one window with ssh into the controller |
| 63 | * one window with ssh into host1 |
| 64 | * two windows with ssh into host2 |
| 65 | * one window with ssh into host3 |
| 66 | |
| 67 | Depending on which tool and OS you are using there is a slightly different process for logging in. If you don't know how to SSH to your reserved hosts learn [wiki:HowTo/LoginToNodes how to login.] |
| 68 | |
| 69 | === 2a. Configure the Controller for the Hardware Switch: Useful Tips === |
| 70 | ==== Which port is connected to which host ==== |
| 71 | Run the learning pox controller with debug on ''(--verbose)'' (use the command from the OVS tutorial) and start a ping from host1 to host2 and host3. Notice that the printout of pox will have lines like: |
| 72 | {{{ |
| 73 | DEBUG:forwarding.l2_learning:installing flow for 02:b4:88:6d:83:f7.1 -> 02:36:8d:c2:b0:14.8 |
| 74 | }}} |
| 75 | |
| 76 | The format after `for` and `->` is <MAC>.<PORT> so this way you know which port is connected to which host. To figure out the name for each port then it is simply `A<PORT>` so if host 1 is out of port 8, then the name is `A8`. |
| 77 | |
| 78 | ==== Configuration files of controllers ==== |
| 79 | For the proxy and the port_forwarding controllers you will need to modify the config files (port_forward.config, proxy.config) to use the appropriate IP dataplane IP addresses of your hosts to correctly configure your controllers. |
| 80 | |
| 81 | Next run your controller as you did in the `OVS` experiment. |
| 82 | |
| 83 | ---- |
| 84 | = [wiki:GENIExperimenter/Tutorials/OpenFlowOVS Introduction] = |
| 85 | = [wiki:GENIExperimenter/Tutorials/OpenFlowOVS/Execute Next: Execute] = |