the byzantine generals problem dione taschetto rafael tweedie campos

29
The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

The Byzantine Generals Problem

Dione Taschetto

Rafael Tweedie Campos

Page 2: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Introdução¹

Sistemas de computação podem confrontar-se com diferentes situações conflitantes durante a execução de um sistema;

Um sistema de computador confiável deve ser capaz de lidar com a falha de um ou mais dos seus componentes.

Page 3: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Introdução²

Supõe-se que, normalmente quando um componente falha ele se comporta de maneira arbitrária.

O problema de alcançar um entendimento, onde os componentes podem falhar de maneira arbitrária, é chamado de Problemas Gerais Bizantinos.

Page 4: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O Problema

Considere um sistema distribuído com vários nós, onde eles trocam informações entre si através de mensagens.

Os nós podem falhar, e um nó defeituoso pode mandar valores diferentes a nós distintos, relativos à mesma informação.

Page 5: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O objetivo

O objetivo básico é atingir um consenso entre os nós não defeituosos sobre os valores corretos.

Cada nodo deve tomar uma decisão baseada nos valores recebidos dos outros nodos, e todos os nós não defeituosos devem tomar a mesma decisão.

Page 6: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O Consenso Distribuído

O Consenso é um problema fundamental em Sistemas Distribuídos

utilizado como módulo fundamental de vários algoritmos onde os processos precisam ter uma visão (ou ação) idêntica.

Exemplos: - para ordenação total de eventos (ou mensagens) - sobre o conjunto de processos não falhos/ativos de um grupo - colaboração entre agentes em sistemas multi-agentes

Page 7: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O Problema de Consenso

Existem N processos, dos quais f processos apresentam falhas.

cada processo Pi propõe um único valor vi ∈ D. todos os processos interagem para a troca de valores

entre sí. em algum momento, os processos entram no estado

“decided” em que atribuem um valor para a variável de decisão di (que não é mais alterada)

O valor de di é uma função dos valores vi fornecidos pelos N-f processos corretos.

Page 8: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Exemplo

Algoritmo Consenso

P1 P2

P3

v3=NOK

v1=OK v2=OKd1=OK d2=OK

-P3 propõe NOK, mas falha durante o consenso

-Os processos corretos decidem por OK

Page 9: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Consenso - Principais Requisitos

Terminação: Em algum momento, cada processo correto atinge o estado

“decided” e atribui um valor à variável de decisão. Acordo:

todos os processos corretos atribuem o mesmo valor para a variável de decisão

Integridade se todos os processos corretos propuseram o mesmo valor vi =v,

então qualquer processo correto em “decided” também terá decidido di =v

Integridade (alternativa mais fraca – depende da aplicação) o valor de di (i=1,2,..,N) deve ser necessariamente igual ao valor

proposto por um Pi correto

Page 10: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O Consenso com falhas

Se processos podem ter falhas tipo crash (omissão), então a terminação não estará garantida, a menos que se detecte a falha.

Se o sistema é assíncrono, pode ser impossível distinguir um crash de uma mensagem que demora um tempo indeterminado.

Se processos podem apresentar falhas arbitrárias (bizantinas), então processos falhos podem comunicar valores aleatórios aos demais processos, evitando que os corretos tenham a mesma base de dados {v1,v2,..,vN}, para a tomada de uma decisão uniforme.

Page 11: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

O problema dos Generais Bizantinos Invasão do império Bizantino pelos Turcos

Os generais bizantinos devem concordar se atacam ou recuam; Os turcos tentam corromper os soldados; Os generais bizantinos são famosos pela sua traição; Os generais leais devem prevenir alarmes falsos; As mensagens são mandadas para todos os campos de

batalha; Soldados corrompidos violam o protocolo; Soldados corrompidos não podem alterar as ordens de

soldados leais.

Page 12: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Consenso

