iperf3 ist das Standard-Tool für Netzwerk-Performance-Tests. Es misst TCP und UDP Durchsatz zwischen zwei Endpunkten und hilft bei der Diagnose von Bandbreiten-Problemen.
Installation
# Debian/Ubuntu
apt install iperf3
# RHEL/CentOS
dnf install iperf3
# Version prüfen
iperf3 --versionGrundlagen
Server starten
# Standard-Server (Port 5201)
iperf3 -s
# Mit spezifischem Port
iperf3 -s -p 5001
# Im Hintergrund
iperf3 -s -DClient-Test
# Basis-Test zum Server
iperf3 -c server.example.de
# Mit spezifischem Port
iperf3 -c server.example.de -p 5001
# Testdauer festlegen (Standard: 10s)
iperf3 -c server.example.de -t 30TCP-Tests
Basis-Test
# Einfacher TCP-Test
iperf3 -c server -t 30
# Ausgabe:
# [ ID] Interval Transfer Bandwidth Retr
# [ 5] 0.00-30.00 sec 2.74 GBytes 785 Mbits/sec 0 sender
# [ 5] 0.00-30.00 sec 2.74 GBytes 784 Mbits/sec receiverParallele Streams
# 4 parallele Verbindungen
iperf3 -c server -P 4
# 10 parallele Verbindungen
iperf3 -c server -P 10Window-Größe
# TCP Window-Größe setzen
iperf3 -c server -w 256K
# Automatisch optimal
iperf3 -c server -w 0Bidirektionaler Test
# Test in beide Richtungen
iperf3 -c server --bidir
# Oder sequenziell
iperf3 -c server -dReverse-Modus
# Server sendet, Client empfängt
iperf3 -c server -RUDP-Tests
Basis-UDP
# UDP-Test (Standard: 1 Mbit/s)
iperf3 -c server -u
# Mit spezifischer Bandbreite
iperf3 -c server -u -b 100M
# Maximale Bandbreite testen
iperf3 -c server -u -b 0UDP-Ausgabe
# Ausgabe:
# [ ID] Interval Transfer Bandwidth Jitter Lost/Total
# [ 5] 0.00-10.00 sec 119 MBytes 100 Mbits/sec 0.012 ms 0/85714 (0%)Paketgröße
# UDP-Paketgröße festlegen
iperf3 -c server -u -l 1400
# MTU-Größe testen
iperf3 -c server -u -l 1472 # 1500 MTU - IP/UDP HeaderErweiterte Optionen
Intervall und Ausgabe
# Intervall-Berichte (alle 2 Sekunden)
iperf3 -c server -i 2
# JSON-Ausgabe
iperf3 -c server -J > results.json
# Ohne Output während Test
iperf3 -c server --forceflushVerbindungsoptionen
# IPv6 erzwingen
iperf3 -c server -6
# Spezifisches Interface binden
iperf3 -c server -B 192.168.1.10
# TOS/DSCP setzen
iperf3 -c server -S 0x28Datenmenge statt Zeit
# 1 GB übertragen
iperf3 -c server -n 1G
# 10 MB übertragen
iperf3 -c server -n 10MMulti-Stream Tests
# Mehrere parallele Streams für maximalen Durchsatz
iperf3 -c server -P 8 -t 30
# Nützlich für:
# - 10 Gbit+ Verbindungen
# - Hohe Latenz-Links
# - Multi-Core SystemeServer-Optionen
# Server mit Logging
iperf3 -s --logfile /var/log/iperf3.log
# Server nur einmal ausführen
iperf3 -s -1
# Mehrere Clients erlauben
# (Standard: ein Client gleichzeitig)Firewall
# Port freigeben
# UFW
ufw allow 5201/tcp
ufw allow 5201/udp
# firewalld
firewall-cmd --permanent --add-port=5201/tcp
firewall-cmd --permanent --add-port=5201/udp
firewall-cmd --reloadTypische Szenarien
WAN-Link testen
# Mit höherer Latenz - mehr Streams nötig
iperf3 -c remote-server -P 4 -t 60 -w 512KJumbo Frames prüfen
# MTU 9000 testen
iperf3 -c server -u -l 8972 -b 10G10 Gbit Verbindung
# Mehrere Streams für Line-Rate
iperf3 -c server -P 8 -t 60Server-zu-Server im Rechenzentrum
# Kurze Latenz, hoher Durchsatz
iperf3 -c server -P 1 -t 30
# Bei nicht erreichtem Line-Rate
iperf3 -c server -P 4 -w 4M -t 30Troubleshooting
Häufige Probleme
# "Connection refused"
# → Server läuft nicht oder Firewall blockiert
# Niedrige Bandbreite
# → Mehr parallele Streams (-P)
# → Größeres Window (-w)
# → CPU-Last auf beiden Seiten prüfen
# Hoher Paketverlust bei UDP
# → Bandbreite reduzieren (-b)
# → Netzwerk-Queues prüfenCPU-Auslastung
# CPU-Affinity setzen
iperf3 -c server -A 0
# Server auf CPU 1
iperf3 -s -A 1Benchmark-Script
#!/bin/bash
# network-benchmark.sh
SERVER=$1
RESULTS="iperf-$(date +%Y%m%d-%H%M%S).txt"
echo "Network Benchmark to $SERVER" > $RESULTS
echo "================================" >> $RESULTS
echo "TCP Single Stream:" >> $RESULTS
iperf3 -c $SERVER -t 30 >> $RESULTS
echo -e "\nTCP 4 Streams:" >> $RESULTS
iperf3 -c $SERVER -P 4 -t 30 >> $RESULTS
echo -e "\nTCP Reverse:" >> $RESULTS
iperf3 -c $SERVER -R -t 30 >> $RESULTS
echo -e "\nUDP 100M:" >> $RESULTS
iperf3 -c $SERVER -u -b 100M -t 30 >> $RESULTS
echo "Results saved to $RESULTS"
cat $RESULTSÖffentliche Server
# Öffentliche iperf3-Server (für Internet-Speed)
iperf3 -c iperf.he.net
iperf3 -c bouygues.iperf.fr
iperf3 -c speedtest.wtnet.deZusammenfassung
| Option | Beschreibung | |--------|--------------| | -c | Client-Modus | | -s | Server-Modus | | -p | Port | | -t | Testdauer (Sekunden) | | -P | Parallele Streams | | -u | UDP-Modus | | -b | Bandbreite (UDP) | | -R | Reverse-Modus | | -w | Window-Größe | | -J | JSON-Ausgabe |
| Metrik | Bedeutung | |--------|-----------| | Bandwidth | Durchsatz | | Retr | TCP Retransmissions | | Jitter | UDP Latenz-Varianz | | Lost | Verlorene UDP-Pakete |
| Port | Standard | |------|----------| | 5201 | iperf3 |
Fazit
iperf3 ist unverzichtbar für Netzwerk-Diagnose. TCP-Tests messen echte Anwendungs-Bandbreite. UDP-Tests prüfen Paketverlust und Jitter. Parallele Streams sind wichtig für Hochgeschwindigkeits-Links. Regelmäßige Tests helfen, Performance-Probleme früh zu erkennen.