wiki:GENIEducation/SampleAssignments/UnderstandAMAPI/Procedure/DesignSetup

Version 41 (modified by sedwards@bbn.com, 10 years ago) (diff)

--

Understanding the AM API

Image Map

1. Design the Experiment

  1. In today's experiment you will use resources at the aggregate listed on the worksheet.

2. Establish the Environment

2.1 Pre-work: Create a GENI account

  1. Go to https://portal.geni.net and press the Use GENI button
  2. From the Drop Down menu select your institution. If you got an account through the GENI Identity Provider, please select GENI Project Office.
    Tip Start typing the name of your institution and see the list become smaller.
  3. You will be transferred to the Login Page of your institution. Fill in your username and password.
  4. Complete the form that appears after you have successfully logged in and press Continue.
  5. You will be transferred to an Activation Page. Make sure both checkboxes are checked and then press Activate.
Use GENI
Figure 2-1 Logging into the GENI Experimenter Portal.

Congratulations, you have successfully created a GENI account.

2.2 Pre-work: Project lead adds you to a project

In order to use the portal to reserve resources, you must join a project.

  1. The tutorial organizers should have added you to the project for this tutorial. On the home page, you should see that you are a member of at least one project.
    Tip If you are not doing this exercise as part of an in-person tutorial please sign up for a GENI account and join a project.

2.3 Pre-work: Ensure SSH keys are setup

Access to compute resources in GENI is provided through ssh key pairs and thus the portal needs a public key to upload to compute resources. For the purposes of the tutorial we will have the portal create an SSH key pair for you. (However, if you prefer to use your personal public key you can choose to upload it.) 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 these instructions.

2.4 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`.
  3. Click on the `Download your omni data` button under step 2.
  4. 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.
  5. 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.
  6. 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`.
  7. The bundle will be saved at ~/Downloads/omni-bundle.zip
  8. Open a terminal window and type:
    omni-configure
    The cert and key files you need will be installed in the appropriate folders.

3. Obtain Resources

Now that you are a member of a project, you can create a slice and reserve resources.

3.1 Create a slice

  1. Go to the Home tab.
  2. Press the Create Slice button for this project.
  3. As a slice name use the slice name on your worksheet, you can leave the description empty and press Create Slice
Create a GENI Slice
Figure 3-1 Create a new slice.

Now that you are a member of a project, you can create a slice and reserve resources.

3.2. Import a simple experiment

For this exercise, we will edit a predefined RSpec file. Start by loading this predefined topology into Flack.

  1. From the Slice page, launch Flack.
  2. From the Import menu (see figure), select the Import from the web item.
Import an RSpec into Flack
Figure 3-2 Import an RSpec into Flack.
  1. Enter the URL corresponding to the rack type you are using then click Ok.
    Aggregate Type RSpec URL
    InstaGENI
    InstaGENI
    http://www.gpolab.bbn.com/exp/UnderstandAMAPI/ig/understandAMAPI_ig.rspec
    ExoGENI
    ExoGENI
    http://www.gpolab.bbn.com/exp/UnderstandAMAPI/eg/understandAMAPI_eg.rspec
  2. Because this file contains a generic description of resources and does not specify any particular aggregate manager, Flack will report "There were resources detected without a manager selected, please select which manager you would like to use." Select OK, and then choose the manager listed on your worksheet from the list. Then select Accept, and a network topology should appear on the canvas.

3.3. Modify the experiment to automatically install and execute network test software

For this experiment, we'd like some additional software (Apache, iperf, and a couple of custom scripts) loaded onto the VMs to perform traffic measurements.

  1. In Flack, you can manipulate the details of the request for a node or link with the "i" button on the relevant component on the canvas. Do this now on the client node.

Figure 3-3 Edit the nodes
  1. When you open the node information, you should see options like those in the figure. The controls available to you will vary depending on the types of the aggregate manager and the component, but many features are widely available throughout GENI.
  2. The way we will request installation of the proper software and execution of our experiment is to add install and execute services.
  3. First, select "+ Add Install Service" as shown. Flack will now prompt you for an "Archive URL" and a location for installation. For this experiment, please enter the appropriate URL.
    Aggregate Type Archive URL Installation Location
    InstaGENI
    InstaGENI
    http://www.gpolab.bbn.com/experiment-support/UnderstandAMAPI/ig/underAMAPI_ig.tar.gz /local
    ExoGENI
    ExoGENI
    http://www.gpolab.bbn.com/experiment-support/UnderstandAMAPI/eg/underAMAPI_eg.tar.gz /local
  4. Similarly, please use the "+ Add Execute Service" button to request that the appropriate command be run after the node is booted.
    Aggregate Type Client Install Script Server Install Script Shell
    InstaGENI
    InstaGENI
    sudo /local/install-script.sh sudo /local/install-script.sh sh
    ExoGENI
    ExoGENI
    /local/install-client.sh /local/install-server.sh sh
    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.

Figure 3-4 Specify the tarball and install script
  1. Once both the "install" and "execute" services are specified, please choose "Apply". Then repeat the procedure to add the same "install" and "execute" services on the server node.
  2. Also on the server node, click on the "link" tab and select "Routable Control IP" as shown in the figure.
Select the 'Routable Control IP' button
Figure 3-5 On the Link tab, select the "Routable Control IP" button.

If you have time, it would be instructive to download the underAMAPI_*.tar.gz file yourself, and inspect the contents. You will see the install-script.sh file referred to in the execute service, and this is a good example of how you can ask for GENI components to perform tasks for you without any manual intervention. This is a very useful facility for large experiments!

3.4. Export the modified request RSpec

Now we will pull back some of the covers and inspect exactly what Flack 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 "View" menu (see figure), select the "Preview request document(s)" item. This will bring up a window showing the current RSpec -- please take a moment to inspect it. The XML elements under the "flack" namespace were added for Flack's internal use (containing information about the canvas layout, editing history, etc.), and are ignored by aggregate managers. 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.
  2. Use the "Save to file" button (in the upper left) to make a local copy of your RSpec. 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:

$ omni -a AM_NICKNAME createsliver SLICENAME RSPEC_FILE

where AM_NICKNAME is the nickname for your assigned aggregate manager and SLICENAME is the name of the slice you created at the portal (both of these are given on your worksheet). RSPEC_FILE should be replaced with the filename of the RSpec you saved in step 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 few minutes Omni should report:

INFO:omni: Completed createsliver:

and your sliver is complete!


Introduction

Next: Execute