Version 13 (modified by, 9 years ago) (diff)


GENI Inter-Aggregate Stitching Tutorial

Image Map

Step 1: Download and Import Initial Resource Request RSpec

For this tutorial we are going to use the Jacks tool as an rspec editor, but we are going to do the actual reservation using stitcher, a command line tool.

This tutorial starts with an existing RSpec which includes 3 nodes in a linear topology. The resources are un-bound, which means the resources are not affiliated with any rack aggregate.

To get started download the initial RSpec file and import it into Jacks to make modifications as follows:

1. Login to the GENI Portal at

2. Go to the Projects panel and click on the "Create Slice" button for the tutorial project. (If you are running this tutorial on your own, you may use any existing project you belong to.) On the "Create New Slice" page enter a slice name and click on "Create slice" button. For the purpose of this tutorial we will assume the slice is named MySlice, but you should use a unique name because each slice name must be unique within a project.

3. On the slice page select the "Slice Jacks" button.

4. On the Jacks canvas, in the Choose RSpec section, select the "URL" button. Paste this URL "" and hit Enter.

Step 2: Modify RSpec to include 2 Aggregates with 1 stitched link

Now that you have imported the RSpec, we will modify it to include a stitched link. Modifications in this section will result in the following topology:

To get to the above topology, we must make changes to the resources imported into Jacks. We will now modify "right-client" to become part of a different rack aggregate and then modify its link to be a stitched link.

5. Click on the "New Site" icon and drag it onto the Jacks Canvas. Drag the "right-client" box into the New Site on the Jacks Canvas.

6. In both ovals double-click the "Site" button. From the aggregates that were assigned to you at the beginning of the tutorials, use one aggregate for one oval and assign the second aggregate manager that was assigned to you at the beginning of the tutorial; do not use the aggregate used earlier. Click on the "Apply" button. (If you are running this tutorial on your own, you may use any other site aggregate found on the GENI Network Stitching Sites page.)

7. You will now see that the link from the "server" VM to "right-client" VM is now a gre-tunnel link. Select the gre-tunnel link information button to modify the link type to "stitched" and click "Apply" button.

8. You should now see that the topology has changed and that between the "server" VM and the "right-client" VM the link is now named "stitched0".

9. We will now export this topology to a file by selecting the "View" pull-down and choosing "Preview requested document(s)". You will now choose "Save to file" to export the RSpec we just modified. For the purpose of this experiment we will assume the file is saved to "MyTopology.rspec", but you can choose any name or location, just make a note of it.

We are now ready to use stitcher to create the stitched topology for our experiment!

Step 3: Run stitcher tool to get resources

The stitcher tools delivers the same features as the Omni tool, but with one major difference: stitcher will submit sliver request at all aggregate in your request RSpec. Let's now set up slivers for the request RSpec generated in the previous section:

11. Use stitcher to create a sliver, using the slice that we created in the Portal. The request will use the RSpec that was saved to a file in the setup steps. The output will look something like this:

$ stitcher createsliver MySlice MyTopology.rspec 
11:48:18 INFO     stitcher: Loading agg_nick_cache file '/Users/lnevers/.gcf/agg_nick_cache'
11:48:18 INFO     stitcher: Loading config file /Users/lnevers/.gcf/omni_config
11:48:18 INFO     stitcher: Setting option useSliceMembers based on omni_config setting
11:48:18 INFO     stitcher: Using control framework portal
11:48:18 INFO     stitcher: Member Authority is (from config)
11:48:18 INFO     stitcher: Slice Authority is (from config)
11:48:19 INFO     stitcher: Checking that slice MySlice is valid...
11:48:19 INFO     stitcher: Slice expires on 2014-03-17 14:57:35 UTC
11:48:20 INFO     stitcher: Stitched reservation will include resources from these aggregates:
11:48:20 INFO     stitcher: 	<Aggregate wisconsin-ig>
11:48:20 INFO     stitcher: 	<Aggregate stanford-ig>
11:48:20 INFO     stitcher: 	<Aggregate ion>
11:48:20 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at
11:48:38 INFO     stitch.Aggregate: Allocation at <Aggregate wisconsin-ig> complete.
11:48:38 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at
11:48:58 INFO     stitch.Aggregate: Allocation at <Aggregate stanford-ig> complete.
11:48:58 INFO     stitch.Aggregate: 
	Stitcher doing createsliver at
11:49:43 INFO     stitch.Aggregate: DCN AM <Aggregate ion>: must wait for status ready....
11:49:43 INFO     stitch.Aggregate: Pause 30 seconds to let circuit become ready...
11:50:20 INFO     stitch.Aggregate: DCN circuit 74871 is ready
11:50:27 INFO     stitch.Aggregate: Allocation at <Aggregate ion> complete.
11:50:27 INFO     stitch.launcher: All aggregates are complete.
11:50:27 INFO     stitcher: Saved combined reservation RSpec at 3 AMs to file MySlice-manifest-rspec-stitching-combined.xml
Stitching success: Reserved resources in slice MySlice at 3 Aggregates (including 1 intermediate aggregate(s) not in the original request), creating 1 link(s).

We are now ready to run the experiment!


Next: Execute