TP1 : simulation de protocoles pour les r´eseaux
R´esum´e
L’objet de ce TP est la d´ecouverte de la plateforme de simulationSinalgo.Sinalgoest une plateforme de simulation qui permet de tester et de valider ”`a haut niveau” des protocoles.
1 Installation
Les sources et le tutorial deSinalgose trouvent `a l’adresse suivante :
https://sourceforge.net/projects/sinalgo/files
1.1 Pr´e-requis
Sinalgon´ecessite queJava 5.0ou une version sup´erieure soit install´e sur votre machine.Sinalgofonctionne aussi avec des environnnement de d´eveloppement de typeEclipse.
1.2 Installation
T´el´echargez la version ”Regular Release” de Sinalgo et d´ecompressez la dans un sous-r´epertoire sinalgo de votre r´epertoire de travail. Ce r´epertoire contient entre autresles sourcesdanssrcet les fichiers binaires dansbinaries/bin.
Deux choix s’offrent alors `a vous :
— Soit vous lancezSinalgo`a partir de la ligne de commande en tapant :java-cp binaries/bin sinalgo.Run`a partir du r´epertoiresinalgo.
— Soit vous utilisez un environnement de d´eveloppement typeEclipse(cf.ci-dessous).
1.3 Avec Eclipse
1. LancezEclipse.
2. Cr´eez un nouveau projet java (File→New→Java Project). Nommez-lesinalgo. Cochez la case ”cr´eer un projet `a partir d’un source existant” et s´electionnez le r´epertoiresinalgocr´e´e pr´ec´edemment. Cliquez surterminer.
3. V´erifiez qu’Eclipseest configur´e pour utiliserJava 5.0: dans le menuPreferences, selectionnezJava→Compi- ler. Le niveau du compilateur doit ˆetre `a 5.0 ou plus.
4. Faites un clic droit sur build.xml dans le navigateur de package et s´electionezRun as→Ant Build.
Une fois ces actions effectu´ees, il suffit de faire un clic droit sursrcdans le navigateur d’Eclipseet de s´electionnerRun as→JavaApplication pour d´emarrer l’application.
2 Organisation
Sinalgopropose un ensemble de sources de projets : des exemples (sample), un projet par d´efaut (defaultProject) et un projet ”vide” (template). Vous allez utiliser le projet ”vide” pour cr´eer vos propres projets. Chaque source est stock´e dans un r´epertoire situ´e danssinalgo/src/projects. L’organisation de chaque projet est identique et comporte :
— Un fichierConfig.xmlqui permet de param´etrer le mod`ele d’ex´ecution.
— Un fichierdescription.txt; l’ensemble des informations de ce fichier sont affich´es dans le menu o`u l’on s´electionne la simulation `a ex´ecuter.
— Un fichierCustumGlobal.javaqui permet de modifier l’interface de simulation.
— Un fichierLogL.javaqui permet de d´evelopper des fonctions de ”monitoring”.
— Optionnellement, un fichierrun.pl; ce fichierPerlpermet de g´erer le param´etrage d’une ex´ecution.
— Un r´epertoireimages; ces images peuvent ˆetre utilis´ees pour personnaliser les menus, etc.
1
— Deux r´epertoires : models et nodesqui contiennent les impl´ementations des mod`eles et des noeuds (cf. ci- dessous).
2.1 Mod`eles
Les mod`eles d´ecrivent l’environnement dans lequel votre protocole est simul´e. Vous pouvez implanter vos propres mod`eles ou utiliser des mod`eles pr´ed´efinis. Ici, nous utiliserons et param`etrerons uniquement des mod`eles pr´ed´efinis.
Pour chaque simulation, il faut d´efinir 6 mod`eles diff´erents :
— Lemod`ele de connectivit´equi d´ecide comment ´evaluer le voisinage d’un noeud.
— Lemod`ele de distributionqui d´ecrit comment les noeuds sont plac´es au d´emarrage de l’application.
— Lemod`ele d’interf´erencequi d´ecide si un message est perdu (cette fonctionnalit´e ne sera pas utiliser dans les premiers TPs).
— Lemod`ele de transmissionqui d´ecide du temps d’acheminement des messages.
— Lemod`ele de mobilit´equi g`ere le mouvement des noeuds. Dans nos simulations, les noeuds seront statiques (ils ne bougeront pas !).
— Lemod`ele de fiabilit´equi g`ere la perte de messages.
2.2 Noeuds
Le r´epertoirenodescontient le code du protocole. Ce code est subdivis´e en plusieurs fichiers r´epartis dans plusieurs r´epertoires :
— edges. Contient le code relatif aux liens de communication.
— messages. Contient la description de chaque type de message utilis´e dans la simulation.
— nodeImplementations. Contient le code pour le comportement des noeuds.
— timers. Contient le code destimersutilis´es dans la simulation.
3 1
erprotocole : SURPRISE !
T´el´echargez le projet SURPRISE sur le site de l’UE. D´esarchivez et copiez le projet dans le r´epertoire src/projects.
Recompilez tout le logiciel. Si vous ˆetes en ligne de commande faites appel `a ant (tapez ant en ligne de commande) par exemple.
Lancez une ex´ecution de l’exemple fourni ”surprise”. Vous pouvez le lancer viaEclipseou directement en tapant : java-cp binaries/bin sinalgo.Run-project”surprise”
Une fenˆetre apparait alors avec un plan en 3 dimensions. Pour lancer la simulation, allez dans le menuSimulationet cliquez surGenerate Nodes. Cr´eez 10 noeuds puis cliquez sur l’icone verte pour d´emarrer la simulation.
Pr´eparez un rapport synth´etique en r´epondant aux questions suivantes :
— D´ecrire les manipulations `a faire pour ex´ecuter le projet fourni sur un r´eseau `a 10 noeuds connect´es en anneau par des liens unidirectionnels.
— Quel est le r´esultat de l’ex´ecution ?
— Quels sont les messages ´echang´es par les noeuds ?
— D´ecrire en pseudo-code l’algorithme ex´ecut´e par chaque noeud.
— Quelle est la complexit´e en temps et en nombre de messages de l’algorithme ?
4 2
`emeprotocole : Impl´ementation du protocole GHS
En vous inspirant du projet ”surprise” et de l’exemple ”sample6” fourni par Sinalgo proposer une impl´ementation de l’algorithme GHS vu en cours.
Pr´eparez un rapport synth´etique en r´epondant aux questions suivantes :
— D´ecrire en pseudo-code l’algorithme ex´ecut´e par chaque noeud en pr´ecisant les messages ´echang´es et les actions prises par les noeuds sur la r´eception de chaque message.
— Fournir 5 jeux de test de votre impl´ementation.
2