49
MobiCS: Um exemplo de uso MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha Ricardo Couto A. da Rocha (*) (*) [email protected] [email protected] [email protected] [email protected] DCC-IME-USP DCC-IME-USP Orientador: Markus Endler Orientador: Markus Endler (*) Atualmente no Centro de Pesquisas da (*) Atualmente no Centro de Pesquisas da Xerox (ES) Xerox (ES)

MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) [email protected] [email protected] [email protected] Orientador: Markus

Embed Size (px)

Citation preview

Page 1: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

MobiCS: Um exemplo de usoMobiCS: Um exemplo de uso

Ricardo Couto A. da RochaRicardo Couto A. da Rocha(*)(*)

[email protected] [email protected]

[email protected]@altavista.com

DCC-IME-USPDCC-IME-USPOrientador: Markus EndlerOrientador: Markus Endler

(*) Atualmente no Centro de Pesquisas da Xerox (ES)(*) Atualmente no Centro de Pesquisas da Xerox (ES)

Page 2: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Uso do MobiCSUso do MobiCS

Usuário implementa classes que definem os protocolos Usuário implementa classes que definem os protocolos a serem simulados, o ambiente de rede e o modelo de a serem simulados, o ambiente de rede e o modelo de simulação desejado.simulação desejado.

Pacotes MobiCS

Protocolos Modelos de Simulação

Simulação

estende

estende

estende

instanciainstancia

Page 3: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Pacotes MobiCSPacotes MobiCS

Principais pacotes para o usuário MobiCS:Principais pacotes para o usuário MobiCS: mobics.ppi mobics.ppi programação de protocolos programação de protocolos

mobics.ppi.protocolmobics.ppi.protocol mobics.ppi.messagemobics.ppi.message

mobics.networkmobics.network programação dos elementos programação dos elementos de redede rede

mobics.simulation mobics.simulation programação do programação do modelo de simulação e configuração do ambiente modelo de simulação e configuração do ambiente de rede de rede mobics.simulation.DetermSimulationmobics.simulation.DetermSimulation mobics.simulation.StochSimulationmobics.simulation.StochSimulation

Page 4: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Outros pacotes MobiCS Outros pacotes MobiCS

mobics.exceptionmobics.exception define exceções define exceções usadas pelo simulador e programador de usadas pelo simulador e programador de protocolosprotocolos

mobics.controllermobics.controller implementa as implementa as máquinas de simulação:máquinas de simulação:

mobics.controller.deterministicmobics.controller.stochastic

mobics.util mobics.util classes adicionais classes adicionais

Page 5: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Sequência GeralSequência Geralde Passos de Passos Implementação do protocolo Implementação do protocolo estender classes básicas estender classes básicas ProtocolProtocol e e MessageMessage

Criação do ambiente de CM simulado Criação do ambiente de CM simulado estender classes estender classes básicas básicas MssMss, , MhMh, ..., ...

Criação do(s) cenário(s) de simulaçãoCriação do(s) cenário(s) de simulação cenários determinísticos de teste cenários determinísticos de teste descrever script descrever script

determinístico determinístico avaliar funcionamento do protocolo avaliar funcionamento do protocolo Escolha dos cenário aleatório Escolha dos cenário aleatório simulação estocástica simulação estocástica avaliação avaliação

do desempenhodo desempenho Estender a classe Estender a classe DetermSimulationDetermSimulation (ou (ou StochSimulationStochSimulation) definindo o ambiente de rede ) definindo o ambiente de rede (elementos simulados & topologia, outros conceitos)(elementos simulados & topologia, outros conceitos)

Implementar um programa Java que cria e inicia um Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.startobjeto Simulação e chamar o método Simulation.start

Page 6: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

MobiCSMobiCSModelo de Programação Modelo de Programação

Modelo de programação OO e modularModelo de programação OO e modular Protocolos são compostos de Protocolos são compostos de micro-protocolosmicro-protocolos

módulos com funcionalidade bem definida módulos com funcionalidade bem definida Arranjo típicoArranjo típico

