Impossibility of Distributed
Consensus with One Faulty
Process
Michael J. Fischer
Nancy A. Lynch
Michael S. Paterson
1985
Apresentado por Nazareno Andrade
Roteiro
Introdução
 Modelo do sistema
 Prova do resultado
 Conclusões

Introdução

Problema:

Consenso de um sistema de processos
distribuído sobre um valor de um conjunto
pré-determinado.
•
•
•
•
Processamento de dados distribuídos;
Sistemas de arquivos distribuídos;
Aplicações distribuídas tolerantes a falhas;
Etc.
Introdução

Falhas.

O consenso é Impossível em um
sistema assíncrono com possibilidade
de uma falha.

“Nenhum protocolo de consenso
completamente assíncrono pode tolerar
mesmo uma falta.”
Introdução

O sistema não difere entre um processo
lento e um processo morto.

Se o consenso depende de um processo
morto, o sistema esperará para sempre.

O formalismo para estas afirmações
segue.
Modelo do Sistema

Completamente assíncrono





Nenhuma restrição sobre as velocidades
relativas dos processos ou o tempo de
entrega das mensagens;
Não há relógios sincronizados;
Sistema de mensagens confiável;
É impossível detectar a morte de um
processo;
Processos falham por parada.
Modelo do Sistema
Consenso simples (“weak”)



Cada processo começa com um valor em
{0,1}
Um processo correto decide indo para um
valor de decisão em {0,1}
Todos os processos corretos devem escolher o
mesmo valor.
Consenso
simples
(“weak”)
Consenso
mais
complexo
Restrições
fortes
sobre as
falhas
Restrições
fracas
sobre as
falhas
Modelo do Sistema:
Protocolo

Um protocolo de consenso é um
sistema assíncrono de 2 ou mais
processos.


Os processos são autômatos que se
comunicam por meio de mensagens;
As mensagens são entregues por um
sistema de mensagens global confiável.
Modelo do Sistema:
Sistema de mensagens





Uma mensagem é um par (p,m)
Atomic broadcasting assumido;
Não-determinístico;
Mantém um buffer global;
Duas primitivas:


send (p, m):
receive (p):
• É permitido que receive retore  um número
finito de vezes, mesmo se (p,m) está no buffer.
Modelo do Sistema:
Processo

Processo:
• Um registro de input xp
• Um registro de output yp = {b, 0, 1},
inicializado em b e “write once”.
• Capacidade de armazenamento interna
ilimitada
• Xp + Yp + armazenamento interno +
program counter = estado interno.
Xp
Program counter
armazenamento
Yp
Modelo do Sistema:
Execução de um processo

O resultado do processamento depende
do input, da comunicação e das funções
de transição.

Um processo age deterministicamente
de acordo com sua função de transição.

A função altera o estado interno do
processo de acordo com o input

Se Yp  b então o processo está num
estado de decisão.
Modelo do Sistema:
Configuração


Configuração do sistema:
 Estados internos de todos os
processos
 Conteúdo do Buffer de mensagens
Configuração inicial:
 Todos os processos em estado inicial
 Buffer vazio.
Modelo do Sistema:
Steps

Um step primitivo de um processo que
leva uma configuração a outra.
• receive(p) -> novo estado interno ->
envia um número finito de mensagens;

Pode ser definido por um par (p,m) = e,
um evento.
Modelo do Sistema:
Steps (cont.)

e(C) é então a configuração obtida pela
aplicação de e a C;
C0

e0
C1
e1
C2
e2
C3
(p, ) pode ser sempre aplicado  não
há deadlocks.
Modelo do Sistema:
Runs e Schedules


Schedule:  = e1, e2, e3,…, en aplicáveis a
C em ordem.
 Finita ou infinita
Run: s = step1, step2, … stepn
associada.
C0
C0
e0

C1
C3
e1
C2
e2
C3
 = {e0, e1, e2}
Modelo do Sistema:
Mais algumas definições

  finita t.q. (C)=C’  C’ é alcançável
(reachable) a partir de C;

Se C é uma configuração inicial, então
C’ é acessível.

Todas as configurações consideradas
são acessíveis.
Modelo do Sistema:
Lema 1

“Suponha que em alguma configuração C as
schedules 1 e 2 levem às configurações C1
e C2, respectivamente. Se os conjuntos de
processos dando steps em 1 e 2 são
disjuntos, então 2 pode ser aplicado a C1 e
1 pode ser aplicado a C2 e ambas levarão à
mesma configuração C3”.

“Comutatividade” das Schedules.
Modelo do Sistema:
Lema 1 (cont.)

Prova:

Definição do sistema.
P1= {0,b}
1
C0
C1
2
1
2
C2
C3
1
P2 {0, b}
P3{0, b}
2
P1= {0,b}
P1= {1,1}
P2 {1, 0}
P2 {0, b}
P3{1, b}
P3{0, b}
2
P1= {1,1}
P2 {1, 0}
P3{1, b}
1
Modelo do Sistema:
Definições

Uma configuração do sistema possui um
valor de decisão v se algum processo p
está no estado de decisão com yp = v
(v!=b).

Um protocolo de consenso é
parcialmente correto se


Nenhuma configuração acessível possui
mais de um valor de decisão;
Para cada v  {0,1} alguma configuração
acessível tem valor v.
Modelo o Sistema:
Definições

