Testing network bandwidth in multiple flavors in Linux is simple with a tool called iperf. There’s two main versions – iperf2 and iperf3. Project maintainers apparently completely rewrote iperf3 from scratch to make the the tool simpler and to support some new features.
Update 12/12/2021: One of the authors of iperf2 reached out to me. Iperf2 is currently very much actively developed. You can find the most recent code on its sourceforge.net page. Iperf3 was indeed rewritten from scratch as the wikipedia page says, but mostly to meet the U.S. Department of Energy’s use cases. Iperf3’s github page clearly states the the DoE owns the project.
For testing bandwidth properly, you need to be running in server mode on one endpoint and client mode on the other. For this experiement, we will run the server on Rocky Linux 8.5 and the client on Ubuntu 20.04.
Topology
This is about as simple of a topology as I can think of. Two nodes on either end of a single link, Ubuntu at 10.0.0.1/30 running iperf3 client and Rocky at 10.0.0.2/30 running iperf3 server.
Iperf3 installation
On Ubuntu, iperf3 can be installed from distribution sources with apt-get:
apt-get install iperf3
Same on Rocky Linux but with yum:
yum install iperf3
Run iperf3 bandwidth test
First we need to start the server process on Rocky Linux with one command:
iperf3 -s
Then you should see the server listening for incoming tests:
Then from the Ubuntu client, one command will run the test:
iperf3 -c 10.0.0.2
The output will give us our bandwith test results, which can be see on either the client or server:
Connecting to host 10.0.0.2, port 5201 [ 5] local 10.0.0.1 port 59628 connected to 10.0.0.2 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 176 MBytes 1.48 Gbits/sec 685 230 KBytes [ 5] 1.00-2.00 sec 173 MBytes 1.45 Gbits/sec 738 113 KBytes [ 5] 2.00-3.00 sec 170 MBytes 1.42 Gbits/sec 1004 191 KBytes [ 5] 3.00-4.00 sec 175 MBytes 1.47 Gbits/sec 714 123 KBytes [ 5] 4.00-5.00 sec 182 MBytes 1.52 Gbits/sec 458 163 KBytes [ 5] 5.00-6.00 sec 204 MBytes 1.71 Gbits/sec 443 314 KBytes [ 5] 6.00-7.00 sec 180 MBytes 1.51 Gbits/sec 910 130 KBytes [ 5] 7.00-8.00 sec 191 MBytes 1.60 Gbits/sec 849 123 KBytes [ 5] 8.00-9.00 sec 172 MBytes 1.44 Gbits/sec 564 170 KBytes [ 5] 9.00-10.00 sec 184 MBytes 1.54 Gbits/sec 412 225 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.76 GBytes 1.52 Gbits/sec 6777 sender [ 5] 0.00-10.04 sec 1.76 GBytes 1.51 Gbits/sec receiver iperf Done.
A wireshark capture in GNS3 between the two hosts (or tcpdump on the links if you’re not in GNS3) will show the packets flying while the test is running:
Hope you liked it!