Labo1:Implémentationd’unalgorithmedistribuéenutilisantlessockets 05Décembre2016 L’objectifdecetravailpratiqueestdeprogrammerl’undesalgorithmessuivants: 1. Broadcastavecvague 2. BroadcastavecvagueavecACK 3. Constructiond'unarbrederecouvrementenlargeurd'abord 4. Constructiond'unarbrederecouvrementenprofondeurd'abord 5. Constructiond’unarbrederecouvrementsansracineconnueàl’avance 6. AlgorithmeTest_Connectivity 7. Algorithmedupluscourtcheminversionsynchrone 8. AlgorithmeGnutella Les messages sont transmis entre les nœuds du réseau via les sockets. Chaque nœud est serveur et client en même temps.Ilestimplémentésurunemachinedifférentedecellesallouéesauxautresnœuds. Unnœudestreprésentépar: - unnumérodeport, - l’ensembledesvoisinsdunœud Cesinformationssontstockéesdansunfichier.txt(texte)ayantcommenom:voisin-x.txt.xétantlenumérodunœud. Exemple: Nomdufichier:voisin-01.txt.Cefichierreprésentelenœud1 Contenudufichier: 3 //nombredevoisinsdunœud1 129.194.184.101 //identifiantdu1ervoisin 129.194.184.110 //identifiantdu2èmevoisin 129.194.184.111 //identifiantdu3èmevoisin Leprogrammedistributed_algàécriredoitêtreappelécommesuit: distributed_alg num_port voisin-x.txt INIT voisin-x.txt WAIT ou distributed_alg num_port INIT:signifiequelenœudenquestioncommencel’exécutionsansattendrelaréceptiondupremiermessage. WAIT: signifie que le nœud en question attend la réception du premier message avant de commencer à envoyer des messages. voisin-x.txtestlefichierquidoitêtreluparlenœudconcerné. On vous demande d’écrire le programme distributed_alg(qui représente l’un des algorithmes cités en haut) et de le déployersurunréseaud’ordinateursenutilisantunscriptshell. LedéveloppementdeceprogrammedoitsefaireenpythonouJava. Vousdevezsuivrelachronologiesuivante: Etapes Livrables Conception du protocole de communication entre les Un document d’une page maximum doit être remis sur nœuds. moodle(cyberlearn)avantdepasseràl’étapesuivante Conception d’une structure de données distribuée adaptéeàl’algorithmedistribuéàimplémenter Ecriture du programme distributed_alg et son exécution Unedémonstrationdoitêtrefaiteauprofesseur/assistant sur un seul ordinateur. Chaque nœud est représenté par avantdepasseràl’étapesuivante unserveursocketinstallésurunportdifférent. Déploiementmanuelsurplusieursnœuds Déploiementmanuelsurplusieursnœuds Ecriture et exécution d’un script qui déploie le Démonstration finale. Remise d’un fichier compressé programmedistributed_algsurunensembledemachines contenant: distantes.Lescriptdoitpermettre: 1. Lecodesourcedevotreprogramme • unloginàdistancesurlesmachinesduréseau 2. Les fichiers .txt représentant un exemple de • uneexécutiondel’algorithmedistributed_alg réseau(5nœudsminimum) LedéploiementdecetravailpeutsefairesurlesmachinesdelasalleA406ousurlaplateformeCloudhepiaCloud.Les étudiantsdesorientationstélécometmatérieldoiventutiliserlaplateformeCloud:hepiaCloud. Critèresd’évaluation: 1. Chaque nœud lit correctement le fichier «voisin» tel que décrit dans l’énoncé. Les noms des fichiers voisins doiventrespecterl’énoncé. 2. L’algorithmeestdéployéenlocal.Danscecas,chaquenœudutiliseunportdifférent 3. L’algorithmeestdéployémanuellementsur5nœuds(ordinateurs)minimum. 4. Danscertainsalgorithmes(lesalgorithmescitésenhaut),lesenvoisdemessagesdoiventsefaireenparallèle. Danscecas,distributed_algdoitutiliserlesthreads. 5. Lesystèmeestdéployéenutilisantunscript.Celui-cidoitéviterlasaisiedesmotsdepassessurlesdifférentes machines(unerecherchesurinternetestconseilléepourtrouverunesolution). 6. Ilseratenucomptedelaprésencedurantlesséancesdelabo. Déroulementdulaboetplanningdesséances Troissemainessontréservéespourlesuivietl’évaluationdecetravail:12Décembre2016,19Décembre2016et9 Janvier2017.Untravailpersonneld’environ1h30/semaineestnécessairepouraccomplircelabo. Durantlestroisséancesréservéespourcelabo,chaqueétudiantestévaluéenfonctiondescritèrescitésplushaut. LetravailfinalseraévaluéleLundi9Janvier2017(de13:00à14:00)