A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

The Byzantine Generals Problem

Apresentações semelhantes


Apresentação em tema: "The Byzantine Generals Problem"— Transcrição da apresentação:

1 The Byzantine Generals Problem
Dione Taschetto Rafael Tweedie Campos

2 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.

3 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.

4 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.

5 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.

6 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

7 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.

8 Exemplo P1 P2 v1=OK v2=OK d1=OK d2=OK Algoritmo Consenso v3=NOK P3
P3 propõe NOK, mas falha durante o consenso Os processos corretos decidem por OK

9 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

10 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.

11 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.

12 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á.

13 Tipos de Problemas Com um líder: Sem 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.

14 Tipos de Problemas Problema Síncrono: Problema Assí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.

15 Soluções e Limitações Existem basicamente duas abordagens de protocolos: mensagens comuns mensagens assinadas

16 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.

17 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).

18 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.

19 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.

20 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.

21 Exemplo do Protocolo Com Mensagens Comuns¹
General “Atacar” “Atacar” Traidor “Recuar” Indeciso  resultado inconsistente  Problema sem Resolução

22 Exemplo do Protocolo Com Mensagens Comuns²
General Traidor “Recuar” “Atacar” “Recuar” Indeciso  resultado inconsistente  Problema sem Resolução

23 Exemplo do Protocolo Com Mensagens Comuns
general “Atacar” “Atacar” “Atacar” “Atacar” “Atacar” “Recuar” traidor “Recuar” “Atacar” “Atacar” 2° rodada 1° rodada

24 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.

25 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.

26 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.

27 Exemplo Protocolo Com Mensagens Assinadas
(0) Eu concordo!! Nosso general nos traiu. Nós devemos Recuar!! “Atacar”:0 “Recuar”:0 (1) (2) “Atacar”:0:1 “Recuar”:0:2

28 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.

29 Referências LAMPORT, Leslie; SHOSTAK, Robert and PEASE, Marshall. The Byzantine Generals problem. ACM Transactions on Programming Languages and Systems, 4(3): , July, 1982.


Carregar ppt "The Byzantine Generals Problem"

Apresentações semelhantes


Anúncios Google