↓ Zum Hauptinhalt springen
  1. Lernen/
  2. Linux/

iperf3: Netzwerkgeschwindigkeit messen und testen

Patrick Adams
Autor
Patrick Adams
Linux-Administrator und IT-Specialist. Ich schreibe über Server, Self-Hosting und Open-Source-Software, praxisnah und selbst getestet. Mehr über mich →
Inhaltsverzeichnis
Läuft dein 10-Gbit-Netz wirklich mit 10 Gbit? Bremst das WLAN, das Kabel oder der Switch? Mit iperf3 misst du die tatsächliche Übertragungsrate zwischen zwei Rechnern, unabhängig von Festplatten, Browsern oder Internetanschluss.
Voraussetzungen: zwei Rechner im selben Netzwerk, die sich erreichen können, zum Beispiel ein Server und dein Laptop. Auf beiden wird iperf3 installiert. Einer arbeitet als Server, der andere als Client.

So funktioniert iperf3
#

iperf3 schickt für eine festgelegte Zeit so viele Daten wie möglich vom Client zum Server und misst, wie viel davon pro Sekunde ankommt. Die Daten werden im Arbeitsspeicher erzeugt und verworfen, Festplatten spielen also keine Rolle. Du misst damit nur das Netzwerk: Netzwerkkarten, Kabel, Switches, WLAN und Firewalls dazwischen.

Standardmäßig nutzt iperf3 den Port 5201.

iperf3 installieren
#

Debian und Ubuntu
#

sudo apt update && sudo apt install -y iperf3

Während der Installation fragt Debian, ob iperf3 automatisch als Dienst starten soll. Wähle Nein, wenn du es nur gelegentlich zum Testen brauchst. Ein dauerhaft offener Testserver ist unnötig.

Weitere Systeme
#

# Fedora, Rocky Linux, AlmaLinux
sudo dnf install -y iperf3

# Arch Linux
sudo pacman -S iperf3

# macOS mit Homebrew
brew install iperf3

Für Windows gibt es keine offiziellen Builds. Bewährt haben sich die Pakete von iperf.fr oder die Installation per winget install iperf3. Achte darauf, eine aktuelle Version zu nutzen.

Prüfen, welche Version installiert ist:

iperf3 --version

Der erste Test
#

Server starten
#

Auf dem ersten Rechner, zum Beispiel deinem Server:

iperf3 -s

Der Server wartet jetzt auf Verbindungen. Seine IP-Adresse findest du mit:

hostname -I

Client starten
#

Auf dem zweiten Rechner gibst du die IP des Servers an:

iperf3 -c 192.168.2.10

Nach zehn Sekunden erscheint das Ergebnis:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.09 GBytes   937 Mbits/sec                  receiver

Mit Strg+C beendest du den Server, wenn du fertig bist.

Die Ausgabe richtig lesen
#

  • Transfer: die gesamte übertragene Datenmenge
  • Bitrate: die Geschwindigkeit, auf die es ankommt. Wichtig ist die Zeile receiver, denn sie zeigt, was wirklich angekommen ist.
  • Retr: die Anzahl der Pakete, die erneut gesendet werden mussten. Bei einem gesunden Kabelnetz steht hier 0 oder ein kleiner Wert. Viele Wiederholungen deuten auf ein schlechtes Kabel, einen überlasteten Switch oder Störungen im WLAN hin.

Was ist ein gutes Ergebnis? Wegen des Protokoll-Overheads erreichst du nie ganz die Nennleistung:

VerbindungRealistisches Ergebnis
1 Gbit/s Ethernet930 bis 945 Mbit/s
2,5 Gbit/s Ethernet2,3 bis 2,37 Gbit/s
10 Gbit/s Ethernet9,2 bis 9,5 Gbit/s
WLANstark schwankend, oft 30 bis 60 % der angezeigten Verbindungsrate

Die wichtigsten Optionen
#

Upload und Download messen
#

Standardmäßig sendet der Client zum Server, du misst also den Upload des Clients. Mit -R dreht sich die Richtung um, und der Server sendet zum Client:

iperf3 -c 192.168.2.10 -R

Beide Richtungen gleichzeitig misst du mit:

iperf3 -c 192.168.2.10 --bidir

Gerade bei WLAN und Powerline lohnt sich das, denn dort sind Upload und Download oft sehr unterschiedlich schnell.

Länger testen
#

Zehn Sekunden reichen für einen ersten Eindruck. Für aussagekräftigere Werte, etwa bei WLAN, testest du länger:

iperf3 -c 192.168.2.10 -t 60

Mit -O 3 lässt iperf3 die ersten drei Sekunden aus der Wertung, weil TCP am Anfang erst auf Touren kommen muss:

iperf3 -c 192.168.2.10 -t 30 -O 3

Mehrere Verbindungen parallel
#

