Iperf Speed Testing

From WIKI - ACD.net
Revision as of 14:10, 6 April 2012 by Schoen.kevin (Talk | contribs)

Jump to: navigation, search

Contents

What it Is

Iperf is an industry standard tool for doing accurate speed testing. This tool is accurate and provides clear metrics to understand and use performance. Iperf is open source code. Please read carefully the information contained in this document.

  • Iperf is the command line version.
  • Jperf is a Graphical User Interface version that uses Iperf.


Speed Test Software and Issues

There are many types of speed test softwares. Speed testing websites is inherently innaccurate due to the complex nature of Internet, and other processing interference issues. While sometimes usesful, websites such as www.speedtest.net and speedtest.acd.net will not provide accurate speed results on many types of connections, including wifi, bonded T1 lines, and many EFM services. In addtion these sites will not provide accurate speeds for services faster than 40-100mb/s.

ACD uses IPerf as the standard software for doing performance testing. For debugging purposes, ACD only uses Iperf. We do not rely upon random "speed test" websites for debugging purposes.

Changing variables within Iperf also change the performance results, often quite dramatically. Based upon our lab results, please provide us data with the Recommended Settings for Testing below. Data without the recommended settings and time stamps will generally not be taken into account for troubleshooting.

Recommended Settings for Testing

This command will run 10 parallel client threads over 240 seconds (4min).

iperf -c iperf.acd.net -P 10 -t 240

Servers on ACD.net's Network Configured for iperf

iperf.acd.net

Installing Iperf

Download IPerf, unrar and install into c:\iperf\

Getting Started

To begin using iperf, open up the command prompt and change to the iperf directory by typing cd c:\iperf.

Server Setup (Windows)

If you are testing to the ACD server, you do not need to install your own server.

To begin transmitting files between two locations, one machine must be designated the server, while the other must be the client. The command to designate one machine as the server is as follows:

iperf -s

The full command line at this point should read as follows:

C:\iperf>iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)

This setup is useful for creating a temporary iperf server for an iperf client to test to. It does not, however, set up a persistent server that will be up and online automatically whenever the machine is.

Client Setup (Windows)

In order for the second machine to run in client mode, the following command will be entered into the command prompt:

iperf -c [server IP address -or- Hostname]

At this point the client will connect to the server and transfer a single file for the default period of 10 seconds.

C:\iperf>iperf -c 69.63.233.183
------------------------------------------------------------
Client connecting to 69.63.233.183, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1832] local 69.63.233.182 port 3716 connected with 69.63.233.183 port 5001
[ ID] Interval       Transfer     Bandwidth
[1832]  0.0-10.0 sec   109 MBytes  91.7 Mbits/sec


Client Arguments

The iperf client supports a great deal of arguments that allow for the transfer to be customized in a number of ways. The following section covers these arguments in detail:

Using Single Arguments

Changing the duration of transfer:

To change the duration of the transfer from the default value of 10 seconds, the argument -t # can be added to the end of the client command, where # represents the duration in seconds.

C:\iperf>iperf -c iperf.acd.net -t 5

This argument would transfer data to the server for 5 seconds instead of the default 10 seconds.

Changing the interval rate:

The interval at which data is transferred to the server can be set by using the argument -i # where # represents the period in seconds for each interval.

C:\iperf>iperf -c 69.63.233.84 -i 2

This argument would transfer data to the server for 10 seconds (default), and display the data in intervals of 2 seconds (-i 2)

Transferring a specific file size:

To transfer a file via iperf based on a specific file size as opposed to a duration, the argument -n # is used, where # represents the file size in bytes. You can also use -n #M or -n #K to enter transfer size in Mbytes or Kbytes.

C:\iperf>iperf -c netflow01.acd.net -n 100000

Will display like:

------------------------------------------------------------
Client connecting to netflow01.acd.net, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1908] local 69.63.233.190 port 3605 connected with 207.179.118.136 port 5001
[ ID] Interval       Transfer     Bandwidth
[1908]  0.0- 0.0 sec   104 KBytes  54.5 Mbits/sec

And

C:\iperf>iperf -c netflow01.acd.net -n 100M

Will display like:

------------------------------------------------------------
Client connecting to netflow01.acd.net, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1908] local 69.63.233.190 port 3614 connected with 207.179.118.136 port 5001
[ ID] Interval       Transfer     Bandwidth
[1908]  0.0- 8.9 sec   100 MBytes  94.0 Mbits/sec

Bidirectional testing: Individually

To test both directions of the transfer, one direction at a time, the argument -r is used.

C:\iperf>iperf -c 69.63.233.182 -r

This argument will test in both directions in turn and will output something like this:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 69.63.233.182, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1852] local 69.63.233.190 port 3058 connected with 69.63.233.182 port 5001
[ ID] Interval       Transfer     Bandwidth
[1852]  0.0-10.0 sec   110 MBytes  92.5 Mbits/sec
[1944] local 69.63.233.190 port 5001 connected with 69.63.233.182 port 2828
[ ID] Interval       Transfer     Bandwidth
[1944]  0.0-10.0 sec  81.9 MBytes  68.8 Mbits/sec

Bidirectional testing: Simultaneously

To test both directions of the transfer simultaneously, the argument -d is used.

C:\iperf>iperf -c netflow01.acd.net -d

Will output like:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to netflow01.acd.net, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1848] local 69.89.110.216 port 2993 connected with 207.179.118.136 port 5001
[1816] local 69.89.110.216 port 5001 connected with 207.179.118.136 port 55020
[ ID] Interval       Transfer     Bandwidth
[1848]  0.0-130.2 sec   848 KBytes  53.4 Kbits/sec
[1816]  0.0-163.9 sec  3.13 MBytes   160 Kbits/sec

Running Multiple Parallel Connections

The argument -P # where # represents the number of parallel connections you want to run.

C:\iperf>iperf -c netflow01.acd.net -P 3

Will output like:

------------------------------------------------------------
Client connecting to netflow01.acd.net, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[1872] local 69.89.110.216 port 3065 connected with 207.179.118.136 port 5001
[1888] local 69.89.110.216 port 3064 connected with 207.179.118.136 port 5001
[1908] local 69.89.110.216 port 3063 connected with 207.179.118.136 port 5001
[ ID] Interval       Transfer     Bandwidth
[1908]  0.0-130.4 sec   456 KBytes  28.6 Kbits/sec
[1872]  0.0-130.4 sec   264 KBytes  16.6 Kbits/sec
[1888]  0.0-130.9 sec   208 KBytes  13.0 Kbits/sec
[SUM]  0.0-130.9 sec   928 KBytes  58.1 Kbits/sec

Displaying the results port by port followed by the [SUM] with totals for the entire transaction.

Choosing which port to connect to or listen on

To set which ports to use on the client side of iperf the argument -p and -L are utilized.

When used by the client, the -p argument determines which port on the server to connect to using the format -p #' where # is a port number on the iperf server.

The -L argument lets you select which port the client will listen on in the case of bidirectional testing using the format -L # where # is a port number on the client machine.

Using Multiple Arguments

It is possible to use iperf arguments together to have more control over the testing process and the results you receive in return. What follows are examples of some of the useful and possible combination of iperf arguments.

Using the interval and duration arguments together:

Changing both the duration of the transfer as well as the interval for the same test is as simple as adding both arguments to the command line:

C:\iperf>iperf -c 69.63.233.84 -i 2 -t 20

This argument would transfer data to the server for 20 seconds (-t 20), and display the data in intervals of 2 seconds (-i 2)
Personal tools
Namespaces

Variants
Actions
Navigation
Tools