Introdução à Segurança de Funcionamento e Tolerância a Faltas

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Bruno M. Carvalho Sala: 3B2 Horário: 35T34
Introdução a Algoritmos
Metodologia de testes Nome: Gustavo G. Quintão
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Distribuídos
Sistemas operacionais
Fundamentos de Engenharia de SW
BANCO DE DADOS Transparências baseadas no capítulo 1 do livro de KORTH e SILBERCHATZ e 1 e 2 do livro de ELMASRI e NAVATHE. Juliana Amaral e Rodrigo Baroni.
Auditoria de Sistemas ● Introdução
Confiança.
Tolerância a falhas Módulo 5 [C11,C15,T4.5] (65 p.)
Sistemas Críticos (Confiança)
Jaime Dalla Valle Junior
Sumário 1 SQL Embutida 2 Processamento de Consultas
Interação Cliente Servidor
Sistemas Distribuídos
Sistemas Distribuídos
Uma Introdução a Detectores de Defeitos para Sistemas Assíncronos
Carolina Fonseca Neumar Ribeiro
The Byzantine Generals Problem
Recovery Blocks Paulo Junior Penna Pivetta. Introdução Os Projetos de Tolerância a falhas quase que exclusivamente eram dedicado a hardware Tolerância.
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
1 Sistemas Distribuídos - SDI Caracterização de Sistemas Distribuídos. Introdução. Exemplos de Sistemas Distribuídos. Desafios.
Daniel Paulo Introdução A disponibilidade de um sistema é a probabilidade de que ele esteja funcionando num determinado momento.
Questões Resolvidas - A.C.-10/08/05
Professor Victor Sotero
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Tópicos em Sistemas Distribuídos
Software de Rede Willamys Araújo.
REDUNDÂNCIA POR SOFTWARE
(Reliability) UFRGS-GUARITA-FINEP Desenvolvido por: Pablo Diego Didoné
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Sistemas Distribuídos
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação
Carlos Oberdan Rolim Ciência da Computação
Carlos Oberdan Rolim Ciência da Computação
Fiabilidade de Sistemas Informáticos
Tolerância a Falhas em Sistemas Distribuídos
O Problema Do Acordo Distribuído (Acordo Bizantino)
Introdução e Fundamentos Engenharia de Requisitos
Professor: Márcio Amador
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Sistemas Distribuídos Introdução. Conceito Coleção de múltiplos processos que executam sobre uma coleção de processadores autônomos interligados em uma.
Sistemas Distribuídos
SISTEMAS OPERACIONAIS I
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Sistemas Tolerantes a Falhas: Conceitos e Técnicas
Técnicas de Replicação
Testes de Software AULA 02 Eduardo Silvestri
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Testes de Software AULA 06 Eduardo Silvestri
Introdução a Banco de Dados Aula 04
Zeque - Grad. CC1 Sistemas Operacionais Curso de Ciência da Computação da UFPE Prof. José Queiroz - ZEQUE.
Testes de Software AULA 03 Eduardo Silvestri
PROGRAMAÇÃO DISTRIBUÍDA Aula 02 Prof. Henrique Mongelli
Subsistema de Entrada e Saída do Kernel
Integração de Ferramentas CASE
Tolerância a Falhas Carlos Oberdan Rolim Ciência da Computação.
Implementação Distribuída Escalonamento de Tempo-Real Prof. Dr. Norian Marranghello Grupo 8 Daniela Gonçalves Strozi – Sayuri Watanabe
Sistemas Operacionais IV – Gerenciamento de E/S
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Estimativa, Teste e Inspeção de Software
Bruna Cavallero Martins Universidade Católica de Pelotas.
Lucas R. Costa Rodrigo R. Bezerra Kaio A. da silva
Transcrição da apresentação:

Introdução à Segurança de Funcionamento e Tolerância a Faltas Alysson Neves Bessani LCMI - Laboratório de Controle e Microinformática DAS – Departamento de Automação e Sistemas UFSC – Universidade Federal de Santa Catarina