Micro-protocolos se comunicam por Micro-protocolos se comunicam por eventoseventos mensagens, timers mensagens, timers

Protocolo

WiredWired WirelessWireless HandoffHandoff

Page 7: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

A classe A classe MessageMessage

sendersender, , receiverreceiver – – remetente e remetente e destinatáriodestinatário

responsibleresponsible – classe – classe do prot. responsável do prot. responsável pela mensagempela mensagem

callHandlercallHandler – invoca o – invoca o handler da mensagemhandler da mensagem

timestamptimestamp – carimbo de – carimbo de tempo da mensagemtempo da mensagem

Obs: callHandler(Protocolo) faz chamada ao método Protocolo.when[TipoMensagem]

Page 8: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Um Exemplo: Um Exemplo: O Protocolo RDP O Protocolo RDP

Descrição geral do protocoloDescrição geral do protocoloFuncionamento do protocoloFuncionamento do protocoloMensagensMensagensMódulos (micro-protocolos)Módulos (micro-protocolos)

Page 9: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

ObjetivosObjetivosReencaminhar respostas de requisições feitas a Reencaminhar respostas de requisições feitas a

servidores fixos, quando um cliente móvel migra.servidores fixos, quando um cliente móvel migra.

Utiliza um Utiliza um proxyproxy, que é o representante do Mh , que é o representante do Mh na rede fixa.na rede fixa.

A cada nova requisição do Mh a um servidor, é A cada nova requisição do Mh a um servidor, é criado um proxy no Mss responsável pelo Mh, criado um proxy no Mss responsável pelo Mh, no momento em que uma requisição é feita.no momento em que uma requisição é feita.

São guardados também ponteiros para os São guardados também ponteiros para os proxies remotos de todos os Mh locais.proxies remotos de todos os Mh locais.

Page 10: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Funcionamento do RDPFuncionamento do RDP

Um MSS armazena para cada Mh local, o Um MSS armazena para cada Mh local, o conjunto dos proxies criados pelos Mh locais e conjunto dos proxies criados pelos Mh locais e dos proxies remotos.dos proxies remotos.

Hand-off de um MhHand-off de um MhO MSS da nova célula envia para o MSS anterior O MSS da nova célula envia para o MSS anterior

um pedido para retirar o registro daquele Mh.um pedido para retirar o registro daquele Mh.O MSS antigo envia para o novo MSS a lista dos O MSS antigo envia para o novo MSS a lista dos

proxies remotos e locais com seus respectivos proxies remotos e locais com seus respectivos endereços.endereços.

O novo MSS envia uma mensagem para o Mss O novo MSS envia uma mensagem para o Mss antigo atualizar o endereço do Mh na lista de antigo atualizar o endereço do Mh na lista de proxies locais.proxies locais.

Page 11: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Hand-off

server

proxy

MSSpMh

MSSo

MSSn

Cenário do Protocolo RDPCenário do Protocolo RDP

Req

ReqRes

Greet

DeRegPList

UpCurLoc

ForwardRes

?

Greet

DeReg PList

UpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Cria proxy

Page 12: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Organizando o ProtocoloOrganizando o Protocolo

O protocolo possui duas instâncias O protocolo possui duas instâncias funcionais do protocolo: uma para funcionais do protocolo: uma para MSSs e outra para Mhs.MSSs e outra para Mhs.

Para efeito de teste, teremos ainda Para efeito de teste, teremos ainda uma instância do RDP para servidores.uma instância do RDP para servidores.

Será seguida a metodologia de Será seguida a metodologia de organizar protocolos em micro-organizar protocolos em micro-protocolos protocolos WiredWired, , WirelessWireless e e HandoffHandoff . .

Page 13: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploEtapas de Implementação Etapas de Implementação

Definir todas as mensagens trocadas entre Definir todas as mensagens trocadas entre elementos e seus respectivos micro-elementos e seus respectivos micro-protocolosprotocolos

