WANem.C.A. !

wanem YMCA

tata logoWANem est un outil qui ne plaît pas à Christine Boutin, forcément c’est indien donc pas très chrétien, et en plus c’est fait par la société Tata… En ce temps de croisade contre ces pédérastes et autres grosses Tatas, il y a de quoi faire sauter l’incestueuse ancienne ministre au plafond (oups, aux ogives de la cathédrale) !…WANem pour Wide Area Network Emulator, permet de simuler un réseau WAN. C’est un outil très pratique pour étudier le comportement des applications à travers un réseau aux performances… Disons Inégales, à l’instar d’internet… Il va en effet être possible d’influer sur un certain nombre de caractéristiques telles que le temps de réponse, le taux de perte, le taux de corruption et encore quelques autres… Afin de compléter l’expérience WAN, il va également être possible de générer aléatoirement des déconnexions de plusieurs types… Un intérêt évident que l’on peut trouver à cet outil est pouvoir tester des composants VoIP au travers d’un internet simulé et donc entièrement configurable…

Mise en place de la maquette

Théoriquement il aurait été plus correct de faire passer la communication retour (serveur web vers client) par le serveur WANem, paresse m’oblige à ne pas tenir compte de la logique… Sic vita est.

wanem maquette

Network Configuration

Je vous passe les détails de configuration réseau, peu de chance que quelqu’un s’intéresse à un émulateur WAN sans savoir configurer une interface !

wanem network configuration

Pardonnez la prétérition, je vous donne tout de même quelques indications sur ma maquette, afin de vous faciliter la lecture de ce document.

Serveur WANem

Interface de Management

Eth0 : 192.168.1.235/24 GW 192.168.1.254

Interface maquette

Eth1 : 192.168.17.253/24 GW 0.0.0.0

  • Routes : 192.168.11.0/24 via 192.168.17.133

Le point important est, évidemment, de ne pas dupliquer les passerelles par défaut et de configurer une route pour atteindre le réseau 192.168.11.0.

Machine cliente

0x0ff@kali:~ #route add -net 192.168.11.0/24 gw 192.168.17.253
0x0ff@kali:~ # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.17.0    *               255.255.255.0   U     0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.11.0    192.168.17.253  255.255.255.0   UG    0      0        0 eth1
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0

 

Génération de trafic

Pour générer un trafic important nous permettant de constater les variations de qualité de la communication entre notre client et notre serveur nous allons générer un flux continu de données. Soit en envoyant un fichier volumineux, soit en utilisant astucieusement les variables de notre distribution favorite. :)

Serveur en écoute

Notre serveur distant va écouter sur le port 1337 et retransmettre sur la sortie standard les informations qui seront envoyées :

0x0ff@tserver-web:~# nc -l 1337

Méthode par envoi d’un fichier

Sur la machine cliente nous allons générer un fichier de 10Go que nous pourrons ensuite envoyer vers notre serveur :

root@kali:~# dd if=/dev/random of=10GB.file bs=1000 count=0 seek=$[1024*1024*10]
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.3743e-05 s, 0.0 kB/s
root@kali:~# ls -lh 10GB.file
-rw-r--r-- 1 root root 9.8G Aug  2 04:00 10GB.file

Ensuite, pour procéder à l’envoi, cette simple commande fera l’affaire :

root@kali:~# nc 192.168.11.196 1337 < 10GB.file

Méthode plus cool

Plutôt que d’envoyer un fichier, de bloquer 10Go sur votre client et votre serveur, vous pouvez utiliser cette ligne de commande pour générer du trafic en continu vers le serveur :

root@kali:~# while true; do echo $RANDOM ; done 2>&1 | nc 192.168.1.196 1337

 

Wanalyzer

Les interactions avec WANem peuvent se faire grâce à un simple navigateur internet en atteignant l’une des adresses IP de votre émulateur WAN suffixé de /WANem. L’interface Web intègre un outil d’analyse baptisé WANalyze qui vous permettra de vérifier l’état de la connexion entre WANem et une machine quelconque.

wanem wanalyzer

Basic Mode

Ce mode de simulation rapide permet de se placer dans des conditions similaires au WAN en quelques clics seulement. Il suffit de configurer l’interface voulue en indiquant une bande passante nominale et ajouter un délai, puis valider la configuration en cliquant sur Apply settings.

wanem basic mode

Lorsque l’on agit sur le champ Delay Time(ms), on constate bien une augmentation du ping de 100ms.

