Mping collects ping statistics for multiple hosts at the same time. Performing an “mping” on all the hosts being listed by a traceroute command would give more statistical information than the traceroute itself. It can do percentiles and SDV statistics, sorted reports, histograms and curves. It does accumulation over days and months.
The Mping service consists of two parts: The Mping client, written in C, and the web interface extension, written in PERL. Unless otherwise specified, when referring to Mping we are referring to the Mping C-client.
Mping is a tool for measuring round-trip delay and packet loss, using the ICMP echo feature, in a TCP/IP based network. Multiple hosts - up to 500, both IPv4 and IPv6 at the same time - can be pinged in a round robin order. At runtime, the user can set the wait time between each packet sent, number of packets sent and the size of the packets. For each host specified, information about packet loss and minimum/average/maximum response time is displayed. Mping can also display the collected data as median, cube-sum, standard deviation or 10/50/90-percentile at the user’s request. Several techniques are implemented into the Mping service, to make sure that the collected data is “statistically” correct:
• Mping by default does not send more than 10 ICMP packets per second, thus measured data is independent from the time of measuring.
• Mping does not send all ICMP packets to one ‘Gateway’ at the same time, rather Mping tries to spread them out in a Round robin fashion, thus avoiding temporary network characteristics.
• Mping starts the pingsweeps at asynchronous intervals. A Poisson distribution is used, thus avoiding periodic network variance.
Techniques 1 and 2 are Mping C-client features, while 3 is implemented in the PERL web interface extension.
A web interface is used for browsing the collected data and for generating reports, graphs and traceroutes for the different hosts which are measured. The PERL code is modularised and easily extended to suite other needs. As an example, the language support is modularised and thus adding support for new languages is very easy.
Example implementation in 6NET:
UNINETT: http://mping.uninett.no
