Changes between Initial Version and Version 1 of GENIExperimenter/Tutorials/OpenFlowHW/DesignSetup

12/10/14 14:52:41 (8 years ago)



  • GENIExperimenter/Tutorials/OpenFlowHW/DesignSetup

    v1 v1  
     1= [ Intro to OpenFlow Tutorial] =
     5<div style="text-align:center; width:495px; margin-left:auto; margin-right:auto;">
     6<img id="Image-Maps_5201305222028436" src="" 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="" alt="" title=""    />
     9<area shape="rect" coords="180,18,297,111" href="" alt="" title=""    />
     10<area shape="rect" coords="344,17,460,110" href="" alt="" title=""    />
     11<area shape="rect" coords="493,136,495,138" href="" alt="Image Map" title="Image Map" />
     13<!-- Image map text links - End - -->
     18== Step 1.  Obtain resources ==
     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 you to create a slice that will run the !OpenFlow controller: Reserve a VM running the controller using the request RSpec [].  This RSpec is available at the Portal and is called  '''XEN VM POX Ctrl'''''''
     26'''About GENI !OpenFlow switches''' [[BR]]
     27GENI  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.
     30Both approaches to slicing are covered in this tutorial.
     32To 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.  Since each InstaGENI rack has two hosts with Xen VMs and  one with OpenVZ VMs, our experiment will:
     33   * Use 2 Xen VMs and 1 OpenVZ VM
     34   * Bind the Xen VMs to different physical hosts.
     36=== 1.1 Find your RSPecs ===
     38The 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, sky, kettering, max, missouri, northwestern, nysernet, nyu, sox, stanford, wisconsin`.
     40''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). ''
     42'''If you are using a private VLAN:'''  The RSpecs you need is at:
     43    * {{{<AGGREGATE-NAME>.rspec}}}. (Reserves compute resources and specifies location of your controller.)
     45'''If you are using a shared VLAN:'''  You will need two RSpecs, one to reserve the compute nodes and one to reserve your flowspace using the !OpenFlow aggregate manager on the rack.  The !OpenFlow aggregate manager is called FOAM.  The RSPecs are at:
     46    * {{{>.rspec}}}    (Reserves compute resources.)
     47    * {{{>.rspec}}}  (Reserves flowspace resources.)
     50=== 1.2 Edit your RSpecs ===
     52Open your RSpec in a text editor to make the following changes:
     54'''If you are using a private VLAN:'''   [[BR]]
     55    * Replace the string <CONTROLLER_IP> (at the bottom of the RSpec) with the IP address of your controller.
     57'''If you are using a shared VLAN:''' [[BR]]
     58    * In the RSpec for flowspace resources, replace:
     59         - SITE with the site you are using
     60         - NETWORK with the one in your worksheet.  If you are doing this at home, use a network between 10.20.30 - 10.20.49.
     64=== 1.3 Reserve Resources ===
     66'''If you are using a private VLAN:'''   [[BR]]
     67  * Use your favorite resource reservation tool (Omni, jFed, Portal) to reserve your resources.  For example, if you are using Omni and the MAX aggregate:
     68{{{ omni -a max-ig createsliver <YOUR_SLICE_NAME> ig-max.rspec }}}
     70'''If you are using a shared VLAN:''' [[BR]]
     71   * You will need to reserve your compute and flowspace resources separately using your favorite resource reservation tool (Omni, jFed, Portal).  For example, [[BR]]
     72{{{ omni -a max-ig createsliver <YOUR_SLICE_NAME> ig-max.rspec }}} (to reserve compute resources) [[BR]]
     73{{{ omni -a max-ig-of createsliver <YOUR_SLICE_NAME> ig-max.rspec }}} (to reserve flowspace resources)
     77== Useful tips ==
     78=== Which port is connected to which host ===
     79Run 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:
     81DEBUG:forwarding.l2_learning:installing flow for 02:b4:88:6d:83:f7.1 -> 02:36:8d:c2:b0:14.8
     84The 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`.
     86=== Configuration files of controllers ===
     87For 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.
     93== Design/Setup ==
     96The [wiki:GENIExperimenter/Tutorials/OpenFlowOVS topology] for this experiment is very similar to the one that uses OVS, the main difference is that instead of the OVS we are going to connect the compute resources to a hardware OpenFlow switch.
     98When working with hardware switches the reservation usually happens in two steps:
     99  1. Reserve all your hosts (including the host that will be the controller)
     100  2. Reserve the OpenFlow resources (for this you will need the controller public IP from the previous step). 
     107=== 2. Reserve Network Resources ===
     108While your compute resources are being reserved and configured. The first thing we need to do is use the manifest information to figure out the IP of our controller.
     109  i. Wait for the manifest to be returned, once this is done the jfed screen will change to look like the folling image:
     110     [[Image(jfed_manifest.png,50%)]]
     111  ii. Open a terminal and run: `nslookup HOSTNAME`
     113In the following instructions replace:
     114  * CONTROLLER_IP with the IP you just learned
     116Do the following steps:
     117  i. In JFed go back to the general view
     118  i. Load URL: `` in jfed
     119  i. Use the search and replace functionality of the rspec editor in jFed to replace "NETWORK" with  your network
     120  i. Use the search and replace functionality of the rspec editor in jFed to replace "CONTROLLER_IP" with  your controller ip
     121  i,. Save the rspec
     122  i. Use omni to reserve the resources using as your am SITE-of-ig and the same slice you created for your compute resources
     124If you get no error you are all set. Once your compute resources are reserved you can go back and repeat the same exercises now running on a hw switch.
     126'''NOTE''': You might get some errors when loading POX, just ignore them.
     130= [wiki:GENIExperimenter/Tutorials/OpenFlowHw Introduction] =
     131= [wiki:GENIExperimenter/Tutorials/OpenFlowHw/Execute Next:  Execute] =