diff --git a/Makefile.am b/Makefile.am index bcb0fba..19ab54c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,5 @@ SUBDIRS = src -EXTRA_DIST = doc INSTALL README Doxyfile autogen.sh rapport +EXTRA_DIST = doc INSTALL README Doxyfile autogen.sh diff --git a/README b/README index e69de29..e8d0757 100644 --- a/README +++ b/README @@ -0,0 +1,187 @@ + +Programmation répartie - TP2 + +1. Description + + Le but de ce TP est de concevoir une implémentation des protocoles + ABCAST et CBCAST. + + Il possède les caractéristiques suivantes : + * Il est distribué sous la licence [1]GNU General Public License + * Il est écrit en C++, + * Il implémente ABCAST, + * Il implémente CBCAST. + + Cette implémentation utilise trois threads, un "envoyeur de bas + niveau" (LowSender), un "recepteur de bas niveau" (LowReceiver) et un + "recepteur de haut niveau" (HighReceiver). + +1.1. Auteurs + + Cet exercice a été entièrement réalisé par Glenn ROLLAND + <[2]glenux@fr.st> à l'occasion de travaux pratiques du cours de + Programmation Répartie du Master 2 Ingénierie Informatique - Systèmes, + Réseaux et Internet. + +1.2. Implémentation des protocoles + + J'ai choisi d'écrire un protocole unique Multi-BroadCast Protocol + (MBCP) utilisable aussi bien pour envoyer les datagrammes d'ABCAST que + de CBCAST. + +1.2.1. Structures des datagrammes + + Le datagramme MBCP se décompose de la façon suivante: ++------+-----------+---------+ +| Type | Timestamp | Message | ++------+-----------+---------+ + + Dans ce datagrame: + + Type est de type unsigned char et peu prendre les valeurs suivantes: + + 'A' + Indique l'utilisation du protocole ABCAST + + 'C' + indique l'utilisation du protocole CBCAST + + une autre valeur + indique un protocole inconnu + + Timestamp peut varier en fonction de Type. + * Si Type == 'A', alors la structure de Timestamp est la suivante: ++------------+-------------+ +| Site index | Clock value | ++------------+-------------+ + * Si Type == 'C', alors la structure de Timestamp est la suivante: ++------------+------------+-------------+ +| Site_index | Clock_size | Clock_value | ++------------+------------+-------------+ + * Si Type est différent, alors on considère le paquet illisible. + + Site_index est de type unsigned short (16 bits). + Il indique l'index du site emetteur. La numérotation des index débute + à zéro. + + Clock_size est de type unsigned short (16 bits). + Ce champ indique la taille de l'horloge (si celle-ci est vectorielle). + + Clock_value peut varier en fonction de Type. + * Si Type == 'A', alors Clock_value est de type unsigned short (16 + bits) + * Si Type == 'C', alors Clock_value est un tableau de valeurs + unsigned short (16 bits * Clock_size) + + Message possède la structure suivante: ++--------------+--------------+ +| Message_size | Message_data | ++--------------+--------------+ + + Message_size est de type unsigned short (16 bits). Cette valeur + indique la taille du message. + + Message_data est un tableau de valeurs char (8 bits * Message_size). + Ce champ contient le message (qui peut être une estampille). + +2. Pré-requis + + Cet exercice nécessite: + * un système compatible unix, + * le compilateur GNU GCC (version >= 2.95) + * une version récente des GNU Autotools. + +3. Se procurer le sources + + Vous pouvez télécharger la dernière archive des sources, ou bien + directement leur version la plus récente sur le dépôt Subversion du + projet. + +3.1. L'archive compressée + + Elle est disponible à l'adresse : + [3]http://glenux2.free.fr/pub/projets/Programmation_Repartie/TP2/archi + ves/ + +3.2. Le dépôt Subversion + + Afin d'obtenir les sources les plus à jour, vous pouvez utiliser le + logiciel de contrôle de sources Subversion + + $ svn checkout \ + http://repository.glenux.ath.cx/svn/Cours/M2/Programmation_Repartie/ + TP2/ \ + prog-repartie-tp2 + + Il n'y a pas de mot de passe, il suffit donc de presser la touche + "Entrée" pour l'utilisateur "anonymous", si ce dernier vous est + demandé. + +4. Utiliser le logiciel + +4.1. Compilation + + Si vous avez choisi l'archive, commencez par la décompressez. + + $ tar -xzvf prog-repartie-tp2.tar.gz + + Rendez vous ensuite dans le dossier qui vient d'être créé lors de la + décompression. + + $ cd prog-repartie-tp2 + + Puis lancez la compilation du logiciel: + + $ ./autogen.sh + $ ./configure + $ make + +4.3. Utilisation + + On supposera que les machines weber, beethoven et mozart font partie + du même groupe, que leur ports respectifs pour la reception sont 2300, + 2330, et 2360. + +4.3.1. ABCAST + + Pour la machine weber, on lancera: + + $ ./dabcast -A -p 2300 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 1 + + Pour la machine beethoven: + + $ ./dabcast -A -p 2330 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 2 + + Pour la machine mozart: + + $ ./dabcast -A -p 2360 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 3 + +4.3.2. CBCAST + + On supposera que les machines weber, beethoven et mozart font partie + du même groupe, que leur ports respectifs pour la reception sont 2300, + 2330, et 2360. + + Pour la machine weber, on lancera: + + $ ./dabcast -C -p 2300 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 1 + + Pour la machine beethoven: + + $ ./dabcast -C -p 2330 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 2 + + Pour la machine mozart: + + $ ./dabcast -C -p 2360 -g weber:2300 -g beethoven:2330 -g mozart:2360 + -i 3 + +Références + + 1. http://www.gnu.org/copyleft/gpl.html + 2. mailto:glenux@fr.st + 3. http://glenux2.free.fr/pub/projets/Programmation_Repartie/TP2/archives/