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

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

Tutorial do MobiCS: Interfaces de Programação e Exemplos Ricardo Couto Antunes da Rocha 29 de setembro de 2000.

Apresentações semelhantes


Apresentação em tema: "Tutorial do MobiCS: Interfaces de Programação e Exemplos Ricardo Couto Antunes da Rocha 29 de setembro de 2000."— Transcrição da apresentação:

1 Tutorial do MobiCS: Interfaces de Programação e Exemplos Ricardo Couto Antunes da Rocha rcarocha@ime.usp.brDCC-IME-USP 29 de setembro de 2000

2 2 / 75 Roteiro Revisão Um Exemplo: O Protocolo RDP Implementação do Protocolo Configuração do Ambiente Simulado Exemplo de Simulação Determinística Exemplo de Simulação Estocástica

3 Revisão Modelo de Sistema para CM Conceito de protocolos distribuídos MobiCS: requisitos de projeto Implementação de MobiCS: bibliotecas principais

4 4 / 75 Modelo de Sistema para CM Termos  Máquina Fixa  Rede Fixa  Mh - Estação móvel  Mss - Estação base  Célula  Canal sem fio  Handoff

5 5 / 75 Modelo de Sistema para CM

6 6 / 75 Modelo de Sistema para CM Quando um Mh detecta que está em outra célula, ele envia para o Mss responsável uma mensagem Greet(mh,oldMss) Cada Mh por ter, no máximo, um Mss responsável. Não é possível interseção de áreas de células.

7 7 / 75 Protocolos Distribuídos São algoritmos distribuídos que implementam comunicação e/ou coordenação entre vários hosts em CM Elementos: estado, algoritmo, instância Exemplos:  Comunicação multi-ponto  Exclusão mútua  Checkpointing  Entrega ordenada de mensagens

8 8 / 75 Protocolos Distribuídos (cont) Enlace de Dados e Físico Transporte e Rede ProtocolosDistribuídos Aplicações

9 9 / 75 Protocolos Distribuídos (cont) Abstração básica de interação entre protocolos/máquinas  mensagem Problemas como taxa de erros no canal e retransmissões são transparentes. Taxa efetiva de envio de dados incorpora todas as características físicas do canal. O envio de mensagens é confiável, embora os MHs nem sempre sejam acessíveis  confirmações devem ser feitas pelos próprios protocolos

10 10 / 75 MobiCS Mobi C S MobiCS Mobile Computing Simulator 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 (paralel.)

11 11 / 75 MobiCS Mobi C S MobiCS Mobile Computing Simulator (cont) Totalmente desenvolvido em Java  uso das abstrações e bibliotecas de Java pelo programador de protocolos  facilita a distribuição do simulador  uso de reflexão computacional permite a criação de um modelo de programação mais elegante

12 12 / 75 Arquitetura de Software (cont) Protocolos Distribuídos  Composta pelos protocolos distribuídos sendo simulados  Programador define tratadores de eventos recebidos de outras camadas Máquina de Simulação Elementos de Rede Protocolos Distribuídos Aplicação

13 13 / 75 MobiCS Mobi C S MobiCS Mobile Computing Simulator (cont) O que é o MobiCS? Biblioteca de classes Java que permite:  Criação de um ambiente de computação móvel simulado  Simulação com diferentes máquinas de simulação  Programação de novos protocolos a serem simulados  Incorporação de novas máquinas de simulação  Especialização dos elementos simulados  Incorporação da simulação em qualquer outro software.

14 14 / 75 Bibliotecas de MobiCS mobics.network – implementação dos elementos de rede simulados mobics.api – interface de programação mobics.exception - exceções mobics.controller – máquinas de simulação mobics.simulation – criação de simulador e simulação mobics.util

