wiki:GENIExperimenter/ExperimentExample-OF

GENI OpenFlow Experiment Example 2

This page illustrates an OpenFlow (OF) example for the 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 help@geni.net.

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. 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).

Omni 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:

  1. Authentication and Omni tools configuration
  2. Reserve IP Subnet
  3. Determine Resources Availability
  4. Define Compute Resources RSpecs
  5. Define OpenFlow Network Resources RSpecs
  6. Setup Experiment
  7. Run Experiment
  8. Release Resources

The 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.

1. Authentication and Omni tools configuration

This example assumes that GENI credentials have been set up as detailed in the GENI Credentials section of the 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.

A list of aggregate managers is found at GENI Aggregate page, if your site is not listed on this page you should contact your site administrator, or help@geni.net.

2. Reserve GENI IP subnet

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 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 GENI Network Core Subnet page. You do not need to request a specific address, one will be chosen for you.

3. Determine Resources Availability

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 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:

Site Compute Resource Aggregate URL Compute Resource Aggregate Nickname FOAM Aggregate URL FOAM Aggregate Nickname
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
GPO Site https://foam.gpolab.bbn.com:3626/foam/gapi/1 of-gpo
UEN Regional https://foamyflow.chpc.utah.edu:3626/foam/gapi/1 of-uen
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
NLR https://foam.nlr.net:3626/foam/gapi/1 of-nlr
Internet2 https://foam.net.internet2.edu:3626/foam/gapi/1 of-i2
RENCI EG https://rci-hn.exogeni.net:11443/orca/xmlrpc eg-renci https://rci-hn.exogeni.net:3626/foam/gapi/1 eg-of-renci

For a complete list of available GENI aggregates see the GENI Aggregates page. Also, this experiment uses aggregate_nicknames defined in the omni_config to replace the aggregate URLs used by the Omni commands.

4. Define Compute Resources RSpecs

If you are interested in finding out available resources, you can execute the following commands at the each of the compute aggregates :

 $ omni.py -a ig-gpo listresources -o            # generates rspec-instageni-gpolab-bbn-com-protogeniv2.xml
 $ omni.py -a pg-utah listresources -o           # generates rspec-www-emulab-net-protogeniv2.xml
 $ omni.py -a eg-renci listresources -o          # generates rspec-rci-hn-exogeni-net-11443-orca.xml

Note the -o option sends the Advertisement RSpec output to a file.

This 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:

5. Define OpenFlow Network Resources RSpecs

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:

  • 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.
  • Determine addresses and ports, and define site specific OpenFlow packet filter rules.
  • Using guidelines from the Writing OF V3 RSpec page merge the information from Step 2 to generate the FOAM request RSpecs.

Each of the above steps is covered in detail below:

Collect listresources from all FOAM Aggregate

To determine the resource definitions to use in this experiment, we check resources on each FOAM aggregates in the experiment. The GPO Site uses 2 FOAM aggregates in the experiment, the Site's FOAM aggregate and the InstaGENI FOAM aggregates:

 $ omni.py -a of-gpo -V 1 listresources -o       # generates rspec-foam-gpolab-bbn-com.xml
 $ omni.py -a ig-of-gpo -V 1 listresources -o    # generates spec-foam-instageni-gpolab-bbn-com.xml

The NLR Core FOAM aggregate:

 $ omni.py -a of-nlr -V 1 listresources -o       # generates rspec-foam-nlr-net.xml

The Internet2 Core FOAM aggregate:

 $ omni.py -a of-i2 -V 1 listresources -o        # generates  rspec-foam-net-internet2-edu.xml

The Utah PG site uses the UEN FOAM aggregates:

 $ omni.py -a of-uen -V 1 listresources -o        # generates rspec-foamyflow-chpc-utah-edu.xml

The RENCI FOAM Aggregate:

 $ omni.py -a eg-of-renci -V 1 listresources -o          # rspec-rci-hn-exogeni-net.xml

The output Advertisement RSpec files generated by the -o capture the switch and the port information to be used in the FOAM request RSpec.

Determine site specific OpenFlow details

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 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. Now, 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.

GPO OpenFlow Aggregates

To 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 GPOLab InstaGENI OpenFlow Aggregate page. Below is a diagram of the GPO Site FOAMs with the relevant request RSpec details highlighted:

