Calculer la gigue réseau avec des outils libres

Date: 22/02/2011 | Catégories: Open-source,Planet-libre,Reseau | Tags: ,,,,

Pour certaines applications, notamment la voix sur IP, la variation du délais de transit (aussi appelée gigue) est une des caractéristique les plus importante à étudier avant une installation et à superviser à travers le temps.

Il existe, sur le très juteux marché des outils réseaux pour le système d'informations, un grand nombre de logiciels permettant de calculer cette gigue de manière très précise. Malheureusement, la plupart sont trop chers car ils font beaucoup plus que ce que l'on veut faire.

Nous allons donc aborder dans ce billet deux techniques (mais il en existe d'autres) pour calculer simplement la gigue entre deux points de votre réseau en se basant sur des logiciels libres. Ces deux points pouvant se trouver sur le même réseau LAN ou bien séparés par des réseaux WAN (Internet, VPN dédié...).

Mesure de la gigue en utilisant IPerf

L'avantage de cette première technique est que Iperf est disponible sous Windows. Donc si votre réseau est composé de PC sous cet OS, il n'y aura pas de PC à déplacer pour faire vos tests.

Je pars sur le principe ou vous avez IPerf installé sur les deux postes (#A et B) de chaque coté dur réseau à valider.

Sur le PC #A:

iperf -s -u -i 1

Sur le PC #B:

iperf -c IP-A -u -i 1 -b 64K -t 60

PS: remplacer IP-A par l'adresse IP ou le nom d'hôte de la machine #A.

Par exemple, le résultat (à lire sur la dernière ligne, coté #B) sur ma liaison Internet donne:

[ 3] Server Report:

[ 3] 0.0-60.3 sec 464 KBytes 63.0 Kbits/sec 2.563 ms 5/ 328 (1.5%)

J'ai donc une gigue moyenne de 2.563 ms (pour 1.5% de paquets perdus).

Mesure de la gigue en utilisant SJitter

SJitter est un programme que j'ai développé il y a maintenant quelques années mais qui me sert toujours pour effectuer les mesures de gigue. Contrairement à IPerf, il n'est disponible que sous GNU/Linux.

Pour l'installation, vous avez le choix entre les sources ou un PPA pour Ubuntu.

Sur le PC #A:

sjitters -i

Sur le PC #B:

sjitterc -c IP-A -t 60 -b 64

PS: remplacer IP-A par l'adresse IP ou le nom d'hôte de la machine #A.

Par exemple, le résultat (à lire sur la dernière ligne, coté #A) sur ma liaison Internet donne:

Jitter summary (ms) : Min=0.38 / Max=5.34 / Avg=4.36

J'ai donc une gigue moyenne de 4.36 ms (la liaison était clairement plus chargée au moment de ce test).

Que faire des résultats ?

Il convient, selon vos système de ne pas avoir une gigue supérieure à 30ms (bien que les systèmes de VoIP et de codecs dernières générations accepte des gigue pouvant aller jusqu'à 50ms). Une bonne idée est également de surveiller cette gigue tout au long de l'année (par exemple en écrivant un petit script pour votre serveur Nagios).

  • Pingback: Tweets that mention Calculer la gigue réseau avec des outils libres -- Topsy.com()

  • Petit bonus pour ceux qui on un réseau avec de la QoS Diffserv activée. Il est possible de taguer les paquets avec un champs DSCP en utilisant les options suivantes:

    Par exemple pour taguer les paquet en EF (équivalent TOS=0xB8):

    * sous iperf : -S 0xB8
    * sous sjitter (valeur DSCP): -s 0xB8

    • Abdel Khalaq

      Salut, dites moi , comment est ce que je fais pour calculer la latence. Iperf me permet d’avoir la guigue et la perte de paquets, mais moi il me faut la latence moyenne lors de l’envoi d’un certain nombre de paquets de données.
      Merci d’avance.

  • Très intéressant, je dois avouer que je ne connaissais pas cette caractéristique/unité qu’est la gigue…

    Je m’y pencherais un peu plus à l’occasion

  • Il manque le premier paragraphe « Mesurer la gigue avec le ping ». Il me semble qu’il s’agit de la commande la plus commune pour mesurer la gigue.

    • L’utilisation de ping pour faire ce genre de mesures n’est pas conseillé:

      – Ping se base sur le protocole ICMP qui est souvent géré de manière différente dans les réseaux d’entreprise (limitation, blocage, QOS spécifique).
      – Ping n’affiche pas la gigue mais le délais de transit aller-retour. Il faut donc au minimum faire un script qui calcule la gigue à partir de ces données. L’algorithme de calcul de la gigue décrit dans les RFC est plus complexe qu’une simple différence entre deux délais de transit…

      • C’est comme tu l’entends mais ça donne pourtant une bonne idée de la chose.
        La gigue est le ‘mdev’ retourné par la commande ping (ou semble l’être, ce n’est pas clair)
        D’autre part si tu considère qu’il existe des règles sur le réseau pouvant affecter le résultat, celles-si pourraient alors s’appliquer à d’autres protocles que l’ICMP. Ce que je veux dire par là c’est soit tu as la maitrise de ton réseau ou au moins la connaissance de celui-ci et tu faire faire une mesure de gigue ou tu ne l’as pas et tu ne peux rien déduire des résutats.

        • Le mdev (pour mean deviation) retourné par la commande ping te donne la valeur de la différence du dernier délais de transit par rapport à la moyenne des autres délais. Ce n’est donc pas un calcul de gigue tel que le définie la RFC 1889.

          Entièrement d’accord avec toi sur le fait qu’il faut avoir la connaissance de son réseau avant de faire ce genre de mesure.

          • La RFC ne fait qu’une proposition de calcul, rien ne semble figé à ce propos. Et franchement lorsque l’on regarde ce résultat, est-il nécessaire de diposer d’une précision supérieure, a-t-elle seulement un sens ?

            rtt min/avg/max/mdev = 303.108/305.426/347.859/2.979 ms

          • Ce n’est pas un problème de précision mais de méthode de calcul. La plupart des fournisseurs de matériel de VoIP se base sur des calcul de gigue pour valider les réseaux avant installation (avec des outils professionnels assez cher). Si tu veux avoir une idée, autant utiliser des outils qui « essaye » de calculer la gigue plutôt que le mdev…

          • Pour tout t’avouer j’utilise aussi Iperf mais franchement la gigue prend en compte les variations entre un paquet et le paquet précédent alors que mdev prend en compte un paquet et la moyenne des paquets précédents. Cela semble suffire à des professionnels de la VOIP.
            http://wiki.netvoice.ca/doku.php?id=trouble:ping-interpretation

            Mais passons … à chacun sa méthode 🙂

  • Pourquoi ne pas avoir évoquer smokeping, que tu as déjà l’occasion de traiter par le passé ?

    • Smokeping permet de surveiller le délais de transit mais ne calcule pas la gigue. En effet pour effectuer un calcul de gigue il faut appliquer un algo de calcul sur la variation du délais entre chaque paquet IP. Smoke ping envoie 1 paquets IP au mieux toutes les n secondes ce qui n’est pas du tout représentatif d’un flux de voix sur IP.

  • Bonjour,

    Je viens de trouver cet article tout récent qui parle du même thème et qui présente également jperf une GUI Java pour iperf :
    http://packetlife.net/blog/2011/feb/28/proving-network-not-problem-iperf/

    En UDP à la fin ça donne également le jitter et le nombre de paquets perdus :

    iperf -c 192.168.1.5 -u -p 8042 -b 10m -t 10 -i 1 -f m

    Cordialement,
    Vincent RABAH

  • Excellent article, je trouve les infos intéressantes

  • Bob

    Super article, comme d’hab Nico 😉 !

    Lorsque je fais le test avec iPerf, je n’ai pas un résultat semblable au tiens. J’ai une liste de tous les paquets envoyés, leurs tailles et la bande passante mais pas de rapport ?

  • amoun

    slt,
    s’il vou plai comment je peux ajouter un gigue au moment de l’utilisation de la commande ping sous centos (linux)

  • drakke

    Premièrement merci pour ton blog, il est vraiment super et bien documenté. J’ai une question concernant la mesure du jitter avec iperf. Est-ce qu’une donnée de jitter de 5.000 ms est acceptable ou pas? Car j’ai eu des sites qui mentionne 0.1 ms c’est ok et d’autre 50 ms c’est correct.

    Merci