Declarar cada uma das mensagens na forma Declarar cada uma das mensagens na forma de uma subclasse de de uma subclasse de MessageMessage..

Declarar as interfaces dos micro-protocolosDeclarar as interfaces dos micro-protocolosDeclarar uma subclasse de Declarar uma subclasse de ProtocolProtocol que que

implementa todas as interfaces dos micro-implementa todas as interfaces dos micro-protocolosprotocolos

Implementar os métodosImplementar os métodos

Page 14: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploOrganizando o ProtocoloOrganizando o Protocolo

O protocolo possui duas instâncias O protocolo possui duas instâncias funcionaisfuncionaisMSSsMSSsMHs.MHs.

Metodologia de organização Metodologia de organização micro-protocolos micro-protocolos WiredWired, , WirelessWireless e e Handoff Handoff ..

Page 15: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploComunicação entre MódulosComunicação entre Módulos

wirelesswireless

wiredwired

handoffhandoff

Mss

wirelesswireless

wiredwired

handoffhandoff

Mss

wirelesswireless

Mh

ForwardRes

Ack_Mss

RemPListForwardResPList

UpCurrLoc

DeReg

Req,Ack

ForwardRes

Page 16: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Declaração das MensagensDeclaração das Mensagens

Declaração de Declaração de PlistPlist

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

Page 17: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Necessário definir três instâncias de Necessário definir três instâncias de protocolos do RDP: protocolos do RDP: Servidor - RDPServerServidor - RDPServerEstação móvel – RDPMhEstação móvel – RDPMhEstação base – RDPMssEstação base – RDPMss

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

Page 18: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Micro-protocolos são declarados Micro-protocolos são declarados como interfaces Java.como interfaces Java.

Cada método da interface é um Cada método da interface é um handler para uma das possíveis handler para uma das possíveis mensagens.mensagens.

Cada handler possui a seguinte Cada handler possui a seguinte sintaxe:sintaxe:public void <nome>(Message m);public void <nome>(Message m);

Page 19: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploDeclaração de Declaração de Protocolos Protocolos

Micro-protocolo Micro-protocolo WiredWired do do protocolo RDPMssprotocolo RDPMss

publicpublic interfaceinterface RDPMssWiredRDPMssWired extendsextends

WiredModuleWiredModule {{

publicpublic voidvoid whenRes (Message m);whenRes (Message m);

publicpublic voidvoid whenRemPList (Message m);whenRemPList (Message m);

publicpublic voidvoid whenAck_Mss (Message m);whenAck_Mss (Message m);

}}

publicpublic interfaceinterface RDPMssWiredRDPMssWired extendsextends

WiredModuleWiredModule {{

publicpublic voidvoid whenRes (Message m);whenRes (Message m);

publicpublic voidvoid whenRemPList (Message m);whenRemPList (Message m);

publicpublic voidvoid whenAck_Mss (Message m);whenAck_Mss (Message m);

}}

Page 20: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Diagrama completo de declaração Diagrama completo de declaração de micro-protocolosde micro-protocolos

Page 21: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

A Classe A Classe ProtocolProtocol

ownerowner – elemento – elemento simulado usuário do simulado usuário do protocoloprotocolo

sendsend – envia uma – envia uma mensagem pela redemensagem pela rede

statestate – uniformiza a – uniformiza a manipulação do manipulação do estado do protocolo estado do protocolo em diferentes em diferentes instânciasinstâncias

Page 22: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Estrutura de um ProtocoloEstrutura de um Protocolo

Corpo da declaração da classeCorpo 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)); }}

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

Page 23: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Tipos de módulosTipos de módulos

Micro-protocolos

Micro-protocolos

Extensão de Protocol

Extensão de Protocol

Declaração do protocolo RDPMssDeclaração do

protocolo RDPMss

Page 24: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Configuração do AmbienteConfiguração do Ambientede rede simulado de rede simulado

Classes de Classes de mobics.networkmobics.network

ElementElement FhFh MhMh MssMss CellCell AddressAddress

