IperfiT, un petit script pour les fans de Iperf

Date: 24/03/2011 | Catégories: Open-source,Reseau | Tags: ,

J'utilise actuellement Iperf (voir la liste des billets sur le sujet ici) dans le cadre de tests de performances de réseaux divers et variés. Bien que très simple à utiliser pour une personne avertie, Iperf n'est pas conçu pour automatiser des benchs en faisant varier les cibles et les paramètres.

J'ai donc développé, sous licence LGPL, un script Perl nommé IperfiT qui fait "grosso modo" les choses suivantes lors d'un test entre les machines A (sur lequel le script sera lancé) et B (qui se trouve de l'autre coté du réseau à tester et qui accepte les connexions SSH venant de A):

  • Test de la connectivité avec la machine B (A ping B)
  • Connexion automatiquement en SSH vers la machine B
  • Lancement du serveur IPerf sur la machine B
  • Lancement du client sur la machine A
  • Affichage du rapport venant de l'IPerf de la machine B
  • Arrêt de l'Iperf de la machine B

Les options de la version 0.1 de IperfiT sont les suivantes:

-h: Print the command line help

-v: Print the program version

-q: Quiet mode (no display)

-s <ip>: Server IP address

-n <user>: SSH user name used to connect to the server

-u: Use UDP protocol (default is TCP)

-b: Target bitrate for UDP flow

-t <time>: Test duration, default is 30 sec

-m <mss>: Set the TCP Maximum Segment Size (MTU-40), default 1400 bytes

-w <wsize>: Set the TCP Window Size, default 128 Kbytes

-l <bsize>: Set the R/W Buffer Size, default 8000 bytes

-d <tos>: Set the TOS field (Diffserv), default is 0

Installation de IperfiT

C'est assez simple, je l'ai mis à disposition dans ce répertoire. Vous pouvez également suivre cette procédure:

cd /tmp

wget https://raw.githubusercontent.com/nicolargo/iperfit/master/iperfit.pl

chmod a+rx /tmp/iperfit.pl

cp /tmp/iperfit.pl /usr/local/bin

Utilisation de iperfiT en quelques exemples

Pour un simple test TCP de 5 minutes (300 secondes) vers la machine 192.168.0.100 (login SSH nicolargo) avec une taille MSS de 1200 octets:

iperfit.pl -c 192.168.0.100 -n nicolargo -t 300 -m 1200

Pour lancer un test entre votre machine et la machine d'adresse IP 192.168.0.100 (login SSH nicolargo) en UDP avec une taille de buffer de 170 octets sur une durée de 60 secondes et avec un débit de 64 Kbps, il suffit de saisir la ligne suivante:

iperfit.pl -c 192.168.0.100 -n nicolargo -u -l 170 -t 60 -b 64

Remarque

Si vous avez le message suivant au lancement du programme:

Can't locate Net/IPv4Addr.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at ./iperfit.pl line 33.BEGIN failed--compilation aborted at ./iperfit.pl line 33.

C'est que vous n'avez pas la librairie Perl IPv4Addr qui est installé, sous Ubuntu/Debian pour remédier à cela il faut saisir la commande suivante:

sudo aptitude install libnetwork-ipv4addr-perl

Si vous avez des améliorations à proposer à ce script je suis à votre écoute !

  • raybones

    Merci, excellent article.