Skip to content

OMNI_client

Carolina Fernández edited this page Dec 23, 2015 · 13 revisions

Home > Experimenting > Testing with OMNI client


This page describes how to test some of the FELIX modules (RO, RMs) using the OMNI client.

Quick introduction to OMNI

OMNI is a command-line interface that is part of the GENI Control Framework. This tool allows reserving resources at GENI aggregate managers.

Requirements

For OMNI being able to contact a given RM, 1) the GCF (GENI Control Framework) must be installed and properly configured and 2) if you do not have a specific Clearinghouse running in your environment (and thus properly configured in the configuration files needed for the previous step), the GCF Clearinghouse must be running.

Setting up

Download the latest GENI Control Framework source from the website and configure it carefully.

Configuring OMNI files

To configure OMNI, you may follow the instructions in the above GCF website or do as follows:

  1. Download the configuration files as a compressed file or individually.
  2. Uncompress in your remote server and place the files under ~/.gcf (create the folder if it is not there yet).
  3. Modify the content of every line commented with "changeMe" to match the name of your organisation. Respect the format of the URN there.

Configuring and running the clearinghouse

The following instructions differ on whether you use the CH from GENI or the CBAS CH.

Sample RSpecs

When calling to a specific RM, the following RSpecs (XML-based data models) can be used as the rspec-req.xml input file for requesting resources (through the Allocate method):

CRM/VTAM

There are several tags to be customised to fit the parameters of the desired RMs:

  • node
  • client_id: Name of the VM to be used (should be unique per island/domain).
  • component_id, component_manager_id: Correspond to the URNs of the desired virtualisation server and its authority, respectively.
  • sliver_type: If you use an extended version of the CRM that uses the information contained within this tag, you should request specific examples on the accepted values to use.
  • name: Type of virtualisation technique.
  • emulab:xen
    • cores, ram, disk: Accepted values/configurations for which VMs are provided.
  • disk_image
    • name: URN that defines a specific configuration/flavour/template for the VM.
<?xml version="1.0" encoding="UTF-8"?>
<rspec  xmlns="http://www.geni.net/resources/rspec/3"
        xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"
        xs:schemaLocation="http://www.geni.net/resources/rspec/3/request.xsd"
        type="request">
  <node client_id="VerdaguerFELIXTestNo812783" component_id="urn:publicid:IDN+ocf:i2cat:vtam+node+Verdaguer" component_manager_id="urn:publicid:IDN+ocf:i2cat:vtam+authority+cm" exclusive="true">
      <sliver_type name="emulab-xen">
        <emulab:xen cores="3" ram="1024" disk="10"/>
        <disk_image name="urn:publicid:IDN+wall2.ilabt.iminds.be+image+emulab-ops//DEB60_64-VLAN"/>
     </sliver_type>
  </node>
</rspec>

SDNRM/OFAM

Several tags here as well to be customised to fit the parameters of the desired RMs:

  • openflow:sliver
    • email, description: Use your e-mail and the description of the slice.
  • openflow:controller
  • url: Proper URL and port corresponding to your (already existing) controller VM.
  • component_id, component_manager_id: Correspond to the URNs of the desired virtualisation server and its authority, respectively.
  • openflow:group
  • name: Fill with any name, to be used later on in the openflow:match section.
  • openflow:datapath
  • component_id, dpid, component_manager_id: Correspond to the URNs of the desired datapath/switch, the datapath itself and the datapath authority, respectively.
  • openflow:port
  • name, num: Name and number of each port selected for the flowspace.
  • openflow:match
  • name: Use the same as in openflow:group section.
  • openflow:packet: Select your matching conditions. Find some examples here - however, stick as much as possible to the structure of this sample RSpec.
<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/request.xsd http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
        type="request">
    <openflow:sliver email="[email protected]" description="OF request example">
        <openflow:controller url="tcp:10.216.12.134:6633" type="primary"/>
        <openflow:group name="fs1">
            <openflow:datapath component_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+datapath+00:10:00:00:00:00:00:01" component_manager_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+authority+cm" dpid="00:10:00:00:00:00:00:01">
                <openflow:port name="GBE0/3" num="3"/>
                <openflow:port name="GBE0/12" num="12"/>
            </openflow:datapath>
            <openflow:datapath component_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+datapath+00:10:00:00:00:00:00:03" component_manager_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+authority+cm" dpid="00:10:00:00:00:00:00:03">
                <openflow:port name="GBE0/1" num="1"/>
                <openflow:port name="GBE0/12" num="12"/>
            </openflow:datapath>
        </openflow:group>
        <openflow:match>
            <openflow:use-group name="fs1" />
            <openflow:packet>
              <openflow:dl_type value="0x801" />
               <openflow:nw_dst value="10.1.1.0/24" />
               <openflow:nw_proto value="6, 17" />
               <openflow:tp_dst value="80, 81" />
               <openflow:dl_vlan value="890,900" />
            </openflow:packet>
       </openflow:match>
    </openflow:sliver>
