OML is an instrumentation tool that allows application writers to define customisable measurement points (MP) inside new or pre-existing applications. Experimenters running the applications can then direct the measurement streams (MS) from these MPs to remote collection points, for storage in measurement databases.
OML was originally conceived to provide measurement facilities for OMF-enabled testbeds, such as the ORBIT Testbed. It is now a stand-alone tool which can also be run independent of OMF. OML is now a generic software framework for measurement collection.
What does that mean?
Well, imagine you have a bunch of devices that are recording some sort of measurement data, and they are all connected to a network. OML gives you a way to collect all the measurement data being recorded by the devices to a central location, via the network.
What sort of measurements can OML handle?
OML is quite flexible -- it can be used to collect data from any source, such as statistics about network traffic flows, CPU and memory usage, input from sensors such as temperature sensors, or GPS location measurement devices.
What sort of applications can OML be used for?
OML is a generic framework that can be adapted to many different uses. Networking researchers who use testbed networks to run experiments would be particularly interested in OML as a way to collect data from their experiments. In fact, that's why we developed OML in the first place! However, any activity that involves measurement on many different computers or devices that are connected by a network could benefit from using OML.
OML consists of two 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. The C library, as well as the native implementations for Python (OML4Py) and Ruby (OML4R) are maintained here.
- OML Server: the OML server component is responsible for collecting and storing measurements inside a database. Currently, SQLite3 and PostgreSQL are supported as database backends.
A bundle of OML-instrumented applications is also provided that perform measurements and filter and collect them using OML, including an OML-capable version of Iperf as well as wrapper applications for libsigar and libtrace.
Third Party Libraries
- OML4J is a Java Injection Point (Maintained by NITLab it also has example of use within an Android application.
If you think you found a bug, please log in to this website and click New issue in the top menu. If you do not have an account, feel free to register. Alternatively, you can send your bug report via email: oml-issues AT mytestbed.net (does not require an account). Please attach log files and describe which version of OML and what platform you are using.
References and Citations
The OML architecture is described in a few academic publications. Perhaps the most relevant are the following (see the attached BibTeX file [attachemnt: oml.bib]):
Manpreet Singh, Max Ott, Ivan Seskar, and Pandurang Kama, "ORBIT measurements framework and library (OML): Motivations, design, implementation, and features," in TridentCom 2005, Feb. 2005. [Download ].
Olivier Mehani, Guillaume Jourjon, Thierry Rakotoarivelo, and Max Ott, "An instrumentation framework for the critical task of measurement collection in the future Internet," Computer Networks, vol. 63, pp. 68-83, Apr. 2014. doi:10.1016/j.bjp.2014.01.007 [Download]