tutorial do mobics: interfaces de programação e exemplos ricardo couto antunes da rocha...

72
Tutorial do Mobi Tutorial do Mobi CS CS : : Interfaces de Interfaces de Programação e Exemplos Programação e Exemplos Ricardo Couto Antunes da Rocha Ricardo Couto Antunes da Rocha [email protected] [email protected] DCC-IME-USP DCC-IME-USP 29 de setembro de 2000 29 de setembro de 2000

Upload: melissa-borge

Post on 07-Apr-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Tutorial do MobiTutorial do MobiCSCS: : Interfaces de Programação e Interfaces de Programação e ExemplosExemplos

Ricardo Couto Antunes da RochaRicardo Couto Antunes da [email protected]@ime.usp.br

DCC-IME-USPDCC-IME-USP29 de setembro de 200029 de setembro de 2000

2 / 75

RoteiroRoteiroRevisãoUm Exemplo: O Protocolo RDPImplementação do ProtocoloConfiguração do Ambiente SimuladoExemplo de Simulação

DeterminísticaExemplo de Simulação Estocástica

RevisãoRevisão

Modelo de Sistema para CMConceito de protocolos distribuídosMobiCS: requisitos de projetoImplementação de MobiCS: bibliotecas principais

4 / 75

Modelo de Sistema para CMModelo de Sistema para CMTermos

Máquina Fixa Rede FixaMh - Estação móvelMss - Estação baseCélulaCanal sem fioHandoff

5 / 75

Modelo de Sistema para CMModelo de Sistema para CM

6 / 75

Modelo de Sistema para CMModelo de Sistema para CMQuando 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 / 75

Protocolos DistribuídosProtocolos DistribuídosSão algoritmos distribuídos que

implementam comunicação e/ou coordenação entre vários hosts em CM

Elementos: estado, algoritmo, instânciaExemplos:

Comunicação multi-pontoExclusão mútuaCheckpointingEntrega ordenada de mensagens

8 / 75

Protocolos Distribuídos Protocolos Distribuídos (cont)(cont)

Enlace de Dados e FísicoEnlace de Dados e Físico

Transporte e RedeTransporte e Rede

ProtocolosProtocolosDistribuídosDistribuídos

AplicaçõesAplicações

9 / 75

Protocolos Distribuídos Protocolos Distribuídos (cont)(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 / 75

MobiCSMobiCSMobiMobile CComputing SSimulator 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ívelTransparê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 / 75

MobiCSMobiCSMobiMobile CComputing SSimulator (cont)

Totalmente desenvolvido em Javauso das abstrações e bibliotecas de Java pelo

programador de protocolosfacilita a distribuição do simuladoruso de reflexão computacional permite a

criação de um modelo de programação mais elegante

12 / 75

Arquitetura de Software Arquitetura de Software (cont)(cont)

Protocolos DistribuídosComposta pelos

protocolos distribuídos sendo simulados

Programador define tratadores de eventos recebidos de outras camadas

Máquina de Simulação

Elementos de Rede

ProtocolosDistribuídos

Aplicação

13 / 75

MobiCSMobiCSMobiMobile CComputing SSimulator (cont)

O que é o MobiCS?Biblioteca de classes Java que permite:Criação de um ambiente de computação móvel

simuladoSimulação com diferentes máquinas de simulaçãoProgramação de novos protocolos a serem

simuladosIncorporação de novas máquinas de simulaçãoEspecialização dos elementos simuladosIncorporação da simulação em qualquer outro

software.

14 / 75

Bibliotecas de MobiCSBibliotecas de MobiCSmobics.network – implementação dos

elementos de rede simuladosmobics.api – interface de programaçãomobics.exception - exceçõesmobics.controller – máquinas de simulaçãomobics.simulation – criação de simulador e

simulaçãomobics.util

15 / 75

Uso do SimuladorUso do SimuladorImplementação do protocolo estender

classes básicas Protocol e MessageCriaçã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

Um Exemplo: Um Exemplo: O Protocolo RDPO Protocolo RDP

Descrição geral do protocoloFuncionamento do protocoloMensagensMódulos (micro-protocolos)

17 / 75

Visão Geral do RDPVisão Geral do RDPResult Delivery ProtocolResult Delivery Protocol

ObjetivosReencaminhar 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 / 75

Funcionamento do RDPFuncionamento do RDP Um Mss armazena para cada Mh local, a lista

dos proxies criados pelos Mh locais e dos proxies remotos.

Hand-offO 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 / 75

Hand-off

server

proxy

MSSpMh

MSSo

MSSn

Cenário do Protocolo RDPCenário do Protocolo RDP

Req

ReqRes

Greet

DeRegPListUpCurLoc

ForwardRes

?

Greet

DeReg PList

UpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Cria proxy

20 / 75

Organizando o ProtocoloOrganizando o ProtocoloO 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 / 75

Comunicação entre os Comunicação entre os módulos do RDPmódulos do RDP

RDPMss RDPMhGreetAckReq

ForwardRes

RDPMss RDPServerRes

Req, Ack

RDPMss RDPMssUpdateCurrLocDeReg, AckRemPListForwardRes

PList

22 / 75

Comunicação entre os Comunicação entre os módulos do RDPmódulos do RDP

wireless

wired

handoff

Msswireless

wired

handoff

Mss

wirelessMh

ForwardRes

Ack

RemPListForwardResPList

UpCurrLoc

DeReg

Req,AckForwardRes

Implementação do Implementação do Protocolo RDPProtocolo RDP

Declaração de mensagensDeclaração dos micro-protocolosImplementação dos micro-protocolos

24 / 75

Modelo de Programação de Modelo de Programação de Protocolos de MobiCSProtocolos 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-protocolosDeclarar uma sub-classe de Protocol que

implementa todas as interfaces dos micro-protocolos

Implementar os métodos

25 / 75

Declaração das MensagensDeclaraçã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 / 75

Declaração das MensagensDeclaraçã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;}

