= Vertical Handoff with OpenFlow = == Overview: == This tutorial is designed to give an insight into how OpenFlow can be used to conduct network experiments. The experiment we will conduct is a basic client-initiated handover. As background, a vertical handover 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 handovers are traditionally handled entirely by the network infrastructure (i.e. the network-level), leaving little-to-no control of the handover execution at the client. Clemson University is developing and testing a client-initiated and controlled vertical handover. This project is being conducted using GENI resources -- namely Clemson's GENI WiFi and WiMAX testbeds. Additional development has also been conducted on GENI's Orbit testbed at Rutgers. The vertical handover project is near completion and has been implemented on physical machines; however, for the purpose of this tutorial, our client-level development environment has been ported to a virtual machine (VM) so all can participate without regard the unique hardware capabilities of each participant. This tutorial will walk you through how to perform a Layer-2 (L2) handover using OpenFlow within a VM. 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 virtualization software's ''gateway'' interface on the host machine. In this tutorial, we will demonstrate how to run this basic form of our handover solution between these host-only interfaces and the host machine (i.e. your laptop). [[Image(PCEngine_Diagram.PNG)]] == Prerequisites: == - Computer with 2G RAM or higher (recommended) - Windows ('''turn off firewall'''); Mac/Linux (root at terminal) - VM image: http://myweb.clemson.edu/~rizard/Debian6t.zip - Familiarity with SSH, Linux terminal, Bash and Python scripting - Basic networking and OpenFlow background == Tools: == - On your host machine (please install before tutorial session): - VMware Player (Windows): http://www.vmware.com/download/player/download.html - VirtualBox (Mac): https://www.virtualbox.org/wiki/Downloads - Not guaranteed to work on Linux. Note: VirtualBox will crash with this VM (for some reason) on Windows. - PuTTY is recommended, a free implementation of Telnet and SSH for all platforms Windows users: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Linux users: PuTTY is available, but ssh is recommended. Mac users: PuTTY is available, but ssh is recommended. - Within your VM image (we have already installed these items): - OpenVPN. This tool is used to create the internal tap interface, from which the traffic is originated: http://wiki.debian.org/OpenVPN - Floodlight OpenFlow Controller. The OpenFlow controller we use to switch the network traffic. Information: http://www.projectfloodlight.org/floodlight/ Installation: http://docs.projectfloodlight.org/display/floodlightcontroller/Installation+Guide - Eclipse IDE: This development environment is used to modify, build, and run the Floodlight OpenFlow controller. Information: http://www.eclipse.org Installation: http://www.eclipse.org (or for Linux: apt-get install eclipse) - Open vSwitch (OVS). The open virtual switch that allows a network interface to be OpenFlow-enabled. Information: openvswitch.org Installation: http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL;hb=HEAD == Where to get Help: == - Questions/Help: Ryan Izard, rizard@g.clemson.edu - Floodlight Developers Group: https://groups.google.com/a/openflowhub.org/forum/?fromgroups=#!forum/floodlight-dev == Resources: == - Floodlight: http://www.projectfloodlight.org/floodlight/ - Current Handover Code: https://github.com/rizard/geni-openflow-vertical-handover == Tutorial Instructions == {{{ #!html
Design/Setup
  • Part I: Design/Setup
    • Step 1: Design Experiment
    • Step 2: Establish Management Environment
    • Step 3: Obtain Resources
Execute
  • Part II: Execute
    • Step 4: Configure and Initialize Services
    • Step 5: Execute Experiment
    • Step 6: Analyze and Visualize Experiment
Finish