Contexte et Objectifs du TP d'Algorithmique de Groupe


Contexte

L'objectif de ce TP consiste à mettre en oeuvre divers algorithmes de communication de groupe préservant un ordre total causal. Certains des algorithmes ne fournissent qu'un ordre total, d'autres qu'un ordre causal, mais l'application finale est telle que si l'une des propriétés est présente l'autre l'est également. Pour implanter ces algorithmes, les protocoles qui les mettent en oeuvre seront implantés sous forme d'objets. Il sera possible de choisir un algorithme donné en passant son nom sur la ligne de commande ce qui aura pour conséquence de configurer la politique de diffusion utilisée par le système de communication en invoquant les méthodes sur l'objet approprié.

L'objectif de l'application consiste à faire appliquer des opérations arithmétiques sur une variable entière partagée par plusieurs noeuds. Ces opérations devront être réalisées selon un ordre de diffusion total ou causal de sorte que les noeuds obtiennent une valeur résultante identique. En l'occurrence, le noeud 1 effectuera une addition de 1, puis le noeud 2 une multiplication par 2 et enfin le noeud 3 une soustraction par 2. Ces opérations seront renouvellées 10 fois. La variable initiale valant 1, le résultat escompté sera toujours de 1024.

Afin que les situations de non respect de l'ordre total et de l'ordre causal soient fréquentes en l'absence d'algorithmique particulière, nous nous appuyerons sur un système de communication adapté dont l'une des caractéristiques consiste à affecter un temps de latence aléatoire à chacun des messages échangés (même à un message envoyé en local).

Globalement, l'application se découpe en trois parties : le composant applicatif, le composant protocolaire et le composant de transport. Le composant applicatif met en oeuvre les calculs indiqués ci-dessus. Il diffuse ses requêtes en utilisant le composant protocolaire et en retour traite les requêtes reçues par celui-ci. Le composant protocolaire met en oeuvre l'algorithme de diffusion c'est-à-dire complète les messages de diffusion lors d'une émission, utilise le composant de transport pour effectuer la diffusion effective, traite les réceptions signalées par le composant de transport et se charge de délivrer les messages au composant applicatif lorsque l'algorithme le permet. Le composant de transport se charge des communications TCP/IP et comme cela a été indiqué, induit des temps de latence lors de la réception des messages.

Avant de lire les sources du TP, deux conseils :

Objectifs

Vous chargerez les
sources du TP, construirez l'application initiale et constaterez son mauvais fonctionnement en l'absence d'une algorithmique adéquate. Les protocoles de diffusion présents sont les suivants :

Les protocoles autres que celui de diffusion simple ont été laissés volontairement inachevés. Il vous revient de les complèter en vous appuyant sur les composants logiciels présents dans le système de communication et en vous reportant aux transparents du cours.

Ce TP sera réalisé en Ada et à ce titre s'appuye sur les cours de la brique prérequise SIP.

Vous devez rendre le compte rendu de votre TP à Laurent Pautet (pautet@enst.fr). Pour ce faire, vous devez suivre le processus de rendu suivant :

    src> make clean
    src> cat protocols-*.ad? | Mail -s "TP GCS" pautet@enst.fr

Autrement dit, il n'est besoin d'envoyer que les fichiers que vous avez modifiés et naturellement tous les fichiers nouveaux que vous aurez créés. Ne pas joindre les fichiers .o, .ali, etc .