15 15 / 75 Uso do Simulador  Implementação do protocolo  estender classes básicas Protocol e Message  Criação do ambiente de CM simulado  estender classes básicas Mss, Mh,...  Criação do(s) cenário(s) de simulação  Escolhas dos cenários determinísticos de teste  descrever script determinístico  avaliar funcionamento do protocolo  Escolha dos cenário aleatório  simulação estocástica  avaliação do desempenho

16 Um Exemplo: O Protocolo RDP Descrição geral do protocolo Funcionamento do protocolo Mensagens Módulos (micro-protocolos)

17 17 / 75 Visão Geral do RDP Result Delivery Protocol Objetivos  Reencaminhar respostas de requisições feitas a servidores fixos, quando um cliente móvel migra. Utiliza um proxy, que é o representante do cliente móvel na rede fixa. Um proxy é criado no Mss responsável pelo Mh, no momento em que uma requisição é feita. São guardados também ponteiros para os proxies remotos de todos os Mh locais.

18 18 / 75 Funcionamento do RDP Um Mss armazena para cada Mh local, a lista dos proxies criados pelos Mh locais e dos proxies remotos. Hand-off  O novo Mss responsável envia para o Mss antigo um pedido para retirar o registro daquele Mh.  O Mss antigo envia para o novo Mss a lista dos proxies remotos e locais com seus respectivos ponteiros.  O novo Mss envia uma mensagem para o Mss antigo atualizar o endereço do Mh na lista de proxies locais.

19 19 / 75 Hand-off server proxy MSSp Mh MSSo MSSn Cenário do Protocolo RDP Req Res Greet DeReg PList UpCurLoc ForwardRes ? Greet DeReg PList UpCurLoc ForwardRes FRes Ack Cria proxy

20 20 / 75 Organizando o Protocolo O protocolo possui duas instâncias funcionais do protocolo: uma para MSSs e outra para MHs. Para efeito de teste, teremos ainda uma instância do RDP para servidores. Será seguida a metodologia de organizar protocolos em micro-protocolos Wired, Wireless e Handoff.

21 21 / 75 Comunicação entre os módulos do RDP RDPMss RDPMh Greet Ack Req ForwardRes RDPMss RDPServer Res Req, Ack RDPMss UpdateCurrLoc DeReg, Ack RemPList ForwardRes PList

22 22 / 75 Comunicação entre os módulos do RDP wireless wired handoff Mss wireless wired handoff Mss wireless Mh ForwardRes Ack RemPList ForwardRes PList UpCurrLoc DeReg Req,Ack ForwardRes

23 Implementação do Protocolo RDP Declaração de mensagens Declaração dos micro-protocolos Implementação dos micro-protocolos

24 24 / 75 Modelo de Programação de Protocolos de MobiCS Etapas de implementação de um protocolo  Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos  Declarar cada uma das mensagens na forma de um sub-classe de Message.  Declarar as interfaces dos micro-protocolos  Declarar uma sub-classe de Protocol que implementa todas as interfaces dos micro-protocolos  Implementar os métodos

25 25 / 75 Declaração das Mensagens A classe Message sender, receiver – remetente e destinatário responsible – classe do prot. responsável pela mensagem callHandler – invoca o handler da mensagem timestamp – estampa de tempo da mensagem

26 26 / 75 Declaração das Mensagens Declaração de Plist public class PList extends Message implements HandoffMessage { public PList(Address mh, Address oldMss, Map proxyList){ super(RDPMss.class); this.mh = mh; this.oldMss = oldMss; this.proxyList = proxyList; } public Address getMh(){ return mh; } public Map getProxyList(){ return proxyList; } public Address getOldMss(){ return oldMss; } private Address oldMss; private Map proxyList; private Address mh; } public class PList extends Message implements HandoffMessage { public PList(Address mh, Address oldMss, Map proxyList){ super(RDPMss.class); this.mh = mh; this.oldMss = oldMss; this.proxyList = proxyList; } public Address getMh(){ return mh; } public Map getProxyList(){ return proxyList; } public Address getOldMss(){ return oldMss; } private Address oldMss; private Map proxyList; private Address mh; }

