m2.mbcp/README

188 lines
5.2 KiB
Text
Raw Normal View History

2006-03-18 17:40:54 +00:00
Programmation r<>partie - TP2
1. Description
Le but de ce TP est de concevoir une impl<70>mentation des protocoles
ABCAST et CBCAST.
Il poss<73>de les caract<63>ristiques suivantes :
* Il est distribu<62> sous la licence [1]GNU General Public License
* Il est <20>crit en C++,
* Il impl<70>mente ABCAST,
* Il impl<70>mente CBCAST.
Cette impl<70>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 <20>t<EFBFBD> enti<74>rement r<>alis<69> par Glenn ROLLAND
<[2]glenux@fr.st> <20> l'occasion de travaux pratiques du cours de
Programmation R<>partie du Master 2 Ing<6E>nierie Informatique - Syst<73>mes,
R<>seaux et Internet.
1.2. Impl<70>mentation des protocoles
J'ai choisi d'<27>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<66>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<66>rent, alors on consid<69>re le paquet illisible.
Site_index est de type unsigned short (16 bits).
Il indique l'index du site emetteur. La num<75>rotation des index d<>bute
<20> 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<73>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 <20>tre une estampille).
2. Pr<50>-requis
Cet exercice n<>cessite:
* un syst<73>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<EFBFBD>charger la derni<6E>re archive des sources, ou bien
directement leur version la plus r<>cente sur le d<>p<EFBFBD>t Subversion du
projet.
3.1. L'archive compress<73>e
Elle est disponible <20> l'adresse :
[3]http://glenux2.free.fr/pub/projets/Programmation_Repartie/TP2/archi
ves/
3.2. Le d<>p<EFBFBD>t Subversion
Afin d'obtenir les sources les plus <20> jour, vous pouvez utiliser le
logiciel de contr<74>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<74>e" pour l'utilisateur "anonymous", si ce dernier vous est
demand<6E>.
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'<27>tre cr<63><72> 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<EFBFBD>f<EFBFBD>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/