You are here

Blockmon Node


Blockmon is a software allowing construction of flexible and high performance (rates in the 10Gb range) monitoring and data analysis nodes, where a node can be for example a hardware probe or a PC. Blockmon has started under the EU FP7 DEMONS project, and it is still under constant development under the EU FP7 mPlane mainly by NEC. The official Blockmon page is available at

Blockmon probes deployed on the network

Blockmon is based around the notion of blocks, which are small units of processing (e.g., packet counting). Blocks are connected and communicate between each other via gates. Among other functionalities, Blockmon provides an implementation of Tstat passive probe as result of collaboration activities within the mPlane project.

A set of inter-connected blocks represents a composition, which defines the application to run on top of the platform. Users can express their compositions in terms of XML files.

More information on Blockmon and its performance are provided in

Simoncelli, D., M. Dusi, F. Gringoli, and S. Niccolini, Stream-monitoring with blockmon: convergence of network measurements and data analytics platforms, SIGCOMM Comput. Commun. Rev., 2013

and on the Blockmon official website.


Quick start

We recommend the user to refer to the lastest version available on github:

git clone 

To guide the user through the installation process, an INSTALL file is provided.

The README file contains information on how to create compositions with existing blocks and how to start developing new blocks for any need.

Users can run pcapsrcctr.xml as the sample application that comes with the code. The application simply counts packets coming to an network interface and consisits of the declaration of a set of blocks and their connections, all in XML format, as shown below:

<composition id="mysnifferctr" app_id="boh">
<threadpool id="sniffer_thread" num_threads="2" >
<core number="0"/>

<block id="sniffer" type="PcapSource" invocation="async" threadpool="sniffer_thread">
<source type="live" name="eth0"/>
<!--bpf_filter expression="!tcp"/-->

<!-- NOTE: passive blocks shouldn't have a threadpool assigned to them -->
<block id="counter" type="PktCounter" invocation="direct">
 <params> </params>

<connection src_block="sniffer" src_gate="sniffer_out" dst_block="counter" dst_gate="in_pkt"/> 

Once the correct interface has been set as parameter for the capture block, you can run it by typing (note, sudo privilege might be required):

$ ./blockmon pcapsrcctr.xml


Integration into an MPlane environment


Blockmon is able to communicate with other mPlane components, thanks to the interface that makes it mPlane compliant. Please refer to the following GitHub repository for the latest version of the interface:


Once Blockmon node is properly installed, get the latest version of the mPlane protocol RI at the following GitHub repository: 


and add the Blockmon components to protocol RI.

The following instructions assume you are in the [COMPONENTS_DIR] folder

  1. Set the parameters in the file blockmon-probe/blockmon.conf (e.g., path to certificates, supervisor address, client port and address, and roles)
  2. Set the environment variable MPLANE_RI to point to [PROTOCOL_RI_DIR]
  3. Add a softlink to a working Blockmon standalone executable (e.g., to  the folder [BLOCKMON_DIR])
    $ cd blockmon-probe 
    $ ln -s [BLOCKMON_DIR]/blockmon blockmon
  4. Run Blockmon probe (you might need administrative privileges if you capture from a network interface)
    $ python3 --config blockmon.conf


New features supported by the mPlane project


Thanks to the support of the mPlane project we extended Blockmon functionalities with the following features:

  • integration with Tstat tool. Regarding its ability to collect information on the traffic that crosses a link, we created a block which integrates the Tstat tool;
  • exchanging data across nodes. We then introduced the ability of inter-data communication across multiple Blockmon nodes, so that nodes can exchange or send information to aggregating nodes, thus allowing distributed computation;
  • bug fixes. The platform is constantly maintained and bug fixes are pushed to the public git repository. 


Official version


Links to sources, binaries


Blockmon node: standalone version



Blockmon node: mPlane interface 



Links to additional documentation