Version 29 (modified by Vic Thomas, 9 years ago) (diff)


Key GENI Concepts

This page introduces: (1) GENI concepts and terms you will need to know before you use GENI and (2) the GENI experimenter workflow that ties together these concepts and terms.


A project organizes research in GENI, containing both people and their experiments. A project is led by a single responsible individual: the project lead. A project may have many experimenters as its members. An experimenter may be a member of multiple projects. The project lead is ultimately accountable for all actions by project members in the context of the project.

The following figure illustrates a situation where a professor is the lead for two GENI projects Alpha and Beta. Each project has one of the professor's research assistant as a member. The professors and his post-doc are members of both projects.

No image "ProjectGraphic.png" attached to GENIConcepts


GENI is a shared testbed i.e. multiple experimenters may be running multiple experiments at the same time. This is possible because of the concept of a slice. A GENI slice is:

  • The unit of isolation for experiments. A GENI experiment lives in a slice. An experiment in one slice is isolated from experiments in other slices.
  • A container for resources used in an experiment. GENI experimenters add GENI resources (compute resources, network links, etc.) to slices and run experiments that use these resources. An experiment can only use resources in its slice.
  • A unit of access control. The experimenter that creates a slice can determine which project members have access to the slice i.e. are members of the slice. The project lead is automatically a member of all slices created in a project.

The following figure shows two slices created by the research assistant in Project Alpha. She has added to Slice 1 three compute resources connected by three network links. She has also added the post-doc associated with her project as a member of her slice. Her professor was automatically added to her slice as he is the project lead. Slice 2 has two compute resources connected by a link. She has not added the post-doc as a member of this slice and so he cannot perform any actions on this slice or even view the resources in this slice. An experiment in Slice 1 can only use resources in Slice 1 and likewise an experiment in Slice 2 can only use resources in Slice 2.

No image "SliceGraphic.png" attached to GENIConcepts

The following roles are defined for slice members:

  • Lead. The slice Lead can add members to and remove members from a slice; add resources to or delete resources from a slice; change roles of other members of the slice; and delete the slice. The experimenter that created the slice is the slice lead. In the above example, this would be the research assistant.
  • Admin. A slice Admin has all the privileges of a slice Lead. The Project Leader is automatically added to a slice as an Admin. The slice Lead and any slice Admin can promote other slice members to Admin. In the above example, the professor is an Admin on both slices by virtue of his being the Project Lead.
  • Member. A slice Member can add resources to a slice or delete them from a slice. A Member can run experiments using these resources. A Member cannot make changes to slice membership. In the above example, the post-doc is a Member of Slice 1.
  • Auditor. An Auditor can list resources in a slice but cannot make any changes to the resources held by a slice or make changes to slice membership.

The GENI Portal

The GENI Portal is web-based tool for experimenters to create accounts, projects and slices and to manage project and slice memberships. The Portal also includes tools to discover and add resources to slices.

Aggregates and Resources

A GENI aggregate provides resources to GENI experimenters. For example, a GENI Rack at a university is an aggregate; GENI experimenters may request resources from this aggregate and add them to their slice. Different aggregates provide different kinds of resources. Some aggregates provide compute resources: Virtual Machines or "bare machines" or both. Some aggregates provide networking resources that experimenters can use to connect compute resources from multiple aggregates. The figure below shows a GENI slice with resources from multiple aggregates.

No image "SliceAndAggregates.png" attached to GENIConcepts

GENI Rspecs and the GENI AM API

Experimenters request resources from aggregates using a standard API called the GENI Aggregate Manager API or GENI AM API. The AM API allow experimenters to, among other things, list the resources available at an aggregate, request specific resources from the aggregate be allocated to their slices, find the status of resources from the aggregate that are allocated to their slice and delete resources from their slice. The AM API uses GENI Rspecs (resource specifications) to describe resources. Experimenters send to aggregates a request Rspec that describes the resources they want and get back from the aggregates a manifest Rspec that describes the resources they got. The manifest includes information such as the names and IP addresses of the compute resources (e.g. virtual machines), user accounts created on the compute resources, etc. Most experimenters will not need to learn details of the AM API or read/write Rspec files; GENI experimenter tools hide much of this complexity.

The figure below shows an experimenter using the Allocate call of the GENI AM API to add resource from two different aggregates to her slice.

No image "AMAPI.png" attached to GENIConcepts

Tying this all together: The GENI Experimenter Workflow

The following is the workflow for a typical GENI experiment. The objective here is to show how the concepts described above tie together; this is not intended to be a complete description of the GENI experimenter workflow. The experimenter:

  1. Requests an account at the GENI Portal.
  2. Joins an existing project on the portal or creates a new project. Only faculty and senior technical staff can create projects.
  3. Creates a slice.
  4. Decides what resources she needs and which aggregates they will come from.
  5. Crafts a rspec that describes the resources she needs. She will typically use a GENI experimenter tool to craft this Rspec.
  6. Invokes the appropriate GENI AM API calls on the aggregates she wants to use; the request Rspec is sent to the aggregates using these AM API calls.
  7. Receives from the aggregates a manifest Rspec that includes information she will need to use the resources allocated to her slice.
  8. Use the resources she got to run her experiment. She may log into the compute resources she got, install software and send traffic on the network links.
  9. When the experiment is done, she deletes the resources from her slice.

The GENI Glossary

For a glossary of GENI terms, see