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 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.
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.
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.
I verified the bandwidth using the 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.
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.
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.
|Window size||Measured Bandwidth|
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.