IPerf - Netzwerkbandbreite messen

Aus Laub-Home Wiki

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