NetworkInterfaceNetworkInterface WiredInterfaceWiredInterface WirelessInterfaceWirelessInterface

Page 25: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Hierarquia básica de elementos de Hierarquia básica de elementos de rede simuladosrede simulados

ElementElement

MssMss

FhFhMhMh

Mss1Mss1Mh1Mh1

Classes básicasMobiCS

Page 26: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

ElementElement – implementa a interface – implementa a interface básica de um elemento de redebásica de um elemento de rede

Métodos principais:Métodos principais:getNamegetName – nome do elemento – nome do elemento

simuladosimuladosendsend – envia uma mensagem pela rede – envia uma mensagem pela redeattachattach – incopora um protocolo ao – incopora um protocolo ao

elementoelemento

Page 27: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

Adaptação nos elementos simuladosAdaptação nos elementos simulados

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

Elementos de Rede

Máquina de Simulação

MsgSendSetTimer

TimerMsgArrivedMoveToConnectivity

Page 28: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

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

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

Métodos principais:Métodos principais:getMssResp getMssResp – endereço do Mss responsável pelo Mh– endereço do Mss responsável pelo Mhavailable/unavailableavailable/unavailable – muda o estado de disponibilidade – muda o estado de disponibilidade

do Mh para comunicaçãodo Mh para comunicaçãoonMoveTo, onAvailable, onUnavailableonMoveTo, onAvailable, onUnavailable

MssMss – implementa a interface básica de um Mss – implementa a interface básica de um Mss (estação base)(estação base)

Métodos principais:Métodos principais:getCell getCell – célula pela qual o Mss é responsável– célula pela qual o Mss é responsável

Page 29: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploCriação de um Ambiente Criação de um Ambiente

mh = mh = newnew MyMh( MyMh(“Mh 1"“Mh 1",sim);,sim);cell1 = cell1 = newnew Cell(); Cell();cell2 = cell2 = newnew Cell(); Cell();cell3 = cell3 = newnew Cell(); Cell();mss1 = mss1 = newnew MyMss( MyMss(“Mss 1"“Mss 1",sim,cell1);,sim,cell1);mss2 = mss2 = newnew MyMss( MyMss(“Mss 2"“Mss 2",sim,cell2);,sim,cell2);mss3 = mss3 = newnew MyMss( MyMss("Mss 3""Mss 3",sim,cell3);,sim,cell3);wr = wr = new new WiredLink(mss2.getAddress(),WiredLink(mss2.getAddress(), mss1.getAddress());mss1.getAddress());wr2 = wr2 = newnew WiredLink(mss1.getAddress(), WiredLink(mss1.getAddress(), mss3.getAddress());mss3.getAddress());

mh = mh = newnew MyMh( MyMh(“Mh 1"“Mh 1",sim);,sim);cell1 = cell1 = newnew Cell(); Cell();cell2 = cell2 = newnew Cell(); Cell();cell3 = cell3 = newnew Cell(); Cell();mss1 = mss1 = newnew MyMss( MyMss(“Mss 1"“Mss 1",sim,cell1);,sim,cell1);mss2 = mss2 = newnew MyMss( MyMss(“Mss 2"“Mss 2",sim,cell2);,sim,cell2);mss3 = mss3 = newnew MyMss( MyMss("Mss 3""Mss 3",sim,cell3);,sim,cell3);wr = wr = new new WiredLink(mss2.getAddress(),WiredLink(mss2.getAddress(), mss1.getAddress());mss1.getAddress());wr2 = wr2 = newnew WiredLink(mss1.getAddress(), WiredLink(mss1.getAddress(), mss3.getAddress());mss3.getAddress());

Page 30: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Exemplo Exemplo Cenário de Teste Cenário de Teste

Testar envio sem sucesso de ForwardRes Testar envio sem sucesso de ForwardRes para Mh que não é mais localpara Mh que não é mais local

server

proxy

MSSpMh

MSSo

MSSn

?

Greet

DeReg PList

UpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Req