The GPO OpenFlow Aggregate image above shows some the information required for the OpenFlow RSpec such as the ports assignments:

  • The InstaGENI rack is connected to port name 16 of the OpenFlow switch named poblano
  • The InstaGENI VM servers are on ports 1 and 4.
  • The GPO Site OF switch poblano uses port 3 to map the shared meso-scale VLAN 1750 to the Backbone OF VLAN 3715.

The GPOLab InstaGENI !OpenFlow Aggregate page also shown the DPIDs for the two GPO OpenFlow switches. DPIDs are also listed in the listresource output.

  • OpenFlow switch poblano has a DPID of 06:d6:00:12:e2:b8:a5:d0 for VLAN 1750.
  • OpenFlow switch for InstaGENI has DPID of 06:d6:84:34:97:c6:c9:00 for VLAN 1750.

Now we know the site specific information and can start to define the GPO OpenFlow resource request RSpecs.

GPO Site OpenFlow RSpec: These are the RSpec lines that define the datapath on poblano, the GPO site OpenFlow site switch:

    <openflow:group name="gpo-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am">
         <openflow:port name="GBE0/7" num="7"/> <!-- to NLR 2650 -->
         <openflow:port name="GBE0/16" num="16"/>  <!-- to BBN InstaGENI rack -->
      </openflow:datapath>
    </openflow:group>

The 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:

    <openflow:match>
      <openflow:use-group name="gpo-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
    </openflow:match>

Note: The openflow:use-group section of the OpenFlow RSpec defines the traffic characteristics allowed for the experiment.
Note: The group-name should match the openflow:group specific to the OpenFlow switch
Note: The address 10.42.11.0/24 was requested as described in the section above. Your RSpec will use the subnet you reserved.

For a detailed look at OpenFlow configuration parameters, see the OF V3 RSpec page. On this page you will also find the list of available packet header fields that can be used to filter the OpenFlow traffic.

GPO InstaGENI OpenFlow RSpec: These are the RSpec lines that define the datapath for the GPO InstaGENI OpenFlow switch:

 <openflow:group name="ig-gpo-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+datapath+06:d6:84:34:97:c6:c9:00" 
    	               component_manager_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+authority+am"
                       dpid="06:d6:84:34:97:c6:c9:00">
      <openflow:port name="E4" num="100"/><!-- GPO InstaGENI VM Server PC2 -->
      <openflow:port name="E1" num="97"/> <!-- GPO InstaGENI VM server PC1 -->
      <openflow:port name="E24" num="120"/> <!-- GPO InstaGENI rack connection to GPO Site Switch-->
      <openflow:port name="E23" num="119"/> <!-- GPO InstaGENI Campus Resources -->
     </openflow:datapath>   
    </openflow:group>

The GPO InstaGENI OpenFlow RSpec also includes a packet filter definition for traffic characteristics allowed:

    <openflow:match>
      <openflow:use-group name="ig-gpo-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
    </openflow:match>

The GPO OpenFlow request RSpecs will be completed in Step 3.

PG Utah OpenFlow Aggregate

To define the OpenFlow RSpec for the PG Utah site review the information in the 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 UEN OpenFlow Switch Port List section, the UEN OpenFlow switch only uses two ports:

  • Port 21 connect to the PG aggregation switch which connects both Utah PG and Utah InstaGENI
  • Port 22 connects to the Internet2 OpenFlow Switch in Los Angeles.

This very simple topology is captured in the diagram below which illustrates the ports and OpenFlow datapath:

The UEN OpenFlow switch DPID can be found by executing an omni listresources; DPID is 06:d6:ac:16:2d:f5:2d:00.

These are the settings for the datapath in the UEN OpenFlow request RSpec:

   <openflow:group name="uen-1750">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+datapath+06:d6:ac:16:2d:f5:2d:00" 
	component_manager_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+authority+am" 
         dpid="06:d6:ac:16:2d:f5:2d:00">
        <openflow:port name="A21" num="21"/>
        <openflow:port name="A22" num="22"/>
      </openflow:datapath>
    </openflow:group>
 

This is the packet filter definitions for the IP subnet range reserved for this experiment:

   <openflow:match>
      <openflow:use-group name="uen-1750" />
      <openflow:packet>
	<openflow:dl_type value="0x800,0x806"/>
	<openflow:nw_dst value="10.42.11.0/24"/>
	<openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
    </openflow:match>

The Utah UEN OpenFlow request RSpec will be completed in Step 3.

RENCI OpenFlow Aggregate