27 / 75

Declaração das MensagensDeclaração das Mensagens

28 / 75

Declaração dos Declaração dos Micro-ProtocolosMicro-Protocolos Componentes de

um protocoloEstadoMicro-protocolosMensagemInterfaces de µProtAlgoritmosEncapsulamento

Modelo de programação JavaAtributosConjunto de

métodosObjeto MessageInterfacesCorpo de métodosObjeto

29 / 75

Declaração de Declaração de Micro-ProtocolosMicro-ProtocolosNecessário definir três instâncias de

protocolos do RDP: Servidor - RDPServerEstação móvel – RDPMhEstação base – RDPMss

Cada uma dessas instâncias é um protocolo e define seus próprios micro-protocolos.

30 / 75

Declaração dos Declaração dos Micro-ProtocolosMicro-ProtocolosMicro-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 <nome>(Message m);

31 / 75

Declaração de Declaração de Micro-ProtocolosMicro-ProtocolosExemplo 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 / 75

Declaração de Declaração de Micro-ProtocolosMicro-ProtocolosDiagrama completo de declaração

de micro-protocolos

33 / 75

A Classe A Classe ProtocolProtocol

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 / 75

Estrutura de um ProtocoloEstrutura de um ProtocoloCorpo da declaração da classepublic 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; <corpo do método> } 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 / 75

Implementação do Protocolo Implementação do Protocolo RDPRDP

Tipos de módulosMicro-

protocolosExtensão de

Protocol

Declaração do protocolo RDPMss

36 / 75

Implementação do Protocolo Implementação do Protocolo RDP – Handler para RDP – Handler para Ack_MhAck_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); } }

Configuração doConfiguração doAmbiente SimuladoAmbiente Simulado

38 / 75

Classes do pacote Classes do pacote mobics.networkmobics.network Element Fh Mh Mss Cell Address

NetworkInterface WiredInterface WirelessInterface

39 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(cont)

Hierarquia básica de elementos de rede simulados

Element

Mss

FhMh

Mss1Mh1

Classes básicasMobiCS

40 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(cont)

Element – implementa a interface básica de um elemento de rede

Métodos principais:getName – nome do elemento

simuladosend – envia uma mensagem pela redeattach – incopora um protocolo ao

elemento

41 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(cont)

Adaptação nos elementos simulados

Métodos com a assinatura on<Ação> definem o comportamento de um elemento simulado na ocorrência da ação <Ação>.

Elementos de Rede

Máquina de Simulação

MsgSendSetTimer

TimerMsgArrivedMoveToConnectivity

42 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(cont)

Métodos para adaptação na classe ElementonSendonMsgArrived

Métodos possuem uma funcionalidade, que pode ser estendida por herança.

