Version 9 (modified by 11 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.
<<Insert Image>>
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 the Stitching Experiment
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:
<?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 Stitching experiment
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' <==(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 <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' 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 <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 <==(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.
(2) Sticher.py contacts the Stitching Computation Service (SCS) and returns the list of AMs that are needed to establish the stitching path.
(3) Stitcher.py generates a request RSpec for each of the aggregates in the path including ION/Internet2.
(4) Second attempt at GPO InstaGENI, initial request failed because the requested VLAN was not available.
(5) Request at Internet2/ION waits for DCN circuits. If this request fails, stitcher.py will try again after 600 seconds.
(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 full combined manifest here.
<rspec expires="2013-07-16T01:32:55.973Z" generated="2013-07-16T01:32:55.973Z" type="manifest" xmlns="http://www.geni.net/resources/rspec/3" xml ns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec /3/manifest.xsd"> <node client_id="server-gpo" component_id="urn:publicid:IDN+instageni.gpolab.bbn.com+node+pc2" component_manager_id="urn:publicid:IDN+in stageni.gpolab.bbn.com+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+7787"> <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"/> <login authentication="ssh-keys" hostname="pcvm2-14.instageni.gpolab.bbn.com" port="22" username="lnevers"/> </services> <emulab:routable_control_ip xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> <interface client_id="server-gpo:if0" component_id="urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc2:eth1" mac_address="0 2501eb43d52" sliver_id="urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+7790"> <ip address="192.168.4.1" netmask="255.255.255.0" type="ipv4"/> </interface> <rs:vnode name="pcvm2-14" xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> <host name="server-gpo.ig-gpo-ig-utah.ch-geni-net.instageni.gpolab.bbn.com"/> </node> <node client_id="client-utah" component_id="urn:publicid:IDN+utah.geniracks.net+node+pc5" component_manager_id="urn:publicid:IDN+utah.ge niracks.net+authority+cm" exclusive="false" sliver_id="urn:publicid:IDN+utah.geniracks.net+sliver+23065"> <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"/> <login authentication="ssh-keys" hostname="pc5.utah.geniracks.net" port="30522" username="lnevers"/> </services> <interface client_id="client-utah:if0" component_id="urn:publicid:IDN+utah.geniracks.net+interface+pc5:eth1" mac_address="02fcd2 8d7cff" sliver_id="urn:publicid:IDN+utah.geniracks.net+sliver+23068"> <ip address="192.168.4.2" netmask="255.255.255.0" type="ipv4"/> </interface> <rs:vnode name="pcvm5-7" xmlns:rs="http://www.protogeni.net/resources/rspec/ext/emulab/1"/> <host name="client-utah.ig-gpo-ig-utah.ch-geni-net.utah.geniracks.net"/> </node> <link client_id="link" sliver_id="urn:publicid:IDN+ion.internet2.edu+sliver+ion.internet2.edu-22911" vlantag="3747:923"> <!--AM urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm: sliver_id=urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+7789 v lantag=3747--> <!--AM urn:publicid:IDN+utah.geniracks.net+authority+cm: sliver_id=urn:publicid:IDN+utah.geniracks.net+sliver+23067 vlantag=923- -> <component_manager name="urn:publicid:IDN+instageni.gpolab.bbn.com+authority+cm"/> <component_manager name="urn:publicid:IDN+ion.internet2.edu+authority+am"/> <component_manager name="urn:publicid:IDN+emulab.net+authority+cm"/> <component_manager name="urn:publicid:IDN+utah.geniracks.net+authority+cm"/> <interface_ref client_id="server-gpo:if0" component_id="urn:publicid:IDN+instageni.gpolab.bbn.com+interface+pc2:eth1" sliver_id= "urn:publicid:IDN+instageni.gpolab.bbn.com+sliver+7790"/> <interface_ref client_id="client-utah:if0" component_id="urn:publicid:IDN+utah.geniracks.net+interface+pc5:eth1" sliver_id="urn: publicid:IDN+utah.geniracks.net+sliver+23068"/> <property capacity="100000" dest_id="client-utah:if0" source_id="server-gpo:if0"/> <property capacity="100000" dest_id="server-gpo:if0" source_id="client-utah:if0"/> </link> <stitching lastUpdateTime="2013-07-16T01:32:55.973Z" xmlns="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/" xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance" xsi:schemaLocation="http://hpn.east.isi.edu/rspec/ext/stitch/0.1/ http://hpn.east.isi.edu/rspec/ext/stitch/0.1/stitch-s chema.xsd"> <path id="link"> <globalId> ion.internet2.edu-22911 </globalId> <lifetime id="ion.internet2.edu-22911"> <start type="xgc"> 2013-07-25T00:00:00.000Z </start> <end type="xgc"> 2013-07-16T01:32:55.973Z </end> </lifetime> <hop id="1"> <link id="urn:publicid:IDN+instageni.gpolab.bbn.com+interface+procurve2:5.24"> <trafficEngineeringMetric> 10 </trafficEngineeringMetric> <capacity> 100000 </capacity> <switchingCapabilityDescriptor> <switchingcapType> l2sc </switchingcapType> <encodingType> ethernet </encodingType> <switchingCapabilitySpecificInfo> <switchingCapabilitySpecificInfo_L2sc> <interfaceMTU> 9000 </interfaceMTU> <vlanRangeAvailability> 3747 </vlanRangeAvailability> <suggestedVLANRange> 3747 </suggestedVLANRange> <vlanTranslation> false </vlanTranslation> </switchingCapabilitySpecificInfo_L2sc> </switchingCapabilitySpecificInfo> </switchingCapabilityDescriptor> </link> <nextHop> 2 </nextHop> </hop> <hop id="4"> <link id="urn:publicid:IDN+emulab.net+interface+procurve-pgeni-atla:3.21"> <trafficEngineeringMetric> 10 </trafficEngineeringMetric> <capacity> 100000 </capacity> <switchingCapabilityDescriptor> <switchingcapType> l2sc </switchingcapType> <encodingType> ethernet </encodingType> <switchingCapabilitySpecificInfo> <switchingCapabilitySpecificInfo_L2sc> <interfaceMTU> 9000 </interfaceMTU> <vlanRangeAvailability> 923 </vlanRangeAvailability> <suggestedVLANRange> 923 </suggestedVLANRange> <vlanTranslation> false </vlanTranslation> </switchingCapabilitySpecificInfo_L2sc> </switchingCapabilitySpecificInfo> </switchingCapabilityDescriptor> </link> <nextHop> 5 </nextHop> </hop> <hop id="5"> <link id="urn:publicid:IDN+emulab.net+interface+procurveA:3.19"> <trafficEngineeringMetric> 10 </trafficEngineeringMetric> <capacity> 100000 </capacity> <switchingCapabilityDescriptor> <switchingcapType> l2sc </switchingcapType> <encodingType> ethernet </encodingType> <switchingCapabilitySpecificInfo> <switchingCapabilitySpecificInfo_L2sc> <interfaceMTU> 9000 </interfaceMTU> <vlanRangeAvailability> 923 </vlanRangeAvailability> <suggestedVLANRange> 923 </suggestedVLANRange> <vlanTranslation> false </vlanTranslation> </switchingCapabilitySpecificInfo_L2sc> </switchingCapabilitySpecificInfo> </switchingCapabilityDescriptor> </link> <nextHop> 6 </nextHop> </hop> <hop id="6"> <link id="urn:publicid:IDN+utah.geniracks.net+interface+procurve2:1.19"> <trafficEngineeringMetric> 10 </trafficEngineeringMetric> <capacity> 100000 </capacity> <switchingCapabilityDescriptor> <switchingcapType> l2sc </switchingcapType> <encodingType> ethernet </encodingType> <switchingCapabilitySpecificInfo> <switchingCapabilitySpecificInfo_L2sc> <interfaceMTU> 9000 </interfaceMTU> <vlanRangeAvailability> 923 </vlanRangeAvailability> <suggestedVLANRange> 923 </suggestedVLANRange> <vlanTranslation> false </vlanTranslation> </switchingCapabilitySpecificInfo_L2sc> </switchingCapabilitySpecificInfo> </switchingCapabilityDescriptor> </link> <nextHop> null </nextHop> </hop> </path> </stitching> </rspec>
At this point the experiment has been set up and you may determine the login information at each compute aggregate:
$ readyToLogin.py ig-gpo-ig-utah -a ig-gpo ... server-gpo's geni_status is: ready (am_status:ready) User lnevers logs in to server-gpo using: ssh -i /home/lnevers/.ssh/geni_cert_portal_key lnevers@pcvm2-14.instageni.gpolab.bbn.com $ readyToLogin.py ig-gpo-ig-utah -a ig-utah client-utah's geni_status is: ready (am_status:ready) User lnevers logs in to client-utah using: ssh -p 30522 -i /home/lnevers/.ssh/geni_cert_portal_key lnevers@pc5.utah.geniracks.net
We will use the server-gpo login to determine the routable IP address that was requested for the Web Server:
$ ssh -i /home/lnevers/.ssh/geni_cert_portal_key lnevers@pcvm2-14.instageni.gpolab.bbn.com Warning: Permanently added 'pcvm2-14.instageni.gpolab.bbn.com,192.1.242.151' (RSA) to the list of known hosts. [lnevers@server-gpo ~]$ /sbin/ifconfig eth999 Link encap:Ethernet HWaddr 02:94:6D:BC:36:DC inet addr:192.1.242.151 Bcast:192.1.242.255 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16760 errors:0 dropped:0 overruns:0 frame:0 TX packets:8485 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22877000 (21.8 MiB) TX bytes:460760 (449.9 KiB) eth3747 Link encap:Ethernet HWaddr 02:50:1E:B4:3D:52 inet addr:192.168.4.1 Bcast:192.168.4.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3064 (2.9 KiB) TX bytes:476 (476.0 b)
You may also use the client-utah login to verify connectivity between to the server-gpo:
$ ssh -p 30522 -i /home/lnevers/.ssh/geni_cert_portal_key lnevers@pc5.utah.geniracks.net [lnevers@client-utah ~]$ /sbin/ifconfig eth923 Link encap:Ethernet HWaddr 02:FC:D2:8D:7C:FF inet addr:192.168.4.2 Bcast:192.168.4.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:54 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2408 (2.3 KiB) TX bytes:0 (0.0 b) eth999 Link encap:Ethernet HWaddr 02:CD:95:2D:16:C5 inet addr:172.17.5.7 Bcast:172.31.255.255 Mask:255.240.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:17003 errors:0 dropped:0 overruns:0 frame:0 TX packets:8062 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22951047 (21.8 MiB) TX bytes:432534 (422.3 KiB) [lnevers@client-utah ~]$ ping -c 5 192.168.4.1 PING 192.168.4.1 (192.168.4.1) 56(84) bytes of data. 64 bytes from 192.168.4.1: icmp_req=1 ttl=64 time=161 ms 64 bytes from 192.168.4.1: icmp_req=2 ttl=64 time=80.3 ms 64 bytes from 192.168.4.1: icmp_req=3 ttl=64 time=80.4 ms 64 bytes from 192.168.4.1: icmp_req=4 ttl=64 time=80.4 ms 64 bytes from 192.168.4.1: icmp_req=5 ttl=64 time=80.4 ms --- 192.168.4.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 80.388/96.667/161.683/32.508 ms
Finish the Stitching Experiment
Attachments (6)
- IG-GPO-IG-Utah.jpg (55.5 KB) - added by 11 years ago.
- IG-GPO-IG-Utah-tags.jpg (68.0 KB) - added by 11 years ago.
- web-server-iperf.jpg (1.3 MB) - added by 11 years ago.
- web-server-stats.jpg (2.1 MB) - added by 11 years ago.
- web-server.jpg (1.7 MB) - added by 11 years ago.
- web-server-pingplus.jpg (819.4 KB) - added by 11 years ago.