Iperf is a neat little tool with the simple goal of helping administrators measure the performance of their network. Worthy of mention is the fact that it can measure both TCP and UDP performance on a network. Iperf is cross platform software and open source.
You can download Iperf.exe from:
Iperf.exe Linhost.info
or
Iperf.exe Ucf.edu
Link updated on 12/30/2010
We will be making use of the command line, do not fear the command line Iperf is a simple tool to use.
Say I want to test the available bandwidth between a server(Windows Server 2008) and a client workstation(Windows 7). Iperf will try to move as much data as possible using the available link in order to conduct the test.

Instructions
Download the Iperf executable and place the file on any directory you wish, my web browser(Firefox) places all downloaded files on the Download directory which is where I will be executing Iperf from.
Note:You will need to open port 5001 on the Iperf server.
Server Setup
Go to Start > All Programs > Accessories > Command Prompt

With the command line prompt open type
cd Dowloads
or the location where the Iperf executable resides.
Now that you are in the same directory as Iperf type
iperf -s
to start the Iperf server. If you look at the screen Iperf listens on port 5001 you may have to open port 5001 on your firewall.

Client Set Up
Imitating the steps above execute Iperf in the same manner, but this time we are going to give the Iperf client different instructions. On the Iperf client command line type
iperf -c 192.168.1.51
. This will be our client and we are telling Iperf the server is located at 192.168.1.51.
Give Iperf some time to test the connection, after the test is done Iperf will present the results.
The results are easy to understand in this case Iperf managed to transfer 113 Mbytes at 94.5 Mbits/s, the results will changed when used on a busy network which is where Iperf will reveal the amount of available bandwidth in the network.
Also
My previous Iperf on Linux post

