iperf is a tool to measure the bandwidth and the quality of a network link. jperf can be associated with Iperf to provide a graphical frontend written in Java.
The network link is delimited by two hosts running Iperf.
The quality of a link can be tested as follows:
- 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.
The bandwidth is measured through TCP tests.
To be clear, the difference between TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) is that TCP use processes to check that the packets are correctly sent to the receiver whereas with UDP the packets are sent without any checks, but with the advantage of being quicker than TCP.
Iperf uses the different capacities of TCP and UDP to provide statistics about network links.
See: iperf at SourceForge
xjperf is a graphical frontend for iperf written in Java.
See: jperf at Google Code
Iperf can be installed very easily on any UNIX/Linux or Microsoft Windows system.
One host must be set as client, the other one as server.
In the examples below, it is assumed that you have iperf running on a server named server1, listening on port 32111.
Using iperf on windows
Download this zip file: jperf-2.0.2.zip
In it, in the 'bin' directory, is a tool called 'iperf.exe'. Extract it somewhere convenient.
Open up a command prompt window and navigate to the folder where iperf.exe lives.
To use the tool, run:
./iperf.exe -c server1 -p 32111 -t 30 -i 5
This will run iperf for 30 seconds, and report at 5 second intervals. You should see speeds between 300 and 970MBit per second. Significantly lower speeds merit an examination of ports, cables, and system.
Using iperf on Linux
On linux, it's very similar. For ubuntu, the iperf package can be installed by running:
sudo apt-get install iperf
the command to run, is almost identical
iperf -c server1 -p 32111 -t 30 -i 5
Since this tools is extremely bandwidth heavy, it's a good idea to run it only rarely and only as a diagnostic and only when needed, and only one instance at a time - it basically tries to saturate network bandwidth which will inconvenience other users.