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

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

Simulação Flexível de Protocolos Distribuídos para Computação Móvel Ricardo Couto A. da Rocha (*)

Apresentações semelhantes


Apresentação em tema: "Simulação Flexível de Protocolos Distribuídos para Computação Móvel Ricardo Couto A. da Rocha (*)"— Transcrição da apresentação:

1 Simulação Flexível de Protocolos Distribuídos para Computação Móvel Ricardo Couto A. da Rocha (*) Orientador: Markus Endler (*) Atualmente no Centro de Pesquisas da Xerox (ES)

2 Roteiro Motivação Motivação Modelo de Sistema Modelo de Sistema Arquitetura de Referência Arquitetura de Referência O Simulador MobiCS O Simulador MobiCS Exemplo Exemplo Implementação Implementação Avaliação Avaliação Conclusões Conclusões

3 Motivação Motivação Características de ambientes de Computação Móvel (CM) Características de ambientes de Computação Móvel (CM) Localização das estações móveis pode variar com o tempo Topologia dinâmica Localização das estações móveis pode variar com o tempo Topologia dinâmica Consumo de potência é crítico Desconexões voluntárias Consumo de potência é crítico Desconexões voluntárias Mobilidade Variação na qualidade da comunicação sem fio Mobilidade Variação na qualidade da comunicação sem fio Baixa taxa de transmissão do meio sem fio Baixa taxa de transmissão do meio sem fio

4 Motivação Motivação Implem. de algoritmos distribuídos em CM Implem. de algoritmos distribuídos em CM Deve ser capaz de trabalhar com um número variável de participantes na interação Deve ser capaz de trabalhar com um número variável de participantes na interação Otimizar o uso do meio sem fio Otimizar o uso do meio sem fio Desconexões voluntárias não devem possuir semântica de falha Desconexões voluntárias não devem possuir semântica de falha Protocolos distribuídos vs. Ponto-a-ponto Protocolos distribuídos vs. Ponto-a-ponto Algoritmos distribuídos possuem estado distribuído a desconexão pode causar perda parcial do estado Algoritmos distribuídos possuem estado distribuído a desconexão pode causar perda parcial do estado Alta dependência da mobilidade corretude e desempenho Alta dependência da mobilidade corretude e desempenho Conclusão: Avaliação da corretude é mais complexa Conclusão: Avaliação da corretude é mais complexa

5 Motivação Motivação Projeto SIDAM Projeto SIDAM Desenvolvimento de protocolos para CM multicast atômico, entrega confiável de respostas. Desenvolvimento de protocolos para CM multicast atômico, entrega confiável de respostas. Validação e análise dos protocolos por simulação. Validação e análise dos protocolos por simulação. Requisitos para simulação de protocolos em CM Requisitos para simulação de protocolos em CM Abstrações para programação de protocolos. Abstrações para programação de protocolos. Permitir o teste de protocolos. Permitir o teste de protocolos. Extensibilidade para permitir criação de elementos simulados com diferentes comportamentos. Extensibilidade para permitir criação de elementos simulados com diferentes comportamentos. Programação de modelos de simulação, sobretudo para modelos de mobilidade. Programação de modelos de simulação, sobretudo para modelos de mobilidade. Simuladores para CM ns, GloMoSim Simuladores para CM ns, GloMoSim

6 Motivação Motivação GloMoSim GloMoSim Protocolos são implementados em PARSEC, uma linguagem para simulação paralela. Protocolos são implementados em PARSEC, uma linguagem para simulação paralela. Protocolos da camada TCP/IP e de baixo nível. Protocolos da camada TCP/IP e de baixo nível. Simulação paralela de alto desempenho escalabilidade Simulação paralela de alto desempenho escalabilidade Protocolos entidades: módulos monolíticos. Protocolos entidades: módulos monolíticos. Padrões de comportamento devem ser programados explicitamente falta de abstrações. Padrões de comportamento devem ser programados explicitamente falta de abstrações.

7 Motivação Motivação ns (network simulator) ns (network simulator) Modelo dividido: C++ (máquina de simulação) e OTcl (programação) Modelo dividido: C++ (máquina de simulação) e OTcl (programação) Protocolos da camada de rede e transporte Protocolos da camada de rede e transporte Flexibilidade e extensibilidade Flexibilidade e extensibilidade Avaliação da corretude de protocolos Avaliação da corretude de protocolos Baseada em especificação formal [Verif, SPIN] Baseada em especificação formal [Verif, SPIN] Baseada em simulações exaustivas [STRESS no ns]. Baseada em simulações exaustivas [STRESS no ns]. Nenhuma das abordagens é adequada à prototipagem de protocolos. Nenhuma das abordagens é adequada à prototipagem de protocolos.

