Changes between Version 150 and Version 151 of GENIExperimenter/ExperimentExample-OF-FOAM


Ignore:
Timestamp:
04/27/12 15:38:42 (12 years ago)
Author:
lnevers@bbn.com
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GENIExperimenter/ExperimentExample-OF-FOAM

    v150 v151  
    1 [[PageOutline(1-2)]]
    21
    3 = GENI !OpenFlow Experiment Example 2 =
     2This page has been moved to http://groups.geni.net/geni/wiki/GENIExperimenter/ExperimentExample-OF
    43
    5 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].
    6 
    7 The experiment in this page uses Omni V1.6.1 and 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.
    8 
    9 [[Image(OF-FOAM-experiment.jpg)]]
    10 
    11 Omni tools are used to reserve resources in each of the site's !FlowVisor !OpenFlow Aggregate Manager (FOAM) and GENI Aggregate Managers. Steps required to set up this !OpenFlow experiment are detailed in this page:
    12     1. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a1.AuthenticationandOmnitoolsconfiguration Authentication and Omni tools configuration]
    13     2. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a2.ReserveGENIIPsubnet Reserve IP Subnet]
    14     3. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a3.DetermineResourcesAvailability Determine Resources Availability]
    15     4. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a4.DefineComputeResourcesRSpecs Define Compute Resources RSpecs]
    16     5. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a5.DefineOpenFlowNetworkResourcesRSpecs Define OpenFlow Network Resources RSpecs]
    17     6. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a6.SetupExperiment Setup Experiment]
    18     7. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a7.RunExperiment Run Experiment]
    19     8. [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#a8.ReleaseResources Release Resources]
    20 
    21 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.
    22 
    23 == 1. Authentication and Omni tools configuration ==
    24 
    25 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.
    26 
    27 The following omni_config was used for this experiment along with the credentials from the GPO Clearinghouse to access the GENI Aggregate Managers in this experiment:
    28 {{{
    29 [omni]
    30 default_cf = pgeni
    31 users = lnevers
    32 
    33 # ---------- Users ----------
    34 [lnevers]
    35 urn = urn:publicid:IDN+pgeni.gpolab.bbn.com+user+lnevers
    36 keys = ~/.ssh/id_rsa.pub
    37 
    38 # ---------- Frameworks ----------
    39 [pgeni]
    40 type = pg
    41 ch = https://www.emulab.net:443/protogeni/xmlrpc/ch
    42 sa = https://www.pgeni.gpolab.bbn.com:443/protogeni/xmlrpc/sa
    43 cert = ~/.ssl/pgeni/encrypted-cleartext.pem
    44 key = ~/.ssl/pgeni/encrypted-cleartext.pem
    45 verbose=false
    46 
    47 [pg]
    48 type=pg
    49 ch = https://www.emulab.net:443/protogeni/xmlrpc/ch
    50 sa = https://www.emulab.net:443/protogeni/xmlrpc/sa
    51 cert = ~/.ssl/protogeni/encrypted-cleartext.pem
    52 key = ~/.ssl/protogeni/encrypted-cleartext.pem
    53 
    54 [aggregate_nicknames]
    55 plc-bbn=,http://myplc.gpolab.bbn.com:12346/
    56 plc-clemson=,http://myplc.clemson.edu:12346/
    57 plc-wisconsin=,https://wings-openflow-1.wail.wisc.edu:12346/
    58 of-bbn=,https://foam.gpolab.bbn.com:3626/foam/gapi/1
    59 of-clemson=,https://foam.clemson.edu:3626/foam/gapi/1
    60 of-wisconsin=,https://foam.wail.wisc.edu:3626/foam/gapi/1
    61 of-nlr=,https://foam.nlr.net:3626/foam/gapi/1
    62 }}}
    63 
    64 ''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.
    65 
    66 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 help@geni.net.
    67 
    68 == 2. Reserve GENI IP subnet ==
    69 
    70 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.
    71 
    72 
    73 == 3. Determine Resources Availability ==
    74 
    75 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).
    76 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:
    77 
    78 ||'''Site'''|| '''MyPLC Aggregate URL'''                    || '''MyPLC Aggregate Nickname''' || ''' FOAM Aggregate URL '''                          ||''' FOAM Aggregate Nickname '''  ||
    79 ||    BBN   || !http://myplc.gpolab.bbn.com:12346/          || plc-bbn                        || !https://foam.gpolab.bbn.com:3626/foam/gapi/1       || of-bbn                          ||
    80 || Clemson  || !http://myplc.clemson.edu:12346/             || plc-clemson                    || !https://foam.clemson.edu:3626/foam/gapi/1          || of-clemson                      ||
    81 || NLR      ||                                              ||                                || !https://foam.nlr.net:3626/foam/gapi/1              || of-nlr                          ||
    82 ||Wisconsin ||!https://wings-openflow-1.wail.wisc.edu:12346/|| plc-wisconsin                  || !https://foam.wail.wisc.edu:3626/foam/gapi/1        || of-wisconsin                    ||
    83 
    84 
    85 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.
    86 
    87 == 4. Define Compute Resources RSpecs ==
    88 
    89 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: 
    90 
    91  Step 1. Collect listresources from all MyPLC Aggregates. [[BR]]
    92  Step 2. Determine the MyPLC host to be reserved. [[BR]]
    93  Step 3. Generate the MyPLC Rspecs. [[BR]]
    94 
    95 === Step 1. Collect listresources from all MyPLC Aggregates ===
    96 
    97 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:
    98 
    99 {{{
    100  $ ./src/omni.py -a plc-bbn listresources -t ProtoGENI 2 -o             # generates rspec-myplc-gpolab-bbn-com-12346-.xml
    101  $ ./src/omni.py -a plc-clemson listresources -t ProtoGENI 2 -o               # generates rspec-myplc-clemson-edu-12346-.xml
    102  $ ./src/omni.py -a plc-wisconsin listresources -t ProtoGENI 2 -o  # generates rspec-wings-openflow-1-wail-wisc-edu-12346-.xml
    103 }}}
    104 
    105 The Omni commands above used the following options: [[BR]]
    106 ''-t'' to request the advertisement in V2 RSpec format, the default MyPLc advertisement is in SFA format. [[BR]]
    107 ''-o'' argument to get the listresources output into advertisement RSpec files, which are all attached to this page as a reference.  [[BR]]
    108 
    109 === Step 2. Determine the MyPLC hosts to be reserved ===
    110 
    111 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:
    112 
    113 ==== BBN MyPLC Host ====
    114 At the BBN MyPLC, we choose the host ''navis'':
    115 {{{
    116    <node component_id="urn:publicid:IDN+plc:gpolab:gpolab+node+navis.gpolab.bbn.com"
    117         component_manager_id="urn:publicid:IDN+plc:gpolab+authority+am"
    118         component_name="navis.gpolab.bbn.com" client_id="navis" exclusive="false">
    119         <sliver_type name="plab-vnode">
    120         </sliver_type>
    121     </node>
    122 }}}
    123 
    124 ==== Clemson MyPLC Host ====
    125 At the Clemson MyPLC, we choose the host ''planetlab4'':
    126 {{{
    127     <node component_id="urn:publicid:IDN+plc:cu+node+planetlab4.clemson.edu"
    128         component_manager_id="urn:publicid:IDN+plc+authority+am"
    129         component_name="planetlab4.clemson.edu" client_id="planetlab4" exclusive="false">
    130         <sliver_type name="plab-vnode">
    131         </sliver_type>
    132     </node>
    133 }}}
    134 
    135 ==== Wisconsin MyPLC Host ====
    136 At the Wisconsin MyPLC, we choose the host ''wings-openflow-1'':
    137 {{{
    138     <node component_id="urn:publicid:IDN+plc:wisc+node+wings-openflow-1.wail.wisc.edu"
    139         component_manager_id="urn:publicid:IDN+plc+authority+am"
    140         component_name="wings-openflow-1.wail.wisc.edu" client_id="wings-of1" exclusive="false">
    141         <sliver_type name="plab-vnode">
    142         </sliver_type>
    143     </node>
    144 
    145 }}}
    146 
    147 === Step 3. Generate the MyPLCs RSpecs ===
    148 
    149 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:
    150 {{{
    151 #!xml
    152 <?xml version="1.0" ?>
    153 <!-- Resources at AM:
    154         URN: unspecified_AM_URN
    155         URL: http://myplc.gpolab.bbn.com:12346/
    156  -->
    157 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    158         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    159         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    160         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    161         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    162         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    163 
    164         <!-- Insert MyPLC node details here -->
    165    
    166 </rspec>
    167 }}}
    168 
    169 Following are the complete MyPLC RSpecs for each site:
    170 
    171 '''BBN MyPLC Compute Resource RSpec '''
    172 {{{
    173 #!xml
    174 <?xml version="1.0" ?>
    175 <!-- Resources at AM:
    176         URN: unspecified_AM_URN
    177         URL: http://myplc.gpolab.bbn.com:12346/
    178  -->
    179 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    180         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    181         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    182         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    183         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    184         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    185    <node component_id="urn:publicid:IDN+plc:gpolab:gpolab+node+navis.gpolab.bbn.com"
    186         component_manager_id="urn:publicid:IDN+plc:gpolab+authority+am"
    187         component_name="navis.gpolab.bbn.com" client_id="navis" exclusive="false">
    188         <sliver_type name="plab-vnode">
    189         </sliver_type>
    190     </node>   
    191 </rspec>
    192 }}}
    193 
    194 ''' Clemson MyPLC Compute Resources RSpec'''
    195 {{{
    196 #!xml
    197 <?xml version="1.0" ?>
    198 <!-- Resources at AM:
    199         URN: unspecified_AM_URN
    200         URL: http://myplc.gpolab.bbn.com:12346/
    201  -->
    202 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    203         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    204         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    205         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    206         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    207         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    208     <node component_id="urn:publicid:IDN+plc:cu+node+planetlab4.clemson.edu"
    209         component_manager_id="urn:publicid:IDN+plc+authority+am"
    210         component_name="planetlab4.clemson.edu" client_id="planetlab4" exclusive="false">
    211         <sliver_type name="plab-vnode">
    212         </sliver_type>
    213     </node>   
    214 </rspec>
    215 }}}
    216 
    217 
    218 '''Wisconsin MyPLC Compute Resources RSpec'''
    219 {{{
    220 #!xml
    221 <?xml version="1.0" ?>
    222 <!-- Resources at AM:
    223         URN: unspecified_AM_URN
    224         URL: http://myplc.gpolab.bbn.com:12346/
    225  -->
    226 <rspec type="request" xmlns="http://www.protogeni.net/resources/rspec/2"
    227         xmlns:flack="http://www.protogeni.net/resources/rspec/ext/flack/1"
    228         xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1"
    229         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    230         xsi:schemaLocation="http://www.protogeni.net/resources/rspec/2
    231         http://www.protogeni.net/resources/rspec/2/request.xsd"> 
    232     <node component_id="urn:publicid:IDN+plc:wisc+node+wings-openflow-1.wail.wisc.edu"
    233         component_manager_id="urn:publicid:IDN+plc+authority+am"
    234         component_name="wings-openflow-1.wail.wisc.edu" client_id="wings-of1" exclusive="false">
    235         <sliver_type name="plab-vnode">
    236         </sliver_type>
    237     </node>
    238 </rspec>
    239 }}}
    240 
    241 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-FOAM#ReserveGENIIPsubnet above].
    242  
    243 
    244 == 5. Define OpenFlow Network Resources RSpecs ==
    245 
    246 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:
    247 
    248  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]]
    249  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 Group rules.  [[BR]]
    250  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]]
    251 
    252 Each of the above steps is covered in detail below:
    253 
    254 
    255 === Step 1: Collect listresources from all FOAM Aggregate ===
    256 
    257  1. Clemson FOAM aggregate:
    258 {{{
    259  $ ./src/omni.py -a of-clemson listresources -o    # generates output file rspec-foam-clemson-edu-3626-foam-gapi-1.xml
    260 }}}
    261  2. Wisconsin FOAM aggregate:
    262 {{{
    263  $ ./src/omni.py -a of-wisconsin listresources -o  # generates rspec-foam-wail-wisc-edu-3626-foam-gapi-1.xml
    264 }}}
    265  3. BBN FOAM aggregate:
    266 {{{
    267  $ ./src/omni.py -a of-bbn listresources -o # generates rspec-foam-gpolab-bbn-com-3626-foam-gapi-1.xml
    268 }}}
    269  4. NLR !OpenFlow Core FOAM aggregate:
    270 {{{
    271  $ ./src/omni.py -a of-nlr listresources -o        # generates rspec-foam-nlr-net-3626-foam-gapi-1.xml
    272 }}}
    273 
    274 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. 
    275 
    276 
    277 === Step 2: Determine site specific !OpenFlow details ===
    278 
    279 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.
    280  
    281 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.
    282 
    283 ==== BBN !OpenFlow Aggregate ====
    284 
    285 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:
    286 
    287 [[Image(BBNOFAggregateResources.jpg)]]
    288 
    289 The BBN !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    290    * Host ''navis.bbn.com'' is connected to port name 32 of the !OpenFlow switch named ''habanero''
    291    * !OpenFlow switch ''habanero'' has a DPID of ''06:d6:00:24:a8:c4:b9:00'' for VLAN 1750.
    292    * !OpenFlow switch ''habanero'' uses port name 47 to connect to port name 20 on the !OpenFlow switch ''poblano''.
    293    * !OpenFlow switch ''poblano'' has a DPID of ''06:d6:00:12:e2:b8:a5:d0'' for VLAN 1750.
    294    * VLAN 1750 is mapped to the Core VLAN 3715 on ''poblano'' port name 3.
    295 
    296 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  'port name' to 'port mapping' 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.
    297 
    298 These are the RSpec lines that define the ports on habanero:
    299 {{{
    300 
    301   <openflow:group name="bbn-1750-nodes">
    302     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:24:a8:c4:b9:00"     
    303                        component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    304                        dpid="06:d6:00:24:a8:c4:b9:00">
    305      <openflow:port name="32" num="56"/>
    306      <openflow:port name="47" num="71"/>
    307    </openflow:datapath>
    308  </openflow:group>
    309 
    310 }}}
    311 
    312 These are the RSpec lines that define the ports on poblano:
    313 
    314 {{{
    315  <openflow:group name="bbn-1750-3715">
    316      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
    317                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    318                         dpid="06:d6:00:12:e2:b8:a5:d0">
    319        <openflow:port num="3"/>
    320         <openflow:port num="20"/>
    321       </openflow:datapath>
    322  </openflow:group>
    323 
    324 }}}
    325 
    326 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:
    327 {{{
    328     <openflow:match>
    329       <openflow:use-group name="group-name" />
    330       <openflow:packet>
    331         <openflow:dl_type value="0x800,0x806"/>
    332         <openflow:nw_dst value="10.42.XX.0/24"/>
    333         <openflow:nw_src value="10.42.XX.0/24"/>
    334       </openflow:packet>
    335     </openflow:match>
    336 }}}
    337  ''Note:'' The ''openflow:use-group'' section of the !OpenFlow RSpec defines the traffic characteristics allowed for the experiment. [[BR]]
    338  ''Note:'' The ''group-name'' should match the ''openflow:group'' specific to the !OpenFlow switch [[BR]]
    339  ''Note:''  The address ''10.42.XX.0/24'' was requested as described in the section [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#ReserveGENIIPsubnet above]. Your RSpec will use the subnet you reserved.
    340 
    341 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.
    342 
    343 Let's modify the packet filter definition above so it applies to the BBN !OpenFlow resources:
    344 {{{
    345    <openflow:match>
    346 
    347       <openflow:use-group name="bbn-1750-nodes" />
    348       <openflow:use-group name="bbn-1750-3715" />
    349       <openflow:packet>
    350         <openflow:dl_type value="0x800,0x806"/>
    351         <openflow:nw_dst value="10.42.11.0/24"/>
    352         <openflow:nw_src value="10.42.11.0/24"/>
    353       </openflow:packet>
    354 
    355     </openflow:match>
    356 }}}
    357 
    358 The BBN !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#Step3:GenerateOpenFlowV3RSpec Step 3].
    359 
    360 ==== Clemson !OpenFlow Aggregate ====
    361 
    362 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:
    363 
    364 [[Image(ClemsonOFAggregateResources.jpg)]]
    365 
    366 The Clemson !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    367  * Host ''planetlab4.clemosn.edu'' is connected to port name ''39''
    368  * The !OpenFlow switch had a DPID of ''06:d6:00:26:f1:3f:e4:80''
    369  * The site !OpenFlow VLAN 1750 is connected to backbone VLAN 3715 on port name ''43''
    370 
    371 These are the lines from the Advertisement that should be used in the !OpenFlow request RSpec:
    372 {{{
    373 
    374   <openflow:group name="clemson-1750-3715">
    375 
    376      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam+datapath+06:d6:00:26:f1:3f:e4:80"
    377                     component_manager_id="urn:publicid:IDN+openflow:foam:foam+authority+am" dpid="06:d6:00:26:f1:3f:e4:80">
    378         <openflow:port name="39" num="39"/>
    379         <openflow:port name="43" num="43"/>
    380       </openflow:datapath>
    381   </openflow:group>
    382 }}}
    383 
    384 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:
    385 {{{
    386    <openflow:match>
    387 
    388       <openflow:use-group name="clemson-1750-3715" />
    389 
    390       <openflow:packet>
    391         <openflow:dl_type value="0x800,0x806"/>
    392         <openflow:nw_dst value="10.42.11.0/24"/>
    393         <openflow:nw_src value="10.42.11.0/24"/>
    394       </openflow:packet>
    395 
    396     </openflow:match>
    397 }}}
    398 
    399 The Clemson !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#Step3:GenerateOpenFlowV3RSpec Step 3].
    400 
    401 ==== Wisconsin !OpenFlow Aggregate ====
    402 
    403 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:
    404 
    405 [[Image(WisconsinOFAggregateResources.jpg)]]
    406 
    407 
    408 The Wisonsin !OpenFlow Aggregate image above shows the information required for the !OpenFlow RSpec:
    409  * Host ''wings-openflow-2.wail.wisc.edu'' is connected to port name ''22''.
    410  * The !OpenFlow switch with the hosts has a DPID of ''06:d6:00:23:47:cc:44:00''
    411  * The !OpenFlow switch with the hosts uses port name ''1'' to connect to a second switch where VLAN 1750 is mapped to 3715.
    412  * The second !OpenFlow switch has a DPID os ''06:d6:00:21:f7:be:8d:00''.
    413  * The second !OpenFlow switch uses port name''C3'' to map VLAN 1750 to 3715. 
    414 
    415 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.
    416 
    417 
    418 These are the lines from the Wisconsin !OpenFlow Advertisement that should be used in the !OpenFlow request RSpec:
    419 {{{
    420     <openflow:group name="wisconsin-nodes-1750">
    421       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+06:d6:00:23:47:cc:44:00"
    422                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+authority+am">
    423         <openflow:port num="1"/>
    424         <openflow:port num="22"/>
    425       </openflow:datapath>
    426     </openflow:group>
    427 
    428     <openflow:group name="wisconsin-1750-3715">
    429       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+06:d6:00:21:f7:be:8d:00"
    430                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+authority+am">
    431         <openflow:port num="3"/>
    432         <openflow:port num="51"/>
    433       </openflow:datapath>
    434     </openflow:group>
    435 }}}
    436 
    437 
    438 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:
    439 {{{
    440     <openflow:match>
    441 
    442       <openflow:use-group name="wisconsin-nodes-1750" />
    443       <openflow:use-group name="wisconsin-1750-3715" />
    444 
    445       <openflow:packet>
    446         <openflow:dl_type value="0x800,0x806"/>
    447         <openflow:nw_dst value="10.42.11.0/24"/>
    448         <openflow:nw_src value="10.42.11.0/24"/>
    449       </openflow:packet>
    450 
    451     </openflow:match>
    452 
    453 }}}
    454 
    455 The Wisconsin !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#Step3:GenerateOpenFlowV3RSpec Step 3].
    456 
    457 
    458 ==== NLR !OpenFlow Aggregate ====
    459 
    460 To define the NLR !OpenFlow RSpec review the [http://groups.geni.net/geni/wiki/SiteNlr#OpenFlow OpenFlow DPIDs] table for the core in the [http://groups.geni.net/geni/wiki/SiteNlr 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:
    461 {{{
    462    <openflow:group name="nlr-3715">
    463      <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" />
    464      <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" />
    465      <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" />
    466      <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" />
    467      <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" />
    468    </openflow:group>
    469 
    470    <openflow:match>
    471       <openflow:use-group name="nlr-3715" />
    472       <openflow:packet>
    473         <openflow:dl_type value="0x800,0x806"/>
    474         <openflow:nw_dst value="10.42.11.0/24"/>
    475         <openflow:nw_src value="10.42.11.0/24"/>
    476       </openflow:packet>
    477    </openflow:match>
    478 }}}
    479 
    480 The NLR !OpenFlow request RSpec will be completed in [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#Step3:GenerateOpenFlowV3RSpec Step 3].
    481 
    482 === Step 3: Generate OpenFlow V3 RSpec ===
    483 
    484 This 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-FOAM#Step2:DeterminesitespecificOpenFlowdetails Step 2] and generate the complete BBN, Clemson, Wisconsin and NLR !OpenFlow request RSpecs.
    485 
    486 The following !OpenFlow V3 RSpec template is used to start each RSpec:
    487 
    488 {{{
    489 #!xml
    490 <?xml version="1.1" encoding="UTF-8"?>
    491 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    492         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    493         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    494         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    495               http://www.geni.net/resources/rspec/3/request.xsd
    496               http://www.geni.net/resources/rspec/ext/openflow/3
    497               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    498     type="request">
    499    
    500     <openflow:sliver email="user@geni.net" description="OF Experiment" ref="http://www.geni.net">
    501       <openflow:controller url="tcp:example.geni.net:9933" type="primary" />
    502 
    503         <!-- RSpec details from Step 2 here -->
    504 
    505     </openflow:sliver>
    506 </rspec>
    507 }}}
    508 
    509 For the above template you must modify the following settings:
    510 
    511  * In the "openflow:sliver" line, replace the "user@geni.net" with your valid email address, and update the sliver description.
    512  * In the "openflow:controller" line, include your !OpenFlow controller name and port information.
    513 
    514 ''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-FOAM/nox-install.txt capture] of the !OpenFlow Controller software installation, and runtime commands used to run the experiment in this page.
    515 
    516 The modified !OpenFlow V3 Rspec template is shown below with the setting changes specific to our experiment:
    517 {{{
    518 #!xml
    519 <?xml version="1.1" encoding="UTF-8"?>
    520 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    521         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    522         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    523         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    524               http://www.geni.net/resources/rspec/3/request.xsd
    525               http://www.geni.net/resources/rspec/ext/openflow/3
    526               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    527     type="request">
    528    
    529     <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    530      <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    531 
    532         <!-- RSpec details from Step 2 here -->
    533 
    534     </openflow:sliver>
    535 </rspec>
    536 }}}
    537 
    538 Using the modified !OpenFlow V3 RSpec template we generate the 3 site !OpenFlow Rspecs by combining details from [wiki:GENIExperimenter/ExperimentExample-OF-FOAM#Step2:DeterminesitespecificOpenFlowdetails Step 2] with the modified template. Following are the completed site !OpenFlow RSpecs for the 3 sites in this experiment:
    539 
    540 ==== BBN !OpenFlow RSpec ====
    541 
    542 {{{
    543 #!xml
    544 <?xml version="1.1" encoding="UTF-8"?>
    545 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    546         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    547         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    548         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    549               http://www.geni.net/resources/rspec/3/request.xsd
    550               http://www.geni.net/resources/rspec/ext/openflow/3
    551               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    552     type="request">
    553  
    554 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    555    <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    556 
    557    <openflow:group name="bbn-1750-nodes">
    558      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:24:a8:c4:b9:00"     
    559                        component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    560                        dpid="06:d6:00:24:a8:c4:b9:00">
    561       <openflow:port name="32" num="56"/>
    562       <openflow:port name="47" num="71"/>
    563     </openflow:datapath>
    564   </openflow:group>
    565 
    566   <openflow:group name="bbn-1750-3715">
    567       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
    568                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am"
    569                         dpid="06:d6:00:12:e2:b8:a5:d0">
    570         <openflow:port num="3"/>
    571         <openflow:port num="20"/>
    572        </openflow:datapath>
    573   </openflow:group>
    574 
    575   <openflow:match>
    576 
    577       <openflow:use-group name="bbn-1750-nodes" />
    578       <openflow:use-group name="bbn-1750-3715" />
    579 
    580       <openflow:packet>
    581         <openflow:dl_type value="0x800,0x806"/>
    582         <openflow:nw_dst value="10.42.11.0/24"/>
    583         <openflow:nw_src value="10.42.11.0/24"/>
    584       </openflow:packet>
    585 
    586    </openflow:match>
    587 
    588  </openflow:sliver>
    589 </rspec>
    590 }}}
    591 
    592 
    593 ==== Clemson !OpenFlow RSpec ====
    594 
    595 
    596 {{{
    597 #!xml
    598 <?xml version="1.1" encoding="UTF-8"?>
    599 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    600         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    601         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    602         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    603               http://www.geni.net/resources/rspec/3/request.xsd
    604               http://www.geni.net/resources/rspec/ext/openflow/3
    605               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    606     type="request">
    607    
    608 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    609   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    610 
    611   <openflow:group name="clemson-1750-3715">
    612      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam+datapath+06:d6:00:26:f1:3f:e4:80"
    613                     component_manager_id="urn:publicid:IDN+openflow:foam:foam+authority+am" dpid="06:d6:00:26:f1:3f:e4:80">
    614         <openflow:port name="39" num="39"/>
    615         <openflow:port name="43" num="43"/>
    616       </openflow:datapath>
    617   </openflow:group>
    618 
    619   <openflow:match>
    620       <openflow:use-group name="clemson-1750-3715" />
    621       <openflow:packet>
    622         <openflow:dl_type value="0x800,0x806"/>
    623         <openflow:nw_dst value="10.42.11.0/24"/>
    624         <openflow:nw_src value="10.42.11.0/24"/>
    625       </openflow:packet>
    626     </openflow:match>
    627 
    628 </openflow:sliver>
    629 </rspec>
    630 }}}
    631 
    632 ==== Wisconsin !OpenFlow RSpec ====
    633 
    634 
    635 {{{
    636 #!xml
    637 <?xml version="1.1" encoding="UTF-8"?>
    638 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    639         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    640         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    641         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    642               http://www.geni.net/resources/rspec/3/request.xsd
    643               http://www.geni.net/resources/rspec/ext/openflow/3
    644               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    645     type="request">
    646    
    647 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    648   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    649 
    650    <openflow:group name="wisconsin-nodes-1750">
    651       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+0
    652 6:d6:00:23:47:cc:44:00"
    653                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+au
    654 thority+am">
    655         <openflow:port num="1"/>
    656         <openflow:port num="22"/>
    657       </openflow:datapath>
    658    </openflow:group>
    659 
    660    <openflow:group name="wisconsin-1750-3715">
    661       <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+datapath+0
    662 6:d6:00:21:f7:be:8d:00"
    663                          component_manager_id="urn:publicid:IDN+openflow:foam:foam.wail.wisc.edu+au
    664 thority+am">
    665         <openflow:port num="3"/>
    666         <openflow:port num="51"/>
    667       </openflow:datapath>
    668    </openflow:group>
    669 
    670    <openflow:match>
    671       <openflow:use-group name="wisconsin-nodes-1750" />
    672       <openflow:use-group name="wisconsin-1750-3715" />
    673       <openflow:packet>
    674         <openflow:dl_type value="0x800,0x806"/>
    675         <openflow:nw_dst value="10.42.11.0/24"/>
    676         <openflow:nw_src value="10.42.11.0/24"/>
    677       </openflow:packet>
    678     </openflow:match>
    679 
    680 
    681 </openflow:sliver>
    682 </rspec>
    683 
    684 }}}
    685 
    686 ==== NLR !OpenFlow RSpec ====
    687 
    688 {{{
    689 #!xml
    690 <?xml version="1.1" encoding="UTF-8"?>
    691 <rspec  xmlns="http://www.geni.net/resources/rspec/3"
    692         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
    693         xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
    694         xs:schemaLocation="http://www.geni.net/resources/rspec/3
    695               http://www.geni.net/resources/rspec/3/request.xsd
    696               http://www.geni.net/resources/rspec/ext/openflow/3
    697               http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    698     type="request">
    699    
    700 <openflow:sliver email="lnevers@geni.net" description="OF Experiment" ref="http://www.geni.net">
    701   <openflow:controller url="tcp:navis.gpolab.bbn.com:33017" type="primary" />
    702 
    703    <openflow:group name="nlr-3715">
    704      <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" />
    705      <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" />
    706      <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" />
    707      <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" />
    708      <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" />
    709    </openflow:group>
    710 
    711    <openflow:match>
    712       <openflow:use-group name="nlr-3715" />
    713       <openflow:packet>
    714         <openflow:dl_type value="0x800,0x806"/>
    715         <openflow:nw_dst value="10.42.11.0/24"/>
    716         <openflow:nw_src value="10.42.11.0/24"/>
    717       </openflow:packet>
    718    </openflow:match>
    719 </openflow:sliver>
    720 </rspec>
    721 
    722 }}}
    723 
    724 
    725 == 6. Setup Experiment ==
    726 
    727 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-FOAM#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: 
    728 {{{
    729  $ cd gcf-1.6.1
    730  $ ./src/omni.py createslice 3sites-OF
    731  $ ./src/omni.py -a of-bbn createsliver 3sites-OF openflow-bbn.rspec
    732  $ ./src/omni.py -a of-clemson createsliver 3sites-OF openflow-clemson.rspec   
    733  $ ./src/omni.py -a of-wisconsin createsliver 3sites-OF openflow-wisconsin.rspec
    734  $ ./src/omni.py -a of-nlr createsliver 3sites-OF openflow-nlr.rspec
    735  $ ./src/omni.py -a plc-bbn createsliver 3sites-OF myplc-bbn.rspec
    736  $ ./src/omni.py -a plc-clemson createsliver  3sites-OF  myplc-clemson.rspec
    737  $ ./src/omni.py -a plc-wisconsin createsliver 3sites-OF myplc-wisconsin.rspec
    738                    
    739 }}}
    740 
    741 The output for running each of the above commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF-FOAM/openflow-foam-example.txt here]. Also each of the RSpecs used to create slivers are also attached to this page.
    742 
    743 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:
    744 {{{
    745  $ ./src/omni.py -a of-bbn sliverstatus 3sites-OF
    746  $ ./src/omni.py -a of-clemson sliverstatus 3sites-OF
    747  $ ./src/omni.py -a of-wisconsin sliverstatus 3sites-OF
    748  $ ./src/omni.py -a of-nlr sliverstatus 3sites-OF
    749  $ ./src/omni.py -a plc-clemson sliverstatus 3sites-OF
    750  $ ./src/omni.py -a plc-wisconsin  sliverstatus 3sites-OF
    751  $ ./src/omni.py -a plc-bbn sliverstatus 3sites-OF
    752 }}}
    753 The output for running each of the above commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF-FOAM/openflow-foam-sliverstatus.txt here].
    754 
    755 
    756 You can now renew the slice and slivers. Following are the commands to extend the reservation for the resources:
    757 {{{
    758  $ ./src/omni.py renewslice  3sites-OF 2012-04-30
    759  $ ./src/omni.py -a of-bbn renewsliver 3sites-OF 2012-04-30
    760  $ ./src/omni.py -a of-clemson renewsliver 3sites-OF 2012-04-30
    761  $ ./src/omni.py -a of-wisconsin renewsliver 3sites-OF 2012-04-30
    762  $ ./src/omni.py -a of-nlr renewsliver 3sites-OF 2012-04-30
    763  $ ./src/omni.py -a of-clemson renewsliver 3sites-OF 2012-04-30
    764  $ ./src/omni.py -a of-wisconsin  renewsliver 3sites-OF 2012-04-30
    765  $ ./src/omni.py -a of-bbn renewsliver 3sites-OF 2012-04-30
    766 }}}
    767 
    768 The output for running each of the above renew commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF-FOAM/openflow-foam-renew.txt here].
    769 
    770 
    771 === FOAM sliver approval ===
    772 
    773 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:
    774 
    775 [[Image(FOAM-sliver-approve.jpg)]] 
    776 
    777 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).
    778 
    779 == 7. Run Experiment ==
    780 
    781 Once your flowspace has been approved, you should be able 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].
    782 
    783 === Login to a MyPLC host ===
    784 
    785 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:
    786 {{{
    787  $ ./src/omni.py -a plc-clemson sliverstatus 3sites-OF
    788  $ ./src/omni.py -a plc-bbn sliverstatus 3sites-OF
    789  $ ./src/omni.py -a plc-wisconsin sliverstatus 3sites-OF
    790 }}}
    791 
    792 The output for running each of the above sliverstatus commands is attached [http://groups.geni.net/geni/attachment/wiki/GENIExperimenter/ExperimentExample-OF-FOAM/sliverstatus-3sites-OF-exp.txt here].
    793 
    794 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:
    795 
    796 || MyPLC Site || Login (pl_login)           || MyPLC Host (pl_hostname) || Command to connect ||
    797 || ||
    798 ||BBN      || pgenigpolabbbncom_3sitesOF || navis.gpolab.bbn.com  || ssh pgenigpolabbbncom_3sitesOF@navis.gpolab.bbn.com
    799 ||||
    800 ||Clemson  || pgenigpolabbbncom_3sitesOF || planetlab4.clemson.edu|| ssh pgenigpolabbbncom_3sitesOF@planetlab4.clemson.edu ||
    801 || ||
    802 ||Wisconsin|| pgenigpolabbbncom_3sitesOF || wings-openflow-2.wail.wisc.edu|| ssh pgenigpolabbbncom_3sitesOF@wings-openflow-2.wail.wisc.edu ||
    803 
    804 
    805 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:
    806 {{{
    807 $ ssh pgenigpolabbbncom_3sitesOF@navis.gpolab.bbn.com
    808 Last login: Fri Apr 20 15:22:13 2012 from sendaria.gpolab.bbn.com
    809 [pgenigpolabbbncom_3sitesOF@navis ~]$ /sbin/ifconfig |egrep "10.42.11\." -A 1 -B 1
    810 eth1.1750:42011 Link encap:Ethernet  HWaddr 00:1B:21:5A:E6:A9 
    811           inet addr:10.42.11.55  Bcast:10.42.11.255  Mask:255.255.255.0
    812           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    813 }}}
    814 
    815 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:
    816 {{{
    817 [pgenigpolabbbncom_3sitesOF@navis ~]$ ping 10.42.11.104 -c 3
    818 PING 10.42.11.104 (10.42.11.104) 56(84) bytes of data.
    819 64 bytes from 10.42.11.104: icmp_seq=1 ttl=64 time=59.3 ms
    820 64 bytes from 10.42.11.104: icmp_seq=2 ttl=64 time=59.3 ms
    821 64 bytes from 10.42.11.104: icmp_seq=3 ttl=64 time=59.3 ms
    822 
    823 --- 10.42.11.104 ping statistics ---
    824 3 packets transmitted, 3 received, 0% packet loss, time 2006ms
    825 rtt min/avg/max/mdev = 59.327/59.337/59.354/0.199 ms
    826 [pgenigpolabbbncom_3sitesOF@navis ~]$
    827 }}}
    828 
    829 and from Wisconsin host wings-openflow-2 to Clemson host planetlab4:
    830 {{{
    831 [pgenigpolabbbncom_3sitesOF@wings-openflow-2 ~]$ ping 10.42.11.104 -c 3
    832 PING 10.42.11.104 (10.42.11.104) 56(84) bytes of data.
    833 64 bytes from 10.42.11.104: icmp_seq=1 ttl=64 time=40.6 ms
    834 64 bytes from 10.42.11.104: icmp_seq=2 ttl=64 time=40.6 ms
    835 64 bytes from 10.42.11.104: icmp_seq=3 ttl=64 time=40.6 ms
    836 
    837 --- 10.42.11.104 ping statistics ---
    838 3 packets transmitted, 3 received, 0% packet loss, time 2044ms
    839 rtt min/avg/max/mdev = 40.610/40.652/40.699/0.168 ms
    840 }}}
    841 
    842 You can now run an experiment!
    843 
    844 == 8. Release Resources ==
    845 
    846 When 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:
    847 {{{
    848 ./src/omni.py -a of-bbn deletesliver 3sites-OF
    849 ./src/omni.py -a of-clemson deletesliver 3sites-OF
    850 ./src/omni.py -a of-wisconsin deletesliver 3sites-OF
    851 ./src/omni.py -a of-nlr deletesliver 3sites-OF
    852 ./src/omni.py -a plc-clemson deletesliver  3sites-OF
    853 ./src/omni.py -a plc-wisconsin deletesliver 3sites-OF
    854 ./src/omni.py -a plc-bbn deletesliver 3sites-OF
    855 
    856 }}}
    857 
    858 
    859 
    860 ----
    861 {{{
    862 #!html
    863 Email <a href="mailto:help@geni.net"> help@geni.net </a> for GENI support or email <a href="mailto:luisa.nevers@bbn.com">me</a> with feedback on this page!
    864 }}}