Algoritmos para Sistemas de Quóruns Bizantinos Algoritmo Multi-Writer Multi-Reader seguro PUC-PR / PPGIA Mestrado em Informática Aplicada Sergio R. Loest [email protected] Organização da Apresentação Introdução Conceitos Básicos Tipos de BQS Funções Básicas Estrutura Geral dos Algoritmos para BQS Algoritmos para BQS Referências Bibliograficas 13/2/2007 PPGIA - PUCPR 2/61 Introdução Serviço de armazenamento distribuído através da execução de leituras e escritas de dados em diferentes conjuntos de servidores (quóruns) que mantém réplicas (servidores) em comum Considera a possibilidade de faltas por parada e faltas bizantinas nos servidores 13/2/2007 PPGIA - PUCPR 3/61 Introdução Comunicação ponto-a-ponto [8] Arquitetura cliente-servidor Servidor mantém um registrador r Operações r.write(v) e r.read() Operações são invocadas remotamente por clientes Servidores corretos só permitem atualização dos registradores via protocolos definidos 13/2/2007 PPGIA - PUCPR 4/61 Introdução Garantia de consistência e disponibilidade mesmo na ocorrência de falhas bizantinas em algumas de suas réplicas Servidores organizam-se em subconjuntos denominados quóruns Cada par de quóruns mantém um número suficiente de servidores corretos em comum (consistência) [1] 13/2/2007 PPGIA - PUCPR 5/61 Introdução Existe pelo menos um quórum formado somente por servidores corretos (disponibilidade) [2] Quoruns simétricos => quoruns de leitura e escrita de mesmo tamanho Quoruns assimétricos => quoruns de leitura e escrita de tamanhos diferentes 13/2/2007 PPGIA - PUCPR 6/61 Introdução Bom desempenho e escalabilidade Não requer acordo entre as réplicas => não são suscetíveis à impossibilidade FLP Somente implementam operações de escrita e leitura [4] 13/2/2007 PPGIA - PUCPR 7/61 Conceitos Básicos Modelo de sistema Sistema formado por dois conjuntos: servidores - conjunto U clientes - conjunto Π Sistema de quorum Q é um conjunto não vazio de subconjuntos de U (Q ⊆ 2U) [5] Até ƒ servidores podem falhar 13/2/2007 PPGIA - PUCPR 8/61 Conceitos Básicos Registradores Clientes acessam uma variável χ armazenada em um registrador replicado em um conjunto U de servidores A variável χ é um par (valor,timestamp) Dados auto-verificáveis - assinatura criptográfica Dados genéricos - não são digitalmente assinados 13/2/2007 PPGIA - PUCPR 9/61 Conceitos Básicos Registradores Níveis de acesso: semântica “único escritor” semântica “vários escritores” Semântica de consistência: 13/2/2007 semântica segura - leitura com escrita concorrente pode resultar em qualquer valor PPGIA - PUCPR 10/61 Conceitos Básicos Registradores Semântica de consistência (cont.): 13/2/2007 semântica regular - semântica segura + leitura com escrita concorrente pode resultar no último valor escrito ou um dos valores sendo escritos semantica atômica - semântica regular + ordenação de leituras e escritas segundo a relação happens before (→) PPGIA - PUCPR 11/61 Tipos de BQS Sistema f-mascaramento armazenamento de dados genéricos uso de quoruns simétricos servidores na interseção 2ƒ + 1 número de servidores n ≥ 4ƒ + 1 quoruns com no mínimo 3ƒ + 1 servidores 13/2/2007 PPGIA - PUCPR 12/61 Tipos de BQS Sistema f-disseminação similar a f-mascaramento armazenamento de dados auto-verificáveis servidores na interseção ƒ + 1 número de servidores n ≥ 3ƒ + 1 quoruns com no mínimo 2ƒ + 1 servidores 13/2/2007 PPGIA - PUCPR 13/61 Tipos de BQS Sistema a-mascaramento armazenamento de dados genéricos quoruns assimétricos apenas quoruns de leitura cumprem com requisito de disponibilidade servidores na interseção 2ƒ + 1 número de servidores n ≥ 3ƒ + 1 quoruns de leitura com 2ƒ + 1 servidores quoruns de escrita com 3ƒ + 1 servidores 13/2/2007 PPGIA - PUCPR 14/61 Tipos de BQS Sistema a-disseminação armazenamento de dados auto-verificáveis quoruns assimétricos quoruns de escrita não cumprem com requisito de disponibilidade, apenas de leitura servidores na interseção ƒ + 1 número de servidores n ≥ 2ƒ + 1 quoruns de leitura com ƒ + 1 servidores quoruns de escrita com 2ƒ + 1 servidores 13/2/2007 PPGIA - PUCPR 15/61 Tipos de BQS Sistemas “mínimos” similar ao a-mascaramento apenas quoruns de escrita cumprem com requisito de disponibilidade quoruns de leitura com 3ƒ + 1 servidores quoruns de escrita com 2ƒ + 1 servidores 13/2/2007 PPGIA - PUCPR 16/61 Funções Básicas Consulta em um Quorum Dados sem assinaturas function query(q) 1:∀s ∈ U, send (s,〈QUERY〉) 2:S[1. . .n]←⊥ 3:repeat 4: wait receive (s,〈QUERY-RESPONSE, 〈vs, ts〉〉) 5: S[s]←〈vs, ts〉 6: until #⊥S=n-q 7: return S end function 13/2/2007 PPGIA - PUCPR 17/61 Funções Básicas Consulta em um Quorum Dados com assinaturas function query_w_sign (q) 1:∀s ∈ U, send (s,〈QUERY〉) 2:S[1. . .n]←⊥ 3:repeat 4: wait receive (s,〈QUERY-RESPONSE, 〈vs, ts〉,proof〉) 5: if valid 〈〈vs, ts〉,proof〉 then 6: S[s] ←〈vs, ts〉 7: end if 8: until #⊥S=n-q 9:return S end function 13/2/2007 PPGIA - PUCPR 18/61 Estrutura Geral dos Algoritmos para BQS - leitura (a) passo de consulta (QUERY/QUERY-RESPONSE) (b) passo pós-consulta (SOME-ACTION) (c) passo de devolução (RETURN) 13/2/2007 PPGIA - PUCPR 19/61 Estrutura Geral dos Algoritmos para BQS - escrita (a) consulta a um quorum de leitura (possível) + cálculo de timestamp (b) passo de escrita (UPDATE) (c) (opcional) passo de confirmação (ACK) 13/2/2007 PPGIA - PUCPR 20/61 Algoritmos para BQS Algoritmos para BQS Simétricos Clientes Corretos Clientes faltosos 13/2/2007 MWMR Seguro MWMR Regular MWMR Atômico SWMR Seguro MWMR Seguro MWMR Atômico PPGIA - PUCPR 21/61 Algoritmos para BQS (cont.) Algoritmos para BQS Assimétricos Clientes Corretos MWMR Seguro MWMR Regular Sistemas com Quoruns Mínimos Clientes Corretos 13/2/2007 MWMR Atômico MWMR Regular PPGIA - PUCPR 22/61 Algoritmos para BQS (cont.) Sistemas com Quoruns Mínimos (cont.) Clientes Faltosos 13/2/2007 MWMR Atômico MWMR Regular PPGIA - PUCPR 23/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro quoruns de leitura e escrita de mesmo tamanho não tolera clientes faltosos algoritmos de leitura e escrita em sistema f-mascaramento semântica de consistência alcançada é multi-writer multi-reader segura 13/2/2007 PPGIA - PUCPR 24/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro Escrita de um cliente c 13/2/2007 PPGIA - PUCPR 25/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro Leitura de um cliente c 13/2/2007 PPGIA - PUCPR 26/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro Execução de um servidor s 13/2/2007 PPGIA - PUCPR 27/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro Complexidade de mensagens - O(n) 4 passos para escrita (seguro para ƒ -1) [7] 13/2/2007 PPGIA - PUCPR 28/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR seguro Complexidade de mensagens - O(n) 2 passos para leitura (seguro para ƒ -1) 13/2/2007 PPGIA - PUCPR 29/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular quoruns de leitura e escrita de mesmo tamanho não tolera clientes faltosos algoritmos de leitura e escrita em sistema f-disseminação clientes corretos são responsáveis pela assinatura dos dados armazenados semântica de consistência alcançada é multi-writer multi-reader regular 13/2/2007 PPGIA - PUCPR 30/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular Para cada cliente usa um par de chaves criptográficas chave privada => assinatura de suas informações nas operações de escrita em um quórum chave pública => verificação das informações assinadas por aquele cliente nas operações de leitura dos clientes os clientes devem conhecer as chaves públicas uns dos outros => afeta a escalabilidade do sistema 13/2/2007 PPGIA - PUCPR 31/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular Escrita de um cliente c procedure write(ν) 1:S ←query(|Q|) 2:max_ts ←max{S[].ts} 3:t ←min{tc ∈ Tc:max_ts < tc} 4:∀s ∈ U, send (s,〈UPDATE,〈ν,t〉c 〉) 5:wait receive (q,〈ACK〉), ∀q ∈ Q’ end procedure 13/2/2007 PPGIA - PUCPR 32/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular Leitura de um cliente c 13/2/2007 PPGIA - PUCPR 33/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular Execução de um servidor s 13/2/2007 PPGIA - PUCPR 34/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR regular Complexidade de mensagens: 13/2/2007 executam com complexidade de troca de mensagens de O(n) As operações de escrita e leitura realizam-se, respectivamente, em 4 e 2 passos de comunicação PPGIA - PUCPR 35/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico quoruns de leitura e escrita de mesmo tamanho não tolera clientes faltosos algoritmos de leitura e escrita em sistema f-disseminação clientes corretos são responsáveis pela assinatura dos dados armazenados semântica de consistência alcançada é multi-writer multi-reader atômica 13/2/2007 PPGIA - PUCPR 36/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico Para cada cliente usa um par de chaves criptográficas chave privada => assinatura de suas informações nas operações de escrita em um quórum chave pública => verificação das informações assinadas por aquele cliente nas operações de leitura dos clientes os clientes devem conhecer as chaves públicas uns dos outros => afeta a escalabilidade do sistema 13/2/2007 PPGIA - PUCPR 37/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico Escrita de um cliente c (idêntica a regular) procedure write(ν) 1:S ←query(|Q|) 2:max_ts ←max{S[].ts} 3:t ←min{tc ∈ Tc:max_ts < tc} 4:∀s ∈ U, send (s,〈UPDATE,〈ν,t〉c 〉) 5:wait receive (q,〈ACK〉), ∀q ∈ Q’ end procedure 13/2/2007 PPGIA - PUCPR 38/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico Leitura de um cliente c 13/2/2007 PPGIA - PUCPR 39/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico Execução de um servidor s 13/2/2007 PPGIA - PUCPR 40/61 Algoritmos para BQS Simétricos Clientes Corretos - MWMR atômico Complexidade de mensagens - O(n) [6] / 4 passos para escrita (seguro para ƒ -1) [7] 13/2/2007 PPGIA - PUCPR 41/61 Algoritmos para BQS Simétricos Clientes Faltosos - SWMR seguro quoruns de leitura e escrita de mesmo tamanho tolera clientes faltosos algoritmos de leitura e escrita em sistema f-mascaramento semântica de consistência alcançada é siglewriter multi-reader segura 13/2/2007 PPGIA - PUCPR 42/61 Algoritmos para BQS Simétricos Clientes Faltosos - SWMR seguro Escrita de um cliente c 13/2/2007 PPGIA - PUCPR 43/61 Algoritmos para BQS Simétricos Clientes Faltosos - SWMR seguro Leitura de um cliente c 13/2/2007 PPGIA - PUCPR 44/61 Algoritmos para BQS Simétricos Clientes Faltosos - SWMR seguro Execução de um servidor s 13/2/2007 PPGIA - PUCPR 45/61 Algoritmos para BQS Simétricos Clientes Faltosos - SWMR seguro Complexidade de mensagens: 13/2/2007 escrita: O(n2), leitura: O(n) operações de escrita e leitura realizam-se, respectivamente, em 4 e 2 passos de comunicação PPGIA - PUCPR 46/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro quoruns de leitura e escrita de mesmo tamanho tolera clientes faltosos algoritmos de leitura e escrita em sistema f-mascaramento semântica de consistência alcançada é multi-writer multi-reader segura cada servidor utiliza um par de chaves privada (para assinatura) e pública (para verificação) 13/2/2007 PPGIA - PUCPR 47/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro Escrita de um cliente c 13/2/2007 PPGIA - PUCPR 48/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro Leitura de um cliente c 13/2/2007 PPGIA - PUCPR 49/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro Execução de um servidor s 13/2/2007 PPGIA - PUCPR 50/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro Complexidade de mensagens: 13/2/2007 escrita, leitura e atualização do servidor: O(n) operações de escrita e leitura realizam-se, respectivamente, em 6 e 4 passos de comunicação PPGIA - PUCPR 51/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR seguro Complexidade de mensagens: 13/2/2007 PPGIA - PUCPR 52/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico quoruns de leitura e escrita de mesmo tamanho tolera clientes faltosos algoritmos de leitura e escrita em sistema f-disseminação semântica de consistência alcançada é multi-writer multi-reader atômica clientes e servidores mantêm algumas variáveis locais específicas. 13/2/2007 PPGIA - PUCPR 53/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Escrita de um cliente (protocolo normal) 13/2/2007 Para cada passo da escrita, o cliente precisa apresentar um conjunto de 2 f +1 mensagens assinadas, coletadas de um quórum, comprovando que é capaz de realizar aquele passo e justificando as suas próximas ações. Fase 1: o cliente requisita um conjunto de pares auto-verificáveis de um quórum Q Fase 2: cliente prepara um novo par <v, t> e o envia numa mensagem PREPARE Fase 3: cliente envia uma mensagem UPDATE com a prova de preparação obtida na fase 2 e o novo valor PPGIA - PUCPR 54/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Escrita de um cliente (protocolo otimizado) 13/2/2007 2 fases: Primeiro, o cliente tenta efetuar as fases 1 e 2 como uma única fase. Caso não consiga, executa o protocolo normal de escrita (3 fases). No caso de execução otimizada, o timestamp é calculado nos servidores em nome do cliente. Fase 1: cliente envia mensagem READ-TS-PREP para todos os servidores com o valor proposto v e sua prova de escrita. Fase 2: se o cliente receber pares assinados de um quórum de servidores com o mesmo timestamp, executa imediatamente a fase 3 do protocolo normal usando S0 como a prova da preparação. Caso contrário, escolhe o maior timestamp entre as mensagens READPREP-ACK e realiza a fase 2 do protocolo normal. Fase 3: igual à fase 3 do protocolo normal. PPGIA - PUCPR 55/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Leitura de um cliente 13/2/2007 1 ou 2 fases, depende do cliente realizar ou não uma reescrita (write back) em um quórum de servidores Fase 1: cliente requisita um conjunto de pares assinados a um quórum Q Fase 2: se os timestamps retornados da fase 1 forem diferentes, o cliente envia uma mensagem WRITEBACK assinada. A mensagem de reescrita é o que garante a semântica atômica do protocolo PPGIA - PUCPR 56/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Execução de um servidor - parte 1: 13/2/2007 Quando recebe uma mensagem QUERY, devolve o seu par armazenado mais o certificado deste par. Quando recebe uma mensagem válida READ-TS-PREP, verifica se a prova de escrita do cliente é válida e tenta preparar a escrita otimizada do cliente Se a preparação ocorrer com sucesso, ele responde com uma mensagem READ-PREP-ACK assinada. Caso contrário, retorna seu par armazenado com o certificado correspondente (como uma resposta à QUERY) PPGIA - PUCPR 57/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Execução de um servidor - parte 2 13/2/2007 Quando recebe uma mensagem válida PREPARE de um cliente verifica se o timestamp enviado é válido. O servidor retorna uma mensagem PREPARE-ACK assinada Outro caso de execução é quando este recebe uma mensagem válida UPDATE. Ele verifica se a prova de preparação do cliente é válida. Tenta atualizar o seu estado Por fim, ele devolve uma mensagem UPDATEACK assinada Caso receba uma mensagem WRITE-BACK, o servidor executa como em uma mensagem UPDATE PPGIA - PUCPR 58/61 Algoritmos para BQS Simétricos Clientes Faltosos - MWMR atômico Complexidade de mensagens: 13/2/2007 todos os algoritmos ocorrem com complexidade de mensagens na ordem de O(n) escrita e leitura, se completam, respectivamente, em 6 e 4 passos de comunicação, para o protocolo normal; ou em 4 e 2 passos de comunicação, respectivamente, para o protocolo otimizado PPGIA - PUCPR 59/61 Referências Bibliográficas [1] W.S.Dantas (2006), Implementação de um arcabouço para avaliação de algoritmos para Sistemas de Quóruns Bizantinos 13/2/2007 PPGIA - PUCPR 60/61 Dúvidas [1] Como cada par de quóruns mantém um número suficiente de servidores corretos em comum? [2] De que forma pelo menos um quórum formado somente por servidores corretos é mantido? [4] Analisar a hipótese de se implementar algum tipo de mecanismo de segurança (permissões) [5] Q ⊆ 2U? [7] Porque ƒ -1? [8] poderia ser ponto-a-multiponto (multicast)? 13/2/2007 PPGIA - PUCPR 61/61