27 27 / 75 Declaração das Mensagens

28 28 / 75 Declaração dos Micro-Protocolos Componentes de um protocolo  Estado  Micro-protocolos  Mensagem  Interfaces de µProt  Algoritmos  Encapsulamento Modelo de programação Java  Atributos  Conjunto de métodos  Objeto Message  Interfaces  Corpo de métodos  Objeto

29 29 / 75 Declaração de Micro-Protocolos Necessário definir três instâncias de protocolos do RDP:  Servidor - RDPServer  Estação móvel – RDPMh  Estação base – RDPMss Cada uma dessas instâncias é um protocolo e define seus próprios micro- protocolos.

30 30 / 75 Declaração dos Micro-Protocolos Micro-protocolos são declarados como interfaces Java. Cada método da interface é um handler para uma das possíveis mensagens. Cada handler possui a seguinte sintaxe: public void (Message m);

31 31 / 75 Declaração de Micro-Protocolos Exemplo de interface para micro-protocolo de handoff public interface RDPMssWired extends WiredModule { public void Res(Message m); public void RemPList(Message m); public void Ack_Mss(Message m); }

32 32 / 75 Declaração de Micro-Protocolos Diagrama completo de declaração de micro-protocolos

33 33 / 75 A Classe Protocol owner – elemento simulado usuário do protocolo send – envia uma mensagem pela rede state – automatiza a manipulação de dados de diferentes instância de execução

