WAN LAN Measure Network Throughput and Bandwidth
This guide helps measure the network throughput and bandwidth between two hosts in the same network, different networks and across different data centers.
This specifically helped me when I needed to know how much throughput the company network had between headquarters data center and the Disaster Recovery data center which where in different states and I wanted to calculate how long would it take to replicate our SAN between the sites, about 60TB of data.
The tool I used for this is called iPerf (http://sourceforge.net/projects/iperf/), this tool includes both the Server and Client, I am running this tool from a RHEL 5.3 system.
You can find a RHEL/Centos binary for this tool at http://dag.wieers.com/rpm/packages/iperf/
A Java based Graphical iperf tool can be found at http://code.google.com/p/xjperf/downloads/list, which can be run on a Windows system, with the Java runtime environment.
Now let’s get to the steps on how to measure network throughput.
1) Set up the iperf server
I am utilizing a RHEL 5.3 for the server.
Install iperf:
[root@remote]# rpm -Uvh http://dag.wieers.com/rpm/packages/iperf/iperf-2.0.2-2.el5.rf.x86_64.rpm
Run iperf as server:
[root@remote ~]# iperf -s ———————————————————— Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ————————————————————
Now that the iperf server is running, install the client at the other office.
2) Set up the iperf client on RHEL
Install iperf on RHEL:
[root@local]# rpm -Uvh http://dag.wieers.com/rpm/packages/iperf/iperf-2.0.2-2.el5.rf.x86_64.rpm
Run iperf as client on RHEL:
iperf has many great options, you can see all the options by doing # iperf -h
I usually use the following options to determine throughput:
[root@local ~]# iperf -c 10.3.3.3 -fk // 10.3.3.3 is the remote server -fk is to present as kbps ———————————————————— Client connecting to 10.3.3.3, TCP port 5001 TCP window size: 16.0 KByte (default) ———————————————————— [ 3] local 10.2.2.2 port 38124 connected with 10.3.3.3 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.3 sec 37680 KBytes 30029 Kbits/sec
Server screen Output:
-———————————————————– Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— [ 4] local 10.3.3.3 port 5001 connected with 10.2.2.2 port 38124 [ 4] 0.0-10.9 sec 36.8 MBytes 28.3 Mbits/sec
Using the -r option to “Do a bidirectional test individually”
[root@local ~]# iperf -c 10.3.3.3 -fk -r ———————————————————— Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— ———————————————————— Client connecting to 10.3.3.3, TCP port 5001 TCP window size: 16.0 KByte (default) ———————————————————— [ 5] local 10.2.2.2 port 41973 connected with 10.3.3.3 port 5001 [ ID] Interval Transfer Bandwidth [ 5] 0.0-10.1 sec 27744 KBytes 22580 Kbits/sec [ 4] local 10.2.2.2 port 5001 connected with 10.3.3.3 port 55521 [ 4] 0.0-10.1 sec 48160 KBytes 39093 Kbits/sec
Server screen Output:
-———————————————————– Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— [ 4] local 10.3.3.3 port 5001 connected with 10.2.2.2 port 41973 [ 4] 0.0-10.7 sec 27.1 MBytes 21.3 Mbits/sec ———————————————————— Client connecting to 10.2.2.2, TCP port 5001 TCP window size: 16.0 KByte (default) ———————————————————— [ 4] local 10.3.3.3 port 55521 connected with 10.2.2.2 port 5001 [ 4] 0.0-10.0 sec 47.0 MBytes 39.3 Mbits/sec
Using the -d option to “Do a bidirectional test simultaneously”
[root@local ~]# iperf -c 10.3.3.3 -fk -d ———————————————————— Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— ———————————————————— Client connecting to 10.3.3.3, TCP port 5001 TCP window size: 16.0 KByte (default) ———————————————————— [ 5] local 10.2.2.2 port 41974 connected with 10.3.3.3 port 5001 [ 4] local 10.2.2.2 port 5001 connected with 10.3.3.3 port 40886 [ ID] Interval Transfer Bandwidth [ 5] 0.0-10.1 sec 37872 KBytes 30648 Kbits/sec [ 4] 0.0-10.4 sec 12856 KBytes 10132 Kbits/sec
Server screen Output:
-———————————————————– Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— [ 4] local 10.3.3.3 port 5001 connected with 10.2.2.2 port 41974 ———————————————————— Client connecting to 10.2.2.2, TCP port 5001 TCP window size: 16.0 KByte (default) ———————————————————— [ 6] local 10.3.3.3 port 40886 connected with 10.2.2.2 port 5001 [ 6] 0.0-10.4 sec 12.6 MBytes 10.2 Mbits/sec [ 4] 0.0-10.7 sec 37.0 MBytes 28.9 Mbits/sec
3) Set up the iperf client on Windows
Download the JPerf client http://xjperf.googlecode.com/files/jperf-2.0.2.zip
Unzip and Run the jperf.bat, you will see a graphical interface, just enter the ip of the server and you are good to go.
You can adjust your client’s options, Dual = -d , Trade= -r in the command line client:
Server screen Output:
-———————————————————– Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ———————————————————— [ 4] local 10.3.3.3 port 5001 connected with 10.4.4.4 port 2606 [ 4] 0.0-10.0 sec 2.52 MBytes 2.12 Mbits/sec