Using ntopng and nProbe on the BeagleBone (small is beautiful)

Posted · Add Comment

For years we enjoyed pushing the limits of our software products (our nBox recorder is able to handle multi-10Gbit interfaces for instance), but our roots are not there. All started in 2003 with this small PowerPC-based nBox

nbox-cyclades

where we have first integrated nProbe into it. Now after 10 years, it is time to rethink all this and try again. On the market there are several small and cheap platforms such as the Raspberry Pi, the BeagleBone Black and the EdgeMax that are ideal platforms for our apps. We have then decided to start our endeavour with the BeagleBone. As we plan to release a new ntopng version in the near future, we decided to refresh out software and make sure it works out-of-the-box on it.

ntop-beagle

The BeagleBone Black is a 45$ ARM-powered board fast enough to run our apps (1 GHz CPU)

beaglebone:~$ cat /proc/cpuinfo 
processor	: 0
model name	: ARMv7 Processor rev 2 (v7l)
BogoMIPS	: 990.68
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc08
CPU revision	: 2

Hardware	: Generic AM33XX (Flattened Device Tree)
Revision	: 0000
Serial		: 0000000000000000

and equipped with 512 MB of RAM and 2 GB of storage. It comes with Ångström Linux and all you have to do is to compile the apps. Both nProbe and ntopng compile out of the box from source code. For sake of space we cover ntopng compilation that is more complex than nProbe to compile, due to its dependencies. The first step os to install the prerequisites as follows:

opkg install subversion libpcap rrdtool-dev
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make

Done that it is time to compile ntopng as follows

svn co https://svn.ntop.org/svn/ntop/trunk/ntopng/
cd ntopng
./configure
make

That’s all. Now you can start ntopng as you do on your Linux or Windows box.

nProbe
beaglebone:~/nProbe$ ./nprobe -v
Welcome to nprobe v.6.15.131010 ($Revision: 3730 $) for armv7l-unknown-linux-gnueabi
Copyright 2002-13 by Luca Deri <deri@ntop.org>
ntopng
beaglebone:~/ntopng$ ./ntopng -h
ntopng armv7l v.1.0.2 (r6859) - (C) 1998-13 ntop.org

Usage:
  ntopng 
  or
  ntopng [-m ] [-d ] [-e] [-g ] [-n mode] [-i <iface|pcap file>]
              [-w ] [-p ] [-P] [-d ]
              [-c ] [-r ]
              [-l] [-U ] [-s] [-v] [-C] [-F]
              [-B ] [-A ]
...

Resource usage is pretty low and there is plenty of room for running ntopng.

top - 17:37:59 up  2:00,  4 users,  load average: 0.05, 0.33, 0.58
Tasks: 114 total,   1 running, 111 sleeping,   2 stopped,   0 zombie
Cpu(s):  6.7%us,  3.8%sy,  0.0%ni, 88.8%id,  0.0%wa,  0.0%hi,  0.6%si,  0.0%st
Mem:    510820k total,   505692k used,     5128k free,    32464k buffers
Swap:        0k total,        0k used,        0k free,   337412k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                        
13519 nobody    20   0  114m  11m 5128 S  5.7  2.4   0:27.73 ntopng    
13550 deri      20   0  2628 1160  896 R  2.9  0.2   0:00.21 top      
13503 root      20   0 27760 1852 1116 S  0.6  0.4   0:04.10 redis-server

As future work items, after ntopng 1.1 has been released, we plan to optimise our apps for these low-cost platforms so that everyone can monitor its Internet connection at low cost without purchasing complex (to configure and maintain) and expensive devices.

We cannot tell you more, but more news will follow. Stay tuned!

PS. When used tethered the BeagleBone has 2 ethernet interfaces (you need one for management and one for receiving packets to analyse). You can add an extra ethernet interface using a USB Ethernet adapter if you need an extra monitoring port.