Most of the cases, FTP testing would be enough to isolate an issue if existed. However, sometime you need more deep testing and detailed output information. IPERF is one of popular opensourced software and easily use, save your time and it can be downloaded anywhere from Internet. You could download it here as well.
Click to download from our site
IPERF version 1.7.0
JPERF version 2.0.0
There are many modified versions in out there, but I am using version 1.7 only. If you are Linux user, you can download thru software repository system.
- Internet Speed Issue – Bandwidth VS. Throughput
- Internet Speed Issue – How to troubleshoot(FTP)
- Internet Speed Issue – How to troubleshoot(IPERF)
- Internet Speed Issue – Why TCP window size is matter
- Internet Speed Issue – How to use TCP window scaling option
- Internet Speed Issue – Optimal MTU size on VPN or others
IPERF is running on two different modes, server and client mode. If you are not specifiying direction of data transfer, always client sent data to the server direction by default
You need to designate a testing device at each location. Let’s say device "A" at NYC and device "B" at Washington D.C. Device "A" is doing server role and device "B" runs as a client on our example. Default TCP window size on server side is 85.3Kbyte which is a bit bigger than default window size which is 64kbyte(most of the window systems).
Pic 1 – Network Layout
At the 1st attempt, 8Kbyte of TCP window size of IPERF‘s client will be used. And on 2nd attempt, we will increase TCP window size to 64Kbyte for better throughput.
[ 1st attempt ]
The below picture is a screenshot of the server side. To set server mode, type "iperf -s &". TCP window size is set 85.3Kbytes and TCP port 5001 by default.
C_OServer:/# iperf -s &
Pic 1 – Screenshot for Server side with default window size.
Once client initiates a testing, server will be synchronized and produce output of throughput rate(above).
In order to initiate the testing, type "iperf -c x.x.x.x" on DOS prompt.(x.x.x.x is IP server’s IP). Default port # is 5001(you can change it if you like). TCP throughput is shown very end of following screenshot (Pic 2)
c:>iperf -c x.x.x.x
Pic 2 – Screenshot for client side with default window size.
[ 2nd attempt ]
At 2nd attempt, we changed window size to 64kbyte. I gave us a bit better TCP throughput(of course). Pic 3 is a screenshot of IPERF in client mode.
c:>iperf -c 65.x.x.53 -w 64k
Pic 3 – Screenshot of IPERF’s Client mode with 64Kbytes window size
Server was responsed to client and TCP throughput shown better than 1st testing.
Pic 4 – Screenshot of IPERF’s Server mode
You can use various options below to perform complexity and systematic testing.
[ IPERF Option ]
Linux_Server:/ # 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
-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
-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
-U, –single_udp run in single threaded UDP mode
-D, –daemon run the server as a daemon
Client specific:
-b, –bandwidth #[KM] for UDP, bandwidth to send at in bits/sec
(default 1 Mbit/sec, implies -u)
-c, –client
-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
-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)
-Z, –linux-congestion
Miscellaneous:
-x, –reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) orts
-y, –reportstyle C report as a Comma-Separated Values
-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_
Report bugs to
[ JPERF ]
Below is quick screenshots for how to execute Jper and main page. Once you have extracted Jperf package, you will se below files in the Jperf folder. Click jperf (it is dos batch file)
Pic 5 – How to troubleshoot TCP Throughput(JPERF)
As you can see below, it is simple and very straightforward. Easy to use. One thing, you need to make sure your system has java installed.
Pic 46 – Jperf’s main screen