iperf3 ist das Standardwerkzeug zur Messung des Netzwerkdurchsatzes zwischen zwei Endpunkten unter Linux. Wenn Sie die Frage beantworten müssen „Wie schnell arbeitet diese Verbindung tatsächlich?” — ob Sie langsame Transfers troubleshooten, ein neues Netzwerksegment validieren oder nach einem Switch-Upgrade benchmarken — liefert Ihnen iperf3 präzise TCP- und UDP-Performance-Zahlen in Sekunden.

Dieser Leitfaden behandelt Installation, gängige Testszenarien, UDP-Tests, parallele Streams und wie Sie Ergebnisse interpretieren, um Netzwerk-Engpässe zu lokalisieren.

Voraussetzungen

  • Zwei Linux-Maschinen, die über das Netzwerk verbunden sind, das Sie testen möchten
  • iperf3 auf beiden Endpunkten installiert
  • Port 5201/TCP zwischen den Maschinen offen (oder Custom-Port mit -p)
  • Root- oder sudo-Zugriff für die Installation

iperf3 installieren

Unter Debian/Ubuntu:

sudo apt update && sudo apt install -y iperf3

Unter RHEL/Fedora/AlmaLinux:

sudo dnf install -y iperf3

Unter Alpine:

sudo apk add iperf3

Installation überprüfen:

iperf3 --version

iperf3 vs. andere Netzwerk-Test-Tools

Bevor Sie Tests durchführen, verstehen Sie, was iperf3 misst und wann Sie Alternativen nutzen sollten:

ToolMisstAm besten für
iperf3Throughput (Bandbreite)Maximale Geschwindigkeit zwischen zwei Punkten
pingLatenz (RTT)Basis-Konnektivität, Antwortzeit
mtrLatenz pro HopPfad-Analyse, Finden langsamer Hops
tcpdumpPaket-CaptureTiefe Protokoll-Analyse
netperfThroughput + LatenzRequest-Response-Benchmarks
ethtoolLink-Geschwindigkeit/EinstellungenPhysische Interface-Verifizierung

iperf3 beantwortet die Frage „Wie viel Daten kann ich durch diese Verbindung schieben?” — es ist kein Latenz-Tool. Nutzen Sie es zusammen mit ping/mtr für ein vollständiges Bild.

Ihren ersten TCP-Bandbreiten-Test durchführen

Jeder iperf3-Test benötigt zwei Maschinen: einen Server (Listener) und einen Client (Sender).

Den Server starten

Auf Maschine A (z. B. 10.0.0.10):

iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------

Der Server lauscht standardmäßig auf Port 5201 und akzeptiert jeweils einen Client.

Den Client ausführen

Auf Maschine B:

iperf3 -c 10.0.0.10
Connecting to host 10.0.0.10, port 5201
[  5] local 10.0.0.20 port 43218 connected to 10.0.0.10 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   112 MBytes   941 Mbits/sec    0    378 KBytes
[  5]   1.00-2.00   sec   112 MBytes   940 Mbits/sec    0    378 KBytes
[  5]   2.00-3.00   sec   112 MBytes   940 Mbits/sec    0    378 KBytes
...
[  5]   9.00-10.00  sec   112 MBytes   941 Mbits/sec    0    378 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec    0             sender
[  5]   0.00-10.04  sec  1.09 GBytes   936 Mbits/sec                  receiver

Die Ausgabe lesen

SpalteBedeutung
TransferÜbertragene Gesamtdaten pro Intervall
BitrateDurchsatz in Mbits/sec oder Gbits/sec
RetrTCP-Retransmits (Indikator für Paketverlust)
CwndTCP Congestion Window Size

In diesem Beispiel zeigt ein 1-Gbps-Link 940 Mbits/sec — das sind 94 % Effizienz, was normal ist. TCP-Header, Ethernet-Framing und Protokoll-Overhead verbrauchen die restlichen 6 %.

