= How To Use Hardware Switches and Shared VLANs = These steps should allow you to run the [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OpenFlowOVS/Appendix Hardware version of the Intro to OF tutorial] but with a multi-site topology. You need 3 slices (called `MYSLICE`, `MYSLICE2` and `MYSLICE3` below) and 4 RSpecs. If you run the controller outside of GENI on your own machine you only need two slices (`MYSLICE2` and `MYSLICE3` and 3 RSpecs.) Do the steps in the following order: 1) Reserve a VM for your controller. It does not matter much which aggregate you pick for `MYAGG`. (In fact, you don't need a GENI node at all as you could run the controller on your own machine.) {{{ omni createsliver MYSLICE http://www.gpolab.bbn.com/exp/OpenFlowOVS/pox-controller.rspec -a MYAGG --useSliceMembers }}} 2) Start your controller. Log in to the VM from the last step and run: {{{ cd /tmp/pox ./pox.py --verbose forwarding.l2_learning }}} 3) Edit the attached `max-stanford-stitched-flack.rspec` to point to the controller. The controller should be accessed via the public IP of the node from the first step. 3) Reserve a VM at Stanford connected to a VM at MAX via a stitched VLAN. These nodes will be `host1` and `host2`: {{{ stitcher createsliver MYSLICE2 max-stanford-stitched-flack.rspec --useSliceMembers }}} 4) Use performOperationalAction (`poa`) to share the stitched VLAN at Stanford. ([http://groups.geni.net/geni/wiki/HowTo/ShareALan Detailed instructions]) a) Make a file called `lan_options.json` containing the text below. (NOTE: `stitched0` should be the name of the stitched VLAN from the previous step and `ofstitchedlan` should be the name you give the shared VLAN and is used by the RSpec in step (4)) {{{ { "geni_sharelan_lanname": "stitched0", "geni_sharelan_token": "ofstitchedlan" } }}} b) Run `poa` at each aggregate you should like to share the VLAN at: {{{ omni -V 3 -a stanford-ig poa MYSLICE2 geni_sharelan --optionsfile lan_options.json omni -V 3 -a max-ig poa MYSLICE2 geni_sharelan --optionsfile lan_options.json }}} 4) Reserve a third VM (`host3`) on the shared VLAN: {{{ omni createsliver MYSLICE3 host3-on-shared-vlan.rspec -a stanford-ig --useSliceMembers }}} 5) Reserve a fourth VM (`host4`) on the shared VLAN: {{{ omni createsliver MYSLICE3 host4-on-shared-vlan.rspec -a max-ig --useSliceMembers }}} You should now have a controller running at an aggregate of your choice and controlling the hardware switch connecting the four VMs (two VMs at Stanford IG and two VM at MAX IG) which are all on the same shared VLAN. You should now be able to complete the exercise as described in [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OpenFlowOVS/Appendix Hardware Intro to OpenFlow].