= 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 the Stitching Experiment == {{{ #!html 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. The server-gpo host is configured to be both a Web Server and an Iperf server, also a routable IP address is requested to access the web server. All this is captured in the request RSpec used for this experiment: 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 Stitching experiment == {{{ #!html 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: 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' <==(3) 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' 21:31:41 INFO stitch.Aggregate: Stitcher doing createsliver at http://geni-am.net.internet2.edu:12346 <==(5) 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 <==(7) 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 runs rspeclint on the stitch-ig-gpo-ig-utah.rspec file. [[BR]] (2) Sticher.py contacts the Stitching Computation Service (SCS) and returns the list of AMs that are needed to establish the stitching path.[[BR]] (3) Stitcher.py generates a request RSpec for each of the aggregates in the path including ION/Internet2. [[BR]] (4) Second attempt at GPO InstaGENI, initial request failed because the requested VLAN was not available. [[BR]] (5) Request at Internet2/ION waits for DCN circuits. If this request fails, stitcher.py will try again after 600 seconds. [[BR]] (6) A combined manifest rspec is assembled by the stitcher.py to show all aggregates and VLANs used in the sliver. Part of the ig-gpo-ig-utah-manifest-rspec-stitching-combined.xml below shows the hops along the stitched VLAN path, for complete content see the [attached file]. {{{