Sumário Segurança de Funcionamento Taxonomia de Segurança de Funcionamento Tolerância a Faltas Técnicas de Replicação Problemas Fundamentais Algumas Áreas de Pesquisa

Segurança de Funcionamento Sistemas computacionais são artefatos frágeis, muitas vezes não fazem o que é esperado ou, quando fazem, em um momento inconveniente; Mas qual a causa disso? Os computadores são sistemas complexos, feitos de diferentes componentes de hardware e software; Esses componentes interagem uns com os outros muitas vezes de forma imprevista pelo projetista do sistemas; Velha da lei da engenharia - Lei de Murphy: Se a possibilidade de ocorrência de um perigo é negligenciada, ela tende a ocorrer da pior maneira possível e no pior momento possível.

Segurança de Funcionamento Conceito: Segurança de funcionamento é a qualidade do serviço fornecido de modo que os seus usuários possam depositar no mesmo uma confiança justificada. Um sistema é confiável (dependable) se tem uma alta probabilidade de proceder sua função de acordo com sua especificação; A completa especificação não deve ser limitada para o que o sistema faz, mas deve também especificar as condições ambientais requeridas para o sistema fornecer o serviço requerido.

Segurança de Funcionamento Quando um procedimento do sistema viola sua especificação dizemos que ele falhou, mas o que leva um sistema à falha ? Causas externas ou internas, chamadas de faltas. A falta pode permanecer adormecida (inativa) por um momento, até ser ativada. Exemplo: defeito em um registro de um sistema de arquivo que pode permanecer despercebido até ser ativado. O registro corrompido é um erro no estado do sistema que o levará a falha.

Taxonomia de Segurança de Funcionamento Imperfeições: faltas, erros, falhas Falta é a causa, no sentido fenomelógico, de um erro; Um erro é a parte do estado do sistema (estado errôneo) que pode conduzir a uma falha no sistema; A falha de um sistema ocorre quando o serviço fornecido desvia do serviço especificado. A falha é o efeito observado externamente do erro. Falha é sentida e/ou avaliada. Erro é detectado/recuperado. Falta é evitada ou tolerada.

Taxonomia de Segurança de Funcionamento Falhas similares podem ser derivadas de erros completamente diferentes, exemplo: Caractere estranho na tela: Rotina falha do sistema operacional; Defeito da placa de vídeo. Também, erros podem ser causados por diferentes faltas, exemplo: O erro do disco pode ser devido à falta física na superfície do disco ou pode ser devido à defeito de fabricação do cabeçote.

Taxonomia de Segurança de Funcionamento Origem das faltas: Física: gerados por causas físicas (hardware); Projeto: quando introduzidos na fase de projeto; Interação: quando ocorrido nas interfaces entre os componentes do sistema, ou na interface com o mundo exterior. Faltas de projeto e algumas faltas de interação são causadas por falha humana.

Taxonomia de Segurança de Funcionamento Sistema: faltas, erros, falhas

Taxonomia de Segurança de Funcionamento Métodos de Validação da Segurança de Funcionamento Remoção de faltas (verificação): métodos que minimizam a presença de faltas. Consiste em detectar as faltas e remover eles antes que causem um erro, exemplo: Removendo bugs de software; Detectando defeito de hardware. Previsão de faltas (avaliação): métodos de avaliação que estimam a presença de faltas e suas conseqüências.

Taxonomia de Segurança de Funcionamento Métodos de Obtenção da Segurança de Funcionamento: Prevenção de faltas: consiste de prevenir (por construção) as causas dos erros, eliminando as condições para uma provável ocorrência de falta durante operação do sistema, exemplo: Usando componentes de alta qualidade; Usando componentes com redundância interna. Tolerância a faltas: fornecimento do serviço de acordo com as especificações, mesmo em presença de uma ou mais faltas ativas, pelo uso de redundâncias.

