NLANR Distributed Applications Support Team


Iperf Version 1.6

May 2002

Ajay Tirumala
Jim Ferguson


The new GUI for Iperf 1.2
What is Iperf?

New Features
IPv6 mode
Representative streams

Server as a Daemon
Multicast Server & Client
Adaptive Window Sizes
 

Download
Known Problems
Documentation and Previous Versions
Related Tools
Future Directions
Acknowledgements
 

Copyright


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

IPv6 Mode

    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.

Iperf 1.6 - UPDATES - Gzipped Tar file
[Fixed the interval reporting problem, fixed some minor multi-threading issues, and fixed the Solaris 7.x compilation problems.]

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