How to Test Network Throughput with iPerf on Debian and Ubuntu

Install iPerf

The iperf package is included in most Linux distribution’s repositories.

Debian and Ubuntu

apt-get install iperf

How to Use iPerf

iPerf must be installed on the computers at both ends of the connection you’re testing. If you are using a Unix or Linux-based operating system on your personal computer, you can install iPerf on your local machine.

If you are testing the throughput of your server, however, it’s better to use another server as the end point, as your local ISP may impose network restrictions that can affect the results of your test.

TCP Clients & Servers

iPerf requires two systems because one system must act as a server, while the other acts as a client. The client connects to the server you’re testing the speed of.

On the server you plan to test, launch iPerf in server mode:

iperf -s

You should see output similar to:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

On your second server, connect to the first. Replace 5.254.113.234 with the first server’s IP address.

iperf -c 5.254.113.234

------------------------------------------------------------
Client connecting to 5.254.113.234, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 5.254.113.234 port 50616 connected with 5.254.113.234 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

You will also see the connection and results on your iPerf server:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 5.254.113.234 port 5001 connected with 5.254.113.233 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

To stop the iPerf server process, press CTRL + c.

UDP Clients & Servers

Using iPerf, you can also test the maximum throughput achieved via UDP connections.

Start a UDP iPerf server:

iperf -s -u

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------

Connect your client to your iPerf UDP server. Replace 5.254.113.234 with your IP address:

iperf -c 5.254.113.234 -u

------------------------------------------------------------
Client connecting to 5.254.113.234, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 5.254.113.233 port 58070 connected with 5.254.113.234 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.084 ms 0/ 893 (0%)

1.05 Mbits/sec is considerably less than what was observed on the TCP tests. It is also considerably less than the maximum outbound bandwidth cap provided by the 1GB server. This is because iPerf limits the bandwidth for UDP clients to 1 Mbit per second by default.

You can change this with the -b flag, replacing the number after with the maximum bandwidth rate you wish to test against. If you are testing for network speed, set this number above the maximum bandwidth cap provided by server:

iperf -c 5.254.113.234 -u -b 1000m 

This tells the client that we want to achieve a maximum of 1000 Mbits per second if possible. The -b flag only works when using UDP connections, since iPerf does not set a bandwidth limit on the TCP clients.

------------------------------------------------------------
Client connecting to 5.254.113.234, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 5.254.113.234 port 52308 connected with 5.254.113.234 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec
[ 3] Sent 688897 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec 0.001 ms 0/688896 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order

This time the results are considerably higher.

Bidirectional Tests

In some cases, you may want to test both servers for the maximum amount of throughput. This can easily be done using the built-in bidirectional testing feature iPerf offers.

to test both connections, run the following command from the client:

iperf -c 5.254.113.234 -d

The result is that iPerf will start a server and a client connection on the client server (5.254.113.233). Once this has been done, iPerf will connect the iPerf server to the client connection, which is now acting as both a server connection and a client connection.

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 5.254.113.234, TCP port 5001
TCP window size: 351 KByte (default)
------------------------------------------------------------
[ 3] local 5.254.113.233 port 50618 connected with 5.254.113.234 port 5001
[ 5] local 5.254.113.233 port 5001 connected with 5.254.113.234 port 58650
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 3] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec

On the server, you will see:

------------------------------------------------------------
Client connecting to 5.254.113.233, TCP port 5001
TCP window size: 153 KByte (default)
------------------------------------------------------------
[ 6] local 5.254.113.234 port 58650 connected with 5.254.113.233 port 5001
[ 6] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 5] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec

 

¿Fue útil la respuesta?

Artículos Relacionados

How to install and use MTR on Windows and Mac OS X

Install and use MTR on Windows Download WinMTR (Windows) (Windows) Run WinMtr.exe...

How to use worldshield.ws panel

Worldshield.ws is the DDoS mitigation control panel that nexonhost.com provides for you to manage...

How to get Real Visitors IPs on your backend

How to Get Real Visitor IPs in Web Server Access Logs In order to receive the real visitor IPs...

How to use the MTR command on Linux

How to use the MTR command on Linux   MTR (Matt’s traceroute) is a...

How to Install PowerDNS and Poweradmin on CentOS 7

Step 1 - Install EPEL and Remi Repositories First of all, we need to install dependencies for...