Classificação de Faltas Quanto mais restritiva o modelo de faltas assumido menor a complexidade do algoritmo distribuído considerado. Faltas Arbitrárias Faltas de Valor Faltas de Temporização Faltas de Omissão Faltas de Crash

Tolerância a Faltas Objetivo: Mascarar falhas Causas de falhas: Em hardware: razões físicas; Em software: falhas de projeto. Confiabilidade: Hardware: Muito confiável; Software: Pouco confiável.

Tolerância a Faltas Sistema Tolerante a Faltas é aquele que pelo uso de redundâncias mantém o serviço correto mesmo em presença de componentes faltosos; Redundâncias são partes do sistema que não seriam necessárias para o funcionamento do sistema se não ocorressem faltas no sistema: Redundância de hardware; Redundância de software; Redundância de tempo. Nos sistemas atuais ocorrem os três tipos de redundâncias.

Tolerância a Faltas de Hardware Fases da Tolerância a Faltas: Detecção de erros, Confinamento de erros, Recuperação de erros e Tratamento de faltas. Detecção de erros: é a fase onde a presença de elementos faltosos é deduzida pela constatação de um erro. São meios que possibilitam a prevenção de uma falha. Testes completos, testes de aceitação, testes independentes, internos, etc. Confinamento de erros: técnicas e mecanismos que delimitam os eventuais danos a um sistema devido à propagação de erros. Um erro se propaga através da interação de componentes do sistema. Barreiras incorporadas ao sistema em tempo de projeto.

Tolerância a Faltas de Hardware Recuperação de erros: restauração da seqüência de estados corretos. Dois mecanismos que tratam erros: Técnicas de processamento de erro: Recuperação em retrocesso (Backward recovery): coloca o sistema em um estado correto anterior. A partir deste estado recomeça o processamento; Recuperação em avanço (Forward recovery): usando o estado errôneo, coloca o sistema em um estado correto a frente. É importante em aplicações tempo-real (tal como um sistema de controle embarcado de um aeroplano). Mascaramento de erros: Uso de réplicas ativas para que o componente faltoso seja mascarado em seu comportamento.

Tolerância a Faltas de Hardware Tratamento de Faltas: configuração dinâmica para tirar elementos faltosos. Detecção de erros M1 Saída Entrada M2 Chave Replicação Passiva (configuração dinâmica)

Tolerância a Faltas de Hardware Tratamento de Faltas M1 Votador M2 Saída Entrada M3 Replicação Ativa (configuração estática) Ignora o elemento faltoso

Tolerância a Faltas de Software Hardware: replicação de componentes Software: diversidade de projetos Programação N-versões; Abordagem Bloco de Recuperação.

Tolerância a Faltas de Software Programação N-versões: diferentes implementações de um mesmo algoritmo Usando diferentes linguagens de programação para cada versão; Usando diferentes compiladores e ambientes de suporte; Usando diferentes algoritmos, se possível; Usando diferentes times de desenvolvimento. 1 2 3 Voter Entrada Saída

Tolerância a Faltas de Software Bloco de recuperação: o programa é dividido em blocos com pontos de recuperação em caso de falha detectado pelo teste de aceitação (TA). 1 TA Entrada Saída 3 2 Ponto de Recuperação

Tolerância a Faltas em Sistemas Distribuídos Desenvolvimento de aplicações confiáveis: Permitir que serviços sejam oferecidos continuamente mesmo em presença de falhas parciais no sistema; Técnicas de replicação: Fazer várias cópias (réplicas) de um mesmo servidor de tal forma que na falhas de um deles, outro possa tomar seu lugar; Suporte de grupo: Protocolos de difusão de mensagem (multicast): Atomicidade e ordenação das mensagens; Estado consistente entre as réplicas. Gerenciamento de grupo (membership): Gerenciamento dinâmico dos membros; Mecanismos de detecção de falhas.

Técnicas de Replicação É uma maneira usual para alcançar tolerância a faltas em sistemas distribuídos: Melhorar a confiabilidade do sistema; Aumentar a disponibilidade dos recursos. Podem ser classificadas em duas abordagens básicas: Replicação passiva; Replicação ativa;

