wiki:GENIExperimenter/ExperimentExample-stitching

Version 4 (modified by lnevers@bbn.com, 6 years ago) (diff)

--

GENI Network Stitching Example

This page used gcf 2.4 preview 7 to show an example experiment that creates a network stitching path between the GPO InstaGENI and the Utah InstaGENI racks. The experiment uses GENI Clearinghouse credentials with the omni tool named stitcher.py. GENI network stitching does not require any special configuration. If you haven't already configured Omni, please follow these configuration instructions.

Design Experiment

Design/Setup

At this time GENI network stitching is supported by several aggregate, this example shows a simple stitching scenario with one server VM in the GPO InstaGENI rack and one VM client in the Utah InstaGENI rack that are connected with a link, captured in the following Request RSpec:

<<Insert Image>>

Assemble a Request Rspec that includes one VM at each rack site:

<?xml version="1.0" encoding="UTF-8"?>
<rspec type="request" 
	xmlns="http://www.geni.net/resources/rspec/3" 
	xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:stitch="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" 
	xsi:schemaLocation="http://www.geni.net/resources/rspec/3 
	http://www.geni.net/resources/rspec/3/request.xsd">  
  <node client_id="server-gpo" component_manager_id="urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm" exclusive="false">
    <sliver_type name="emulab-openvz"/>
    <services>
      <execute command="sudo /local/install-script.sh" shell="sh"/>
      <install install_path="/local" url="http://www.gpolab.bbn.com/~lnevers/StitchDemo.tar.gz"/>
   </services>
    <emulab:routable_control_ip xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"/>
    <interface client_id="server-gpo:if0">
      <ip address="192.168.4.1" netmask="255.255.255.0" type="ipv4"/>
    </interface>
  </node>
  <node client_id="client-utah" component_manager_id="urn:publicid:IDN+utah.geniracks.net+authority+cm" exclusive="false">
    <sliver_type name="emulab-openvz"/>
   <services>
      <execute command="sudo /local/install-script.sh" shell="sh"/>
      <install install_path="/local" url="http://www.gpolab.bbn.com/~lnevers/StitchDemo.tar.gz"/>
    </services>
    <interface client_id="client-utah:if0">
      <ip address="192.168.4.2" netmask="255.255.255.0" type="ipv4"/>
    </interface>
  </node>
  <link client_id="link">
    <component_manager name="urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm"/>
    <component_manager name="urn:publicid:IDN+utah.geniracks.net+authority+cm"/>
    <interface_ref client_id="server-gpo:if0"/>
    <interface_ref client_id="client-utah:if0"/>
    <property source_id="server-gpo:if0" dest_id="client-utah:if0" capacity="100000"/>
    <property source_id="client-utah:if0" dest_id="server-gpo:if0" capacity="100000"/>
  </link>
</rspec>

In the above RSpec, the link information in the component_manager name is used by the stitcher.py script to contact the GENI Stitching Computation Service and determine a path between the end-point.

Execute the Experiment

Execute

First create a slice for the experiment:

$ omni.py createslice ig-gpo-ig-utah
21:19:10 INFO     omni: Loading config file /home/lnevers/.gcf/omni_config
21:19:10 INFO     omni: Using control framework portal
21:19:11 INFO     omni: Created slice with Name ig-gpo-ig-utah, URN urn:publicid:IDN+ch.geni.net:ln-prj+slice+ig-gpo-ig-utah, Expiration 2013-07-25 00:00:00
21:19:11 INFO     omni:  ------------------------------------------------------------
21:19:11 INFO     omni:  Completed createslice:

  Options as run:
		framework: portal
		project: ln-prj

  Args: createslice ig-gpo-ig-utah

  Result Summary: Created slice with Name ig-gpo-ig-utah, URN urn:publicid:IDN+ch.geni.net:ln-prj+slice+ig-gpo-ig-utah, Expiration 2013-07-25 00:00:00
21:19:11 INFO     omni:  ============================================================

A sliver that included a stitched VLAN path can be created using the stitcher.py script. There is no need to specify the -a aggregate option, aggregates are determined from the RSpec and need not be specified. Also note that a file is created in the directory where the sliver is created that capture the aggregates associated with the slice. Following is the stitcher operation that setup up all slivers:

$ stitcher.py createsliver ig-gpo-ig-utah stitch-ig-gpo-ig-utah.rspec -o
21:28:50 INFO     stitcher: Loading config file /home/lnevers/.gcf/omni_config
21:28:50 INFO     stitcher: Using control framework portal
21:28:50 INFO     stitcher: Checking that slice ig-gpo-ig-utah is valid...             <<==(1)
21:28:51 INFO     stitcher: Slice urn:publicid:IDN+ch.geni.net:ln-prj+slice+ig-gpo-ig-utah expires on 2013-07-25 00:00:00 UTC 
21:28:52 INFO     stitcher: <Aggregate urn:publicid:IDN+utah.geniracks.net+authority+cm> speaks AM API v3, but sticking with v2  <==(2)
21:28:52 INFO     stitcher: <Aggregate urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm> speaks AM API v3, but sticking with v2
21:28:52 INFO     stitcher: <Aggregate urn:publicid:IDN+emulab.net+authority+cm> speaks AM API v3, but sticking with v2
21:28:52 INFO     stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-instageni-gpolab-bbn-com.xml'  <==(3)
21:28:52 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at https://boss.instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am
21:29:04 ERROR    omni:  {'output': 'vlan tag for link not available', 'code': {'protogeni_error_log': 'urn:publicid:IDN+instageni.gpolab.bbn.com+log+907dbcc8cf1d9204562b3c224e0c714f', 'am_type': 'protogeni', 'geni_code': 1, 'am_code': 1, 'protogeni_error_url': 'https://boss.instageni.gpolab.bbn.com/spewlogfile.php3?logfile=907dbcc8cf1d9204562b3c224e0c714f'}, 'value': 0}
21:29:34 WARNING  stitch.Aggregate: Slivers at PG Utah may not be requested initially for > 5 days. PG Utah slivers will expire earlier than at other aggregates - requested expiration being reset from 2013-07-25T00:00:00Z to 2013-07-21T01:09:34Z
21:30:12 INFO     stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+emulab.net+authority+cm> complete.
21:30:12 INFO     stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-utah-geniracks-net.xml'
21:30:12 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/am
21:30:39 INFO     stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+utah.geniracks.net+authority+cm> complete.
21:30:39 INFO     stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-12-instageni-gpolab-bbn-com.xml'  <==(4)
21:30:39 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at https://boss.instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am
21:30:56 ERROR    omni:  {'output': 'vlan tag for link not available', 'code': {'protogeni_error_log': 'urn:publicid:IDN+instageni.gpolab.bbn.com+log+f90141724ac70ca40144bd5b8775e40f', 'am_type': 'protogeni', 'geni_code': 1, 'am_code': 1, 'protogeni_error_url': 'https://boss.instageni.gpolab.bbn.com/spewlogfile.php3?logfile=f90141724ac70ca40144bd5b8775e40f'}, 'value': 0}
21:31:41 INFO     stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm> complete.
21:31:41 INFO     stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-ion-internet2-edu.xml'       <==(3)
21:31:41 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at http://geni-am.net.internet2.edu:12346
21:32:25 INFO     stitch.Aggregate: DCN AM <Aggregate urn:publicid:IDN+ion.internet2.edu+authority+am>: must wait for status ready....
21:32:25 INFO     stitch.Aggregate: Pause to let circuit become ready...
21:33:02 INFO     stitch.Aggregate: DCN circuit 22911 is ready
21:33:09 INFO     stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+ion.internet2.edu+authority+am> complete.
21:33:09 INFO     stitch.launcher: All aggregates are complete.
21:33:09 INFO     stitcher: Writing to 'ig-gpo-ig-utah-manifest-rspec-stitching-combined.xml'
21:33:09 INFO     stitcher: Saved combined reservation RSpec at 4 AMs to file ig-gpo-ig-utah-manifest-rspec-stitching-combined.xml
Stitching success: Reserved resources in slice ig-gpo-ig-utah at 4 Aggregates (including 2 intermediate aggregate(s) not in the original request), creating 1 link(s).

(1) Sticher.py run rspeclint on the stitch-ig-gpo-ig-utah.rspec file.
(2) Sticher.py contact the Stitching Computation Service (SCS) and returns the list of AMs that are needed to stitch a path.
(3) Stitcher.py generates a request RSpec for each of the aggregates in the path.
(4) Second attempt at GPO InstaGENI, initial request failed because the requested VLAN was not available.

Finish Experiment =

Finish

Attachments (6)