34 34 / 75 Estrutura de um Protocolo Corpo da declaração da classe public class RDPMh extends Protocol implements MhProtocol, RDPMhWireless{ public RDPMh(Mh owner){ super(owner, null); } public void ForwardRes_Mh(Message m){ ForwardRes_Mh res = (ForwardRes_Mh) m; } public void Request(Address server, int req){ System.out.println("[rdp mh] % Request RDP = "+req); send(((Mh) owner).getMssResp(), new Req(owner.getAddress(), server, req)); } public class RDPMh extends Protocol implements MhProtocol, RDPMhWireless{ public RDPMh(Mh owner){ super(owner, null); } public void ForwardRes_Mh(Message m){ ForwardRes_Mh res = (ForwardRes_Mh) m; } public void Request(Address server, int req){ System.out.println("[rdp mh] % Request RDP = "+req); send(((Mh) owner).getMssResp(), new Req(owner.getAddress(), server, req)); }

35 35 / 75 Implementação do Protocolo RDP Tipos de módulos Micro-protocolos Extensão de Protocol Declaração do protocolo RDPMss

36 36 / 75 Implementação do Protocolo RDP – Handler para Ack_Mh public void Ack_Mh(Message m){ Ack_Mh msg = (Ack_Mh) m; Address server = proxyTable.getServer(msg.getMh(),msg.getId()); if (server != null){ // proxy is local send(server, new Ack_Mss(msg)); // broadcast RemPList System.out.println("[rdp mss] % Broadcasting RemPList"); send(Address.bCast, new RemPList(msg)); } else{ // proxy is non local // send Ack to proxy location Address proxyLocation = proxyTable.getProxyLoc(msg.getMh(), msg.getId()); System.out.println("[rdp mss] % Sending Ack for current proxy location"); send(proxyLocation, msg); } public void Ack_Mh(Message m){ Ack_Mh msg = (Ack_Mh) m; Address server = proxyTable.getServer(msg.getMh(),msg.getId()); if (server != null){ // proxy is local send(server, new Ack_Mss(msg)); // broadcast RemPList System.out.println("[rdp mss] % Broadcasting RemPList"); send(Address.bCast, new RemPList(msg)); } else{ // proxy is non local // send Ack to proxy location Address proxyLocation = proxyTable.getProxyLoc(msg.getMh(), msg.getId()); System.out.println("[rdp mss] % Sending Ack for current proxy location"); send(proxyLocation, msg); }

37 Configuração do Ambiente Simulado

38 38 / 75 Classes do pacote mobics.network Element Fh Mh Mss Cell Address NetworkInterface WiredInterface WirelessInterface

39 39 / 75 Classes do pacote mobics.network (cont) Hierarquia básica de elementos de rede simulados Element Mss Fh Mh Mss1 Mh1 Classes básicas MobiCS

40 40 / 75 Classes do pacote mobics.network (cont) Element – implementa a interface básica de um elemento de rede Métodos principais:  getName – nome do elemento simulado  send – envia uma mensagem pela rede  attach – incopora um protocolo ao elemento

41 41 / 75 Classes do pacote mobics.network (cont) Adaptação nos elementos simulados Métodos com a assinatura on definem o comportamento de um elemento simulado na ocorrência da ação. Elementos de Rede Máquina de Simulação MsgSend SetTimer Timer MsgArrived MoveTo Connectivity

42 42 / 75 Classes do pacote mobics.network (cont) Métodos para adaptação na classe Element  onSend  onMsgArrived Métodos possuem uma funcionalidade, que pode ser estendida por herança. Subclasses de Element implementam métodos de adaptação particulares.

43 43 / 75 Classes do pacote mobics.network (cont) Mh –implementa a interface básica de uma estação móvel Métodos principais:  getMssResp – endereço do Mss responsável pelo Mh  available/unavailable – muda o estado de disponibilidade do Mh para comunicação  onMoveTo, onAvailable, onUnavailable

44 44 / 75 Classes do pacote mobics.network (cont) Mss – implementa a interface básica de um Mss (estação base) Métodos principais:  getCell – célula pela qual o Mss é responsável Atualmente na etapa de definição do pacote mobics.network.mobility, para possibilitar a programação de modelos de mobilidade

45 45 / 75 Criação de um Ambiente Simulado Tipicamente, as classes básicas Mh e Mss são estendidas para definir elementos com características específicas:  Protocolos incorporados  Padrões de comportamento  Adaptavidade  Interação com o simulador/simulação

46 46 / 75 Criação de um Ambiente Simulado (cont) mh = new MyMh(“Mh 1",sim); cell1 = new Cell(); cell2 = new Cell(); cell3 = new Cell(); mss1 = new MyMss(“Mss 1",sim,cell1); mss2 = new MyMss(“Mss 2",sim,cell2); mss3 = new MyMss("Mss 3",sim,cell3); wr = new WiredLink(mss2.getAddress(), mss1.getAddress()); wr2 = new WiredLink(mss1.getAddress(), mss3.getAddress()); mh = new MyMh(“Mh 1",sim); cell1 = new Cell(); cell2 = new Cell(); cell3 = new Cell(); mss1 = new MyMss(“Mss 1",sim,cell1); mss2 = new MyMss(“Mss 2",sim,cell2); mss3 = new MyMss("Mss 3",sim,cell3); wr = new WiredLink(mss2.getAddress(), mss1.getAddress()); wr2 = new WiredLink(mss1.getAddress(), mss3.getAddress());

47 Exemplo de Simulação Determinística Revisão Situações críticas do RDP Exemplo de Script Exemplo de Simulação Limitações do script

48 48 / 75 Simulação Determinística Objetivo Objetivo:  fornecer um mecanismo para depuração e avaliação da corretude de protocolos. O simulador reproduz os cenários específicos (e determinísticos) descritos em um script. É parecida com uma simulação trace-driven, só que é o próprio usuário quem cria os traços de simulação.

49 49 / 75 Simulação Determinística (cont) Um cenário pode conter comandos que definem: envio de requisições, movimentações, alterações na disponibilidade de um Mh, etc. Exemplo: Apenas o comportamento dos protocolos não pode ser descrito no script  definido pela implementação do protocolo Mh1.moveTo(cell1); Mh1.send(Req); Mss3.send(server, Ack); Mh2.unavailable();

50 50 / 75 Simulação Determinística (cont) Não há noção de tempo  desempenho dos elementos de rede é infinito. Justificativa:  Tempo de execução dos protocolos é indeterminado  Facilidade na programação dos scripts Para definir ordenação entre os eventos, utiliza- se pontos de sincronização no script.  Globais  eventos de diferentes elementos  Locais  eventos de um mesmo elemento

51 51 / 75 Simulação Determinística - Comandos (cont) next() - sincronização global Determina o início de um novo passo de simulação, que só é iniciado quando todos os elementos terminarem a execução dos comandos do passo anterior. Durante a simulação, um controlador de simulação aguarda a confirmação de término do passo de todos os elementos, para autorizar o inicio do próximo passo.

52 52 / 75 Simulação Determinística - Comandos (cont) accept(m) - sincronização local Método que bloqueia o elemento até o recebimento e processamento da mensagem m indicada. Usando o comando acceptTurnOn, o recebimento de mensagens pode ser desligado ou ligado.

53 53 / 75 Casos de teste determinístico para o RDP Descrição de quatro casos de teste para o protocolo RDP e o respectivo script que reproduz o cenário.

54 54 / 75 1o Cenário de Teste para o protocolo RDP Testar envio sem sucesso de ForwardRes para Mh que não é mais local server proxy MSSp Mh MSSo MSSn ? Greet DeReg PList UpCurLoc ForwardRes FRes Ack Req Res Greet DeReg PList UpCurLoc ForwardRes Cria proxy ForwardRes é recebido por MSSo antes de completado o handoff do Mh ForwardRes é recebido por MSSo antes de completado o handoff do Mh

55 55 / 75 1 o Cenário de Teste para o protocolo RDP - Script server proxy MSSp Mh MSSo MSSn ? Greet DeReg PList UpCurLoc ForwardRes FRes Ack Req Res Greet DeReg PList UpCurLoc ForwardRes Cria proxy Server.acceptTurnOn(false); MSSn.acceptTurnOn(false); Mh.send(new Req()); Mh.moveTo(MSSo); next(); Mh.moveTo(MSSn); next(); Server.acceptTurnOn(true); next(); MSSn.acceptTurnOn(true); Server.acceptTurnOn(false); MSSn.acceptTurnOn(false); Mh.send(new Req()); Mh.moveTo(MSSo); next(); Mh.moveTo(MSSn); next(); Server.acceptTurnOn(true); next(); MSSn.acceptTurnOn(true);

56 56 / 75 Outros Cenários de Teste para o protocolo RDP 1)A mensagem ForwardRes é recebida pelo MSSo durante o hand-off (antes do recebimento de DeReg e/ou Plist) 2)Precisam ser enviados ForwardRes para duas requisições 3)Antes do Mh devolver Ack ele se desconecta da rede, reconectando-se mais tarde  teste de duplicação de mensagens

57 57 / 75 Exemplo de Simulação do RDP – Script 1 mh.acceptTurnOn(true); mssP.acceptTurnOn(true); mssO.acceptTurnOn(true); mssN.acceptTurnOn(false); server.acceptTurnOn(false); next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(server.getAddress(), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); mh.acceptTurnOn(true); mssP.acceptTurnOn(true); mssO.acceptTurnOn(true); mssN.acceptTurnOn(false); server.acceptTurnOn(false); next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(server.getAddress(), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next();

58 58 / 75 Exemplo de Simulação do RDP – Saída 1 MOBX>> Mh is moving [rdp mss] % Registering new mh = [rdp mh] % Request RDP = 7 [rdp mss] % Requisition received by Mss **** adding local proxy [rdp mss] % sending message Req to the server MOBX>> Mh is moving [rdp mss] % Registering new mh = [rdp mss] % proxyRefList = {class sidam.rdp.Req=mobics.network.WiredInterface@50f2d244} [rdp mss] % Sending proxy list {class sidam.rdp.Req=mobics.network.WiredInterface@50f2d244} [rdp mss] % sending update curr loc.... [rdp mss] % Updating location [rdp mss] % setting current location [rdp mss] % update curr loc sended.... MOBX>> Mh is moving [rdp server] % Requisition received -> 7 [rdp mss] % Forwarding Res to local Mh [rdp mss] % storing result [rdp mss] % Registering new mh = [rdp mss] % proxyRefList = {class sidam.rdp.Req=mobics.network.WiredInterface@50f2d244} [rdp mss] % Sending proxy list {class sidam.rdp.Req=mobics.network.WiredInterface@50f2d244} [rdp mss] % sending update curr loc.... [rdp mss] % Updating location [rdp mss] % setting current location [rdp mss] % update curr loc sended.... [rdp mss] % Forwarding Res to local Mh [rdp mh] % Result RDP = 14 [rdp mss] % Sending Ack for current proxy location [rdp server] % ACK received for message 0 [rdp mss] % Broadcasting RemPList [rdp mss] % Removing proxy list [rdp mss] % Removing proxy list [rdp mss] % Removing proxy list mh.moveTo(cellP); mh.receive(new Request(...)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); mh.moveTo(cellP); mh.receive(new Request(...)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true);

59 59 / 75 Exemplo de Simulação do RDP – Script 2 mh.acceptTurnOn(true); mssP.acceptTurnOn(true); mssO.acceptTurnOn(true); mssN.acceptTurnOn(false); server.acceptTurnOn(false); mssP.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); mssO.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); mssN.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); next(SHOW, 0); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(server.getAddress(), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); mh.acceptTurnOn(true); mssP.acceptTurnOn(true); mssO.acceptTurnOn(true); mssN.acceptTurnOn(false); server.acceptTurnOn(false); mssP.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); mssO.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); mssN.changeShowMode(SHOW, Element.EVENT_MESSAGE_RECEIVING); next(SHOW, 0); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(server.getAddress(), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next();

60 60 / 75 Exemplo de Simulação do RDP – Saída 1 MOBX SIMULATION>> Step finished! MOBX>> Element receive message from host [rdp mss] % Registering new mh = MOBX>> Element receive message from host [rdp mss] % proxyRefList = {class sidam.rdp.Req=mobics.network.WiredInterface@637ede13} [rdp mss] % Sending proxy list {class sidam.rdp.Req=mobics.network.WiredInterface@637ede13} MOBX>> Element receive message from host MOBX>> Element receive message from host [rdp mss] % sending update curr loc.... MOBX>> Element receive message from host [rdp mss] % Updating location [rdp mss] % setting current location MOBX>> Element receive message from host [rdp mss] % update curr loc sended.... MOBX>> Element receive message from host [rdp mss] % Forwarding Res to local Mh [rdp mh] % Result RDP = 14 MOBX>> Element receive message from host MOBX>> Element receive message from host [rdp mss] % Sending Ack for current proxy location MOBX>> Element receive message from host [rdp server] % ACK received for message 0 [rdp mss] % Broadcasting RemPList MOBX>> Element receive message from host [rdp mss] % Removing proxy list MOBX>> Element receive message from host [rdp mss] % Removing proxy list MOBX>> Element receive message from host [rdp mss] % Removing proxy list MOBX SIMULATION>> Step finished!

61 61 / 75 A Classe DetermSimulation DetermSimulation #sim: Simulator +SHOW: boolean +HIDE: boolean +DetermSimulation: +start: void +next: void +configure: void +script: void

62 62 / 75 Criação de um Script Determinístico 1)Criar uma subclasse de DetermSimulation 2)Implementar os métodos configure() e script() 3)Em configure, criar os objetos que compõem o ambiente simulado 4)Em script, escrever o código do script determinístico

