Version 14 (modified by, 6 years ago) (diff)


Module A: Run your first experiment (a.k.a. Implement a Learning Switch)

Image Map

1. Design the Experiment

  1. In today's experiment you will use resources at the aggregate listed on the worksheet. If you don't have a worksheet use Clemson InstaGENI (aka

2. Establish the Environment

2.1 Pre-work: Ensure SSH keys are setup

Verify that you have at least one public key associated with your account. To do that, after you login to the portal check under your Profile, under the SSH keys tab. If you do not have SSH keys associated yet, please follow the instructions on that tab of the Portal.

2.2 Configure Omni

  1. Login to the GENI Portal
  2. Click on the `Profile tab` link on the top of your screen. Then click on the `Configure omni` tab under `PROFILE`.

Figure 2-1 Click on the Configure omni tab under Profile.
  1. Click on the `Download your omni data` button under step 2.

Figure 2-2 Download your omni data under step 2.
  1. If this is the first time you try to access your GENI certificate you will have to generate one. Click on the `generate a certificate` link.

Figure 2-3 Click on Generate a certificate.
  1. Unless you really understand how SSL certificates work, choose the simple option. Click on the `Generate Combined Certificate and Key File` button and then click on `Close`. You will be taken back to the download page with the warning. Reload the page to enable the download button.

Figure 2-4 Click on Generate Combined Certificate and Key File.
  1. If you are a member of more than one project, select which project you would like to be the default one for running experiments in GENI. You can always change the project that is used by the `-r` command line option of Omni. Then click on `Download your omni data`.

Figure 2-5 Click on Download your omni data.
  1. The bundle will be saved at ~/Downloads/omni.bundle
  2. Open a terminal window and type:
    The cert and key files you need will be installed in the appropriate folders.

3. Obtain Resources

3.1 Create a slice

Create a slice using omni and the slice name of your choice. From now on that slice name will be referred to as SLICENAME.

$ omni createslice SLICENAME

3.2. Load a simple topology in Jacks

For this exercise, we will edit an existing RSpec file. Start by loading this predefined topology into Jacks.

  1. In the Portal, open the Slice page for the slice you just created. Notice that you created the slice with omni and it is available via the Portal.
  2. Press the Add Resources button to launch Jacks for this slice.
  3. From the Choose RSpec menu (see figure), select the URL button.
Import an RSpec into Jacks
Figure 3-1 Import an RSpec into Jacks.
  1. Enter the URL for the RSpec:
    then click Select.
  2. After you click Select, a network topology should appear on the canvas.

3.3. Modify the RSpec to automatically install and execute LabWiki software

For this experiment, we need to install the following software on the nodes:

  • The GIMI software (gimidev.tar.gz)

When the nodes start up, we need the following scripts to be executed:

  • Script that sets up the GIMI software (

We automate the installation and running of the software using install and execute scripts in the RSpec.

  1. Click on the node labeld noded (see figure) to manipulate details of the node configuration.
    Note When you open the node information, you should see a new pane with fields to fill in like in the figure.

Figure 3-2 Edit the nodes
  1. The way we will request installation of the proper software and execution of our experiment is to add install and execute services.

Figure 3-3 Specify the install and execute scripts
  1. You will be adding one install script. First, select "Add" under the Install Scripts sections as shown. In the box in the URL field enter (cut-and-paste):
    and enter
    in the box under it (labeled 'Install Path:').

  2. In a similar manner, use the "Add" button under the Execute Scripts section to add the execute service on this node:
    sudo sh /gimidev/
  3. Be very careful when entering this information -- these commands will not be executed yet, so it will be some time before you will see any relevant error messages if there is a mistake here.
  1. You DO NOT have to specify install and execute scripts for the other nodes as they have already been done for you. You can check this by clicking on the icons for these nodes.

3.4. Export the modified request RSpec

Now we will pull back some of the covers and inspect exactly what Jacks has been doing for us when preparing the RSpecs for the experiments we design. Each node and link has a corresponding element in the RSpec, and the details of the component configuration (such as the install and execute services we requested above) are specified with attributes, or sometimes child elements, within those portions of the document.

  1. From the Add Resources window (see figure), select the View Rspec button on the top right hand side. This will bring up a pane showing the current RSpec -- please take a moment to inspect it. The `<node>` and `<link>` elements contain the specification for the components we will request, and if you look closely, you will be able to see the install and execute service elements you added earlier. Click on the "View RSpec" button again to return to the main screen.

Figure 3-4 View and save the final request RSpec
  1. Use the Download button (in the lower left part of the screen next to Save RSpec) to make a local copy of your RSpec with the name rspec.xml. We'll use this in the next step to demonstrate how other client tools also use RSpec files to communicate requests to aggregate managers.

3.5. Instantiate the new experiment using Omni

For this step, we'll change the approach a bit and switch to a new client tool, the command line Omni client.

From a terminal, please enter the command:


where AM_NICKNAME is the nickname for your assigned aggregate manager and SLICENAME is the name of the slice you created earlier (both of these are given on your worksheet). RSPEC_FILE should be replaced with the filename of the RSpec you saved in step 3.4.

If all is well, Omni should give you a number of informational messages, such as:

INFO:omni:Loading config file /home/geni/.gcf/omni_config

It should quickly proceed to the point where it makes the request to the remote manager:

INFO:omni:Creating sliver(s) from rspec file /home/geni/Downloads/experiments.rspec for slice ...

This step can sometimes be time-consuming, so please be patient. If it succeeds, within a couple of minutes Omni should report:

INFO:omni: Completed createsliver:

and your resource reservation is complete!

4 Wait for resources to be ready

You can tell whether your nodes are ready by using a script built on omni called readyToLogin.

  1. Please use the command:
    readyToLogin --useSliceAggregates SLICENAME
    where (as before) SLICENAME is your slice name (found on your worksheet).
    --useSliceAggregates will query the GENI Clearinghouse for the aggregates where you have resources on this slice.
  2. If it reports that the sliver is not yet ready (for example, it might say that the status is "changing"), then wait a minute or two and try again. Once everything is complete, readyToLogin will give output that should look something like this:
    nodea's geni_status is: ready
    User example logs in to nodea using:
    	ssh -p 34106  -i /Users/example/.ssh/geni_key_portal
    switch's geni_status is: ready
    User example logs in to switch using:
    	ssh -p 34110  -i /Users/example/.ssh/geni_key_portal
    nodeb's geni_status is: ready
    User example logs in to nodeb using:
    	ssh -p 34107  -i /Users/example/.ssh/geni_key_portal
    nodec's geni_status is: ready
    User example logs in to nodec using:
    	ssh -p 34108  -i /Users/example/.ssh/geni_key_portal
    noded's geni_status is: ready
    User example logs in to noded using:
    	ssh -p 34109  -i /Users/example/.ssh/geni_key_portal


Next: Execute