To 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:

    <openflow:group name="eg-renci-1750">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+datapath+00:01:08:17:f4:b3:5b:00" 
	component_manager_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+authority+am" dpid="00:01:08:17:f4:b3:5b:00" >
     </openflow:datapath>
    </openflow:group>

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 RENCI ExoGENI OpenFlow resources:

    <openflow:match>
      <openflow:use-group name="eg-renci-1750" />
      <openflow:packet>
	<openflow:dl_vlan value="1750"/>
	<openflow:dl_type value="0x800,0x806"/>
	<openflow:nw_dst value="10.42.11.0/24"/>
	<openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
    </openflow:match>

The RENCI ExoGENI OpenFlow request RSpec will be completed in Step 3.

NLR OpenFlow Aggregate

To define the NLR OpenFlow RSpec we must first decide which path we will choose from the available GENI backbone VLANs. See the 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:

From 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.

Define Experiment NLR Sites Details:

The 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 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:

NLR CHIC 1750 (06:d6:00:23:47:c8:bc:00):

  • Port Name = 3; Port Number = 3; Connects to = NLR CHIC 3715
  • Port Name = 9; Port Number = 9; Connects to = GPO 1750


NLR ATLA 1750 (06:d6:00:24:a8:d2:b8:40):

  • Port Name = 3; Port Number = 3; Connects to = NLR ATLA 3715
  • Port Name = 25; Port Number = 49; Connects to = RENCI 1750

Note 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.

Now 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:

    <openflow:group name="nlr-chic-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:23:47:c8:bc:00" 
       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" 
        dpid="06:d6:00:23:47:c8:bc:00"> <!-- NLR CHIC 3715 --> 
        <openflow:port name="3" num="3"/> <!-- NLR CHIC 3715 Port --> 
        <openflow:port name="9" num="9"/> <!-- GPO 1750 -->
      </openflow:datapath>
    </openflow:group>

    <openflow:group name="nlr-atla-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:24:a8:d2:b8:40" 
       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" 
       dpid="06:d6:00:24:a8:d2:b8:40"> <!-- NLR ATLA 3715 -->
    <openflow:port name="3" num="3"/> <!-- NLR ATLA 3715 Port -->
    <openflow:port name="25" num="49"/> <!-- RENCI 1750 -->
    </openflow:datapath>
    </openflow:group>

Define Network Core VLAN 3715 Details:

Then we review the 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:
NLR CHIC 3715 (0e:83:00:23:47:c8:bc:00)
NLR ATLA 3715 (0e:83:00:24:a8:d2:b8:40)

and we define the NLR 3715 datapath for NLR Chicago and Atlanta:

    <openflow:group name="nlr-chic-3715">
       <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" 
         dpid="0e:83:00:23:47:c8:bc:00">  <!-- NLR CHIC 3715 -->
       </openflow:datapath>
    </openflow:group>

    <openflow:group name="nlr-atla-3715">
       <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" 
         dpid="0e:83:00:24:a8:d2:b8:40">  <!-- NLR ATLA 3715 -->
      </openflow:datapath>
    </openflow:group>

As with all RSpecs, we define the packet filtering for the subnet used in the experiment:

   <openflow:match>
      <openflow:use-group name="nlr-chic-1750" />
      <openflow:use-group name="nlr-atla-1750" />
      <openflow:use-group name="nlr-chic-3715" />
      <openflow:use-group name="nlr-atla-3715" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
   </openflow:match>

The NLR OpenFlow request RSpec will be completed in Step 3.

Internet2 OpenFlow Aggregate

From 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.

Define Experiment Site Details:

There 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 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:
I2 LOSA 1750 (06:d6:00:12:e2:22:63:38) :

  • Port Name = 12; Port Number = 12; Connects to = I2 UEN 1750
  • Port Name = 13; Port Number = 13; Connects to = I2 Los Angeles 3715

We use this information to define the site specific portion of the RSpec that maps VLAN 1750 to VLAN 3715:

    <openflow:group name="i2-losa-1750">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+06:d6:00:12:e2:22:63:38" 
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="06:d6:00:12:e2:22:63:38">  <!-- I2 Los Angeles 3715 Path -->
        <openflow:port name="GBE0/12" num="12"/> <!-- I2 UEN 1750 -->
        <openflow:port name="GBE0/13" num="13"/> <!-- I2 Los Angeles 3715 Port -->
      </openflow:datapath>
    </openflow:group>

Define Network Core VLAN 3715 Details:

Then we review the 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:


