Version 29 (modified by Vic Thomas, 8 years ago) (diff)


Appendix - Move to HW switches

Note:" This is not a standalone tutorial. Please refer to the Intro to OpenFlow using OVS for background.

The topology used in this experiment is the same as the one used in the Intro to OpenFlow using OVS 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.

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:

  1. By VLAN id. This is used when each slice has its own VLANs.
  2. By IP addresses or by Ethernet type. This is used when multiple slices share the same VLAN.

Both approaches to slicing are covered in this tutorial.

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. Since each InstaGENI rack has two hosts with Xen VMs and one with OpenVZ VMs, our experiment will:

  • Use 2 Xen VMs and 1 OpenVZ VM
  • Bind the Xen VMs to different physical hosts.

For instructions to use the OpenFlow switches with private VLANs, see [].

For example, the GENI mesoscale VLAN. For instructions, see [].

Using Hardware OpenFlow switches using Private VLANs


To enable sharing of the resources many times a slicer (FlowVIsor) and an OpenFlow specific AM (FOAM) is used.

In GENI there is a common VLAN that has been setup for all the GENI racks and within this VLAN experimenters can reserve a flowspace based on IP or eth_type. Experimenter can also obtain a private VLAN only for their slice. For this tutorial we are going to use the common VLAN that has been setup.


The 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.

When working with hardware switches the reservation usually happens in two steps:

  1. Reserve all your hosts (including the host that will be the controller)
  2. Reserve the OpenFlow resources (for this you will need the controller public IP from the previous step).

1. Reserve compute resources

The rspecs for this tutorial are site specific. If you are attending a tutorial then use the site and IP network that was given to you on your worksheet, if you are doing this at home choose a site out of : clemson, cornell, gatech, gpo, illinois, kansas, kentucky, kettering, max, missouri, moxi, northwestern, nysernet, nyu, sox, stanford, wisconsin and choose a network between 10.20.30 - 10.20.49

In the following instructions replace :

  • SITE with the site you were given or chose.
  • NETWORK with the one your were given or chose.

Do the following steps:

  1. Start jFed
  2. Load URL: in jfed
  3. Use the search and replace functionality of the rspec editor in jFed to replace "10.10.1" with "NETWORK"
  4. Press run

2. Reserve Network Resources

While 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.

  1. Wait for the manifest to be returned, once this is done the jfed screen will change to look like the folling image:
  2. Open a terminal and run: nslookup HOSTNAME

In the following instructions replace:

  • CONTROLLER_IP with the IP you just learned

Do the following steps:

  1. In JFed go back to the general view
  2. Load URL: in jfed
  3. Use the search and replace functionality of the rspec editor in jFed to replace "NETWORK" with your network
  4. Use the search and replace functionality of the rspec editor in jFed to replace "CONTROLLER_IP" with your controller ip i,. Save the rspec
  5. Use omni to reserve the resources using as your am SITE-of-ig and the same slice you created for your compute resources

If 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.

NOTE: You might get some errors when loading POX, just ignore them.

Useful tips

Which port is connected to which host

Run the learning pox controller with debug on (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:

DEBUG:forwarding.l2_learning:installing flow for 02:b4:88:6d:83:f7.1 -> 02:36:8d:c2:b0:14.8

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.

Configuration files of controllers

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.

Attachments (1)

Download all attachments as: .zip