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 --version
Grundlagen
Server starten
# Standard-Server (Port 5201)
iperf3 -s
# Mit spezifischem Port
iperf3 -s -p 5001
# Im Hintergrund
iperf3 -s -D
Client-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 30
TCP-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 receiver
Parallele Streams
# 4 parallele Verbindungen
iperf3 -c server -P 4
# 10 parallele Verbindungen
iperf3 -c server -P 10
Window-Größe
# TCP Window-Größe setzen
iperf3 -c server -w 256K
# Automatisch optimal
iperf3 -c server -w 0
Bidirektionaler Test
# Test in beide Richtungen
iperf3 -c server --bidir
# Oder sequenziell
iperf3 -c server -d
Reverse-Modus
# Server sendet, Client empfängt
iperf3 -c server -R
UDP-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 0
UDP-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 Header
Erweiterte 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 --forceflush
Verbindungsoptionen
# IPv6 erzwingen
iperf3 -c server -6
# Spezifisches Interface binden
iperf3 -c server -B 192.168.1.10
# TOS/DSCP setzen
iperf3 -c server -S 0x28
Datenmenge statt Zeit
# 1 GB übertragen
iperf3 -c server -n 1G
# 10 MB übertragen
iperf3 -c server -n 10M
Multi-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 Systeme
Server-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 --reload
Typische Szenarien
WAN-Link testen
# Mit höherer Latenz - mehr Streams nötig
iperf3 -c remote-server -P 4 -t 60 -w 512K
Jumbo Frames prüfen
# MTU 9000 testen
iperf3 -c server -u -l 8972 -b 10G
10 Gbit Verbindung
# Mehrere Streams für Line-Rate
iperf3 -c server -P 8 -t 60
Server-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 30
Troubleshooting
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üfen
CPU-Auslastung
# CPU-Affinity setzen
iperf3 -c server -A 0
# Server auf CPU 1
iperf3 -s -A 1
Benchmark-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.de
Zusammenfassung
| 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 |
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.