63 63 / 75 Executando o Simulador Código no programa do usuário Simulation simulation = new MySimulation(); Simulation.start(); Simulation simulation = new MySimulation(); Simulation.start();

64 64 / 75 Evitando Erros no Script Determinístico A ordem de execução de ações de diferentes elementos simulados é indeterminada. Comandos de depuração podem produzir resultados inesperados e variáveis, caso haja outros comandos naquele passo. O comando next() pode ser sempre usado como uma primitiva para garantir “estabilidade” (determinismo) dos elementos simulados, criando passos de simulação vazios, sem comandos que definam padrões de comportamento.

65 65 / 75 next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(...), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(...), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); next(); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); Exemplo de Indeterminismo no Script next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(...), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); mh.moveTo(cellP); mh.receive(new sidam.rdp.Request(...), 7)); mh.moveTo(cellO); next(); mh.moveTo(cellN); server.acceptTurnOn(true); next(); mssN.acceptTurnOn(true); next(); MSSp MSSo MSSn Greet DeReg UpCurLoc Mh PList ForwardRes

66 66 / 75 Limitações do Script Determinístico O tratamento de uma mensagem é uma operação atômica  não é possível reproduzir falhas durante um processamento de protocolo. Alternativa: dividir um handler em dois métodos.

67 67 / 75 Outros Comandos de Simulação Determinística Depuração  changeShowMode(, ) Muda o modo de exibição de mensagens de depuração de um elemento, para o tipo de evento assinalado.  Next(, ) Muda o modo de exibição de mensagens de depuração, para o tipo de evento assinalado.

