You are on page 1of 32

1

22/10/09 ARA: Protocoel de Diffusion 1


Protocoles de Diffusion
Luciana Arantes
Algorithmique rpartie avance - ARA
Master2
22/10/09 ARA: Protocoel de Diffusion 2
Motivation (1)
Application de calcul parallle
Serveur rpliqu
Dans certaines situations, les processus d'un systme rparti (ou un sous-
ensemble de ces processus) doivent tre adresss comme un tout.
P1
P3
P5
P2
P4
rsultat
S1
S3
S5
S2
S4
C
mise
jour
2
22/10/09 ARA: Protocoel de Diffusion 3
Motivation (2)
P1
P2
P3
Application de calcul parallle : si un message est perdu, le calcul s'arrte.
calcul
calcul
calcul
calcul
calcul
calcul
calcul
calcul
(attente rsultat P3)
(attente rsultat P2)
(attente rsultat P2)
P1
P2
P3
Serveur rpliqu : si les messages ne sont pas reus dans le mme ordre sur tous les processus, ils
sont incohrents.
C1
C2
erreur dtecte
mise jour v = 1
v = 2
v = 2
v = 2
v = 1
22/10/09 ARA: Protocoel de Diffusion 4
Diffusion : Dfinition
Un processus metteur envoie un message un
groupe de processus.
Groupe : ensemble de processus (les membres du groupe)
auxquels on s'adresse par des diffusions, et non par des
envois point point.
3
22/10/09 ARA: Protocoel de Diffusion 5
Diffusion : primitives
Primitives de diffusion utilises par le processus
p :
broadcast (m) : le processus p diffuse le message m au
groupe.
deliver (m) : le message m est dlivr au processus p.
La diffusion est ralise au dessus d'un systme
de communication existant.
22/10/09 ARA: Protocoel de Diffusion 6
Architecture
processus application
broadcast(m) deliver(m)
Communication de groupe
send(m) recv(m)
processus application
broadcast(m) deliver(m)
Communication de groupe
send(m) recv(m)
rseau communication
4
22/10/09 ARA: Protocoel de Diffusion 7
Modle d'implmentation
processus
c
o
d
e

a
p
p
l
i
c
a
t
i
f
l
i
b
r
a
i
r
i
e
message diffus reu
f
i
l
e

