Iperf on Windows

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 (locally hosted)

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.

iperf-server-client-windows

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

command-prompt

With the command line prompt open type

cd Dowloads

or the location where the Iperf executable resides.

cd-download

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.

iperf-server

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.

iperf-c

Give Iperf some time to test the connection, after the test is done Iperf will present the results.

iperf-test-done

The results are easy to understand in this case Iperf managed to transfer 113 Mbytes at 94.5 Mbit/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

40 Responses to “Iperf on Windows”

  1. Mike Lo says:

    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?

  2. jamen says:

    the download page has changed, it’s hidden now. the direct link is https://nocweboldcst.ucf.edu/files/iperf.exe

  3. Matt Stevens says:

    This is a brilliant little tool, it’s great for testing the latency between servers within a cluster. Thanks!

  4. Freddy Arias says:

    hi, my result transfer 3.13MB and bandwidth 2.62 MB/sec, this is good or bad..?? tks.!

  5. Mike Munsell says:

    Where does the windows exe put the folder??

  6. 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!

  7. Marius says:

    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

  8. James says:

    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.

  9. R.Lakshman says:

    I need to download software

  10. Opher says:

    Great Website…and good explanation pretty easy to understand and implement….Great page !!!

  11. Naeem says:

    can I get the aspects such Throghput,Packet losess rate and Communiction delay of UDP in Wirelss LAN by using iperf.

  12. NAEEM says:

    Could you advise me,what the best software program I can use to make UDP performance analyses(Throughput,packet loses and delay).

  13. Loopbot says:

    Do you know where I can find the source code for this?

  14. NAEEM says:

    Could to show me how I can execute iperf on windows xp and win7

  15. Mike says:

    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.

  16. SAT1 says:

    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?

  17. RobertFranz says:

    @Mike – you can pass a lot of cl parameters:

    C:Windowssystem32>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:Windowssystem32>iperf /?
    iperf: ignoring extra argument — /?
    Usage: iperf [-s|-c host] [options]
    Try `iperf –help’ for more information.

    C:Windowssystem32>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

  18. Mark Easton says:

    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

  19. Irene says:

    Can iPerf do packet/sec? How do I send data at 50 packet/sec rate ?

  20. Siva says:

    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

  21. […] Baje e instale el software IPERF […]

  22. CC Hsiang says:

    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.

  23. Maddelena says:

    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. (0x5)’. Would appreciate if you can help me as I am new in using iperf. I have no problem when using it as client. Thanks!

  24. TooMeeK says:

    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.

  25. Daryl says:

    @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

  26. Peter says:

    is any iperf build capable for QOS, like on http://www.iperfwindows.com?

  27. Windows – Useful Links…

    DHCP Dynamic Host Configuration Protocol General…

  28. William247365 says:

    My question is it possible to generate multiple tests at, or nearly at, the same time to test multiple networks at the same time? example 1 server, 1 client, 3 independent loops connected on each end to a layer 2 switch?
    1 parallel stream on port 3001,
    a second parallel stream on port 4001,
    and finally a third parallel stream on port 5001? (see picture enclosed…)

  29. […] validate the performance of all network paths. I use a precompiled version of iperf for Windows (available to download here) to run a series of client-server network tests to validate that the network is performing as […]

  30. RyGuy says:

    This is great!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>