I2 ATLA 3715 (0e:83:00:12:e2:22:63:6e)
I2 HOUS 3715 (0e:83:00:12:e2:22:81:42)
I2 LOSA 3715 (0e:83:00:12:e2:22:63:38)


Now we define the RSpec entries for the path:

   <openflow:group name="i2-atla-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:6e"
      component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
      dpid="0e:83:00:12:e2:22:63:6e"> <!-- I2 ATLA 3715 -->
      </openflow:datapath>
   </openflow:group>

   <openflow:group name="i2-hous-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:81:42"
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="0e:83:00:12:e2:22:81:42"> <!-- I2 ATLA 3715 -->
      </openflow:datapath>
   </openflow:group>

   <openflow:group name="i2-losa-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:38" 
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="0e:83:00:12:e2:22:63:38"> <!-- I2 LOSA 3715 -->
      </openflow:datapath>
   </openflow:group>

We than add the packet filter to allow our subnet range:

   <openflow:match>
      <openflow:use-group name="i2-atla-3715" />
      <openflow:use-group name="i2-hous-3715" />
      <openflow:use-group name="i2-losa-3715" />
      <openflow:use-group name="i2-losa-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
   </openflow:match>

The Internet2 OpenFlow request RSpec will be completed in Step 3.

Generate OpenFlow V3 RSpec

This section uses guidelines from the Writing OF V3 RSpec page to merge information from Step 2 and generate the complete BBN, Clemson, Wisconsin and NLR OpenFlow request RSpecs.

The following OpenFlow V3 RSpec template is used to start each RSpec:

<?xml version="1.1" encoding="UTF-8"?>
<rspec  xmlns="http://www.geni.net/resources/rspec/3"
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
        xs:schemaLocation="http://www.geni.net/resources/rspec/3
              http://www.geni.net/resources/rspec/3/request.xsd
              http://www.geni.net/resources/rspec/ext/openflow/3
              http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    type="request">
    
    <openflow:sliver email="user@geni.net" description="OF Experiment" ref="http://www.geni.net">
      <openflow:controller url="tcp:example.geni.net:9933" type="primary" />

        <!-- Insert RSpec details from Step 2 here -->

    </openflow:sliver>
</rspec>

For the above template you must modify the following settings:

  • In the "openflow:sliver" line, replace the "user@geni.net" with your valid email address, and update the sliver description.
  • In the "openflow:controller" line, include your OpenFlow controller name and port information.

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 Setup an OpenFlow Controller. Also, attached to this page is a capture of the OpenFlow Controller software installation, and runtime commands used to run the experiment in this page.

The modified OpenFlow V3 RSpec template is shown below with the setting changes specific to our experiment:

<?xml version="1.1" encoding="UTF-8"?>
<rspec  xmlns="http://www.geni.net/resources/rspec/3"
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
        xs:schemaLocation="http://www.geni.net/resources/rspec/3
              http://www.geni.net/resources/rspec/3/request.xsd
              http://www.geni.net/resources/rspec/ext/openflow/3
              http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
    type="request">
    
    <openflow:sliver email="lnevers@geni.net" description="OpenFlow Experiment Example" ref="http://www.geni.net">
     <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />
     
        <!-- RSpec details from Step 2 here -->

    </openflow:sliver>
</rspec>

Using the modified OpenFlow V3 RSpec template we generate the 3 Meso-scale sites OpenFlow Rspecs by combining details from Step 2 with the modified template. Following are the completed site OpenFlow RSpecs for the 3 sites in this experiment:

GPO OpenFlow RSpecs

The following is the OpenFlow request RSpec for the GPO Site's FOAM aggregate openflow-ig-gpo.rspec:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://foam.gpolab.bbn.com:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

    <openflow:group name="gpo-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+datapath+06:d6:00:12:e2:b8:a5:d0"
                         component_manager_id="urn:publicid:IDN+openflow:foam:foam.gpolab.bbn.com+authority+am">
         <openflow:port name="GBE0/7" num="7"/> <!-- to NLR 2650 -->
         <openflow:port name="GBE0/16" num="16"/>  <!-- to BBN InstaGENI rack -->
      </openflow:datapath>
    </openflow:group>
    <openflow:match>

      <openflow:use-group name="gpo-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>

    </openflow:match>

  </openflow:sliver>
</rspec>

