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 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.
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
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
$ export MPLANE_RI=[PROTOCOL_RI_DIR]
$ cd blockmon-probe
$ ln -s [BLOCKMON_DIR]/blockmon blockmon
$ python3 blockmon.py --config blockmon.conf
References
May 8th, 2014 - frozen release for D2.2:
svn checkout https://svn.ict-mplane.eu/svn/public/software/blockmon
Dissemination