Overview

OML is a measurement library that allows application writers to define customizable measurement points inside applications. Experimenters running the applications can then direct the measurement streams from these measurement points to storage in a remote measurement database. OML was originally conceived to provide measurement facilities within the OMF Testbed Management Framework, but can also be run independent of OMF.

OML consists of three main components:

  • OML client library: the OML client library provides a C API for applications to collect measurements that they produce. The library includes a dynamically configurable filtering mechanism that can perform some processing on each measurement stream before it is forwarded to the OML Server.
  • OML Server: the OML server component is responsible for collecting and storing measurements inside a database. Currently, SQLite3 is supported as the database backend.
  • OML Proxy Server: similar to an HTTP proxy, this component can buffer OML measurements locally and send them to full OML server later. This has several uses, such as for mobile experiments where the experiment node might be disconnected from the network some of the time.

We also have a bundle of client applications that perform measurements and filter and collect them using OML, including an OML-capable version of Iperf that we have created, together with wrapper applications for libsigar and libtrace.

The OML architecture is also explained in an article published at TridentCom 2010 and available here.