Resource Specification (RSpec) Documents in GENI

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 AMs to communicate using RSpec data types.

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 that describes the resources that a user has reserved at an AM.

RSpec Versions

In addition to the three types of RSpecs, there are also different versions of RSpecs. The current version is GENI v3. Depending on which tool you use to reserve resources you should be able to get a list of supported RSpecs from each AM through the GetVersion API call.


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.


The SFA RSpec is the native RSpec format of PlanetLab AMs. As of January 2012 PlanetLab supports GENI v3 RSpecs that is the recommended RSpec for use in GENI.

ProtoGENI v2 (deprecated)

ProtoGENI v2 RSpec is the version that ProtoGENI AMs used to describe resources. The GENI community decided to adopt this version, and created the GENI v3 RSpecs based on this. It is easy to convert RSpecs from ProtoGENI v2 to GENI v3.

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.

There are instructions about converting ProtoGENI v2 to GENI v3 RSpecs.

There are instructions about converting ad to request RSpecs for PlanetLab AMs.

Debugging RSpecs

If you write your own RSpecs, it is recommended that you 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.

For comments and corrections on this page please email us.

Last modified 10 years ago Last modified on 05/15/12 20:22:16

Attachments (1)

Download all attachments as: .zip