ReqRes

Greet

DeRegPListUpCurLoc

ForwardRes

Cria proxyForwardRes é recebido por MSSo

antes de completado o handoff do MhForwardRes é recebido por MSSo

antes de completado o handoff do Mh

Page 31: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Exemplo Exemplo Cenário de Teste Cenário de Teste

server

proxy

MSSpMh

MSSo

MSSn

?

Greet

DeReg PList

UpCurLoc

ForwardRes

FRes

Ack

Ack

Ack

Req

ReqRes

Greet

DeRegPListUpCurLoc

ForwardRes

Cria proxy

Server.acceptTurnOn(false);MSSn.acceptTurnOn(false);Mh.send(new Req());Mh.moveTo(MSSo);end_step();Mh.moveTo(MSSn);end_step();Server.acceptTurnOn(true);end_step();MSSn.acceptTurnOn(true);

Server.acceptTurnOn(false);MSSn.acceptTurnOn(false);Mh.send(new Req());Mh.moveTo(MSSo);end_step();Mh.moveTo(MSSn);end_step();Server.acceptTurnOn(true);end_step();MSSn.acceptTurnOn(true);

Page 32: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ExemploExemploSaída da SimulaçãoSaída da Simulação

MOBX>> 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

MOBX>> 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(mssP);mh.receive(new Request(...));mh.moveTo(mssO);end_step();mh.moveTo(mssN);end_step();server.acceptTurnOn(true);end_step();mssN.acceptTurnOn(true);

mh.moveTo(mssP);mh.receive(new Request(...));mh.moveTo(mssO);end_step();mh.moveTo(mssN);end_step();server.acceptTurnOn(true);end_step();mssN.acceptTurnOn(true);

Page 33: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Criação de um Script Criação de um Script DeterminísticoDeterminístico

Criar uma subclasse de Criar uma subclasse de DetermSimulationDetermSimulation

Implementar os métodos Implementar os métodos configure()configure() e e script()script()

Em Em configureconfigure, criar os objetos que , criar os objetos que compõem o ambiente simuladocompõem o ambiente simulado

Em Em scriptscript, escrever o código do , escrever o código do script determinísticoscript determinístico

Page 34: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Executando o SimuladorExecutando o Simulador

Código no programa do usuárioCódigo no programa do usuário

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

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

Page 35: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Evitando Erros no Script Evitando Erros no Script DeterminísticoDeterminístico

A A ordem de execuçãoordem de execução de ações em diferentes de ações em diferentes elementos simulados é elementos simulados é não determinísticanão determinística. .

Comandos de depuração podem produzir Comandos de depuração podem produzir resultados inesperados e variáveis, caso haja resultados inesperados e variáveis, caso haja outros comandos naquele passo.outros comandos naquele passo.

O comando O comando next()next() pode ser sempre usado como pode ser sempre usado como uma primitiva parauma primitiva para impor uma sequência impor uma sequência deterministicadeterministica das ações, ou criando “passos de das ações, ou criando “passos de simulação vazios” (para avançar o tempo simulação vazios” (para avançar o tempo simulado)simulado)

Page 36: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Simulação Estocástica Simulação Estocástica

Permite a avaliação do desempenho (complexidade de Permite a avaliação do desempenho (complexidade de mensagens) através de testes exaustivos.mensagens) através de testes exaustivos.

Usuário define:Usuário define:Padrão de comportamento dos elementos simuladosPadrão de comportamento dos elementos simuladosModelo de mobilidadeModelo de mobilidade

O modelo de simulação pode ser O modelo de simulação pode ser programadoprogramado (extensão de classes) e (extensão de classes) econfiguradoconfigurado pelo usuário (instanciação de objetos). pelo usuário (instanciação de objetos).

A cada elemento simulado é associado um objeto que A cada elemento simulado é associado um objeto que define os eventos (aleatórios a serem gerados neste define os eventos (aleatórios a serem gerados neste elemento ) elemento )

