Ajay Tirumala
Jim Ferguson
What is Iperf?
While tools to measure network performance, such as ttcp, exist, most are very old and have confusing options. Iperf was developed as a modern alternative for measuring TCP and UDP bandwidth performance.
Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.
New Features
Download the IPv6 version of this release.
Get the IPv6 address of the node using the 'ifconfig'
command.
Use
the -V option to indicate that you are using an IPv6 address
Please note that
we need to explicitly bind the server address also.
Server side:
$ iperf -s -B
<Local IPv6 Address to bind to> -V -w 128K
Client side:
$ iperf -c <Server
IPv6 Address> -V
Using Representative Streams to measure bandwidth
Use the -F or
-I option, if you want to test how your network performs with compressed
/ uncompressed streams, you just create representative streams and use
the -F option to test it. This is usually due to the link layer compressing
data.
The -F option
is for file input.
The -I option
is for input from stdin.
E.g. Client:
$ iperf -c <server
address> -F <file-name>
$ iperf -c <server address> -I
Running the server as a daemon
Use the -D command line option to
run the server as a daemon. Redirect the output to a file.
E.g. iperf
-s -D > iperfLog. This will have the Iperf
Server running as a daemon and the server messages will be logged in the
file iperfLog.
Running the multicast server & client.
Use the -B option while starting
the server to bind it to a multicast address.
E.g. :-iperf
-s -u -B 224.0.55.55 -i 1. This will have the Iperf server listening
for datagrams (-u) from the address 224.0.55.55(-B 224.0.55.55), with a
periodic reporting interval of 1s (-i 1).
Now, start a client sending packets
to this multicast address, with a TTL depending on your Network Topology
(if you are unsure, use a high TTL like 64 or higher).
E.g. :- iperf
-c 224.0.55.55 -u -T 32 -t 10 -i 1. This will
have a UDP client (-u) connected to the multicast address 224.0.55.55(-c
224.0.55.55), with a TTL of 32 (-T 32), sending data for 10 seconds (-t
10), with a periodic reporting interval of 1s (-i 1).
Start multiple clients as explained above, sending data to the same multicast server. (If you have multiple servers listening on the multicast address, each of the servers will be getting the data)
Adaptive window sizes
Use the -W option on the client to
run the client with the adaptive window size. Ensure that the server window
size is fairly big for this option.
E.g.. If the server TCP window size
is 8KB, it does not help having a client TCP window size of 256KB.
256KB Server TCP Window Size should
suffice for most high bandwidth networks.
Client changes the TCP window size using a binary exponential algorithm. This means that you may notice that TCP window size suggested may vary according to the traffic in the network, Iperf will suggest the best window size for the current network scenario.
Download
Iperf is released as a distribution of the C++ source. Pre-compiled binaries of Version 1.1.1 for selected operating systems are also available. Iperf is copyrighted by the University of Illinois, except for the gnu_getopt.c, gnu_getopt_long.c, and gnu_getopt.h files, which are part of the GNU C library and are under the GNU Library General Public License.
Known Problems.
Iperf 1.1.1 users : You will now require C++ STL to be present in your path for compilation.
Report any bugs to dast@nlanr.net . All feedback is welcome.
Documentation and Previous Versions
Iperf 1.1.1, along with complete documentation.
Related Tools
You can check out the Automatic TCP
Window Tuned FTP, Autobuf.
NcFTP has been modified here to achieve greater file transfer rates.
You can also check out Nettest,
which is a Secure Network Monitoring tool. It includes a set of Network
testing tools including Iperf 1.2.
Acknowledgements
We would like to thank Bill Cerveny (Internet2), Micheal Lambert (PSC), Dale Finkelson (UNL) and Matthew Zekauskas (Internet2) for help in getting access to IPv6 networks / machines. Special thanks to Matthew Zekauskas (Internet2) for helping out in the FreeBSD implementation. Also, thanks to Kraemer Oliver (Sony) for providing an independent implementation of IPv6 version of Iperf which provided a useful comparison for testing our features.
Copyright 1999, 2000, 2001, 2002
The Board of Trustees of the University
of Illinois
All rights reserved
See UI
License for complete details.
dast@nlanr.net
Last modified: April 30th, 2002
NLANR||
Applications
Support || Engineering Support
|| Measurement and Operations