This wiki page serves as the Status Report following GEC10 for the IMF project.

  • Draft created by Rudra Dutta on March 22, 2011
  • Modified by IMF team during March 22 - May 10, 2011
  • Final version released on May 10, 2011

Upon consultation with GPO, the priorities of the project were revisited for Year 2 of this project. As a result, Year 2 (Spiral 3) goals were focused on integrating the developed IMF capabilities for measurement, and transfer of measurement (from substrate to in-slice stack), with existing GENI Inst&Meas capabilities; specifically, to integrate and install perfSONAR (pS) MPs and archives to collect performance measurement data from Polatis switches and Infinera DWDM platforms on 4 BEN sites, and (subsequently) integrate pS MP polling, or adopt other GENI I&M capabilities, into IMF to mediate the ability of in-slice reactive protocols to communicate back to actuators in the substrate.

At GEC10, the first of these (collecting performance data from Polatis and Infinera using pS) capability has been completed. This leverages Spiral 3 goals of the ERM project team, who also form the Columbia U part of the IMF team.

In order to achieve this, the main effort was to collaborate with the perfSONAR development team to define a modified form of the pS MP service, which we embed in the IMFRealTime service, to allow the measurement to be obtained using the IMF MH from the substrate optical switches and other equipment; additionally, to create a lightweight and locally coupled pS Measurement Archive in which measurements could be made available for the client. The lightweight pS code and architecture developed has also been successfully integrated into the universal ERM box by the Columbia team, as part of the ERM project.

This is running on 6 of the 8 optical equipments of the BEN testbed in North Carolina, and the IMF capability to query the pS archive serving those switches was demonstrated at GEC10.

Major Accomplishments

Milestones Achieved

  • IMF: S3.c Demonstration at GEC10 and Experimenter Outreach
  • IMF: S3.d Documentation and Code Release

Deliverables made

Description of work performed during last quarter

IMF project achievements for this first part of Spiral 3 consist of:

  • Collaboration with perfSONAR development team to define the requirements of the modified pS client
  • Embedding modified pS code provided by the perfSONAR team in IMF
  • Implementing pS measurement archive for Polatis and Infinera switches
  • Implementing pS client in IMF pubsub server
  • installing on BEN testbed
  • Demonstrating completely working system at GEC10

Activities and Findings

As we mentioned above, the priorities of the IMF project in the three months previous to GEC10 has been on establishing the perfSONAR capability established in the Measurement Handler, and the capability demonstrated by querying it using a pS query. In GEC10, we demonstrated this capability, and used the IMF Pub-Sub Module (PSM) to send a pS query to the MH and receive measurement data back. The GEC10 snapshot of the IMF code (packaged below on this wiki) is shown below in terms of the system architecture at GEC8 in the diagram below.

Doodling on architecture diagram to show GEC10 code structure

The Java subscriber to the XMPP pub-sub service is not packaged in this release; the previously supplied code can, without change, be used (as part of a SILO service or standalone, as before), to extract the measurement data stored in the XMPP server. The difference in this version is in how the IMF Pub-Sub Module acquires that data - it can now use a perfSONAR query to access the Measurement Handler (the IMF PSM can continue to reach the MH using an XML-RPC query as before as another alternative).

In the MH, the pS capability is introduced by including a new pS service that we have called the "IMFRealTime" pS service. (Note: this name may be somewhat misleading and may change in subsequent releases; see discussion below.) The IMFRealTime service is different from a normal Perfsonar service (MA or MP) in the sense that it implements a bit of both. It uses the mh Perl module and expands Perfsonar's configuration file to provide the MP service. However, instead of sending the results to an MA, the collected data are saved locally.

The main reason behind this solution is that we want to avoid the delay introduced by adding an extra layer of database between the users and the MP. Consequently, the IMFRealTime service also needs to provide a user interface for real-time user queries in the absence of a standard Perfsonar MA. In essence, the IMFRealTime service acts as a pS MP service (that uses previously developed IMF Measurement Handler capability to gather measurement data), but also looks like a pS MA service to external users who issue queries to obtain measurement data from the Measurement Archive. In fact, internally, it uses shared memory as inter-process communication to access the most fresh data in response to user queries. The shared memory acts as the rendezvous instead of the usual MA database.

About "RealTime" Nomenclature: This behavior is obviously not actually "real-time" in terms of the time when measurement is made. In contrast, the original XML-RPC approach is "real-time" in that measurements are "triggered", or undertaken (by the MH) in response to incoming user queries. Rather, the behavior is "real-time" in only the sense that the IMFRealTime service looks for the most recent available data in response to user queries. To avoid this potential confusion, we are considering re-naming the IMFRealTime pS service to something else in future releases, and use the term "real-time" exclusively to refer to cases where actual fresh measurements are undertaken once user queries are received. In the future, we hope to investigate the possibility of triggered real-time measurements using the pS pathway as well; at this time, it appears this may not be a suitable match, since the pS architecture relies on static configuration file for measurements, and thus clearly separates the data query from collection.

The developer notes, and other documentation included in the code below, provide more details regarding specifics.

Project Participants

  • Rudra Dutta, George Rouskas (NCSU)
  • Shu Huang, Ilia Baldine (RENCI)
  • Keren Bergman, Michael Wang, Bala Bathula, Cathy Chen (Columbia U)


Integrated quarterly report and code documentation (this wiki)


Participants of the IMF team attended GECs as well as meetings of the Instrumentation and Measurement Working Group as possible. We have previously collaborated with the GENI LEARN project team, and progressing toward deploying IMF in LEARN.


The IMF team continued to collaborate with Deniz Gurkan of the GENI project LEARN.

The IMF team collaborated with Martin Swany of the perfSONAR team to define and discuss the requirements of IMF as a pS usecase, resulting in the articulation of an alternate type of pS client and functionality, one that more nearly matches the needs of real-time oriented systems such as IMF.

Other contributions


Code Release

Code Snapshot

The GEC10 version of the IMF system can be built from source in the following tarballs:

Documentation and Release Notes

The diagram above (in "Activities/Findings?" section) shows where these tarballs fit in. The pubsub_for_perfsonar.tar.gz file (PubSub for perfSONAR) replaces the imf.tar.gz file of previous releases: the internal file heirarchy is the same, but the top-level name is different: "imf_pfsr" instead of "imf"; this is a kluge that will be fixed in the next release. As a consequence, this version of the code can only use pS query to reach the MH, the previous XML-RPC option is not available in this cut (the MH is still capable of it).

The following developer's notes on the IMFRealTime pS service provide more detail which should be helpful in using this code. This file is also included as "doc/README.imf" in the perfsonar_imf_realtime.tar.gz tarball. In addition, the following diagram of the code organization for the "PubSub for perfSONAR" module (pubsub_for_perfsonar.tar.gz) may be helpful.