290 likes | 388 Views
Simulação Flexível de Protocolos Distribuídos para Computação Móvel. Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com DCC-IME-USP Orientador: Markus Endler (*) Atualmente no Centro de Pesquisas da Xerox (ES). Roteiro. Motivação Modelo de Sistema
E N D
Simulação Flexível de Protocolos Distribuídos para Computação Móvel Ricardo Couto A. da Rocha(*) rcarocha@ime.usp.br rcarocha@altavista.com DCC-IME-USP Orientador: Markus Endler (*) Atualmente no Centro de Pesquisas da Xerox (ES)
Roteiro • Motivação • Modelo de Sistema • Arquitetura de Referência • O Simulador MobiCS • Exemplo • Implementação • Avaliação • Conclusões
Motivação • 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 • Consumo de potência é crítico Desconexões voluntárias • Mobilidade Variação na qualidade da comunicação sem fio • Baixa taxa de transmissão do meio sem fio
Motivação • Implem. de algoritmos distribuídos em CM • Deve ser capaz de trabalhar com um número variável de participantes na interação • Otimizar o uso do meio sem fio • Desconexões voluntárias não devem possuir semântica de falha • Protocolos distribuídos vs. Ponto-a-ponto • Algoritmos distribuídos possuem estado distribuído a desconexão pode causar perda parcial do estado • Alta dependência da mobilidade corretude e desempenho • Conclusão: Avaliação da corretude é mais complexa
Motivação • Projeto SIDAM • Desenvolvimento de protocolos para CM multicast atômico, entrega confiável de respostas. • Validação e análise dos protocolos por simulação. • Requisitos para simulação de protocolos em CM • Abstrações para programação de protocolos. • Permitir o teste de protocolos. • Extensibilidade para permitir criação de elementos simulados com diferentes comportamentos. • Programação de modelos de simulação, sobretudo para modelos de mobilidade. • Simuladores para CM ns, GloMoSim
Motivação • GloMoSim • Protocolos são implementados em PARSEC, uma linguagem para simulação paralela. • Protocolos da camada TCP/IP e de baixo nível. • Simulação paralela de alto desempenho escalabilidade • Protocolos entidades: módulos monolíticos. • Padrões de comportamento devem ser programados explicitamente falta de abstrações.
Motivação • ns (network simulator) • Modelo dividido: C++ (máquina de simulação) e OTcl (programação) • Protocolos da camada de rede e transporte • Flexibilidade e extensibilidade • Avaliação da corretude de protocolos • Baseada em especificação formal [Verif, SPIN] • Baseada em simulações exaustivas [STRESS no ns]. • Nenhuma das abordagens é adequada à prototipagem de protocolos.
Motivação Limitações comuns para prototipagem e simulação de protocolos distribuídos • Nível de detalhamento não adequado. • Prototipagem abstrações de programação e transparência de simulação. • Extensibilidade nem sempre é possível. • 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.
Motivação • Coyote - Ambiente para Desenvolv. de Protocolos • Composição horizontal de protocolos. • Micro-protocolos, que interagem por eventos. • Aplicado em protocolos para CM. • Conceito de micro-protocolos foi adotado no trabalho. • Objetivos • 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. • Modelos de simulação programáveis.
Modelo de SistemaProtocolos Distribuídos • São algoritmos distribuídos que implementam comunicação e/ou coordenação entre vários hosts em CM • Exemplos: • Difusão de mensagens (multicast) • Exclusão mútua • Checkpointing • Entrega ordenada de mensagens • Algoritmos implementados sob o modelo indireto conscientes da mobilidade
Modelo de SistemaProtocolos Distribuídos Aplicações Protocolos Distribuídos Transporte e Rede Enlace de Dados e Físico
Modelo de SistemaProtocolos Distribuídos • 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. • Envio de mensagens na rede fixa é confiável • 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
Arquitetura de Referência para Simulação • Arquitetura de Referência: • 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. • Sugere: • Modo de simulação determinístico • Modelo de programação baseado em micro-protocolos • Abstrações para programação de modelos de 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). • 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 pode implementar diferentes modos de simulação. Aplicação ProtocolosDistribuídos Elementos de Rede Máquina de Simulação
Interface de eventos bem definida entre camadas de simulação e de elementos transparência de simulação Timer MsgArrived MsgArrived SetTimer MoveTo Connectivity Arquitetura de Referência para Simulação Elementos de Rede Máquina de Simulação
MobiCSMobileComputingSimulator • Biblioteca Java Rápida prototipagem de protocolos distribuídos • Modelo de programação de protocolos simples e flexível • Abstrações de programação de alto nível • Transparência total de simulação • Possibilita abstrações de mobilidade usuário pode criar seu próprio modelo de mobilidade • Abordagem para teste de corretude simulações determinísticas • Permite também simulação estocástica
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. Pacote MobiCS estende estende Protocolos estende Modelos de Simulação instancia instancia Simulação
Uso do MobiCS MobiCS é composto de 2 pacotes: • mobics.ppi programação de protocolos • mobics.ppi.protocol • mobics.ppi.message • mobics.simulation programação do modelo de simulação e configuração do ambiente de rede • mobics.simulation.DetermSimulation • mobics.simulation.StochSimulation
Protocolo Wired Wireless Handoff MobiCSModelo de Programação • Modelo de programação OO e modular • Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida • Arranjo típico • Micro-protocolos se comunicam por eventos mensagens, timers
MobiCSModelo de Programação • Micro-protocolos são interfaces Java que declaram um conjunto de tratadores para eventos • Os tratadores são métodos com assinatura when<Event>(EventType e) • Tratadores de eventos são atômicos. • Modelo de execução é seqüencial. • 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 }
MobiCSSimulação Determinística • Abordagem para teste e avaliação da corretude de protocolos. • 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. • Um script pode conter: envio de requisições, migrações, alterações na disponibilidade de um Mh, etc.
MobiCSSimulação Determinística • Exemplo: • 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. Mh1.moveTo(cell1);Mh1.send(Req);Mss3.send(server, new Ack(req));Mh2.unavailable();
MobiCSSimulação Determinística • Não há noção de tempo desempenho dos elementos de rede é infinito. • Uma simulação ocorre em passos. • Para definir ordenação entre os eventos, utiliza-se pontos de sincronização no script. • Globais eventos de diferentes elementos (end_step) • Locais eventos de um mesmo elemento (acceptTurnOn e accept)
C eventos independentes MobiCSSimulação Determinística • Script {ha,MSSo,MSSn}.acceptOn() mh.send(new Req()); mh.moveTo(MSSn); end_step(); // corte C server.accept(Req); mh.accept(Res); server res Home agent req res MSSo req mh res MSSn
MobiCSSimulação Determinística • Saída do modo determinístico • Mensagens exibidas no corpo dos tratadores de eventos • 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).
MobiCSSimulação Estocástica • Permite a avaliação do desempenho de protocolos pela realização de testes exaustivos. • Usuário define • Padrão de comportamento dos elementos • Modelo de mobilidade • O modelo de simulação pode ser • programado (extensão de classes) e • 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.
Interfaces com Usuário MobiCS Modos de Simulação Implementação do MobiCS • Características • Biblioteca escrita em Java • 120 classes, 10.000 linhas de código • Abordagem de Implementação • Implementa um núcleo de simulação • Uso intensivo de objetos • Permite a implementação e incorporação de outros modos de simulação Arcabouço Nova Ferramenta de Simulação
Implementação do MobiCS • Arcabouço para Implementação de Modos de Simulação, provê uniformidade: • Incorporação de máquinas de simulação • Utilização das interfaces pelo usuário • Define • Encapsulamento da nova máquina de simulação (AbstractSimulatedElement). • Delegação da criação dos objetos específicos de simulação (Simulator). • Uso das interfaces do novo modo de simulação (Simulation).