Subclasses de Element implementam métodos de adaptação particulares.

43 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(cont)

Mh –implementa a interface básica de uma estação móvel

Métodos principais:getMssResp – endereço do Mss

responsável pelo Mhavailable/unavailable – muda o estado de

disponibilidade do Mh para comunicaçãoonMoveTo, onAvailable, onUnavailable

44 / 75

Classes do pacote Classes do pacote mobics.network mobics.network (cont)(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 / 75

Criação de um Ambiente Criação de um Ambiente SimuladoSimuladoTipicamente, as classes básicas Mh

e Mss são estendidas para definir elementos com características específicas:Protocolos incorporadosPadrões de comportamentoAdaptavidadeInteração com o simulador/simulação

46 / 75

Criação de um Ambiente Criação de um Ambiente Simulado Simulado (cont)(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());

Exemplo de SimulaçãoExemplo de SimulaçãoDeterminísticaDeterminística

RevisãoSituações críticas do RDPExemplo de ScriptExemplo de SimulaçãoLimitações do script

48 / 75

Simulação DeterminísticaSimulação Determinística ObjetivoObjetivo:

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 / 75

Simulação Determinística Simulação Determinística (cont)(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 / 75

Simulação Determinística Simulação Determinística (cont)(cont)

Não há noção de tempo desempenho dos elementos de rede é infinito. Justificativa:Tempo de execução dos protocolos é

indeterminadoFacilidade na programação dos scripts

Para definir ordenação entre os eventos, utiliza-se pontos de sincronização no script.Globais eventos de diferentes elementosLocais eventos de um mesmo elemento

51 / 75

Simulação Determinística - Simulação Determinística - Comandos Comandos (cont)(cont)

next() - sincronização globalDetermina 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 / 75

Simulação Determinística - Simulação Determinística - Comandos Comandos (cont)(cont)

accept(m) - sincronização localMé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 / 75

Casos de teste determinístico Casos de teste determinístico para o RDPpara o RDPDescrição de quatro casos de teste

para o protocolo RDP e o respectivo script que reproduz o cenário.

54 / 75

1o Cenário de Teste para o 1o Cenário de Teste para o protocolo RDPprotocolo RDP Testar envio sem sucesso de ForwardRes

para Mh que não é mais localserver

proxy

MSSpMh

MSSo

MSSn

?

Greet

DeReg PListUpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Req

Req Res

Greet

DeRegPListUpCurLoc

ForwardRes

Cria proxyForwardRes é recebido por MSSo

antes de completado o handoff do Mh

55 / 75

11oo Cenário de Teste para o Cenário de Teste para o protocolo RDP - Scriptprotocolo RDP - Script

server

proxy

MSSpMh

MSSo

MSSn

?

Greet

DeReg PListUpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Req

Req Res

Greet

DeRegPListUpCurLoc

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);

56 / 75

Outros Cenários de Teste Outros Cenários de Teste para o protocolo RDPpara o protocolo RDP1) 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 / 75

Exemplo de SimulaçãoExemplo de Simulaçãodo RDP – Script 1do 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();

58 / 75

