The NetMeter, as a network performance measurement tool, is based on active measures. That kind of measures are based on inserting synthetic traffic into the network in order to analyze its performance. This synthetic traffic is used to evaluate and to compare the expected results with the empiric ones.
NetMeter is a GPL (General Public License) application designed for UNIX systems and developed within the CCABA research group (Centre de Comunicacions Avançades de Banda Ample) of the UPC (Universitat Politècnica de Catalunya). The main aim of this tool is to provide automatization and ease or use for the traffic generation and monitoritzation processes. This goal is achieved with a design based on a control station (the one that executes NetMeter) that gathers all the desired traffic properties through a GUI (that can be executed in another station) and uses management interfaces in order to apply them on other stations
NetMeter uses a client-server architecture. The client part (NetMeterGUI) is implemented as a GUI (Graphical User Interface) that inter-actuates with the user. This client sends all the data gathered to a server (NetMeter) that will apply the changes and configure all the stations in order to perform the tests. This architecture allows the user to run the client and server application in different stations in order to gain flexibility and performance. All the communications and storage formats within plugins are based on the XML language.
NetMeter is designed as a collection of plugins and that provides flexibility (load or unload plugins) and efficient resource utilization. In some cases the GUI can perform analytical activities without the cooperation of the server part, such as graphical and statistical tasks.
The source code is divided in three parts:
Is the API (Application Programming Interface) and gives a range of tools to the programmer in order to build the plugins. This API is widely used among the NetMeter code because it extracts facilities such as file management and remote controlling via the Secure Shell Protocol (SSH).
It is the server implementation, it receives the NetMeterGUI petitions and it's divided into different plugins. This plugins interact with the helper applications such as mgen, netperf, etc in order to automatize the tests and provide the set of low level functionalities to perform the different tasks.
It's the graphical user interface of the NetMeter project. It is designed using the QT 4.4 libraries from QT Software. It is also divided in different plugins like the NetMeter core. In this case the goal of the plugins is to present a friendly user interface that interacts with the lower level functionalities of the core.
The most relevant plugins are classified into three different categories: Traffic Generation, Network Management and Result extraction.
Traffic generator: plugin based on the Mgen traffic generator. This tool is specially useful in real-time traffic generation (unicast and multicast UDP) and has also some support for RSVP [1]. The basic information that Mgen collects is the transmission and reception timestamps, the packet size and the sequence number. This data is very useful in order to get the QoS metrics like One-Way Delay (OWD) [2], Inter Packet Delay Variation (IPDV) [3], and Packet Loss Ratio (PLR) [4].
Throughput: plugin based on the NetPerf tool that allows you to measure the performance of a link measuring its Bulk Transport Capacity (BTC) [5] and bandwidth. This tool can perform unidirectional tests or point-to-point tests in different types of architectures. NetPerf tries to generate as much traffic as the link can manage for a single flow to extract its maximum capacity.
Network Simulator: beside active traffic generation facilities, to broaden the scope of the tool, NetMeter provides a framework to setup a series of different network conditions. This plugin uses two Linux-based traffic administration tools (iptables and traffic control tc). These well-known applications allow the user to change the behavior (e.g. queuing delays, packet loss ratio, jitter, etc.) over a previously specified criteria, based on station selection or other traffic properties such as source/destination ports, transport protocol UDP/TCP.
Statistic: this plugin is used to extract useful data from the tests performed with the test plugins (e.g. Traffic Generator). This results (IPDV, OWD, sent packets, received packets, duration, lost ratio...) can be exported or saved in different formats (XML, XHTML, TXT) and can be presented per flow or aggregated.
Graphic Analysis: this plugin is used in order to present the graphical analysis of the result files from the tests performed with the test plugins. Graphs can be exported to .png (Portable Network Graphics), .jpg (Joint Photographics Experts Group), .svg (Scalable Vector Graphics) and .pdf (Portable Document Format).