Achtung: Wenn Sie deutlich niedrigere Werte sehen (z. B. 100 Mbits auf einem 1-Gbps-Link), prüfen Sie die physische Link-Geschwindigkeit mit ethtool eth0 | grep Speed — Auto-Negotiation-Fehler sind ein häufiger Übeltäter.

UDP-Performance testen

UDP-Tests zeigen Jitter und Paketverlust — kritische Metriken für VoIP, Video-Streaming und Echtzeit-Anwendungen.

iperf3 -c 10.0.0.10 -u -b 500M

Das -b-Flag ist für UDP erforderlich, da UDP im Gegensatz zu TCP keine integrierte Congestion Control hat und mit der von Ihnen angegebenen Rate sendet.

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec  59.6 MBytes   500 Mbits/sec  0.018 ms  0/43200 (0%)
[  5]   1.00-2.00   sec  59.6 MBytes   500 Mbits/sec  0.021 ms  3/43198 (0.0069%)
...
[  5]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.019 ms  12/432000 (0.0028%)  receiver
MetrikAkzeptabler BereichProblem-Schwelle
Jitter< 1 ms> 5 ms (VoIP verschlechtert sich)
Paketverlust< 0,1 %> 1 % (spürbarer Qualitätsverlust)

Reales Szenario: Sie haben ein VoIP-System mit Beschwerden über Anrufqualität. Führen Sie einen UDP-Test mit der Codec-Bitrate durch (z. B. -b 100K für G.711) zwischen dem Telefon-Server und dem Netzwerksegment. Wenn der Jitter 5 ms übersteigt oder der Verlust 1 % überschreitet, liegt das Problem auf Netzwerk-Seite, nicht auf Anwendungs-Seite.

Erweiterte Testszenarien

Parallele Streams

Ein einzelner TCP-Stream kann einen Hochbandbreiten-Link aufgrund von Congestion-Window-Limits möglicherweise nicht sättigen. Nutzen Sie parallele Streams:

iperf3 -c 10.0.0.10 -P 4

Dies erstellt 4 parallele TCP-Verbindungen. Die Zusammenfassung zeigt die Bandbreite pro Stream und aggregiert. Bei 10-Gbps-Links benötigen Sie oft 4-8 parallele Streams, um den vollen Durchsatz zu erreichen.

Reverse-Modus (Server sendet an Client)

Testen Sie die entgegengesetzte Richtung, ohne die Rollen zu tauschen:

iperf3 -c 10.0.0.10 -R

Das -R-Flag weist den Server an, Daten an den Client zu senden. Nützlich für das Testen asymmetrischer Links oder wenn Sie den Client nicht auf beiden Seiten ausführen können.

Benutzerdefinierte Testdauer und Intervall

iperf3 -c 10.0.0.10 -t 60 -i 5
  • -t 60 — 60 Sekunden laufen lassen statt der standardmäßigen 10
  • -i 5 — alle 5 Sekunden berichten statt jede Sekunde

Längere Tests sind essentiell für das Erkennen intermittierender Probleme wie Microbursts oder periodischer Überlastung.

TCP-Window-Size setzen

iperf3 -c 10.0.0.10 -w 256K

Die TCP-Window-Size begrenzt, wie viele Daten im Flug sein können, bevor auf eine Bestätigung gewartet wird. Für Hochlatenz-Links (WAN, VPN) kann eine Erhöhung der Window-Size den Durchsatz dramatisch verbessern:

Bandwidth-Delay Product (BDP): Erforderliches Fenster = Bandbreite × RTT

Für einen 1-Gbps-Link mit 20 ms RTT: 1.000.000.000 × 0,020 / 8 = 2,5 MB

iperf3 -c 10.0.0.10 -w 2500K

JSON-Ausgabe für Scripting

iperf3 -c 10.0.0.10 -J > result.json

Mit jq parsen:

jq '.end.sum_sent.bits_per_second / 1000000' result.json

Dies gibt die Bandbreite in Mbits/sec aus — perfekt für Monitoring-Skripte und Trend-Analysen.

