187 lines
5.2 KiB
Text
187 lines
5.2 KiB
Text
|
|
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/
|