Master Rseaux et Systmes Distribus RSD Algorithmique des
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes et applications réparties Accord et coordination Diffusion atomique Badr Benmammar badr. benmammar@gmail. com
Accord et coordination q Une famille de problèmes en algorithmique distribuée. q Catégories de problèmes de cette famille : q Accord sur l’accès à une ressource partagée q Exclusion mutuelle distribuée q Accord sur l’ordre d’envoi de messages à tous q Diffusion atomique q Accord sur un processus jouant un rôle particulier q Élection d’un maître q Accord sur une valeur commune q Consensus q Accord sur une action à effectuer par tous ou personne q Transaction 2
Accord sur l’ordre d’envoi de messages à tous « Diffusion atomique » 3
Plan q Diffusion q Basique q Fiable q Ordonnancement q FIFO q Causal q Total q Diffusion atomique q Types de diffusion q Relations entre les diffusions 4
Diffusion q Mode d’émission de messages avec multiples récepteurs. q Un message émis par un émetteur est reçu par plusieurs récepteurs. q Tous les processus du groupe dans le cas de la diffusion (broadcast). broadcast q Les processus d’un sous-groupe dans le cas du multicast 5
Diffusion q Ordre et fiabilité de la diffusion des messages. q Par défaut et selon les temps de propagation, les messages arrivent. . . quand ils arrivent. q Pas dans le même ordre ni dans un ordre donné pour tous les processus. q Peuvent aussi ne pas arriver chez tous les processus si canaux de communication non fiables ou si l’émetteur plante en cours de diffusion. Chronogramme de diffusion de messages 6
Diffusion : support de communication q Coté récepteur, on différencie deux actions : q La réception du message par le système de communication associé au processus. q La délivrance du message : le processus est informé du message. q Un message reçu peut ne pas être délivré selon les cas. q La délivrance d’un message peut être retardé par rapport à sa réception tant que certaines conditions d’ordre ne sont pas respectées. q Mise en œuvre peut être faite sur plusieurs types de supports de communication : q Couche réseau réalisant nativement de la diffusion. q Typiquement : multicast UDP/IP (mais non fiable). q Communication point à point « classique » . 7
Protocole de diffusion basique q Modèle de communication et de faute : q Canaux de communication fiable 1 vers 1 entre tous les processus. q Processus peuvent planter (panne franche). q Système asynchrone : aucune borne. q Sur la durée d’exécution d’une étape du processus. q Sur le délai de réception d’un message. q Sur la dérive de l’horloge locale d’un processus par rapport au temps réel. 8
Protocole de diffusion basique q Protocole de diffusion basique, 2 opérations : q B_broadcast(m) exécuté par processus p. q Le processus p diffuse un message m à tous les autres processus. q B_deliver(m) exécuté sur processus p. q délivrance du message m à p. q Opérations associées aux canaux de communication : q receive(m, q) sur processus p. q Réception du message m venant de q. q send(m, q) sur processus p. q Envoi par p du message m au processus q. 9
Diffusion basique q Mise en œuvre diffusion basique : q B_broadcast(m) sur p. q On envoie le message à tout le monde. q Pour chaque processus q du groupe : exécuter send (m, q). q Lors d’un receive(m, q) sur p. q On vient de recevoir un message m venant de q, on le délivre directement. q Exécuter B_deliver(m) ) , P 1 m ( ive rece B_broadcast(m) P 1 2) P , m ( send (m, P 3) s send (m, P 4) send (m, P 5) sen d (m , P 6 ) P 2 (m, P 1) e v i e c e r receive(m, P 1) P 3 B_deliver(m) P 4 receive(m, P 1) P 5 rece ive( m, P 1) P 6 B_deliver(m) 10
Problème de la diffusion basique q Problème : pendant la diffusion, P 1 tombe en panne. q P 5 et P 6 ne reçoivent pas le message m. , P 1) m ( ive e c e r B_broadcast(m) P 1 , P 2) m ( send (m, P 3) s send (m, P 4) P 2 m, P 1) ( e v i e c re receive(m, P 1) B_deliver(m) P 3 B_deliver(m) P 4 B_deliver(m) P 5 P 6 11
Diffusion fiable q Diffusion fiable (reliable broadcast) : tous les processus corrects délivrent un message diffusé. q Caractéristiques à assurer : q Validité : q Si un processus correct diffuse m, alors il finira par être délivré par tous les processus corrects (en un temps fini). q Un message diffusé est délivré par tout le monde. 12
Diffusion fiable q Diffusion fiable (reliable broadcast) : tous les processus corrects délivrent un message diffusé. q Caractéristiques à assurer : q Validité : q Si un processus correct diffuse m, alors il finira par être délivré par tous les processus corrects (en un temps fini). q Un message diffusé est délivré par tout le monde. q Accord : q Si un processus correct délivre m, alors tous les autres processus corrects délivreront m également (en un temps fini). q Tout le monde délivre les mêmes messages. 13
Diffusion fiable q Diffusion fiable (reliable broadcast) : tous les processus corrects délivrent un message diffusé. q Caractéristiques à assurer : q Validité : q Si un processus correct diffuse m, alors il finira par être délivré par tous les processus corrects (en un temps fini). q Un message diffusé est délivré par tout le monde. q Accord : q Si un processus correct délivre m, alors tous les autres processus corrects délivreront m également (en un temps fini). q Tout le monde délivre les mêmes messages. q Intégrité : q Un processus correct délivre un message m au plus une fois, avec m un message qui a été diffusé par un processus. q Pas de duplication ni de création de message. 14
Diffusion fiable q Le protocole de diffusion basique n’est pas fiable. q Pourtant la communication est fiable. q Pas de perte de messages. q Le problème est pour l’exécution de B_broadcast(m). q Pendant que l’on parcourt la liste des processus pour leur envoyer un par un le message, le processus émetteur peut planter. q Certains processus recevront le message mais pas tous. q Les propriétés d’accord et de validité ne sont pas respectées. q Définition d’opérations de diffusion fiable : q R_broadcast(m) et R_deliver(m). q Variantes fiables des opérations de la diffusion basique (R : reliable). q Utiliseront de la diffusion basique. 15
Diffusion fiable q Mise en œuvre de la diffusion fiable : q R_broadcast(m) sur p. q Envoi q le message à tout le monde via de la diffusion basique. Exécuter B_broadcast(m). q Lors d’un receive(m, q) sur p. q Si on avait pas déjà reçu le message m (uniquement pour le premier receive), exécuter : q 1. Diffuser le message aux autres processus (sauf pour l’émetteur du message et le processus lui même ) : exécuter B_broadcast(m). q 2. Se délivrer le message : exécuter R_deliver(m). 16
Diffusion fiable B_broadcast(m) , P 1) m ( ive rece B_broadcast(m) P 1 , P 2) m ( send (m, P 3) s send (m, P 4) P 2 m, P 1) ( e v i e c re B_deliver(m) B_broadcast(m) P 3 B_deliver(m) B_broadcast(m) receive(m, P 1) P 4 B_deliver(m) P 5 B_broadcast(m) B_deliver(m) P 5, son message m est venu de P 2 P 6, son message m est venu de P 4 P 6 B_broadcast(m) B_deliver(m) 17
Diffusion fiable q Principes de l’algorithme : q A la première réception d’un message, un processus le rediffuse à tous les autres, ce qui permet d’assurer que tout le monde le recevra même si certains plantent pendant un B_broadcast(m). q Inconvénients : q Pour N processus, N diffusions basiques réalisées, très coûteux en nombre de messages : peu optimal mais fonctionne. q Nécessité de vérifier qu’on a pas reçu déjà le message (avec un historique des messages ou des estampilles). 18
Diffusion : ordonnancement q Diffusion basique ou fiable : ordonnancement. q Aucune contrainte ou propriété par défaut sur l’ordre de délivrance des messages sur les processus. q Mais des variantes peuvent assurer un certain ordre : q FIFO. q Causal. q Total. 19
Diffusion : ordonnancement q Ordre FIFO : q Si un processus diffuse un message m puis un message m', alors un processus correct qui délivre m', délivrera m avant m'. P 1 m m’ La diffusion est faite par un seul processus (P 1) P 2 P 3 Ce n’est pas un ordre FIFO car P 3 délivre m’ avant m 20
Exemple d’utilisation de la diffusion FIFO q Dans un système de réservation de places dans un avion, les messages possèdent un contexte (lié à l’émetteur) en dehors duquel le message peut être mal interprété. Par exemple, une annulation de réservation n’a de sens que si le message contenant la demande de réservation est connu. Une telle application demande que l’algorithme de diffusion respecte l’ordre FIFO. P 1 m’ : annulation de réservation m : demande de réservation P 2 P 3 21
Diffusion : ordonnancement q Ordre causal : q Si la diffusion d’un message m' dépendait causalement de la diffusion d’un message m, alors un processus correct qui délivre m' délivrera m avant m'. P 1 diffuse m m et P 2 diffuse m’ P 2 m’ P 3 Ce n’est pas un ordre causal car P 3 délivre m’ avant m 22
Exemple d’utilisation de la diffusion causale q P 1 envoie à P 3 et P 4 une commande d’ouverture de vanne, en en rendant compte à P 2. Plus tard P 2 envoie à P 3 et P 4 l’ordre de fermeture de la vanne, en en rendant compte à P 1. q Une telle application demande que l’algorithme de diffusion respecte l’ordre causale. P 1 m : ouverture de vanne m’ : fermeture de la vanne P 2 P 3 P 4 23
Diffusion : ordonnancement q Ordre total : q Si un processus correct délivre m avant de délivrer m', alors tous les autres processus corrects délivreront m avant m'. q Même ordre de délivrance des messages pour tous les processus corrects. P 1 m P 2 m’ P 3 Ce n’est pas un ordre total 24
Exemple d’utilisation de la diffusion totale q Copies multiples d’une donnée (ex: fichier texte) : le fait que toutes les opérations de modifications du fichier en copies multiples soient effectuées dans le même ordre sur toutes les copies suffit à assurer le maintien de la cohérence des copies. P 1 m : supprimer la dernière ligne m’ : ajouter le mot « bye » à la fin P 2 P 3 P 4 25
Diffusion : ordonnancement q Relations entre les ordres : q L’ordre causal implique l’ordre FIFO. q L’ordre FIFO est un ordre causal local : les diffusions lancées localement par le même processus sont en dépendances causales par principe. q L’ordre total est indépendant des ordres FIFO ou causal. q Combinaisons possibles : q Ordre FIFO-total. q Ordre causal-total. 26
Diffusion : ordonnancement q Cas particulier : q Diffusion fiable avec un ordre total : appelé diffusion atomique. q Tous les processus reçoivent tous les messages diffusés et tous dans le même ordre. q On ne «mélange» pas les diffusions, une diffusion doit être «terminée» sur tous les processus avant de pouvoir en exécuter une autre. 27
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal FIFO Causal 28
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ni FIFO ni causal Ordre total Diffusion fiable FIFO Causal 29
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ni FIFO ni causal Diffusion fiable FIFO Ordre total Causal 30
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ni FIFO ni causal Diffusion fiable FIFO Causal Diffusion fiable causale Ordre total 31
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Causal Diffusion fiable causale 32
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Diffusion atomique FIFO Causal Diffusion fiable causale 33
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Diffusion atomique FIFO Causal Diffusion fiable causale Diffusion atomique causale 34
Relations entre les diffusions Diffusion fiable Diffusion atomique Ajouter ordre FIFO Diffusion atomique FIFO Diffusion fiable causale Ajouter ordre total ordre causal Diffusion atomique causale Implication 35
Exercice q Quel le type de cette diffusion ? P 1 m 2 P 2 m 3 P 3 q Pas de perte de message, donc diffusion fiable. q Même ordre de délivrance des messages pour tous les processus corrects : m 1, m 3, m 2 donc ordre total. 36
Types de diffusion fiable q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Diffusion atomique FIFO Causal Diffusion fiable causale Diffusion atomique causale 37
Types de diffusion q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Diffusion atomique FIFO Causal Diffusion fiable causale Diffusion atomique causale 38
Types de diffusion q Au final, 6 combinaisons possibles : Pas d’ordre total Ordre total Ni FIFO ni causal Diffusion fiable Diffusion atomique FIFO Diffusion fiable FIFO Diffusion atomique FIFO Causal Diffusion fiable causale Diffusion atomique causale 39
- Slides: 39