Os generais devem chegar a um consenso se atacam ou se recuam. Se todos os generais bizantinos atacarem, a vitória é certa; Se nenhum general bizantino atacar, o império sobrevive; Mas se apenas alguns generais bizantinos atacarem, então o império

ruirá.

Page 13: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Tipos de Problemas

Com um líder: O líder envia uma ordem para todos os

participantes, e os participantes sem falhas, decidem se aceitam a ordem do líder ou se declinam, dependendo do nº de participantes com falhas.

Sem líder: Todos os participantes possuem um voto inicial, e

no decorrer do processo os participantes sem falhas escolhem uma mesma saída.

Page 14: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Tipos de Problemas

Problema Síncrono: A cada turno todos os participantes enviam e recebem suas decisões.

o algoritmo proposto para resolver o problema dos Generais Bizantinos é para sistemas distribuídos síncronos.

Problema Assíncrono: Cada participante é livre para enviar e receber sua decisão, a hora que

desejar. Em um sistema distribuído assíncrono, é impossível atingir um acordo. Isto

ocorre pois em tais sistemas não é possível distinguir se o nodo falhou ou está mais lento que os demais. Conseqüentemente, um nodo falho pode bloquear o algoritmo de acordo, simplesmente por não enviar uma mensagem.

Page 15: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Soluções e Limitações

Existem basicamente duas abordagens de protocolos:mensagens comunsmensagens assinadas

Page 16: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagens Comuns O Problema de Acordo Bizantino é difícil porque a informação

enviada por um nodo pode não ser correta.

Assim, o problema pode ser resolvido somente se o número de nodos defeituosos no sistema for limitado.

Com mensagens comuns é impossível resolver o problema, a não ser que mais do que 2/3 dos nodos sejam não falhos. Ou seja o número de nodos falhos deve ser menor que 1/3 do total de nodos.

Para lidar com M nodos falhos é necessário 3M+1nodos para resolver o consenso.

Page 17: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagens Comuns Este protocolo supõe um nodo livre de falhas que executa o

protocolo corretamente, e que um nodo defeituoso pode se comportar arbitrariamente.

Primeiramente deve-se definir precisamente as suposições sobre o sistema de encaminhamento de mensagens: 1. Toda mensagem que é enviada por um nodo é entregue

corretamente pelo sistema de mensagens ao receptor (assegura que um nodo falho não pode interferir na comunicação).

2. O receptor de uma mensagem sabe qual nodo enviou a mensagem (assegura que existe um canal físico dedicado entre dois nodos).

3. A falta de uma mensagem pode ser detectada (assegura que um nodo falho não vai travar o consenso, isso é implementada através de timeouts, um valor default é considerado).

Page 18: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagens Comuns Se uma mensagem enviada por um nodo

não chega a seu destino, ou este nodo transmissor não envia a mensagem que deveria mandar, o nodo receptor usa um valor default (ex.:0). Este algoritmo funciona em rodadas, onde cada uma consiste na troca de mensagens entre nós.

Page 19: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagens Comuns Na primeira rodada, o transmissor envia valores para

os outros (n-1) nodos. Os receptores não podem acreditar nos valores

recebidos pelo transmissor, pois ele pode ser defeituoso. Assim, um nodo receptor primeiro determina os valores que os outros nodos receberam do transmissor.

O valor da maioria é assumido como o valor enviado pelo transmissor.

Em outras palavras, cada receptor precisa comunicar os valores recebidos do transmissor (na primeira rodada) para os outros nós na segunda rodada.

Page 20: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagens Comuns Na segunda rodada, cada um dos receptores atua

como um transmissor, e envia mensagens aos outros nós, exceto o transmissor e ele mesmo (n-2). Isto se repete recursivamente, onde em cada rodada um nó envia mensagens para um conjunto cada vez menor de nós.

Esta recursão é necessária pois não se pode acreditar em nenhum nó transmissor. A recursão acaba e a maioria dos valores recebidos é tomada como sendo o valor correto em cada rodada.

