validité (validity) si un processus décide v alors v est une valeur proposéeterminaison (termination) tous les processus corrects decident finalementcoherence (agreement) deux processus corrects ne peuvent decider differemmentintegrite (integrity) un processus doit decider au plus une foisConsensuls resoluble avec ♦S. En effet ♦S est le plus faible detecteur pour resoudre le consensus (minimalite) avec une majorite de processus corrects.
propose(v)le processus appelant propose une valeur initiale v
decide(v)le processus appelant décide v
propose(4) decide(7)
v v
-------------------------------->
propose(4) decide(7)
v v
-------------------------------->
propose(4) decide(7)
v v
-------------------------------->
correct : ne défaille pas pendant toute la dureé de l’exécutionfautif : pas correctfranche (crash) : le processus fautif n’emet plus ni ne recoit de message de facon permanente -> silence sur defaillance (fail-silent), variante faute-visible (fail-stop)omission : transitoiretemporaire : trop tot ou trop tardByzantin : malveillance.______________________________.
|__________________. Byzantine |
|_______. omission | |
| crash | | |
|_______|__________|___________|
Fiable (reliable) : si p execute send(m) vers q et q est correct, alors q recevera mQuasi-fiable (quasi-reliable) : si p execute send(m) vers q et, p et q sont corrects, alors q recevera mEquitable (fair-lossy) : si un processus correct envoie un message m a q une infinite de fois, alors q recevera m(a)syncBorne delta (Δ) sur le temps de transmission si un processus p envoie un message vers q a l’instant t, alors q recoit le message avant t+ΔBorne phi (Φ) sur la vitesse relative des processus si le processus le plus rapide prend x unites de temps pour un traitement, alors le processus le plus lent ne peut pas prendre plus xΦ temps pour faire le meme traitementPermet une detection parfaite
| 2Δ + xΦ |
|------------->|
p -------------------------------->
| u alive? |^ aha
\. /
q -------------------------------->
Dwork, Lynch, Stockmeier - 1998
T appele GST : global stabilization timeGST le systeme est instable (pas de bornes)GST le systeme est stable (bornes)GST est inconnuChandra and Toueg define eight classes of failure detectors, based on when they suspect faulty processes and non-faulty processes. Suspicion of faulty processes comes under the heading of completeness; of non-faulty processes, accuracy.
forte : A partir d’un moment tout processus defaillant est suspecte par tous les processus correctsstrong : Every faulty process is eventually permanently suspected by every non-faulty process.
faible : a partir d’un moment tout processus defaillant est suspecte par un processus correctweak : Every faulty process is eventually permanently suspected by some non-faulty process.There are two temporal logic operators embedded in these statements: “eventually permanently” means that there is some time t0 such that for all times t ≥ t0, the process is suspected. Note that completeness says nothing about suspecting non-faulty processes: a paranoid failure detector that permanently suspects everybody has strong completeness.
Elles sont equivalentes - on peut construir une forte a partir d’une faible.
Task1: repeat forever
{p queries its local failure detector module Dp}
suspects_p <- Dp
send(p, suspects_p) to all
Task2: when receive (q, suspects_q) from some q
output_p <- (output_p U suspects_q) - {q}
forte aucun processus correct n’est suspectefaible il existe au moins un processus correct qui n’est jamais suspectefinalement forte il existe un instant a partir duquel tout processus correct n’est plus suspecte par aucun processus correctfinalement faible il existe un instant a partir duquel au moins un processus correct n’est suspecte par aucun processus correctNote that “strong” and “weak” mean different things for accuracy vs completeness: for accuracy, we are quantifying over suspects, and for completeness, we are quantifying over suspectors. Even a weakly-accurate failure detector guarantees that all processes trust the one visibly good process.
Hypotheses plus facilement utilisables
Completude (Completeness) : un processus defaillant doit etre detecte comme defaillant
Justesse (Accuracy) : un processus correct ne doit pas etre considere comme defaillant
| Justesse | Forte | Faible | Finalement force | Finalement faible |
|---|---|---|---|---|
| Completude forte | P | S | ♦P | ♦S |
| Completude faible | Q | W | ♦Q | ♦W |
- P→ An innocent is never suspected
- <>P→ In the end every innocent will be not guilty
- S → At least one innocent is never suspected
- <>S → In the end at least one innocent is never suspected
- D’où <>S == Omega parce que
- Omega→ Gives you one innocent (who you choose as leader cause you know he is innocent and you can trust him)
Completude faible et forte sont equivalentes (on peut construite une completude forte a partir d’une faible)
Force des detecteurs:
P ---> ♦ P
| |
v v
S ---> ♦ S
Implementations reposant sur des temporisateurs : partiellement synchrones.
Bertier et al
(a terme, plus d’erreur)
GST (Global Stabilization Time), ou il y a une brone inconnue sur les delais de transmission et de traitement des messages
GST) ou on ne fera plus d’erreur (le temporisateur a atteint la borne inconnue)
(a terme plus d’erreur sur 1 processus)
Hypothese reduite a un ensemble de canaux ultimement synchrones.
♦-timely link est un canal ultimement synchrone
♦-j-source au moins j liens sortant sont ultimement ponctuels
Ω peut etre implemente si y a au moins une ♦-j-source correcte (j etant nombre de defaillants)

Propose une liste de processus corrects
Intersection il y a toujours une intersection non vide dans les listes proposesCompletude ultime ultimement, il n’y a pas de processus fautif dans les listes(Ω, ∑) le plus faible detecteur pour realiser le consensus avec n-1 fautes
| Problems | Consensus | k-set agreement | set agreement | Eventual Consistency |
|---|---|---|---|---|
| Shared memory | Ω [LH94] | k-anti-Ω [GK09] | anti-Ω [Z10] | None |
| Message passing | (Ω, ∑) | None | L [DFGT08] | Ω [DKGPS15] |

id leader = id ronde % Nid node != id round %N) attendent:
N rounds tous les processus ont decide (tous ont ete leader)f nombre max de fautes tolereesP_i maintient un vecteur V_i pour stocker les valeurs proposeesf+1 rounds:
P_i diffuse V_i de facon incrementalef+1 rounds
P_i choisit et decide la premiere valeur non vide de son vecteurf < n/2 crashes1, 2, ..., nrondes asyncr’s coordinator = proc(r mod n) +1c:
vv est choisie si c n’est pas suspectePhase1 : timestamp the current value with the last round’s time, and sent it to coordinatorPhase2 : Coord awaits majority of values
PropVal = one val from the newest onesPropValPhase3 : For each correct proc
PropVal : send back ACK, update local valuenackPhase4 :
ack or nack), updates local valueack
WLL07-PDC
GCG01-PODC
BMS03-DSN

BBGHRS16 (Supercomputing)George Bosilca [1]
Aurélien Bouteiller [1]
Amina Guermouche [1]
Thomas Hérault [1]
Yves Robert [1,2]
Pierre Sens [3]
Jack Dongarra [1,4]
University Tennessee Knoxville - 1
ENS Lyon, France - 2
LIP6, Inria Paris, France - 3
University of Manchester, UK - 4
SC’16 – November, 2016

f <= log(n)-1, f being the number of falures, n the number of live processes