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


OnTimeMeasure Project Experiences with using ProtoGENI in Spiral 2

Prasad Calyam, Kunpeng Zhu
Original: August 13, 2010

We have successfully demonstrated the integration of our OnTimeMeasure measurement service with the ProtoGENI control framework at GEC7 (Poster) and GEC8 (Poster). Some of our experiences with using ProtoGENI in GENI Spiral2 are described in the remainder of this document.

1. User Support

User Support from ProtoGENI team has been very good. The team was very responsive and helpful. They have helped us with conceptual, technical and admin issues at various times. To reach the ProtoGENI team, we have used the mailing list.

2. Deployment Challenges

  • No long-standing home directories, hence we had to internally backup any successfully deployed ProtoGENI code.
  • We could not replicate the ProtoGENI deployment environment internally for software development purposes. This is because the ProtoGENI node OS image has dependencies to ProtoGENI hardware drivers.
  • We had to perform some extra steps and had to deal with some unknowns (e.g., reasons for node crashes) to make our development code work on the ProtoGENI deployment nodes.

3. Experiences on 'getting to' and 'using' proper ProtoGENI documentation

  • ProtoGENI Tutorial for slice creation ( has been most helpful.
  • Intially, we tried setting up a slice based on the GEC6 RSpec and faced many problems. We realized that we do not have to mandatorily specify netfpga(s) in slice creation requests. We found the RSpec examples at and to be very useful.
  • There are several ways to create slices in ProtoGENI. The next section of this document details the ways we have successfully/unsuccessfully experimented.
  • For accessing repositories to get software module updates, we had to rely on Internet2 hosted repositories because other repository traffic is blocked.
  • Note that ProtoGENI API and scripts are evolving and so script names can change over time.
  • ‘Control’ network is different from ‘Experiment’ network, and these 2 networks can be accessed by using suitable IP addressing.
  • When our nodes crashed, we were able to reboot our nodes using some of the Emulab documentation at

4. Experiences in Creating ProtoGENI Slices

4.1 ProtoGENI Test Scripts

By following the TestScripts wiki, we successfully created and managed slices.

The advantage of the scripts is that it can reserve any node with proper RSpec input. But, creating a working RSpec manually needs some work. RSpec examples at and can be used as a starting point.

Typical steps we used to create a slice are given below as shown by the order of scripts execution:

  • –n <slice name>
  • –n <slice name> <rspec file>
  • sliverstatus –n <slice name>
  • renewsliver –n <slice name> <time>

A sample RSpec file we used:

<rspec type="request" xmlns="">

<!-- Fedora Backbone Node -->
<!-- Washington Location -->
<node component_uuid="" component_manager_uuid="" 
virtual_id="ontime_nodebeacon1" virtualization_type="emulab-vnode" exclusive="1">
    <node_type type_name="pc" type_slots="1"/>
    <interface virtual_id="virt-0"/>

<!-- Fedora Backbone Node -->
<!-- Kansas Location -->
<node component_uuid="" component_manager_uuid="" 
virtual_id="ontime_rootbeacon" virtualization_type="emulab-vnode" exclusive="1">
    <node_type type_name="pc" type_slots="1"/>
    <interface virtual_id="virt-0"/>
    <interface virtual_id="virt-1"/>

<!-- Fedora Backbone Node -->
<!-- Utah Location -->
<node component_uuid="" component_manager_uuid="" 
virtual_id="ontime_nodebeacon2" virtualization_type="emulab-vnode" exclusive="1">
        <node_type type_name="pc" type_slots="1"/>
        <interface virtual_id="virt-1"/>

<!-- Create link between root beacon located in Kansas to node beacon-1 located in  Washington -->
 <link virtual_id="root_beacon_to_node_beacon-1" link_type="ethernet">
    <interface_ref virtual_node_id="ontime_rootbeacon" virtual_interface_id="virt-0"/>
    <interface_ref virtual_node_id="ontime_nodebeacon1" virtual_interface_id="virt-0"/>

<!-- Create link between root beacon located in Kansas to node beacon-2 located in Utah -->
 <link virtual_id="root_beacon_to_node_beacon-2" link_type="ethernet">
    <interface_ref virtual_node_id="ontime_rootbeacon" virtual_interface_id="virt-1"/>
    <interface_ref virtual_node_id="ontime_nodebeacon2" virtual_interface_id="virt-1"/>


4.2 ProtoGENI Cooked Mode Client

A tutorial for the Cooked Mode Client can be found at: We created a slice using the drag & drop features in the Cooked Mode Client GUI link. One advantage of using the Cooked Mode Client is that it is easy to add nodes and choose which operating system needs to be installed on the nodes. As shown in the wiki, NS files can also be used for advanced node configurations, but we have not explored that feature yet. One problem we met relates to the case where only pcXXX nodes can be reserved using the Cooked Mode Client. We have not been able to reserve nodes at multiple locations due to lack of documentation available in the ProtoGENI wiki.

Cooked Mode Client

The steps we used to successfully create a slice using the Cooked Mode Client are as follows:

  • Go to and login using Emulab user credentials
  • Drag & drop to create a slice topology
  • Change the node names
  • Choose the OS to be installed on the nodes
  • Click 'File – create new experiment'
  • Follow the on-screen instructions

4.3 Map Interface

The ProtoGENI Map Interface can also be used to create a slice spanning several different component managers. However, we were unable to find detailed tutorials or documentation to debug some of the errors we observed.

To use the Map Interface, a setup procedure needs to be done initially by following the wiki instructions. Note that these instructions are for the 'Flash Client Interface' but they work for the 'Map Interface'.

To create a ProtoGENI slice using the Map Interface, follow the below steps:

  • Discover resources

Discover Resources

On opening the Map Interface, resources discovery will automatically start. Note that - sometimes one or two component managers will block the request queue. To unblock, open the console and cancel the blocked requests and start the queue again.

  • Create a new slice

Create a New Slice

After all the queued requests have finished, click the “work with slice” button. It will show the ProtoGENI slices you have previously created. Type a new slice name and click the 'create' button to create a new ProtoGENI slice.

  • Create slivers

Create Slivers

Drag the resources and create the topology. Then, click the “create slivers”

Note: Read the console messages

  • At the time of this writing, the Map Interface does not process the component manager’s (CM) response very well. Sometimes the CM returns an error message when creating slivers, but the Map Interface gives a 'success message' to the user.
  • Open the console, and read the last response in the left column to make sure no error messages have been recorded.

4.4 Flash GUI Interface

The Flash GUI Interface wiki can be found at We were unable to create a slice using the Flash GUI Interface. Our sense is that this interface is legacy and has been replaced by the Map Interface.

4.5 Emulab Java Client

Emulab Java Client wiki can be found at We were unable to create a slice using the Emulab Java Client. Our sense is that this interface is legacy and has been replaced by the Cooked Mode Client.

Attachments (4)

Download all attachments as: .zip