[[PageOutline]] = GENI !OpenFlow Experiment Example 2 = This page illustrates an !OpenFlow (OF) example for the [wiki:HowToUseOmni Omni How-to] page. [http://www.openflow.org/ OpenFlow] is used for the control of the network resources in the GENI backbone and at meso-scale campus locations. Experimenters can use these GENI resources without learning !OpenFlow. The GPO [mailto:help@geni.net] can help arrange connectivity across your GENI slice, including IP connectivity and/or layer 2 VLANs. For experimenters who desire control over the network switching fabric in their slices, !OpenFlow provides increased flexibility. Your experiment will incorporate an !OpenFlow controller. Many experimenters use existing controller code as-is, some use controllers with relatively simple modifications, and some experimenters have written their own controller. The GPO is available to help design your controller and plan your experiment configuration. Feel free to contact us at [mailto:help@geni.net]. The example captured in this page uses credentials from pgeni.gpolab.bbn.com, the GPO ProtoGENI Clearinghouse, to set up an experiment that includes 3 meso-scale !OpenFlow sites that include the following compute resources: - 1 PG compute resource at BBN running as a web server - 1 MyPLC compute resource at Wisconsin running as a web client - 1 MyPLC compute resource at Clemson running as a web client. This example also shows a NOX !OpenFlow Controller running on a slice resource that is available and accessible to the FOAM instances. [[Image(OF-Experiment-example.jpg)]] Omni tools are used to reserve resources in each of the site's !FlowVisor !OpenFlow Aggregate Manager (FOAM) and GENI Aggregate Managers. Steps required to set up the 3 Sites !OpenFlow experiment are detailed in this page: * Authentication and Omni tools configuration * Determine Resources Availability * Define Compute Resources RSpecs * Define OpenFlow Network Resources Rspecs * Create Slice and Request Resources * Run Experiment * Release Resources Note: FOAM sites must be federated in order to trust a Clearinghouse. This is an OF administrator task that must take place before any of the user OF operations can take place. == Authentication and Omni tools configuration == This example assumes that GENI credentials have been set up as detailed in the [wiki:HowToUseOmni#a1.GetGENICredentials GENI Credentials] section of the [wiki:HowToUseOmni Omni how-to] page. The following omni_config was used for this experiment along with the credentials from the GPO Clearinghouse to access the GENI Aggregate Managers in this experiment: {{{ [omni] default_cf = pgeni users = lnevers # ---------- Users ---------- [lnevers] urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+lnevers keys = ~/.ssh/id_rsa.pub # ---------- Frameworks ---------- [pgeni] type = pg ch = https://www.emulab.net:443/protogeni/xmlrpc/ch sa = https://www.pgeni.gpolab.bbn.com:443/protogeni/xmlrpc/sa cert = ~/.ssl/pgeni/encrypted-cleartext.pem key = ~/.ssl/pgeni/encrypted-cleartext.pem verbose=false [pg] type=pg ch = https://www.emulab.net:443/protogeni/xmlrpc/ch sa = https://www.emulab.net:443/protogeni/xmlrpc/sa cert = ~/.ssl/protogeni/encrypted-cleartext.pem key = ~/.ssl/protogeni/encrypted-cleartext.pem }}} A list of Aggregate managers is compiled in the [http://groups.geni.net/geni/wiki/GeniAggregate GENI Aggregate] page, if your site is not listed on this page you should contact your site administrator, or help@geni.net. == Determine Resources Availability == Each of the 3 sites will requires an !OpenFlow RSpec and a compute resource RSpec. To find out what resources are available use Omni tools to get a list of available resources. FOllowing is a list of available GENI Aggregate Managers: ||'''Site'''|| '''ProtoGENI Aggregate URL''' || '''MyPLC Aggregate URL''' || ''' FOAM Aggregate URL ''' || || BBN || https://pgeni.gpolab.bbn.com/protogeni/xmlrpc/am || http://myplc.gpolab.bbn.com:12346/ ||https://foam.gpolab.bbn.com:3626/foam/gapi/1 || Clemson || || http://myplc.clemson.edu:12346/ ||https://foam.clemson.edu:3626/foam/gapi/1 || GA Tech || || https://myplc.cip.gatech.edu:12346/ ||https://nox.orbit-lab.org:3626/foam/gapi/1 ||Indiana || || https://myplc.grnoc.iu.edu:12346/ ||https://foam.noc.iu.edu:3626/foam/gapi/1 || Intenet2 || || ||https://foam.net.internet2.edu:3626/foam/gapi/1 || NLR || || ||https://foam.nlr.net:3626/foam/gapi/1 || Rutgers || ||https://plc.orbit-lab.org:12346/ ||https://foam.oflow.cip.gatech.edu:3626/foam/gapi/1 || Stanford || ||https://myplc.stanford.edu:12346/ ||https://openflow4.stanford.edu:3626/foam/gapi/1 ||Washington|| ||https://of.cs.washington.edu:12346/ ||https://of.cs.washington.edu:3626/foam/gapi/1 ||Wisconsin || ||https://wings-openflow-1.wail.wisc.edu:12346/||https://foam.wail.wisc.edu:3626/foam/gapi/1 This experiment uses Omni V1.6.1 to set up the experiment. As a first step, the experimenter determines the available resources at each of the Aggregate Managers. Following are the omni commands issued to get the manifests for available resources: 1. Clemson FOAM and MyPLC aggregates: {{{ ./src/omni.py -a https://foam.clemson.edu:3626/foam/gapi/1 listresources -o # generates output file rspec-foam-clemson-edu-3626-foam-gapi-1.xml ./src/omni.py -a http://myplc.clemson.edu:12346/ listresources -o # generates rspec-myplc-clemson-edu-12346-.xml }}} 2. Wisconsin FOAM and MyPLC aggregates: {{{ ./src/omni.py -a https://foam.wail.wisc.edu:3626/foam/gapi/1 listresources -o # generates rspec-foam-wail-wisc-edu-3626-foam-gapi-1.xml ./src/omni.py -a https://wings-openflow-1.wail.wisc.edu:12346/ listresources -o # rspec-wings-openflow-1-wail-wisc-edu-12346-.xml }}} 3. BBN FOAM and PG aggregates: {{{ ./src/omni.py -a http://www.pgeni.gpolab.bbn.com/protogeni/xmlrpc/am listresources -o # generates rspec-www-pgeni-gpolab-bbn-com-protogeni.xml ./src/omni.py -a https://foam.gpolab.bbn.com:3626/foam/gapi/1 listresources -o # generates rspec-foam-gpolab-bbn-com-3626-foam-gapi-1.xml }}} 4. NLR !OpenFlow Core FOAM server: {{{ $ ./src/omni.py -a https://foam.nlr.net:3626/foam/gapi/1 -o listresources # generates rspec-foam-nlr-net-3626-foam-gapi-1.xml }}} Each of the omni command above used the -o argument to get the listresources output to a file, all output files are attached to this page as a reference. The Advertisement RSpec generated by the listresources are then reviewed to generate the Requests RSpecs to reserve the resources. Information in these files provides the switch and the port URN information to be used in making the OF flowspace reservation. The above results will give you some insight into what is available, but it is recommended that you coordinate with the site contact to ensure RSpec accuracy for each of the OF Aggregate Managers. == Define Compute Resources RSpecs == The section shows the compute resources RSpec defined based on the output of the listresources commands. '''BBN ProteGENI Compute Resource RSpec ''' {{{ #!xml }}} ''' Clemson MyPLC Compute Resources RSpec''' {{{ #!xml planetlab4.clemson.edu }}} '''Wisconsin MyPLC Compute Resources RSpec''' {{{ #!xml wings-openflow-2.wail.wisc.edu }}} == Define !OpenFlow Network Resources Rspecs == The OF RSpecs used for this example assumes that the flowspace between the 3 sites is based on traffic type and port. This section has two parts which: * Walks through how to figure out the OF network path * Show RSpec defined as a result of the walkthrough === Determine OF network path === Frome the listresources output files (attached to this page) determined the sites DPIDs ''' BBN FOAM''' - Aggregate URL https://foam.gpolab.bbn.com:3626/foam/gapi/1 || dpid="06:a4:00:12:e2:b8:a5:d0" || || dpid="06:a4:00:24:a8:c4:b9:00" || || dpid="06:c6:00:24:a8:c4:b9:00" || || dpid="06:d6:00:12:e2:b8:a5:d0" || || dpid="06:d6:00:24:a8:c4:b9:00" || ''' FOAM Clemson''' - Aggregate https://foam.clemson.edu:3626/foam/gapi/1 || dpid="00:00:13:01:27:06:20:11" || || dpid="06:c6:00:26:f1:3f:e4:80" || || dpid="06:d6:00:26:f1:3f:e4:80" || '''FOAM NLR''' - Aggregate URL https://foam.nlr.net:3626/foam/gapi/1 || dpid="0e:83:00:23:47:c8:bc:00" || || dpid="0e:83:00:23:47:ca:bc:40" || || dpid="0e:83:00:24:a8:d2:48:00" || || dpid="0e:83:00:24:a8:d2:b8:40" || || dpid="0e:83:00:26:f1:40:a8:00" || || dpid="0e:84:00:23:47:c8:bc:00" || || dpid="0e:84:00:23:47:ca:bc:40" || || dpid="0e:84:00:24:a8:d2:48:00" || || dpid="0e:84:00:24:a8:d2:b8:40" || || dpid="0e:84:00:26:f1:40:a8:00" || ''' FOAM Wisconsin''' - Aggregate URL https://foam.wail.wisc.edu:3626/foam/gapi/1 || dpid="06:c6:00:21:f7:be:8d:00" || || dpid="06:c6:00:23:47:cc:44:00" || || dpid="06:d0:00:21:f7:be:8d:00" || || dpid="06:d0:00:23:47:cc:44:00" || || dpid="06:d6:00:21:f7:be:8d:00" || || dpid="06:d6:00:23:47:cc:44:00" || || dpid="06:d6:00:23:47:cc:c4:80" || === !OpenFlow Rspecs for FOAM === '''BBN !OpenFlow Network Resources RSpec ''' {{{ #!xml }}} '''Clemson !OpenFlow Network Resources RSpec ''' {{{ #!xml }}} '''Wisconsin !OpenFlow Network Resources RSpec ''' {{{ #!xml }}} '''NLR !OpenFlow Network Resources RSpec ''' {{{ #!xml }}} == Create Slice and Request Resources == Using the RSpecs that define the required OF flowspace, you can now request OF resources with Omni. First create a slice using your GPO Clearinghouse credentials as defined in the omni_config. Note that the slice name should be meaningful to you and then create a sliver for each resource aggregate. In this example there are 4 OF aggregates (one per site plus one for the GENI core) and 3 compute resource aggregates (1 PG & 2 MyPLC), which maps to creating 7 slivers, and the following commands are executed: {{{ ./src/omni.py createslice 3sites-OF-Exp ./src/omni.py -a https://foam.gpolab.bbn.com:3626/foam/gapi/1 createsliver 3sites-OF-Exp foam_bbn.rspec ./src/omni.py -a https://foam.noc.iu.edu:3626/foam/gapi/1 createsliver 3sites-OF-Exp foam_indiana.rspec ./src/omni.py -a https://foam.wail.wisc.edu:3626/foam/gapi/1 createsliver 3sites-OF-Exp foam_wisc.rspec ./src/omni.py -a https://foam.nlr.net:3626/foam/gapi/1 createsliver 3sites-OF-Exp foam_nlr.rspec ./src/omni.py -a https://pgeni.gpolab.bbn.com/protogeni/xmlrpc/am createsliver 3sites-OF-Exp pg-bbn.rpsec ./src/omni.py -a http://myplc.clemson.edu:12346/ createsliver 3sites-OF-Exp myplc-clemson.rspec ./src/omni.py -a https://wings-openflow-1.wail.wisc.edu:12346/ createsliver 3sites-OF-Exp myplc-wisc.rspec }}} == Run Experiment == Once your flowspace has been opted in you should be able to exchange traffic over the approved flows between the hosts that have been allocated to your experiment. Simply SSH into one of the hosts and ping any of the other hosts to verify connectivity. If you have connectivity between the allocated hosts, you may start your experiment, if you do not have connectivity, contact [mailto:help@geni.net]. Remember to check the expiration time for the flowspace and for each aggregate with the Omni ''sliverstatus'' and to ''renewslice'' and ''renewsliver'' to expand the duration of the resource allocation to match your experiment needs. For an example on how to check ''sliverstatus'' and ''renewslice'' see the [wiki:GENIExperimenter/ExperimentExample#Checkingsliverresourcestatus checking status] section of the other non-OF experiment. == Release Resources == When the experiment is completed you should release the resources by deleting the sliver for each of the Resource Aggregates used in the Experiment. In the example experiment used in this page, the following commands should be issued to release resources: {{{ ./src/omni.py -a https://foam.gpolab.bbn.com:3626/foam/gapi/1 deletesliver 3sites-OF-Exp ./src/omni.py -a https://foam.noc.iu.edu:3626/foam/gapi/1 deletesliver 3sites-OF-Exp ./src/omni.py -a https://foam.wail.wisc.edu:3626/foam/gapi/1 deletesliver 3sites-OF-Exp ./src/omni.py -a https://foam.nlr.net:3626/foam/gapi/1 deletesliver 3sites-OF-Exp ./src/omni.py -a http://myplc.clemson.edu:12346/ deletesliver 3sites-OF-Exp ./src/omni.py -a https://wings-openflow-1.wail.wisc.edu:12346/ deletesliver 3sites-OF-Exp ./src/omni.py -a https://pgeni.gpolab.bbn.com/protogeni/xmlrpc/am deletesliver 3sites-OF-Exp }}} ---- {{{ #!html Email us with any questions and feedback on this page! }}}