Using iPerf to Baseline Network Performance

I recently worked with Dennis Geerlings, a Global Customer Services Engineer at ControlUp, about an issue that one of his customers was having. Some of the customer’s end users were noticing a considerable amount of lag when they were working on their VDI clients. After some investigation we found that the users were using hardware that restricted their connections to 1-2 Mbps. One of the steps you need to take when troubleshooting network issues is to discover how much bandwidth a network can actually support. Fortunately, there are many proprietary and open source tools that can help you discover this. In this article I will show you how to use one of these tools, iPerf3. IPerf3 is an open source, multi-platform, freely available tool that does an excellent job on testing the bandwidth limitations between two systems.

iPerf3

iPerf3 creates a load between two systems and then reports the bandwidth, delay jitter, and datagram loss that can cause a network to perform suboptimally.

One of the reasons I like to work with iPerf3 is that it works with most modern operating systems. In this article I will be using it on two Windows 10 systems.

You can download precompiled binaries for iPerf3 for Windows as well as other OS from https://iperf.fr/iperf-download.php.

IPerf - The ultimate speed test tool TCP, UDP and SCTP

The iPerf3 package that I downloaded (iperf-3.1.3-win64.zip) contained two files, iperf3.exe and cygwin1.dll. iPerf3 doesn’t need to be installed; you just run iperf3.exe with the switches that you desire. As iPerf3 has a server/client architecture you need to have iPerf3 on the two systems between which you want to test the network.

iPerf3 server/client architecture

To test the network bandwidth between my two systems, on one of the systems I entered iperf3 –s and on the other system I entered iperf3 –c 10.0.0.221 –t 10. This started the server process (-s) on the first system. On the client system (-c), iPerf3 ran a load test for 10 seconds (-t 10). The results test showed that the max bandwidth between the two systems was 1.49 Gbps. The test used the default TCP port (5001) but you can change the port by using the –p switch.

iPerf3 load test

I verified the bandwidth using the ControlUp Management Console (CMC).

iPerf3 verified bandwidth using ControlUp Management Console (CMC)

Many display protocols, including Blast and PCoIP, use UDP (User Datagram Protocol) rather than TCP (Transmission Control Protocol). Some networks treat UDP differently than TCP. To test UDP network connectivity I entered iperf3.exe -c 10.0.0.221 -u -t 120 -I 30 -b 10G -f g, which instructs iPerf3 to use UDP (-u) rather than the default TCP, run the test for 120 seconds (-t), report the statistics every 30 seconds (-i ), use a max bandwidth of 10 Gb (-b 10g) rather than limiting to its default of 1 Mbps, report the interim results every 30 seconds rather than the default of every second, and display the results in Gbps (-f g).

The results of this iPerf3 test showed that the max bandwidth between the two systems using UDP was 0.37 Gbps. This is shown by the results of iPerf3 and confirmed in the ControlUp Management Console.

iPerf3 test showed max bandwidth between two systems using UDP

Results of iPerf3 confirmed in ControlUp Management Console

Going Further

In this article on iPerf3 we only scratched the surface of its capabilities. To fully understand iPerf capabilities, spend some time with its documentation. For example, window size can have a huge effect on network performance. You can accommodate window size when testing using the -w switch to set different window sizes. In the five examples below I set the window size to 8K, 128K, 256K, 512K and 1024K. You can see the results below – first, the output from iPerf3 ESXi and then a CMC screen capture for the 8K test and the 1024K test.

8K Test Results

IPerf3 8K window size Test Results

IPerf3 8K window size Test Results verified by Controlup

1024K Test Results

IPerf3 1024K window size Test Results

IPerf3 1024K window size Test Results verified by Controlup

In the table below summarizing all test results you can see that there is a huge difference in the network performance depending on the widow size, with the 128K window size being the most performant.

Table of All Tests

Window size Measured Bandwidth
8K 252 Mbps
16K 413 Mbps
64K 1.25 Gbps
128K 2.08 Gbps
256K 1.95 Gbps
512K 1.33 Gbps
1024K 1.20 Gbps
Conclusion

iPerf3 is a good program to keep in your administrator’s toolbox to help you diagnose networking issues and baseline what your network is capable of. It is free to use, can be used on all modern operating systems, and does not require installation or administrator rights.

::

About the author

Tom Fenton

Tom Fenton is a Technical Marketing manager here at ControlUp (in addition to an all-around great guy). He’s THE subject matter expert for Edge DX, our physical endpoint monitoring solution, as well as an expert in all things VMware (FACT: he used to work at VMware, teaching their employees about their technology). He creates valuable, educational content for the ControlUp blog, leads deep-dive webinars, and educates our sales teams and other IT professionals with tips and tricks about how to use ControlUp solutions. In his spare time, he writes for StorageReview.com and Virtualization Review magazine, and enjoys outdoor sports in the Pacific Northwest. Connect with him on Twitter @vDoppler.