Utilisation de Modelnet dans le cluster de SRC Fabio Picconi – LIP6
Emulation Environnement qui permet de – tester des logiciels répartis ou des prototypes dans des conditions réalistes sans modifier le code – reproduire dans un cluster un environnement WAN ou même l’Internet : latence bande passante perte de paquets congestion topologie conditions dynamiques
Simulation vs. émulation SimulationEmulation prototypes souvent simplifiésprototype complet communications simplifiées (pas de congestion) communications plus réalistes grande échelleéchelle moyenne un ordinateur suffitcluster d’ordinateurs
Modelnet - architecture
Edge node (cluster101.lip6.fr) eth0:0eth0eth0:1eth0:2eth0:3 Edge node (cluster102.lip6.fr) eth0:0eth0eth0:1eth0:2eth0:3 … Emulator node (cluster100.lip6.fr) eth0
Modelnet - architecture Edge node (cluster101.lip6.fr) eth0 Emulator node (cluster100.lip6.fr) eth0 Edge node (cluster102.lip6.fr) eth
Modelnet - architecture Edge node (cluster101.lip6.fr) eth0 Emulator node (cluster100.lip6.fr) eth0 Table de routage de cluster101 : /8 cluster100.lip6.fr
Modelnet - architecture Emulator node (cluster100.lip6.fr) eth L’émulateur ajoute la latence selon la route émulée avant d’envoyer le paquet à la destination
Modelnet - architecture Emulator node (cluster100.lip6.fr) eth0 Edge node (cluster102.lip6.fr) eth
Modelnet - architecture Edge node (cluster101.lip6.fr) eth0 Emulator node (cluster100.lip6.fr) eth Si l’adresse de destination se trouve dans la même machine physique, le paquet ne sera pas transmis par l’interface
Modelnet - architecture Edge node (cluster101.lip6.fr) eth0 Emulator node (cluster100.lip6.fr) eth Solution : la source met à 1 le bit 23 de l’adresse de destination. L’émulateur fait ensuite l’inversion.
Modelnet: émulateur Machine FreeBSD sur laquelle on charge un module noyau Des règles ipfw interceptent les paquets à traiter par Modelnet : $ ipfw list pipe 1 ip from any to /8 in pipe 1 udp from any to me allow ip from any to any
Modelnet: libipaddr libipaddr : bibliothèque dynamique créant un wrapper pour les appels système relatifs aux sockets – bind(), sendto(), etc. utiliseront l’adresse IP virtuelle correspondante comme adresse source – le bit 23 de l’adresse de destination est mis à 1 – ne marche pas avec des bibliothèques statiques ou des RAW sockets Exemple $ LD_PRELOAD=prefix/lib/libipaddr.so SRCIP= netperf -H
Modelnet: configuration La configuration de Modelnet est spécifiée par 4 fichiers XML : – graphcontient les nœuds et les liens – routecontient les chemins entre toute paire de noeuds – hostsspécifie les hôtes et émulateurs – modelassocie nœuds virtuels aux machines
Modelnet: topologie Le fichier graph détermine la topologie utilisée Modelnet fournit un script inet2xml qui convertit la sortie du générateur inet au format utilisé par Modelnet Exemple : la commande $ inet -n 4000 | inet2xml -p 100 among 25 stubs > example.graph crée un réseau de 4000 nœuds, 100 clients et 25 stubs. La bande passante, latence, taux de pertes de chaque lien est déterminée par inet2xml
Modelnet: topologie inet2xml Type de nœuds : – transit (router) – stub (gateway) – client (edge node) – virtual Type de liens : – client-stub – stub-stub – stub-transit – transit-transit
Modelnet: topologie