Share your love
Test Network Throughput with Iperf Tool on Linux
In this guide, you will learn to Test Network Throughput with Iperf Tool on Linux.
Iperf is a commonly used network testing tool that can create TCP and UDP data streams and measure the throughput of a network that is carrying them.
Iperf allows the user to set various parameters that can be used for testing a network, or alternatively for optimizing or tuning a network. It has a client and server functionality and can measure the throughput between the two ends, either unidirectionally or bi-directionally. It is open-source software and runs on various platforms including Linux, Unix, and Windows.
Iperf comes with Iperf2 and Iperf3.
Iperf3, first released in 2014, is mainly used to test networks, while Iperf2 is better suited to measuring Wi-Fi speeds. When end users refer to Iperf, they are typically talking about Iperf3, but both versions can run similar tests and provide similar results.
Steps To Test Network Throughput with Iperf Tool on Linux
To complete this guide, you must log in to your Linux server and follow the steps below.
Install Iperf Tool on Linux
The Iperf packages are available in the default Linux repositories. To install it, you can use the following commands.
Install iperf3 on Debian/Ubuntu:
apt-get install iperf3
Install iperf3 on RHEL/CentOS:
# yum install epel-release
# yum install iperf3
And Install iperf3 on RHEL 9/Fedora 22 and later:
dnf install iperf3
At this point, to see your installation is completed, run the command below:
iperf3
Output
iperf3: parameter error - must either be a client (-c) or server (-s)
Usage: iperf3 [-s|-c host] [options]
iperf3 [-h|--help] [-v|--version]
Server or Client:
-p, --port # server port to listen on/connect to
-f, --format [kmgtKMGT] format to report: Kbits, Mbits, Gbits, Tbits
-i, --interval # seconds between periodic throughput reports
-F, --file name xmit/recv the specified file
-A, --affinity n/n,m set CPU affinity
-B, --bind <host> bind to the interface associated with the address <host>
...
Test Network Throughput between Server and Client with Iperf
At this point, you can check the bandwidth between the two systems. For this, you need two servers one of them is set as the server and the other is set as the client.
Run the TCP Traffic Using Iperf
Set Iperf Server: To set your system as an Iperf server, you need to run the following command:
iperf3 -s
Output
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Connect Client to the Iperf server: Now log in to your client machine and run the command below to connect to your Iperf server on Linux:
iperf3 -c server-ip-address -i1 -t20
With this option, after the 20sec [-t20] run, the client will be stopped.
After running this command, you will start to get network throughput statistics both on the Iperf client and server on Linux.
Server Output
Accepted connection from client-ip, port 51219
[ 5] local server-ip port 5201 connected to client-ip port 51220
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 1.35 MBytes 11.3 Mbits/sec
[ 5] 1.00-2.00 sec 1.53 MBytes 12.8 Mbits/sec
[ 5] 2.00-3.00 sec 1.62 MBytes 13.6 Mbits/sec
[ 5] 3.00-4.00 sec 1.67 MBytes 14.0 Mbits/sec
[ 5] 4.00-5.00 sec 1.67 MBytes 14.0 Mbits/sec
[ 5] 5.00-6.00 sec 1.46 MBytes 12.3 Mbits/sec
[ 5] 6.00-7.00 sec 1.45 MBytes 12.2 Mbits/sec
[ 5] 7.00-8.00 sec 1.59 MBytes 13.3 Mbits/sec
[ 5] 8.00-9.00 sec 1.78 MBytes 14.9 Mbits/sec
[ 5] 9.00-10.00 sec 1.32 MBytes 11.1 Mbits/sec
[ 5] 10.00-11.00 sec 1.19 MBytes 9.95 Mbits/sec
[ 5] 11.00-12.00 sec 1.12 MBytes 9.37 Mbits/sec
[ 5] 12.00-13.00 sec 1.41 MBytes 11.9 Mbits/sec
[ 5] 13.00-14.00 sec 1.60 MBytes 13.4 Mbits/sec
[ 5] 14.00-15.00 sec 1.50 MBytes 12.6 Mbits/sec
[ 5] 15.00-16.00 sec 1.71 MBytes 14.4 Mbits/sec
[ 5] 16.00-17.00 sec 1.48 MBytes 12.4 Mbits/sec
[ 5] 17.00-18.00 sec 1.47 MBytes 12.3 Mbits/sec
[ 5] 18.00-19.00 sec 1.37 MBytes 11.5 Mbits/sec
[ 5] 19.00-20.00 sec 1.50 MBytes 12.5 Mbits/sec
[ 5] 20.00-20.11 sec 236 KBytes 17.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-20.11 sec 30.0 MBytes 12.5 Mbits/sec sender
[ 5] 0.00-20.11 sec 30.0 MBytes 12.5 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Client Output
Connecting to host server-ip, port 5201
[ 4] local client-ip port 51220 connected to server-ip port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.01 sec 1.56 MBytes 13.0 Mbits/sec
[ 4] 1.01-2.02 sec 1.56 MBytes 13.0 Mbits/sec
[ 4] 2.02-3.00 sec 1.56 MBytes 13.4 Mbits/sec
[ 4] 3.00-4.01 sec 1.69 MBytes 14.0 Mbits/sec
[ 4] 4.01-5.01 sec 1.69 MBytes 14.2 Mbits/sec
[ 4] 5.01-6.00 sec 1.44 MBytes 12.2 Mbits/sec
[ 4] 6.00-7.00 sec 1.37 MBytes 11.5 Mbits/sec
[ 4] 7.00-8.01 sec 1.75 MBytes 14.5 Mbits/sec
[ 4] 8.01-9.00 sec 1.62 MBytes 13.7 Mbits/sec
[ 4] 9.00-10.00 sec 1.37 MBytes 11.6 Mbits/sec
[ 4] 10.00-11.01 sec 1.12 MBytes 9.34 Mbits/sec
[ 4] 11.01-12.00 sec 1.19 MBytes 10.1 Mbits/sec
[ 4] 12.00-13.02 sec 1.44 MBytes 11.8 Mbits/sec
[ 4] 13.02-14.01 sec 1.56 MBytes 13.2 Mbits/sec
[ 4] 14.01-15.00 sec 1.50 MBytes 12.7 Mbits/sec
[ 4] 15.00-16.01 sec 1.81 MBytes 15.1 Mbits/sec
[ 4] 16.01-17.01 sec 1.37 MBytes 11.5 Mbits/sec
[ 4] 17.01-18.00 sec 1.44 MBytes 12.2 Mbits/sec
[ 4] 18.00-19.00 sec 1.31 MBytes 11.0 Mbits/sec
[ 4] 19.00-20.00 sec 1.62 MBytes 13.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-20.00 sec 30.0 MBytes 12.6 Mbits/sec sender
[ 4] 0.00-20.00 sec 30.0 MBytes 12.6 Mbits/sec receiver
iperf Done.
Run the UDP Traffic Using Iperf
For setting the Iperf server, the same as the TCP, run the command below:
iperf3 -s
And for the UDP client, you should run the command below:
iperf3 -c server-ip -i1 -t5 -u -b100M
Server Output
Accepted connection from client-ip, port 51321
[ 5] local server-ip port 5201 connected to client-ip port 54181
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 1.30 MBytes 10.9 Mbits/sec 313523.501 ms 0/167 (0%)
[ 5] 1.00-2.00 sec 1.34 MBytes 11.3 Mbits/sec 16.624 ms 5/177 (2.8%)
[ 5] 2.00-3.00 sec 1.99 MBytes 16.7 Mbits/sec 10.843 ms 0/255 (0%)
[ 5] 3.00-4.00 sec 672 KBytes 5.50 Mbits/sec 3.955 ms 0/84 (0%)
[ 5] 4.00-5.00 sec 1.98 MBytes 16.6 Mbits/sec 14.042 ms 8/261 (3.1%)
[ 5] 5.00-5.68 sec 960 KBytes 11.6 Mbits/sec 3.389 ms 0/120 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-5.68 sec 8.31 MBytes 12.3 Mbits/sec 3.389 ms 13/1064 (1.2%)
Client Output
Connecting to host server-ip, port 5201
[ 4] local client-ip port 54181 connected to server-ip port 5201
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.23 sec 1.38 MBytes 9.40 Mbits/sec 176
[ 4] 1.23-2.00 sec 1.73 MBytes 18.7 Mbits/sec 221
[ 4] 2.00-3.12 sec 1.65 MBytes 12.3 Mbits/sec 211
[ 4] 3.12-4.01 sec 1.76 MBytes 16.6 Mbits/sec 225
[ 4] 4.01-5.03 sec 1.80 MBytes 14.8 Mbits/sec 231
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-5.03 sec 8.31 MBytes 13.9 Mbits/sec 3.389 ms 13/1064 (1.2%)
[ 4] Sent 1064 datagrams
To get more help and other option, you can use the command below:
iperf3 --help
Also, you can visit the Iperf Docs page.
Conclusion
At this point, you have learned to Test Network Throughput with Iperf Tool on Linux.
Hope you enjoy it. Also, you may be like these articles on the orcacore website:
How To Enable IP Forwarding in Linux