You are here

Blockmon Node

Description

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 https://github.com/blockmon/blockmon.

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 https://github.com/blockmon/blockmon.git 

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">
<install>
<threadpool id="sniffer_thread" num_threads="2" >
<core number="0"/>
</threadpool>

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

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

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

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:

git clone https://github.com/fp7mplane/components.git COMPONENTS_DIR

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

git clone https://github.com/fp7mplane/protocol-ri PROTOCOL_RI_DIR

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]
    $ export MPLANE_RI=[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 blockmon.py --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

References

Links to sources, binaries

 

Blockmon node: standalone version

 

 

Blockmon node: mPlane interface 

 

 

Links to additional documentation

 

Dissemination