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.
The current version is OML 2.11.0, released on 2014-05-06.
OML was originally conceived to provide measurement facilities for OMF-enabled testbeds, such as the Wireless 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.
We also have a bundle of OML-instrumented 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.
Third Party Libraries¶
- OML4J is a Java Injection Point (Maintained by NITLab it also has example of use within an Android application.
- General Documentation
- Manpages (some of them)
- liboml2(1) -- An overview of how OML applications work
- liboml2.conf(5) -- This page describes the OML client configuration file format, and describes how you can set up complex filtering and measurement routing when you use an OML application.
- oml2-server(1) -- The OML server daemon
- liboml2(3) -- An overview of the OML client library: read this if you want to write OML applications
- oml2-scaffold(1) -- A program to help generate the framework of an OML 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 oml.bib):
- 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 [Online]. Available: http://www.nicta.com.au/pub?id=6718
- Jolyon White, Guillaum Jourjon, Thierry Rakotoarivelo, and Max Ott. "Measurement architectures for network experiments with disconnected mobile nodes," in TridentCom 2010, May 2010. [Online]. Available: http://www.nicta.com.au/pub?id=3298
- 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. [Online]. Available: http://www.orbit-lab.org/raw-attachment/wiki/Orbit/Documentation/Publications/final-oml-paper.pdf
The archives are available here, containing many frequently asked questions.
You can click here to subscribe to our mailing list and post your questions.