IPerf - Netzwerkbandbreite messen
iPerf ist ein Tool mit dem man den Netzwerkdurchsatz messen kann. Egal ob LAN, WLAN oder gar WAN Strecken, mit diesem Tool kann man die Bandbreite aller IP basierten Netzwerke testen. Hierbei gibt es die Auswahl den TCP oder UDP Traffic zu messen. Es kursieren 2 Versionen von iPerf, iperf
(Version 2) und iperf3
(Version 3)
Szenarien
Es gibt einige Einsatzsszenarien für iPerf, das meist verbreitete momentan ist sicherlich das testen von Wifi Verbindungen. So kann man zum Beispiel per Gigabit Kabel einen Raspberry Pi direkt an den Router anschließen und dann zum Beispiel mit dem Smartphone oder Laptop, welches via WLAn verbunden ist, prüfen, wie hoch die Datenrate zum Raspberry Pi (Server) zustande kommt. So kann man auch schauen, ob an eurem Office Standort zu Hause genug Bandbreite zur Verfügung steht. Man kann aber auch zum Beispiel die Bandbreite zu einem im Internet stehenden Server testen.
Installation
iPerf existiert für fast jede Plattform, so lässt es sich gut einsetzen auch OS übergreifend einen Netzwerktest auszuführen.
Windows
Für Windows laden wir uns als erstes das passende Binary File herunter:
dann kann man einfach die EXE mit den richtigen Parametern starten:
cd PATHtoIPERF
iperf3.exe --help
Debian/Ubuntu Linux
einfach via Paket Manager installieren
apt update && apt install iperf3 -y
MacOS
Auf einem Mac mit dem Apple Silicon Prozessor, müsst ihr iperf
mittels brew installieren, auf einem Intel Mac könnt ihr das aber auch tun. Habt ihr noch kein brew Paktemanager installiert, schaut einfach auf https://brew.sh/ vorbei.
brew install iperf3
für die Intel Macs, kann man das Binary File einfach herunterladen und zum Beispiel aus dem Download Ordner direkt starten:
cd ~/Downloads
iperf3 -s
Docker
Man kann auch einen Docker Container nutzen, in dessen Image iperf3
installiert ist. Beim Start des Servers muss man den Port 5201 publizieren.
# Starten und Parameter ausgeben:
docker run -it --rm -p 5201:5201 networkstatic/iperf3 --help
# Als Server Starten:
docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s
# Als Client Starten:
docker run -it --rm networkstatic/iperf3 -c <servername/serverip>
iOS
Unter iOS kann man einfach die iPerf App installieren und starten.
FRITZ!Box
Dafür müsst ihr einfach den Eingebauten iPerf Server aktivieren. Dafür geht ihr in die FRITZ!Box Support Einstellungen unter der folgenden URL:
Dann seht ihr den folgenden Abschnitt, in dem ihr den iPerf Server aktivieren könnt.:
Aber Achtung, hier wird kein iPerf3 Server gestartet und ist somit nicht kompatibel zu iPerf3. Ihr müsst also zum testen zum Beispiel unter Debian das iperf Paket anstelle von iperf3 installieren und nutzen:
apt install iperf
iperf -c fritz.box -p 4711
MicroPython
Um mittels MicroPython zum Beispiel auf einem Raspberry Pi Pico iPerf zu nutzen, müsst ihr erstmal den Pico mit MicroPython vorbereiten. Dann könnt ihr folgende Befehle im REPL ausführen, oder euch ein Script schreiben, welches zum Beispiel einen iPerf Server startet. Wir verwenden hierfür die Library uiperf3.
Als erstes müsst ihr den Pico mit eurem WLAN verbinden. Dan könnt ihr die Library auf den Pico laden und starten:
# Install uiperf3
import upip
upip.install("uiperf3")
# Starting client to iperf3 server connection
import uiperf3
uiperf3.client('<SERVERIP>')
# Starting iperf3 server
import uiperf3
uiperf3.server()
Ein passendes MicroPython Script (iperf.py
) findet ihr hier:
Synolgy NAS - DSM
Wenn ihr iperf3
auf dem Synology NAS benötigt, dann einfach aus der Synology Community das Paket "SynoCli Monitor Tools" installieren, dann via SSH auf das NAS verbinden und ganz normal den iperf3
Befehl verwenden.
Messen mit iPerf
Um mit iPerf eine Messung durchzuführen, muss immer ein Endpunkt iPerf als Server gestartet haben, dies funktioniert auf der Kommandozeile mittels folgendem Befehl:
iperf3 -s
damit wird ein simpler iperf3 server gestartet, an den man sich nun als Client verbinden kann. Hier ein paar Beispiel Befehle wie man nun die Bandbreite testen kann:
# einfacher TCP Durchsatztest
iperf3 -c <servername/serverip>
# einfacher UDP Durchsatztest
iperf3 -c <servername/serverip> -u
# umgekehrter Test (server sendet, client empfängt)
iperf3 -c <servername/serverip> -R
# Test mit 4 paralellen Verbindungen
iperf3 -c <servername/serverip> -P4
# Test mit 4 paralellen Verbindung für 30 Sekunden
iperf3 -c <servername/serverip> -P4 -t 30
Die Ausgabe sieht dann in etwa so aus.
Connecting to host laub-raspi4, port 5201 [ 7] local 192.168.50.178 port 51772 connected to 192.168.50.25 port 5201 [ ID] Interval Transfer Bitrate [ 7] 0.00-1.00 sec 54.0 MBytes 453 Mbits/sec [ 7] 1.00-2.00 sec 53.1 MBytes 445 Mbits/sec [ 7] 2.00-3.00 sec 53.7 MBytes 450 Mbits/sec [ 7] 3.00-4.00 sec 52.2 MBytes 438 Mbits/sec [ 7] 4.00-5.00 sec 51.7 MBytes 433 Mbits/sec [ 7] 5.00-6.00 sec 52.3 MBytes 439 Mbits/sec [ 7] 6.00-7.00 sec 53.2 MBytes 446 Mbits/sec [ 7] 7.00-8.00 sec 54.2 MBytes 455 Mbits/sec [ 7] 8.00-9.00 sec 50.9 MBytes 427 Mbits/sec [ 7] 9.00-10.00 sec 52.0 MBytes 436 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 7] 0.00-10.00 sec 527 MBytes 442 Mbits/sec sender [ 7] 0.00-10.03 sec 525 MBytes 439 Mbits/sec receiver iperf Done.
Alle verfügbaren Parameter bekommt ihr mit
iperf3 --help
Quellen