Changes between Version 7 and Version 8 of GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/HW/DesignSetup
- Timestamp:
- 03/01/17 14:50:12 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/HW/DesignSetup
v7 v8 1 [[PageOutline]] 2 1 3 = OpenFlow using a Hardware Switch = 2 4 3 This experiment provides a guide on how to do the [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight OpenFlowOVS with Floodlight tutorial] using the Hardware OpenFlow switches available in the InstaGENI (IG) racks. This can serve as a general guide on how to use the OpenFlow Hardware switches. 4 5 [[PageOutline]] 5 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. 6 6 7 7 == Step 1. Obtain Controller Resources == 8 8 9 The topology used in this experiment is the same as the one used in the [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/DesignSetup OpenFlow using OVS with Floodlight] tutorial: Three Virtual Machines (VMs) connected by an !OpenFlow switch. However this tutorial uses Ahardware !OpenFlow switch instead of a software OVS switch.9 The topology in this experiment is the same as the one in the [wiki:GENIExperimenter/Tutorials/OpenFlowOVS-Floodlight/DesignSetup OpenFlow using OVS with Floodlight] tutorial: Three Virtual Machines (VMs) connected by an !OpenFlow switch. However, this tutorial uses a hardware !OpenFlow switch instead of a software OVS switch. 10 10 11 11 [[Image(GENIExperimenter/Graphics:SimpleHardwareOpenFlow.jpg,40%)]] 12 12 13 This experiment requires two slices; one slice for the OpenFlow Controller reservation and a second slice for the network topology that includes the compute resource for the endpoint hosts. 13 This experiment requires two slices: 14 - one slice for the OpenFlow Controller reservation 15 - a second slice for the network topology that includes the compute resource as the endpoint hosts. 14 16 15 If you have not reserved a controller yet, make sure to create aslice that will run the !OpenFlow controller by reserving a VM running the controller using the request RSpec:17 Create the slice that will run the !OpenFlow controller by reserving a VM running the controller using the request RSpec: 16 18 17 19 {{{ https://raw.githubusercontent.com/GENI-NSF/geni-tutorials/master/OVSFloodLight/ControllerCustom_request_rspec.xml}}} 18 20 19 Once the controller has been reserved, login to the allocated VMand 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 on21 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 20 22 [wiki:HowTo/LoginToNodes how to login]. 21 23 … … 23 25 === 1.1 Find your Endpoint Hosts RSpecs === 24 26 25 Once we have the controller allocated, we can proceed to reservingthe second slice that allocates the VMs used as endpoint hosts in the topology.27 Now we proceed to reserve the second slice that allocates the VMs used as endpoint hosts in the topology. 26 28 27 '''About GENI !OpenFlow switches''' [[BR]] 29 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. 28 30 29 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. To force the links between the endpoint host VMs to go through the rack !OpenFlow switch, we must request that each be on separate physical hosts on the rack. Our experiment will '''bind''' each endpoint hosts to a separate Xen VM server, i.e. to different physical hosts. 30 31 The RSpecs for the second slice are site specific and are used to reserves the compute resources and to 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`. 31 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`. 32 32 33 33 In the URLs below, replace the <AGGREGATE-NAME> with the name of the site you are using (clemson, cornell, kansas, uky, max, stanford or wisconsin). The RSpec for the second slice is available at: … … 42 42 === 1.2 Edit your Endpoint Hosts RSpecs === 43 43 44 Open your RSpec in a text editor to insert the IP address of your controller. Done by replacing the string <CONTROLLER_IP> at the bottom of the RSpec with the IP address of your controller. The controller line looks as follows:44 Open your RSpec in a text editor to insert the IP address of your controller. This is done by replacing the string <CONTROLLER_IP> at the bottom of the RSpec with the IP address of your controller. The controller line looks as follows: 45 45 46 46 {{{<emulab:openflow_controller url="tcp:CONTROLLER_IP:6633"/>}}} … … 69 69 ==== Which port is connected to which host ==== 70 70 71 To learn about the ports on which the Hosts are connected to the HW Switch, you need to run the Controller and execute a curl command. 71 To learn about the ports on which the Hosts are connected to the hardware switch, you need to run the Controller and execute a curl command: 72 73 curl http://localhost:8080/wm/device/ | python -m json.tool 72 74 73 75 === 2b. Run your controller. ===