The following request RSpec is for the GPO InstaGENI FOAM Aggregate openflow-ig-gpo.rspec :

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://foam.instageni.gpolab.bbn.com:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

    <openflow:group name="ig-gpo-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+datapath+06:d6:84:34:97:c6:c9:00" 
        component_manager_id="urn:publicid:IDN+openflow:foam:foam.instageni.gpolab.bbn.com+authority+am" dpid="06:d6:84:34:97:c6:c9:00">
        <openflow:port name="E1" num="97"/> <!-- VM Server 1 --> 
        <openflow:port name="E4" num="100"/> <!-- VM Server 2 -->
        <openflow:port name="E24" num="120"/> <!-- to GPO FOAM -->
      </openflow:datapath>
    </openflow:group>

    <openflow:match>
      <openflow:use-group name="ig-gpo-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>

    </openflow:match>

  </openflow:sliver>
</rspec>

PG Utah OpenFlow RSpecs

The following request RSpec is for the PG Utah FOAM aggregate which is the Regional UEN FOAM aggregate openflow-uen.rspec:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://foamyflow.chpc.utah.edu:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

    <openflow:group name="uen-1750">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+datapath+06:d6:ac:16:2d:f5:2d:00" 
        component_manager_id="urn:publicid:IDN+openflow:foam:foamyflow.chpc.utah.edu+authority+am" dpid="06:d6:ac:16:2d:f5:2d:00">
        <openflow:port name="A21" num="21"/>
        <openflow:port name="A22" num="22"/>
      </openflow:datapath>
    </openflow:group>

    <openflow:match>
      <openflow:use-group name="uen-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>

    </openflow:match>

  </openflow:sliver>
</rspec>

RENCI OpenFlow RSpec

The following request RSpec is for the RENCI ExoGENI FOAM aggregate openflow-eg-renci.rspec:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://rci-hn.exogeni.net:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

  <openflow:group name="renci-1750">
     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+datapath+00:01:08:17:f4:b3:5b:00" 
        component_manager_id="urn:publicid:IDN+openflow:foam:rci-hn.exogeni.net+authority+am" >
     </openflow:datapath>
    </openflow:group>

    <openflow:match>

      <openflow:use-group name="renci-1750" />

      <openflow:packet>
        <openflow:dl_vlan value="1750"/>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>

    </openflow:match>

  </openflow:sliver>
</rspec>

NLR OpenFlow RSpec

The following request RSpec is for the NLR FOAM aggregate openflow-nlr.rspec:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://foam.nlr.net:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

    <openflow:group name="nlr-chic-1750">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:23:47:c8:bc:00" 
       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" 
        dpid="06:d6:00:23:47:c8:bc:00"> <!-- NLR CHIC 3715 --> 
        <openflow:port name="3" num="3"/> <!-- NLR CHIC 3715 Port --> 
        <openflow:port name="9" num="9"/> <!-- GPO 1750 -->
      </openflow:datapath>
    </openflow:group>

    <openflow:group name="nlr-atla-1750">
     <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+datapath+06:d6:00:24:a8:d2:b8:40" 
       component_manager_id="urn:publicid:IDN+openflow:foam:foam.nlr.net+authority+am" 
       dpid="06:d6:00:24:a8:d2:b8:40"> <!-- NLR ATLA 3715 -->
    <openflow:port name="3" num="3"/> <!-- NLR ATLA 3715 Port -->
    <openflow:port name="25" num="49"/> <!-- RENCI 1750 -->
    </openflow:datapath>
    </openflow:group>

    <openflow:group name="nlr-chic-3715">
       <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" 
         dpid="0e:83:00:23:47:c8:bc:00">  <!-- NLR CHIC 3715 -->
       </openflow:datapath>
    </openflow:group>

    <openflow:group name="nlr-atla-3715">
       <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" 
         dpid="0e:83:00:24:a8:d2:b8:40">  <!-- NLR ATLA 3715 -->
      </openflow:datapath>
    </openflow:group>

  <openflow:match>
      <openflow:use-group name="nlr-chic-1750" />
      <openflow:use-group name="nlr-atla-1750" />
      <openflow:use-group name="nlr-chic-3715" />
      <openflow:use-group name="nlr-atla-3715" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
   </openflow:match>

  </openflow:sliver>
</rspec>

Internet2 OpenFlow RSpec