Processo correto - infinitos steps em um run.
Processo falho – número finito de steps

Run admissível:




No máximo um processo é falho
Todas as mensagens enviadas a processos corretos
são eventually recebidas.
Run de decisão:

Algum processo atinge estado de decisão nesta run.
Modelo do Sistema:
Definições

Protocolo consenso totalmente
correto apesar de uma falta:
 Parcialmente correto
 Toda run admissível é uma run de
decisão
•Nenhuma configuração
acessível possui mais de um
valor de decisão;
•Para cada v  {0,1} alguma
configuração acessível tem valor v.
•Toda run admissível é uma run de
decisão
•Consenso
•Não trivialidade
•Terminação
Modelo do Sistema:
Valência

Sendo V o conjunto de valores de
decisão das configurações alcançáveis a
partir de C
 Se | V | = 2, C é bivalente;
 Se | V | = 1, C é univalente;
• V = {1}, C é 1- valente;
• V = {0}, C é 0- valente.
Prova do Resultado:
Teorema
“Nenhum protocolo de consenso é
totalmente correto apesar de uma
falta.”

Prova:


Existe alguma configuração inicial bivalente;
É possível construir uma run admissível que
evite sempre dar o step que decidiria por
um valor.
Prova do Resultado:
Lema 2

“Existe uma configuração inicial
bivalente.”

Prova por contradição
 Hipótese: Não existem estados iniciais
bivalentes.

Pela definição


Configurações iniciais 0 e 1-valentes (não trivialidade).
C0 é 0-valente e C1 é 1-valente
• Existem C0 e C1 que diferem apenas em um
processo p ( que é decisivo ).
Prova do Resultado:
Lema 2
C0
0


1
0
1
1
0
1
0
0
1 C1
Aplicando-se schedules em que p não
dá passos (falha?), o estado interno de
C0 e C1 será idêntico, com exceção de
xp de p
C0 e C1 eventually atingirão um mesmo
valor de decisão.
Prova do Resultado:
Lema 2


Mas C0 e C1 têm valências diferentes.
C0 ou C1 é bivalente  contradição.
C0 - 0-valente
diferem
em xp
 (p não dá passos)
decidem
em v
C1 - 1-valente

“Existe uma configuração inicial
bivalente”.
Prova do Resultado:
Lema 3




Seja C uma configuração bivalende de P
e e=(p,m) um evento que é aplicável a
C.
Seja  o conjnto das configurações
atingíveis a partir de C sem aplicar e, e
 ={ e(E) | E   }.
 possui uma configuração bivalente.
I.e., é possível ir de uma configuração
bivalente a outra por uma schedule
não-vazia.
Prova do Resultado:
Lema 3
Se
C
e
Então * tal que
C
*

E
e
B

bivalente

 possui uma configuração bivalente.
Prova do Resultado:
Lema 3

Prova por contradição
 Hipótese:  não possui nenhuma
configuração bivalente.

Pela definição
 Existem E0 e E1, 0 e 1-valentes,
respectivamente;
Prova do Resultado:
Lema 3

 possui estados 0 e 1-valentes:



E0 é 0-valente
Se E0   então F0 = e(E0)    F0 is 0valente
Se E0   então existe F0   do qual E0 is
reachable  F0 is 0-valente

Em ambos os casos, F0 é 0-valente e pertence
a

Idem para uma configuração 1-valente
Prova do Resultado:
Lema 3

Para e=(p,m) e e’=(p’,m’):

Ca e Cb tal que Ca = e’(Cb)  
• Ca bivalente e Cb 1-valente
D0 = e(Ca)   é 0-valente
 D1 = e(Cb)   é 1-valente

e’
Ca
e
Cb
D0
D1
e’
Prova do Resultado:
Lema 3

se em e=(p,m) e e’=(p’,m’) p’  p’
podemos aplicar o lema1
(comutatividade)
Ca
e’
Cb
D0
e
e
D1
e’
Mas D0 é 0 valente e D1 é 1-valente 
contradição
Prova do Resultado:
Lema 3

A outra possibilidade é p’=p

Considere uma schedule  de uma deciding
run em que p pára. Seja A = (Ca).
C0
e

D0
e

E0
e’
C1
A é bivalente 
e
A
contradição
D1
e’
e

E1
Prova do Resultado:
Lema 3

Pela contradição da hipótese “ não
possui nenhuma configuração
bivalente”, provou-se que

É possível sempre ir de um estado
bivalente a outro por uma schedule
não-vazia.
Prova do Resultado:
Impossibilidade

Pelos lema 2 e 3:



É possível, partindo de uma configuração
inicial em que o resultado não está
previamente determinado construir uma run
admissível que evita para sempre a decisão.
Sempre tomar um passo para outro estado
não determinado.
Esta run será infinita.
Prova do Resultado:
Impossibilidade

Assim, pela contradição da hipótese da
prova:
Não existe um protocolo de
consenso totalmente correto
apesar de uma falha.
Conclusões

O consenso em sistemas totalmente
assíncronos é impossível.

Para possibilitar um consenso
satisfatório é necessário mudar o
modelo



Sincronismo
Introduzir possiblidade de consenso
Prover uma forma de detectar a morte de
processos
Download

C 1 - LSD