= SDN Tutorial Using GENIDesktop and Adopt-A-GENI = The [wiki:AAG Adopt-A-GENI] project makes it easy to incorporate SDN network resources into a GENI experiment. This tutorial will guide you through the automatic process of setting up a Software-Defined Networking experiment using the GENIDesktop. You will perform flow management and monitoring tasks using the GENIDesktop's modules and the topology view of the experiment. == Goals == In this experiment you will learn how to do the following tasks: * Enable Adopt-A-GENI (AAG) features in the GENI Desktop * Setup an SDN experiment using OVS and Floodlight/RYU controller with NO manual configuration * Setup and configure shortest path flows for communication between hosts through a graphical module * Interact with the topology view of the network to install custom flows * Live monitor flow counters present at installed flow rules * Distribute a single flow entry to multiple OVS nodes == Prerequisites == * A GENI account, if you don't already have one [http://groups.geni.net/geni/wiki/SignMeUp sign up!] * Familiarity with reserving GENI resources using JACKS. See Jacks [http://groups.geni.net/geni/wiki/GENIExperimenter/Tutorials/jacks/GettingStarted_PartI/Procedure A First Experiment Using GENI and Jacks Tool] * Familiarity with the UNIX command line and networking tools (e.g. ssh, ping, iperf) == Tools == * Latest version of Firefox or Google Chrome browser * Pop-up blockers and Javascript blockers disabled == Where to get help: == - If you need help with GENIDesktop, please email us at [mailto:geni-users@googlegroups.com] == Tutorial Instructions == === '''!Exercises/Tasks''' === 1. ''' Create the Experiment: ''' * Login to the GENIDesktop As usual. If you need help see the GENIDesktop Manual [wiki:GeniDesktop/Manual/gettingStarted/GENI_Desktop_login#TologintotheGENIDesktop Login] page. * Create a slice as usual. If you need help see the GENIDesktop Manual [wiki:GeniDesktop/Manual/gettingStarted/Create_slice#CreateaSlice Create A Slice] page. * Allocate Resources for the topology below using JACKS in the GENIDesktop. If you need help see the GENIDesktop Manual [wiki:GeniDesktop/Manual/gettingStarted/Create_sliver_jacks#CreatingaSliversusingJACKSintheGeniDesktop JACKS] page (but we are not using the topology listed on that page). In this tutorial we will be using [http://www.openvswitch.org/ Open vSwitch (OVS)] nodes to represent OpenFlow Software Switches [[Image(ovs_node.png, 24px)]] and XEN VMs nodes to represent hosts [[Image(xen_node.png, 24px)]]. The general topology contains two hosts, h1 and h2 with 3 switches, s1, s2 and s3: [[Image(allocate_topo.png)]] Draw this topology. Rename your nodes to match the given topology. Click node name, then type in the new name in the ```Name``` box in the left side dialog box. Before allocating the resources, click the ```Extra Features``` checkbox. This will show the drop down for ```Select AAG (Adopt-a-GENI) Controller```. You may choose between a "Floodlight Controller for AAG" or an "RYU Controller for AAG". For this tutorial we will be using the default option of "Floodlight Controller for AAG". [[Image(initial_topology_arrows.png)]] Click ```Allocate Resources Using This RSPEC``` You can watch the allocation progress as the slice is allocated. [[Image(progress.png)]] Once the allocation is complete the GENIDesktop will automatically load the Slice View page. Here the allocated topology will be shown. Note that two extra nodes have been automatically added to your topology. One is the AAG Contoller, ```AAGCTRL0``` and the other is the Global Node ```GDGN0```. These nodes provide the OpenFlow controller and the measuring controller respectively. [[Image(final_topo.png)]] Once the resources have been allocated we must wait for the nodes to be created/booted. We can track the progress. As the nodes come up they will turn green. Any failed nodes will be red. Once all the nodes have been booted, the nodes will all return to gray. [[Image(booting.png)]] After all the resources have been allocated and booted the GENIDesktop will run an Initialization and Instrumentation process that will configure, start up and attach all the OVS nodes to the controller. It will also start the monitoring of the slice. [[Image(welcome.png)]] = PAGE BREAK = * [wiki:GENIExperimenter/Tutorials/GENIDesktop/05032016/ready_init_instr View resources while they are being created, initialized and Instrumentized] 1. '''[wiki:GENIExperimenter/Tutorials/GENIDesktop/05032016/GENI_Desktop_runcmd Running Experiments:]''' Load and execute code 1. '''[wiki:GENIExperimenter/Tutorials/GENIDesktop/05032016/GENI_Desktop_ssh Viewing Traffic:]''' SSH into nodes, generate and view traffic 1. '''[wiki:GENIExperimenter/Tutorials/GENIDesktop/05032016/GENIDesktop_CLI GENIDesktop CLI:]''' Perform GENIDesktop operations using a Command Line Interface. == Create Experiment == 1. Login to GENIDesktop 1.1 === Create Slice === 1.2 === Allocate Resources using JACKS and the GENIDesktop === 1.3 ==== Wait for slice to be allocated and instrumentized === The controller node will automatically be added by the GENIDesktop when the slice is allocated. In this tutorial we will be using [http://www.openvswitch.org/ Open vSwitch (OVS)] to represent OpenFlow Software Switches and XEN VMs to represent hosts. The controller node is automatically added by the GENIDesktop. The general topology is: [[Image(topo.png)]]