68 68 / 75 Características ainda não Implementadas Diferentes tipos de accepts  Accept( ) Recebimento de todas as mensagens de um determinada classe de mensagens.  Accept(m 1 && m 2 || m 3 ) Composição de tipos de mensagens. Problemas com a escolha da melhor sintaxe Java para descrever os vários tipos de accepts.

69 Exemplo de Simulação Estocástica Revisão Análise do desempenho do RDP Exemplo de Simulação Limitações

70 70 / 75 Simulação Estocástica (cont) Modelo de Simulação  Atividade e Atração  Atividade: prob. de Mh estar conectado à rede  Atração: prob. de Mhs estarem na região de uma célula  Mobilidade  Probabilidade do Mh migrar para outra célula  Vizinhança entre células  Qualidade da comunicação sem fio  Padrão de requisições

71 71 / 75 Análise do Desempenho do RDP

72 72 / 75 Um (Provável) Exemplo de Simulação do RDP

73 73 / 75 Limitações da Simulação Estocástica

74 Considerações Finais Status do simulador Interação durante a disciplina Referências

75 75 / 75 Status do Simulador Estágio atual  Máquina determinística implementada  Um protocolo SIDAM prototipado e testado  Máquina estocástica em implementação (previsão da 1a versão: 16/out).  1a. Versão da documentação  moldes de tutorial

76 76 / 75 Interação durante a Disciplina MAC 5743 Interação durante a disciplina MAC 5743  Home page do MobiCS: http://www.ime.usp.br/~rcarocha/mobics  artigos, documentação, fontes, links relacionados, apresentações (incluindo esta),...  Lista de discussão: inscrição por e-mail para rcarocha@ime.usp.br  Documentação

77 77 / 75 Referências “Um Simulador de Protocolos para Computação Móvel”. 2o. Workshop de Comunicação sem Fio. BH, maio/2000. “Flexible Simulation of Distributed Protocol for Mobile Computing”. DT-SIDAM-2-00.1 “MobiCS: Documentação [Draft]” “Project SIDAM: Overview and Preliminary Results”. 2o. Workshop de Comunicação sem Fio. BH, maio/2000. “A Reliable Connectionless Protocol for Mobile Clients”. DT-SIDAM-2-99.1.


Carregar ppt "Tutorial do MobiCS: Interfaces de Programação e Exemplos Ricardo Couto Antunes da Rocha 29 de setembro de 2000."

Apresentações semelhantes


Anúncios Google