Post on 07-Apr-2016
Tutorial do MobiTutorial do MobiCSCS: : Interfaces de Programação e Interfaces de Programação e ExemplosExemplos
Ricardo Couto Antunes da RochaRicardo Couto Antunes da Rocharcarocha@ime.usp.brrcarocha@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
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;}
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); } }
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 rcarocha@ime.usp.brDocumentaçã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.