Sistemas Distribuı́dos e Exclusão Mútua Tolerante a Falhas Luiz A. Rodrigues UNIOESTE/UFPR/LIP6/INRIA [email protected] 5 de abril de 2013 CiPET - UNIOESTE - Cascavel Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 1 / 33 Luiz A. Rodrigues 1 Interesses Redes de Computadores, Tolerância a Falhas, Sistemas Distribuı́dos e Programação de Sistemas 2 Formação Bacharelado em Informática (UNIOESTE - 1999/2003) Tı́tulo: Uma Ferramenta para Comparação dos Mecanismos de Controle de Congestionamento em Redes TCP/IP Utilizando o NS Mestrado em Ciência da Computação (UFRGS - 2004/2006) Tı́tulo: Extensão do Suporte para Simulação de Defeitos no Neko Doutorado em Informática (UFPR - 2010/atual) Tema: Exclusão Mútua em Sistemas Distribuı́dos Sanduı́che no LIP6 (UPMC - Paris) 3 Atuação 1 2 CELEPAR (2006-2007) - Área técnica de Redes de Computadores UNIOESTE (2007-atual) - Professor na área de Redes de Computadores Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 2 / 33 Sistema Distribuı́do Definição: Um Sistema Distribuı́do (SD) é um conjunto de processos que se comunicam usando troca de mensagens A Objetivo: Cooperação para realização de uma tarefa especı́fica Tarefas: Sistemas bancários, comércio eletrônico, sistemas operacionais, banco de dados, etc. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) B C D E 5 de abril de 2013 3 / 33 Caracterı́sticas Importantes de um SD Compartilhamento de Recursos: hardware e software Escalabilidade: atende um único usuário, uma empresa, uma cidade, o mundo todo Transparência: usuário não precisa saber se o sistema é centralizado ou distribuı́do Confiabilidade: confiança no serviço ou tolerância a falhas Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 4 / 33 Tolerância a Falhas “Organizações e suas redes tem se tornado indistinguı́veis” Um sistema Tolerante a Falhas funciona corretamente mesmo que alguns dos seus componentes estejam falhos Taxonomia de Falhas: Defeito Erro Falha Figura: Taxonomia de Falhas Falha (fault): componente apresenta comportamento fora da especificação (nı́vel fı́sico) Erro (error ): falha é ativada e o componente produz uma saı́da fora da especificação (nı́vel da informação) Defeito (failure): o erro se propaga para a saı́da do sistema (nı́vel do usuário) Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 5 / 33 Classificação de Falhas Parada (crash): o componente não produz saı́da Omissão: o componente produz saı́da para algumas entradas, mas não todas Bizantinas Temporização Omissão crash Temporização: o componente responde cedo demais ou tarde demais (sistemas de tempo real) Bizantinas: comportamento arbitrário Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) Figura: Classes de Falhas 5 de abril de 2013 6 / 33 O Consenso C At ! Tr a Recuar! T1 id or T2 C X Tr a id or L V X Tr a T2 X (X,L,V) id or L T1 L Todos os generais leais executam a mesma ordem Se o comandante é leal, todos os tenentes leais executam a sua ordem Para f traidores, N ≥ 3f + 1 ar ac ac ar ! At No consenso processos não falhos devem entrar em acordo sobre a execução de uma tarefa; Algoritmo dos Generais Bizantinos1 ; V V (X,L,V) T3 (X,L,V) 1 Lamport, L., Shostak, R. e Pease, M. (1982) “The Byzantine Generals Problem”. ACM Trans. Program. Lang. Syst. 4(3):382-401. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 7 / 33 Modelos de SD Sı́ncronos: limite de tempo máximo conhecido para execução de tarefas e transmissão de mensagens Consenso é possı́vel mesmo com falhas arbitrárias Assı́ncronos: limites não existem! Impossibilidade FLP1 : o consenso é impossı́vel para falhas de sequer um único processo Detectores de defeitos não-confiáveis2 Parcialmente Sı́ncronos3 : limites existem mas não são conhecidos. GST: Global Stabilization Time O consenso é possı́vel se a maioria dos processos é sem-falha 1 Fischer, M., Lynch, N. e Paterson, M. (1985) “Impossibility of Distributed Consensus with one Faulty Process”. J. ACM. 32(2):374-382. 2 Chandra, T. D. e Toueg, S. (1996) “Unreliable Failure Detectors for Reliable Distributed Systems”. J. ACM. 43(2):225-267. 3 Dwork, C., Lynch, N., and Stockmeyer, L. (1988). “Consensus in the Presence of Partial Synchrony ”. J. ACM, 35(2):288-323. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 8 / 33 Roteiro 1 Exclusão Mútua em Sistemas Distribuı́dos Abordagens Métricas de Avaliação de Desempenho Algoritmos de 1-Exclusão Mútua Algoritmos de k-Exclusão Mútua 2 Uma Solução Robusta para k-Exclusão Mútua Motivação Estratégia de Monitoramento Algoritmo de Disseminação Solução Proposta 3 Desafios Futuros Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 9 / 33 Roteiro 1 Exclusão Mútua em Sistemas Distribuı́dos Abordagens Métricas de Avaliação de Desempenho Algoritmos de 1-Exclusão Mútua Algoritmos de k-Exclusão Mútua 2 Uma Solução Robusta para k-Exclusão Mútua Motivação Estratégia de Monitoramento Algoritmo de Disseminação Solução Proposta 3 Desafios Futuros Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 10 / 33 Exclusão Mútua em Sistemas Distribuı́dos Como organizar o acesso aos recursos compartilhados por um SD? Segurança (safety ): nada de errado acontece Progressão (liveness): algo de bom acontece Duas Abordagens1 Pedido de Permissão 1 Passagem de token Processo deve solicitar a permissão aos demais Mensagem especial (token) é repassada entre os processos Solicitante deve aguardar respostas de todos ou de um conjunto (quórum) Processo que detém o token pode acessar o recurso Variação: k-exclusão mútua → k recursos compartilhados Raynal, M. (1991). “A Simple Taxonomy for Distributed Mutual Exclusion Algorithms”. SIGOPS Oper. Syst. Rev., 25(2):47-50. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 11 / 33 Métricas de Avaliação de Desempenho Complexidade de Mensagens Tolerância a Falhas Atraso de Sincronização (SD) Disponibilidade Tempo de Resposta throughput: 1/(SD + E ) Carga Baixa 1 Carga Alta pi envia requisições pi obtém recurso pi libera recurso pj obtém recurso tempo Tempo de Execução Atraso de Sincronização Tempo de Resposta 1 E =tempo médio de utilização do recurso por cada processo Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 12 / 33 Principais Soluções de Exclusão Mútua 1 Pedido de Permissão Algoritmo de Lamport Algoritmo de Ricart-Agrawala Algoritmo de Maekawa 2 Passagem de token Algoritmo de Suzuki-Kassami Algoritmo de Raymond 3 Soluções de k-Exclusão Mútua Algoritmo de Raymond Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 13 / 33 Algoritmo de Lamport1 Solicitante envia broadcast e aguarda n − 1 respostas Fila local ordenada por timestamps controla prioridade Solicitante acessa recurso quando: Recebeu uma mensagem com timestamp maior que o seu de todos os demais A sua solicitação é a primeira da fila 1 2 Ao liberar o recurso, envia RELEASE a todos Total de mensagens: 3(n − 1) REQUEST p1 obtém recurso p1 [(1,1)] [(1,1),(2,1)] p1 libera p2 obtém recurso recurso p2 libera recurso REPLY [(2,1)] [] RELEASE (1,1) (2,1) p2 p3 [(2,1)] [(2,1)] [(1,1),(2,1)] [(1,1), (2,1)] [(2,1)] [(2,1)] [] [] 1 Lamport, L. (1978) “Time, Clocks and the Ordering of Events in a Distributed System”. Commun. ACM. 21(7):558-565. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 14 / 33 Algoritmo de Ricart-Agrawala1 Otimização do Algoritmo de Lamport Envia requisição e aguarda n − 1 respostas Respostas são adiadas se processo que recebe requisição está utilizando o recurso ou tentando obtê-lo com maior prioridade Total de mensagens: 2(n − 1) p1 (1,1) p1 retém resposta para p2 p1 obtém recurso p1 libera recurso p2 obtém o recurso (2,1) p2 p3 1 Ricart, G., Agrawala, A. k. (1981) “An Optimal Algorithm for Mutual Exclusion in Computer Networks”. Commun. ACM. 24(1):9-17. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 15 / 33 Algoritmo de Maekawa1 Solução baseada em quóruns (conjuntos de processos com elementos em comum) Solicita permissão apenas para os processos do quórum √ Total de mensagens: 3 n 6 1 4 7 Bloqueado por p1, na fila C1={1,2,4} C2={2,3,5} C3={3,4,6} C4={4,5,7} C5={5,6,1} C6={6,7,2} C7={7,1,3} 3 5 3 2 Bloqueado 5 (a) Plano projetivo de Fano (b) Exemplo 1 √ Maekawa, M. (1985) “A N Algorithm for Mutual Exclusion in Decentralized Systems”. ACM Trans. Comput. Syst. 3(2)145-159. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 16 / 33 Algoritmo de Suzuki-Kasami1 Cada processo i mantém localmente: Número de sequência sni Vetor de requisições RNi Solicitação de recurso 1 2 3 Incrementar sni Enviar broadcast REQUEST(i,sni ) Aguardar o token token mantém Vetor LN Fila de requisições pendentes Quando libera recurso, processo envia token para o próximo na fila Total de mensagens por requisição: n 1 Suzuki, I., Kasami, T. (1985) “A Distributed Mutual Exclusion Algorithm.”. ACM Trans. Comput. Syst., 3(4):344-349 Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 17 / 33 Algoritmo de Raymond1 Utiliza estrutura lógica de árvore Cada processo i mantém localmente Atributo HOLDER Fila Qi de requisições pendentes 2 2 1 4 3 6 5 (c) token em p1 2 1 4 3 6 5 (d) token em p4 1 4 3 6 5 (e) token em p6 1 Raymond, K. (1989) “A Tree-Based Algorithm for Distributed Mutual Exclusion”. Trans. Comput. Syst., 7:61-77. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 18 / 33 Algoritmo de Raymond1 Solução para o problema da k-exclusão mútua Baseada no algoritmo de Ricart e Agrawala Envia requisição aos n − 1 outros processos e aguarda por, no mı́nimo, n − k respostas Tolera k − 1 falhas, mas cada falha degrada a solução p1 obtém recurso p1 p2 p3 p2 obtém recurso (1,1) p1 libera recurso p2 libera recurso x (2,2) p3 obtém o recurso (3,3) 1 Raymond, K. (1989) “A Distributed Algorithm for Multiple Entries to a Critical Section”. Inf. Process. Lett., 30:189-193. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 19 / 33 Roteiro 1 Exclusão Mútua em Sistemas Distribuı́dos Abordagens Métricas de Avaliação de Desempenho Algoritmos de 1-Exclusão Mútua Algoritmos de k-Exclusão Mútua 2 Uma Solução Robusta para k-Exclusão Mútua Motivação Estratégia de Monitoramento Algoritmo de Disseminação Solução Proposta 3 Desafios Futuros Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 20 / 33 Uma Solução Robusta para k-Exclusão Mútua Solução tolerante a falhas de k-exclusão mútua distribuı́da baseada no modelo com permissão de Raymond Aumenta a eficiência para até n − 1 processos falhos Suporte utilizado 1 2 Estratégia de Monitoramento Mecanismo de disseminação de mensagens Resultados publicados em: Rodrigues, L. A., Duarte, E. e Arantes, L. Exclusão Mútua Distribuı́da e Robusta para k Recursos Compartilhados. SBRC 2012 - WTF, Ouro Preto, MG, abril de 2012. Rodrigues, L. A., Cohen, J., Duarte, E. e Arantes, L. A Robust Permission-Based Hierarchical Distributed k-Mutual Exclusion Algorithm. ISPDC’13, Bucharest, Romênia, jun. 2013. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 21 / 33 Algoritmo Hi-ADSD Hierarchical Adaptive Distributed System-Level Diagnosis 1 Testes são executados seguindo um hipercubo virtual Nodos são agrupados em clusters 0 1 001 000 2 100 4 110 6 010 101 3 011 5 7 0 1 4 5 2 3 6 7 111 1 Duarte, E. P. E Nanya, T. (1998) “A Hierarchical Adaptive Distributed System-Level Diagnosis Algorithm”. IEEE Trans. on Comp. 47(1):34-45. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 22 / 33 Algoritmo Hi-ADSD (cont.) Nodos testam o cluster até encontrar um nodo sem falha ou até testar todos os nodos como falhos 4 3 0 1 1 4 5 3 6 7 2 2 Intervalo de detecção: log N Quantidade de mensagens por rodada: N log N Latência de diagnóstico: log2 N Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 23 / 33 Broadcast no processo pi Tarefa 1: Initiator send mensagem hs, msg i para o primeiro processo correto pj (se existe) em cada cluster ci ,s , s = 1, .., log 2 n 2: espera por todos os acks 1: 3: 4: 5: 6: 7: 8: Tarefa 2: Outros processos receive mensagem hs ′ , msg i do processo pj se msg é nova, deliver a mensagem para a aplicação send hs, msg i para o primeiro processo correto pk (se existe) em cada cluster ci ,s , s = 1, .., s ′ − 1 espera por todos os acks send ack para pj Executado por todos os processos se a falha do processo pk é detectada, para cada ack pendente de pk , retransmitir a mensagem para o próximo processo correto no mesmo cluster de pk (se existe) Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 24 / 33 Detalhando o Algoritmo - Funções clusteri (j) =s neighbori (s) =j 1 2 s=1 neighborhoodi ={j | j ∈ neighbori (s), 4 1 1 ≤ s ≤ d} 2 s=3 neighborhoodi (j) ={k | k = neighbori (s), 6 1 ≤ s < clusteri (j)} 1 7 cluster4 (0) =3 cluster1 (0) =1 neighbor4 (1) =5 neighbor4 (2) =6 neighbor4 (3) =0 3 neighborhood0 ={1, 2, 4} neighborhood1 (0) =∅ neighborhood2 (0) ={3} neighborhood4 (0) ={5, 6} Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 25 / 33 Exemplo de Disseminação 0 0 1 2 3 s=1 4 4 1 2 s=3 6 6 1 7 7 (f) sem-falhas (g) nodo 4 falho Figura: Árvore geradora no hipercubo de 3 dimensões. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 26 / 33 Algoritmo de k-Exclusão Mútua Proposto Adaptação do algoritmo de Raymond Objetivo: aumentar a eficiência em cenários com falhas Principais modificações: 1 2 3 Aguardar REPLY de, no mı́nimo, n − k − f , f total de processos falhos Verificar estado do processo emissor antes de processar mensagens recebidas Quando ocorre falha, ajusta total de mensagens recebidas se processo que falhou já havia enviado REPLY Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 27 / 33 Avaliação Experimental - Cenário 1 16 processos (n = 16) 5 cópias do recurso (k = 5) 2 (2,1) 2 3 3 (2,2) 0 (1,1) 0 1 1 (4,4) 10 11 (4,2) (4,1) (4,3) (4,2) 15 14 14 12 13 12 10 8 9 8 (4,1) (4,1) 11 9 (4,1) 15 13 (3,3) 6 6 7 (3,1) 7 (3,2) 4 5 (a) ligações lógicas 4 (3,1) 5 (b) árvore a partir de n0 Figura: Hipercubo de 4 dim. e a árvore quando todos os nodos estão sem-falha. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 28 / 33 Avaliação Experimental - Resultados 400 Algoritmo de Raymond Algoritmo Proposto Algoritmo Proposto + Monitoramento 50 70 350 Mensagens enviadas 300 250 200 150 100 50 0 0 5 10 15 20 25 30 35 40 45 55 60 65 75 80 85 90 95 100 Tempo (a) Total de Mensagens 5 Algoritmo Proposto Algoritmo de Raymond Recursos em uso 4 3 2 1 0 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 Tempo (b) Eficiência Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 29 / 33 Avaliação Experimental - Cenário 2 2 3 4 Variação na quantidade de processos k = 3 recursos compartilhados Carga alta: todos solicitam recursos RAY e BAS usam todos-para-todos; PROPO usa spanning-tree Total of Resources Allocated 3000 RAY BAS PROPO 2500 # Resources allocated 1 2000 1500 1000 500 0 8 16 32 64 # Processes 128 256 512 Figura: Recursos alocados Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 30 / 33 Roteiro 1 Exclusão Mútua em Sistemas Distribuı́dos Abordagens Métricas de Avaliação de Desempenho Algoritmos de 1-Exclusão Mútua Algoritmos de k-Exclusão Mútua 2 Uma Solução Robusta para k-Exclusão Mútua Motivação Estratégia de Monitoramento Algoritmo de Disseminação Solução Proposta 3 Desafios Futuros Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 31 / 33 Desafios Futuros 1 Soluções com menor latência e escalabilidade 2 Outras aplicações: Reliable Broadcast, Publish/Subscribe, etc. Viabilidade em Redes dinâmicas 3 MANETs, VANETs, redes de sensores Mobilidade gera o caos! Redes móveis herdam todos os problemas das redes cabeadas e sem-fio e adicionam outros Roteamento, energia, segurança, qualidade de serviço, diagnóstico, etc. Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 32 / 33 Perguntas? Merci! Nossos computadores estão fora do ar, e por isso estamos fazendo tudo manualmente... Luiz A. Rodrigues [email protected] Luiz A. Rodrigues (UNIOESTE/UFPR/LIP6/INRIA [email protected] Sis. Distr. e Mutex ) 5 de abril de 2013 33 / 33