8 Motivação Motivação Nível de detalhamento não adequado. Nível de detalhamento não adequado. Prototipagem abstrações de programação e transparência de simulação. Prototipagem abstrações de programação e transparência de simulação. Extensibilidade nem sempre é possível. Extensibilidade nem sempre é possível. Falta de ferramentas integradas para teste e validação de protocolos distribuídos. Falta de ferramentas integradas para teste e validação de protocolos distribuídos. Teste de diferentes modelos de mobilidade faltam abstrações de mobilidade de alto nível. Teste de diferentes modelos de mobilidade faltam abstrações de mobilidade de alto nível. Limitações comuns para prototipagem e simulação de protocolos distribuídos

9 Motivação Coyote - Ambiente para Desenvolv. de Protocolos Coyote - Ambiente para Desenvolv. de Protocolos Composição horizontal de protocolos. Composição horizontal de protocolos. Micro-protocolos, que interagem por eventos. Micro-protocolos, que interagem por eventos. Aplicado em protocolos para CM. Aplicado em protocolos para CM. Conceito de micro-protocolos foi adotado no trabalho. Conceito de micro-protocolos foi adotado no trabalho. Objetivos Objetivos Ambiente integrado para prototipagem, teste e avaliação de desempenho de algoritmos distribuídos. Ambiente integrado para prototipagem, teste e avaliação de desempenho de algoritmos distribuídos. Transparência de simulação e abstrações de programação. Transparência de simulação e abstrações de programação. Modelos de simulação programáveis. Modelos de simulação programáveis. Objetivos Objetivos Ambiente integrado para prototipagem, teste e avaliação de desempenho de algoritmos distribuídos. Ambiente integrado para prototipagem, teste e avaliação de desempenho de algoritmos distribuídos. Transparência de simulação e abstrações de programação. Transparência de simulação e abstrações de programação. Modelos de simulação programáveis. Modelos de simulação programáveis.

10 Modelo de Sistema Modelo de Sistema

11 Modelo de Sistema Protocolos Distribuídos Modelo de Sistema Protocolos Distribuídos São algoritmos distribuídos que implementam comunicação e/ou coordenação entre vários hosts em CM São algoritmos distribuídos que implementam comunicação e/ou coordenação entre vários hosts em CM Exemplos: Exemplos: Difusão de mensagens (multicast) Difusão de mensagens (multicast) Exclusão mútua Exclusão mútua Checkpointing Checkpointing Entrega ordenada de mensagens Entrega ordenada de mensagens Algoritmos implementados sob o modelo indireto conscientes da mobilidade Algoritmos implementados sob o modelo indireto conscientes da mobilidade

12 Modelo de Sistema Protocolos Distribuídos Modelo de Sistema Protocolos Distribuídos Enlace de Dados e Físico Transporte e Rede ProtocolosDistribuídos Aplicações

13 Modelo de Sistema Protocolos Distribuídos Abstração básica de interação entre protocolos/máquinas mensagem Abstração básica de interação entre protocolos/máquinas mensagem Mensagem é entregue se não há migração intercelular do MH durante envio. envio é confiável, mas MHs nem sempre estão acessíveis. Mensagem é entregue se não há migração intercelular do MH durante envio. envio é confiável, mas MHs nem sempre estão acessíveis. Envio de mensagens na rede fixa é confiável Envio de mensagens na rede fixa é confiável O canal sem fio é caracterizado pela taxa efetiva de envio de dados. O canal sem fio é caracterizado pela taxa efetiva de envio de dados. Hand-Off é iniciado pelo MH revelando ao novo MSS a sua identidade e o MSS anterior Hand-Off é iniciado pelo MH revelando ao novo MSS a sua identidade e o MSS anterior

14 Arquitetura de Referência para Simulação Arquitetura de Referência para Simulação Arquitetura de Referência: Arquitetura de Referência: Arquitetura generalizada que define uma infra-estrutura e interfaces comuns para sistema em um mesmo domínio de aplicação. Arquitetura generalizada que define uma infra-estrutura e interfaces comuns para sistema em um mesmo domínio de aplicação. Requisitos, conceitos, abstrações e uma arquitetura de software. Requisitos, conceitos, abstrações e uma arquitetura de software. Sugere: Sugere: Modo de simulação determinístico Modo de simulação determinístico Modelo de programação baseado em micro- protocolos Modelo de programação baseado em micro- protocolos Abstrações para programação de modelos de simulação. Abstrações para programação de modelos de simulação.