d
'
a
t
t
e
n
t
e
deliver(m)
broadcast(m)
message diffus mis
send(m, p
1
)
recv(m)
send(m, p
n
)
Les messages sont diffuss par broadcast(m) qui n'est pas
atomique en pratique : elle s'appuie sur la primitive d'envoi
point point send(m, p).
Les messages ne sont pas directement reus par
l'application : ils sont reus par recv(m), mis en
attente, traits puis dlivrs l'application par
deliver(m).
Objectif : implmenter des
primitives boradcastX() et deliverX()
qui garantissent la proprit X.
22/10/09 ARA: Protocoel de Diffusion 8
Diffusion: primitives (2)
Le message envoy chaque processus est le mme, mais le nombre et
l'identit des destinataires est masqu l'metteur, qui les dsigne par
leur groupe d'appartenance. On assure ainsi la transparence de
rplication.
P1
P3
P5
P2
P4
P5 excute broadcast (m)
m
m
m
m
G
m
5
22/10/09 ARA: Protocoel de Diffusion 9
Groupe (1)
Un groupe peut tre :
ferm : broadcast(m) ne peut tre appel que par un membre du groupe
ouvert : broadcast(m) peut tre appel par un processus extrieur au groupe
P1
P3
P5
P2
P4
G
Groupe ferm
P
interdit
P1
P3
P5
P2
P4
G
Groupe ouvert
P
possible
possible
22/10/09 ARA: Protocoel de Diffusion 10
Groupe (2)
Un groupe peut tre :
statique : la liste des membres du groupe est fixe et dtermine au dpart
dynamique : les processus peuvent rejoindre ou quitter le groupe volontairement par
l'intermdiaire d'un service de gestion de groupe
P1
P3
P5
P2
P4
G
Groupe dynamique
quitter()
P3
P5
rejoindre(G)
6
22/10/09 ARA: Protocoel de Diffusion 11
Problmes
Les processus peuvent tomber en panne, notamment au
milieu d'un envoi multiple de message
L'ordre de rception des messages sur les diffrents
processus destinataires n'est pas garanti (entrelancement
d aux latences rseau variables)
Problmes rsoudre
assurer des proprits de diffusion :
garantie de remise des messages
garantie d'ordonnancement des messages reus
22/10/09 ARA: Protocoel de Diffusion 12
Communications et Processus
Communications
Point point
Tout processus peut communiquer avec tout les autres
Canaux fiables : si un processus p correct envoie un message m
processus correct q, alors q finit par le recevoir ("eventually
receives").
Processus
Susceptibles de subir de pannes franches. Suite une panne franche,
un processus s'arrte dfinitivement : on ne considre pas qu'il puisse
ventuellement redmarrer.
Un processus qui ne tombe pas en panne sur toute une
excution donne est dit correct, sinon il est dit fautif.
7
22/10/09 ARA: Protocoel de Diffusion 13
Proprits des diffusions (1)
Garantie de remise
Diffusion Best-effort (Best-effort Broadcast)
Diffusion Fiable (Reliable Broadcast)
Diffusion Fiable Uniforme (Uniform Reliable Broadcast).
Garantie d'ordonnancement
les messages sont dlivrs dans un ordre :
FIFO
Causal
Total
Les garanties de remise et d'ordre sont orthogonales
22/10/09 ARA: Protocoel de Diffusion 14
Diffusion Best-effort
Garantie la dlivrance d'un message tous les processus
corrects si l'metteur est correct.
Problme : pas de garantie de remise si l'metteur tombe
en panne
1. Garantie de Remise: Best Effort
P1
P2
P3
P4
correct
correct
correct
fautif
P2 tombe en panne avant d'envoyer le messages P3
!
8
22/10/09 ARA: Protocoel de Diffusion 15
Diffusion Best-Effort
Spcification
Validit : si p
1
et p
2
sont corrects alors un message m
diffuser par p
1
finit par tre dlivr par p
2
.
Intgrit: un message m est dlivr au plus une fois et
seulement s'il a t diffus par un processus.
Algorithme
Processus P :
BestEffort_broadcast (m)
. envoyer m tous les processus y compris p /* groupe ferm */
upon recv(m) :
BestEffort_deliver(m) /* dlivrer le message */
22/10/09 ARA: Protocoel de Diffusion 16
2. Garantie de Remise : Fiable
Diffusion Fiable (Reliable Broadcast)
si l'metteur du message m est correct, alors tous les
destinataires corrects dlivrent le message m.
si l'metteur du message m est fautif, tous ou aucun
processus corrects dlivrent le message m.
P1
P2
P3
Diffusion fiable
impossible
fautif
correct
correct
9
22/10/09 ARA: Protocoel de Diffusion 17
Diffusion Fiable spcification (1)
Spcification
Validit : si un processus correct diffuse le message m,
alors tous les processus corrects dlivrent m
Accord : si un processus correct dlivre le message m,
alors tous les membres corrects dlivrent m
Intgrit: Un message m est dlivr au plus une fois
tout processus correct, et seulement s'il a t diffus par
un processus.
22/10/09 ARA: Protocoel de Diffusion 18
Diffusion Fiable : principe
Si un processus correct dlivre le message diffus m, alors tout processus
correct dlivre aussi m
P1
P2
P3
! P3 ne recevra pas m
2
alors que P1 si
m
2
m
1 crash
10
22/10/09 ARA: Protocoel de Diffusion 19
Implmentation possible : sur rception d'un message diffus par un autre
processus, chaque processus rediffuse ce message avant de le dlivrer.
P1
P2
P3
m
1
m
2
Diffusion Fiable : principe
22/10/09 ARA: Protocoel de Diffusion 20
Diffusion Fiable : algorithme
Processus P :
Variable locale :
rec = ;
Real_broadcast (m)
estampiller m avec sender(m) et seq#(m);
envoyer m tous les processus y compris p
upon recv(m) do
if m rec then
rec = { m }
if sender(m) != p then
envoyer m tous les processus sauf p
Real_deliver(m) /* dlivrer le message */
Chaque message m est estampill de faon unique
avec :
sender (m) : l'identit de l'metteur
seq#(m) : numro de squence
11
22/10/09 ARA: Protocoel de Diffusion 21
Diffusion Fiable : discussion
Avantages :
la fiabilit ne repose pas sur la dtection de la panne de
l'metteur
l'algorithme est donc valable dans tout modle temporel
Inconvnients :
l'algorithme est trs inefficace : il gnre n (n 1) envois
par diffusion
ce qui le rend inutilisable en pratique
Remarques :
l'algorithme ne garantit aucun ordre de remise
22/10/09 ARA: Protocoel de Diffusion 22
Diffusion Fiable
Problme :
aucune garantie de dlivrance est offerte pour les
processus fautifs
Exemple :
P1
P2
P3
! m
1
crash
Real_broadcastF(m) Real_deliver(m)
P
1
dlivre m et aprs il crash ; P
2
et P
3
ne reoivent pas m
P
1
avant sa dfaillance peut excuter des actions irrversibles comme
consquence de la dlivrance de m
12
22/10/09 ARA: Protocoel de Diffusion 23
3: Garantie de Remise fiable uniforme
Diffusion Fiable Uniforme (UniformReliable
Broadcast)
Si un message m est dlivr par un processus (fautif ou
correct), alors tout processus correct finit aussi par
dlivr m.
22/10/09 ARA: Protocoel de Diffusion 24
Diffusion Fiable Uniforme
Proprit d'uniformit
Une proprit (accord, intgrit) est dite uniforme si elle
s'applique tous les processus : corrects et fautifs.
Diffusion Fiable Uniforme
Validit : si un processus correct diffuse le message m,
alors tous les processus corrects dlivrent m
Accord uniforme : si un processus (correct ou fautif)
dlivre le message m, alors tous les membres corrects
dlivrent m.
Intgrit uniforme: Un message m est dlivr au plus une
fois tout processus (correct ou fautif), et seulement s'il
a t diffus par un processus.
13
22/10/09 ARA: Protocoel de Diffusion 25
Diffusion Fiable Temporise
Diffusion fiable temporise = diffusion fiable +
borne
Systme de communication synchrone
Borne : il existe une constante telle que si un message
m est diffus l'instant t, alors aucun processus correct ne
dlivre m aprs le temps t+ .
22/10/09 ARA: Protocoel de Diffusion 26
Garantie d'ordre (1)
Ordre Total
Les messages sont dlivrs dans le mme ordre tous leurs
destinataires.
Ordre FIFO
si un membre diffuse m
1
puis m
2
, alors tout membre correct qui
dlivre m
2
dlivre m
1
avant m
2
.
Ordre Causal
si broadcast(m
1
) prcde causalement broadcast (m
2
), alors
tout processus correct qui dlivre m
2
, dlivre m
1
avant m
2
.
Observations :
- La proprit d'ordre total est indpendante de l'ordre d'mission
- Les proprits d'ordre FIFO et Causal sont lies l'ordre d'mission
14
22/10/09 ARA: Protocoel de Diffusion 27
Garantie d'ordre (2)
Exemple
Ordre FIFO
Ordre causal
F1
F2
F3 C1
C2
C3
P1
P2
P3
Ordre total
T1
T2
22/10/09 ARA: Protocoel de Diffusion 28
Garantie d'ordre (3)
Remarques :
une diffusion causale est ncessairement FIFO (la
diffusion causale peut tre vue comme une gnralisation
de l'ordre FIFO tous les processus du groupe)
L'ordre FIFO et l'ordre causal ne sont que des ordres
partiels : ils n'imposent aucune contrainte sur l'ordre de
dlivrance des messages diffuss concurremment
l'ordre total n'a pas de lien avec l'ordre FIFO et l'ordre
causal : il est la fois plus fort (ordre total des messages
dlivrs) et plus faible (aucun lien entre l'ordre de
diffusion et l'ordre de dlivrance)
15
22/10/09 ARA: Protocoel de Diffusion 29
Garantie d'ordre - Exemple utilisation (4)
supprimer(o
1
) supprimer(o
1
)
Ordre total : permet de maintenir la cohrence des rpliques d'un serveur en prsence
d'crivains multiples.
Ordre causal : permet de prserver faible cot l'enchanement d'oprations logiquement
lies entre elles.
P1
P2
P3
C1
C2
v = 1
v = 2
v = 1
v = 1
v = 1
P1
P2
P3
insrer(o
1
)
Ordre non causal
insrer(o
1
)
Ordre causal
22/10/09 ARA: Protocoel de Diffusion 30
Garantie d'ordre - Exemple utilisation (5)
Ordre FIFO : permet de maintenir la cohrence des rpliques d'un serveur en prsence d'un
crivain unique.
P1
P2
P3
C1
C2
x = 1
y = 2
x = 2
x = 2
x = 2
x = 2
Les trois garanties d'ordre FIFO, causal et total sont plus ou moins coteuses implmenter :
choisir celle juste ncessaire l'application vise.
16
22/10/09 ARA: Protocoel de Diffusion 31
Types de Diffusion Fiable (1)
Diffusion FIFO = Diffusion fiable + Ordre FIFO
Diffusion Causal (CBCAST) = Diffusion fiable +
Ordre Causal
Diffusion Atomique (ABCAST) = Diffusion fiable +
Ordre Total
Diffusion Atomique FIFO = Diffusion FIFO +
Ordre Total
Diffusion Atomique Causal = Diffusion Causal +
Ordre Total
22/10/09 ARA: Protocoel de Diffusion 32
Types de Diffusion Fiable (2)
Diffusion
Atomique
FIFO
Diffusion
atomique
Diffusion
fiable
Diffusion
Atomique
Causal
Diffusion
Causal
Diffusion
FIFO
ordre total
ordre total
ordre total
ordre FIFO
ordre causal
ordre causal
ordre FIFO
Relation entre les primitives de diffusion [Hadzilacos & Toueg]
17
22/10/09 ARA: Protocoel de Diffusion 33
Diffusion FIFO - motivation
Dans la diffusion fiable il n'y a aucune
spcification sur l'ordre de dlivrance des
messages.
serveur
client
V = 1 V = 2
V = 1
V = 2
V = 2
V = 1
!
22/10/09 ARA: Protocoel de Diffusion 34
Diffusion FIFO
Diffusion FIFO = diffusion fiable + ordre FIFO
Ordre FIFO : si un membre diffuse m
1
puis m
2
, alors tout
membre correct qui dlivre m
2
dlivre m
1
avant m
2
.
Ayant un algorithme de diffusion fiable, il est possible de
le transformer dans un algorithme de diffusion FIFO
18
22/10/09 ARA: Protocoel de Diffusion 35
Diffusion FIFO algorithme (1)
Processus p :
Variable locale :
pendMsg = ; /* message pas encore dlivr */
next [ N ] = 1 pour tous processus; /*seq# du prochain message de q que p doit dlivrer */
FIFO_broadcast (m)
Real_broadcast(m); /*m estampill avec seq# */
upon Real_deliver(m) do
s = sender (m);
pendMsg = { m }
while ( m' PendMsg : sender(m') =s and seq#(m') = next[s]) do
FIFO_delivrer(m) /* dlivrer le message */
next[s]++;
pendMsg -= { m };
22/10/09 ARA: Protocoel de Diffusion 36
p
q
next[p] =2
pendMsg ={ }
next[p] =1
pendMsg ={ }
recv(m
1
)
Real_deliver(m
1
)
FIFO_deliver(m
1
)
m
1
m
2 m
3
next[p] =2
pendMsg ={3}
recv(m
3
)
Real_deliver(m
3
)
recv(m
2
)
Real_deliver(m
2
)
FIFO_deliver(m
2
)
FIFO_deliver (m
3
)
next[p] =4
pendMsg ={}
FIFO_broadcast (m
1
) FIFO_broadcast (m
2
) FIFO_broadcast (m
3
)
Diffusion FIFO algorithme (2)
19
22/10/09 ARA: Protocoel de Diffusion 37
Diffusion Causal - CBCAST
Diffusion Causal = diffusion fiable + ordre Causal
Objectif : dlivrer les messages dans l'ordre causal de leur
diffusion.
Ordre causal : si broadcast(m
1
) prcde causalement
broadcast (m
2
), alors tout processus correct qui dlivre m
2
,
dlivre m
1
avant m
2
.
broadcast
p
(m
1
) broadcast
q
(m
2
) deliver
p
(m
1
) deliver
q
(m
2
)
Causal Order FIFO order
Fifo Order Causal Order
22/10/09 ARA: Protocoel de Diffusion 38
Diffusion Causal
broadcast
p
(m
1
) broadcast
q
(m
2
) deliver
p
(m
1
) deliver
q
(m
2
)
Un algorithme de diffusion FIFO peut tre transform dans un algorithme de
diffusion causal :
transporter avec chaque message diffus l'historique des messages qui le
prcdent causalement.
P1
P2
P3
m
2
est dlivr trop tt sur P2 : il
aurait d attendre m
1
puisque d
1

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.

You might also like