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