15 Arquitetura de Referência para Simulação Arquitetura de Referência para Simulação Camada de elementos de rede implementa funcionalidade do hardware e software de baixo nível (SO, protocolos). Camada de elementos de rede implementa funcionalidade do hardware e software de baixo nível (SO, protocolos). Processos concorrentes implementam cada elemento de rede. Processos concorrentes implementam cada elemento de rede. A máquina de simulação determina a ordem de processamento de eventos. A máquina de simulação determina a ordem de processamento de eventos. A máquina de simulação pode implementar diferentes modos de simulação. A máquina de simulação pode implementar diferentes modos de simulação. Máquina de Simulação Elementos de Rede Aplicação Protocolos Distribuídos

16 Arquitetura de Referência para Simulação Interface de eventos bem definida entre camadas de simulação e de elementos transparência de simulação Interface de eventos bem definida entre camadas de simulação e de elementos transparência de simulação Elementos de Rede Máquina de Simulação MsgArrived SetTimer Timer MsgArrived MoveTo Connectivity

17 MobiCS Mobi C S MobiCS Mobile Computing Simulator Biblioteca Java Rápida prototipagem de protocolos distribuídos Biblioteca Java Rápida prototipagem de protocolos distribuídos Modelo de programação de protocolos simples e flexível Modelo de programação de protocolos simples e flexível Abstrações de programação de alto nível Abstrações de programação de alto nível Transparência total de simulação Transparência total de simulação Possibilita abstrações de mobilidade usuário pode criar seu próprio modelo de mobilidade Possibilita abstrações de mobilidade usuário pode criar seu próprio modelo de mobilidade Abordagem para teste de corretude simulações determinísticas Abordagem para teste de corretude simulações determinísticas Permite também simulação estocástica Permite também simulação estocástica

18 Uso do MobiCS Uso do MobiCS Usuário implementa classes que definem os protocolos a serem simulados, o ambiente de rede e o modelo de simulação desejado. Usuário implementa classes que definem os protocolos a serem simulados, o ambiente de rede e o modelo de simulação desejado. Pacote MobiCS Protocolos Modelos de Simulação Simulação estende instancia

19 Uso do MobiCS Uso do MobiCS MobiCS é composto de 2 pacotes: mobics.ppi programação de protocolos mobics.ppi programação de protocolos mobics.ppi.protocol mobics.ppi.protocol mobics.ppi.message mobics.ppi.message mobics.simulation programação do modelo de simulação e configuração do ambiente de rede mobics.simulation programação do modelo de simulação e configuração do ambiente de rede mobics.simulation.DetermSimulation mobics.simulation.DetermSimulation mobics.simulation.StochSimulation mobics.simulation.StochSimulation

20 Uso do MobiCS Sequência de Passos Uso do MobiCS Sequência de Passos Sequência de passos p/ implementar e simular: Sequência de passos p/ implementar e simular: Declarar as interfaces e programar o protocolo Declarar as interfaces e programar o protocolo mobics.ppi.message & mobics.ppi.protocol Escolher o modo de simulação (determ./ estocástico) Escolher o modo de simulação (determ./ estocástico) Programar um modelo de simulação adequado ao protocolo (script deterministico ou classes simulação) Programar um modelo de simulação adequado ao protocolo (script deterministico ou classes simulação) Estender a classe DetermSimulation (ou StochSimulation) definindo o ambiente de rede (elementos simulados & topologia, outros conceitos) Estender a classe DetermSimulation (ou StochSimulation) definindo o ambiente de rede (elementos simulados & topologia, outros conceitos) Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.start Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.start

21 MobiCS Modelo de Programação MobiCS Modelo de Programação Modelo de programação OO e modular Modelo de programação OO e modular Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida Arranjo típico Arranjo típico Micro-protocolos se comunicam por eventos mensagens, timers Micro-protocolos se comunicam por eventos mensagens, timers Protocolo Wired Wireless Handoff

