Experiment Quickstart

There is detailed documentation of all of the options available for each script available later in this documentation. This section is a quick example of how to run each basic experiment with minimal non-default parameters (and limited explanation).

Install Tools

You will need to install a number of python libraries - if you are not using a virtualenv you may have to use sudo with pip:

$ pip install --upgrade requests lxml cryptography ipaddress paramiko

You will need a working geni-lib installation set up with your GENI credentials. You can find installation instructions in the geni-lib documentation.

Assuming you have mercurial installed in your system, you will also need to download and install a pair of libraries provided by the UH NetLab:

$ wget --content-disposition http://docs.uh-netlab.org/software/uhgeni/_files/latest.tar.gz
$ wget --content-disposition http://docs.uh-netlab.org/software/uhexp/_files/latest.tar.gz

Unzip and extract the tar archive and then install:

$ cd uhgeni; pip install .; cd ..
$ cd uhexp; pip install .; cd ..

Finally, we will download and extract the repository containing the reference experiments:

$ wget --content-disposition http://docs.uh-netlab.org/software/reference-experiment/_files/latest.tar.gz
$ cd reference-experiment

Run Experiment

In order to run this experiment you need to choose an infrastructure to use with reserve.py. There is one other infrastructure reservation script for CloudLab, reserve-ig.py.

For VTS sites, you will need to link a Dropbox account with your user credential at that site, in order to transfer data for analysis out of your isolated topology, as VTS topologies do not have access to the internet. You can find instructions for this in the online GENI VTS documentation. The experiment will still function without this feature, but you will not be able to easily retrieve data for analysis.

When you are ready to execute the experiment, you will make a reservation and then use the reserved topology details to invoke the experiment orchestration script (replace myslicename with a slice you have created).


For reservations on VTS that deletes an existing sliver on myslicename at this site:

$ python reserve.py --delete --slice myslicename --site vts-gpo --project myprojectname

For reservations on CloudLab, you can see the available options:

$ python reserve-ig.py --help

This will create a topology for the experiment.


Reservations on GENI require that there are no existing slivers on slices at the same sites. Therefore, each reservation script is programmed to delete any previously existing slivers.

Once reserve.py returns it will have saved the manifest, request rspec, and dot file representing your reservation in the current directory. You can now run the actual experiment using the runexp.py - options can be retrieved:

$ python runexp.py --help

When you execute runexp.py, you will be asked for the passphrase for any SSH private keys needed to execute the experiment. You can view the current progress by tailing the live output log in another terminal:

$ tail -F ref-exp.log