iperf3 est l’outil standard pour mesurer le débit réseau entre deux extrémités sous Linux. Lorsque vous devez répondre à la question “à quelle vitesse cette liaison fonctionne-t-elle réellement ?” — que vous déboguiez des transferts lents, validiez un nouveau segment réseau ou benchmarkiez après une mise à niveau de switch — iperf3 vous fournit des chiffres précis de performance TCP et UDP en quelques secondes.
Ce guide couvre l’installation, les scénarios de test courants, les tests UDP, les flux parallèles et comment interpréter les résultats pour identifier les goulets d’étranglement réseau.
Prérequis
- Deux machines Linux connectées sur le réseau que vous souhaitez tester
- iperf3 installé sur les deux extrémités
- Port 5201/TCP ouvert entre les machines (ou port personnalisé avec
-p) - Accès root ou sudo pour l’installation
Installation d’iperf3
Sur Debian/Ubuntu :
sudo apt update && sudo apt install -y iperf3
Sur RHEL/Fedora/AlmaLinux :
sudo dnf install -y iperf3
Sur Alpine :
sudo apk add iperf3
Vérifiez l’installation :
iperf3 --version
iperf3 vs Autres Outils de Test Réseau
Avant d’exécuter les tests, comprenez ce que mesure iperf3 et quand utiliser des alternatives :
| Outil | Mesure | Optimal Pour |
|---|---|---|
| iperf3 | Débit (bande passante) | Vitesse max entre deux points |
| ping | Latence (RTT) | Connectivité basique, temps de réponse |
| mtr | Latence par saut | Analyse de chemin, trouver les sauts lents |
| tcpdump | Capture de paquets | Analyse protocolaire approfondie |
| netperf | Débit + latence | Benchmarks requête-réponse |
| ethtool | Vitesse/paramètres de liaison | Vérification interface physique |
iperf3 répond à “combien de données puis-je faire passer dans cette liaison ?” — ce n’est pas un outil de latence. Utilisez-le avec ping/mtr pour une image complète.
Exécuter Votre Premier Test de Bande Passante TCP
Chaque test iperf3 nécessite deux machines : un serveur (écouteur) et un client (émetteur).
Démarrer le Serveur
Sur la Machine A (par exemple, 10.0.0.10) :
iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Le serveur écoute sur le port 5201 par défaut et accepte un client à la fois.
Exécuter le Client
Sur la Machine 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
Lire la Sortie
| Colonne | Signification |
|---|---|
| Transfer | Données totales transférées par intervalle |
| Bitrate | Débit en Mbits/sec ou Gbits/sec |
| Retr | Retransmissions TCP (indicateur de perte de paquets) |
| Cwnd | Taille de la fenêtre de congestion TCP |
Dans cet exemple, une liaison 1 Gbps affiche 940 Mbits/sec — soit 94% d’efficacité, ce qui est normal. Les en-têtes TCP, l’encapsulation Ethernet et les surcoûts protocolaires consomment les 6% restants.
Piège : Si vous voyez des chiffres significativement inférieurs (par exemple, 100 Mbits sur une liaison 1 Gbps), vérifiez la vitesse physique de la liaison avec
ethtool eth0 | grep Speed— les échecs d’auto-négociation sont un coupable courant.
Tester les Performances UDP
Les tests UDP révèlent le jitter et la perte de paquets — des métriques critiques pour VoIP, streaming vidéo et applications temps réel.
iperf3 -c 10.0.0.10 -u -b 500M
Le flag -b est requis pour UDP car contrairement à TCP, UDP n’a pas de contrôle de congestion intégré et enverra au débit que vous spécifiez.
[ 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
| Métrique | Plage Acceptable | Seuil Problématique |
|---|---|---|
| Jitter | < 1 ms | > 5 ms (dégradation VoIP) |
| Perte de paquets | < 0.1% | > 1% (perte de qualité notable) |
Scénario réel : Vous avez un système VoIP avec des plaintes de qualité d’appel. Exécutez un test UDP au débit du codec (par exemple,
-b 100Kpour G.711) entre le serveur téléphonique et le segment réseau. Si le jitter dépasse 5 ms ou la perte dépasse 1%, le problème est côté réseau, pas côté application.
Scénarios de Test Avancés
Flux Parallèles
Un seul flux TCP peut ne pas saturer une liaison haut débit en raison des limites de fenêtre de congestion. Utilisez des flux parallèles :
iperf3 -c 10.0.0.10 -P 4
Cela crée 4 connexions TCP parallèles. Le résumé affiche la bande passante par flux et agrégée. Sur des liaisons 10 Gbps, vous aurez souvent besoin de 4 à 8 flux parallèles pour atteindre le débit complet.
Mode Inverse (Serveur Envoie au Client)
Testez la direction opposée sans changer les rôles :
iperf3 -c 10.0.0.10 -R
Le flag -R indique au serveur d’envoyer des données au client. Utile pour tester les liaisons asymétriques ou lorsque vous ne pouvez pas exécuter le client aux deux extrémités.
Durée et Intervalle de Test Personnalisés
iperf3 -c 10.0.0.10 -t 60 -i 5
-t 60— exécuter pendant 60 secondes au lieu des 10 par défaut-i 5— rapporter toutes les 5 secondes au lieu de chaque seconde
Les tests plus longs sont essentiels pour détecter les problèmes intermittents comme les microrafales ou la congestion périodique.
Définir la Taille de Fenêtre TCP
iperf3 -c 10.0.0.10 -w 256K
La taille de fenêtre TCP limite la quantité de données pouvant être en transit avant d’attendre un accusé de réception. Pour les liaisons à haute latence (WAN, VPN), augmenter la taille de fenêtre peut améliorer dramatiquement le débit :
Bandwidth-Delay Product (BDP) : Fenêtre requise = Bande passante × RTT
Pour une liaison 1 Gbps avec 20 ms RTT : 1 000 000 000 × 0,020 / 8 = 2,5 MB
iperf3 -c 10.0.0.10 -w 2500K
Sortie JSON pour Scripts
iperf3 -c 10.0.0.10 -J > result.json
Analyser avec jq :
jq '.end.sum_sent.bits_per_second / 1000000' result.json
Cela affiche la bande passante en Mbits/sec — parfait pour les scripts de surveillance et l’analyse de tendances.
Port Personnalisé
Si le port 5201 est bloqué :
# Serveur
iperf3 -s -p 9999
# Client
iperf3 -c 10.0.0.10 -p 9999
Exécuter iperf3 comme Service Persistant
Pour des tests continus, exécutez le serveur comme un service systemd :
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
Note de sécurité : iperf3 n’a pas d’authentification. Ne l’exposez que sur des réseaux de confiance. Utilisez des règles de pare-feu pour restreindre l’accès par IP source.
Résolution de Problèmes lors des Tests de Performance Réseau iperf3
“iperf3: error - unable to connect to server” : Le serveur n’écoute pas ou un pare-feu bloque le port 5201. Vérifiez avec ss -tlnp | grep 5201 sur le serveur et vérifiez que les règles de pare-feu autorisent le port.
“iperf3: error - the server is busy” : iperf3 ne gère qu’un client à la fois. Attendez la fin du test en cours, ou exécutez plusieurs instances de serveur sur différents ports : iperf3 -s -p 5202.
Résultats extrêmement incohérents entre les exécutions : D’autres trafics sont en concurrence pour la bande passante. Exécutez les tests pendant les fenêtres de maintenance, ou utilisez -t 60 pour des moyennes plus longues. Vérifiez également la saturation CPU — iperf3 est mono-thread, et un CPU lent peut être le goulet d’étranglement avant le réseau.
Le débit chute après quelques secondes : Probablement un bufferbloat TCP ou un débordement de tampon de switch. Surveillez la colonne Retr (retransmissions) — des retransmissions croissantes signifient que des paquets sont perdus. Réduisez les flux parallèles ou vérifiez les paramètres QoS du switch.
Débit quasi nul : Vérifiez les incompatibilités MTU. Si un côté a un MTU 9000 (jumbo frames) et l’autre 1500, les paquets sont fragmentés ou perdus. Vérifiez avec ip link show eth0 | grep mtu.
Résumé
- iperf3 mesure le débit TCP et UDP entre deux extrémités — installez-le des deux côtés, exécutez
-ssur l’un et-csur l’autre - Les tests TCP affichent la bande passante, les retransmissions et la fenêtre de congestion ; les tests UDP ajoutent les métriques de jitter et de perte de paquets
- Utilisez
-P 4flux parallèles pour saturer les liaisons haut débit et-Rpour les tests en direction inverse - Pour les liaisons à haute latence (WAN/VPN), calculez le bandwidth-delay product et définissez la taille de fenêtre avec
-w - Les tests UDP avec
-u -bsont essentiels pour l’évaluation de qualité VoIP et streaming — surveillez le jitter et la perte - La sortie JSON (
-J) permet la surveillance scriptée et l’analyse de tendances - Exécutez iperf3 comme service systemd pour une disponibilité persistante sur les points de test
- Vérifiez toujours la vitesse physique de liaison avec
ethtoolet les règles de pare-feu avant d’accuser le réseau
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