Title: Utilisation de Modelnet dans le cluster de SRC
1Utilisation de Modelnetdans le cluster de SRC
2Emulation
- 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 lInternet - latence
- bande passante
- perte de paquets
- congestion
- topologie
- conditions dynamiques
3Simulation vs. émulation
Simulation Emulation
prototypes souvent simplifiés prototype complet
communications simplifiées (pas de congestion) communications plus réalistes
grande échelle échelle moyenne
un ordinateur suffit cluster dordinateurs
4Modelnet - architecture
5Modelnet - architecture
Edge node (cluster101.lip6.fr)
Edge node (cluster102.lip6.fr)
eth00
eth0
eth01
eth02
eth03
eth00
eth0
eth01
eth02
eth03
Emulator node(cluster100.lip6.fr)
eth0
6Modelnet - architecture
Edge node (cluster101.lip6.fr)
Edge node (cluster102.lip6.fr)
10.0.0.1
eth0
eth0
10.0.0.7
10.0.0.1 ? 10.0.0.7
Emulator node(cluster100.lip6.fr)
eth0
7Modelnet - architecture
Edge node (cluster101.lip6.fr)
Table de routage de cluster101 10.0.0.0/8
cluster100.lip6.fr
10.0.0.1
eth0
10.0.0.1 ? 10.0.0.7
Emulator node(cluster100.lip6.fr)
eth0
8Modelnet - architecture
10.0.0.7
10.0.0.1
Lémulateur ajoute la latence selon la route
émulée avant denvoyer le paquet à la destination
Emulator node(cluster100.lip6.fr)
eth0
9Modelnet - architecture
Edge node (cluster102.lip6.fr)
eth0
10.0.0.7
10.0.0.1 ? 10.0.0.7
Emulator node(cluster100.lip6.fr)
eth0
10Modelnet - architecture
Edge node (cluster101.lip6.fr)
Si ladresse de destination se trouve dans la
même machine physique, le paquet ne sera pas
transmis par linterface
10.0.0.1
eth0
10.0.0.4
Emulator node(cluster100.lip6.fr)
eth0
11Modelnet - architecture
Edge node (cluster101.lip6.fr)
Solution la source met à 1 le bit 23 de
ladresse de destination. Lémulateur fait
ensuite linversion.
10.0.0.1
eth0
10.0.0.4
10.128.0.1 ? 10.0.0.4
10.0.0.1 ? 10.128.0.4
Emulator node(cluster100.lip6.fr)
eth0
12Modelnet émulateur
- Machine FreeBSD sur laquelle on charge un module
noyau - Des règles ipfw interceptent les paquets Ã
traiter par Modelnet - ipfw list
- 00100 pipe 1 ip from any to 10.0.0.0/8 in
- 00200 pipe 1 udp from any to me 5347
- 65000 allow ip from any to any
13Modelnet libipaddr
- libipaddr bibliothèque dynamique créant un
wrapper pour les appels système relatifs aux
sockets - bind(), sendto(), etc. utiliseront ladresse IP
virtuelle correspondante comme adresse source - le bit 23 de ladresse de destination est mis à 1
- ne marche pas avec des bibliothèques statiques
oudes RAW sockets - Exemple
- LD_PRELOADprefix/lib/libipaddr.so
SRCIP10.0.0.1 netperf -H 10.0.0.4
14Modelnet configuration
- La configuration de Modelnet est spécifiée par 4
fichiers XML - graph contient les nœuds et les liens
- route contient les chemins entre toute paire de
noeuds - hosts spécifie les hôtes et émulateurs
- model associe nœuds virtuels aux machines
15Modelnet 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 gt
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
16Modelnet 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
17Modelnet topologie
- lt?xml version"1.0" encoding"ISO-8859-1"?gt
- lttopologygt
- ltverticesgt
- ltvertex int_idx"0" role"gateway" /gt
- ltvertex int_idx"1" role"gateway" /gt
- ltvertex int_idx"2" role"virtnode" int_vn"0" /gt
- ltvertex int_idx"3" role"virtnode" int_vn"1" /gt
- ltvertex int_idx"4" role"virtnode" int_vn"2" /gt
- lt/verticesgt
- ltedgesgt
- ltedge int_dst"1" int_src"2" int_idx"0"
specs"client-stub" int_delayms100 /gt - ltedge int_dst"2" int_src"1" int_idx"1"
specs"client-stub" dbl_kbps"768 /gt - ltedge int_dst"1" int_src"3" int_idx"2"
specs"client-stub" /gt - ltedge int_dst"3" int_src"1" int_idx"3"
specs"client-stub" /gt - ltedge int_dst"0" int_src"4" int_idx"4"
specs"client-stub" /gt - ltedge int_dst"4" int_src"0" int_idx"5"
specs"client-stub" /gt - ltedge int_dst"1" dbl_len"1" int_src"0"
int_idx"0" specs"stub-stub" /gt - ltedge int_dst"0" dbl_len"1" int_src"1"
int_idx"1" specs"stub-stub" /gt - lt/edgesgt