Testing Network throughput between VMware ESX Hosts

web-image-f23fe804058174dd4b4eabfde4bedd8bHave you ever wanted to check your Network throughput between your ESX Hosts? or even between VM’s? Well I needed to do this, and I couldn’t find any straight forward how-to’s.

Having been pointed in the direction of a simple application called IPerf by Simon Gallagher I opted to use the Windows version. I’m not great with Linux, and as this is an open source application, documentation is a little hard to come by. So for me, this post is also to remind me how on IPerf works should i need to use it again.

IPerf is a single .exe which you run from the Command Line. So to start with I would recommend downloading the .exe to C:\ to make life a little easier.

IPerf needs to be run on both the Source and Destination workstations for the tests to run. To do so;

  • Start -> Run -> “cmd”
  • Navigate to where IPerf.exe is located
  • To run the Server: iperf -s
  • To run the Client: iperf -c <server ipaddress>

Once you hit Enter on the Client PC, a basic 10 second bandwidth test is performed. (IP’s removed to protect the innocent.)


IPerf has lots of extra options which you can used to vary the tests. A list of options can be found either at the bottom of this post or by typing iperf -h.

This is the test i used the most: iperf -c <Server IPAddress> -t 180 -r

Using -t 180 and -r switches, i ran a 3 minute test on both incoming and outgoing connections to make sure both were approximately the same.

The information provided was basic but sufficaint for my needs.


Here are the available switches:

C:\>iperf -h
Usage: iperf [-s|-c host] [options]
iperf [-h|–help] [-v|–version]

-f, –format    [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes
-i, –interval  #        seconds between periodic bandwidth reports
-l, –len       #[KM]    length of buffer to read or write (default 8 KB)
-m, –print_mss          print TCP maximum segment size (MTU – TCP/IP header)
-o, –output    <filename> output the report or error message to this specified file
-p, –port      #        server port to listen on/connect to
-u, –udp                use UDP rather than TCP
-w, –window    #[KM]    TCP window size (socket buffer size)
-B, –bind      <host>   bind to <host>, an interface or multicast address
-C, –compatibility      for use with older versions does not sent extra msgs
-M, –mss       #        set TCP maximum segment size (MTU – 40 bytes)
-N, –nodelay            set TCP no delay, disabling Nagle’s Algorithm
-V, –IPv6Version        Set the domain to IPv6

Server specific:
-s, –server             run in server mode
-D, –daemon             run the server as a daemon
-R, –remove             remove service in win32

Client specific:
-b, –bandwidth #[KM]    for UDP, bandwidth to send at in bits/sec (default 1 Mbit/sec, implies -u)
-c, –client    <host>   run in client mode, connecting to <host>
-d, –dualtest           Do a bidirectional test simultaneously
-n, –num       #[KM]    number of bytes to transmit (instead of -t)
-r, –tradeoff           Do a bidirectional test individually
-t, –time      #        time in seconds to transmit for (default 10 secs)
-F, –fileinput <name>   input the data to be transmitted from a file
-I, –stdin              input the data to be transmitted from stdin
-L, –listenport #       port to recieve bidirectional tests back on
-P, –parallel  #        number of parallel client threads to run
-T, –ttl       #        time-to-live, for multicast (default 1)

-h, –help               print this message and quit
-v, –version            print version information and quit

[KM] Indicates options that support a K or M suffix for kilo- or mega-

  • Toby Brown

    Good article Simon. Bookmarked for future refrence.

    I have also used Netperf to test bandwidth between machines as per the below MCPMag article. Frequently used to highlight duplex mismatches in my last corporate position.


  • I did see Netperf, be decided to go on the recommendation of Iperf.

    Netperf looks good though, i’ll read a bit more about it.

    Thanks Toby.

  • Toby Brown

    Essentially they do the same thing. Command line based client/server version with a throughput value at the end. Handy tools to have in battle against the “it must be VMware’s fault” brigade! 😉

  • sven

    there is also a nice gui http://code.google.com/p/xjperf/

  • Pingback: Welcome to vSphere-land! » Networking Links()

  • SandraMillhouse

    Thanks for the code. I'll give it a try and check my network throughput. Oh, one more thing. Kudos for using Windows. I hate Linux.
    Sandra Millhouse | VPS unlimited bandwidth

  • Stevil

    you should increase the TCP window size using -w 64k switch on both the server end and the client end. Throughput will increase hugely 🙂

  • Rainabba

    Think I missed the explanation about how to use iperf to “heck your Network throughput between your ESX Hosts”. Can someone elighten me? I can’t find any way to get iPerf running on my hosts (can’t find a binary or installer).

Get Adobe Flash player