LAN / WiFi Speed Test: Test network speed with iPerf
To measure the speed in your own network, you can use the free command line tool "iPerf". Two devices are needed for the speed test. One to start the server mode, another to connect to the server in client mode. The output of the actual measured speed between the two devices appears on both the server and the client.
iPerf vs. iPerf3
IPerf is available in two different versions.
iPerf | iPerf usually means version 2 of iPerf. |
---|---|
iPerf3 | Today mainly the newer version iPerf3 is used. IPerf3 was programmed from scratch and is not backward compatible to iPerf2. |
Installation
Debian or Ubuntu installation
On Debian, iperf can be easily downloaded via the package manager:
iPerf2:
sudo apt install iperf
iPerf3:
sudo apt install iperf3
Windows installation
For Windows, iPerf can be downloaded from the following page: iPerf.fr/iPerf-download.php. After extracting the zip file, the .exe file can be launched from the command prompt.
Android
If you want to measure the net speed from a smartphone, you can use one of the numerous iPerf clients for Android. I briefly tested the app "PingTools Network Utilities" as iPerf3 client.
Speedtest
Server (here Linux)
For a speed test, I start iPerf on my NAS in server mode (parameter: -s).
user@server:$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Client (here Windows)
The speed test can now be performed from another device with iPerf in client mode (parameter -c). In order for the client to connect to the server, the IP address of the server must also be specified:
C:\Users\LiBe>"C:\temp\iperf-3.1.3-win64\iperf-3.1.3-win64\iperf3.exe" -c 192.168.1.5
Connecting to host 192.168.1.5, port 5201
[ 4] local 192.168.1.3 port 53240 connected to 192.168.1.5 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 94.1 MBytes 789 Mbits/sec
[ 4] 1.00-2.00 sec 94.9 MBytes 795 Mbits/sec
[ 4] 2.00-3.00 sec 95.5 MBytes 802 Mbits/sec
[ 4] 3.00-4.00 sec 97.1 MBytes 815 Mbits/sec
[ 4] 4.00-5.00 sec 93.1 MBytes 781 Mbits/sec
[ 4] 5.00-6.00 sec 94.6 MBytes 793 Mbits/sec
[ 4] 6.00-7.00 sec 95.1 MBytes 798 Mbits/sec
[ 4] 7.00-8.00 sec 95.6 MBytes 801 Mbits/sec
[ 4] 8.00-9.00 sec 94.9 MBytes 796 Mbits/sec
[ 4] 9.00-10.00 sec 94.4 MBytes 792 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 949 MBytes 796 Mbits/sec sender
[ 4] 0.00-10.00 sec 949 MBytes 796 Mbits/sec receiver
Client (Android)
In the "PingTools Network Utilities", an IP address of a computer with started iPerf3 in server mode can simply be specified in the iPerf menu.
Docker version
As an alternative to the iPerf installations described, a Docker container can also be started with iPerf:
Start Server:
docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s
Launch client:
docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -c 192.168.1.5
I used a Windows machine with Docker desktop as the client. The Windows 10 machine with WSL2 has significantly worse network performance than the downloaded iPerf3.exe file. On my Debian NAS, I could not see any difference between the Docker version and the iPerf installation. If I find out the reason for the poor performance with Docker Desktop and Windows, I will post an update here, or if anyone knows the answer, please feel free to post in the comments.
Conclusion
With iPerf it is possible to measure the actual speed in the network. Especially in WLAN or with Powerline adapters, the maximum speeds are far from being reached in practice. This is not the case with LAN cabling, where the maximum speed can be achieved at least approximately.
{{percentage}} % positive