Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / Slicecreation


Slice Creation

Slice Creation

This page describes how a slice is created and slivers are added to it using the ProtoGENI control framework. This process makes use of the APIs provided by the following entities:

All authentication (user certificates) and authorization (credentials) are done using the mechanisms described in:

The RSpec used to advertise and request resources is described here:

A poster that accompanied a demo of slice creation at GEC4 can be found here:

Example code

In the Emulab source CVS, examples of slice creation can be found in the protogeni/test/ subdirectory, and in the protogeni/demo/src directory, which contains the code for the Flash client used for ProtoGENI demos. The test scripts are documented on this page: TestScripts. There is also a Tutorial if you prefer not to read code.

Slice Creation and Provisioning

The following illustrates how a new slice is created, the set of available resources is discovered, and a set of slivers is created.


0: User's "home" Slice Authority issues the user an authentication certificate, which the SA signs

1: GetCredential() Slice Authority issues a "self credential" allowing user to perform actions not in the context of a particular slice, sliver, etc.

2: CreateSlice() User creates a new slice, and receives a credential granting the privilege to control the slice

3: Register() Slice Authority registers the user (if not already registered) and new slice with Clearinghouse

4: ListComponents() Client requests a list of all Aggregate Managers and Component Managers registered with the clearinghouse

5: DiscoverResources() Client requests an RSpec from each Aggregate Manger of interest, which describes the aggregate's resources

6: RequestTicket() Client selects a set of components, and creates an RSpec for each aggregate describing the components selected and the topology connecting them. Assuming the request is granted, each Aggregate Manger signs the request and returns it as a ticket

7: RedeemTicket() Client redeems tickets with the Aggregate Managers, causing slivers to be created. Aggregate Managers return credentials granting the privilege to control the created slivers

8: StartSliver() Client requests that the slivers be brought to a "running" state