The following request RSpec is for the Internet2 FOAM aggregate openflow-internet2.rspec:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
AM: https://foam.net.internet2.edu:3626/foam/gapi/1
-->
<rspec xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:openflow="http://www.geni.net/resources/rspec/ext/openflow/3"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3
           http://www.geni.net/resources/rspec/3/request.xsd
           http://www.geni.net/resources/rspec/ext/openflow/3
           http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
       type="request">

 <openflow:sliver description="OpenFlow Experiment Example" email="lnevers@bbn.com">
 <openflow:controller url="tcp:mallorea.gpolab.bbn.com:33020" type="primary" />

    <openflow:group name="i2-losa-1750">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+06:d6:00:12:e2:22:63:38" 
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="06:d6:00:12:e2:22:63:38">  <!-- I2 Los Angeles 3715 Path -->
        <openflow:port name="GBE0/12" num="12"/> <!-- I2 UEN 1750 -->
        <openflow:port name="GBE0/13" num="13"/> <!-- I2 Los Angeles 3715 Port -->
      </openflow:datapath>
    </openflow:group>

   <openflow:group name="i2-atla-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:6e"
      component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
      dpid="0e:83:00:12:e2:22:63:6e"> <!-- I2 ATLA 3715 -->
      </openflow:datapath>
   </openflow:group>

   <openflow:group name="i2-hous-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:81:42"
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="0e:83:00:12:e2:22:81:42"> <!-- I2 ATLA 3715 -->
      </openflow:datapath>
   </openflow:group>

   <openflow:group name="i2-losa-3715">
    <openflow:datapath component_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+datapath+0e:83:00:12:e2:22:63:38" 
     component_manager_id="urn:publicid:IDN+openflow:foam:foam.net.internet2.edu+authority+am" 
     dpid="0e:83:00:12:e2:22:63:38"> <!-- I2 LOSA 3715 -->
      </openflow:datapath>
   </openflow:group>

   <openflow:match>
      <openflow:use-group name="i2-atla-3715" />
      <openflow:use-group name="i2-hous-3715" />
      <openflow:use-group name="i2-losa-3715" />
      <openflow:use-group name="i2-losa-1750" />
      <openflow:packet>
        <openflow:dl_type value="0x800,0x806"/>
        <openflow:nw_dst value="10.42.11.0/24"/>
        <openflow:nw_src value="10.42.11.0/24"/>
      </openflow:packet>
   </openflow:match>

  </openflow:sliver>
</rspec>

All OpenFlow request RSpecs used in this examples can also be found here.

6. Setup Experiment

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 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:

$ omni.py createslice 3sites-OF

Create slivers at each compute resource aggregate (GPO IG, RENCI EG, Utah PG):

$ omni.py -a ig-gpo createsliver 3sites-OF compute-ig-gpo.rspec  
$ omni.py -a eg-renci createsliver 3sites-OF compute-eg-renci.rspec   
$ omni.py -a pg-utah createsliver 3sites-OF compute-pg-utah.rspec   

Create a slivers for each of the FOAM aggregate:

$ omni.py -a of-gpo -V1 createsliver 3sites-OF openflow-gpo.rspec
$ omni.py -a of-nlr -V1 createsliver 3sites-OF openflow-nlr.rspec
$ omni.py -a of-i2 -V1 createsliver 3sites-OF openflow-internet2.rspec
$ omni.py -a of-uen -V1 createsliver 3sites-OF openflow-uen.rspec 
$ omni.py -a eg-of-renci -V1 createsliver 3sites-OF openflow-eg-renci.rspec 
$ omni.py -a ig-of-gpo -V1 createsliver 3sites-OF openflow-ig-gpo.rspec

The output for running each of the above commands is attached here. The RSpecs used can be found here.

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 print_slice_expiration commands.

$ omni.py print_slice_expiration 3sites-OF
INFO:omni:Loading config file /home/lnevers/.gcf/omni_config
INFO:omni:Using control framework pg
INFO:omni:Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF expires on 2013-03-01 21:30:06 UTC
INFO:omni: ------------------------------------------------------------
INFO:omni: Completed print_slice_expiration:
  Options as run:
		framework: pg
  Args: print_slice_expiration 3sites-OF
  Result Summary: Slice urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF expires on 2013-03-01 21:30:06 UTC 
INFO:omni: ============================================================

You can now renew the slice and slivers. Following are the commands to extend the reservation for the compute and network resources:

 $ omni.py renewslice 3sites-OF 2013-03-13
 $ omni.py -a of-gpo -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a of-nlr -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a of-i2 -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a of-uen -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a eg-of-renci -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a ig-of-gpo -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a pg-utah -V 1 renewsliver 3sites-OF 2013-03-03
 $ omni.py -a ig-gpo  renewsliver 3sites-OF 2013-03-03