Modelo de simulação estocástico pode ser arbitrariamente Modelo de simulação estocástico pode ser arbitrariamente complexo!complexo!

Page 37: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Programação de Modelos de Programação de Modelos de Simulação Simulação

Canais de ComunicaçãoCanais de Comunicação usuário define o usuário define o tempo de envio da mensagem pelo canaltempo de envio da mensagem pelo canal::

pode depender do tamanho da mensagem, distância entre elementos, ou qualquer outro parâmetro (nr. de hops)

WiredWired delaySend(NetMessage m)delaySend(NetMessage m)WirelessWireless

delaySend(NetMessage m,

Location LLocation L11, ,

Location LLocation L22))

ExemploExemplopublic classpublic class MyLinkModel MyLinkModel extendsextends LinkModel LinkModel

{{

public longpublic long delaySend (NetMessage msg) { delaySend (NetMessage msg) {

returnreturn (msg.getMessage().getSize() / (msg.getMessage().getSize() /

thisthis.throughput);.throughput);

}}

}}

ExemploExemplopublic classpublic class MyLinkModel MyLinkModel extendsextends LinkModel LinkModel

{{

public longpublic long delaySend (NetMessage msg) { delaySend (NetMessage msg) {

returnreturn (msg.getMessage().getSize() / (msg.getMessage().getSize() /

thisthis.throughput);.throughput);

}}

}}

Page 38: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Programação de Modelos de Programação de Modelos de Simulação Simulação

Geração de EventosGeração de Eventos usuário programa quais usuário programa quais eventos são gerados, e em qual instante de tempo eventos são gerados, e em qual instante de tempo simuladosimulado

Classes base incluem facilidades para geração de Classes base incluem facilidades para geração de número aleatórios (randomGenerator), geração número aleatórios (randomGenerator), geração periódica de eventos (scheduler) etc.periódica de eventos (scheduler) etc.

MobilidadeMobilidadeDeterminar vizinhança entre célulasDeterminar vizinhança entre célulasGeração de Evento Geração de Evento MoveToMoveToMapeamento: Localização Mapeamento: Localização Célula Célula

Page 39: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Simulação Estocástica Simulação Estocástica ImplementadaImplementada

Modelo de MobilidadeModelo de Mobilidade

Modelo de Simulação ImplementadoModelo de Simulação ImplementadoAtividade e AtraçãoAtividade e Atração

Atividade: prob. de Mh estar conectado à redeAtração: prob. de Mhs estarem na região de uma

célulaMobilidadeMobilidade

Probabilidade do Mh migrar para outra célulaVizinhança entre célulasVizinhança entre célulasQualidade da comunicação sem fioQualidade da comunicação sem fioPadrão de requisiçõesPadrão de requisições

Neste modelo: apenas os hosts móveis geram eventosNeste modelo: apenas os hosts móveis geram eventos

Page 40: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ImplementaçãoImplementaçãoA Classe A Classe MhSimMhSim Subclasse de classe Subclasse de classe EventGeneratorEventGenerator objeto que implementa o modelo de simulação para cada objeto que implementa o modelo de simulação para cada

unidade móvel unidade móvel MhSim cria objetos para geração dos diferentes tipos de eventosMhSim cria objetos para geração dos diferentes tipos de eventos Instâncias de subclasses de Instâncias de subclasses de EventModel EventModel

MigrationEventModelMigrationEventModel = implementa modelo de migração = implementa modelo de migração evento evento MoveTo(Mh,newCell) MoveTo(Mh,newCell)

RequestModelRequestModel = implementa o modelo de geração de requisições para o = implementa o modelo de geração de requisições para o protocolo RDP protocolo RDP evento evento Receive(Mh,RDPreq)Receive(Mh,RDPreq)

WlLinkSimModelWlLinkSimModel = implementa o modelo de qualidade de comunicação = implementa o modelo de qualidade de comunicação sem fiosem fio

usausa timeScheduler.addEvent timeScheduler.addEvent p/ escalonar geração periódica (cada T p/ escalonar geração periódica (cada T unidades de tempo simuladas) de eventosunidades de tempo simuladas) de eventos

