iPerf Throughput Testing
Testing a network’s throughput is a good move, if you are testing a new service you stood up or making sure you getting what you paid for. iPerf is good free open source tool when there isn’t really a need to use commercial more expensive tools. In this short tutorial I’ll go over how to configure iPerf which is a CLI tool so let’s get started.
iPerf needs client and server on each end of the connection in order to test the throughput. There is also a list of available iPerf servers that are over the internet if you wanted to test internet speed and that information is also where you would download the latest version of iPerf at: https://iperf.fr/ If you are in Windows you have to download the compressed folder from the website and extract it somewhere on your machine. Open command prompt at where the uncompressed files are located: Run from Command Prompt (You'll get a list of the available CLI switches)
1D:\ryan\iperf\iperf-3.0.11-win64>iperf3.exe
In Linux you can do the following to install:
NOTE: At the time of writing version 3.0.11 is the latest
1wget https://iperf.fr/download/iperf_3.0/libiperf0_3.0.11-1_amd64.deb
2wget https://iperf.fr/download/iperf_3.0/iperf3_3.0.11-1_amd64.deb
3sudo dpkg -i libiperf0_3.0.11-1_amd64.deb iperf3_3.0.11-1_amd64.deb
4rm libiperf0_3.0.11-1_amd64.deb iperf3_3.0.11-1_amd64.deb
Run from terminal (You'll get a list of the available CLI switches):
1iperf3
Everything else in the command switches for the most part is the same when it comes to Windows and Linux. There are some commands that run in Linux that don't on Windows but this doesn't apply here. :) So in this example on one machine will be the server.
1iperf3.exe -s
2-----------------------------------------------------------
3Server listening on 5201
4-----------------------------------------------------------
On the another will be the client who is connecting to the server. You will want the IP address of the server and by default you can just use:
1iperf3.exe -c 10.9.8.7
2Connecting to host 10.9.8.7, port 5201
3[ 4] local 10.1.2.3 port 57979 connected to 10.9.8.7 port 5201
4[ ID] Interval Transfer Bandwidth
5[ 4] 0.00-1.00 sec 512 KBytes 4.19 Mbits/sec
6[ 4] 1.00-2.00 sec 1.00 MBytes 8.39 Mbits/sec
7[ 4] 2.00-3.00 sec 1.25 MBytes 10.5 Mbits/sec
8[ 4] 3.00-4.00 sec 2.25 MBytes 18.9 Mbits/sec
9[ 4] 4.00-5.00 sec 640 KBytes 5.24 Mbits/sec
10[ 4] 5.00-6.00 sec 384 KBytes 3.15 Mbits/sec
11[ 4] 6.00-7.00 sec 2.00 MBytes 16.8 Mbits/sec
12[ 4] 7.00-8.00 sec 1.38 MBytes 11.5 Mbits/sec
13[ 4] 8.00-9.00 sec 1.38 MBytes 11.5 Mbits/sec
14[ 4] 9.00-10.00 sec 1.38 MBytes 11.5 Mbits/sec
15- - - - - - - - - - - - - - - - - - - - - - - - -
16[ ID] Interval Transfer Bandwidth
17[ 4] 0.00-10.00 sec 12.1 MBytes 10.2 Mbits/sec sender
18[ 4] 0.00-10.00 sec 11.9 MBytes 10.0 Mbits/sec receiver
19
20iperf Done.
So in this example in 10 seconds we transferred about 12 MBytes of data and bandwidth was between 3.15 and 18.9Mbps.
Pretty good data to have if you are troubleshooting or verifying anything. In the above example we used TCP but if we switch to UDP notice the difference?
1iperf3.exe -u -b 0 -c 10.9.8.7
2Connecting to host 10.9.8.7, port 5201
3[ 4] local 10.1.2.3 port 59361 connected to 10.9.8.7 port 5201
4[ ID] Interval Transfer Bandwidth Total Datagrams
5[ 4] 0.00-1.00 sec 11.6 MBytes 97.3 Mbits/sec 1490
6[ 4] 1.00-2.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
7[ 4] 2.00-3.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
8[ 4] 3.00-4.01 sec 11.4 MBytes 95.6 Mbits/sec 1460
9[ 4] 4.01-5.01 sec 11.4 MBytes 95.6 Mbits/sec 1460
10[ 4] 5.01-6.00 sec 11.3 MBytes 95.6 Mbits/sec 1450
11[ 4] 6.00-7.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
12[ 4] 7.00-8.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
13[ 4] 8.00-9.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
14[ 4] 9.00-10.00 sec 11.4 MBytes 95.6 Mbits/sec 1460
15- - - - - - - - - - - - - - - - - - - - - - - - -
16[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
17[ 4] 0.00-10.00 sec 114 MBytes 95.8 Mbits/sec 1.160 ms 3212/14619 (22%)
18[ 4] Sent 14619 datagrams
19
20iperf Done.
We transferred 114 MBytes in 10 seconds, but lost 22 percent of that data thanks to UDP which is good example of the difference between TCP and UDP. ;) That's all I got so I hope this helpful,its a pretty easy install if you are on Windows or Linux. More information about the types of command switches supported are at https://iperf.fr/iperf-doc.php