Linux Commands

Iperf3 Commands

Iperf is a widely used networking throughput or speed measurement tool. This is mainly used for wired or wireless network speed testing. There are two main versions of iperf like iperf2 and iperf3. In Linux Hint, iperf 2.0.5 is discussed here. Now, let us discuss about iperf3 commands.

Install Iperf3 in Linux

To know if iperf3 is installed or not, we can use the following command in Linux:

$ iperf3

If we get the following output, it means that iperf3 is not installed:

The program “iperf3” is currently not installed. You can install it by typing:

sudo apt install iperf3

We can use the following command to install iperf3:

$ sudo apt install iperf3
[sudo] password for rian:

Reading package lists... Done

Building dependency tree

Reading state information... Done

The following additional packages will be installed:

libiperf0

…….

…….

Processing triggers for libc-bin (2.23-0ubuntu11) ...

Now, enter “iperf3” in the terminal again.

$ iperf3
iperf3: parameter error - must either be a client (-c) or server (-s)

Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Server or Client:
  -p, --port      #         server port to listen on/connect to
  -f, --format    [kmgKMG]  format to report: Kbits, Mbits, KBytes, Mbytes

………………………
Many more lines..
………………………

How to Run the TCP Traffic Using Iperf3

TCP server command:

$ iperf3 -s

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

TCP client command: We should know the server IP address.

iperf3 -c 192.168.1.102 -i1 -t20

Let us look at the server and client output:

Server Output:

Accepted connection from 192.168.1.4, port 51219

[  5] local 192.168.1.102 port 5201 connected to 192.168.1.4 port 51220

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-1.00   sec  1.35 MBytes  11.3 Mbits/sec

[  5]   1.00-2.00   sec  1.53 MBytes  12.8 Mbits/sec

[  5]   2.00-3.00   sec  1.62 MBytes  13.6 Mbits/sec

[  5]   3.00-4.00   sec  1.67 MBytes  14.0 Mbits/sec

[  5]   4.00-5.00   sec  1.67 MBytes  14.0 Mbits/sec

[  5]   5.00-6.00   sec  1.46 MBytes  12.3 Mbits/sec

[  5]   6.00-7.00   sec  1.45 MBytes  12.2 Mbits/sec

[  5]   7.00-8.00   sec  1.59 MBytes  13.3 Mbits/sec

[  5]   8.00-9.00   sec  1.78 MBytes  14.9 Mbits/sec

[  5]   9.00-10.00  sec  1.32 MBytes  11.1 Mbits/sec

[  5]  10.00-11.00  sec  1.19 MBytes  9.95 Mbits/sec

[  5]  11.00-12.00  sec  1.12 MBytes  9.37 Mbits/sec

[  5]  12.00-13.00  sec  1.41 MBytes  11.9 Mbits/sec

[  5]  13.00-14.00  sec  1.60 MBytes  13.4 Mbits/sec

[  5]  14.00-15.00  sec  1.50 MBytes  12.6 Mbits/sec

[  5]  15.00-16.00  sec  1.71 MBytes  14.4 Mbits/sec

[  5]  16.00-17.00  sec  1.48 MBytes  12.4 Mbits/sec

[  5]  17.00-18.00  sec  1.47 MBytes  12.3 Mbits/sec

[  5]  18.00-19.00  sec  1.37 MBytes  11.5 Mbits/sec

[  5]  19.00-20.00  sec  1.50 MBytes  12.5 Mbits/sec

[  5]  20.00-20.11  sec   236 KBytes  17.6 Mbits/sec

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth

[  5]   0.00-20.11  sec  30.0 MBytes  12.5 Mbits/sec                  sender

[  5]   0.00-20.11  sec  30.0 MBytes  12.5 Mbits/sec                  receiver

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Client Output:

Connecting to host 192.168.1.102, port 5201

[  4] local 192.168.1.4 port 51220 connected to 192.168.1.102 port 5201

[ ID] Interval           Transfer     Bandwidth

[  4]   0.00-1.01   sec  1.56 MBytes  13.0 Mbits/sec

[  4]   1.01-2.02   sec  1.56 MBytes  13.0 Mbits/sec

[  4]   2.02-3.00   sec  1.56 MBytes  13.4 Mbits/sec

[  4]   3.00-4.01   sec  1.69 MBytes  14.0 Mbits/sec

[  4]   4.01-5.01   sec  1.69 MBytes  14.2 Mbits/sec

[  4]   5.01-6.00   sec  1.44 MBytes  12.2 Mbits/sec

