Professional Documents
Culture Documents
d
2
m
2
m
1
d
1
d
2
!
20
22/10/09 ARA: Protocoel de Diffusion 39
Diffusion Causal algorithme
Processus p :
Variable locale :
seqMsg = vide; /* sequence de messages que p a dlivr depuis sa diffusion prcdente */
delv = ; /* messages dlivres */
Causal_broadcast (m)
FIFO_broadcast(seqMsg m); /* diffuser tous les messages dlivrs depuis la diffusion
prcdente + m */
seqMsg = vide;
upon FIFO_deliver(m
1
,m
2
,.. m
n
) do
for i=1.. n do
if m
i
delv then
Causal_delivrer(m
i
) /* dlivrer le message */
delv = { m
i
}
seqMsg = m
i
/*ajouter m
i
la fin de la seqMsg */
22/10/09 ARA: Protocoel de Diffusion 40
Diffusion Causal algorithme
P1
P2
P3
m
2
Avantage :
La dlivrance d'un message n'est pas ajourne en attente d'une condition
Inconvnient
Taille des messages
<m
1
>
<m
1
,m
2
>
<m
1
>
<m
1
>
<m
1
,m
2
> Causal_deliver (m
1
)
Causal_deliver (m
2
)
<m
1
,m
2
>
ignor
Causal_deliver (m
1
) Causal_deliver (m
2
)
Causal_deliver (m
1
)
seqMsg = {m
1
}
deliv = {m
1
}
seqMsg = {m
1
,m
2
}
deliv = {m
2
}
seqMsg = {m
1
,m
2
}
deliv = {m
1
,m
2
}
seqMsg = {m
1
}
deliv = {m
1
}
21
22/10/09 ARA: Protocoel de Diffusion 41
Diffusion Causal algorithme avec horloges
vectorielles (sans garantie de remise)
Historique de messages peut tre reprsent au moyen d'une
d'horloge vectorielle
Variables locales :
HV[N] = {0, 0, , 0}
FA =
Causal_Broadcast(m)
HV[i] += 1
estampiller m avec HV;
envoyer m tous les processus y compris p
HV[k]
m
venant de P
j
reprsente :
k = j : le nombre de messages diffuss par P
j
k j : le nombre de diffusions de P
k
dlivres par P
j
avant diffusion de m.
Isis - Birman 91
Processus P :
22/10/09 ARA: Protocoel de Diffusion 42
Diffusion Causal algorithme avec horloges
vectorielles (sans garantie de remise)
Upon recv(m, HV[]
m
) :
s = sender (m);
FA.queue(< m, HV[]
m
>)
delay delivery of m until
(1) HV[s]
m
= HV[s]
p
+ 1 and (2) HV[k]
m
HV[k]
p
pour tout k; k s
// D'autres rceptions se produisent pendant l'attente. On attend d'avoir dlivr :
// 1- toutes les diffusions prcdentes effectues par s,
// 2- toutes les diffusions dlivres par s avant la diffusion de m
FA.dequeue(< m, HV[]
m
>)
deliver(m);
HV[s]
p
+=1;
(1) : assure que p a dlivr tous les messages de s provenant de s qui prcdent m
(2) : assure que p a dlivr tous les messages dlivrs par s avant que celui-ci envoie m
22
22/10/09 ARA: Protocoel de Diffusion 43
m
1
m
2
m
2
m
1
P1
P2
P3
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
m
1
m
1
m
1
0
0
1
m
2
1
0
1
1
0
1
m
2
1
0
1
Diffusion Causal algorithme avec horloges
vectorielles - Exemple
m
1
P1
P2
P3
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
1
0
1
m
1
m
2
m
2
m
2
1
0
0
m
1
m
2
1
0
1
m
1
m
2
m
1
m
2
et m
2
m
1
22/10/09 ARA: Protocoel de Diffusion 44
Diffusion Atomique - ABCAST
Diffusion atomique = diffusion fiable + ordre total
Tous les processus corrects dlivrent le mme ensemble de messages
dans le mme ordre.
Ordre Total : si les processus corrects p et q dlivrent tous les deux
les messages m et m', alors p dlivre m avant m' seulement si q dlivre
m avant m'.
Exemple d'une diffusion pas atomique
P1
P2
P3
C1
C2
!
m
1
est dlivr aprs m
2
sur P2, alors que
c'est l'inverse sur P1 et P3
m
2
m
1
23
22/10/09 ARA: Protocoel de Diffusion 45
Diffusion Atomique - ABCAST
Rsultat fondamental : Dans un systme asynchrone avec pannes
franches, la diffusion atomique est quivalent au consensus.
Consensus impossible dans un systme
asynchrone avec pannes franches
Diffusion atomique impossible dans un
systme asynchrone avec pannes franches
. Si on dispose d'un algorithme de diffusion atomique, on sait raliser le
consensus
Chaque processus diffuse atomiquement sa valeur propose tous les processus
Tous les processus reoivent le mme ensemble de valeurs dans les mme ordre
Ils dcident la premire valeur
Si on dispose d'un algorithme de consensus, on sait raliser la diffusion
atomique
Diffusion Atomique Consensus
Chandra & Toueg 1996
22/10/09 ARA: Protocoel de Diffusion 46
Remarques :
ABCAST n'est pas ralisable dans un systme asynchrone
si on suppose l'existence de fautes (d'aprs FLP).
ABCAST est ralisable (n nodes):
Avec un dtecteur de pannes de classe P ou S en tolrant n-1
pannes
Avec dtecteur de pannes de classe S en tolrant n/2 -1
pannes
Avec un protocole de diffusion fiable temporise en utilisant
des hypothse de synchronisme.
Diffusion Atomique - ABCAST
24
22/10/09 ARA: Protocoel de Diffusion 47
Diffusion Atomique - algorithmes
Un protocole ABCAST doit garantir l'ordre de remise de
messages et tolrer les dfaillances
L'ordre d'un protocole ABCAST peut tre assur par :
Un ou plusieurs squenceurs
squenceur fixe
squenceur mobile
Les metteurs
base de privilge
Les rcepteurs
Accord des rcepteurs
o Remarques: les algorithmes prsents la suite ne traitent pas les pannes
22/10/09 ARA: Protocoel de Diffusion 48
Diffusion totalement ordonne : Squenceur fixe
m
m,seq#
m,seq#
m,seq#
metteur
squenceur
25
22/10/09 ARA: Protocoel de Diffusion 49
Diffusion totalement ordonne : Squenceur fixe
Principe :
Un processus, le squenceur, est choisi parmi tous les processus
Responsable de l'ordonnancement des messages
metteur envoie le message m au squenceur
Squenceur attribue un numro de squence seq# m
Squenceur envoie le message tous les processus.
22/10/09 ARA: Protocoel de Diffusion 50
Squenceur fixe - algorithme
Emetteur :
OT_broadcast (m)
send m au squenceur;
Destinateur :
upon revc(m) do
pend = {m}
while ( (m',seq#') pend : seq#'=nextdelv) do
OT_deliver (m')
nextdelv++;
pend -= {m'}
Processus P :
Squenceur :
intit :
seq#=1;
upon revc(m) do
send (m,seq#) to processus
seq#++;
Variables locales :
nextdelv = 1;
pend = ;
26
22/10/09 ARA: Protocoel de Diffusion 51
Diffusion totalement ordonne : Squenceur mobile
m
m,seq#
m,seq#
m,seq#
metteur
squenceur
m
m m
squenceur
squenceur
squenceur
destinateur
destinateur
destinateur
jeton
22/10/09 ARA: Protocoel de Diffusion 52
Diffusion totalement ordonne : Squenceur mobile
Principe
Un groupe de processus agissent successivement comme squenceur
Un message est envoy tous les squenceurs.
Un jeton circule entre les squenceurs, contenant :
un numro de squence
Liste de messages dj squencs
Lors de la rception du jeton, un squenceur :
attribue un numro de squence tous les messages pas encore squencs
et envoie ces messages aux destinateurs
Ajoute les messages envoys dans la liste du jeton
Avantages
rpartition de charge
Inconvnients
Taille jeton
cot circulation du jeton
27
22/10/09 ARA: Protocoel de Diffusion 53
Squenceur mobile - algorithme
Emetteur :
OT_broadcast (m)
send m tous les squenceurs;
Destinateur :
upon revc(m) do
pend = {m}
while ( (m',seq#') pend : seq#'=nextdelv) do
OT_deliver (m')
nextdelv++;
pend -={m'}
Squenceur :
intit :
rec = ;
if (p= s
1
)
token.seq# = 1
token.liste = ;
upon revc(m) do
rec = {m}
upon recv(token) do
for each m' in rec \ token.liste do
send (m',token.seq#) tous les
destinateurs
token.seq#++;
token.liste = {m}
send (token) au prochain squenceur
Variables locales :
nextdelv = 1;
pend = ;
22/10/09 ARA: Protocoel de Diffusion 54
m,seq#
m,seq#
m,seq#
metteur
destinateur
destinateur
destinateur
Diffusion totalement ordonne : base de
priorit
metteur
metteur
jeton
metteur
28
22/10/09 ARA: Protocoel de Diffusion 55
Diffusion totalement ordonne : base de
priorit
Principe
Un jeton donne le droit d'mettre
Jeton circule entre les metteurs contenant le numro de squence du
prochain message envoyer.
Lorsqu'un metteur veut diffuser un message, il doit attendre avoir le
jeton
attribue un numro de squence aux messages diffuser
envoie le jeton aux prochains metteurs
Inconvnients
Ncessaire de connatre les metteurs (pas adquat pour de groupe
ouvert)
Pas trs quitable : un processus peut garde le jeton et diffuser un
nombre important de messages en empchant les autres de le faire
22/10/09 ARA: Protocoel de Diffusion 56
Diffusion totalement ordonne : base
de priorit
Destinateur :
upon revc(m) do
pend = { m}
while ( (m',seq#') pend : seq#'=nextdelv) do
OT_deliver (m')
nextdelv++;
pend -={m'}
Variables locales :
nextdelv = 1;
pend = ;
Emetteur :
intit :
send_pend = ;
if (p=s1)
token.seq# = 1
procedure OT_broadcast (m)
send_pend = {m}
upon recv(token) do
for each m' in send_pend do
send (m',token.seq#) tous les
destinateurs
token.seq#++;
send_pend = ;
send (token) au prochain metteur
29
22/10/09 ARA: Protocoel de Diffusion 57
Diffusion totalement ordonne : accord rcepteurs
Principe
Les processus se concertent pour attribuer un numro de
squence chaque message. Chaque diffusion ncessite
deux phases :
diffusion du message et collecte des propositions de
numrotation
choix d'un numro dfinitif et diffusion du numro choisi
22/10/09 ARA: Protocoel de Diffusion 58
Accord rcepteurs
P2
P3
P1
<m, id(m)>
<id(m), n
s3
>
m
m
m
n
s
= max( n
si
)
<id(m), n
s2
>
<id(m), n
s1
> <id(m), n
s
>
E
Les numros proposs sont <date logique rception, identit rcepteur>
pour assurer un ordre total. Chaque processus maintient une file d'attente
des messages en attente de numrotation dfinitive, trie de faon
croissante sur les numros.
30
22/10/09 ARA: Protocoel de Diffusion 59
Accord rcepteurs : algorithme
E diffuse le message m au groupe :
sur rception de m, P
j
attribue m son numro de rception
provisoire, le marque non dlivrable, et l'insre dans sa file d'attente
puis P
j
renvoie E le numro provisoire de m comme proposition de
numro dfinitif
quand E a reu tous les numros proposs, il choisit le plus grand
comme numro dfinitif et le rediffuse
sur rception du numro dfinitif, P
j
rordonne m dans sa file et le
marque dlivrable
puis P
j
dlivre tous les messages marqus dlivrable situs en tte de
la file d'attente
Birman - Joseph 87
22/10/09 ARA: Protocoel de Diffusion 60
Accord rcepteurs : exemple
P1
P2
P3
m
1
m
2
m
3
m
3
m
3
m
1
m
1
m
2
m
2
P1, P2 et P3 diffusent simultanment les trois messages m
1
, m
2
et m
3
(seuls les messages de
l'tapes 1 sont reprsents).
Etape 2 Etape 3 Etape 4
Etape 1
Note : il s'agit d'un exemple d'excution ; la date dfinitive d'un message n'arrive pas
ncessairement dans le mme laps de temps sur tous les processus, ni dans le mme ordre
pour les diffrents messages.
r
c
e
p
t
i
o
n
d
a
t
e
d
f
i
n
i
t
i
o
n
m
1
r
c
e
p
t
i
o
n
d
a
t
e
d
f
i
n
i
t
i
o
n
m
2
r
c
e
p
t
i
o
n
d
a
t
e
d
f
i
n
i
t
i
o
n
m
3
31
22/10/09 ARA: Protocoel de Diffusion 61
Accord rcepteurs : exemple (cont.)
Etape 1 : rception des messages et proposition de numrotation
m
3
15.1
N
m
1
16.1
N
m
2
17.1
N
FA P1
m
2
16.2
N
m
1
17.2
N
m
3
18.2
N
FA P2
m
1
17.3
N
m
3
18.3
N
m
2
19.3
N
FA P3
Etape 2 : rception de la date de dfinitive de m
1
: 17.3
m
3
15.1
N
m
1
17.3
D
m
2
17.1
N
FA P1
m
2
16.2
N
m
1
17.3
D
m
3
18.2
N
FA P2
m
1
17.3
D
m
3
18.3
N
m
2
19.3
N
FA P3
m
1
est dlivr sur P3
22/10/09 ARA: Protocoel de Diffusion 62
Etape 3 : rception de la date de dfinitive de m
2
: 19.3
FA P1 FA P2 FA P3
Etape 4 : rception de la date de dfinitive de m
3
: 18.3
FA P1 FA P2 FA P3
m
1
est dlivr sur P2
m
3
15.1
N
m
1
17.3
D
m
2
19.3
D
m
2
19.3
D
m
1
17.3
D
m
3
18.2
N
m
3
18.3
N
m
2
19.3
D
m
3
18.3
D
m
1
17.3
D
m
2
19.3
D
m
2
19.3
D
m
3
18.3
D
m
3
18.3
D
m
2
19.3
D
m
1
, m
3
puis m
2
dlivrs sur P1
m
3
puis m
2
dlivrs sur P2
m
3
puis m
2
dlivrs sur P3
Accord rcepteurs : exemple (cont.)
32
22/10/09 ARA: Protocoel de Diffusion 63
Diffusion totalement ordonne
tolrance aux fautes
Quelques mcanismes :
Dtecteurs de dfaillance
Redondance
Exemple : squenceur
Stabilit des messages
Un message est k-stable s'il a t reu par k processus.
f dfaillances : un messages (f+1)-stable a t reu par au
moins 1 processus correct. Sa dlivrance peut tre garantie.
Pertes de messages
Numrotation des messages.
22/10/09 ARA: Protocoel de Diffusion 64
Bibliographie
X. Dfago and A. Schiper and P. Urban Total order broadcast and multicast
algorithms: Taxonomy and survey, ACM Comput. Surv., 36(4):372421.
K.Birman, T. Joseph. Reliable communication in presence of failures. ACM
Transactions on Computer Systems, Vol. 5, No. 1, Feb. 1987
K. Birman and R. Cooper. The ISIS Project: Real Experience with a Fault
Tolerant Programming System. Operating Systems Review, Apr. 1991, pages
103-107.
K. Birman, A. Schiper and P. Stephenson. Lightweight Causal and Atomic Group
Multicast. ACM Transactions on Computer Systems, Aug. 1991, (3):272-314.
R. Guerraoui, L. Rodrigues. Reliable Distributed Programming, Springer, 2006
V. Hadzilacos and S. Toueg. A Modular Approach to Fault-tolerant Broadcasts
and Related Problems. Technical Report TR94-1425. Cornell University.
T.Chandra and S.Toueg. Unreliable failure detectors for reliable distributed
systems, Journal of the ACM,Vol.43. No.2, 1996, pages 225-267.