= 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 [http://groups.geni.net/geni/wiki/GeniClearinghouse 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 [http://trac.gpolab.bbn.com/gcf/wiki/OmniConfigure/Automatic these configuration instructions].
== Design Experiment ==
{{{
#!html
}}}
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:
<>
Assemble a Request Rspec that includes one VM at each rack site:
{{{
}}}
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 ==
{{{
#!html
}}}
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: speaks AM API v3, but sticking with v2 <==(2)
21:28:52 INFO stitcher: speaks AM API v3, but sticking with v2
21:28:52 INFO stitcher: 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 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 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 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 : 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 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. [[BR]]
(2) Sticher.py contact the Stitching Computation Service (SCS) and returns the list of AMs that are needed to stitch a path. [[BR]]
(3) Stitcher.py generates a request RSpec for each of the aggregates in the path. [[BR]]
(4) Second attempt at GPO InstaGENI, initial request failed because the requested VLAN was not available. [[BR]]
= Finish Experiment ==
{{{
#!html
}}}