There are a bunch of tools used to measure network performance. One of the most commonly used is iperf.

Iperf was developed by the Distributed Applications Support Team (DAST) at the National Laboratory for Applied Network Research (NLANR) and it is written in C language.

At the time I'm writing there are two versions of iperf.

The original one at www.iperf.fr up to version 2.0.5-2 and iperf3 mainly developed by ESnet / Lawrence Berkleley National Laboratory. iperf3 is "a new implementation from scratch, with the goal of a smaller, simpler code base, and a library version of the functionality that can be used in other programs". iperf3 in not backward compatible with iperf and can be found at https://github.com/esnet/iperf.

logo_iperf_command

iperf can test the quality of a link measuring the following characteristics:

  • Latency (response time or RTT): can be measured with the Ping command.
  • Jitter (latency variation): can be measured with an Iperf UDP test.
  • Datagram loss: can be measured with an Iperf UDP test.

 

here you are the measurement done on my mac mini loopback interface, using iperf3

Terminal 1

$ ./iperf3 -s

———————————————————–

Server listening on 5201

———————————————————–

Accepted connection from ::1, port 52356

[  5] local ::1 port 5201 connected to ::1 port 52357

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-1.00   sec  1.68 GBytes  14.4 Gbits/sec                  

[  5]   1.00-2.00   sec  1.68 GBytes  14.4 Gbits/sec                  

[  5]   2.00-3.00   sec  1.73 GBytes  14.9 Gbits/sec                  

[  5]   3.00-4.00   sec  1.71 GBytes  14.7 Gbits/sec                  

[  5]   4.00-5.00   sec  1.69 GBytes  14.5 Gbits/sec                  

[  5]   5.00-6.00   sec  1.69 GBytes  14.6 Gbits/sec                  

[  5]   6.00-7.00   sec  1.69 GBytes  14.5 Gbits/sec                  

[  5]   7.00-8.00   sec  1.69 GBytes  14.6 Gbits/sec                  

[  5]   8.00-9.00   sec  1.72 GBytes  14.8 Gbits/sec                  

[  5]   9.00-10.00  sec  1.70 GBytes  14.6 Gbits/sec                  

[  5]  10.00-10.00  sec  1.00 MBytes  14.1 Gbits/sec                  

– – – – – – – – – – – – – – – – – – – – – – – – –

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-10.00  sec  17.0 GBytes  14.6 Gbits/sec                  sender

[  5]   0.00-10.00  sec  17.0 GBytes  14.6 Gbits/sec                  receiver

———————————————————–

Server listening on 5201

———————————————————–

Terminal 2

$ ./src/iperf3 -c localhost

Connecting to host localhost, port 5201

[  6] local ::1 port 52357 connected to ::1 port 5201

[ ID] Interval           Transfer     Bandwidth

[  6]   0.00-1.00   sec  1.68 GBytes  14.4 Gbits/sec                  

[  6]   1.00-2.00   sec  1.68 GBytes  14.4 Gbits/sec                  

[  6]   2.00-3.00   sec  1.73 GBytes  14.9 Gbits/sec                  

[  6]   3.00-4.00   sec  1.71 GBytes  14.7 Gbits/sec                  

[  6]   4.00-5.00   sec  1.69 GBytes  14.5 Gbits/sec                  

[  6]   5.00-6.10   sec  1.86 GBytes  14.5 Gbits/sec                  

[  6]   6.10-7.00   sec  1.53 GBytes  14.6 Gbits/sec                  

[  6]   7.00-8.10   sec  1.86 GBytes  14.5 Gbits/sec                  

[  6]   8.10-9.10   sec  1.72 GBytes  14.8 Gbits/sec                  

[  6]   9.10-10.00  sec  1.54 GBytes  14.7 Gbits/sec                  

– – – – – – – – – – – – – – – – – – – – – – – – –

[ ID] Interval           Transfer     Bandwidth

[  6]   0.00-10.00  sec  17.0 GBytes  14.6 Gbits/sec                  sender

[  6]   0.00-10.00  sec  17.0 GBytes  14.6 Gbits/sec                  receiver

 

iperf Done.

 

You can play with all available options to create your own personalized test.

Gg1