April 5, 2010 at 4:08 pm
Hi Luis, solid page. I’ve been running in to some bugs with the version of iperf from that site (1.7.0). Have you seen a windows executable for iperf version 2.0.4?
April 8, 2010 at 1:33 am
Read the following entry at ServerFault it might be of some help.
December 30, 2010 at 11:52 am
the download page has changed, it’s hidden now. the direct link is https://nocweboldcst.ucf.edu/files/iperf.exe
December 30, 2010 at 4:59 pm
Jamen thank you for the update.
January 7, 2011 at 7:58 am
This is a brilliant little tool, it’s great for testing the latency between servers within a cluster. Thanks!
February 9, 2011 at 10:25 am
hi, my result transfer 3.13MB and bandwidth 2.62 MB/sec, this is good or bad..?? tks.!
February 28, 2011 at 4:52 pm
Where does the windows exe put the folder??
April 14, 2011 at 6:58 pm
Troubleshooting an agitating VPN client throughput issue, this was very helpful in making it very clear what the issue was. I get 992 Kbit/sec over the tunnel, one user was getting a tenth of that. Thanks for sharing!
June 3, 2011 at 5:57 am
Iperf works fine for me in a LAN environment.
If either the server and the client are behind firewalls, and given that standard port is used, what ports should I open on either firewalls?
marius
June 8, 2011 at 5:44 pm
Any info on how to force iperf to use a specific interface on a windows machine? I.E. using a secondary NIC instead of the main one.
June 11, 2011 at 11:50 pm
I need to download software
June 13, 2011 at 1:25 am
Sorry for taking too long to reply. The default port for iperf listener 5001, but you can use any port above 1024 if you like.
June 13, 2011 at 1:26 am
Download links are provided in the post.
June 24, 2011 at 12:03 am
Great Website…and good explanation pretty easy to understand and implement….Great page !!!
July 1, 2011 at 1:17 pm
can I get the aspects such Throghput,Packet losess rate and Communiction delay of UDP in Wirelss LAN by using iperf.
July 3, 2011 at 5:13 am
Could you advise me,what the best software program I can use to make UDP performance analyses(Throughput,packet loses and delay).
July 21, 2011 at 1:13 pm
Do you know where I can find the source code for this?
July 22, 2011 at 2:03 pm
Looks like there are two sources:
http://sourceforge.net/projects/iperf/files/iperf/
http://code.google.com/p/iperf/downloads/list
August 1, 2011 at 12:38 pm
Could to show me how I can execute iperf on windows xp and win7
August 2, 2011 at 9:53 am
How does it choose the data to transfer? My test is only transferring about 800K. I thought maybe is chose an file in the folder it is in. I put a 5MB file in the folder but it doesn’t use it. I would like to lengthen the test results.
August 25, 2011 at 9:23 am
Does iperf/jperf monitor/measure bandwidth over SATCOM, i.e. client in Europe and the server in U.S.A with SATCOM as the transmission media?
August 28, 2011 at 10:43 pm
Sorry for taking so long to reply. iPerf will work over any medium that uses TCP/UDP and if Wikipedia is right then the answer to your question is “yes”.
September 6, 2011 at 5:35 pm
@Mike – you can pass a lot of cl parameters:
C:\Windows\system32>iperf -s
————————————————————
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[256] local 192.168.11.132 port 5001 connected with 192.168.8.8 port 1442
[ ID] Interval Transfer Bandwidth
[256] 0.0-11.9 sec 216 KBytes 149 Kbits/sec
C:\Windows\system32>iperf /?
iperf: ignoring extra argument — /?
Usage: iperf [-s|-c host] [options]
Try `iperf –help’ for more information.
C:\Windows\system32>iperf –help
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 specifie
d 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
September 14, 2011 at 3:51 am
Great piece of software.
Is there a way to test the download bandwidth? (i.e. read packets in reverse order from Server to Client – assuming that command “iPerf -c host” does a write from Client to Server).
Regards
Mark
October 17, 2011 at 5:32 pm
Can iPerf do packet/sec? How do I send data at 50 packet/sec rate ?
November 15, 2011 at 12:08 am
Iam Student doing my Academic project with imx35 Processor using eclipse and gdb (gcc complier) and flywatter debugger ,i can able to program, excute ,debug etc I need to control the motor via ethernet port, i wrote the Embeeed code and its working fine , now my task is find out the datarate of ethernet port
For that iam trying to use the iperf, but i have lot of doubts in that,
iam able read the data rate between my college PC and server via iperf, but the for target board, i have no idea,
whether i need to download the source code of iperf and change for my target device?
Please advice and show me right path .
Regrads,
Sree
Pingback: Test de Velocidad | Redes USM Campus Santiago
Pingback: Iperf w Windows | keyce.info
Pingback: IPERF: Check available bandwidth. Guide for windows client/server | CiscoWiFi
January 5, 2012 at 7:27 pm
I tried to do some TCP connection scale/stress test using -P parameter. When I do “-P 10″, the tool works ok, but if I do “-P” with a higher number, e.g. 200, the tool crashed with stackdump.
Is this a known bug? Is there a limitation on how many TCP connections can be tested at the same time?
Thanks in advance.
January 16, 2012 at 1:55 am
Hi,
I have saved iperf exe file in the D drive and run iperf as a server in the location where the Iperf executable resides. But i always have this error when setting it as server, ‘OpenSCManager failed – Access is denied. (0×5)’. Would appreciate if you can help me as I am new in using iperf. I have no problem when using it as client. Thanks!
January 22, 2012 at 8:51 am
I’m confused about this tool.
It says:
iperf -c 10.0.0.250 -t 600
————————————————————
Client connecting to 10.0.0.250, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[168] local 10.0.0.104 port 50779 connected with 10.0.0.250 port 5001
[ ID] Interval Transfer Bandwidth
[168] 0.0-30.4 sec 807 MBytes 223 Mbits/sec
iperf -c 10.0.0.250 -t 600 -P 2
————————————————————
Client connecting to 10.0.0.250, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[184] local 10.0.0.104 port 50792 connected with 10.0.0.250 port 5001
[172] local 10.0.0.104 port 50791 connected with 10.0.0.250 port 5001
[ ID] Interval Transfer Bandwidth
[184] 0.0-100.2 sec 1.93 GBytes 166 Mbits/sec
[172] 0.0-100.2 sec 1.93 GBytes 165 Mbits/sec
[SUM] 0.0-100.2 sec 3.86 GBytes 331 Mbits/sec
iperf -c 10.0.0.250 -t 600 -P 5
————————————————————
Client connecting to 10.0.0.250, TCP port 5001
TCP window size: 8.00 KByte (default)
————————————————————
[204] local 10.0.0.104 port 51120 connected with 10.0.0.250 port 5001
[188] local 10.0.0.104 port 51118 connected with 10.0.0.250 port 5001
[180] local 10.0.0.104 port 51117 connected with 10.0.0.250 port 5001
[196] local 10.0.0.104 port 51119 connected with 10.0.0.250 port 5001
[168] local 10.0.0.104 port 51116 connected with 10.0.0.250 port 5001
[ ID] Interval Transfer Bandwidth
[188] 0.0-34.9 sec 540 MBytes 130 Mbits/sec
[196] 0.0-34.9 sec 535 MBytes 129 Mbits/sec
[180] 0.0-34.9 sec 535 MBytes 129 Mbits/sec
[168] 0.0-34.9 sec 529 MBytes 127 Mbits/sec
[204] 0.0-34.9 sec 530 MBytes 127 Mbits/sec
[SUM] 0.0-34.9 sec 2.61 GBytes 641 Mbits/sec
it’s gigabit network on gigabit switch, all cards are Gigabit. The only difference is I’m trying to get 1Gbit/s via bridged and bonded interface in server.
February 9, 2012 at 5:53 am
@TooMeeK you might not be able to fully utilise the link due to TCP constraints. Try playing around with the “-w” switch and increase your window size. The problem is with something called bandwidth delay product. This can be a problem on highspeed or high-latency links. This website has a good explanation and a calculator for finding the optimum window size.
http://www.speedguide.net/bdp.php
March 10, 2012 at 3:02 am
is any iperf build capable for QOS, like on http://www.iperfwindows.com?
Pingback: Confluence: Managed Cloud