1 | | = OpenFlow and WiMAX = |
| 1 | = Vertical Handoff with OpenFlow = |
| 2 | |
| 3 | == Overview: == |
| 4 | This tutorial is designed to give an insight into how OpenFlow can be used to conduct network experiments. As background, a vertical handoff is the (ideally seamless) migration of a network connection from one network interface to another of a different technology. An example might be your cell phone transitioning from a WiFi to a 4G connection while streaming a video. Vertical handoffs are traditionally handled by the network infrastructure, leaving providing little-to-no control of the handoff execution at the client. Clemson University and the University of Wisconsin have partnered to develop and test a client-initiated and controlled vertical handoff. This project is being done using GENI resources -- namely Clemson's GENI WiFi and WiMAX testbeds. Further development is also planned in GENI's Orbit testbed at Rutgers. |
| 5 | |
| 6 | This vertical handoff project is being developed on physical machines; however, for the purpose of this tutorial, our development environment has been ported to a virtual machine (VM) so all can participate without regard the the unique hardware capabilities of each participant. This tutorial will walk you through how to perform a Layer-2 (L2) handoff using OpenFlow within a virtual machine. As you will discover, because this solution is dependent only on Linux network interface handles, you can apply it to any interface on a physical host. The VM provided has two host-only interfaces and one interface tied to a physical adapter on the host machine. The host-only interfaces communicate with the VMware tap interface added by VMware to the host machine. In this tutorial, we will demonstrate how to run our handoff solution between these host-only interfaces. |
| 7 | |
| 8 | [[Image(VM-Diagram.jpg)]] |
| 9 | |
| 10 | == Prerequisites: == |
| 11 | - Computer with 2G RAM or higher (recommended) |
| 12 | - Windows (turnoff firewall); Mac/Linux (root at terminal) |
| 13 | - VM image (link to Clemson Box account) |
| 14 | - Familiarity with SSH, Linux terminal, Bash and Python scripting |
| 15 | - Basic networking and OpenFlow background |
| 16 | |
| 17 | == Tools: == |
| 18 | - On your host machine (please install before GREESC13 tutorial session): |
| 19 | - VMware Player: http://www.vmware.com/download/player/download.html |
| 20 | - PuTTY is recommended, a free implementation of Telnet and SSH for all platforms |
| 21 | Windows/Mac users: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html |
| 22 | Linux users: sudo apt-get install putty |
| 23 | - Within your VM image (we have already installed these items): |
| 24 | - OpenVPN. This tool is used to create the internal tap interface, from which the traffic is originated: http://wiki.debian.org/OpenVPN |
| 25 | - Floodlight OpenFlow Controller. The OpenFlow controller we use to switch the network traffic. |
| 26 | Information: http://www.projectfloodlight.org/floodlight/ |
| 27 | Installation: http://docs.projectfloodlight.org/display/floodlightcontroller/Installation+Guide |
| 28 | - Open vSwitch (OVS). The open virtual switch that allows a network interface to be OpenFlow-enabled. |
| 29 | Information: openvswitch.org |
| 30 | Installation: http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL;hb=HEAD |
| 31 | |
| 32 | == Where to get Help: == |
| 33 | - Questions/Help: Ryan Izard, rizard@g.clemson.edu; Fan Yang, fany@clemson.edu |
| 34 | - Floodlight Developers Group: https://groups.google.com/a/openflowhub.org/forum/?fromgroups=#!forum/floodlight-dev |
| 35 | |
| 36 | == Resources: == |
| 37 | - Floodlight: http://www.projectfloodlight.org/floodlight/ |
| 38 | - Handoff Code: https://github.com/rizard/openflow-vertical-handoff (work-in-progress...) |
| 39 | |
| 40 | == Tutorial Instructions == |
| 41 | |
| 42 | |
| 43 | |
| 44 | {{{ |
| 45 | #!html |
| 46 | |
| 47 | |
| 48 | <table id="Table_01" height="409" border="0" cellpadding="0" cellspacing="0"> |
| 49 | <tr> |
| 50 | <td> |
| 51 | <a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/DesignSetup"><img src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/design.png?format=raw" width="152" height="152" alt="Design/Setup"></a> |
| 52 | </td> |
| 53 | <td> |
| 54 | <ul> |
| 55 | <li><a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/DesignSetup">Part I: Design/Setup</a></li> |
| 56 | <ul> |
| 57 | <li>Step 1: Design Experiment</li> |
| 58 | <li>Step 2: Establish Management Environment</li> |
| 59 | <li>Step 3: Obtain Resources</li> |
| 60 | </ul></ul> |
| 61 | </td> |
| 62 | </tr> |
| 63 | <tr> |
| 64 | <td> |
| 65 | <a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/Execute"><img src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/execute.png?format=raw" width="152" height="143" alt="Execute"></a> |
| 66 | </td> |
| 67 | <td> |
| 68 | <ul> |
| 69 | <li><a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/Execute">Part II: Execute</a></li> |
| 70 | <ul> |
| 71 | <li>Step 4: Configure and Initialize Services </li> |
| 72 | <li>Step 5: Execute Experiment </li> |
| 73 | <li>Step 6: Analyze and Visualize Experiment </li> |
| 74 | </ul></ul> |
| 75 | </td> |
| 76 | </tr> |
| 77 | <tr> |
| 78 | <td> |
| 79 | <a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/Finish"><img src="http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/Tutorials/Graphics/finish.png?format=raw" width="152" height="114" alt="Finish"></a> |
| 80 | </td> |
| 81 | |
| 82 | <td> |
| 83 | <ul> |
| 84 | <li><a href="http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/OnlineTemplate/Finish">Part III: Finish</a></li> |
| 85 | <ul> |
| 86 | <li>Step 7: Teardown Experiment</li> |
| 87 | <li>Step 8: Archive Experiment</li> |
| 88 | </ul></ul> |
| 89 | </td> |
| 90 | |
| 91 | </tr> |
| 92 | </table> |