Professional Documents
Culture Documents
Motivation (1)
Dans certaines situations, les processus d'un systme rparti (ou un sousensemble de ces processus) doivent tre adresss comme un tout.
S1
P2
S2
P1
mise
jour
rsultat
P3
S3
S4
P5
P4
S5
Motivation (2)
P1
calcul
calcul
calcul
calcul
calcul
erreur dtecte
calcul
calcul
calcul
P2
P3
Application de calcul parallle : si un message est perdu, le calcul s'arrte.
mise jour
C1
v=1
v=2
C2
v=2
P1
v=1
P2
v=2
P3
Serveur rpliqu : si les messages ne sont pas reus dans le mme ordre sur tous les processus, ils
sont incohrents.
22/10/09
Diffusion : Dfinition
22/10/09
Diffusion : primitives
22/10/09
Architecture
processus application
broadcast(m)
deliver(m)
processus application
broadcast(m)
Communication de groupe
send(m)
recv(m)
deliver(m)
Communication de groupe
send(m)
recv(m)
rseau communication
22/10/09
Modle d'implmentation
broadcast(m)
deliver(m)
librairie
file d'attente
send(m, p1)
code applicatif
recv(m)
send(m, pn)
message diffus reu
22/10/09
processus
P5
22/10/09
P3
P4
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
interdit
possible
P2
P2
P1
P1
P3
P3
P5
P5
P4
P4
G
possible
Groupe ouvert
Groupe ferm
22/10/09
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
P2
quitter()
P1
P3
P5
P5
P3
P4
G
rejoindre(G)
Groupe dynamique
22/10/09
10
Problmes
Problmes rsoudre
22/10/09
11
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
12
Garantie de remise
Garantie d'ordonnancement
FIFO
Causal
Total
22/10/09
13
Diffusion Best-effort
correct
P2
fautif
!
P3
correct
P4
correct
14
Diffusion Best-Effort
Spcification
Validit : si p1 et p2 sont corrects alors un message m
diffuser par p1 finit par tre dlivr par p2.
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
upon recv(m) :
BestEffort_deliver(m)
22/10/09
/* groupe ferm */
/* dlivrer le message */
ARA: Protocoel de Diffusion
15
P1
correct
P2
fautif
P3
correct
impossible
22/10/09
Diffusion fiable
16
Spcification
22/10/09
17
P1
m1
P2
crash
m2
P3
22/10/09
18
m1
P2
m2
P3
22/10/09
19
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 */
22/10/09
20
10
Avantages :
Inconvnients :
Remarques :
22/10/09
21
Diffusion Fiable
Problme :
Exemple :
Real_broadcastF(m)
Real_deliver(m)
crash
P1
!
m1
P2
P3
22
11
22/10/09
23
Proprit d'uniformit
22/10/09
24
12
22/10/09
25
Ordre FIFO
Ordre Causal
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
22/10/09
26
13
Exemple
F2
C2
T1
P1
P2
P3
F1
F3
C1
Ordre FIFO
C3
T2
Ordre causal
22/10/09
Ordre total
27
Remarques :
22/10/09
28
14
C1
v=2
C2
v=1
P1
v=1
P2
v=1
P3
insrer(o1)
insrer(o1)
P2
supprimer(o1)
P3
supprimer(o1)
Ordre causal
29
x=1
x=2
y=2
x=2
P1
x=2
P2
x=2
P3
Les trois garanties d'ordre FIFO, causal et total sont plus ou moins coteuses implmenter :
choisir celle juste ncessaire l'application vise.
22/10/09
30
15
22/10/09
31
ordre total
Diffusion
atomique
ordre FIFO
ordre FIFO
Diffusion
FIFO
ordre total
Diffusion
Atomique
FIFO
ordre causal
ordre causal
Diffusion
Causal
ordre total
Diffusion
Atomique
Causal
32
16
V=2
V=2
serveur
V=1
V=2
!
V=1
client
22/10/09
33
Diffusion FIFO
22/10/09
34
17
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
35
FIFO_broadcast (m2)
m2
FIFO_broadcast (m3)
m3
m1
recv(m1)
Real_deliver(m1)
FIFO_deliver(m1)
q
next[p] =1
pendMsg ={ }
22/10/09
recv(m3)
Real_deliver(m3)
next[p] =2
pendMsg ={ }
next[p] =2
pendMsg ={3}
recv(m2)
Real_deliver(m2)
FIFO_deliver(m2)
FIFO_deliver (m3)
next[p] =4
pendMsg ={}
36
18
22/10/09
37
Diffusion Causal
broadcastp(m1) broadcastq(m2) deliverp(m1) deliverq(m2)
P1
d1
m1
P2
P3
m2
d2
38
19
seqMsg = vide;
/* dlivrer le message */
/*ajouter mi la fin de la seqMsg */
39
P1
<m1> Causal_deliver (m )
1
<m1>
<m1>
P2
<m1,m2>
<m1,m2>
P3
Causal_deliver (m1)
seqMsg = {m1}
deliv = {m1}
Causal_deliver (m1)
Causal_deliver (m2)
ignor
seqMsg = {m1,m2}
deliv = {m1,m2}
m2
Causal_deliver (m2)
<m1,m2>
seqMsg = {m1,m2}
deliv = {m2}
Avantage :
La dlivrance d'un message n'est pas ajourne en attente d'une condition
Inconvnient
Taille des messages
22/10/09
40
20
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
22/10/09
Isis - Birman 91
41
22/10/09
42
21
0
0
0
1
0 m1
0
0
0
0
m1
0
0
0
P3
1
m2 0
1
1
0
0
1
0 m2
1
m1
P2
P3
m2
1
0
0
1
0
1
m1
m2
m2
m1
P1
m2
m2
0
0
0
1
0
0
0
0
0
m1
0
0
1
0
0
0
et
m1
m2
m1
1
m2 0
1
1
0
0
1
0
1
m1
m2
m
ARA: Protocoel de2 Diffusion
22/10/09
1
0
1
m1
43
m1
m2
P1
!
P2
P3
22/10/09
44
22
Consensus
Chandra & Toueg 1996
22/10/09
45
Remarques :
22/10/09
46
23
Un ou plusieurs squenceurs
squenceur fixe
squenceur mobile
Les metteurs
base de privilge
Les rcepteurs
Accord des rcepteurs
22/10/09
47
squenceur
m,seq#
m
m,seq#
m,seq#
metteur
22/10/09
48
24
Principe :
22/10/09
49
Squenceur :
intit :
seq#=1;
upon revc(m) do
send (m,seq#) to processus
seq#++;
22/10/09
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'}
50
25
squenceur
m,seq#
m
m
metteur
destinateur
m,seq#
jeton
squenceur
m,seq#
destinateur
squenceur
destinateur
squenceur
22/10/09
51
Principe
Avantages
Inconvnients
22/10/09
Taille jeton
cot circulation du jeton
ARA: Protocoel de Diffusion
52
26
Squenceur :
intit :
rec = ;
if (p= s1)
token.seq# = 1
Emetteur :
token.liste = ;
OT_broadcast (m)
upon revc(m) do
send m tous les squenceurs;
rec = {m}
upon recv(token) do
Destinateur :
for each m' in rec \ token.liste do
upon revc(m) do
send (m',token.seq#) tous les
pend = {m}
destinateurs
while ( (m',seq#') pend : seq#'=nextdelv) do
token.seq#++;
OT_deliver (m')
token.liste = {m}
send (token) au prochain squenceur
nextdelv++;
pend -={m'}
22/10/09
53
metteur
m,seq#
destinateur
metteur
m,seq#
jeton
m,seq#
destinateur
metteur
destinateur
metteur
22/10/09
54
27
Principe
Inconvnients
22/10/09
55
Emetteur :
intit :
send_pend = ;
if (p=s1)
token.seq# = 1
procedure OT_broadcast (m)
send_pend = {m}
Destinateur :
upon recv(token) do
upon revc(m) do
for each m' in send_pend do
pend = { m}
send (m',token.seq#) tous les
while ( (m',seq#') pend : seq#'=nextdelv) do
destinateurs
OT_deliver (m')
token.seq#++;
nextdelv++;
send_pend = ;
pend -={m'}
send (token) au prochain metteur
22/10/09
56
28
Principe
22/10/09
57
Accord rcepteurs
ns = max( nsi )
E
<m, id(m)>
P1
<id(m), ns1>
<id(m), ns>
<id(m), ns2>
<id(m), ns3>
P2
P3
22/10/09
58
29
22/10/09
59
m3
m1
m2
Etape 2
Etape 3
Etape 4
Etape 1
m2
m1
m3
P2
P3
m1
m3
P1
m2
P1, P2 et P3 diffusent simultanment les trois messages m1, m2 et m3 (seuls les messages de
l'tapes 1 sont reprsents).
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.
22/10/09
60
30
m1
16.1
N
FA P2
m2
16.2
N
m2
17.1
N
m1
17.2
N
FA P3
m1
17.3
N
m3
18.2
N
m3
18.3
N
m2
19.3
N
m2
17.1
N
FA P2
m1
17.3
D
m2
16.2
N
m1
17.3
D
FA P3
m1
17.3
D
m3
18.2
N
m3
18.3
N
m2
19.3
N
61
m1
17.3
D
FA P2
m2
19.3
D
m1
17.3
D
m3
18.2
N
FA P3
m2
19.3
D
m3
18.3
N
m2
19.3
D
m3
18.3
D
FA P2
m2
19.3
D
m1, m3 puis m2
dlivrs sur P1
22/10/09
m3
18.3
D
m2
19.3
D
m3 puis m2
dlivrs sur P2
ARA: Protocoel de Diffusion
FA P3
m3
18.3
D
m2
19.3
D
m3 puis m2
dlivrs sur P3
62
31
Quelques mcanismes :
Dtecteurs de dfaillance
Redondance
Exemple : squenceur
Pertes de messages
22/10/09
63
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.
22/10/09
64
32