Iperf est un outil de calcul de bande passante en ligne de commande, disponible sous Windows et Linux (entre autres).
On doit l'installer aux 2 bouts du lien à tester, souvent sur 2 machines donc ; l'une va jouer le rôle de serveur et l'autre de client. Le serveur ne se termine qu'en recevant un signal (ctrl + c
) ; le client se lance, exécute le test, puis se termine tout seul. Les flux sont par défaut dans le sens client → serveur.
On lance le serveur (IP=10.0.0.1) :
iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
On lance le test coté client pour une simulation de 30 secondes, avec un intervalle verbeux (affichage du débit) de 3 secondes :
iperf -c 10.0.0.1 -t 30 -i 3 ------------------------------------------------------------ Client connecting to 10.0.0.1, TCP port 5001 TCP window size: 49.4 KByte (default) ------------------------------------------------------------ [ 3] local 10.0.0.2 port 4668 connected with 10.0.0.1 port 5001 [ 3] 0.0- 3.0 sec 657 MBytes 1.84 Gbits/sec [ 3] 3.0- 6.0 sec 694 MBytes 1.94 Gbits/sec [ 3] 6.0- 9.0 sec 692 MBytes 1.94 Gbits/sec [ 3] 9.0-12.0 sec 672 MBytes 1.88 Gbits/sec [ 3] 12.0-15.0 sec 672 MBytes 1.88 Gbits/sec [ 3] 15.0-18.0 sec 692 MBytes 1.94 Gbits/sec [ 3] 18.0-21.0 sec 673 MBytes 1.88 Gbits/sec [ 3] 21.0-24.0 sec 673 MBytes 1.88 Gbits/sec [ 3] 24.0-27.0 sec 695 MBytes 1.94 Gbits/sec [ 3] 0.0-30.0 sec 6.66 GBytes 1.91 Gbits/sec
(bon là, c'est un peu triché puisque les résultats proviennent d'un test local, sur la loopback :] )
Il existe diverses options consultables dans le man
, notamment :
-p <port>
: port sur lequel se connecter (client) ou écouter (serveur)-d
dual test permet de faire des tests bidirectionnels simultanément-r
similaire à -d
mais teste les 2 sens l'un après l'autre (non simultanément)-u
utilise des datagrammes UDP au lieu de paquets TCP-P <nb>
permet de lancer plusieurs (nb) transferts en parallèle-B <address>
bind permet de binder une interface ou une adresse multicast (implique d'utiliser l'option -u
)-w <taille>
défini la taille de la fenêtre TCP (la taille réelle est multipliée par 2)-M <taille>
défini la taille du MSS (Maximum Segment Size = MTU - 40 bytes)-m
permet d'afficher la MTU à la fin du transfert-f <format>
spécifie le format des mesures ; peut être k, m, K et M pour des Kbits, Mbits, KBytes et MBytes