Custom-Port

Wenn Port 5201 blockiert ist:

# Server
iperf3 -s -p 9999

# Client
iperf3 -c 10.0.0.10 -p 9999

iperf3 als persistenten Service ausführen

Für fortlaufende Tests führen Sie den Server als systemd-Service aus:

sudo tee /etc/systemd/system/iperf3.service > /dev/null << 'EOF'
[Unit]
Description=iperf3 Network Performance Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/iperf3 -s
Restart=on-failure
User=nobody

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now iperf3.service

Sicherheitshinweis: iperf3 hat keine Authentifizierung. Exponieren Sie es nur in vertrauenswürdigen Netzwerken. Nutzen Sie Firewall-Regeln, um den Zugriff auf Quell-IPs zu beschränken.

Fehlerbehebung bei iperf3-Netzwerk-Performance-Tests

“iperf3: error - unable to connect to server”: Der Server lauscht nicht oder eine Firewall blockiert Port 5201. Prüfen Sie mit ss -tlnp | grep 5201 auf dem Server und verifizieren Sie, dass Firewall-Regeln den Port erlauben.

“iperf3: error - the server is busy”: iperf3 behandelt nur einen Client gleichzeitig. Warten Sie, bis der aktuelle Test beendet ist, oder führen Sie mehrere Server-Instanzen auf verschiedenen Ports aus: iperf3 -s -p 5202.

Völlig inkonsistente Ergebnisse zwischen Durchläufen: Anderer Traffic konkurriert um Bandbreite. Führen Sie Tests während Wartungsfenstern durch oder nutzen Sie -t 60 für längere Durchschnitte. Prüfen Sie auch auf CPU-Sättigung — iperf3 ist Single-Threaded, und eine langsame CPU kann vor dem Netzwerk zum Engpass werden.

Durchsatz fällt nach einigen Sekunden: Wahrscheinlich TCP-Buffer-Bloat oder Switch-Buffer-Overflow. Beobachten Sie die Retr-Spalte (Retransmit) — steigende Retransmits bedeuten, dass Pakete gedroppt werden. Reduzieren Sie parallele Streams oder prüfen Sie Switch-QoS-Einstellungen.

Nahezu null Durchsatz: Prüfen Sie MTU-Mismatches. Wenn eine Seite MTU 9000 (Jumbo-Frames) hat und die andere 1500, werden Pakete fragmentiert oder gedroppt. Verifizieren Sie mit ip link show eth0 | grep mtu.

Zusammenfassung

  • iperf3 misst TCP- und UDP-Durchsatz zwischen zwei Endpunkten — installieren Sie es auf beiden Seiten, führen Sie -s auf einer und -c auf der anderen aus
  • TCP-Tests zeigen Bandbreite, Retransmits und Congestion Window; UDP-Tests fügen Jitter- und Paketverlust-Metriken hinzu
  • Nutzen Sie -P 4 parallele Streams, um Hochbandbreiten-Links zu sättigen, und -R für Reverse-Direction-Tests
  • Für Hochlatenz-Links (WAN/VPN) berechnen Sie das Bandwidth-Delay-Product und setzen Sie die Window-Size mit -w
  • UDP-Tests mit -u -b sind essentiell für VoIP- und Streaming-Qualitätsbewertung — beachten Sie Jitter und Verlust
  • JSON-Ausgabe (-J) ermöglicht geskriptetes Monitoring und Trend-Analysen
  • Führen Sie iperf3 als systemd-Service für persistente Verfügbarkeit auf Test-Endpunkten aus
  • Prüfen Sie immer die physische Link-Geschwindigkeit mit ethtool und Firewall-Regeln, bevor Sie dem Netzwerk die Schuld geben

tcpdump: Capture and Analyze Network Traffic on Linux | nftables: The Modern Linux Firewall Replacing iptables | Configure UFW Firewall on Ubuntu Server | Private Network Segments - Understanding RFC 1918