Técnicas de Replicação Replicação passiva: Somente um membro (o primário) recebe, executa e responde as invocações dos clientes; As réplicas restantes do grupo (os backups) têm a função de substituir o primário caso este falhe. Checkpoints Primário Backups Cliente

Técnicas de Replicação Replicação ativa: Todos os membros recebem, executam e respondem as invocações dos clientes; Combinando com outros mecanismos é capaz de tolerar todas classes de falhas. Grupo Replicado Cliente

Técnicas de Replicação A replicação ativa requer uma primitiva de difusão atômica (confiável e com ordem total); Este tipo de primitiva não pode ser implementado em sistemas assíncronos (sem garantias temporais). Existem vários esquemas mistos de replicação que misturam essas duas técnicas; Considerações: A replicação ativa requer um número maior de recursos; A replicação passiva tem um failover (tempo de espera para recuperação em caso de falhas) maior. Dois exemplos de produtos: zSeries (IBM) e NonStop (HP).

Problemas Fundamentais Consenso: Forma canônica do problema de acordo: Cada processo pi propõem um valor vi e todos devem decidir um mesmo valor v*  {vi| i=1..n}; Primitivas básicas: propose(v): propõem um valor v; decide(v): decide um valor v; Através da abstração do consenso é possível se construir quase todas as primitiva de acordo em S.D.

Problemas Fundamentais Consenso: Especificação (propriedades): Terminação: Cada processo correto decide algum valor; Validade: Se um processo decide v, então v foi proposto por algum processo; Acordo: Se um processo correto decide v, então todos os processos corretos decidem v; Infelizmente, o consenso não pode ser resolvido por algoritmos deterministas em sistemas assíncronos: Resultado FLP: como garantir terminação?

Problemas Fundamentais Impossibilidade de Consenso em Sistemas Assíncronos p1 v = 1 v = 0 v = ? p3 p2 Como saber se p3 é lento ou falhou? Terminação Indecidível!

Problemas Fundamentais Problema dos Generais Bizantinos: Um grupo de n generais bizantinos estão acampados ao redor da cidade inimiga; Depois de observar o inimigo os generais devem decidir um plano de ação comum; Alguns dos generais podem ser traidores (t); Todos os generais podem se comunicar com todos os outros; O problema dos generais bizantinos pode ser resolvido através de uma série de acordos bizantinos.

Problemas Fundamentais Acordo Bizantino: Considere n generais, sendo um deles o comandante. O comandante precisa enviar uma ordem para os n-1 subordinados de tal forma que: IC1: Todos os subordinados leais obedecem a mesma ordem; IC2: Se o comandante é leal, então todos os generais subordinados leais obedecem a ordem enviada por ele. As condições IC1 e IC2 são chamadas condições de consistência iterativa.

Problemas Fundamentais Resultado de Impossibilidade comandante atacar atacar traidor subordinado 1 ele disse ‘retirada’ subordinado 2 Atacar ou retirada? Como satisfazer IC2? Subordinado Traidor

Problemas Fundamentais Resultado de Impossibilidade traidor comandante Nos dois casos o subordinado 1 não sabe quem é o traidor e nem qual das ordens seguir. atacar retirada subordinado 1 ele disse ‘retirada’ subordinado 2 Atacar ou retirada? Como satisfazer IC1? Comandante Traidor

Problemas Fundamentais subordinado 1: (v,v,x) = v subordinado 2: (v,v,x) = v subordinado 3: traidor comandante v x v subordinado 1 subordinado 2 subordinado 3 v

Algumas Áreas de Pesquisa Middleware: Web Services e J2EE; Relação entre tolerância a faltas e segurança; Tolerância a Intrusões; Tolerância a faltas em novos modelos de sistemas distribuídos: P2P (Peer-to-Peer); Sistemas móveis; Grades computacionais. Do ponto de vista teórico... Consenso; Memória compartilhada; Computação com infinitos processos.