Note: The sliver for RENCI resources is not renewed, as the feature is currently not supported, default sliver is 2 weeks for ExoGENI.

The output for running each of the above renew commands is attached here.

FOAM slivers approval

SOme 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:

(This is an automated message from FOAM.)

Your FOAM sliver at foam.gpolab.bbn.com
has been automatically approved, and is now in the FlowVisor:

  Sliver URN: urn:publicid:IDN+pgeni.gpolab.bbn.com+slice+3sites-OF:6454a7b0-f4cf-4c98-863e-2f1db3a4613c
  Owner URN: urn:publicid:IDN+pgeni.gpolab.bbn.com+user+lnevers
  Owner e-mail: lnevers@bbn.com

If this is unexpected, please contact foam-admin@gpolab.bbn.com
for further assistance.

In 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).

7. Run Experiment

Once your flowspace has been approved, you can determine the login information for each compute resource host as follows:

$ readyToLogin.py -a ig-gpo 3sites-OF 
<....>
================================================================================
LOGIN INFO for AM: https://instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am/2.0
================================================================================
gpo-ig's geni_status is: ready (am_status:ready) 
User lnevers logins to gpo-ig using:
	xterm -e ssh -p 30522  -i /home/lnevers/.ssh/id_rsa lnevers@pc1.instageni.gpolab.bbn.com &


$ readyToLogin.py -a pg-utah 3sites-OF 
<..>
================================================================================
LOGIN INFO for AM: https://www.emulab.net:12369/protogeni/xmlrpc/am/2.0
================================================================================

utah-pg's geni_status is: ready (am_status:ready) 
User lnevers logins to utah-pg using:
	xterm -e ssh -p 32570  -i /home/lnevers/.ssh/id_rsa lnevers@pc423.emulab.net &


$ readyToLogin.py -a eg-renci 3sites-OF 
<...>
================================================================================
LOGIN INFO for AM: https://rci-hn.exogeni.net:11443/orca/xmlrpc
================================================================================
User root logins to renci-eg using:
	xterm -e ssh -i /home/lnevers/.ssh/id_rsa root@152.54.14.17 &

You 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 help@geni.net.

In 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:

$ ssh -p 30522  -i /home/lnevers/.ssh/id_rsa lnevers@pc1.instageni.gpolab.bbn.com 

[lnevers@gpo-ig ~]$ /sbin/ifconfig |egrep 10.42
          inet addr:10.42.11.65  Bcast:10.42.11.255  Mask:255.255.255.0

[lnevers@gpo-ig ~]$ ping 10.42.11.205 -c 5
PING 10.42.11.205 (10.42.11.205) 56(84) bytes of data.
64 bytes from 10.42.11.205: icmp_req=1 ttl=64 time=1676 ms
64 bytes from 10.42.11.205: icmp_req=2 ttl=64 time=779 ms
64 bytes from 10.42.11.205: icmp_req=3 ttl=64 time=66.4 ms
64 bytes from 10.42.11.205: icmp_req=4 ttl=64 time=66.3 ms
64 bytes from 10.42.11.205: icmp_req=5 ttl=64 time=66.3 ms

--- 10.42.11.205 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 66.332/530.917/1676.312/635.755 ms, pipe 2

[lnevers@gpo-ig ~]$ ping 10.42.11.134 -c 5
PING 10.42.11.134 (10.42.11.134) 56(84) bytes of data.
64 bytes from 10.42.11.134: icmp_req=1 ttl=64 time=138 ms
64 bytes from 10.42.11.134: icmp_req=2 ttl=64 time=138 ms
64 bytes from 10.42.11.134: icmp_req=3 ttl=64 time=138 ms
64 bytes from 10.42.11.134: icmp_req=4 ttl=64 time=138 ms
64 bytes from 10.42.11.134: icmp_req=5 ttl=64 time=138 ms

--- 10.42.11.134 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 138.567/138.595/138.619/0.408 ms

On the ProtoGENI Utah host ping the RENCI ExoGENI host and the GPO InstaGENI host:

$ ssh -p 32570  -i /home/lnevers/.ssh/id_rsa lnevers@pc423.emulab.net

[lnevers@utah-pg ~]$ /sbin/ifconfig |egrep 10.42
          inet addr:10.42.11.134  Bcast:10.42.11.255  Mask:255.255.255.0