22 MobiCS Modelo de Programação MobiCS Modelo de Programação Micro-protocolos são interfaces Java que declaram um conjunto de tratadores para eventos Micro-protocolos são interfaces Java que declaram um conjunto de tratadores para eventos Os tratadores são métodos com assinatura when (EventType e) Os tratadores são métodos com assinatura when (EventType e) Tratadores de eventos são atômicos. Tratadores de eventos são atômicos. Modelo de execução é seqüencial. Modelo de execução é seqüencial. Abstrações para envio confiável e não-confiável de mensagens: send e rsend Abstrações para envio confiável e não-confiável de mensagens: send e rsend try { rSend(hostDest, message); } catch (MsgNotAcknow notAck) { // host not found } try { rSend(hostDest, message); } catch (MsgNotAcknow notAck) { // host not found }

23 MobiCS Modelo de Programação MobiCS Modelo de Programação Etapas de implementação de um protocolo Etapas de implementação de um protocolo Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar as interfaces dos micro-protocolos Declarar as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro-protocolos Implementar os métodos Implementar os métodos

24 O Pacote mobics.ppi.message O Pacote mobics.ppi.message Toda mensagem é um objeto de uma subclasse de mobics.ppi.message.Message e contém um tipo (sua classe) e um conteúdo Toda mensagem é um objeto de uma subclasse de mobics.ppi.message.Message e contém um tipo (sua classe) e um conteúdo Classe Message = conjunto mínimo de informações para processar uma mensagem Classe Message = conjunto mínimo de informações para processar uma mensagem Atributos: Atributos: sender, receiver, responsible (protocolo ao qual msg está associada) sender, receiver, responsible (protocolo ao qual msg está associada) Métodos: Métodos: Message, callHandler, clone, toString Message, callHandler, clone, toString callHandler(Protocolo) faz chamada ao método Protocolo.whenTipoMensagem callHandler(Protocolo) faz chamada ao método Protocolo.whenTipoMensagem

25 O Pacote mobics.ppi.message O Pacote mobics.ppi.message O pacote declara 4 interfaces (que definem o tipo da mensagem): O pacote declara 4 interfaces (que definem o tipo da mensagem): HandoffMessage, WiredMessage, WirelessMessage e AppMessage HandoffMessage, WiredMessage, WirelessMessage e AppMessage Toda mensagem deve implementar uma destas interfaces! Toda mensagem deve implementar uma destas interfaces! Mensagem é um objeto imutável (métodos públicos não podem alterar estado) Mensagem é um objeto imutável (métodos públicos não podem alterar estado) Mensagem padrão greet, enviada por um MH para iniciar um Hand-Off Mensagem padrão greet, enviada por um MH para iniciar um Hand-Off

26 O Pacote mobics.ppi.protocol O Pacote mobics.ppi.protocol Novo Microprotocolo é declarado estendendo-se as interfaces WiredModule, WirelessModule, e Novo Microprotocolo é declarado estendendo-se as interfaces WiredModule, WirelessModule, e HandoffModule HandoffModule Devem ser declarados todos os tratadores para as mensagens que compôem o micro-protocolo Devem ser declarados todos os tratadores para as mensagens que compôem o micro-protocolo Duas subclasses de Protocol, MssProtocol e MhProtocol possuem uma interface específica para a implementação de protocolos em MHs e MSSs Duas subclasses de Protocol, MssProtocol e MhProtocol possuem uma interface específica para a implementação de protocolos em MHs e MSSs Método Protocol.send(Addr, Message) é a forma de interação entre instanâncias de um protocolo Método Protocol.send(Addr, Message) é a forma de interação entre instanâncias de um protocolo Pode gerar uma exceção CommunicatioException Pode gerar uma exceção CommunicatioException send envio assíncrono de uma mensagem para outro elemento simulado ( rsend é a versão confiável) send envio assíncrono de uma mensagem para outro elemento simulado ( rsend é a versão confiável)

27 MobiCS Simulação Determinística MobiCS Simulação Determinística Abordagem para teste e avaliação da corretude de protocolos. Abordagem para teste e avaliação da corretude de protocolos. O simulador reproduz cenários específicos (e determinísticos) descritos em um script. O simulador reproduz cenários específicos (e determinísticos) descritos em um script. É similar a uma simulação trace-driven, só que é o próprio usuário quem cria os traços de simulação. É similar a uma simulação trace-driven, só que é o próprio usuário quem cria os traços de simulação. Um script pode conter: envio de requisições, migrações, alterações na disponibilidade de um Mh, etc. Um script pode conter: envio de requisições, migrações, alterações na disponibilidade de um Mh, etc.

28 MobiCS Simulação Determinística MobiCS Simulação Determinística Exemplo: Exemplo: O comportamento dos protocolos é definido apenas pela sua própria implementação. O comportamento dos protocolos é definido apenas pela sua própria implementação. O script deve descrever situações críticas nas quais o protocolo precisa ser testado. O script deve descrever situações críticas nas quais o protocolo precisa ser testado. Mh1.moveTo(cell1); Mh1.send(Req); Mss3.send(server, new Ack(req)); Mh2.unavailable();

29 MobiCS Simulação Determinística MobiCS Simulação Determinística Não há noção de tempo desempenho dos elementos de rede é infinito. Não há noção de tempo desempenho dos elementos de rede é infinito. Uma simulação ocorre em passos. Uma simulação ocorre em passos. Para definir ordenação entre os eventos, utiliza- se pontos de sincronização no script. Para definir ordenação entre os eventos, utiliza- se pontos de sincronização no script. Globais eventos de diferentes elementos ( end_step ) Globais eventos de diferentes elementos ( end_step ) Locais eventos de um mesmo elemento ( acceptTurnOn e accept ) Locais eventos de um mesmo elemento ( acceptTurnOn e accept )

30 MobiCS Simulação Determinística MobiCS Simulação Determinística server Home agent MSSo MSSn mh req res C Script Script{ha,MSSo,MSSn}.acceptOn() mh.send(new Req()); mh.moveTo(MSSn); end_step(); // corte C server.accept(Req);mh.accept(Res); Script Script{ha,MSSo,MSSn}.acceptOn() mh.send(new Req()); mh.moveTo(MSSn); end_step(); // corte C server.accept(Req);mh.accept(Res); eventos independentes

31 MobiCS Simulação Determinística MobiCS Simulação Determinística server Home agent MSSo MSSn mh Script Script{ha,MSSo,MSSn}.acceptOn() mh.send(new Req()); mh.moveTo(MSSn); end_step(); // corte C server.accept(Req);mh.accept(Res); req res

32 MobiCS Simulação Determinística MobiCS Simulação Determinística Saída do modo determinístico Saída do modo determinístico Mensagens exibidas no corpo dos tratadores de eventos Mensagens exibidas no corpo dos tratadores de eventos Log de eventos exibidos pelo MobiCS e configurado pelo usuário. Log de eventos exibidos pelo MobiCS e configurado pelo usuário. Exceções no script determinístico e nos protocolos (erros em tempo de execução e violações a assertivas). Exceções no script determinístico e nos protocolos (erros em tempo de execução e violações a assertivas).

33 MobiCS Simulação Estocástica MobiCS Simulação Estocástica Permite a avaliação do desempenho de protocolos pela realização de testes exaustivos. Permite a avaliação do desempenho de protocolos pela realização de testes exaustivos. Usuário define Usuário define Padrão de comportamento dos elementos Padrão de comportamento dos elementos Modelo de mobilidade Modelo de mobilidade O modelo de simulação pode ser O modelo de simulação pode ser programado (extensão de classes) e programado (extensão de classes) e configurado pelo usuário (instanciação de objetos). configurado pelo usuário (instanciação de objetos). Deve ser atribuído a cada elemento simulado um objeto que define seu comportamento na simulação a partir de um modelo de simulação. Deve ser atribuído a cada elemento simulado um objeto que define seu comportamento na simulação a partir de um modelo de simulação.

34 Implementação do MobiCS Implementação do MobiCS Características Características Biblioteca escrita em Java Biblioteca escrita em Java 120 classes, linhas de código 120 classes, linhas de código Abordagem de Implementação Abordagem de Implementação Implementa um núcleo de simulação Implementa um núcleo de simulação Uso intensivo de objetos Uso intensivo de objetos Permite a implementação e incorporação de outros modos de simulação Arcabouço Permite a implementação e incorporação de outros modos de simulação Arcabouço MobiCS Interfaces com Usuário Modos de Simulação Nova Ferramenta de Simulação

35 Implementação do MobiCS Implementação do MobiCS Arcabouço para Implementação de Modos de Simulação, provê uniformidade: Arcabouço para Implementação de Modos de Simulação, provê uniformidade: Incorporação de máquinas de simulação Incorporação de máquinas de simulação Utilização das interfaces pelo usuário Utilização das interfaces pelo usuário Define Define Encapsulamento da nova máquina de simulação ( AbstractSimulatedElement ). Encapsulamento da nova máquina de simulação ( AbstractSimulatedElement ). Delegação da criação dos objetos específicos de simulação ( Simulator ). Delegação da criação dos objetos específicos de simulação ( Simulator ). Uso das interfaces do novo modo de simulação ( Simulation ). Uso das interfaces do novo modo de simulação ( Simulation ).

36 Implementação do MobiCS Arquitetura da Camada de Simulação Arquitetura da Camada de Simulação Controlador de Simulação Fila de Mensagens Fila de Eventos Gerenciador de Eventos Notificador de Protocolos Interfaces de Rede Gerador de Eventos Canal de Controle Camada de Simulação


Carregar ppt "Simulação Flexível de Protocolos Distribuídos para Computação Móvel Ricardo Couto A. da Rocha (*)"

Apresentações semelhantes


Anúncios Google