Eine einzelne Verbindung schafft bei schnellen Netzen ab 10 Gbit/s nicht immer die volle Leistung. Mit -P startest du mehrere parallele Datenströme:

iperf3 -c 192.168.2.10 -P 4

Am Ende zeigt die Zeile [SUM] die Gesamtgeschwindigkeit. Ist das Ergebnis mit -P 4 deutlich höher als ohne, ist nicht das Netzwerk der Engpass, sondern eine einzelne Verbindung oder ein CPU-Kern.

UDP testen
#

TCP regelt seine Geschwindigkeit selbst und wiederholt verlorene Pakete. UDP macht das nicht und eignet sich deshalb, um Paketverlust und Jitter zu messen, wichtig für Telefonie, Videokonferenzen und Gaming. Bei UDP gibst du die Zielrate mit -b vor:

iperf3 -c 192.168.2.10 -u -b 100M

In der Ausgabe interessieren dich zwei Spalten:

  • Jitter: Schwankung der Laufzeit. Unter 1 ms im Kabelnetz ist gut, für Telefonie sollte er unter 30 ms liegen.
  • Lost/Total: verlorene Pakete. Im Kabelnetz sollte hier 0 % stehen.

Steigere den Wert bei -b schrittweise, zum Beispiel 100M, 500M, 900M. Ab dem Punkt, an dem die Verluste stark steigen, ist die Leitung ausgelastet.

Weitere nützliche Optionen
#

OptionBedeutung
-p 5202anderen Port verwenden, auf Server und Client gleich setzen
-i 5Zwischenergebnis nur alle 5 Sekunden statt jede Sekunde
-4 / -6nur IPv4 oder nur IPv6 verwenden
-JAusgabe als JSON, praktisch für Skripte und Monitoring
--logfile test.logAusgabe in eine Datei schreiben
-1Server beendet sich nach einem einzigen Test (beim Server angeben)
-DServer im Hintergrund als Daemon starten

Firewall freigeben
#

Läuft auf dem Server eine Firewall, gibst du den Port für die Dauer des Tests frei. Mit UFW:

sudo ufw allow from 192.168.2.0/24 to any port 5201

Nach dem Test entfernst du die Regel wieder:

sudo ufw delete allow from 192.168.2.0/24 to any port 5201
Öffne Port 5201 nie dauerhaft ins Internet. Ein offener iperf3-Server kann von Fremden genutzt werden, um deine Leitung auszulasten.

iperf3 mit Docker
#

Möchtest du auf einem Server nichts installieren, startest du den iperf3-Server einfach als Container. Er läuft nur so lange, bis du ihn mit Strg+C beendest, und wird danach automatisch gelöscht:

docker run --rm -it -p 5201:5201 -p 5201:5201/udp networkstatic/iperf3 -s

Typische Anwendungsfälle
#

Netzwerkkabel prüfen: Liefert eine Verbindung statt rund 940 Mbit/s nur etwa 94 Mbit/s, läuft sie mit 100 Mbit/s. Das liegt fast immer an einem beschädigten Kabel oder Stecker, bei dem nur zwei der vier Adernpaare funktionieren. Prüfen kannst du die ausgehandelte Geschwindigkeit mit:

ethtool eth0 | grep Speed

Den Namen deiner Netzwerkkarte findest du mit ip link.

WLAN ausmessen: Starte den Server auf einem Rechner, der per Kabel angeschlossen ist, und teste vom Laptop aus an verschiedenen Orten in der Wohnung, jeweils mit -t 30 und -R. So siehst du schnell, wo das WLAN schwächelt.

Proxmox und VMs: Teste zwischen zwei VMs auf demselben Host und zwischen VM und einem anderen Rechner. Ist die Verbindung zwischen den VMs schnell, nach außen aber langsam, liegt es an der physischen Netzwerkkarte oder am Switch. Ist schon die Verbindung zwischen den VMs langsam, prüf, ob die VMs die Netzwerkkarte VirtIO verwenden.

Backup-Netz prüfen: Bevor du einen Proxmox Backup Server einrichtest, lohnt sich ein Test zwischen Proxmox-Host und Backup-Server. Dann weißt du, mit welcher Geschwindigkeit die Backups maximal laufen können.

Kurzübersicht
#

# Server starten
iperf3 -s

# Standardtest, Client sendet (Upload)
iperf3 -c IP-des-Servers

# Server sendet (Download)
iperf3 -c IP-des-Servers -R

# Beide Richtungen gleichzeitig
iperf3 -c IP-des-Servers --bidir

# 60 Sekunden mit 4 parallelen Verbindungen
iperf3 -c IP-des-Servers -t 60 -P 4

# UDP mit 100 Mbit/s, zeigt Jitter und Paketverlust
iperf3 -c IP-des-Servers -u -b 100M

Verwandte Artikel