| 13 | 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: |
| 14 | |
| 15 | <<Insert Image>> |
| 16 | |
| 17 | Assemble a Request Rspec that includes one VM at each rack site: |
| 18 | {{{ |
| 19 | <?xml version="1.0" encoding="UTF-8"?> |
| 20 | <rspec type="request" |
| 21 | xmlns="http://www.geni.net/resources/rspec/3" |
| 22 | xmlns:planetlab="http://www.planet-lab.org/resources/sfa/ext/planetlab/1" |
| 23 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 24 | xmlns:stitch="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" |
| 25 | xsi:schemaLocation="http://www.geni.net/resources/rspec/3 |
| 26 | http://www.geni.net/resources/rspec/3/request.xsd"> |
| 27 | <node client_id="server-gpo" component_manager_id="urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm" exclusive="false"> |
| 28 | <sliver_type name="emulab-openvz"/> |
| 29 | <services> |
| 30 | <execute command="sudo /local/install-script.sh" shell="sh"/> |
| 31 | <install install_path="/local" url="http://www.gpolab.bbn.com/~lnevers/StitchDemo.tar.gz"/> |
| 32 | </services> |
| 33 | <emulab:routable_control_ip xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> |
| 34 | <interface client_id="server-gpo:if0"> |
| 35 | <ip address="192.168.4.1" netmask="255.255.255.0" type="ipv4"/> |
| 36 | </interface> |
| 37 | </node> |
| 38 | <node client_id="client-utah" component_manager_id="urn:publicid:IDN+utah.geniracks.net+authority+cm" exclusive="false"> |
| 39 | <sliver_type name="emulab-openvz"/> |
| 40 | <services> |
| 41 | <execute command="sudo /local/install-script.sh" shell="sh"/> |
| 42 | <install install_path="/local" url="http://www.gpolab.bbn.com/~lnevers/StitchDemo.tar.gz"/> |
| 43 | </services> |
| 44 | <interface client_id="client-utah:if0"> |
| 45 | <ip address="192.168.4.2" netmask="255.255.255.0" type="ipv4"/> |
| 46 | </interface> |
| 47 | </node> |
| 48 | <link client_id="link"> |
| 49 | <component_manager name="urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm"/> |
| 50 | <component_manager name="urn:publicid:IDN+utah.geniracks.net+authority+cm"/> |
| 51 | <interface_ref client_id="server-gpo:if0"/> |
| 52 | <interface_ref client_id="client-utah:if0"/> |
| 53 | <property source_id="server-gpo:if0" dest_id="client-utah:if0" capacity="100000"/> |
| 54 | <property source_id="client-utah:if0" dest_id="server-gpo:if0" capacity="100000"/> |
| 55 | </link> |
| 56 | </rspec> |
| 57 | }}} |
| 58 | 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. |
| 59 | |
| 60 | |
| 61 | |
| 62 | == Execute the Experiment == |
| 68 | First create a slice for the experiment: |
| 69 | {{{ |
| 70 | $ omni.py createslice ig-gpo-ig-utah |
| 71 | 21:19:10 INFO omni: Loading config file /home/lnevers/.gcf/omni_config |
| 72 | 21:19:10 INFO omni: Using control framework portal |
| 73 | 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 |
| 74 | 21:19:11 INFO omni: ------------------------------------------------------------ |
| 75 | 21:19:11 INFO omni: Completed createslice: |
| 76 | |
| 77 | Options as run: |
| 78 | framework: portal |
| 79 | project: ln-prj |
| 80 | |
| 81 | Args: createslice ig-gpo-ig-utah |
| 82 | |
| 83 | 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 |
| 84 | 21:19:11 INFO omni: ============================================================ |
| 85 | }}} |
| 86 | |
| 87 | 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: |
| 88 | {{{ |
| 89 | $ stitcher.py createsliver ig-gpo-ig-utah stitch-ig-gpo-ig-utah.rspec -o |
| 90 | 21:28:50 INFO stitcher: Loading config file /home/lnevers/.gcf/omni_config |
| 91 | 21:28:50 INFO stitcher: Using control framework portal |
| 92 | 21:28:50 INFO stitcher: Checking that slice ig-gpo-ig-utah is valid... <<==(1) |
| 93 | 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 |
| 94 | 21:28:52 INFO stitcher: <Aggregate urn:publicid:IDN+utah.geniracks.net+authority+cm> speaks AM API v3, but sticking with v2 <==(2) |
| 95 | 21:28:52 INFO stitcher: <Aggregate urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm> speaks AM API v3, but sticking with v2 |
| 96 | 21:28:52 INFO stitcher: <Aggregate urn:publicid:IDN+emulab.net+authority+cm> speaks AM API v3, but sticking with v2 |
| 97 | 21:28:52 INFO stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-instageni-gpolab-bbn-com.xml' <==(3) |
| 98 | 21:28:52 INFO stitch.Aggregate: |
| 99 | Stitcher doing createsliver at https://boss.instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am |
| 100 | 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} |
| 101 | 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 |
| 102 | 21:30:12 INFO stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+emulab.net+authority+cm> complete. |
| 103 | 21:30:12 INFO stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-utah-geniracks-net.xml' |
| 104 | 21:30:12 INFO stitch.Aggregate: |
| 105 | Stitcher doing createsliver at https://boss.utah.geniracks.net:12369/protogeni/xmlrpc/am |
| 106 | 21:30:39 INFO stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+utah.geniracks.net+authority+cm> complete. |
| 107 | 21:30:39 INFO stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-12-instageni-gpolab-bbn-com.xml' <==(4) |
| 108 | 21:30:39 INFO stitch.Aggregate: |
| 109 | Stitcher doing createsliver at https://boss.instageni.gpolab.bbn.com:12369/protogeni/xmlrpc/am |
| 110 | 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} |
| 111 | 21:31:41 INFO stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm> complete. |
| 112 | 21:31:41 INFO stitch.Aggregate: Writing to '/tmp/ig-gpo-ig-utah-createsliver-request-11-ion-internet2-edu.xml' <==(3) |
| 113 | 21:31:41 INFO stitch.Aggregate: |
| 114 | Stitcher doing createsliver at http://geni-am.net.internet2.edu:12346 |
| 115 | 21:32:25 INFO stitch.Aggregate: DCN AM <Aggregate urn:publicid:IDN+ion.internet2.edu+authority+am>: must wait for status ready.... |
| 116 | 21:32:25 INFO stitch.Aggregate: Pause to let circuit become ready... |
| 117 | 21:33:02 INFO stitch.Aggregate: DCN circuit 22911 is ready |
| 118 | 21:33:09 INFO stitch.Aggregate: Allocation at <Aggregate urn:publicid:IDN+ion.internet2.edu+authority+am> complete. |
| 119 | 21:33:09 INFO stitch.launcher: All aggregates are complete. |
| 120 | 21:33:09 INFO stitcher: Writing to 'ig-gpo-ig-utah-manifest-rspec-stitching-combined.xml' |
| 121 | 21:33:09 INFO stitcher: Saved combined reservation RSpec at 4 AMs to file ig-gpo-ig-utah-manifest-rspec-stitching-combined.xml |
| 122 | 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). |
| 123 | }}} |
| 124 | |
| 125 | (1) Sticher.py run rspeclint on the stitch-ig-gpo-ig-utah.rspec file. [[BR]] |
| 126 | (2) Sticher.py contact the Stitching Computation Service (SCS) and returns the list of AMs that are needed to stitch a path. [[BR]] |
| 127 | (3) Stitcher.py generates a request RSpec for each of the aggregates in the path. [[BR]] |
| 128 | (4) Second attempt at GPO InstaGENI, initial request failed because the requested VLAN was not available. [[BR]] |
| 129 | |
| 130 | |
| 131 | |
| 132 | = Finish Experiment == |