Exemplo de SimulaçãoExemplo de Simulaçãodo RDP – Saída 1do RDP – Saída 1MOBX>> Mh <Mh> is moving[rdp mss] % Registering new mh = <MyMh@1cf6d245>[rdp mh] % Request RDP = 7[rdp mss] % Requisition received by Mss**** adding local proxy[rdp mss] % sending message Req to the serverMOBX>> Mh <Mh> is moving[rdp mss] % Registering new mh = <MyMh@1cf6d245>[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 <Mh> is moving[rdp server] % Requisition received -> 7[rdp mss] % Forwarding Res to local Mh[rdp mss] % storing result[rdp mss] % Registering new mh = <MyMh@1cf6d245>[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);

59 / 75

Exemplo de SimulaçãoExemplo de Simulaçãodo RDP – Script 2do 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();

60 / 75

Exemplo de SimulaçãoExemplo de Simulaçãodo RDP – Saída 1do RDP – Saída 1MOBX SIMULATION>> Step finished!

MOBX>> Element <MSSn> receive message <class mobics.api.message.beacon.Greet> from host <MSSn>[rdp mss] % Registering new mh = <MyMh@2f76de12>MOBX>> Element <MSSo> receive message <class sidam.rdp.Dereg> from host <MSSo>[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 <MSSn> receive message <class sidam.rdp.PList> from host <MSSn>MOBX>> Element <MSSn> receive message <class sidam.rdp.PList> from host <MSSn>[rdp mss] % sending update curr loc....MOBX>> Element <MSSp> receive message <class sidam.rdp.UpdateCurrLoc> from host <MSSp>[rdp mss] % Updating location[rdp mss] % setting current locationMOBX>> Element <MSSn> receive message <class sidam.rdp.ForwardRes_Mss> from host <MSSn>[rdp mss] % update curr loc sended....MOBX>> Element <MSSn> receive message <class sidam.rdp.ForwardRes_Mss> from host <MSSn>[rdp mss] % Forwarding Res to local Mh[rdp mh] % Result RDP = 14MOBX>> Element <MSSn> receive message <class sidam.rdp.Ack_Mh> from host <MSSn>MOBX>> Element <MSSn> receive message <class sidam.rdp.Ack_Mh> from host <MSSn>[rdp mss] % Sending Ack for current proxy locationMOBX>> Element <MSSp> receive message <class sidam.rdp.Ack_Mh> from host <MSSp>[rdp server] % ACK received for message 0[rdp mss] % Broadcasting RemPListMOBX>> Element <MSSn> receive message <class sidam.rdp.RemPList> from host <Broadcast address>[rdp mss] % Removing proxy listMOBX>> Element <MSSo> receive message <class sidam.rdp.RemPList> from host <Broadcast address>[rdp mss] % Removing proxy listMOBX>> Element <MSSn> receive message <class sidam.rdp.RemPList> from host <Broadcast address>[rdp mss] % Removing proxy listMOBX SIMULATION>> Step finished!

61 / 75

A Classe A Classe DetermSimulationDetermSimulation

DetermSimulation#sim: Simulator+SHOW: boolean+HIDE: boolean+DetermSimulation:+start: void+next: void+next: void+configure: void+script: void

62 / 75

Criação de um Script Criação de um Script DeterminísticoDeterminístico1) Criar uma subclasse de

DetermSimulation2) Implementar os métodos

configure() e script()3) Em configure, criar os objetos que

compõem o ambiente simulado4) Em script, escrever o código do

script determinístico

63 / 75

Executando o SimuladorExecutando o SimuladorCódigo no programa do usuário

Simulation simulation = new MySimulation();Simulation.start();

64 / 75

Evitando Erros no Script Evitando Erros no Script DeterminísticoDeterminí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 / 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();

Exemplo de Indeterminismo Exemplo de Indeterminismo no Scriptno 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();

MSSp

MSSo

MSSn Greet

DeReg

UpCurLoc

Mh

PList

ForwardRes

66 / 75

Limitações do Script Limitações do Script DeterminísticoDeterminísticoO 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 / 75

Outros Comandos de Outros Comandos de Simulação DeterminísticaSimulação DeterminísticaDepuração

changeShowMode(<modo>,<tipoevento>)Muda o modo de exibição de mensagens de

depuração de um elemento, para o tipo de evento assinalado.

Next(<modo>,<tipoevento>)Muda o modo de exibição de mensagens de

depuração, para o tipo de evento assinalado.

68 / 75

Características ainda não Características ainda não ImplementadasImplementadasDiferentes tipos de accepts

Accept(<classe de mensagens>)Recebimento de todas as mensagens de um

determinada classe de mensagens.Accept(m1 && m2 || m3)

Composição de tipos de mensagens. Problemas com a escolha da melhor

sintaxe Java para descrever os vários tipos de accepts.

Considerações FinaisConsiderações Finais

Status do simuladorInteração durante a disciplinaReferências

75 / 75

Status do SimuladorStatus do SimuladorEstágio atual

Máquina determinística implementadaUm protocolo SIDAM prototipado e

testadoMáquina estocástica em implementação

(previsão da 1a versão: 16/out).1a. Versão da documentação moldes

de tutorial

76 / 75

Interação durante a Interação durante a Disciplina MAC 5743Disciplina MAC 5743Interação durante a disciplina MAC

5743Home page do MobiCS:

http://www.ime.usp.br/~rcarocha/mobicsartigos, documentação, fontes, links

relacionados, apresentações (incluindo esta),...Lista de discussão: inscrição por e-mail

para [email protected]ção

77 / 75

ReferênciasReferê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.