Quand iPerf nous sauve la vie (informatiquement parlant)

Quand iPerf nous sauve la vie (informatiquement parlant)

Nous utilisons plusieurs chassis de blades remplis de Dell m620 ronronnant sous vSphere. Nous remarquons que plusieurs VMs perdent régulierement le réseau. Après plusieurs jours d’investigation,
nous venons à comprendre que le problème est sur un seul chassis. C’est ici que iPerf rentre en jeu.

Le principe de iPerf est simple. Une cible et un initiateur. Un serveur, un client.
iPerf (https://iperf.fr/) est un petit programme qui teste le réseau sans jamais toucher à un disque dur. Contrairement à dd ou aux autres logiciels qui utilisent un buffer sur le disque dur, iPerf,
est seulement réseau. Le serveur écoute sur un port spécifié et le client se connecte et transfert du data. Aussi simple que ca.

Dans notre ca, nous avons réussi à trouver que le port X du module Y de la switch Z du chassis était défectueux.

Voici comment ca fonctionne:

 

Créez deux VMs. Linux ou Windows.
 Copiez iPerf ou installez-le (disponible sur les repos linux).
 Sur le serveur, démarrez le iPerf:
 iperf -s
 Sur le client lancez la connexion:
 iperf -c AdresseDuServeur
 C'est fait un premier test. Vous connaitrez la vitesse et la taille de la bandwidth que le programme sent.
 On peut aussi lancer la commande de maniere mirror, donc client serveur et serveur client ensuite:
 iperf -c AdresseDuServeur -r


J’ai crée un petit script qui fait 10 tests et donne une moyenne. Il est aussi pratique pour voir si le lien est stable ou instable.

Il faut ouvrir le serveur avec
iperf -s

et rouler (sh) ce script de la maniere suivante:

sh iperf.sh 10 AdresseDuServeur
()lanceur, NomDuScript NombreDeRepetitions AdresseDuServeur)

###
 #!/bin/bash
if [ "$#" -ne "2" ]; then
 echo "ERREUR: Le script cherche quatre arguments, donc:"
 echo
 echo "1. Nombre de repetitions (ex: 10)"
 echo "2. Serveur qui roule iperf -s ' (ex: IP)"
 echo
 echo "Par exemple:"
 echo " $(basename $0) 10 serveur"
 echo
 exit 1
 else
 runs=$1
 host=$2
 fi
log=iperf.$host.log
if [ -f $log ]; then
 echo removing $log
 rm $log
 fi
echo "=================================================================="
 echo " Results"
 echo "=================================================================="
 echo " target host .... $host"
 echo "------------------------------------------------------------------"
for run in $(seq 1 $runs); do
 iperf -c $host -f m >> $log
 echo -e " run $run: \t $(awk '/Bandwidth/ {getline}; END{print $7, $8}' $log)"
 done
avg=$(awk -v runs=$runs '/Bandwidth/ {getline; sum+=$7; avg=sum/runs} END {print avg}' $log)
 echo "------------------------------------------------------------------"
 echo " moyenne ....... $avg Mbits/sec"
 echo
 echo "lire $log pour les details"
##


Voila une autre raison d'aimer les logiciels libres.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *