Iperf

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, --output     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         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>

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.