Changes between Version 34 and Version 35 of GENIExperimenter/ExperimentExample-OF


Ignore:
Timestamp:
03/21/13 07:10:29 (11 years ago)
Author:
lnevers@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIExperimenter/ExperimentExample-OF

    v34 v35  
    1 '''NOTE: The Wisconsin myPlc has been decommissioned. If you are following this example, please only use the BBN and the Clemson site. We are actively working in updating the instructions'''
    21[[PageOutline(1-2)]]
    32
    43= GENI !OpenFlow Experiment Example 2 =
    54
    6 This page illustrates an !OpenFlow (OF) example for the [wiki:HowToUseOmni Omni How-to] page. OpenFlow is used for the control of the network resources in the GENI backbone and at Meso-scale campus locations.  Experimenters can use GENI resources without learning !OpenFlow. Experimenters can choose to control the network switching fabric in their slices by running an !OpenFlow controller. Many experimenters use existing !OpenFlow 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].
    7 
    8 The experiment in this page uses Omni to reserve resources.  If you are using gcf 2.0 or higher, you '''must''' specify the AM API version option ''' ''-V 1'' ''' for all Omni commands that are executed at !OpenFlow and MyPLC aggregates, these aggregates support AM API V1. If you are using gcf 1.X you do not need to specify ''' ''-V 1'' ''', as the AM API version 1.0 is the default for gcf 1.x packages. The example in this page uses credentials from the GPO ProtoGENI Clearinghouse (pgeni.gpolab.bbn.com) to set up a 3 Meso-scale sites !OpenFlow experiment. The sites are  BBN, Wisconsin and Clemson each with a MyPLC compute resource. If you are interested in using PG resources, see the [http://groups.geni.net/geni/wiki/HelloGENI HelloGENI] experiment page for an !OpenFlow experiment using PG nodes.
    9 
    10 [[Image(OF-FOAM-experiment.jpg)]]
     5This page illustrates an !OpenFlow (OF) example for the [wiki:HowToUseOmni Omni How-to] page. !OpenFlow is used for the control of the network resources in the GENI backbone and at meso-scale campus locations.  Experimenters can use GENI resources without learning !OpenFlow. Experimenters can choose to control the network switching fabric in their slices by running an !OpenFlow controller. Many experimenters use existing !OpenFlow 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].
     6
     7The experiment in this page uses Omni to reserve resources.  If you are using gcf 2.0 or higher, you '''must''' specify the AM API version option ''' ''-V 1'' ''' for all Omni commands that are executed at !OpenFlow and MyPLC aggregates, these aggregates support AM API V1. If you are using gcf 1.X you do not need to specify ''' ''-V 1'' ''', as the AM API version 1.0 is the default for gcf 1.x packages. If you are using gcf 2.2 or higher, then you do not need to worry about specifying a version, omni will determine the version to use for the aggregate. The example in this page uses credentials from the GPO ProtoGENI Clearinghouse (pgeni.gpolab.bbn.com) to set up a 3 meso-scale sites !OpenFlow experiment that includes GPO InstaGENI (IG), Utah ProtoGENI (PG), and RENCI ExoGENI (EG).
     8
     9[[Image(OF-ExperimentExample.jpg)]]
    1110
    1211Omni tools are used to reserve resources in this experiment for each of the site's !FlowVisor !OpenFlow Aggregate Manager (FOAM) and GENI Aggregate Managers. Steps required to set up this !OpenFlow experiment are detailed in this page:
     
    2120    8. [wiki:GENIExperimenter/ExperimentExample-OF#a8.ReleaseResources Release Resources]
    2221
    23 The IP Subnet reservation is required for this example experiment because MyPLC resources are used.  Also, FOAM sites must be federated in order to trust a Clearinghouse. This is an !OpenFlow administrator task that must take place before any of the user !OpenFlow operations can take place.
     22The IP Subnet reservation is required for use by the resources allocated in this experiment.  Also, FOAM sites must be federated in order to trust a Clearinghouse. This is an !OpenFlow administrator task that must take place before any of the user !OpenFlow operations can take place.
    2423
    2524== 1. Authentication and Omni tools configuration ==
    2625
    27 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.
    28 
    29 ''Note:'' You can use the ''aggregate_nicknames'' defined above to specify an aggregate for Omni. The Omni command argument '' "-a !http://myplc.gpolab.bbn.com:12346/" '' can be replaced by '' "-a plc-bbn" '' in any Omni command used below.
    30 
    31 A complete 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 [mailto:help@geni.net].
     26This 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. This example uses Omni ''aggregate_nicknames'' which simplify command arguments, so that '' "-a !https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0" '' is simply replaced by '' "-a pg-utah" ''.  Known aggregates have ''aggregate_nicknames'' delivered in the omni_configuration file.
     27
     28A list of aggregate managers is found at [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 [mailto:help@geni.net].
    3229
    3330== 2. Reserve GENI IP subnet ==
    3431
    35 In the Meso-scale network a layer 3 experiment requires its own separate IP subnet in order to control all traffic without interfering with traffic from other experiments. Before you start this experiment, you need to request an IP subnet from the [mailto:gpo-infra@geni.net] mail list along with a duration for the subnet reservation. To view the current list of subnets and their current allocation see the [http://groups.geni.net/geni/wiki/NetworkCore/SubnetReservations GENI Network Core Subnet] page. You do not need to request a specific address, one will be chosen for you.
     32In the meso-scale network a layer 3 experiment requires its own separate IP subnet in order to control all traffic without interfering with traffic from other experiments. Before you start this experiment, you need to request an IP subnet from the [mailto:gpo-infra@geni.net] mail list along with a duration for the subnet reservation. To view the current list of subnets and their current allocation see the [http://groups.geni.net/geni/wiki/NetworkCore/SubnetReservations GENI Network Core Subnet] page. You do not need to request a specific address, one will be chosen for you.
    3633
    3734
    3835== 3. Determine Resources Availability ==
    3936
    40 Each of the 3 sites requires an !OpenFlow RSpec and a compute resource RSpec. Also, an !OpenFlow RSpec is required for the GENI Core (NLR in this example).
    41 To find out what resources are available use Omni tools to get a list of available resources from the available aggregates.  Following is a list of MyPLC and FOAM aggregates available in the Meso-scale network:
    42 
    43 ||'''Site'''|| '''MyPLC Aggregate URL'''                    || '''MyPLC Aggregate Nickname''' || ''' FOAM Aggregate URL '''                          ||''' FOAM Aggregate Nickname '''  ||
    44 ||    BBN   || !http://myplc.gpolab.bbn.com:12346/          || plc-bbn                        || !https://foam.gpolab.bbn.com:3626/foam/gapi/1       || of-bbn                          ||
    45 || Clemson  || !http://myplc.clemson.edu:12346/             || plc-clemson                    || !https://foam.clemson.edu:3626/foam/gapi/1          || of-clemson                      ||
    46 || NLR      ||                                              ||                                || !https://foam.nlr.net:3626/foam/gapi/1              || of-nlr                          ||
    47 ||Wisconsin ||!https://wings-openflow-1.wail.wisc.edu:12346/|| plc-wisconsin                  || !https://foam.wail.wisc.edu:3626/foam/gapi/1        || of-wisconsin                    ||
    48 
    49 
    50 The experiment captured in this page uses the BBN, Clemson, Wisconsin and NLR aggregates.  For a complete list of available GENI aggregates see the  [http://groups.geni.net/geni/wiki/GeniAggregate GENI Aggregates] page.  Also, this experiment uses ''aggregate_nicknames'' defined in the omni_config to replace the aggregate URLs used by the Omni commands.
     37Each of the 3 sites requires an !OpenFlow RSpec and a compute resource RSpec. Also, an !OpenFlow RSpec is required for the GENI Core (NLR  and Internet2 in this example). To find out what resources are available use Omni tools to get a list of available resources from the available aggregates.  Following is the list of Compute and FOAM aggregates that are used in this example:
     38 
     39||'''Site'''|| '''Compute Resource Aggregate URL'''                      || '''Compute Resource Aggregate Nickname''' || ''' FOAM Aggregate URL '''                             ||''' FOAM Aggregate Nickname '''  ||
     40||GPO IG    || !http://instageni.gpolab.bbn.com/protogeni/xmlrpc/am/2.0  || ig-gpo                                    || !https://foam.instageni.gpolab.bbn.com:3626/foam/gapi/1|| ig-of-gpo            ||
     41||GPO Site  ||                                                           ||                                           || !https://foam.gpolab.bbn.com:3626/foam/gapi/1          || of-gpo               ||
     42||UEN Regional||                                                         ||                                           || !https://foamyflow.chpc.utah.edu:3626/foam/gapi/1      || of-uen               ||
     43||Utah/UEN Regional|| !https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0|| pg-utah                                 || !https://foam.utah.geniracks.net:3626/foam/gapi/1      || of-uen               ||
     44||NLR       ||                                                           ||                                           || !https://foam.nlr.net:3626/foam/gapi/1                 || of-nlr               ||
     45||Internet2 ||                                                           ||                                           || !https://foam.net.internet2.edu:3626/foam/gapi/1       || of-i2                ||
     46||RENCI EG  ||!https://rci-hn.exogeni.net:11443/orca/xmlrpc              || eg-renci                                  || !https://rci-hn.exogeni.net:3626/foam/gapi/1           || eg-of-renci          ||
     47
     48
     49For a complete list of available GENI aggregates see the  [http://groups.geni.net/geni/wiki/GeniAggregate GENI Aggregates] page.  Also, this experiment uses ''aggregate_nicknames'' defined in the omni_config to replace the aggregate URLs used by the Omni commands.
    5150
    5251== 4. Define Compute Resources RSpecs ==
    5352
    54 To write a MyPLC RSpec you must determine which nodes will be used for the experiment at each site. This section describes this process, which is comprised of the following steps: 
    55 
    56  Step 1. Collect listresources from all MyPLC Aggregates. [[BR]]
    57  Step 2. Determine the MyPLC host to be reserved. [[BR]]
    58  Step 3. Generate the MyPLC Rspecs. [[BR]]
    59 
    60 === Step 1. Collect listresources from all MyPLC Aggregates ===
    61 
    62 As a first step, the experimenter determines the available compute resources at each site. Following are the Omni commands issued to get the advertisements of available compute resources from the BBN, Clemson and Wisconsin MyPLC aggregates:
    63 
    64 {{{
    65  $ ./src/omni.py -a plc-bbn -V 1 listresources -t ProtoGENI 2 -o             # generates rspec-myplc-gpolab-bbn-com-12346-.xml
    66  $ ./src/omni.py -a plc-clemson -V 1 listresources -t ProtoGENI 2 -o               # generates rspec-myplc-clemson-edu-12346-.xml
    67  $ ./src/omni.py -a plc-wisconsin listresources -V 1 -t ProtoGENI 2 -o  # generates rspec-wings-openflow-1-wail-wisc-edu-12346-.xml
    68 }}}
    69 
    70 The Omni commands above used the following options: [[BR]]
    71 ''-t'' to request the advertisement in V2 RSpec format, the default MyPLc advertisement is in SFA format. [[BR]]
    72 ''-o'' argument to get the listresources output into advertisement RSpec files, which are all attached to this page as a reference.  [[BR]]
    73 
    74 === Step 2. Determine the MyPLC hosts to be reserved ===
    75 
    76 From each site's advertisement RSpecs generated above, we choose one host to use in the experiment. Detailed instructions for defining a MyPLC V2 RSpec are available [http://groups.geni.net/geni/wiki/GEC12OmniTutorial/Tutorial#CreatingPlanetLabRequestRSpecsfromAdvertisementRSpecs here].   This sections shows the MyPLC node details for each site:
    77 
    78 ==== BBN MyPLC Host ====
    79 At the BBN MyPLC, we choose the host ''navis'':
    80 {{{
    81    <node component_id="urn:publicid:IDN+plc:gpolab:gpolab+node+navis.gpolab.bbn.com"
    82         component_manager_id="urn:publicid:IDN+plc:gpolab+authority+am"
    83         component_name="navis.gpolab.bbn.com" client_id="navis" exclusive="false">
    84         <sliver_type name="plab-vnode">
    85         </sliver_type>
    86     </node>
    87 }}}
    88 
    89 ==== Clemson MyPLC Host ====
    90 At the Clemson MyPLC, we choose the host ''planetlab4'':
    91 {{{
    92     <node component_id="urn:publicid:IDN+plc:cu+node+planetlab4.clemson.edu"
    93         component_manager_id="urn:publicid:IDN+plc+authority+am"
    94         component_name="planetlab4.clemson.edu" client_id="planetlab4" exclusive="false">
    95         <sliver_type name="plab-vnode">
    96         </sliver_type>
    97     </node>
    98 }}}
    99 
    100 ==== Wisconsin MyPLC Host ====
    101 At the Wisconsin MyPLC, we choose the host ''wings-openflow-2'':
    102 {{{
    103     <node component_id="urn:publicid:IDN+plc:wisc+node+wings-openflow-2.wail.wisc.edu"
    104         component_manager_id="urn:publicid:IDN+plc+authority+am"
    105         component_name="wings-openflow-2.wail.wisc.edu" client_id="wings-of2" exclusive="false">
    106         <sliver_type name="plab-vnode">
    107         </sliver_type>
    108     </node>
    109 
    110 }}}
    111 
    112 === Step 3. Generate the MyPLCs RSpecs ===
    113 
    114 To generate the MyPLC RSpec, we combine the request V2 RSpec template below with the node details in step 2.  Here is the RSpec V2 template:
    115 {{{
    116 #!xml
    117 <?xml version="1.0" ?>
    118 <!-- Resources at AM:
    119         URN: unspecified_AM_URN
    120         URL: http://myplc.gpolab.bbn.com:12346/
    121  -->
    122 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    123         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    124         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    125         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    126         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    127         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    128 
    129         <!-- Insert MyPLC node details here -->
    130    
    131 </rspec>
    132 }}}
    133 
    134 Following are the complete MyPLC RSpecs for each site:
    135 
    136 '''BBN MyPLC Compute Resource RSpec '''
    137 {{{
    138 #!xml
    139 <?xml version="1.0" ?>
    140 <!-- Resources at AM:
    141         URN: unspecified_AM_URN
    142         URL: http://myplc.gpolab.bbn.com:12346/
    143  -->
    144 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    145         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    146         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    147         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    148         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    149         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    150    <node component_id="urn:publicid:IDN+plc:gpolab:gpolab+node+navis.gpolab.bbn.com"
    151         component_manager_id="urn:publicid:IDN+plc:gpolab+authority+am"
    152         component_name="navis.gpolab.bbn.com" client_id="navis" exclusive="false">
    153         <sliver_type name="plab-vnode">
    154         </sliver_type>
    155     </node>   
    156 </rspec>
    157 }}}
    158 
    159 ''' Clemson MyPLC Compute Resources RSpec'''
    160 {{{
    161 #!xml
    162 <?xml version="1.0" ?>
    163 <!-- Resources at AM:
    164         URN: unspecified_AM_URN
    165         URL: http://myplc.gpolab.bbn.com:12346/
    166  -->
    167 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    168         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    169         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    170         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    171         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    172         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    173     <node component_id="urn:publicid:IDN+plc:cu+node+planetlab4.clemson.edu"
    174         component_manager_id="urn:publicid:IDN+plc+authority+am"
    175         component_name="planetlab4.clemson.edu" client_id="planetlab4" exclusive="false">
    176         <sliver_type name="plab-vnode">
    177         </sliver_type>
    178     </node>   
    179 </rspec>
    180 }}}
    181 
    182 
    183 '''Wisconsin MyPLC Compute Resources RSpec'''
    184 {{{
    185 #!xml
    186 <?xml version="1.0" ?>
    187 <!-- Resources at AM:
    188         URN: unspecified_AM_URN
    189         URL: http://myplc.gpolab.bbn.com:12346/
    190  -->
    191 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    192         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    193         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    194         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    195         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    196         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    197     <node component_id="urn:publicid:IDN+plc:wisc+node+wings-openflow-2.wail.wisc.edu"
    198         component_manager_id="urn:publicid:IDN+plc+authority+am"
    199         component_name="wings-openflow-2.wail.wisc.edu" client_id="wings-of2" exclusive="false">
    200         <sliver_type name="plab-vnode">
    201         </sliver_type>
    202     </node>
    203 </rspec>
    204 }}}
    205 
    206 The MyPLC plnodes are pre-configured to use pre-defined addresses; MyPLC doesn't allow experimenters to change that configuration. When the experiment is running you will need to choose the appropriate interface for your experiment traffic based on the IP subnet assigned to you by the GPO infrastructure group as described in the section [wiki:GENIExperimenter/ExperimentExample-OF#a2.ReserveGENIIPsubnet above].
     53If you are interested in finding out available resources, you can execute the following commands at the each of the compute aggregates :
     54{{{
     55 $ omni.py -a ig-gpo listresources -o            # generates rspec-instageni-gpolab-bbn-com-protogeniv2.xml
     56 $ omni.py -a pg-utah listresources -o           # generates rspec-www-emulab-net-protogeniv2.xml
     57 $ omni.py -a eg-renci listresources -o          # generates rspec-rci-hn-exogeni-net-11443-orca.xml
     58}}}
     59
     60Note the ''-o'' option sends the Advertisement RSpec output to a file.
     61
     62This experiment requests VM compute resources that are not tied to any specific compute component in the aggregate (aka un-bound). Requests for un-bound resources are not tied to any specific component at the aggregate. The aggregate decides which compute component to use for the compute resource request.  No checking of resources is needed, whatever resources are available will be assigned.  Following are the three Compute Resource RSpecs used:
     63
     64 - GPO IG request RSpec: [http://groups.geni.net/geni/browser/trunk/of-example/compute-ig-gpo.rspec compute-ig-gpo.rspec]
     65 - Utah PG request RSpec: [http://groups.geni.net/geni/browser/trunk/of-example/compute-pg-utah.rspec compute-pg-utah.rspec]
     66 - RENCI EG request RSpec: [http://groups.geni.net/geni/browser/trunk/of-example/compute-eg-renci.rspec compute-eg-renci.rspec]
     67
     68
     69== 5. Define !OpenFlow Network Resources RSpecs ==
     70
     71To write an !OpenFlow RSpec you must determine the end-to-end path that will be used for the experiment. This section describes this process, which is comprised of the following steps:
     72
     73     - Collect listresources from all FOAM Aggregates.  Note that these !OpenFlow advertisement RSpecs provide insight into all resources at the aggregate, but do not provide any insight into whether they are available.
     74     - Determine addresses and ports, and define site specific !OpenFlow packet filter rules.
     75     - Using guidelines from the [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs#WritingOpenFlowv3requestrspecs Writing OF V3 RSpec] page merge the information from Step 2 to generate the FOAM request RSpecs. 
     76
     77Each of the above steps is covered in detail below:
     78
     79=== Collect listresources from all FOAM Aggregate ===
     80
     81To determine the resource definitions to use in this experiment, we check resources on each FOAM aggregates in the experiment.
     82The GPO Site uses 2 FOAM aggregates in the experiment, the Site's FOAM aggregate and the InstaGENI FOAM aggregates:
     83{{{
     84 $ omni.py -a of-gpo -V 1 listresources -o       # generates rspec-foam-gpolab-bbn-com.xml
     85 $ omni.py -a ig-of-gpo -V 1 listresources -o    # generates spec-foam-instageni-gpolab-bbn-com.xml
     86}}}
     87The NLR Core FOAM aggregate:
     88{{{
     89 $ omni.py -a of-nlr -V 1 listresources -o       # generates rspec-foam-nlr-net.xml
     90}}}
     91The Internet2 Core FOAM aggregate:
     92{{{
     93 $ omni.py -a of-i2 -V 1 listresources -o        # generates  rspec-foam-net-internet2-edu.xml
     94}}}
     95The Utah PG site uses the UEN FOAM aggregates:
     96{{{
     97 $ omni.py -a of-uen -V 1 listresources -o        # generates rspec-foamyflow-chpc-utah-edu.xml
     98}}}
     99The RENCI FOAM Aggregate:
     100{{{
     101 $ omni.py -a eg-of-renci -V 1 listresources -o          # rspec-rci-hn-exogeni-net.xml
     102}}}
     103
     104The output Advertisement RSpec files generated by the ''-o'' capture the switch and the port information to be used in the FOAM request RSpec. 
     105
     106=== Determine site specific !OpenFlow details ===
     107
     108This sections shows you how to determine the site specific !OpenFlow RSpec details by walking through the information gathering process. To determine which !OpenFlow resources to use, go to the [http://groups.geni.net/geni/wiki/GeniAggregate GeniAggregate] page and select the !OpenFlow Aggregate links for GPO Lab, PG Utah, and RENCI ExoGENI. Each of these !OpenFlow Aggregate pages contain a site diagram. The !OpenFlow site diagrams show ports, DPIDs, and hosts mapping for the site's !OpenFlow switch, which you will have to include in the RSpec.  In addition you also have to define how the host traffic will be handled by !OpenFlow  by defining packet filters.
     109 
     110Now, let's map the nodes in the compute resource RSpecs to the appropriate !OpenFlow switch ports and determine how they connect to the GENI CORE network VLAN 3715.
     111
     112==== GPO !OpenFlow Aggregates ====
     113
     114To define the !OpenFlow request RSpec for the GPO site we need to consider the compute resource we selected, one InstaGENI Node.  We then determine how the InstaGENI !OpenFlow switch is connected to the GPO site !OpenFlow switch, then we find the Data Path IDentifier (DPID) for the switch VLAN 1750 which is used at every meso-scale site for InstaGENI resources to access the backbone !OpenFlow VLANs, and finally we determine the path required to connects to the network core !OpenFlow VLAN 3715.   All this information can be found in the [http://groups.geni.net/geni/wiki/GeniAggregate/GpoLabInstaGENIOpenFlow GPOLab InstaGENI OpenFlow Aggregate] page. Below is a diagram of the GPO Site FOAMs with the relevant request RSpec details highlighted:
     115
     116[[Image(GPOLab-OF-InstaGENI.jpg)]]
     117
     118The GPO !OpenFlow Aggregate image above shows some the information required for the !OpenFlow RSpec such as the ports assignments:
     119   * The InstaGENI rack is connected to port name 16 of the !OpenFlow switch named ''poblano''
     120   * The InstaGENI VM servers are on ports 1 and 4.
     121   * The GPO Site OF switch poblano uses port 3 to map the shared meso-scale VLAN 1750 to the Backbone OF VLAN 3715.
    207122 
    208 
    209 == 5. Define OpenFlow Network Resources RSpecs ==
    210 
    211 To write an !OpenFlow RSpec you must determine the end-to-end path that will be used for the experiment. This section describes this process, which is comprised of the following steps:
    212 
    213  Step 1. Collect listresources from all FOAM Aggregates.  Note that these !OpenFlow advertisement RSpecs provide insight into all resources at the aggregate, but do not provide any insight into whether they are available. [[BR]]
    214 
    215  Step 2. Review [http://groups.geni.net/geni/wiki/GeniAggregate GeniAggregate] to determine how each experiment MyPLC host maps to the site's !OpenFlow switch. Determine addresses and ports, and define site specific !OpenFlow packet filter rules.  [[BR]]
    216 
    217  Step 3. Using guidelines from the [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs#WritingOpenFlowv3requestrspecs Writing OF V3 RSpec] page merge the information from Step 2 to generate the request RSpecs.  [[BR]]
    218 
    219 
    220 Each of the above steps is covered in detail below:
    221 
    222 
    223 === Step 1: Collect listresources from all FOAM Aggregate ===
    224 
    225  1. Clemson FOAM aggregate:
    226 {{{
    227  $ ./src/omni.py -a of-clemson -V 1 listresources -o    # generates output file rspec-foam-clemson-edu-3626-foam-gapi-1.xml
    228 }}}
    229  2. Wisconsin FOAM aggregate:
    230 {{{
    231  $ ./src/omni.py -a of-wisconsin -V 1 listresources -o  # generates rspec-foam-wail-wisc-edu-3626-foam-gapi-1.xml
    232 }}}
    233  3. BBN FOAM aggregate:
    234 {{{
    235  $ ./src/omni.py -a of-bbn -V 1 listresources -o # generates rspec-foam-gpolab-bbn-com-3626-foam-gapi-1.xml
    236 }}}
    237  4. NLR !OpenFlow Core FOAM aggregate:
    238 {{{
    239  $ ./src/omni.py -a of-nlr -V 1 listresources -o        # generates rspec-foam-nlr-net-3626-foam-gapi-1.xml
    240 }}}
    241 
    242 The Omni commands above used the ''-o'' argument to get the listresources output into advertisement RSpec files, which are all attached to this page as a reference. The output Advertisement RSpec files provide the switch and the port information to be used in the !OpenFlow request RSpec. 
    243 
    244 
    245 === Step 2: Determine site specific !OpenFlow details ===
    246 
    247 This sections shows you how to determine the site specific !OpenFlow RSpec details by walking through the information gathering process. To determine which !OpenFlow resources to use, go to the [http://groups.geni.net/geni/wiki/GeniAggregate GeniAggregate] page and select the !OpenFlow Aggregate links for BBN, Clemson and Wisconsin. Each of these !OpenFlow Aggregate pages contain a site diagram. The !OpenFlow site diagrams show ports, DPIDs, and hosts mapping for the site's !OpenFlow switch, which you will have to include in the RSpec.  In addition you also have to define how the host traffic will be handled by !OpenFlow  by defining packet filters.
    248  
    249 Now, let's map the 3 nodes we chose in the compute resource RSpecs to the appropriate !OpenFlow switch ports and determine how they connect to the GENI CORE network VLAN 3715.
    250 
    251 ==== BBN !OpenFlow Aggregate ====
    252 
    253 To define the !OpenFlow request RSpec for the BBN site we need to consider the compute resource we selected, which is the MyPLC node navis.gpolab.bbn.com.  We then determine how the node ''navis'' is connected to the !OpenFlow switch, then we find the Data Path IDentifier (DPID) for the switch VLAN 1750 which is used at every meso-scale site for MyPLC resources to access the backbone !OpenFlow VLANs, and finally we determine the path required to connects to the network core !OpenFlow VLAN 3715.   All this information can be found in the [http://groups.geni.net/geni/wiki/GeniAggregate/GpoLabOpenFlow BBN OF Aggregate] diagram, which is shown below with the relevant BBN !OpenFlow request RSpec details highlighted:
    254 
    255 [[Image(BBNOFAggregateResources.jpg)]]
    256 
    257 The BBN !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    258    * Host ''navis.bbn.com'' is connected to port name 32 of the !OpenFlow switch named ''habanero''
    259    * !OpenFlow switch ''habanero'' has a DPID of ''06:d6:00:24:a8:c4:b9:00'' for VLAN 1750.
    260    * !OpenFlow switch ''habanero'' uses port name 47 to connect to port name 20 on the !OpenFlow switch ''poblano''.
     123The [http://groups.geni.net/geni/wiki/GeniAggregate/GpoLabInstaGENIOpenFlow GPOLab InstaGENI !OpenFlow Aggregate] page also shown the DPIDs for the two GPO !OpenFlow switches. DPIDs are also listed in the listresource output.
    261124   * !OpenFlow switch ''poblano'' has a DPID of ''06:d6:00:12:e2:b8:a5:d0'' for VLAN 1750.
    262    * VLAN 1750 is mapped to the Core VLAN 3715 on ''poblano'' port name 3.
    263 
    264 The BBN ''habanero'' !OpenFlow switch diagram states that you must add 24 to the port name to determine the port number to use in the RSpec. You do not need to worry about this! The mapping of 'port name' to 'port number' is now done for you by the FOAM aggregate. Simply look for the port names listed above in the listresources output and "borrow" the syntax from the listresources associated to each DPID.  Now we know the site specific information and can start to define the BBN !OpenFlow resource request RSpec details.
    265 
    266 These are the RSpec lines that define the ports on habanero:
    267 {{{
    268 
    269   <openflow:group name="bbn-1750-nodes">
    270     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:24:a8:c4:b9:00"     
    271                        component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    272                        dpid="06:d6:00:24:a8:c4:b9:00">
    273      <openflow:port name="32" num="56"/>
    274      <openflow:port name="47" num="71"/>
    275    </openflow:datapath>
    276  </openflow:group>
    277 
    278 }}}
    279 
    280 These are the RSpec lines that define the ports on poblano:
    281 
    282 {{{
    283  <openflow:group name="bbn-1750-3715">
    284      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
    285                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    286                         dpid="06:d6:00:12:e2:b8:a5:d0">
    287        <openflow:port num="3"/>
    288         <openflow:port num="20"/>
    289       </openflow:datapath>
    290  </openflow:group>
    291 
    292 }}}
    293 
    294 Each !OpenFlow RSpec must also include a packet filter definition to describe how the host traffic is to be handled for the experiment.  Following is an example packet filter template:
     125   * !OpenFlow switch for InstaGENI has DPID of ''06:d6:84:34:97:c6:c9:00'' for VLAN 1750.
     126 
     127Now we know the site specific information and can start to define the GPO !OpenFlow resource request RSpecs.
     128
     129''' GPO Site !OpenFlow RSpec''':  These are the RSpec lines that define the datapath on poblano, the GPO site !OpenFlow site switch:
     130{{{
     131    <openflow:group name="gpo-1750">
     132      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
     133                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am">
     134         <openflow:port name="GBE0/7" num="7"/> <!-- to NLR 2650 -->
     135         <openflow:port name="GBE0/16" num="16"/>  <!-- to BBN InstaGENI rack -->
     136      </openflow:datapath>
     137    </openflow:group>
     138}}}
     139The GPO Site !OpenFlow request RSpec will also include a packet filter definition to describe how the host traffic is to be handled for the experiment.  Following is an example packet filter template:
    295140{{{
    296141    <openflow:match>
    297       <openflow:use-group name="group-name" />
    298       <openflow:packet>
    299         <openflow:dl_type value="0x800,0x806"/>
    300         <openflow:nw_dst value="10.42.XX.0/24"/>
    301         <openflow:nw_src value="10.42.XX.0/24"/>
    302       </openflow:packet>
    303     </openflow:match>
    304 }}}
    305  ''Note:'' The ''openflow:use-group'' section of the !OpenFlow RSpec defines the traffic characteristics allowed for the experiment. [[BR]]
    306  ''Note:'' The ''group-name'' should match the ''openflow:group'' specific to the !OpenFlow switch [[BR]]
    307  ''Note:''  The address ''10.42.XX.0/24'' was requested as described in the section [wiki:GENIExperimenter/ExperimentExample-OF#a2.ReserveGENIIPsubnet above]. Your RSpec will use the subnet you reserved.
    308 
    309 For a detailed look at !OpenFlow configuration parameters, see the [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs/Spec OF V3 RSpec] page. On this page you will also find the list of available [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs/Spec#Filterelements packet header fields] that can be used to filter the !OpenFlow traffic.
    310 
    311 Let's modify the packet filter definition above so it applies to the BBN !OpenFlow resources:
    312 {{{
    313    <openflow:match>
    314 
    315       <openflow:use-group name="bbn-1750-nodes" />
    316       <openflow:use-group name="bbn-1750-3715" />
     142      <openflow:use-group name="gpo-1750" />
    317143      <openflow:packet>
    318144        <openflow:dl_type value="0x800,0x806"/>
     
    320146        <openflow:nw_src value="10.42.11.0/24"/>
    321147      </openflow:packet>
    322 
    323148    </openflow:match>
    324149}}}
    325150
    326 The BBN !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
    327 
    328 ==== Clemson !OpenFlow Aggregate ====
    329 
    330 To define the !OpenFlow RSpec for the Clemson site review the information in the [http://groups.geni.net/geni/wiki/GeniAggregate/ClemsonOpenFlow Clemson OF Aggregate] diagram.  The compute resource used is the MyPLC node ''planetlab4.clemson.edu''. The following image highlights the the information required from the Clemson !OpenFlow Aggregate site diagram:
    331 
    332 [[Image(ClemsonOFAggregateResources.jpg)]]
    333 
    334 The Clemson !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    335  * Host ''planetlab4.clemosn.edu'' is connected to port name ''39''
    336  * The !OpenFlow switch had a DPID of ''06:d6:00:26:f1:3f:e4:80''
    337  * The site !OpenFlow VLAN 1750 is connected to backbone VLAN 3715 on port name ''43''
    338 
    339 These are the lines from the Advertisement that should be used in the !OpenFlow request RSpec:
    340 {{{
    341 
    342   <openflow:group name="clemson-1750-3715">
    343 
    344      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam+datapath+06:d6:00:26:f1:3f:e4:80"
    345                     component_manager_id="urn:publicid:IDN+openflow:foam:foam+authority+am" dpid="06:d6:00:26:f1:3f:e4:80">
    346         <openflow:port name="39" num="39"/>
    347         <openflow:port name="43" num="43"/>
    348       </openflow:datapath>
    349   </openflow:group>
    350 }}}
    351 
    352 In addition packet filters must defined to allow traffic for the IP subnet range reserved for the experiment. Following is the packet filter definitions for Clemson:
     151 ''Note:'' The ''openflow:use-group'' section of the !OpenFlow RSpec defines the traffic characteristics allowed for the experiment. [[BR]]
     152 ''Note:'' The ''group-name'' should match the ''openflow:group'' specific to the !OpenFlow switch [[BR]]
     153 ''Note:''  The address ''10.42.11.0/24'' was requested as described in the section [wiki:GENIExperimenter/ExperimentExample-OF#a2.ReserveGENIIPsubnet above]. Your RSpec will use the subnet you reserved.
     154
     155For a detailed look at !OpenFlow configuration parameters, see the [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs/Spec OF V3 RSpec] page. On this page you will also find the list of available [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs/Spec#Filterelements packet header fields] that can be used to filter the !OpenFlow traffic.
     156
     157''' GPO InstaGENI !OpenFlow RSpec''':  These are the RSpec lines that define the datapath for the GPO InstaGENI !OpenFlow switch:
     158{{{
     159 <openflow:group name="ig-gpo-1750">
     160      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+datapath+06:d6:84:34:97:c6:c9:00"
     161                       component_manager_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+authority+am"
     162                       dpid="06:d6:84:34:97:c6:c9:00">
     163      <openflow:port name="E4" num="100"/><!-- GPO InstaGENI VM Server PC2 -->
     164      <openflow:port name="E1" num="97"/> <!-- GPO InstaGENI VM server PC1 -->
     165      <openflow:port name="E24" num="120"/> <!-- GPO InstaGENI rack connection to GPO Site Switch-->
     166      <openflow:port name="E23" num="119"/> <!-- GPO InstaGENI Campus Resources -->
     167     </openflow:datapath>   
     168    </openflow:group>
     169
     170}}}
     171The GPO InstaGENI !OpenFlow RSpec also includes a packet filter definition for traffic characteristics allowed:
     172{{{
     173    <openflow:match>
     174      <openflow:use-group name="ig-gpo-1750" />
     175      <openflow:packet>
     176        <openflow:dl_type value="0x800,0x806"/>
     177        <openflow:nw_dst value="10.42.11.0/24"/>
     178        <openflow:nw_src value="10.42.11.0/24"/>
     179      </openflow:packet>
     180    </openflow:match>
     181}}}
     182
     183The GPO !OpenFlow request RSpecs will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
     184
     185==== PG Utah !OpenFlow Aggregate ====
     186
     187To define the !OpenFlow RSpec for the PG Utah site review the information in the [http://groups.geni.net/geni/wiki/GeniAggregate/UtahUEN-OpenFlow Utah UEN OF Aggregate] page.  This experiment uses 1 one PG VM on the Meso-scale shared-vlan 1750.  The PG Node will use the UEN FOAM aggregate to connect to the GENI network.  As detailed in the [http://groups.geni.net/geni/wiki/GeniAggregate/UtahUEN-OpenFlow#UENOpenFlowSwitchPortList UEN OpenFlow Switch Port List] section, the UEN !OpenFlow switch only uses two ports:
     188 * Port 21 connect to the PG aggregation switch which connects both Utah PG and Utah InstaGENI
     189 * Port 22 connects to the Internet2 !OpenFlow Switch in Los Angeles.
     190
     191This very simple topology is captured in the diagram below which illustrates the ports and !OpenFlow datapath:
     192
     193[[Image(UEN-OF-PG-Aggregate.jpg)]]
     194
     195The UEN !OpenFlow switch DPID can be found by executing an omni listresources; DPID is ''06:d6:ac:16:2d:f5:2d:00''.
     196
     197These are the settings for the datapath in the UEN OpenFlow request RSpec:
     198{{{
     199   <openflow:group name="uen-1750">
     200    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+datapath+06:d6:ac:16:2d:f5:2d:00"
     201        component_manager_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+authority+am"
     202         dpid="06:d6:ac:16:2d:f5:2d:00">
     203        <openflow:port name="A21" num="21"/>
     204        <openflow:port name="A22" num="22"/>
     205      </openflow:datapath>
     206    </openflow:group>
     207 
     208}}}
     209
     210This is the packet filter definitions for the IP subnet range reserved for this experiment:
    353211{{{
    354212   <openflow:match>
    355 
    356       <openflow:use-group name="clemson-1750-3715" />
    357 
     213      <openflow:use-group name="uen-1750" />
    358214      <openflow:packet>
    359215        <openflow:dl_type value="0x800,0x806"/>
     
    361217        <openflow:nw_src value="10.42.11.0/24"/>
    362218      </openflow:packet>
    363 
    364219    </openflow:match>
    365220}}}
    366221
    367 The Clemson !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
    368 
    369 ==== Wisconsin !OpenFlow Aggregate ====
    370 
    371 To define the !OpenFlow RSpec for the Wisconsin site review the [http://groups.geni.net/geni/wiki/GeniAggregate/WisconsinOpenFlow Winsconsin OF Aggregate] diagram.  The compute resource used is the MyPLC node ''wings-openflow-2.wail.wisc.edu''.  The [http://groups.geni.net/geni/wiki/GeniAggregate/WisconsinOpenFlow Winsconsin OF Aggregate] diagram only shows the MAC address for the !OpenFlow switch, to determine the DPID simply combine the hexadecimal value for 1750 (06d6) and the MAC address of the switch (00:23:47:CC:44:00) to create the DPID (06:d6:00:23:47:CC:44:00).  The following image highlights the the information required from the Wisconsin !OpenFlow Aggregate site diagram:
    372 
    373 [[Image(WisconsinOFAggregateResources.jpg)]]
    374 
    375 
    376 The Wisonsin !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    377  * Host ''wings-openflow-2.wail.wisc.edu'' is connected to port name ''22''.
    378  * The !OpenFlow switch with the hosts has a DPID of ''06:d6:00:23:47:cc:44:00''
    379  * The !OpenFlow switch with the hosts uses port name ''1'' to connect to a second switch where VLAN 1750 is mapped to 3715.
    380  * The second !OpenFlow switch has a DPID os ''06:d6:00:21:f7:be:8d:00''.
    381  * The second !OpenFlow switch uses port name''C3'' to map VLAN 1750 to 3715. 
    382 
    383 Ignore the diagram instructions to add 48 to the C port name on the second !OpenFlow switch, this is done for you by FOAM. Simply look for the port names in the listresources output, and borrow the syntax from the listresources associated to each DPID.
    384 
    385 
    386 These are the lines from the Wisconsin !OpenFlow Advertisement that should be used in the !OpenFlow request RSpec:
    387 {{{
    388     <openflow:group name="wisconsin-nodes-1750">
    389       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+06:d6:00:23:47:cc:44:00"
    390                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+authority+am">
    391          <openflow:port name="1" num="1"/>
    392          <openflow:port name="22" num="22"/>
    393 
    394       </openflow:datapath>
    395     </openflow:group>
    396 
    397     <openflow:group name="wisconsin-1750-3715">
    398       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+06:d6:00:21:f7:be:8d:00"
    399                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+authority+am">
    400         <openflow:port name="3" num="3"/>
    401         <openflow:port name="C3" num="51"/>
    402       </openflow:datapath>
    403     </openflow:group>
    404 }}}
    405 
    406 
    407 In addition packet filters are defined to allow traffic for the IP subnet range reserved for the experiment. Following is the packet filter definition for the Wisconsin !OpenFlow resources:
     222The Utah UEN !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
     223
     224
     225==== RENCI !OpenFlow Aggregate ====
     226
     227To define the !OpenFlow RSpec for the RENCI ExoGENI site we review the omni listresources which shows that 51 ports are connected to support the sites VM Servers, in order to simplify this experiment RSpec we will simply request all ports even though we will only use one compute resource on shared-vlan 1750.   From the omni listresources  we find that the RENCI !OpenFlow switch DPID is  ''00:01:08:17:f4:b3:5b:00'' and we will not specify ports to simply RSpec. Additionally RENCI is directly connected to NLR Atlanta.  These are the lines from the RENCI ExoGENI !OpenFlow Advertisement that should be used in the !OpenFlow request RSpec:
     228{{{
     229    <openflow:group name="eg-renci-1750">
     230    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+datapath+00:01:08:17:f4:b3:5b:00"
     231        component_manager_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+authority+am" dpid="00:01:08:17:f4:b3:5b:00" >
     232     </openflow:datapath>
     233    </openflow:group>
     234}}}
     235
     236
     237In addition packet filters are defined to allow traffic for the IP subnet range reserved for the experiment. Following is the packet filter definition for the RENCI ExoGENI !OpenFlow resources:
    408238{{{
    409239    <openflow:match>
    410 
    411       <openflow:use-group name="wisconsin-nodes-1750" />
    412       <openflow:use-group name="wisconsin-1750-3715" />
    413 
     240      <openflow:use-group name="eg-renci-1750" />
     241      <openflow:packet>
     242        <openflow:dl_vlan value="1750"/>
     243        <openflow:dl_type value="0x800,0x806"/>
     244        <openflow:nw_dst value="10.42.11.0/24"/>
     245        <openflow:nw_src value="10.42.11.0/24"/>
     246      </openflow:packet>
     247    </openflow:match>
     248}}}
     249
     250The RENCI ExoGENI !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
     251
     252==== NLR !OpenFlow Aggregate ====
     253
     254To define the NLR !OpenFlow RSpec we must first decide which path we will choose from the available GENI backbone VLANs.  See the [http://groups.geni.net/geni/wiki/NetworkCore GENI Network Core] page for all available VLANs.  For this example, we will use [http://groups.geni.net/geni/wiki/NetworkCore#VLAN3715 VLAN 3715 to provide the path for our experiment.  The following diagram shows which network core path and the switches that will be used to connect the 3 meso-scale sites in this experiment:
     255
     256[[Image(OF-Example-VLAN-3715.jpg)]]
     257
     258From the network core path diagram we determined that we will use 2 NLR switches (NLR Chicago and NLR Atlanta) and 3 Internet2 switches (I2 Atlanta, I2 Houston, and I2 Los Angeles).  These 5 core switches will be in the !OpenFlow RSpecs for NLR and Internet2.
     259
     260'''Define Experiment NLR Sites Details''':
     261
     262The GPO site is connected to the GENI Network core at NLR Chicago, and the RENCI ExoGENI site is connected to NLR Atlanta. We need to figure out the ports used for the 2 NLR experiment sites (IG GPO and EG RENCI).  Review the [http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow NLR !OpenFlow Aggregate] page and look for the NLR tables for VLAN 1750 or DPIDs starting with '' ''' "06:d6" ''' '' (hex equivalent of 1750).  We will need the following port information from the NLR tables:
     263
     264__[http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow#NLRCHIC175006:d6:00:23:47:c8:bc:00 NLR CHIC 1750 (06:d6:00:23:47:c8:bc:00)]__:
     265 - Port Name = 3; Port Number = 3; Connects to = NLR CHIC 3715
     266 - Port Name = 9; Port Number = 9; Connects to = GPO 1750
     267[[BR]]
     268__[http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow#NLRATLA175006:d6:00:24:a8:d2:b8:40 NLR ATLA 1750 (06:d6:00:24:a8:d2:b8:40)]__:
     269 - Port Name = 3; Port Number = 3; Connects to = NLR ATLA 3715 
     270 - Port Name = 25; Port Number = 49; Connects to = RENCI 1750
     271
     272Note that you may choose to use only the core sites that are required for the three experiment sites to communicate, but you can also choose to define all DPIDs in the NLR Core for VLAN 3715. Although this example only defines the core switches used, it is possible to define all GENI backbone switches  available at the time of this experiment.
     273
     274Now back to our RSpec definition, first we define the experiment site and ports information. First we define the site-specific ports for VLAN 1750 and map them to VLAN 3715:
     275
     276{{{
     277    <openflow:group name="nlr-chic-1750">
     278      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:23:47:c8:bc:00"
     279       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     280        dpid="06:d6:00:23:47:c8:bc:00"> <!-- NLR CHIC 3715 -->
     281        <openflow:port name="3" num="3"/> <!-- NLR CHIC 3715 Port -->
     282        <openflow:port name="9" num="9"/> <!-- GPO 1750 -->
     283      </openflow:datapath>
     284    </openflow:group>
     285
     286    <openflow:group name="nlr-atla-1750">
     287      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:24:a8:d2:b8:40"
     288       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     289       dpid="06:d6:00:24:a8:d2:b8:40"> <!-- NLR ATLA 3715 -->
     290    <openflow:port name="3" num="3"/> <!-- NLR ATLA 3715 Port -->
     291    <openflow:port name="25" num="49"/> <!-- RENCI 1750 -->
     292    </openflow:datapath>
     293    </openflow:group>
     294}}}
     295
     296'''Define Network Core VLAN 3715 Details''':
     297
     298Then we review the [http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow NLR !OpenFlow Aggregate] page and look for the NLR  tables for VLAN 3715 for DPIDs starting with ''' "0e:83" ''' (hex equivalent of 3715) for the two switches (Chicago and Atlanta) that we will be using in the NLR  core VLAN 3715:
     299[[BR]]
     300__[http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow#NLRCHIC37150e:83:00:23:47:c8:bc:00 NLR CHIC 3715 (0e:83:00:23:47:c8:bc:00)]__
     301[[BR]]
     302__[http://groups.geni.net/geni/wiki/GeniAggregate/NLROpenFlow#NLRATLA37150e:83:00:24:a8:d2:b8:40 NLR ATLA 3715 (0e:83:00:24:a8:d2:b8:40)]__
     303
     304and we define the NLR 3715 datapath for NLR Chicago and Atlanta:
     305{{{
     306
     307    <openflow:group name="nlr-chic-3715">
     308       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:c8:bc:00"
     309         component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     310         dpid="0e:83:00:23:47:c8:bc:00">  <!-- NLR CHIC 3715 -->
     311       </openflow:datapath>
     312    </openflow:group>
     313
     314    <openflow:group name="nlr-atla-3715">
     315       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:b8:40"
     316         component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     317         dpid="0e:83:00:24:a8:d2:b8:40">  <!-- NLR ATLA 3715 -->
     318      </openflow:datapath>
     319    </openflow:group>
     320
     321}}}
     322As with all RSpecs, we define the packet filtering for the subnet used in the experiment:
     323{{{
     324   <openflow:match>
     325      <openflow:use-group name="nlr-chic-1750" />
     326      <openflow:use-group name="nlr-atla-1750" />
     327      <openflow:use-group name="nlr-chic-3715" />
     328      <openflow:use-group name="nlr-atla-3715" />
    414329      <openflow:packet>
    415330        <openflow:dl_type value="0x800,0x806"/>
     
    417332        <openflow:nw_src value="10.42.11.0/24"/>
    418333      </openflow:packet>
    419 
    420     </openflow:match>
    421 
    422 }}}
    423 
    424 The Wisconsin !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
    425 
    426 
    427 ==== NLR !OpenFlow Aggregate ====
    428 
    429 To define the NLR !OpenFlow RSpec review the [http://groups.geni.net/geni/wiki/GeniSite/NLR#OpenFlow OpenFlow DPIDs] table for the core in the [http://groups.geni.net/geni/wiki/GeniSite/NLR National LambaRail] GENI page. From the table you can see the DPIDs for NLR !OpenFlow VLAN 3715. You may choose to use only the two core sites (Chicago and Atlanta) associated with the three experiment sites, but you can also choose to define all DPIDs in the NLR Core for VLAN 3715. This example  uses all sites and does not define any port to simplify the experiment workflow. So if you add a site, there is no need to delete, re-create, and re-approved the sliver.  Here are the NLR definitions:
    430 {{{
    431    <openflow:group name="nlr-3715">
    432      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:c8:bc:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    433      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:ca:bc:40" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    434      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:48:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    435      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:b8:40" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    436      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:26:f1:40:a8:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
     334   </openflow:match>
     335}}}
     336
     337
     338The NLR !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
     339
     340
     341==== Internet2 !OpenFlow Aggregate ====
     342
     343From the network core path diagram we see that we are using 3 Internet2 switches (I2 Atlanta, I2 Houston, and I2 Los Angeles). You may choose to use only the core sites that are required for the three experiment sites to communicate, but you can also choose to define all DPIDs in the Internet2 Core for VLAN 3715.  This example only defines the core switches used in the diagram above, but an RSpeccan be defined to include all GENI backbone switches.  We now proceed to define the RSpec that only defines the minimum set of configuration for this experiment.
     344
     345'''Define Experiment Site Details:'''
     346
     347There is only one site in this experiment that is connected to the Los Angeles Internet2 switch. We need to figure out the ports used for the site connection. Review the [http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow Internet2 !OpenFlow Aggregate] page and look for the Internet2 tables for 1750 or DPIDs starting with '' ''' "06:d6" ''' ''(hex equivalent of 1750). The information for the PG Utah connection:
     348[[BR]]
     349__[http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow#I2LOSA175006:d6:00:12:e2:22:63:38 I2 LOSA 1750 (06:d6:00:12:e2:22:63:38) ]__:
     350 - Port Name = 12; Port Number = 12; Connects to = I2 UEN 1750 
     351 - Port Name = 13; Port Number = 13; Connects to = I2 Los Angeles 3715   
     352
     353We use this information to define the site specific portion of the RSpec that maps VLAN 1750 to VLAN 3715:
     354{{{
     355
     356    <openflow:group name="i2-losa-1750">
     357    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+06:d6:00:12:e2:22:63:38"
     358     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     359     dpid="06:d6:00:12:e2:22:63:38">  <!-- I2 Los Angeles 3715 Path -->
     360        <openflow:port name="GBE0/12" num="12"/> <!-- I2 UEN 1750 -->
     361        <openflow:port name="GBE0/13" num="13"/> <!-- I2 Los Angeles 3715 Port -->
     362      </openflow:datapath>
     363    </openflow:group>
     364}}}
     365
     366'''Define Network Core VLAN 3715 Details''':
     367
     368Then we review the [http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow Internet2 !OpenFlow Aggregate] page and look for the Internet2 tables for VLAN 3715 for DPIDs starting with ''' "0e:83" ''' (hex equivalent of 3715) for the three switches (Atlanta, Houston and Los Angeles) that we will be using in the Internet2 core VLAN 3715:
     369
     370[[BR]]
     371__[http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow#I2ATLA37150e:83:00:12:e2:22:63:6e I2 ATLA 3715 (0e:83:00:12:e2:22:63:6e)]__
     372[[BR]]
     373__[http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow#I2HOUS37150e:83:00:12:e2:22:81:42 I2 HOUS 3715 (0e:83:00:12:e2:22:81:42)]__
     374[[BR]]
     375__[http://groups.geni.net/geni/wiki/GeniAggregate/I2OpenFlow#I2LOSA37150e:83:00:12:e2:22:63:38 I2 LOSA 3715 (0e:83:00:12:e2:22:63:38)]__
     376
     377[[BR]]
     378
     379Now we define the RSpec entries for the path:
     380
     381{{{
     382   <openflow:group name="i2-atla-3715">
     383    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:6e"
     384      component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     385      dpid="0e:83:00:12:e2:22:63:6e"> <!-- I2 ATLA 3715 -->
     386      </openflow:datapath>
    437387   </openflow:group>
    438388
     389   <openflow:group name="i2-hous-3715">
     390    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:81:42"
     391     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     392     dpid="0e:83:00:12:e2:22:81:42"> <!-- I2 ATLA 3715 -->
     393      </openflow:datapath>
     394   </openflow:group>
     395
     396   <openflow:group name="i2-losa-3715">
     397    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:38"
     398     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     399     dpid="0e:83:00:12:e2:22:63:38"> <!-- I2 LOSA 3715 -->
     400      </openflow:datapath>
     401   </openflow:group>
     402}}}
     403We than add the packet filter to allow our subnet range:
     404{{{
     405
    439406   <openflow:match>
    440       <openflow:use-group name="nlr-3715" />
     407      <openflow:use-group name="i2-atla-3715" />
     408      <openflow:use-group name="i2-hous-3715" />
     409      <openflow:use-group name="i2-losa-3715" />
     410      <openflow:use-group name="i2-losa-1750" />
    441411      <openflow:packet>
    442412        <openflow:dl_type value="0x800,0x806"/>
     
    447417}}}
    448418
    449 The NLR !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
    450 
    451 === Step 3: Generate OpenFlow V3 RSpec ===
     419The Internet2 !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF#Step3:GenerateOpenFlowV3RSpec Step 3].
     420
     421
     422=== Generate OpenFlow V3 RSpec ===
    452423
    453424This section uses guidelines from the [http://groups.geni.net/geni/wiki/HowTo/WriteOFv3Rspecs#WritingOpenFlowv3requestrspecs Writing OF V3 RSpec] page to merge information from [wiki:GENIExperimenter/ExperimentExample-OF#Step2:DeterminesitespecificOpenFlowdetails Step 2] and generate the complete BBN, Clemson, Wisconsin and NLR !OpenFlow request RSpecs.
     
    470441      <openflow:controller url="tcp:example.geni.net:9933" type="primary" />
    471442
    472         <!-- RSpec details from Step 2 here -->
     443        <!-- Insert RSpec details from Step 2 here -->
    473444
    474445    </openflow:sliver>
     
    483454''Note:'' You must run an !OpenFlow Controller to manage your experiment. If you do not have an !OpenFlow controller, see the following page for instructions on how-to [http://groups.geni.net/geni/wiki/OpenFlow/GeniBackboneTest#SetupyourOpenFlowcontroller Setup an OpenFlow Controller].  Also, attached to this page is a [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF/nox-install.txt capture] of the !OpenFlow Controller software installation, and runtime commands used to run the experiment in this page.
    484455
    485 The modified !OpenFlow V3 Rspec template is shown below with the setting changes specific to our experiment:
     456The modified !OpenFlow V3 RSpec template is shown below with the setting changes specific to our experiment:
    486457{{{
    487458#!xml
     
    496467    type="request">
    497468   
    498     <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    499      <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    500 
     469    <openflow:sliver email="lnevers@geni.net" description="OpenFlow Experiment Example" ref="http://www.geni.net">
     470     <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     471     
    501472        <!-- RSpec details from Step 2 here -->
    502473
     
    505476}}}
    506477
    507 Using the modified !OpenFlow V3 RSpec template we generate the 3 site !OpenFlow Rspecs by combining details from [wiki:GENIExperimenter/ExperimentExample-OF#Step2:DeterminesitespecificOpenFlowdetails Step 2] with the modified template. Following are the completed site !OpenFlow RSpecs for the 3 sites in this experiment:
    508 
    509 ==== BBN !OpenFlow RSpec ====
    510 
     478Using the modified !OpenFlow V3 RSpec template we generate the 3 Meso-scale sites !OpenFlow Rspecs by combining details from [wiki:GENIExperimenter/ExperimentExample-OF#Step2:DeterminesitespecificOpenFlowdetails Step 2] with the modified template. Following are the completed site !OpenFlow RSpecs for the 3 sites in this experiment:
     479
     480==== GPO !OpenFlow RSpecs ====
     481
     482The following is the !OpenFlow request RSpec for the GPO Site's FOAM aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-ig-gpo.rspec openflow-ig-gpo.rspec]:
    511483{{{
    512484#!xml
    513 <?xml version="1.1" encoding="UTF-8"?>
    514 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    515         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    516         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    517         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    518               http://www.geni.net/resources/rspec/3/request.xsd
    519               http://www.geni.net/resources/rspec/ext/openflow/3
    520               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    521     type="request">
    522  
    523 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    524    <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    525 
    526    <openflow:group name="bbn-1750-nodes">
    527      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:24:a8:c4:b9:00"     
    528                        component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    529                        dpid="06:d6:00:24:a8:c4:b9:00">
    530       <openflow:port name="32" num="56"/>
    531       <openflow:port name="47" num="71"/>
    532     </openflow:datapath>
    533   </openflow:group>
    534 
    535   <openflow:group name="bbn-1750-3715">
    536       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
    537                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    538                         dpid="06:d6:00:12:e2:b8:a5:d0">
    539         <openflow:port num="3"/>
    540         <openflow:port num="20"/>
    541        </openflow:datapath>
    542   </openflow:group>
    543 
    544   <openflow:match>
    545 
    546       <openflow:use-group name="bbn-1750-nodes" />
    547       <openflow:use-group name="bbn-1750-3715" />
    548 
     485<?xml version="1.0" encoding="UTF-8"?>
     486<!--
     487AM: https://foam.gpolab.bbn.com:3626/foam/gapi/1
     488-->
     489<rspec xmlns="http://www.geni.net/resources/rspec/3"
     490       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     491       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     492       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     493           http://www.geni.net/resources/rspec/3/request.xsd
     494           http://www.geni.net/resources/rspec/ext/openflow/3
     495           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     496       type="request">
     497
     498 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     499 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     500
     501    <openflow:group name="gpo-1750">
     502      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
     503                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am">
     504         <openflow:port name="GBE0/7" num="7"/> <!-- to NLR 2650 -->
     505         <openflow:port name="GBE0/16" num="16"/>  <!-- to BBN InstaGENI rack -->
     506      </openflow:datapath>
     507    </openflow:group>
     508    <openflow:match>
     509
     510      <openflow:use-group name="gpo-1750" />
    549511      <openflow:packet>
    550512        <openflow:dl_type value="0x800,0x806"/>
     
    553515      </openflow:packet>
    554516
    555    </openflow:match>
    556 
    557  </openflow:sliver>
     517    </openflow:match>
     518
     519  </openflow:sliver>
    558520</rspec>
    559521}}}
    560522
    561523
    562 ==== Clemson !OpenFlow RSpec ====
    563 
    564 
     524The following request RSpec is for the GPO InstaGENI FOAM Aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-ig-gpo.rspec openflow-ig-gpo.rspec] :
    565525{{{
    566526#!xml
    567 <?xml version="1.1" encoding="UTF-8"?>
    568 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    569         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    570         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    571         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    572               http://www.geni.net/resources/rspec/3/request.xsd
    573               http://www.geni.net/resources/rspec/ext/openflow/3
    574               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    575     type="request">
    576    
    577 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    578   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    579 
    580   <openflow:group name="clemson-1750-3715">
    581      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam+datapath+06:d6:00:26:f1:3f:e4:80"
    582                     component_manager_id="urn:publicid:IDN+openflow:foam:foam+authority+am" dpid="06:d6:00:26:f1:3f:e4:80">
    583         <openflow:port name="39" num="39"/>
    584         <openflow:port name="43" num="43"/>
    585       </openflow:datapath>
    586   </openflow:group>
    587 
    588   <openflow:match>
    589       <openflow:use-group name="clemson-1750-3715" />
     527<?xml version="1.0" encoding="UTF-8"?>
     528<!--
     529AM: https://foam.instageni.gpolab.bbn.com:3626/foam/gapi/1
     530-->
     531<rspec xmlns="http://www.geni.net/resources/rspec/3"
     532       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     533       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     534       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     535           http://www.geni.net/resources/rspec/3/request.xsd
     536           http://www.geni.net/resources/rspec/ext/openflow/3
     537           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     538       type="request">
     539
     540 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     541 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     542
     543    <openflow:group name="ig-gpo-1750">
     544      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+datapath+06:d6:84:34:97:c6:c9:00"
     545        component_manager_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+authority+am" dpid="06:d6:84:34:97:c6:c9:00">
     546        <openflow:port name="E1" num="97"/> <!-- VM Server 1 -->
     547        <openflow:port name="E4" num="100"/> <!-- VM Server 2 -->
     548        <openflow:port name="E24" num="120"/> <!-- to GPO FOAM -->
     549      </openflow:datapath>
     550    </openflow:group>
     551
     552    <openflow:match>
     553      <openflow:use-group name="ig-gpo-1750" />
     554      <openflow:packet>
     555        <openflow:dl_type value="0x800,0x806"/>
     556        <openflow:nw_dst value="10.42.11.0/24"/>
     557        <openflow:nw_src value="10.42.11.0/24"/>
     558      </openflow:packet>
     559
     560    </openflow:match>
     561
     562  </openflow:sliver>
     563</rspec>
     564}}}
     565
     566==== PG Utah !OpenFlow RSpecs ====
     567
     568The following request RSpec is for the PG Utah FOAM aggregate which is the Regional UEN FOAM aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-uen.rspec openflow-uen.rspec]:
     569
     570{{{
     571#!xml
     572<?xml version="1.0" encoding="UTF-8"?>
     573<!--
     574AM: https://foamyflow.chpc.utah.edu:3626/foam/gapi/1
     575-->
     576<rspec xmlns="http://www.geni.net/resources/rspec/3"
     577       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     578       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     579       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     580           http://www.geni.net/resources/rspec/3/request.xsd
     581           http://www.geni.net/resources/rspec/ext/openflow/3
     582           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     583       type="request">
     584
     585 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     586 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     587
     588    <openflow:group name="uen-1750">
     589    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+datapath+06:d6:ac:16:2d:f5:2d:00"
     590        component_manager_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+authority+am" dpid="06:d6:ac:16:2d:f5:2d:00">
     591        <openflow:port name="A21" num="21"/>
     592        <openflow:port name="A22" num="22"/>
     593      </openflow:datapath>
     594    </openflow:group>
     595
     596    <openflow:match>
     597      <openflow:use-group name="uen-1750" />
    590598      <openflow:packet>
    591599        <openflow:dl_type value="0x800,0x806"/>
     
    593601        <openflow:nw_src value="10.42.11.0/24"/>
    594602      </openflow:packet>
     603
    595604    </openflow:match>
    596605
    597 </openflow:sliver>
     606  </openflow:sliver>
    598607</rspec>
    599608}}}
    600609
    601 ==== Wisconsin !OpenFlow RSpec ====
    602 
    603 
     610==== RENCI !OpenFlow RSpec ====
     611
     612The following request RSpec is for the RENCI ExoGENI FOAM aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-eg-renci.rspec openflow-eg-renci.rspec]:
    604613{{{
    605614#!xml
    606 <?xml version="1.1" encoding="UTF-8"?>
    607 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    608         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    609         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    610         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    611               http://www.geni.net/resources/rspec/3/request.xsd
    612               http://www.geni.net/resources/rspec/ext/openflow/3
    613               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    614     type="request">
    615    
    616 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    617   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    618 
    619    <openflow:group name="wisconsin-nodes-1750">
    620       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+0
    621 6:d6:00:23:47:cc:44:00"
    622                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+au
    623 thority+am">
    624           <openflow:port name="1" num="1"/>
    625           <openflow:port name="22" num="22"/>
    626 
    627       </openflow:datapath>
    628    </openflow:group>
    629 
    630    <openflow:group name="wisconsin-1750-3715">
    631       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+0
    632 6:d6:00:21:f7:be:8d:00"
    633                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+au
    634 thority+am">
    635         <openflow:port name="3" num="3"/>
    636         <openflow:port name="C3" num="51"/>
    637       </openflow:datapath>
    638    </openflow:group>
    639 
    640    <openflow:match>
    641       <openflow:use-group name="wisconsin-nodes-1750" />
    642       <openflow:use-group name="wisconsin-1750-3715" />
     615<?xml version="1.0" encoding="UTF-8"?>
     616<!--
     617AM: https://rci-hn.exogeni.net:3626/foam/gapi/1
     618-->
     619<rspec xmlns="http://www.geni.net/resources/rspec/3"
     620       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     621       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     622       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     623           http://www.geni.net/resources/rspec/3/request.xsd
     624           http://www.geni.net/resources/rspec/ext/openflow/3
     625           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     626       type="request">
     627
     628 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     629 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     630
     631  <openflow:group name="renci-1750">
     632     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+datapath+00:01:08:17:f4:b3:5b:00"
     633        component_manager_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+authority+am" >
     634     </openflow:datapath>
     635    </openflow:group>
     636
     637    <openflow:match>
     638
     639      <openflow:use-group name="renci-1750" />
     640
     641      <openflow:packet>
     642        <openflow:dl_vlan value="1750"/>
     643        <openflow:dl_type value="0x800,0x806"/>
     644        <openflow:nw_dst value="10.42.11.0/24"/>
     645        <openflow:nw_src value="10.42.11.0/24"/>
     646      </openflow:packet>
     647
     648    </openflow:match>
     649
     650  </openflow:sliver>
     651</rspec>
     652}}}
     653
     654==== NLR !OpenFlow RSpec ====
     655
     656The following request RSpec is for the NLR FOAM aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-nlr.rspec openflow-nlr.rspec]:
     657
     658{{{
     659#!xml
     660<?xml version="1.0" encoding="UTF-8"?>
     661<!--
     662AM: https://foam.nlr.net:3626/foam/gapi/1
     663-->
     664<rspec xmlns="http://www.geni.net/resources/rspec/3"
     665       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     666       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     667       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     668           http://www.geni.net/resources/rspec/3/request.xsd
     669           http://www.geni.net/resources/rspec/ext/openflow/3
     670           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     671       type="request">
     672
     673 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     674 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     675
     676    <openflow:group name="nlr-chic-1750">
     677      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:23:47:c8:bc:00"
     678       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     679        dpid="06:d6:00:23:47:c8:bc:00"> <!-- NLR CHIC 3715 -->
     680        <openflow:port name="3" num="3"/> <!-- NLR CHIC 3715 Port -->
     681        <openflow:port name="9" num="9"/> <!-- GPO 1750 -->
     682      </openflow:datapath>
     683    </openflow:group>
     684
     685    <openflow:group name="nlr-atla-1750">
     686     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:24:a8:d2:b8:40"
     687       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     688       dpid="06:d6:00:24:a8:d2:b8:40"> <!-- NLR ATLA 3715 -->
     689    <openflow:port name="3" num="3"/> <!-- NLR ATLA 3715 Port -->
     690    <openflow:port name="25" num="49"/> <!-- RENCI 1750 -->
     691    </openflow:datapath>
     692    </openflow:group>
     693
     694    <openflow:group name="nlr-chic-3715">
     695       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:c8:bc:00"
     696         component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     697         dpid="0e:83:00:23:47:c8:bc:00">  <!-- NLR CHIC 3715 -->
     698       </openflow:datapath>
     699    </openflow:group>
     700
     701    <openflow:group name="nlr-atla-3715">
     702       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:b8:40"
     703         component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am"
     704         dpid="0e:83:00:24:a8:d2:b8:40">  <!-- NLR ATLA 3715 -->
     705      </openflow:datapath>
     706    </openflow:group>
     707
     708  <openflow:match>
     709      <openflow:use-group name="nlr-chic-1750" />
     710      <openflow:use-group name="nlr-atla-1750" />
     711      <openflow:use-group name="nlr-chic-3715" />
     712      <openflow:use-group name="nlr-atla-3715" />
    643713      <openflow:packet>
    644714        <openflow:dl_type value="0x800,0x806"/>
     
    646716        <openflow:nw_src value="10.42.11.0/24"/>
    647717      </openflow:packet>
    648     </openflow:match>
    649 
    650 
    651 </openflow:sliver>
     718   </openflow:match>
     719
     720  </openflow:sliver>
    652721</rspec>
    653 
    654 }}}
    655 
    656 ==== NLR !OpenFlow RSpec ====
    657 
     722}}}
     723
     724==== Internet2 !OpenFlow RSpec ====
     725
     726The following request RSpec is for the Internet2 FOAM aggregate [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/openflow-internet2.rspec openflow-internet2.rspec]:
    658727{{{
    659728#!xml
    660 <?xml version="1.1" encoding="UTF-8"?>
    661 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    662         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    663         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    664         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    665               http://www.geni.net/resources/rspec/3/request.xsd
    666               http://www.geni.net/resources/rspec/ext/openflow/3
    667               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    668     type="request">
    669    
    670 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    671   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    672 
    673    <openflow:group name="nlr-3715">
    674      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:c8:bc:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    675      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:23:47:ca:bc:40" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    676      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:48:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    677      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:24:a8:d2:b8:40" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
    678      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+0e:83:00:26:f1:40:a8:00" component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" />
     729<?xml version="1.0" encoding="UTF-8"?>
     730<!--
     731AM: https://foam.net.internet2.edu:3626/foam/gapi/1
     732-->
     733<rspec xmlns="http://www.geni.net/resources/rspec/3"
     734       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
     735       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
     736       xs:schemaLocation="http://www.geni.net/resources/rspec/3
     737           http://www.geni.net/resources/rspec/3/request.xsd
     738           http://www.geni.net/resources/rspec/ext/openflow/3
     739           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
     740       type="request">
     741
     742 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
     743 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     744
     745    <openflow:group name="i2-losa-1750">
     746    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+06:d6:00:12:e2:22:63:38"
     747     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     748     dpid="06:d6:00:12:e2:22:63:38">  <!-- I2 Los Angeles 3715 Path -->
     749        <openflow:port name="GBE0/12" num="12"/> <!-- I2 UEN 1750 -->
     750        <openflow:port name="GBE0/13" num="13"/> <!-- I2 Los Angeles 3715 Port -->
     751      </openflow:datapath>
     752    </openflow:group>
     753
     754   <openflow:group name="i2-atla-3715">
     755    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:6e"
     756      component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     757      dpid="0e:83:00:12:e2:22:63:6e"> <!-- I2 ATLA 3715 -->
     758      </openflow:datapath>
    679759   </openflow:group>
    680760
     761   <openflow:group name="i2-hous-3715">
     762    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:81:42"
     763     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     764     dpid="0e:83:00:12:e2:22:81:42"> <!-- I2 ATLA 3715 -->
     765      </openflow:datapath>
     766   </openflow:group>
     767
     768   <openflow:group name="i2-losa-3715">
     769    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:38"
     770     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am"
     771     dpid="0e:83:00:12:e2:22:63:38"> <!-- I2 LOSA 3715 -->
     772      </openflow:datapath>
     773   </openflow:group>
     774
    681775   <openflow:match>
    682       <openflow:use-group name="nlr-3715" />
     776      <openflow:use-group name="i2-atla-3715" />
     777      <openflow:use-group name="i2-hous-3715" />
     778      <openflow:use-group name="i2-losa-3715" />
     779      <openflow:use-group name="i2-losa-1750" />
    683780      <openflow:packet>
    684781        <openflow:dl_type value="0x800,0x806"/>
     
    687784      </openflow:packet>
    688785   </openflow:match>
    689 </openflow:sliver>
     786
     787  </openflow:sliver>
    690788</rspec>
    691 
    692 }}}
    693 
     789}}}
     790
     791All !OpenFlow request RSpecs used in this examples can also be found [http://groups.geni.net/geni/browser/trunk/of-example here].
    694792
    695793== 6. Setup Experiment ==
    696794
    697 Using the !OpenFlow and compute resource RSpecs we defined above, we can now set up an experimennt with Omni. First, we create a slice using the GPO Clearinghouse credentials as defined in the [wiki:GENIExperimenter/ExperimentExample-OF#AuthenticationandOmnitoolsconfiguration Omni configuration]. Note, you should choose a slice name that is meaningful to you. Then, we create a sliver for each resource aggregate.  In this example there are 4 !OpenFlow aggregates (one per site plus one for the GENI core) and 3 compute resource aggregates (3 MyPLC), which maps to creating 7 slivers. The following commands are executed to set up the experiment: 
    698 {{{
    699  $ cd gcf-1.6.1
    700  $ ./src/omni.py createslice 3sites-OF
    701  $ ./src/omni.py -a of-bbn -V 1 createsliver 3sites-OF openflow-bbn.rspec
    702  $ ./src/omni.py -a of-clemson -V 1 createsliver 3sites-OF openflow-clemson.rspec   
    703  $ ./src/omni.py -a of-wisconsin -V 1 createsliver 3sites-OF openflow-wisconsin.rspec
    704  $ ./src/omni.py -a of-nlr -V 1 createsliver 3sites-OF openflow-nlr.rspec
    705  $ ./src/omni.py -a plc-bbn -V 1 createsliver 3sites-OF myplc-bbn.rspec
    706  $ ./src/omni.py -a plc-clemson -V 1 createsliver  3sites-OF  myplc-clemson.rspec
    707  $ ./src/omni.py -a plc-wisconsin -V 1 createsliver 3sites-OF myplc-wisconsin.rspec
    708                    
    709 }}}
    710 
    711 The output for running each of the above commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF/openflow-foam-example.txt here]. Also each of the RSpecs used to create slivers are also attached to this page.
    712 
    713 Remember, to renew the slice and slivers reservation time, as the default time is 8 hours. You may find out the current expiration time by using Omni sliverstatus commands. Following are the commands to determine the current sliverstatus along with the expiration times at each aggregate:
    714 {{{
    715  $ ./src/omni.py -a of-bbn -V 1 sliverstatus 3sites-OF
    716  $ ./src/omni.py -a of-clemson -V 1 sliverstatus 3sites-OF
    717  $ ./src/omni.py -a of-wisconsin -V 1 sliverstatus 3sites-OF
    718  $ ./src/omni.py -a of-nlr -V 1 sliverstatus 3sites-OF
    719  $ ./src/omni.py -a plc-clemson -V 1 sliverstatus 3sites-OF
    720  $ ./src/omni.py -a plc-wisconsin  -V 1 sliverstatus 3sites-OF
    721  $ ./src/omni.py -a plc-bbn -V 1 sliverstatus 3sites-OF
    722 }}}
    723 The output for running each of the above commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF/openflow-foam-sliverstatus.txt here].
    724 
    725 
    726 You can now renew the slice and slivers. Following are the commands to extend the reservation for the resources:
    727 {{{
    728  $ ./src/omni.py renewslice 3sites-OF 2012-04-30
    729  $ ./src/omni.py -a of-bbn -V 1 renewsliver 3sites-OF 2012-04-30
    730  $ ./src/omni.py -a of-clemson -V 1 renewsliver 3sites-OF 2012-04-30
    731  $ ./src/omni.py -a of-wisconsin -V 1 renewsliver 3sites-OF 2012-04-30
    732  $ ./src/omni.py -a of-nlr -V 1 renewsliver 3sites-OF 2012-04-30
    733  $ ./src/omni.py -a of-clemson -V 1 renewsliver 3sites-OF 2012-04-30
    734  $ ./src/omni.py -a of-wisconsin -V 1 renewsliver 3sites-OF 2012-04-30
    735  $ ./src/omni.py -a of-bbn renewsliver -V 1 3sites-OF 2012-04-30
    736 }}}
    737 
    738 The output for running each of the above renew commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF/openflow-foam-renew.txt here].
    739 
    740 
    741 === FOAM sliver approval ===
    742 
    743 Each of the !OpenFlow slivers must be approved by an administrator at each of the !OpenFlow Aggregates. You do not need to take any action, an email notification will be sent for each of the FOAM aggregates that looks as follows:
    744 
    745 [[Image(FOAM-sliver-approve.jpg)]] 
    746 
    747 In the scenario captured in this page, there are 4 sliver approval notifications, one from each of the FOAM aggregates (BBN, Clemson, NLR and Wisconsin).
     795Using the !OpenFlow and compute resource RSpecs we defined above, we can now set up an experimennt with Omni. First, we create a slice using the GPO Clearinghouse credentials as defined in the [wiki:GENIExperimenter/ExperimentExample-OF#AuthenticationandOmnitoolsconfiguration Omni configuration]. Note, you should choose a slice name that is meaningful to you. Then, we create a sliver for each resource aggregate.  In this example there are 6 !OpenFlow aggregates and 3 compute resource aggregates (1 ProtoGENI, 1 ExoGENI, and 1 InstaGENI), which maps to creating 9 slivers. The following commands are executed to set up the experiment:
     796
     797{{{
     798$ omni.py createslice 3sites-OF
     799}}}
     800Create slivers at each compute resource aggregate (GPO IG, RENCI EG, Utah PG):
     801{{{
     802$ omni.py -a ig-gpo createsliver 3sites-OF compute-ig-gpo.rspec 
     803$ omni.py -a eg-renci createsliver 3sites-OF compute-eg-renci.rspec   
     804$ omni.py -a pg-utah createsliver 3sites-OF compute-pg-utah.rspec   
     805}}}
     806
     807Create a slivers for each of the FOAM aggregate:
     808{{{
     809
     810$ omni.py -a of-gpo -V1 createsliver 3sites-OF openflow-gpo.rspec
     811$ omni.py -a of-nlr -V1 createsliver 3sites-OF openflow-nlr.rspec
     812$ omni.py -a of-i2 -V1 createsliver 3sites-OF openflow-internet2.rspec
     813$ omni.py -a of-uen -V1 createsliver 3sites-OF openflow-uen.rspec
     814$ omni.py -a eg-of-renci -V1 createsliver 3sites-OF openflow-eg-renci.rspec
     815$ omni.py -a ig-of-gpo -V1 createsliver 3sites-OF openflow-ig-gpo.rspec
     816}}}
     817                                     
     818The output for running each of the above commands is attached [http://groups.geni.net/syseng/attachment/wiki/LuisaSandbox/ExperimentExample-OF/openflow-foam-example.txt here]. The RSpecs used can be found [http://groups.geni.net/geni/browser/trunk/RSpecExamples/ExperimentExample-OF/ here].
     819
     820Remember, to renew the slice and slivers reservation time, as the default time is 8 hours. You may find out the current expiration time by using Omni print_slice_expiration commands.
     821{{{
     822$ omni.py print_slice_expiration 3sites-OF
     823INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
     824INFO:omni:Using control framework pg
     825INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF expires on 2013-03-01 21:30:06 UTC
     826INFO:omni: ------------------------------------------------------------
     827INFO:omni: Completed print_slice_expiration:
     828  Options as run:
     829                framework: pg
     830  Args: print_slice_expiration 3sites-OF
     831  Result Summary: Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF expires on 2013-03-01 21:30:06 UTC
     832INFO:omni: ============================================================
     833}}}
     834
     835You can now renew the slice and slivers. Following are the commands to extend the reservation for the compute and network resources:
     836
     837{{{
     838 $ omni.py renewslice 3sites-OF 2013-03-13
     839 $ omni.py -a of-gpo -V 1 renewsliver 3sites-OF 2013-03-03
     840 $ omni.py -a of-nlr -V 1 renewsliver 3sites-OF 2013-03-03
     841 $ omni.py -a of-i2 -V 1 renewsliver 3sites-OF 2013-03-03
     842 $ omni.py -a of-uen -V 1 renewsliver 3sites-OF 2013-03-03
     843 $ omni.py -a eg-of-renci -V 1 renewsliver 3sites-OF 2013-03-03
     844 $ omni.py -a ig-of-gpo -V 1 renewsliver 3sites-OF 2013-03-03
     845 $ omni.py -a pg-utah -V 1 renewsliver 3sites-OF 2013-03-03
     846 $ omni.py -a ig-gpo  renewsliver 3sites-OF 2013-03-03
     847}}}
     848
     849'' Note: The sliver for RENCI resources is not renewed, as the feature is currently not supported, default sliver is 2 weeks for ExoGENI''.
     850
     851The output for running each of the above renew commands is attached [http://groups.geni.net/syseng/attachment/wiki/LuisaSandbox/ExperimentExample-OF/openflow-example-renew.txt here].
     852
     853
     854=== FOAM slivers approval ===
     855
     856SOme of the !OpenFlow slivers must be approved by an administrator at each of the !OpenFlow Aggregates. You do not need to take any action, an email notification will be sent for each of the FOAM aggregates that looks as follows:
     857
     858{{{
     859(This is an automated message from FOAM.)
     860
     861Your FOAM sliver at foam.gpolab.bbn.com
     862has been automatically approved, and is now in the FlowVisor:
     863
     864  Sliver URN: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF:6454a7b0-f4cf-4c98-863e-2f1db3a4613c
     865  Owner URN: urn:publicid:IDN+pgeni.gpolab.bbn.com+user+lnevers
     866  Owner e-mail: lnevers@bbn.com
     867
     868If this is unexpected, please contact foam-admin@gpolab.bbn.com
     869for further assistance.
     870}}}
     871
     872In the scenario captured in this page, there are 6 sliver approval notifications, one from each of the FOAM aggregates (GPO, NLR, I2, UEN, IG, and EG).
    748873
    749874== 7. Run Experiment ==
    750875
    751 Once your flowspace has been approved, you should be able [wiki:HowTo/LoginToNodes login to each of the MyPLC hosts] and exchange traffic over the approved flows.  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].
    752 
    753 === Login to a MyPLC host ===
    754 
    755 To figure out how to login to the MyPLC hosts that you reserved use the Omni ''sliverstatus'' commands. Following are examples for the experiment captured in this page:
    756 {{{
    757  $ ./src/omni.py -a plc-clemson -V 1 sliverstatus 3sites-OF
    758  $ ./src/omni.py -a plc-bbn -V 1 sliverstatus 3sites-OF
    759  $ ./src/omni.py -a plc-wisconsin -V 1 sliverstatus 3sites-OF
    760 }}}
    761 
    762 The output for running each of the above sliverstatus commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF/sliverstatus-3sites-OF-exp.txt here].
    763 
    764 From the output of the sliverstatus commands, we use the ''pl_login'' and the ''pl_hostname'' to ssh into the MyPLC hosts. Following is a summary for the sites in this experiment:
    765 
    766 || MyPLC Site || Login (pl_login)           || MyPLC Host (pl_hostname) || Command to connect ||
    767 || ||
    768 ||BBN      || pgenigpolabbbncom_3sitesOF || navis.gpolab.bbn.com  || ssh pgenigpolabbbncom_3sitesOF@navis.gpolab.bbn.com
    769 ||||
    770 ||Clemson  || pgenigpolabbbncom_3sitesOF || planetlab4.clemson.edu|| ssh pgenigpolabbbncom_3sitesOF@planetlab4.clemson.edu ||
    771 || ||
    772 ||Wisconsin|| pgenigpolabbbncom_3sitesOF || wings-openflow-2.wail.wisc.edu|| ssh pgenigpolabbbncom_3sitesOF@wings-openflow-2.wail.wisc.edu ||
    773 
    774 
    775 Login to each of the 3 hosts to determine the host address for the network 10.42.11.0/24, which is the network reserved and configured for the !OpenFlow groups.  Here is an example for the node ''navis'':
    776 {{{
    777 $ ssh pgenigpolabbbncom_3sitesOF@navis.gpolab.bbn.com
    778 Last login: Fri Apr 20 15:22:13 2012 from sendaria.gpolab.bbn.com
    779 [pgenigpolabbbncom_3sitesOF@navis ~]$ /sbin/ifconfig |egrep "10.42.11\." -A 1 -B 1
    780 eth1.1750:42011 Link encap:Ethernet  HWaddr 00:1B:21:5A:E6:A9 
    781           inet addr:10.42.11.55  Bcast:10.42.11.255  Mask:255.255.255.0
    782           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    783 }}}
    784 
    785 You should verify connectivity between the MyPLC hosts before running your experiment. The following example show connectivity from BBN host ''navis'' to Clemson host ''planetlab4'':
    786 {{{
    787 [pgenigpolabbbncom_3sitesOF@navis ~]$ ping 10.42.11.104 -c 3
    788 PING 10.42.11.104 (10.42.11.104) 56(84) bytes of data.
    789 64 bytes from 10.42.11.104: icmp_seq=1 ttl=64 time=59.3 ms
    790 64 bytes from 10.42.11.104: icmp_seq=2 ttl=64 time=59.3 ms
    791 64 bytes from 10.42.11.104: icmp_seq=3 ttl=64 time=59.3 ms
    792 
    793 --- 10.42.11.104 ping statistics ---
    794 3 packets transmitted, 3 received, 0% packet loss, time 2006ms
    795 rtt min/avg/max/mdev = 59.327/59.337/59.354/0.199 ms
    796 [pgenigpolabbbncom_3sitesOF@navis ~]$
    797 }}}
    798 
    799 and from Wisconsin host ''wings-openflow-2'' to Clemson host ''planetlab4'':
    800 {{{
    801 [pgenigpolabbbncom_3sitesOF@wings-openflow-2 ~]$ ping 10.42.11.104 -c 3
    802 PING 10.42.11.104 (10.42.11.104) 56(84) bytes of data.
    803 64 bytes from 10.42.11.104: icmp_seq=1 ttl=64 time=40.6 ms
    804 64 bytes from 10.42.11.104: icmp_seq=2 ttl=64 time=40.6 ms
    805 64 bytes from 10.42.11.104: icmp_seq=3 ttl=64 time=40.6 ms
    806 
    807 --- 10.42.11.104 ping statistics ---
    808 3 packets transmitted, 3 received, 0% packet loss, time 2044ms
    809 rtt min/avg/max/mdev = 40.610/40.652/40.699/0.168 ms
     876Once your flowspace has been approved, you can determine the login information for each compute resource host as follows:
     877{{{
     878$ readyToLogin.py -a ig-gpo 3sites-OF
     879<....>
     880================================================================================
     881LOGIN INFO for AM: https://instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/2.0
     882================================================================================
     883gpo-ig's geni_status is: ready (am_status:ready)
     884User lnevers logins to gpo-ig using:
     885        xterm -e ssh -p 30522  -i /home/lnevers/.ssh/id_rsa lnevers@pc1.instageni.gpolab.bbn.com &
     886
     887
     888$ readyToLogin.py -a pg-utah 3sites-OF
     889<..>
     890================================================================================
     891LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
     892================================================================================
     893
     894utah-pg's geni_status is: ready (am_status:ready)
     895User lnevers logins to utah-pg using:
     896        xterm -e ssh -p 32570  -i /home/lnevers/.ssh/id_rsa lnevers@pc423.emulab.net &
     897
     898
     899$ readyToLogin.py -a eg-renci 3sites-OF
     900<...>
     901================================================================================
     902LOGIN INFO for AM: https://rci-hn.exogeni.net:11443/orca/xmlrpc
     903================================================================================
     904User root logins to renci-eg using:
     905        xterm -e ssh -i /home/lnevers/.ssh/id_rsa root@152.54.14.17 &
     906
     907}}}
     908
     909You can now simply SSH into one of the hosts and ping any of the other site's 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].
     910
     911In our example, we login to the hosts at each site and ping a remote host. On the GPO InstaGENI host ping the RENCI ExoGENI host and the ProtoGENI host:
     912{{{
     913
     914$ ssh -p 30522  -i /home/lnevers/.ssh/id_rsa lnevers@pc1.instageni.gpolab.bbn.com
     915
     916[lnevers@gpo-ig ~]$ /sbin/ifconfig |egrep 10.42
     917          inet addr:10.42.11.65  Bcast:10.42.11.255  Mask:255.255.255.0
     918
     919[lnevers@gpo-ig ~]$ ping 10.42.11.205 -c 5
     920PING 10.42.11.205 (10.42.11.205) 56(84) bytes of data.
     92164 bytes from 10.42.11.205: icmp_req=1 ttl=64 time=1676 ms
     92264 bytes from 10.42.11.205: icmp_req=2 ttl=64 time=779 ms
     92364 bytes from 10.42.11.205: icmp_req=3 ttl=64 time=66.4 ms
     92464 bytes from 10.42.11.205: icmp_req=4 ttl=64 time=66.3 ms
     92564 bytes from 10.42.11.205: icmp_req=5 ttl=64 time=66.3 ms
     926
     927--- 10.42.11.205 ping statistics ---
     9285 packets transmitted, 5 received, 0% packet loss, time 4003ms
     929rtt min/avg/max/mdev = 66.332/530.917/1676.312/635.755 ms, pipe 2
     930
     931[lnevers@gpo-ig ~]$ ping 10.42.11.134 -c 5
     932PING 10.42.11.134 (10.42.11.134) 56(84) bytes of data.
     93364 bytes from 10.42.11.134: icmp_req=1 ttl=64 time=138 ms
     93464 bytes from 10.42.11.134: icmp_req=2 ttl=64 time=138 ms
     93564 bytes from 10.42.11.134: icmp_req=3 ttl=64 time=138 ms
     93664 bytes from 10.42.11.134: icmp_req=4 ttl=64 time=138 ms
     93764 bytes from 10.42.11.134: icmp_req=5 ttl=64 time=138 ms
     938
     939--- 10.42.11.134 ping statistics ---
     9405 packets transmitted, 5 received, 0% packet loss, time 4006ms
     941rtt min/avg/max/mdev = 138.567/138.595/138.619/0.408 ms
     942}}}
     943
     944On the ProtoGENI Utah host ping the RENCI ExoGENI host and the GPO InstaGENI host:
     945{{{
     946
     947$ ssh -p 32570  -i /home/lnevers/.ssh/id_rsa lnevers@pc423.emulab.net
     948
     949[lnevers@utah-pg ~]$ /sbin/ifconfig |egrep 10.42
     950          inet addr:10.42.11.134  Bcast:10.42.11.255  Mask:255.255.255.0
     951[lnevers@utah-pg ~]$ ping 10.42.11.205 -c 5
     952PING 10.42.11.205 (10.42.11.205) 56(84) bytes of data.
     95364 bytes from 10.42.11.205: icmp_req=1 ttl=64 time=1692 ms
     95464 bytes from 10.42.11.205: icmp_req=2 ttl=64 time=710 ms
     95564 bytes from 10.42.11.205: icmp_req=3 ttl=64 time=92.4 ms
     95664 bytes from 10.42.11.205: icmp_req=4 ttl=64 time=92.5 ms
     95764 bytes from 10.42.11.205: icmp_req=5 ttl=64 time=92.5 ms
     958
     959--- 10.42.11.205 ping statistics ---
     9605 packets transmitted, 5 received, 0% packet loss, time 4003ms
     961rtt min/avg/max/mdev = 92.416/536.194/1692.752/625.889 ms, pipe 2
     962[lnevers@utah-pg ~]$ /sbin/ifconfig |egrep 10.42
     963          inet addr:10.42.11.134  Bcast:10.42.11.255  Mask:255.255.255.0
     964[lnevers@utah-pg ~]$ ping 10.42.11.65 -c 5
     965PING 10.42.11.65 (10.42.11.65) 56(84) bytes of data.
     96664 bytes from 10.42.11.65: icmp_req=1 ttl=64 time=2103 ms
     96764 bytes from 10.42.11.65: icmp_req=2 ttl=64 time=1121 ms
     96864 bytes from 10.42.11.65: icmp_req=3 ttl=64 time=138 ms
     96964 bytes from 10.42.11.65: icmp_req=4 ttl=64 time=138 ms
     97064 bytes from 10.42.11.65: icmp_req=5 ttl=64 time=138 ms
     971
     972--- 10.42.11.65 ping statistics ---
     9735 packets transmitted, 5 received, 0% packet loss, time 4003ms
     974rtt min/avg/max/mdev = 138.555/728.028/2103.317/785.896 ms, pipe 3
     975
     976}}}
     977
     978On RENCI ExoGENI host ping the PG Utah host and the GPO InstaGENI host:
     979{{{
     980
     981$  ssh -i /home/lnevers/.ssh/id_rsa root@152.54.14.17
     982
     983root@VM1:~# /sbin/ifconfig |grep 10.42
     984          inet addr:10.42.11.205  Bcast:10.42.11.255  Mask:255.255.255.0
     985root@VM1:~# ping 10.42.11.134 -c 5
     986PING 10.42.11.134 (10.42.11.134) 56(84) bytes of data.
     98764 bytes from 10.42.11.134: icmp_req=1 ttl=64 time=3707 ms
     98864 bytes from 10.42.11.134: icmp_req=2 ttl=64 time=2714 ms
     98964 bytes from 10.42.11.134: icmp_req=3 ttl=64 time=1711 ms
     99064 bytes from 10.42.11.134: icmp_req=4 ttl=64 time=726 ms
     99164 bytes from 10.42.11.134: icmp_req=5 ttl=64 time=92.4 ms
     992
     993--- 10.42.11.134 ping statistics ---
     9945 packets transmitted, 5 received, 0% packet loss, time 4022ms
     995rtt min/avg/max/mdev = 92.433/1790.207/3707.214/1307.640 ms, pipe 4
     996
     997root@VM1:~# ping 10.42.11.65 -c 5
     998PING 10.42.11.65 (10.42.11.65) 56(84) bytes of data.
     99964 bytes from 10.42.11.65: icmp_req=1 ttl=64 time=3389 ms
     100064 bytes from 10.42.11.65: icmp_req=2 ttl=64 time=2408 ms
     100164 bytes from 10.42.11.65: icmp_req=3 ttl=64 time=1405 ms
     100264 bytes from 10.42.11.65: icmp_req=4 ttl=64 time=435 ms
     100364 bytes from 10.42.11.65: icmp_req=5 ttl=64 time=66.2 ms
     1004
     1005--- 10.42.11.65 ping statistics ---
     10065 packets transmitted, 5 received, 0% packet loss, time 4017ms
     1007rtt min/avg/max/mdev = 66.212/1540.944/3389.023/1231.504 ms, pipe 4
    8101008}}}
    8111009
     
    8161014When the experiment is completed, you should release the resources by deleting the sliver for each of the resource aggregates in the Experiment. In the example experiment in this page, the following commands should be issued to release resources:
    8171015{{{
    818 ./src/omni.py -a of-bbn -V 1 deletesliver 3sites-OF
    819 ./src/omni.py -a of-clemson -V 1 deletesliver 3sites-OF
    820 ./src/omni.py -a of-wisconsin -V 1 deletesliver 3sites-OF
    821 ./src/omni.py -a of-nlr -V 1 deletesliver 3sites-OF
    822 ./src/omni.py -a plc-clemson -V 1 deletesliver  3sites-OF
    823 ./src/omni.py -a plc-wisconsin -V 1 deletesliver 3sites-OF
    824 ./src/omni.py -a plc-bbn -V 1 deletesliver 3sites-OF
    825 
     1016 $ omni.py -a ig-gpo deletesliver  3sites-OF
     1017 $ omni.py -a ig-of-gpo -V1 deletesliver 3sites-OF
     1018 $ omni.py -a of-gpo -V1 deletesliver 3sites-OF
     1019 $ omni.py -a of-nlr -V1 deletesliver 3sites-OF
     1020 $ omni.py -a of-i2 -V1 deletesliver 3sites-OF
     1021 $ omni.py -a of-uen -V1 deletesliver 3sites-OF
     1022 $ omni.py -a pg-utah deletesliver 3sites-OF
     1023 $ omni.py -a eg-renci deletesliver 3sites-OF
     1024 $ omni.py -a eg-of-renci -V1 deletesliver 3sites-OF
    8261025}}}
    8271026