[  4]   6.00-7.00   sec  1.37 MBytes  11.5 Mbits/sec

[  4]   7.00-8.01   sec  1.75 MBytes  14.5 Mbits/sec

[  4]   8.01-9.00   sec  1.62 MBytes  13.7 Mbits/sec

[  4]   9.00-10.00  sec  1.37 MBytes  11.6 Mbits/sec

[  4]  10.00-11.01  sec  1.12 MBytes  9.34 Mbits/sec

[  4]  11.01-12.00  sec  1.19 MBytes  10.1 Mbits/sec

[  4]  12.00-13.02  sec  1.44 MBytes  11.8 Mbits/sec

[  4]  13.02-14.01  sec  1.56 MBytes  13.2 Mbits/sec

[  4]  14.01-15.00  sec  1.50 MBytes  12.7 Mbits/sec

[  4]  15.00-16.01  sec  1.81 MBytes  15.1 Mbits/sec

[  4]  16.01-17.01  sec  1.37 MBytes  11.5 Mbits/sec

[  4]  17.01-18.00  sec  1.44 MBytes  12.2 Mbits/sec

[  4]  18.00-19.00  sec  1.31 MBytes  11.0 Mbits/sec

[  4]  19.00-20.00  sec  1.62 MBytes  13.6 Mbits/sec

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth

[  4]   0.00-20.00  sec  30.0 MBytes  12.6 Mbits/sec                  sender

[  4]   0.00-20.00  sec  30.0 MBytes  12.6 Mbits/sec                  receiver

iperf Done.

As we can see, after the 20sec [-t20] run, the server is still running but the client stopped.

Here is the throughput from this TCP traffic:

[  4]   0.00-20.00  sec  30.0 MBytes  12.6 Mbits/sec                  receiver

How to Run the UDP Traffic Using Iperf3

UDP Server:

Same command as TCP server.

UDP Client:

$ iperf3 -c 192.168.1.102 -i1 -t5 -u -b100M

Server Output:

Accepted connection from 192.168.1.4, port 51321

[  5] local 192.168.1.102 port 5201 connected to 192.168.1.4 port 54181

[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams

[  5]   0.00-1.00   sec  1.30 MBytes  10.9 Mbits/sec  313523.501 ms  0/167 (0%)

[  5]   1.00-2.00   sec  1.34 MBytes  11.3 Mbits/sec  16.624 ms  5/177 (2.8%)

[  5]   2.00-3.00   sec  1.99 MBytes  16.7 Mbits/sec  10.843 ms  0/255 (0%)

[  5]   3.00-4.00   sec   672 KBytes  5.50 Mbits/sec  3.955 ms  0/84 (0%)

[  5]   4.00-5.00   sec  1.98 MBytes  16.6 Mbits/sec  14.042 ms  8/261 (3.1%)

[  5]   5.00-5.68   sec   960 KBytes  11.6 Mbits/sec  3.389 ms  0/120 (0%)

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams

[  5]   0.00-5.68   sec  8.31 MBytes  12.3 Mbits/sec  3.389 ms  13/1064 (1.2%)

Client Output:

Connecting to host 192.168.1.102, port 5201

[  4] local 192.168.1.4 port 54181 connected to 192.168.1.102 port 5201

[ ID] Interval           Transfer     Bandwidth       Total Datagrams

[  4]   0.00-1.23   sec  1.38 MBytes  9.40 Mbits/sec  176

[  4]   1.23-2.00   sec  1.73 MBytes  18.7 Mbits/sec  221

[  4]   2.00-3.12   sec  1.65 MBytes  12.3 Mbits/sec  211

[  4]   3.12-4.01   sec  1.76 MBytes  16.6 Mbits/sec  225

[  4]   4.01-5.03   sec  1.80 MBytes  14.8 Mbits/sec  231

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams

[  4]   0.00-5.03   sec  8.31 MBytes  13.9 Mbits/sec  3.389 ms  13/1064 (1.2%)

[  4] Sent 1064 datagrams

Conclusion

Here, we learned some basic commands for iperf3. There are many advance options in iperf3. To know more on iperf3, we can use the “man iperf3” command and use it.

About the author

Bamdeb Ghosh

Bamdeb Ghosh is having hands-on experience in Wireless networking domain.He's an expert in Wireshark capture analysis on Wireless or Wired Networking along with knowledge of Android, Bluetooth, Linux commands and python. Follow his site: wifisharks.com