Iperf

Iperf [IPERF] is a tool for measuring maximum TCP and or UDP bandwidth associated with a link, reminiscent of ttcp and nettest. It has been written to overcome the shortcomings of those ageing tools. It attempts to throttle a network with TCP or UDP traffic - discovering the maximum transfer throughput (bandwidth) between two nodes in a network, without monitoring in-between nodes/routers. It can also utilise parallel-streamed transfers if the appropriate libraries are installed and have the benefit of using user-specified window size for network transfers.

Iperf is a tool for measuring maximum TCP and UDP bandwidth on a link between two machines. Unlike pipechar, iperf basically tries to send as much information down a connection as quickly as possible reporting on the throughput achieved. This tool is especially useful in determining the volume of data that links between two machines can supply.

Iperf requires a copy of the program to be run from both the sending and receiving ends. It can be run on the receiver (the server) with the command,

./iperf -s --port xxxx

Where xxxx is port number to monitor. This number should also be replicated on the sending end. Iperf will then monitor all connections from an iperf client which attempts to connect to this port number.

A client can be set from the sender side, by initiating the following command. It connects to an iperf server at <destination IP>,

./iperf -c <destination IP> --port xxxx

Upon running, the program throttles the network to the iperf server. It is possible to specify the amount of data to be transferred or the duration of time in which the test should be performed.

Iperf also has the functionality of the user being able to specify a TCP default window size (buffer size) for that particular connection on which either the client or server is running on. This is achieved by using the command,

./iperf -s -w yyyy

Where yyyy is the size of the window specified in bytes. Iperf is also clever enough to recognise that including a k' or m' after this value represents a size in kilobytes and megabytes respectively\footnote{In this example, and for the rest of the document, 1024 bytes is 1kbyte and 1024kbytes is 1Mbyte.}.

It is worth noting that upon specifying certain buffer sizes, iperf assigns a value to the buffer size that is twice that requested. Using the web100 software, it was found that the connection actually proceeds at requested buffer size and not that as stated on the program output.

By altering the buffer size on the local sender machine with values between 8k to 256k, we were able to analyse the TCP variables by using Web100 software. The link between the machines is that defined above using pipechar (figure~\ref{pipechar}\footnote{Various other packages such as traceroute can be used to determine the path taken for any particular connection./}. For these tests we kept the receiving machine (gig3.hep.man.ac.uk) at a constant window size of 256k in order to maintain a sufficiently large buffer size to guarantee a non-receiver-limited connection.

 Mon, 24 September, 2001 17:59

© 2001-2003, Yee-Ting Li, email: ytl@hep.ucl.ac.uk, Tel: +44 (0) 20 7679 1376, Fax: +44 (0) 20 7679 7145
Room D14, High Energy Particle Physics, Dept. of Physics & Astronomy, UCL, Gower St, London, WC1E 6BT