[lnevers@utah-pg ~]$ ping 10.42.11.205 -c 5
PING 10.42.11.205 (10.42.11.205) 56(84) bytes of data.
64 bytes from 10.42.11.205: icmp_req=1 ttl=64 time=1692 ms
64 bytes from 10.42.11.205: icmp_req=2 ttl=64 time=710 ms
64 bytes from 10.42.11.205: icmp_req=3 ttl=64 time=92.4 ms
64 bytes from 10.42.11.205: icmp_req=4 ttl=64 time=92.5 ms
64 bytes from 10.42.11.205: icmp_req=5 ttl=64 time=92.5 ms

--- 10.42.11.205 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 92.416/536.194/1692.752/625.889 ms, pipe 2
[lnevers@utah-pg ~]$ /sbin/ifconfig |egrep 10.42
          inet addr:10.42.11.134  Bcast:10.42.11.255  Mask:255.255.255.0
[lnevers@utah-pg ~]$ ping 10.42.11.65 -c 5
PING 10.42.11.65 (10.42.11.65) 56(84) bytes of data.
64 bytes from 10.42.11.65: icmp_req=1 ttl=64 time=2103 ms
64 bytes from 10.42.11.65: icmp_req=2 ttl=64 time=1121 ms
64 bytes from 10.42.11.65: icmp_req=3 ttl=64 time=138 ms
64 bytes from 10.42.11.65: icmp_req=4 ttl=64 time=138 ms
64 bytes from 10.42.11.65: icmp_req=5 ttl=64 time=138 ms

--- 10.42.11.65 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 138.555/728.028/2103.317/785.896 ms, pipe 3

On RENCI ExoGENI host ping the PG Utah host and the GPO InstaGENI host:

$  ssh -i /home/lnevers/.ssh/id_rsa root@152.54.14.17

root@VM1:~# /sbin/ifconfig |grep 10.42
          inet addr:10.42.11.205  Bcast:10.42.11.255  Mask:255.255.255.0
root@VM1:~# ping 10.42.11.134 -c 5
PING 10.42.11.134 (10.42.11.134) 56(84) bytes of data.
64 bytes from 10.42.11.134: icmp_req=1 ttl=64 time=3707 ms
64 bytes from 10.42.11.134: icmp_req=2 ttl=64 time=2714 ms
64 bytes from 10.42.11.134: icmp_req=3 ttl=64 time=1711 ms
64 bytes from 10.42.11.134: icmp_req=4 ttl=64 time=726 ms
64 bytes from 10.42.11.134: icmp_req=5 ttl=64 time=92.4 ms

--- 10.42.11.134 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4022ms
rtt min/avg/max/mdev = 92.433/1790.207/3707.214/1307.640 ms, pipe 4

root@VM1:~# ping 10.42.11.65 -c 5
PING 10.42.11.65 (10.42.11.65) 56(84) bytes of data.
64 bytes from 10.42.11.65: icmp_req=1 ttl=64 time=3389 ms
64 bytes from 10.42.11.65: icmp_req=2 ttl=64 time=2408 ms
64 bytes from 10.42.11.65: icmp_req=3 ttl=64 time=1405 ms
64 bytes from 10.42.11.65: icmp_req=4 ttl=64 time=435 ms
64 bytes from 10.42.11.65: icmp_req=5 ttl=64 time=66.2 ms

--- 10.42.11.65 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4017ms
rtt min/avg/max/mdev = 66.212/1540.944/3389.023/1231.504 ms, pipe 4

You can now run an experiment!

8. Release Resources

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:

 $ omni.py -a ig-gpo deletesliver  3sites-OF 
 $ omni.py -a ig-of-gpo -V1 deletesliver 3sites-OF 
 $ omni.py -a of-gpo -V1 deletesliver 3sites-OF
 $ omni.py -a of-nlr -V1 deletesliver 3sites-OF
 $ omni.py -a of-i2 -V1 deletesliver 3sites-OF
 $ omni.py -a of-uen -V1 deletesliver 3sites-OF
 $ omni.py -a pg-utah deletesliver 3sites-OF
 $ omni.py -a eg-renci deletesliver 3sites-OF 
 $ omni.py -a eg-of-renci -V1 deletesliver 3sites-OF 

Email help@geni.net for GENI support or email me with feedback on this page!
Last modified 7 years ago Last modified on 03/21/13 07:10:29

Attachments (10)

Download all attachments as: .zip