Catégories
Reseau

Utilisation avancée de Iperf

Suite à ce premier article décrivant les fonctions de base, voici un complément d’informations sur l’utilisation du logiciel Iperf.

Changement de la taille des buffers

Par défaut, les buffer d’écriture et de lecture sont the 8000 octets. On peut utiliser la fonction ‘-l’ pour modifier cette taille (taille minimum: 12 octets).

Par exemple, pour generer des paquets UDP (mais cela fonctionne aussi avec le protocole TCP) avec des buffers (in/out) de 40 octets.

Serveur:

# iperf -s -u -l 40

Client:

# iperf -c <adresse IP client> -u -l 40

Remarque: cela a pour effet de produire sur le réseau des paquets UDP de 40 octets (en tête UDp inclus), ce qui correspond à la moyenne de la taille des paquets utilisés avec les protocoles de VoIP de type SIP ou H.323).

Afficher la taille du MTU

Il est parfois utile de connaître la taille du MTU sur un chemin réseau (par l’exemple pour customize son stack IP en fonction de sa connection Internet). Iperf permet, grâce à l’option ‘-m’ d’afficher cette valeur dans le rapport.

Serveur:

# iperf -s -m

Client:

# iperf -c <adresse IP client> -m

————————————————————
Client connecting to 192.168.29.1, TCP port 5001
TCP window size: 65.0 KByte (default)
————————————————————
[ 3] local 192.168.29.157 port 51850 connected with 192.168.29.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 111 MBytes 93.0 Mbits/sec
[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)

Il est alors possible de tester le réseau en fixant cette valeur avec l’option ‘-M’:

Serveur:

# iperf -s -M 40

Client:

# iperf -c <adresse IP client> -M 40

Faire un test bi-directionnel en UDP

Par défaut, lorsque l’on utilise le protocole UDP (option ‘-u’), les flux vont du client vers le serveur. Pour faire un test bi-directionnel (c’est à dire avec 2 flux simultanés, client->serveur et serveur->client), il suffit d’utiliser l’option ‘-d’ au niveau du client. Si vous souhaitez que ce test se fasse de manière non simultané, il faut utiliser l’option ‘-r’ en lieu et place de l’option ‘-d’.

# iperf -s -u

Client:

# iperf -c <adresse client> -u -d
… Client report:
[ 5] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 13.697 ms 0/ 893 (0%)
[ 7] Server Report:
[ 7] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.027 ms 0/ 891 (0%)

Faire un test avec plusieurs flux

Si vous souhaitez que Iperf génére non pas 1 seul flux réseau entre le client et le serveur mais plusieurs. Il faut fixer le nombre avec l’option ‘-P’. Par exemple pour génerer 5 flux UDP simultanés entre le client et le serveur, il faut utiliser les commandes suivantes:

Serveur:

# iperf -s -u

Client:

# iperf -c <adresse IP client> -u -P 5

Taguer le champs Diffserv

Si votre réseau est compatible avec la QoS Diffserv, vous pouvez taguer le champs DSCP les paquets générés par Iperf  en utilisant l’option -S:

# iperf -c <adresse IP client> -u -S 0x99

Changer le port d’écoute par défaut