</rspec>

SERM

<?xml version="1.1" encoding="UTF-8"?>
<rspec type="request"
       xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:sharedvlan="http://www.geni.net/resources/rspec/ext/shared-vlan/1"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:felix="http://ict-felix.eu/serm_request"
       xs:schemaLocation="http://www.geni.net/resources/rspec/3/request.xsd
            http://www.geni.net/resources/rspec/ext/shared-vlan/1/request.xsd">

    <node client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01"
          component_manager_id="urn:publicid:IDN+fms:psnc:serm+authority+cm">
        <interface client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1">
            <sharedvlan:link_shared_vlan name="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1+vlan"
                                         vlantag="1000"/>
        </interface>
        <interface client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_2">
            <sharedvlan:link_shared_vlan name="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_2+vlan"
                                         vlantag="2000"/>
         </interface>
        <interface client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1">
            <sharedvlan:link_shared_vlan name="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1+vlan"
                                         vlantag="3100"/>
        </interface>
        <interface client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_4">
            <sharedvlan:link_shared_vlan name="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_4+vlan"
                                         vlantag="4000"/>
        </interface>
    </node>

    <link client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1_00:00:00:00:00:00:00:01_2">
        <component_manager name="urn:publicid:IDN+AIST+authority+serm"/>
        <link_type name="urn:felix+vlan_trans"/>
        <interface_ref client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1" felix:vlan="1000"/>
        <interface_ref client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_2" felix:vlan="2000"/>
     </link>
      <link client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1_00:00:00:00:00:00:00:01_4">
        <component_manager name="urn:publicid:IDN+AIST+authority+serm"/>
        <link_type name="urn:felix+vlan_trans"/>
        <interface_ref client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_1" felix:vlan="3100"/>
        <interface_ref client_id="urn:publicid:IDN+fms:psnc:serm+datapath+00:00:00:00:00:00:00:01_4" felix:vlan="4000"/>
    </link>
</rspec>

TNRM

<?xml version="1.1" encoding="UTF-8"?>
<rspec type="request"
       xmlns="http://www.geni.net/resources/rspec/3"
       xmlns:sharedvlan="http://www.geni.net/resources/rspec/ext/shared-vlan/1"
       xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:stitch="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/"
       xs:schemaLocation="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/
            http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd
            http://www.geni.net/resources/rspec/3/request.xsd
            http://www.geni.net/resources/rspec/ext/shared-vlan/1/request.xsd">

  <node client_id="urn:publicid:tn-network1:" component_manager_id="urn:publicid:IDN+NSI+authority+tnrm">
    <interface client_id="urn:publicid:tn:aist:network1+urn:ogf:network:aist:network1:stp1">
      <sharedvlan:link_shared_vlan name="urn:publicid:tn:aist:network1+urn:ogf:network:aist:network1:stp1+vlan" vlantag="1785"/>
    </interface>
    <interface client_id="urn:publicid:tn:xxx:network1+urn:felix:xxx-stp1"/>
    <interface client_id="urn:publicid:tn:yyy:network1+urn:felix:yyy-stp2"/>
    <interface client_id="urn:publicid:tn:i2cat:network1+urn:felix:i2cat-stp2">
      <sharedvlan:link_shared_vlan name="urn:publicid:tn:i2cat:network1+urn:felix:i2cat-stp2+vlan" vlantag="1785"/>
    </interface>
  </node>
  <link client_id="urn:publicid:tn:network1:link">
    <component_manager name="urn:publicid:IDN+NSI+authority+tnrm"/>
    <interface_ref client_id="urn:publicid:tn:aist:network1+urn:ogf:network:aist:network1:stp1"/>
    <interface_ref client_id="urn:publicid:tn:xxx:network1+urn:felix:xxx-stp1"/>
    <interface_ref client_id="urn:publicid:tn:yyy:network1+urn:felix:yyy-stp2"/>
    <interface_ref client_id="urn:publicid:tn:i2cat:network1+urn:felix:i2cat-stp2"/>
  </link>
</rspec>

RO

In order to send a request to RO, the resources defined in the above RSpecs must be placed (without the xml and rspec tags) inside the request RSpec. There are two ways to do this:

Implicit request

