iPerf – Commandes utiles

Exemple pour mesurer la bande passante disponible entre S et C

Attention, cette méthode mesure la bande passante au moment du test. Ce dernier dure par défaut 10 secondes et utilise le protocole TCP sur le port 5001.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec

Exemple pour générer un débit réseau entre C et S

On génère ici un flux en utilisant le protocole UDP et en fixant la bande passante à 1 Megabits par seconde. Le test dure par défaut 10 secondes.

Il est possible de choisir l’unité de mesure de débit avec l’option -b et en collant les lettres suivantes aux débits:

  • b: bits par seconde
  • k: kilobits par seconde
  • m: megabits par seconde
  • g: gigabits parseconde

pour un débit en octets par seconde, il faut utiliser ces lettres en majuscule)

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-10.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 3403 (0%)


Exemple pour générer un débit réseau entre C et S pendant 10 heures

Il peut être utile de générer un flux réseau plus long pour tester par exemple une liaison Internet pendant les heures d’utilisation. Nous allons donc utiliser l’option -t pour fixer la durée du test précédent à 10 heures (10*3600=36000 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 36000

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Il est également possible d’ajouter l’option -i 3600 pour avoir un rapport intermédiaire toutes les heures (1*3600=3600 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 3600

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-3600.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)

[ 5] 3600.0-7200.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)…

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Exemple pour générer 2 flux réseau entre S et C

Il est parfois utile de générer plusieurs flux UDP simultanément pour simuler une application. IPerf permet cela grâce à l’option -P et en donnant le nombre de flux à générer. L’exemple suivant génère 4 flux TCP entre S et C (simulation d’un serveur Web par exemple).

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -P 4

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64978

[ 7] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64979

[ 8] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64980

[ 9] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64981

[ 7] 0.0-10.0 sec 28.0 MBytes 23.5 Mbits/sec
[ 8] 0.0-10.0 sec 28.0 MBytes 23.4 Mbits/sec
[ 9] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[ 6] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[SUM] 0.0-10.0 sec 112 MBytes 93.8 Mbits/sec

Exemple pour optimiser une connexion TCP entre S et C

Le protocole TCP, bien que capable pour s’adapter aux réseaux large bande, a été conçu lorsque les débits étaient beaucoup moins important. Les valeurs par défaut des fenêtres TCP (taille des paquets envoyé dans des trames TCP) ne sont pas forcement adapté aux réseaux actuels. IPerf permet de jouer avec la taille de ces fenêtres avec l’option -w. L’exemple suivant génère un flux TCP avec une taille de fenêtre de 130 kilo octets.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -w 128k

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 128 KByte (WARNING: requested 130 KByte)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec

Exemple pour découvrir la taille du MTU entre S et C

Le MTU est la taille maximale du paquet pouvant être transmis sur la couche réseau sans être segmenté. La découverte de cette valeur peut être utile à l’optimisation de votre réseau et des applications qui tourne dessus. IPerf permet d’obtenir cette valeur grâce à l’option -m (à lancer sur le serveur).

Sur la machine S: # iperf -s -m

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)

Exemple pour tester un flux de type VoIP entre C et S

Les paquets de type voix sur IP on les caractéristiques suivantes: protocole UDp et taille des paquets petites (bien inférieure au MTU). Le meilleur moyen de tester un flux de type VoIP avec IPerf est d’utiliser les options -l (taille du datagram) et -w (taille maximale du buffer recevant les datagras) en fixant une valeur de datagram inférieure à celle du buffer.

Sur la machine S: # iperf -s -u -l 32 -w 128k -i 1

Sur la machine C: # iperf -c IPS -u -b 1m -l 32 -w 128k

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 32 byte datagrams

UDP buffer size: 128 KByte

————————————————————

[ 3] local 192.168.29.157 port 5001 connected with 192.168.29.125 port 32778

[ 3] 0.0- 1.0 sec 96.0 KBytes 786 Kbits/sec 0.003 ms 0/ 3 (0%)

[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.008 ms 0/ 4 (0%)

[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.017 ms 0/ 4 (0%)

[ 3] 3.0- 4.0 sec 128 KBytes 1.05 Mbits/sec 0.021 ms 0/ 4 (0%)

[ 3] 4.0- 5.0 sec 128 KBytes 1.05 Mbits/sec 0.023 ms 0/ 4 (0%)

[ 3] 5.0- 6.0 sec 96.0 KBytes 786 Kbits/sec 0.022 ms 0/ 3 (0%)

[ 3] 6.0- 7.0 sec 128 KBytes 1.05 Mbits/sec 0.152 ms 0/ 4 (0%)

[ 3] 7.0- 8.0 sec 128 KBytes 1.05 Mbits/sec 0.142 ms 0/ 4 (0%)

[ 3] 8.0- 9.0 sec 128 KBytes 1.05 Mbits/sec 0.115 ms 0/ 4 (0%)

[ 3] 9.0-10.0 sec 128 KBytes 1.05 Mbits/sec 0.098 ms 0/ 4 (0%)

[ 3] 0.0-10.5 sec 1.25 MBytes 1.00 Mbits/sec 0.116 ms 0/ 40 (0%)

Remarque: bien que Iperf soit disponible sur de nombreuses plate-forme (Linux, BSD, Mac, Windows), l’option -l ne fonctionne pas toujours quand vous utiliser des OS différents entre le client et le serveur.

Exemple pour utiliser IPerf sur un port différent

Par défaut, Iperf utilise le numéro de port 5001 (TCP et/ou UDP). Selon votre configuration (notamment au niveau des ACL des routeurs/firewalls), il peut être utile d’utiliser un autre port, pour cela, il faut passer par l’option -p. L’exemple suivant permet de générer un flux réseau TCP entre S et C sur le port 80 (port Web standard).

Sur la machine S: # iperf -s -p 80
Sur la machine C: # iperf -c IPS -p 80

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 80

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec