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