Posted by Simon Long Nov 12, 2009
Testing Network throughput between VMware ESX Hosts
Have 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]
Client/Server:
-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)
Miscellaneous:
-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-