iPerf on ESXi

After having read my articles on using iPerf (located here and here) to measure the bandwidth of a network connection between two systems, an acquaintance asked me if it’s possible to install a program like iPerf on a VMware ESXi host. This is a good question as there are many situations in which knowing how much bandwidth a given host can handle can be very beneficial; for instance, if you experience a loss in bandwidth capacity between an virtual desktop and a VDI client, or otherwise need to identify where a networking bottleneck may be occurring.

To check this, you can run iPerf between a VDI client and an ESXi server, and between the VDI Client and the ESXi server on which the virtual desktop resides to see where the bandwidth limitations are.

 iPerf installed on your ESXi host

Running iPerf on VMware ESXi

This assumes that you have a tool that can measure the network bandwidth between the systems; fortunately, iPerf is such a tool. For those unfamiliar with iPerf, it is a freely available, open source, multi-platform tool that creates a load between two systems and then reports the bandwidth, delay jitter, and datagram loss that can cause a network to perform suboptimally. iPerf not only runs on many VDI clients but it also runs on some versions of ESXi.

VMware strongly discourages installing any additional software on an ESXi host because doing so could have unintended consequences and interfere with the operation of both the hypervisor and the hosts on which the hypervisor resides. After having included iPerf with ESXi 6.5, VMware removed it in 6.7—but they’ve now added it back in 6.7U1.

To check to see if you have iPerf installed on your ESXi host, SSH to your ESXi host and go to /usr/lib/vmware/vsan/bin and see if you have a file named iperf or iperf3. iPerf3 is the latest iteration of iPerf (Note that I will refer to iPerf3 as “iPerf” in this blog).

If iPerf isn’t installed on your system you can install it as a VIB. Although not supported – and you should not install unauthorized software on a production system – you can install iPerf by downloading the offline bundle from http://vibsdepot.v-front.de/depot/bundles/iperf-2.0.5-1-offline_bundle.zip and copying it to your ESXi 6.7 server. Once you have downloaded the bundle you can install it by entering:

esxcli software vib install -d /iperf-2.0.5-1-offline_bundle.zip –no-sig-check

iPerf will then be installed in the /opt/iperf/bin directory. However, you will need to create a copy of it named iperf.copy.

Because iPerf has a server/client architecture, in order to test a network connection between two systems, you will need to have iPerf on both systems.

iperf esxi

In my case, I used the ESXi host as the server (-s) and binded (-B) it to the interface on my host with an IP address of 10.0.0.21. To do this, I entered:

iperf -s -B 10.0.0.21

If you need to get the IP address of your ESXi server enter:

esxcli network ip interface ipv4 get

If you have issues running iPerf, you may need to disable the firewall on your ESXi server by entering:

esxcli network firewall set –enabled false

I then installed iPerf on a VDI client that was running Windows 10 IoT (see my article here), and set up as the client by entering:

iperf –c 10.0.0.21 –t 10 -i 5 -f g

This started the client system (-c) and connected to my iPerf server (10.0.0.21); iPerf ran a test for 10 seconds (-t 10), showed the results in Gb (-f g), and reported statistics every 5 seconds (-i 5). The results showed that the maximum bandwidth between the two systems was 0.95 Gbps. The speed of the network was limited by the 1 Gb NIC on the VDI Client that I was using since the ESXi host had a 10Gb NIC in it.

esxi iperf3

I saw a slight drop in the bandwidth when I ran iPerf from the VDI client to the ESXi server and to virtual desktop, but the drop wasn’t dramatic and acceptable as network overhead.

System Testing

To see how well my system performed I ran iPerf from my VDI client to a virtual desktop VM hosted on an ESXi host, then to the VDI client and the virtual machine, which was also running iPerf. Below is a table showing the results and ControlUp Console screenshots I took during the tests. Because I took the screenshot as the test was wrapping up, the ControlUp screen shot shows slightly less than 0.90 Gb.

Source Target Bandwidth
VDI Client ESXi Host A 0.95 Gb
VDI Client Virtual Desktops 0.90 Gb

I saw a slight drop in the bandwidth when I ran iPerf from the VDI client to the ESXi server and to virtual desktop, but the drop wasn’t dramatic and acceptable as network overhead.

iPerf from a VDI client to a virtual desktop VM hosted on an ESXi host

Conclusion

In this blog post, I showed you how to run iPerf on an ESXi server and find where bandwidth bottlenecks may be. There are many different ways in which you can use iPerf to test your network, including identifying and isolating issues, stress testing a network, or creating and monitoring a network load between two systems including ESXi hosts in your datacenter.

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.