Page 41: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ImplementaçãoImplementaçãoClasse Classe MigrationEventModelMigrationEventModel

Implementa o modelo de mobilidadeImplementa o modelo de mobilidade Estende a classe Estende a classe EventModelEventModel Define coeficiente de migração e célula inicial de Define coeficiente de migração e célula inicial de

cada Mhcada Mh métodométodo generateEvent(Element owner) generateEvent(Element owner)

determina se um evento de migração vai ser gerado obtém lista de células vizinhas à celula atual baseado na atração das células vizinhas calcula

probabilidade relativa de migração para cada uma delascria um novo objeto Evento MoveTo para célula destino

Page 42: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ImplementaçãoImplementaçãoClasse Classe MyStochSimulationMyStochSimulation

Estende de Estende de StochSimulationStochSimulation usada para declarar e inicializar os elementos simuladosusada para declarar e inicializar os elementos simulados métodométodo configure configure

criação das células, associação com os MSSs, criação da topologia de interconexão de MSSs (usando WiredLink)

cria os objetos de MyMh (passando objeto MhSim) posicionando-os nas células

declara classe declara classe LinkSimModel que LinkSimModel que definedefine delaySend(Msg)delaySend(Msg)para uma conexão sem fiopara uma conexão sem fio

simulação iniciada através do método simulação iniciada através do método startstart

Page 43: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ImplementaçãoImplementaçãoClasse Classe MyMhMyMh Derivada da Classe MhDerivada da Classe Mh Na contrução do objeto passa-se o modelo de simulação Na contrução do objeto passa-se o modelo de simulação

escolhido (como parâmetro do construtor da superclasse escolhido (como parâmetro do construtor da superclasse Mh). Mh).

sim pode ser tanto um modelo determinístico ou estocásticopode ser tanto um modelo determinístico ou estocástico Instancia-se um objeto que implementa uma instância do Instancia-se um objeto que implementa uma instância do

protocolo (protocolo (rdp) e registra-se esta instância) e registra-se esta instância

public MyMh (String name, Simulator sim) {

super(name, sim, new MhSim());

rdp = new RDPMh(this);

protocolNotifier.attach(this.rdp)}

Page 44: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Resultados de simulações Resultados de simulações EstocásticasEstocásticas Medimos como o número de retransmissões (ForwardResult) Medimos como o número de retransmissões (ForwardResult)

por Requisição é afetado pelo Fator de Mobilidade por Requisição é afetado pelo Fator de Mobilidade Fator de mobilidade = probabilidade de uma migração Fator de mobilidade = probabilidade de uma migração

ocorrer a cada N unidades de tempo simuladoocorrer a cada N unidades de tempo simulado

Outros testes: Tamanho de of proxyList com crescente razão Outros testes: Tamanho de of proxyList com crescente razão Requisição/Migração Requisição/Migração

0

0.5

1

1.5

2

0 0.2 0.4 0.6 0.8 1

Migration Factor

Forw

ardR

esul

t /

Req

uest

s

Page 45: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Experiência com o MobiCSExperiência com o MobiCS

Usado na disciplina de CM no IME-USP por 15 alunosUsado na disciplina de CM no IME-USP por 15 alunos Protocolos:Protocolos:

RDP RDP Multicast confiável MCAST [Acharya93].Multicast confiável MCAST [Acharya93]. Protocolo para Serviço de Notificação.Protocolo para Serviço de Notificação.

Modelo de Programação de ProtocolosModelo de Programação de Protocolos Simples.Simples. Uso de Java facilitou a implementação.Uso de Java facilitou a implementação. Programação não é Programação não é thread-safethread-safe, há , há

compartilhamento de estruturas de dados nos compartilhamento de estruturas de dados nos protocolos.protocolos.

Modularização em micro-protocolos é limitada.Modularização em micro-protocolos é limitada.

Page 46: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Experiência com o MobiCSExperiência com o MobiCS

