Datation, délivrance ordonnée - Philippe Queinnec
Transcription
Datation, délivrance ordonnée - Philippe Queinnec
Problème de datation Les protocoles de communication Systèmes et algorithmes répartis Causalité et datation Philippe Quéinnec, Gérard Padiou Département Informatique et Mathématiques Appliquées ENSEEIHT 31 août 2016 Systèmes et algorithmes répartis – III 1 / 29 Problème de datation Les protocoles de communication plan 1 Problème de datation Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern 2 Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Systèmes et algorithmes répartis – III 2 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Plan 1 Problème de datation Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern 2 Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Systèmes et algorithmes répartis – III 3 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Problème de base et difficultés Comment dater les événements d’une exécution répartie ? Pas d’horloge globale Tous les événements ne sont pas causalement liés Datation cohérente avec la relation causale : ∀e, e 0 : e ≺ e 0 ⇒ de < de 0 Exemple Idée : → Utiliser les horloges matérielles de chaque site Risque : Datation incohérente de l’événement de réception d’un message : la date de réception précède la date d’émission Possible si l’horloge du site de réception est en retard (suffisamment) sur celle du site de l’émetteur Systèmes et algorithmes répartis – III 4 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Temps réel Difficultés Cohérence avec la causalité Datation définissant un ordre total Solutions Nécessite une synchronisation des horloges locales : invariant max (hi ) − min (hi ) < i=1..N i=1..N Protocole de synchronisation d’horloges possible mais dans des contextes réseaux assurant une certaine qualité de service ou par l’usage d’un signal diffusé (horloge atomique) Systèmes et algorithmes répartis – III 5 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Temps logique Principes de base Compter les événements au lieu du temps réel Associer à chaque site une horloge logique locale Surcharger les messages avec leur date d’émission Recaler si nécessaire l’horloge locale d’un site lors de chaque réception de message Avantage : vision plus abstraite d’un calcul réparti Systèmes et algorithmes répartis – III 6 / 29 Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Problème de datation Les protocoles de communication Une tentative. . . Un compteur horloge sur chaque site Surcharge des messages et recalage de compteur A 0 (1) (2) (3) a1 1 a2 2 a3 <3,m2> <1,m1> B C , , / <5,m3> 5 4 0 0 Recalage (6) a4 3 2 c1 (2) b1 (4) b2 (5) c2 (3) 6 (6) b3 6 <6,m4> 7 3 c3 (7) e ≺ e 0 ⇒ d(e) < d(e 0 ) Mêmes dates ⇒ pas causalement liés mais d(e) < d(e 0 ) ; e ≺ e 0 (ex : d(c2 ) < d(b3 ) ; c2 ≺ b3 ) Systèmes et algorithmes répartis – III 7 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Horloge de Lamport Propriétés Introduit un ordre total entre événements → Dates distinctes pour tout couple d’événements Date = (numéro de site, compteur local) ⇒ ordre total sur les sites (par leur numéro) struct Date { int s; // numéro de site int cpt; // compteur d’événements } bool prec (Date d1, Date d2) { return (d1.cpt < d2.cpt) || ((d1.cpt == d2.cpt) && (d1.s < d2.s)); } Systèmes et algorithmes répartis – III 8 / 29 Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Problème de datation Les protocoles de communication Actions associées aux événements L’événement est daté avec le résultat de l’action. Type d’événement sur un site s Événement interne sur s Émission sur s de m Action sur le site s Hs ← Hs + 1; Hs ← Hs + 1; envoi de hHs , mi ; Hs ← max(Hs , dm) + 1; Réception sur s de hdm, mi A B C 0 0 (A,1) a1 1 (A,2) (A,3) a2 2 a3 4 b1 (B,4) c1 (C,2) Systèmes et algorithmes répartis – III 2 (A,7) a5 6 <(B,5),m3> <(A,3),m2> <(A,1), m1> 0 (A,6) a4 3 5 6 7 <(A,7),m5> b2 (B,5) b3 <(B,6),m4> (B,6) 7 3 c2 c3 (C,3) (C,7) 8 c4 (C,8) c5 (C,9) 9 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Horloge vectorielle de Fidge-Mattern (1988) Propriétés datation isomorphe à l’ordre causal utilisation de vecteurs de dimension égale au nombre de sites coût plus élevé : surcharge des messages par un vecteur Pour un événement e, HV (e)[i] = nombre d’événements du passé de e sur pi (y compris e) Expression des relations entre dates ∆ D ≤ D 0 = ∀i : D[i] ≤ D 0 [i] ∆ D < D 0 = D ≤ D 0 ∧ ∃k : D[k] < D 0 [k] ∆ D k D 0 = ¬(D < D 0 ) ∧ ¬(D 0 < D) Systèmes et algorithmes répartis – III 10 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Actions associées aux événements L’événement est daté avec le résultat de l’action. Type d’événement sur un site s Événement interne sur s Émission sur s de m Réception sur s de hdm, mi A B (0,0,0) (0,0,0) a1 (1,0,0) a2 (2,0,0) a3 <(1,0,0), m1> (3,0,0) <(3,0,0),m2> (3,1,0) b1 C (0,0,0) Systèmes et algorithmes répartis – III c1 Action sur le site s Hs [s] ← Hs [s] + 1 Hs [s] ← Hs [s] + 1 envoi de hHS , mi Hs [s] ← Hs [s] + 1 Hs [s 0 ] ← max(Hs [s 0 ], dm[s 0 ]), ∀s 0 6= s (1,0,1) a4 (4,2,0) <(3,2,0),m3> (3,3,0) (3,2,0) b2 b3 c2 <(3,3,0),m4> (1,0,2) c3 (3,3,3) 11 / 29 Problème de datation Les protocoles de communication Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern Horloge vectorielle de Fidge-Mattern Datation isomorphe à l’ordre causal e ≺ e 0 ⇔ D(e) ≤ D(e 0 ) et e k e 0 ⇔ D(e) k D(e 0 ) Coupure Date d’une coupure C = (c1 , . . . , cn ) : ∆ HV (C ) = sup(HV (c1 ), . . . , HV (cn )) C2 ⊂ C1 ⇔ HV (C2 ) < HV (C1 ) C cohérente ⇔ HV (C ) = hHV (c1 )[1], . . . , HV (cn )[n]i Soit C cohérente. Alors ∀i, j : HV (ci )[i] ≥ HV (cj )[i]. L’incrémentation de HV (ci )[i] ne peut venir que d’un événement local ou résulter d’un message provenant du passé. Soit C non cohérente. ⇒ il existe un événement ei hors coupe qui est dans le passé causal de C ⇒ Sur le site i : HV (ci )[i] < HV (ei )[i] et HV (ei )[i] ≤ HV (C )[i] ⇒ HV (C )[i] > HV (ci )[i], donc HV (C ) 6= (HV (c1 )[1], . . . , HV (cn )[n]) Systèmes et algorithmes répartis – III 12 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Plan 1 Problème de datation Temps réel vs temps logique Horloge de Lamport Horloge vectorielle de Fidge-Mattern 2 Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Systèmes et algorithmes répartis – III 13 / 29 Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Problème de datation Les protocoles de communication Protocole FIFO S1 e1 m2 m1 e2 e1 e2 S2 m1 r2 r1 r1 Non FIFO m2 FIFO r2 m0 m ∀m, m0 : s1 −→ s2 ∧ s1 −→ s2 ∧ e(m) ≺ e(m0 ) ⇒ r (m) ≺ r (m0 ) S1 S2 e1 e2 m1 m2 r2 r1 d1 d2 délivrance 6= réception Systèmes et algorithmes répartis – III 14 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Protocole causalement ordonné Objectif : Mettre de l’ordre Réceptions incohérentes par rapport aux émissions P1 e1 P2 e2 m2 r2 e3 m1 m3 P3 r3 r1 r3 ≺ r1 alors que e1 ≺ e3 ⇒ délivrance 6= réception Systèmes et algorithmes répartis – III 15 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Protocole FIFO Objectif Garantir la cohérence des réceptions sur un même site par rapport à leur éventuelle émission depuis un même site ⇒ réordonner les messages reçus sur un site Trois événements au lieu de deux par message : l’émission e, la réception r , la délivrance d. Causalité : e ≺ r ≺ d S’exprime par la propriété : m m0 ∀s1 , s2 , m, m0 : s1 −→ s2 ∧ s1 −→ s2 ∧ e(m) ≺ e(m0 ) ⇒ d(m) ≺ d(m0 ) Systèmes et algorithmes répartis – III 16 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Protocole FIFO Réalisation : il suffit de numéroter les messages pour chaque canal (couple site d’émission, site de réception) Récepteur pour un canal : type Message = hcontenu, numéroi; int prochain = 0; SortedSet<Message> enAttente; // trié par numéro while (true) { recevoir m; enAttente.add(m); while (enAttente.first().numéro == prochain) { m ← enAttente.removeFirst(); délivrer m.contenu prochain++; } } Systèmes et algorithmes répartis – III 17 / 29 Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Problème de datation Les protocoles de communication Protocole causalement ordonné Objectif Garantir la cohérence des réceptions sur un même site par rapport à leur causalité éventuelle en émission ⇒ réordonner les messages reçus sur un site Trois événements au lieu de deux par message : l’émission e, la réception r , la délivrance d. Causalité : e ≺ r ≺ d S’exprime par la propriété : ∀s, m, m0 : Systèmes et algorithmes répartis – III m m0 −→ s ∧ −→ s ∧ e(m) ≺ e(m0 ) ⇒ d(m) ≺ d(m0 ) 18 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Histoire causale Histoire causale d’un message Hc (m) L’histoire causale Hc (m) d’un message m est l’ensemble des messages qui ont leurs événements d’émission précédant causalement l’émission de m : Hc (m) = {m0 : e(m0 ) ≺ e(m)} Critère de délivrance d’un message Un message m est délivré sur un site s ssi tous les messages de son histoire causale ayant aussi s comme site de destination ont été déjà délivrés : m ∀s, m0 ∈ Hc (m) : −→ s ∧ Systèmes et algorithmes répartis – III m0 −→ s ∧ ⇒ d(m0 ) ≺ d(m) 19 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Histoire causale : exemple Exemple Hc (m10 ) = {m8 , m4 , m9 , m7 , m1 , m6 , m3 , m2 } Hc (m6 ) = {m3 } Hc (m8 ) = {m4 , m1 , m2 } Systèmes et algorithmes répartis – III 20 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Approche par surcharge (piggybacking) Principe Surcharger chaque message avec l’histoire des messages qui le précèdent causalement Dans le contexte du courrier électronique : Approche similaire du réexpédier avec copie de ce que l’on a reçu Exemple A e1 e <m1,C>,m <>,m1 e2 B r <(m1,C);(m,B)>, m2 C r2 d1 d2 r1 message ignoré Systèmes et algorithmes répartis – III 21 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Approche par surcharge (piggybacking) Mise en œuvre , / Simple et apport d’une certaine tolérance aux pertes de messages par redondance Messages de + en + longs ⇒ Quand, Comment réduire les histoires ? Exemple A <>,m1 <(m1,C)>,m3 <(m1,C);...>,m5 B <(m1,C)>,m2 <(m2,B);(m3,B)>,m4 C Éliminer (m1,C) car B sait que C a reçu m1 Systèmes et algorithmes répartis – III 22 / 29 Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Problème de datation Les protocoles de communication Datation, premier essai. . . Datation causale (horloge vectorielle) Permet la détection des anomalies en réception MAIS pas leur prévention A e1 e 1 < 0 ,M1> B C e2 0 r 2 < 2 ,M2> 0 r2 2 2 0 Systèmes et algorithmes répartis – III r1 1 0 0 23 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Approche par compteurs (Raynal) Structures de données ⇒ Représenter l’histoire causale de chaque message Chaque site Ss gère : MPs : une matrice de précédence causale MPs [i, j] = nombre de messages émis de Si vers Sj , connu de Ss Derniers : un vecteur de compteurs des messages reçus de chaque site Derniers [i] = nombre de messages reçus du site Si sur Ss Tout message est surchargée par une copie de la matrice MP du site émetteur Systèmes et algorithmes répartis – III 24 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Actions associées aux événements Type d’événement sur un site s Émission sur s de M vers s 0 Réception sur s de hMP, Mi issu de s 0 Délivrance sur s de hMP, Mi issu de s 0 Action sur le site s MPs [s, s 0 ] + + envoi de hMPs , Mi MPs ← max(MP, MPs ) Derniers [s 0 ] + + ∆ Délivrable(M) = Derniers [s 0 ] = MP[s 0 , s] ∧ ∀i 6= s : Derniers [i] ≥ MP[i, s] ∆ M Délivrable = FIFO entre s 0 et s et il ne précède pas les messages dont l’émission le précède causalement. Systèmes et algorithmes répartis – III 25 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Contrôle des délivrances Systèmes et algorithmes répartis – III 26 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Horloges de plus en plus précises Horloges de Lamport Passé de l’ensemble du système, connu de s, réduit à la longueur de la plus longue chaı̂ne causale aboutissant à l’événement Horloges vectorielles Connaissance de premier ordre : passé de s 0 que s connaı̂t, connaissance par s que s 0 a eu un certain nombre d’événements Horloges matricielles Connaissance de second ordre : connaissance par s de la connaissance par s 0 du passé de s 00 . Par exemple, permet de savoir que tous les sites connaissent un événement donné Systèmes et algorithmes répartis – III 27 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Diffusion causalement ordonnée La diffusion ordonnée est plus simple que la communication point-à-point ! Approche par matrice causale Il suffit de gérer un vecteur d’émission au lieu d’une matrice Toutes les lignes sont identiques : un processus envoie le même nombre de messages à tous A (1,0,0) (1,0,0) B (1,1,0) C (1,1,0) (1,1,1) Défaut de causalité Vecteur local (a,b,c) (0,0,0) Systèmes et algorithmes répartis – III 28 / 29 Problème de datation Les protocoles de communication Délivrance ordonnée Protocoles ordonnés Protocole causalement ordonné Diffusion causalement ordonnée Conclusion Datation logique des événements Protocoles de communication ordonnés Distinction réception / délivrance Systèmes et algorithmes répartis – III 29 / 29