[[PageOutline]] = OpenFlow using a Hardware Switch = This experiment provides a guide on how to do the [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight OpenFlowOVS with Floodlight tutorial] using a Hardware !OpenFlow switch in an InstaGENI (IG) rack. == Step 1. Obtain Controller Resources == The topology in this experiment is similar to the one in the [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/DesignSetup OpenFlow using OVS with Floodlight] tutorial. It uses three Virtual Machines (VMs) that are connected by an !OpenFlow switch. However, this tutorial uses a hardware !OpenFlow switch instead of a software OVS switch. [[Image(GENIExperimenter/Graphics:SimpleHardwareOpenFlow.jpg,40%)]] This experiment requires two slices: - one slice for the !OpenFlow Controller reservation - a second slice for the network topology that includes the compute resource as the endpoint hosts. Create the slice that will run the !OpenFlow controller by reserving a VM running the controller using the request RSpec: {{{ https://raw.githubusercontent.com/GENI-NSF/geni-tutorials/master/OVSFloodLight/ControllerCustom_request_rspec.xml }}} Once the controller has been reserved, login to it and get the routable IP Address that has been allocated to the controller node. This address will be used in the next step when the hosts topology is requested. If needed, see help on [wiki:HowTo/LoginToNodes how to login]. === 1.1 Find your Endpoint Hosts RSpecs === Now we proceed to reserve the second slice that allocates the VMs used as endpoint hosts in the topology. GENI offers access to hardware !OpenFlow switches, which in most cases can support only one controller. On the InstaGENI racks the switch is sliced based on VLANs, so each VLAN is its own virtual datapath, thus allowing multiple OF experiments. To force the links between the endpoint host VMs to go through the rack's !OpenFlow switch, we must request that each endpoint host be on a separate VM Server host in the rack. The RSpecs '''bind''' each endpoint hosts to a separate Xen VM server and specify the location of your controller. 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, kansas, uky, max, stanford or wisconsin`. In the URLs below, replace the with the name of the site you are using (clemson, cornell, kansas, uky, max, stanford or wisconsin). To peruse available RSpecs for the second slice, you can take a look at: {{{ https://raw.githubusercontent.com/GENI-NSF/geni-tutorials/master/OpenFlowHW/pvtVlan/ }}} To download the raw files you must use this type of path: {{{ https://raw.githubusercontent.com/GENI-NSF/geni-tutorials/master/OpenFlowHW/pvtVlan/ig-.rspec }}} For example, if you are working with max-ig, then you can get the sample RSPec as follows: {{{ wget https://raw.githubusercontent.com/GENI-NSF/geni-tutorials/master/OpenFlowHW/pvtVlan/ig-max.rspec }}} === 1.2 Edit your Endpoint Hosts RSpecs === Open your RSpec in a text editor to insert the IP address of your controller. This is done by replacing the string at the bottom of the RSpec with the IP address of your controller. The controller line looks as follows: {{{ }}} === 1.3 Reserve Endpoint Hosts Resources === Use your favorite resource reservation tool (Omni, jFed, Portal) to reserve your resources. For example, if you are using Omni and the MAX IG aggregate: {{{ omni -a max-ig createsliver ig-max.rspec }}} == Step 2. Configure and Initialize == To get ready for the tutorial you will need to have the following windows open: * one window with ssh into the controller * one window with ssh into host1 * two windows with ssh into host2 * one window with ssh into host3 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.] === 2a. Configure the Controller for the Hardware Switch: Useful Tips === ==== Which port is connected to which host ==== To learn about the ports on which the Hosts are connected to the hardware switch, you need to run the FloodLight Controller and execute this command: {{{ curl http://localhost:8080/wm/device/ | python -m json.tool }}} This will report a list of all devices tracked by the controller. This includes MAC addresses, IP Addresses and the attachment points. === 2b. Run your controller. === To get started with the tutorial follow the steps listed on the page [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/Execute Running the Floodlight Controller]