Par défaut, le port d’écoute du serveur est le 5001 (UDP ou TCP). Pour le modifier (par exemple si vous devez traverser un Firewall ou vous n’avez pas la main, il faut utiliser l’option ‘-p’ sur le serveur et le client.

Par exemple pour utiliser le port HTTP (80):

Serveur:

# iperf -s -p 80

Client:

# iperf -c <adresse IP client> -p 80


Catégories
Reseau

Tester la performance de votre réseau avec Iperf

Iperf est un des outils indispensable pout tout administrateur réseau qui se respecte. En effet, ce logiciel de mesure de performance réseau, diponible sur de nombreuses plateformes (Linux, BSD, Mac, Windows…), se présente sous la forme d’une ligne de commande à executer sur deux machines disposées aux extrémités du réseau à tester.

Iperf fonctionne comme un client/serveur selon le diagramme suivant:

Iperf

Iperf doit être lancé sur deux machines se trouvant de part et d’autre du réseau à tester. La première machine lance Iperf en « mode serveur » (avec l’option -s), la seconde en « mode client » (option -c). Par défaut le test réseau se fait en utilsant le protocole TCP (mais il est également possible d’utiliser le mode UDP avec l’option -u).

Nous allons commencer par installer iperf en utilisant la commande suivante (sous Fedora):

# yum install iperf

Pour les autres système d »exploitation, vous pouvez vous rendre sur cette page.

Premier exemple d’utilisation

Ensuite, sur une des deux machines de test, nous allon slancer le serveur grâce à la commande suivante:

# iperf -s

Sur le client, il ne reste plus qu’a lancer le client en précisant l’adresse du serveur:

# iperf -c <adresse IP du serveur>

Vous devriez avoir le rapport qui s’affiche après 10 secondes de test.

————————————————————
Client connecting to 192.168.29.1, TCP port 5001
TCP window size: 65.0 KByte (default)
————————————————————
[ 3] local 192.168.29.157 port 50675 connected with 192.168.29.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 110 MBytes 92.6 Mbits/sec

Avec les options par défaut, le test est fait en TCP sur une durée de 10 secondes. Sur un réseau local vous devriez donc obtenir un valeur proche de la capacité de commutation de vos équipements (par exemple 92.6 Mbits/sec qui est une valeur proche de 100 Mbits/sec).

Pour afficher des rapports intermédiaires (par exemple toutes les secondes) , il suffit d’ajouter l’option (-i 1) sur le client et/ou le serveur.

# iperf -s -i 1
————————————————————
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 50692
[ 6] 0.0- 1.0 sec 10.1 MBytes 84.8 Mbits/sec
[ 6] 1.0- 2.0 sec 11.1 MBytes 93.0 Mbits/sec
[ 6] 2.0- 3.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 3.0- 4.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 4.0- 5.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 5.0- 6.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 6.0- 7.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 7.0- 8.0 sec 11.2 MBytes 93.8 Mbits/sec
[ 6] 8.0- 9.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 9.0-10.0 sec 11.2 MBytes 93.9 Mbits/sec
[ 6] 0.0-10.0 sec 111 MBytes 92.9 Mbits/sec

Une autre option de base est (-t) qui permet de fixer au niveau du client le temps du test (en secondes). Par exemple pour effectuer un test pendant 1 minute:

# ipert -c <adresse IP du serveur> -t 60

Exemple de test en utilisant le protocole UDP

Iperf permet également de générer un traffic de type UDP (-u). Dans ce cas là, il faut penser à fixer la bande passante cible (contrairement au protocole TCP, UDP ne peut pas faire de contrôle de flux). On utilise pour cela l’argument -b au niveau du client:

Sur le serveur:

# iperf -s -u

Sur le client:

# ipert -c <adresse IP du serveur> -u -b 512k

Ce couple de commandes va générer un test avec un flux réseau UDP de 512 Kbits/sec.

Comme vous pouvez le voir Iperf est également un bon outil de génération de flux. Je l’ai déjà testé pour générer un flux UDP constant pendant plusieurs jours.

Exemple de test en multicast (UDP)

Iperf peut fonctionner en mode multicast (-B). Il faut le lancer de la manière suivante:

Sur le serveur:

# iperf -s -u -B 226.10.11.12

Sur le/les clients:

# iperf -c 226.10.11.12 -u -T 32 -b 512k

Ce couple de commandes génére un flux multicast UDP (sur l’adresse 226.10.11.12, avec un TTL de 32) de 512 Kbits/sec.

Autres options

NOUVEAU: Consultez cet autre article (cliquez ici) pour une description des options avancés de Iperf.

Et bien entendu, il reste la fameuse commande:

# iperf –help

…pour avoir la liste complète des options. Si vous avez des questions, n’hésitez pas !

Sur le même sujet

Pour mes propres besoins, j’ai ecrit un programme nommé SJitter permettant, comme le fait Iperf (c’est à dire sous la forme d’un client/serveur), de mesurer la gigue réseau (ou jitter en anglais). Paramètre très important si vous souhaitez mettre en place de la voie sur IP sur votre réseau.