Version 42 (modified by, 9 years ago) (diff)


In order to allow interoperability among different Aggregate Managers(AMs), GENI requires a common language for describing resources, resource requests, and reservations. GENI now uses standardized Request Specification (RSpec) documents which are XML documents following agreed schemas to represent resources. The schemas support Aggregate or resource specific extensions. Ongoing work covers agreeing upon ontologies for other resource types.

RSpec Types

In GENI there are three different types of RSpec, each used to describe resources when communicating with an AM. The communication with an AM, is based on the common GENI AM API that requires from AMs to use RSpec data types to communicate.

Advertisement RSpec

This is the document that is returned by an AM that describes the resources that the AM has.

Request RSpec

This is the document that a user sends to an AM to describe the resources that he wants to reserve.

Manifest RSpec

This is the document returned by an AM tha describes the resources that a user has at an AM.

RSpec Versions

Except from the three types of RSpecs, there are also different versions of RSpecs. The current version is the GENI v3.


The current GENI v3 RSpec schemas are based on the ProtoGENI v2 RSpecs. You can find some documentation and RSpec examples on the ProtoGENI website. There you will also find a tutorial on RSpecs. Although the examples are for ProtoGENI v2 RSpecs, it is easy to convert them to GENI v3.

OpenFlow v3 Extension

For OpenFlow resources there is an extension to the GENI v3 schema. More details about the schema can be found here, and these are instructions about how to write one from scratch.


PlanetLab type AMs except from GENI RSpecs, they also support SFA rspecs.

ProtoGENI v2 (deprecated)

The latest GENI v3 are based on ProtoGENI v2 RSpecs. A good resource about understanding and writing ProtoGENI v2 RSpecs can be found on the ProtoGENI wiki. The only difference between

Writing RSpecs

You will only probably ever need to write Request RSpecs. The best way to write RSpecs is either to use a tool like Flack, or to modify an existing example, or to modify an advertisement RSpec.

For OpenFlow v3 RSpecs there is wiki page that gives step-by-step instructions about how to write a valid RSpec.

Debugging RSpecs

If you write your own RSpecs, then you can use rspeclint to verify the validity of the document. is a script written in python that will check the validity of an xml document against its schema.

Converting ProtoGENI v2 to GENI v3

The only thing that changed from ProtoGENI v2 to GENI v3 RSpecs is the location of the schemas. On the top of a ProtoGENI v2 RSpecs there is the <rspec> tag that provides a lot of information about the RSpec version that is used in the document. In order to convert them to GENI v3 RSpecs you will just need to replace that tag.

ProtoGENI v2 tag

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

     <!-- Rest of RSpec -->


GENI v3 tag

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

     <!-- Rest of RSpec -->


For comments and corrections on this page please email us.

Attachments (1)

Download all attachments as: .zip