Simulação DeterminísticaSimulação Determinística Mecanismo de exceções de Java foi útil.Mecanismo de exceções de Java foi útil. Detecção de erros não-determinísticos (quando há Detecção de erros não-determinísticos (quando há

varios eventos concorrentes).varios eventos concorrentes). Detecção de erros no protocolo é facilitado pois Detecção de erros no protocolo é facilitado pois

cenário teste é conhecido.cenário teste é conhecido. Simulação EstocásticaSimulação Estocástica

Programação de modos de simulação é simples.Programação de modos de simulação é simples. Identificação de problemas dos protocolos não Identificação de problemas dos protocolos não

considerados na especificação.considerados na especificação. LogLog de eventos ajudou identificar erros nos protocolos de eventos ajudou identificar erros nos protocolos

não detectados na simulação determinísticanão detectados na simulação determinística

Page 47: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

Experiência com o MobiCSExperiência com o MobiCS

Simulação Estocástica (cont.)Simulação Estocástica (cont.) Dificuldade para identificar no Dificuldade para identificar no loglog as informações as informações

relevantes e associá-las aos elementos simulados.relevantes e associá-las aos elementos simulados. Principal dificuldade: Principal dificuldade:

Instante da geração de um evento Instante da geração de um evento instante do instante do processamento do eventoprocessamento do evento

Exemplo: decisão sobre célula destino de uma Exemplo: decisão sobre célula destino de uma migração a partir da atualmigração a partir da atual Mh.getMSS().getCell()Mh.getMSS().getCell() devolve a célula no devolve a célula no instante da geração do eventoinstante da geração do eventoEm vez disto, guardar referência para celula atual Em vez disto, guardar referência para celula atual e atualizar a cada processamento e atualizar a cada processamento

Page 48: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ArtigosArtigos

Rocha, Endler: “MobiCS: An Environment for Rocha, Endler: “MobiCS: An Environment for Prototyping and Simulating Distributed Protocols for Prototyping and Simulating Distributed Protocols for Mobile Networks”, IEEE MWCN2001.Mobile Networks”, IEEE MWCN2001.

Rocha, Endler: “Flexible Simulation of Distributed Rocha, Endler: “Flexible Simulation of Distributed Protocols for Mobile Computing”, ACM MSWiM, Boston Protocols for Mobile Computing”, ACM MSWiM, Boston 2000.2000.

Rocha, Endler: “Um Simulador de Protocolos para Rocha, Endler: “Um Simulador de Protocolos para Computação Móvel”Computação Móvel”. 2. 2oo WCSF, maio 2000. WCSF, maio 2000.

Endler, Silva: “A Reliable Connectionless Protocol for Endler, Silva: “A Reliable Connectionless Protocol for Mobile Clients”Mobile Clients”. DT-SIDAM-2-99.1. . DT-SIDAM-2-99.1. www.ime.usp.br/~sidamwww.ime.usp.br/~sidam

URLURL:: www.inf.puc-rio.br/~endler/publ.htmlwww.inf.puc-rio.br/~endler/publ.html

Page 49: MobiCS: Um exemplo de uso Ricardo Couto A. da Rocha (*) rcarocha@ime.usp.br rcarocha@altavista.com rcarocha@altavista.comDCC-IME-USP Orientador: Markus

ReferênciasReferências

Home-page:Home-page:http://www.ime.usp.br/~rcarocha/mobics ouhttp://www.ime.usp.br/~rcarocha/mobics ou

http://www.ime.usp.br/~sidam/components/mobicshttp://www.ime.usp.br/~sidam/components/mobics

Lista de discussão:Lista de discussão:lista: lista: [email protected]@lcpd.ime.usp.br

cadastramento: cadastramento: [email protected]@ime.usp.br

Estas transparências:Estas transparências: http://www.inf.puc-rio.br/~endler/courses/Mobile http://www.inf.puc-rio.br/~endler/courses/Mobile

(link Sequência de Aulas)(link Sequência de Aulas)