0x0ff@kali:~# ping 192.168.11.196
PING 192.168.11.196 (192.168.11.196) 56(84) bytes of data.
64 bytes from 192.168.11.196: icmp_seq=1 ttl=63 time=6.81 ms
64 bytes from 192.168.11.196: icmp_seq=2 ttl=63 time=0.821 ms
64 bytes from 192.168.11.196: icmp_seq=3 ttl=63 time=1.02 ms
64 bytes from 192.168.11.196: icmp_seq=4 ttl=63 time=1.08 ms
64 bytes from 192.168.11.196: icmp_seq=5 ttl=63 time=1.04 ms
64 bytes from 192.168.11.196: icmp_seq=6 ttl=63 time=101 ms
64 bytes from 192.168.11.196: icmp_seq=7 ttl=63 time=101 ms
64 bytes from 192.168.11.196: icmp_seq=8 ttl=63 time=101 ms
64 bytes from 192.168.11.196: icmp_seq=9 ttl=63 time=101 ms
64 bytes from 192.168.11.196: icmp_seq=10 ttl=63 time=101 ms

Variation de la configuration

La courbe Network History retranscrit des modifications successives des paramètres du mode basique.

wanem basic mode results

Advanced

Le mode avancé permet d’influer sur un grand nombre de paramètres pour rendre la simulation la plus proche possible des conditions réelles. Dans un soucis de réalisme, les développeurs ont intégré une variable correlation à chaque levier. Cette variable permet d’indiquer que l’on souhaite utiliser le résultat obtenu sur le précédent paquet à un certain pourcentage. Cette variable va nous permettre de produire un effet de burst. Par exemple, il est fréquent que plusieurs paquets consécutifs soient perdus plutôt qu’un seul et unique. En influent sur la corrélation du taux de perte, il est possible de simuler ce comportement.

Pour rendre la démonstration un poile plus parlante, je vais exagérer les valeurs des différents indicateurs. Pour simuler une situation réelle nous choisirions plutôt des valeurs inférieurs à 1% !

Delay – Temps de réponse

La configuration de la latence inclut un paramètre jitter qui va faire varier le temps de réponse. Dans le cas ci-dessous nous avons donc un temps de latence moyen de 100ms (+/- 10ms).

wanem advanced mode

0x0ff@kali:~# ping 192.168.11.196
PING 192.168.11.196 (192.168.11.196) 56(84) bytes of data.
64 bytes from 192.168.11.196: icmp_req=1 ttl=63 time=95.3 ms
64 bytes from 192.168.11.196: icmp_req=2 ttl=63 time=96.5 ms
64 bytes from 192.168.11.196: icmp_req=3 ttl=63 time=110 ms
64 bytes from 192.168.11.196: icmp_req=4 ttl=63 time=106 ms
64 bytes from 192.168.11.196: icmp_req=5 ttl=63 time=91.9 ms

 

Loss – Taux de perte

Avec 30%  de perte et 50% de corrélation, le débit maximum chute radicalement et la connexion est plus qu’instable !

 

wanem advanced mode loss

Duplication – …

La duplication de paquets est moins impactant pour la connexion. Avec un taux de 30%  (pas de corrélation sur cet indicateur), la connexion demeure relativement stable et le débit moyennement élevé.

wanem advanced mode dup

Reordering – Paquet TCP dans le désordre

Avec 20% de paquets désordonnés corrélés à 50%, la connexion est une nouvelle fois très instable…

 

wanem advanced mode reorder

Corruption – …

La corruption des paquets influence grandement la qualité de la liaison entre le client et le serveur. Avec 10% de paquets corrompus, le trafic est à l’agonie.

wanem advanced mode corrupt

Disconnections – Déconnections

Je ne me suis pas trop attardé sur cette partie qui n’est pourtant pas dénuée d’intérêt, cependant je suis en mesure de vous montrer qu’en jouant avec ces indicateurs, il est possible de générer des comportements plutôt intéressants… Presque funs ! :p

wanem advanced mode disconn

 

Bug & Debug

Perte de connexion

Après quelques dizaines de minutes, j’ai eu à lancer deux commandes pour rétablir la connectivité :

0x0ff@WANem:~# echo 1 > /proc/sys/net/ipv4/ip_forward
0x0ff@WANem:~# iptables –P FORWARD ACCEPT

HD installation problème

Je n’ai pas réussi à installer WANem sous VMWare, j’ai pourtant essayé plusieurs configurations… Je n’ai pas poussé plus loin mes recherches.

wanem hd install

Solution : Télécharger la machine virtuelle préparée WANem !