Page 21: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Exemplo do Protocolo Com Mensagens Comuns¹

General

Traidor

Indeciso resultado inconsistente

“Atacar” “Atacar”

“Recuar”

Problema sem Resolução

Page 22: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Exemplo do Protocolo Com Mensagens Comuns²

General Traidor

Indeciso resultado inconsistente

“Atacar” “Recuar”

Problema sem Resolução

“Recuar”

Page 23: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Exemplo do Protocolo Com Mensagens Comuns

1° rodada

traidor

general

2° rodada

“Atacar”

“Atacar”

“Atacar” “Atacar” “Atacar”

“Atacar”

“Atacar”

“Recuar”

“Recuar”

Page 24: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagem Assinada O problema torna-se fácil se for restringido a possibilidade de um nodo

falsificar as mensagens. Isso pode ser feito quando um transmissor envia uma mensagem 'assinada'. A assinatura é tal que qualquer alteração ao conteúdo da mensagem pode ser verificada, e assim um receptor consegue verificar se a mensagem recebida foi ou não alterada. A assinatura pode ser obtida utilizando técnicas de criptografias.

O consenso pode ser atingido por um número arbitrário de nodos falhos. Será apresentado um protocolo para satisfazer as condições de consistência interativa, no qual um nodo pode enviar mensagens assinadas.

Com mensagens assinadas é necessário que se tenha n>=m+2.

Neste algoritmo, um nodo transmissor envia uma mensagem assinada para outros nodos. Um nodo adiciona sua assinatura às mensagens recebidas, e as transmite na próxima rodada para outros nós.

Page 25: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagem Assinada

Se o nodo receptor for não falho, sua mensagem terá o mesmo conteúdo que a mensagem recebida do transmissor.

Entretanto, se tiver falhado, ele deve também enviar a mensagem contendo o mesmo valor, ou não enviá-la de forma alguma (o caso em que ele altera a mensagem e então é percebido pelos receptores pode ser modelado como não enviando a mensagem).

Seja V o conjunto de valores (não mensagens) recebidos por um nodo. Se o transmissor é livre de falhas, então o conjunto de valores recebidos por um nodo conterá um único valor, aquele enviado pelo transmissor. Somente se o transmissor for falho o receptor poderá receber múltiplos valores.

Page 26: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Protocolo Com Mensagem Assinada Se um nodo i envia o valor x para algum

nodo, então este nodo adiciona sua assinatura à mensagem que é representada por x:i.

Quando um nodo j recebe este valor e posteriormente o encaminha a outro nodo, a mensagem é representada por x:i:j.

Page 27: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Exemplo Protocolo Com Mensagens Assinadas

“Atacar”:0:1

“Recuar”:0:2

(0)

(1) (2)

Nosso general

nos traiu. Nós

devemos

Recuar!!

Eu concordo!!

“Atacar”:0 “Recuar”:0

Page 28: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Conclusão

Os algoritmos exibidos anteriormente funcionam em rodadas, e são muito custosos no número de rodadas e no número de mensagens necessárias para se atingir um consenso.

Quando se trata de algoritmos distribuídos, deseja-se que um número relativamente pequeno de mensagens sejam trocadas, pois seu alto número pode causar lentidão excessiva na rede.

Ainda, os protocolos de mensagens comuns e de mensagens assinadas necessitam de uma rede de comunicação fortemente conectada, isto é, uma rede onde exista uma conexão ponto-a-ponto entre todos os nodos.

Page 29: The Byzantine Generals Problem Dione Taschetto Rafael Tweedie Campos

Referências

LAMPORT, Leslie; SHOSTAK, Robert and PEASE, Marshall. The Byzantine Generals problem. ACM Transactions on Programming Languages and Systems, 4(3):382-401, July, 1982.

http://marknelson.us/2007/07/23/byzantine/