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


Navigation: Up

Retrieving Data from the Periscope Supported Backend


In the previous exercise, you may have already configured measurement probes via the GENI Desktop GUI. Here we are going to show you what happens in UNIS, which is the topology service that actually supports and directs the measurements.

How the Components are Connected

The above diagram shows the components of the GEMINI framework. When a user reserves a slice, along with the slivers on that slice, hosts are created and connections between these hosts are built as well. Next step is to Initialize and Instrumentize these raw resources, which will install the tools that the GEMINI framework uses. BLiPP is the probe agent that is installed at each measurement point. The major task that BLiPP carries out is running various types of probes including ping, iperf, traceroute, etc. A user can either let these agents run a default probe or manually start the probes at selected times. Here's the link to the BLiPP code repository and here's the wiki page where you can investigate more about using BLiPP for your custom probes.

BLiPP Generates Metadata and Data from Measurements

BLiPP runs user measurements via probes, parses the command line output, and once completed BLiPP uploads the result data to the Measurement Store (MS). The MS is running on the Global Node which will act as a collection point for the data generated on the user slice. Due to the fact that there could be many different kinds of measurement data collected at different periods in the experiment, we separate the data into Metadata and Data. The Metadata will describe which particular Measurement Event Type a real data set belongs to and this is stored in UNIS for bookkeeping and for easy retrieval of the desired information. The actual data, will be stored on the Global Node via the Measurement Store on a per user slice basis, this allows us to tie data to a slice instance. The three UNIS objects you need to be familiar with for getting a full picture of your experiment: the measurement, the metadata of the measurement and the data of the metadata.

  • The Measurement object: A measurement object depicts what probe the user want to use and how that probe will run. For example, probe command line arguments for user preference (e.g. how many times to repeat? and at what interval?).
  • The Metadata object: Is a handle stored at UNIS to retrieve the actual data on a users Global Node, per slice. Also, this is the key information a user should specify should they need access to the raw data.
  • The Data object: Is a series of key value pairs in JSON format.

How to Access Data from UNIS and the MS

step-by-step process of scanning the topology, looking for metadata, finding the eventTypes you are interested in (using or a browser), and then as a simple graphing tool tht can be customized for whatever graphing the user needs

Before we provide a step-by-step guide to retrieving data, lets go more in depth with these components. UNIS is a topology service that is used to describe a network but underlying this concept is a RESTful API. As you might expect UNIS supports the standard HTTP Verbs: GET, POST, PUT, and DELETE.

  • For example, if we wanted to query all the nodes on our slice we could: GET unis_host:port/nodes
  • For example, if we wanted to query one particular node on our slice we could: GET unis_host:port/nodes/:id

These HTTP requests to UNIS can be executed through the browser, a script, or via the command line. For a more detailed explaination of the UNIS RESTful API see A user can supply the same HTTP verbs to interact with the MS but remember that the MS is located on the Global Node for a given slice. For a more detailed explaination of the MS RESTful API see If you would like more information about how UNIS represents the individual components of a network see this detailed resource

If you completed the previous exercise,, then you should have an Instrumentized slice with a couple of Virtual Machines and a Global Node.

Above is a sample web server topology that will be used in this example. The GN0 node represents the Global Node and is where the MS runs and where data is collectioned. VM and VM-0 are the Measurement Points where BLiPP executes the probes we supply.

  • To access the GN0: ssh
  • To access the VM: ssh -p 33339
  • To access the VM-0: ssh -p 33340

If one of the machines asks for a password your ssh keys may not be in place. Visit and click SSH Keys to download your keys. Now lets login to the Global Node. Your command prompt should be similar to "[username@GN0]" for confirmation. There are a few important files to note on this machine.

  • The file /usr/local/etc/ contains information about your slice and what services it's using. This file can be found on any Global Node as it is created during the Instrumentation process.
  • The file /usr/local/etc/certs/unis-proxy.pem is the key, cert used to query the UNIS API, which is also created during the Instrumentation process.

When making a request to the UNIS API you will need to supply your key, cert and also the UUID of your slice so that you only see your subsection of UNIS. The slice UUID can be found in the "" file with the following format, "auth_uuid=fc028e53-cfbf-463d-9bf3-d26c35333b10".

  • For example, to query all the nodes on your slice: GET /nodes?properties.geni.slice_uuid=fc028e53-cfbf-463d-9bf3-d26c35333b10

If you're going to be using a command line tool, such as curl, you will need to follow this structure to retrieve information from UNIS. Fortunately, we provide a python script to help facilitate this process.

If you would like to try a periscope tool that handles your key, cert and slice uuid for you then you will need to install a dependency on the Global Node. For this example my Global Node is Fedora 15 but if you're using another image you can see more installation instructions here

Install Dependency's
cd /usr/src
sudo wget
sudo tar -xvzf node-v0.10.28.tar.gz
cd node-v0.10.28
sudo ./configure
sudo make
sudo make install

sudo yum install git

Test Dependency's
node -v
npm -v
git --version
git version

Clone Periscope Tool
cd ~
git clone
cd periscope/peri-js/

Install Peri-JS Dependency's
sudo npm install
sudo npm install -g bower
bower install

Start Peri-JS
sudo npm start

Upon starting this tool you will see the UNIS instance you are connecting to, the MS store instance, and various information about the Global Node. The Peri-JS tool is a RESTful API itself that represents your subsection of UNIS. You can query this tool using the browser or command line.

CMD: curl

Either way, when you request this URL you will see a list of routes you can query. These routes accept the same HTTP verbs as the UNIS and MS API's but Peri-JS only displays the data for your slice.

GET /api/slice
GET /api/nodes
GET /api/nodes/:id
GET /api/services
GET /api/services/:id
GET /api/measurements
GET /api/measurements/:id
POST /api/measurements/:id
GET /api/data/:id
GET /api/links
GET /api/links/:id
GET /api/ports
GET /api/ports/:id
GET /api/domains
GET /api/domains/:id

Attachments (5)

Download all attachments as: .zip