Today, a customer requested some benchmarks regarding a new 100Mbits circuit which will be used in prodution on Saturday. How to quickly perform benchmarking with the minimum time and effort? The answer can be Iperf.
Iperf is a network performance tool which can perform lot of tests and report bandwidth, delay jitter, datagram loss. It runs on almost all UNIX flavours but also MacOS and Windows! Another very good point is the installation: only one binary file, even for the Windows version. You just copy the executable on two hosts, one will be run iperf in server mode, the second in client mode and you can perform tests!
Have a look at the command line help, it’s so easy:
C:\Temp>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, --outputoutput 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 bind to , 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 run in client mode, connecting to -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 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- The TCP window size option can be set by the environment variable TCP_WINDOW_SIZE. Most other options can be set by an environment \ variable IPERF_ , such as IPERF_BANDWIDTH. Report bugs to C:\Temp>