Define resources within each domain (computing nodes and SDN flowspaces). Pick the name of the domains that will be connected (virtual links), and the RO will internally determine a suitable path (note: in progress).

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rspec  type="request"
        xs:schemaLocation="http://www.geni.net/resources/rspec/3
                           http://hpn.east.isi.edu/rspec/ext/stitch/0.1/
                           http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd
                           http://www.geni.net/resources/rspec/3/request.xsd"
        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"
        xmlns:felix="http://ict-felix.eu/serm_request"
        xmlns:sharedvlan="http://www.geni.net/resources/rspec/ext/shared-vlan/1"
        xmlns:stitch="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/"
        xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1">

  <!-- C @ i2CAT -->
  <node client_id="SampleTestVMVerdaguer"
        component_id="urn:publicid:IDN+ocf:i2cat:vtam+node+Verdaguer"
        component_manager_id="urn:publicid:IDN+ocf:i2cat:vtam+authority+cm"
        exclusive="true">
      <sliver_type name="emulab-xen">
        <emulab:xen cores="1" ram="512" disk="8"/>
        <disk_image name="urn:publicid:IDN+wall2.ilabt.iminds.be+image+emulab-ops//DEB60_64-VLAN"/>
     </sliver_type>
  </node>

  <!-- C @ AIST -->
  <node client_id="aistkvmDC3" 
        component_id="urn:publicid:IDN+ocf:aist:vtam+node+dc1-3" 
        component_manager_id="urn:publicid:IDN+ocf:aist:vtam+authority+cm" 
        exclusive="true">
      <sliver_type name="emulab-xen">
        <emulab:xen cores="1" ram="512" disk="10"/>
        <disk_image name="urn:publicid:IDN+wall2.ilabt.iminds.be+image+emulab-ops//DEB60_64-VLAN"/>
      </sliver_type>
  </node>

  <!-- SDN @ i2CAT -->
    <openflow:sliver email="user@mail" description="OF-request for i2CAT island">
        <openflow:controller url="tcp:x.y.z.w:6633" type="primary"/>
        <openflow:group name="i2CAT">
            <openflow:datapath component_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+datapath+00:10:00:00:00:00:00:01"
                               component_manager_id="urn:publicid:IDN+openflow:ocf:i2cat:ofam+authority+cm"
                               dpid="00:10:00:00:00:00:00:01">
                <openflow:port name="GBE0/6" num="6"/>
                <openflow:port name="GBE0/12" num="12"/>
            </openflow:datapath>
        </openflow:group>
        <openflow:match>
            <openflow:use-group name="i2CAT"/>
            <openflow:packet>
                <openflow:dl_vlan value="2978" />
            </openflow:packet>
        </openflow:match>
    </openflow:sliver>

  <!-- SDN @ AIST -->
  <openflow:sliver email="user@mail" description="OF-request for AIST island">
    <openflow:controller url="tcp:x.y.z.w:6633" type="primary"/>
    <openflow:group name="AIST">
      <openflow:datapath component_id="urn:publicid:IDN+openflow:ocf:aist:ofam+datapath+00:00:00:00:00:00:00:01"
                         component_manager_id="urn:publicid:IDN+openflow:ocf:aist:ofam+authority+cm"
                         dpid="00:00:00:00:00:00:00:01">
        <openflow:port num="3" name="eth14"/>
        <openflow:port num="5" name="eth3"/>
      </openflow:datapath>
    </openflow:group>
    <openflow:match>
      <openflow:use-group name="AIST"/>
      <openflow:packet>
        <openflow:dl_vlan value="1780" />
      </openflow:packet>
    </openflow:match>
  </openflow:sliver>

  <!-- Virtual link - GRE [ i2CAT - AIST ] -->
  <link client_id="urn:publicid:IDN+fms:i2cat:mapper+link+i2cat_aist">
    <component_manager name="urn:publicid:IDN+fms:i2cat:mapper+authority+cm"/>
    <link_type name="urn:felix+virtual_link+type+gre"/>
    <interface_ref client_id="urn:publicid:IDN+fms:i2cat:mapper+domain+i2cat"/>
    <interface_ref client_id="urn:publicid:IDN+fms:i2cat:mapper+domain+aist"/>
  </link>
</rspec>
Explicit request

Define all the resources within the domain (computing nodes and SDN flowspaces), as well as the transit network resources (STPs) and, optionally, also the low-level interconnection between transit network domains (stitching).

<?xml version="1.0" 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"
        xmlns:sharedvlan="http://www.geni.net/resources/rspec/ext/shared-vlan/1"
        xmlns:stitch="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/"
        xs:schemaLocation="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/
            http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-schema.xsd
            http://www.geni.net/resources/rspec/3/request.xsd
            http://www.geni.net/resources/rspec/ext/shared-vlan/1/request.xsd
            http://www.geni.net/resources/rspec/ext/openflow/3/of-resv.xsd"
        type="request">

    ... PLACE CRM, SDNRM, TNRM [and optionally SERM] resources here ...

</rspec>