Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouOlívia Rodriguez Alterado mais de 11 anos atrás
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 Endler (*) Atualmente no Centro de Pesquisas da Xerox (ES)
2
Uso do MobiCS Uso do MobiCS Usuário implementa classes que definem os protocolos a serem simulados, o ambiente de rede e o modelo de simulação desejado. Usuário implementa classes que definem os protocolos a serem simulados, o ambiente de rede e o modelo de simulação desejado. Pacotes MobiCS Protocolos Modelos de Simulação Simulação estende instancia
3
Pacotes MobiCS Pacotes MobiCS Principais pacotes para o usuário MobiCS: mobics.ppi programação de protocolos mobics.ppi programação de protocolos mobics.ppi.protocol mobics.ppi.protocol mobics.ppi.message mobics.ppi.message mobics.network programação dos elementos de rede mobics.network programação dos elementos de rede mobics.simulation programação do modelo de simulação e configuração do ambiente de rede mobics.simulation programação do modelo de simulação e configuração do ambiente de rede mobics.simulation.DetermSimulation mobics.simulation.DetermSimulation mobics.simulation.StochSimulation mobics.simulation.StochSimulation
4
Outros pacotes MobiCS Outros pacotes MobiCS mobics.exception define exceções usadas pelo simulador e programador de protocolos mobics.exception define exceções usadas pelo simulador e programador de protocolos mobics.controller implementa as máquinas de simulação: mobics.controller implementa as máquinas de simulação: mobics.controller. deterministic mobics.controller. stochastic mobics.util classes adicionais mobics.util classes adicionais
5
Sequência Geral de Passos Sequência Geral de Passos Implementação do protocolo estender classes básicas Protocol e Message 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 ambiente de CM simulado estender classes básicas Mss, Mh,... Criação do(s) cenário(s) de simulação Criação do(s) cenário(s) de simulação cenários determinísticos de teste descrever script determinístico avaliar funcionamento do protocolo 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 Escolha dos cenário aleatório simulação estocástica avaliação do desempenho Estender a classe DetermSimulation (ou StochSimulation ) definindo o ambiente de rede (elementos simulados & topologia, outros conceitos) Estender a classe DetermSimulation (ou StochSimulation ) definindo o ambiente de rede (elementos simulados & topologia, outros conceitos) Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.start Implementar um programa Java que cria e inicia um objeto Simulação e chamar o método Simulation.start
6
MobiCS Modelo de Programação MobiCS Modelo de Programação Modelo de programação OO e modular Modelo de programação OO e modular Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida Protocolos são compostos de micro-protocolos módulos com funcionalidade bem definida Arranjo típico Arranjo típico Micro-protocolos se comunicam por eventos mensagens, timers Micro-protocolos se comunicam por eventos mensagens, timers Protocolo Wired Wireless Handoff
7
MobiCS Modelo de Programação MobiCS Modelo de Programação Etapas de implementação de um protocolo Etapas de implementação de um protocolo Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar as interfaces dos micro-protocolos Declarar as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro-protocolos Implementar os métodos Implementar os métodos
8
O Pacote mobics.ppi.message O Pacote mobics.ppi.message Toda mensagem é um objeto de uma subclasse de mobics.ppi.message.Message e contém um tipo (sua classe) e um conteúdo Toda mensagem é um objeto de uma subclasse de mobics.ppi.message.Message e contém um tipo (sua classe) e um conteúdo Classe Message define o conjunto mínimo de informações para processar uma mensagem Classe Message define o conjunto mínimo de informações para processar uma mensagem
9
A classe Message sender, receiver – remetente e destinatário sender, receiver – remetente e destinatário responsible – classe do prot. responsável pela mensagem responsible – classe do prot. responsável pela mensagem callHandler – invoca o handler da mensagem callHandler – invoca o handler da mensagem timestamp – carimbo de tempo da mensagem timestamp – carimbo de tempo da mensagem Obs: callHandler(Protocolo) faz chamada ao método Protocolo.when [TipoMensagem]
10
O Pacote mobics.ppi.message O Pacote mobics.ppi.message O pacote declara 4 interfaces (que definem o tipo da mensagem): O pacote declara 4 interfaces (que definem o tipo da mensagem): HandoffMessage, WiredMessage, WirelessMessage e AppMessage HandoffMessage, WiredMessage, WirelessMessage e AppMessage Toda mensagem deve implementar uma destas interfaces! Toda mensagem deve implementar uma destas interfaces! Mensagem é um objeto imutável (métodos públicos não podem alterar estado) Mensagem é um objeto imutável (métodos públicos não podem alterar estado)
11
O Pacote mobics.ppi.protocol O Pacote mobics.ppi.protocol Novo Microprotocolo é declarado estendendo-se as interfaces WiredModule, WirelessModule, e Novo Microprotocolo é declarado estendendo-se as interfaces WiredModule, WirelessModule, e HandoffModule HandoffModule Devem ser declarados todos os tratadores para as mensagens que compôem o micro-protocolo Devem ser declarados todos os tratadores para as mensagens que compôem o micro-protocolo Duas subclasses de Protocol, MssProtocol e MhProtocol possuem uma interface específica para a implementação de protocolos em Mhs e MSSs Duas subclasses de Protocol, MssProtocol e MhProtocol possuem uma interface específica para a implementação de protocolos em Mhs e MSSs Método Protocol.send(Addr,Message) é a forma de interação entre instanâncias de um protocolo Método Protocol.send(Addr,Message) é a forma de interação entre instanâncias de um protocolo Pode gerar uma exceção CommunicatioException Pode gerar uma exceção CommunicatioException send envio assíncrono de uma mensagem para outro elemento simulado ( rsend é a versão confiável) send envio assíncrono de uma mensagem para outro elemento simulado ( rsend é a versão confiável)
12
Um Exemplo: O Protocolo RDP Descrição geral do protocolo Descrição geral do protocolo Funcionamento do protocolo Funcionamento do protocolo Mensagens Mensagens Módulos (micro-protocolos) Módulos (micro-protocolos)
13
Visão Geral do RDP Result Delivery Protocol Objetivos Objetivos Reencaminhar respostas de requisições feitas a servidores fixos, quando um cliente móvel migra. Reencaminhar respostas de requisições feitas a servidores fixos, quando um cliente móvel migra. Utiliza um proxy, que é o representante do Mh na rede fixa. Utiliza um proxy, que é o representante do Mh na rede fixa. A cada nova requisição do Mh a um servidor, é criado um proxy no Mss responsável pelo Mh, no momento em que uma requisição é feita. A cada nova requisição do Mh a um servidor, é criado um proxy 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. São guardados também ponteiros para os proxies remotos de todos os Mh locais.
14
Funcionamento do RDP Um MSS armazena para cada Mh local, o conjunto dos proxies criados pelos Mh locais e dos proxies remotos. Um MSS armazena para cada Mh local, o conjunto dos proxies criados pelos Mh locais e dos proxies remotos. Hand-off de um Mh Hand-off de um Mh O MSS da nova célula envia para o MSS anterior um pedido para retirar o registro daquele Mh. O MSS da nova célula envia para o MSS anterior 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 endereços. O MSS antigo envia para o novo MSS a lista dos proxies remotos e locais com seus respectivos endereços. O novo MSS envia uma mensagem para o Mss antigo atualizar o endereço do Mh na lista de proxies locais. O novo MSS envia uma mensagem para o Mss antigo atualizar o endereço do Mh na lista de proxies locais.
15
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
16
Organizando o Protocolo O protocolo possui duas instâncias funcionais do protocolo: uma para MSSs e outra para Mhs. 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. 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. Será seguida a metodologia de organizar protocolos em micro-protocolos Wired, Wireless e Handoff.
17
Exemplo Etapas de Implementação Exemplo Etapas de Implementação Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Definir todas as mensagens trocadas entre elementos e seus respectivos micro-protocolos Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar cada uma das mensagens na forma de uma subclasse de Message. Declarar as interfaces dos micro-protocolos Declarar as interfaces dos micro-protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro- protocolos Declarar uma subclasse de Protocol que implementa todas as interfaces dos micro- protocolos Implementar os métodos Implementar os métodos
18
Exemplo Organizando o Protocolo Exemplo Organizando o Protocolo O protocolo possui duas instâncias funcionais O protocolo possui duas instâncias funcionais MSSs MSSs MHs. MHs. Metodologia de organização micro- protocolos Wired, Wireless e Handoff. Metodologia de organização micro- protocolos Wired, Wireless e Handoff.
19
Exemplo Comunicação entre Módulos Exemplo Comunicação entre Módulos RDPMss RDPMh Greet Ack Req ForwardRes RDPMss RDPServer Res Req, Ack RDPMss UpdateCurrLoc DeReg, Ack RemPList ForwardRes PList
20
Exemplo Comunicação entre Módulos Exemplo Comunicação entre Módulos wireless wired handoff Mss wireless wired handoff Mss wireless Mh ForwardRes Ack_Mss RemPList ForwardRes PList UpCurrLoc DeReg Req,Ack ForwardRes
21
Exemplo Declaração das Mensagens Exemplo Declaração das Mensagens Declaração de Plist Declaração de Plist Conteúdo da mensagem Conteúdo da mensagem Protocolo responsável pelo tratamento da mensagem Protocolo responsável pelo tratamento da mensagem Construtor Construtor Métodos get Métodos get Método clone, se necessário Método clone, se necessário 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; } // métodos get public Address getMh() { return mh; } … // conteúdo da mensagem 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; } // métodos get public Address getMh() { return mh; } … // conteúdo da mensagem private Address oldMss; private Map proxyList; private Address mh; }
22
Declaração das Mensagens Declaração de Plist 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; }
23
Declaração de Micro-Protocolos Necessário definir três instâncias de protocolos do RDP: Necessário definir três instâncias de protocolos do RDP: Servidor - RDPServer Servidor - RDPServer Estação móvel – RDPMh Estação móvel – RDPMh Estação base – RDPMss Estação base – RDPMss Cada uma dessas instâncias é um protocolo e define seus próprios micro- protocolos. Cada uma dessas instâncias é um protocolo e define seus próprios micro- protocolos.
24
Declaração dos Micro-Protocolos Micro-protocolos são declarados como interfaces Java. Micro-protocolos são declarados como interfaces Java. Cada método da interface é um handler para uma das possíveis mensagens. Cada método da interface é um handler para uma das possíveis mensagens. Cada handler possui a seguinte sintaxe: Cada handler possui a seguinte sintaxe: public void (Message m);
25
Exemplo Declaração de Protocolos Exemplo Declaração de Protocolos Micro-protocolo Wired do protocolo RDPMss Micro-protocolo Wired do protocolo RDPMss public interface RDPMssWired extends WiredModule { WiredModule { public void whenRes (Message m); public void whenRes (Message m); public void whenRemPList (Message m); public void whenRemPList (Message m); public void whenAck_Mss (Message m); public void whenAck_Mss (Message m);} public interface RDPMssWired extends WiredModule { WiredModule { public void whenRes (Message m); public void whenRes (Message m); public void whenRemPList (Message m); public void whenRemPList (Message m); public void whenAck_Mss (Message m); public void whenAck_Mss (Message m);}
26
Declaração de Micro-Protocolos Diagrama completo de declaração de micro-protocolos Diagrama completo de declaração de micro-protocolos
27
A Classe Protocol owner – elemento simulado usuário do protocolo owner – elemento simulado usuário do protocolo send – envia uma mensagem pela rede send – envia uma mensagem pela rede state – uniformiza a manipulação do estado do protocolo em diferentes instâncias state – uniformiza a manipulação do estado do protocolo em diferentes instâncias
28
Estrutura de um Protocolo Corpo da declaração da classe 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)); }
29
Implementação do Protocolo RDP Tipos de módulos Micro-protocolos Extensão de Protocol Declaração do protocolo RDPMss
30
Configuração do Ambiente de rede simulado Classes de mobics.network Classes de mobics.network Element Element Fh Fh Mh Mh Mss Mss Cell Cell Address Address NetworkInterface NetworkInterface WiredInterface WiredInterface WirelessInterface WirelessInterface
31
Classes do pacote mobics.network (cont) Hierarquia básica de elementos de rede simulados Hierarquia básica de elementos de rede simulados Element Mss Fh Mh Mss1 Mh1 Classes básicas MobiCS
32
Classes do pacote mobics.network (cont) Element – implementa a interface básica de um elemento de rede Element – implementa a interface básica de um elemento de rede Métodos principais: Métodos principais: getName – nome do elemento simulado getName – nome do elemento simulado send – envia uma mensagem pela rede send – envia uma mensagem pela rede attach – incopora um protocolo ao elemento attach – incopora um protocolo ao elemento
33
Classes do pacote mobics.network (cont) Adaptação nos elementos simulados Adaptação nos elementos simulados Métodos com a assinatura on definem o comportamento de um elemento simulado na ocorrência da ação. 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
34
Classes do pacote mobics.network (cont) Mh –implementa a interface básica de uma estação móvel Mh –implementa a interface básica de uma estação móvel Métodos principais: Métodos principais: getMssResp – endereço do Mss responsável pelo Mh getMssResp – endereço do Mss responsável pelo Mh available/unavailable – muda o estado de disponibilidade do Mh para comunicação available/unavailable – muda o estado de disponibilidade do Mh para comunicação onMoveTo, onAvailable, onUnavailable onMoveTo, onAvailable, onUnavailable Mss – implementa a interface básica de um Mss (estação base) Mss – implementa a interface básica de um Mss (estação base) Métodos principais: Métodos principais: getCell – célula pela qual o Mss é responsável getCell – célula pela qual o Mss é responsável
35
Exemplo Criação de um Ambiente Exemplo Criação de um Ambiente 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()); mss1.getAddress()); wr2 = new WiredLink(mss1.getAddress(), mss3.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()); mss1.getAddress()); wr2 = new WiredLink(mss1.getAddress(), mss3.getAddress()); mss3.getAddress());
36
Exemplo Cenário de Teste Exemplo Cenário de Teste Testar envio sem sucesso de ForwardRes para Mh que não é mais local 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
37
Exemplo Cenário de Teste Exemplo Cenário de Teste 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); 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);
38
Exemplo Saída da Simulação Exemplo Saída da Simulação 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(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);
39
Criação de um Script Determinístico Criar uma subclasse de DetermSimulation Criar uma subclasse de DetermSimulation Implementar os métodos configure() e script() Implementar os métodos configure() e script() Em configure, criar os objetos que compõem o ambiente simulado Em configure, criar os objetos que compõem o ambiente simulado Em script, escrever o código do script determinístico Em script, escrever o código do script determinístico
40
Executando o Simulador Código no programa do usuário Código no programa do usuário Simulation simulation = new MySimulation(); Simulation.start(); Simulation simulation = new MySimulation(); Simulation.start();
41
Evitando Erros no Script Determinístico A ordem de execução de ações em diferentes elementos simulados é não determinística. A ordem de execução de ações em diferentes elementos simulados é não determinística. Comandos de depuração podem produzir resultados inesperados e variáveis, caso haja outros comandos naquele passo. 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 impor uma sequência deterministica das ações, ou criando passos de simulação vazios (para avançar o tempo simulado) O comando next() pode ser sempre usado como uma primitiva para impor uma sequência deterministica das ações, ou criando passos de simulação vazios (para avançar o tempo simulado)
42
Simulação Estocástica Simulação Estocástica Permite a avaliação do desempenho (complexidade de mensagens) através de testes exaustivos. Permite a avaliação do desempenho (complexidade de mensagens) através de testes exaustivos. Usuário define: Usuário define: Padrão de comportamento dos elementos simulados Padrão de comportamento dos elementos simulados Modelo de mobilidade Modelo de mobilidade O modelo de simulação pode ser O modelo de simulação pode ser programado (extensão de classes) e programado (extensão de classes) e configurado pelo usuário (instanciação de objetos). configurado pelo usuário (instanciação de objetos). A cada elemento simulado é associado um objeto que define os eventos (aleatórios a serem gerados neste elemento ) A cada elemento simulado é associado um objeto que define os eventos (aleatórios a serem gerados neste elemento ) Modelo de simulação estocástico pode ser arbitrariamente complexo! Modelo de simulação estocástico pode ser arbitrariamente complexo!
43
Programação de Modelos de Simulação Programação de Modelos de Simulação Canais de Comunicação usuário define o tempo de envio da mensagem pelo canal : Canais de Comunicação usuário define o tempo de envio da mensagem pelo canal : pode depender do tamanho da mensagem, distância entre elementos, ou qualquer outro parâmetro (nr. de hops) Wired Wired delaySend(NetMessage m) delaySend(NetMessage m) Wireless Wireless delaySend(NetMessage m, Location L 1, Location L 1, Location L 2 ) Location L 2 ) Exemplo Exemplo public class MyLinkModel extends LinkModel { public long delaySend (NetMessage msg) { public long delaySend (NetMessage msg) { return (msg.getMessage().getSize() / return (msg.getMessage().getSize() / this.throughput); this.throughput); }} Exemplo Exemplo public class MyLinkModel extends LinkModel { public long delaySend (NetMessage msg) { public long delaySend (NetMessage msg) { return (msg.getMessage().getSize() / return (msg.getMessage().getSize() / this.throughput); this.throughput); }}
44
Programação de Modelos de Simulação Programação de Modelos de Simulação Geração de Eventos usuário programa quais eventos são gerados, e em qual instante de tempo simulado Geração de Eventos usuário programa quais eventos são gerados, e em qual instante de tempo simulado Classes base incluem facilidades para geração de número aleatórios (randomGenerator), geração periódica de eventos (scheduler) etc. Classes base incluem facilidades para geração de número aleatórios (randomGenerator), geração periódica de eventos (scheduler) etc. Mobilidade Mobilidade Determinar vizinhança entre células Determinar vizinhança entre células Geração de Evento MoveTo Geração de Evento MoveTo Mapeamento: Localização Célula Mapeamento: Localização Célula
45
Simulação Estocástica Implementada Modelo de Simulação Implementado Modelo de Simulação Implementado Atividade e Atraçã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 Mobilidade Probabilidade do Mh migrar para outra célula Vizinhança entre células Vizinhança entre células Qualidade da comunicação sem fio Qualidade da comunicação sem fio Padrão de requisições Padrão de requisições Neste modelo: apenas os hosts móveis geram eventos
46
Implementação A Classe MhSim Subclasse de classe EventGenerator Subclasse de classe EventGenerator objeto que implementa o modelo de simulação para cada unidade móvel objeto que implementa o modelo de simulação para cada unidade móvel MhSim cria objetos para geração dos diferentes tipos de eventos MhSim cria objetos para geração dos diferentes tipos de eventos Instâncias de subclasses de EventModel Instâncias de subclasses de EventModel MigrationEventModel = implementa modelo de migração evento MoveTo(Mh,newCell) MigrationEventModel = implementa modelo de migração evento MoveTo(Mh,newCell) RequestModel = implementa o modelo de geração de requisições para o protocolo RDP evento Receive(Mh,RDPreq) RequestModel = implementa o modelo de geração de requisições para o protocolo RDP evento Receive(Mh,RDPreq) WlLinkSimModel = implementa o modelo de qualidade de comunicação sem fio WlLinkSimModel = implementa o modelo de qualidade de comunicação sem fio usa timeScheduler.addEvent p/ escalonar geração periódica (cada T unidades de tempo simuladas) de eventos usa timeScheduler.addEvent p/ escalonar geração periódica (cada T unidades de tempo simuladas) de eventos
47
Implementação Classe MigrationEventModel Implementa o modelo de mobilidade Implementa o modelo de mobilidade Estende a classe EventModel Estende a classe EventModel Define coeficiente de migração e célula inicial de cada Mh Define coeficiente de migração e célula inicial de cada Mh método generateEvent(Element owner) método 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 delas cria um novo objeto Evento MoveTo para célula destino
48
Implementação Classe MyStochSimulation Estende de StochSimulation Estende de StochSimulation usada para declarar e inicializar os elementos simulados usada para declarar e inicializar os elementos simulados método configure método 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 LinkSimModel que define delaySend(Msg) para uma conexão sem fio declara classe LinkSimModel que define delaySend(Msg) para uma conexão sem fio simulação iniciada através do método start simulação iniciada através do método start
49
Implementação Classe MyMh Derivada da Classe Mh Derivada da Classe Mh Na contrução do objeto passa-se o modelo de simulação escolhido (como parâmetro do construtor da superclasse Mh). Na contrução do objeto passa-se o modelo de simulação escolhido (como parâmetro do construtor da superclasse Mh). pode ser tanto um modelo determinístico ou estocástico sim pode ser tanto um modelo determinístico ou estocástico Instancia-se um objeto que implementa uma instância do protocolo () e registra-se esta instância Instancia-se um objeto que implementa uma instância do protocolo ( rdp ) 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) }
50
Resultados de simulações Estocásticas Resultados de simulações Estocásticas Medimos como o número de retransmissões (ForwardResult) por Requisição é afetado pelo Fator de Mobilidade Medimos como o número de retransmissões (ForwardResult) por Requisição é afetado pelo Fator de Mobilidade Fator de mobilidade = probabilidade de uma migração ocorrer a cada N unidades de tempo simulado Fator de mobilidade = probabilidade de uma migração ocorrer a cada N unidades de tempo simulado Outros testes: Tamanho de of proxyList com crescente razão Requisição/Migração Outros testes: Tamanho de of proxyList com crescente razão Requisição/Migração
51
Experiência com o MobiCS Experiência com o MobiCS Usado na disciplina de CM no IME-USP por 15 alunos Usado 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 Protocolos Modelo 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 é thread-safe, há compartilhamento de estruturas de dados nos protocolos. Programação não é thread-safe, há compartilhamento de estruturas de dados nos protocolos. Modularização em micro-protocolos é limitada. Modularização em micro-protocolos é limitada.
52
Experiência com o MobiCS Experiência com o MobiCS Simulação Determinística Simulaçã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á varios eventos concorrentes). Detecção de erros não-determinísticos (quando há varios eventos concorrentes). Detecção de erros no protocolo é facilitado pois cenário teste é conhecido. Detecção de erros no protocolo é facilitado pois cenário teste é conhecido. Simulação Estocástica Simulaçã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 considerados na especificação. Identificação de problemas dos protocolos não considerados na especificação. Log de eventos ajudou identificar erros nos protocolos não detectados na simulação determinística Log de eventos ajudou identificar erros nos protocolos não detectados na simulação determinística
53
Experiência com o MobiCS Experiência com o MobiCS Simulação Estocástica (cont.) Simulação Estocástica (cont.) Dificuldade para identificar no log as informações relevantes e associá-las aos elementos simulados. Dificuldade para identificar no log as informações relevantes e associá-las aos elementos simulados. Principal dificuldade: Principal dificuldade: Instante da geração de um evento instante do processamento do evento Instante da geração de um evento instante do processamento do evento Exemplo: decisão sobre célula destino de uma migração a partir da atual Mh.getMSS().getCell() devolve a célula no instante da geração do evento Em vez disto, guardar referência para celula atual e atualizar a cada processamento
54
Artigos Rocha, Endler: MobiCS: An Environment for Prototyping and Simulating Distributed Protocols for Mobile Networks, IEEE MWCN2001. Rocha, Endler: MobiCS: An Environment for Prototyping and Simulating Distributed Protocols for Mobile Networks, IEEE MWCN2001. Rocha, Endler: Flexible Simulation of Distributed Protocols for Mobile Computing, ACM MSWiM, Boston 2000. Rocha, Endler: Flexible Simulation of Distributed Protocols for Mobile Computing, ACM MSWiM, Boston 2000. Rocha, Endler: Um Simulador de Protocolos para Computação Móvel. 2 o WCSF, maio 2000. Rocha, Endler: Um Simulador de Protocolos para Computação Móvel. 2 o WCSF, maio 2000. Endler, Silva: A Reliable Connectionless Protocol for Mobile Clients. DT-SIDAM-2-99.1. www.ime.usp.br/~sidam Endler, Silva: A Reliable Connectionless Protocol for Mobile Clients. DT-SIDAM-2-99.1. www.ime.usp.br/~sidam URL: www.inf.puc-rio.br/~endler/publ.html URL: www.inf.puc-rio.br/~endler/publ.html
55
Referências Home-page: Home-page: http://www.ime.usp.br/~rcarocha/mobics ou http://www.ime.usp.br/~sidam/components/mobics Lista de discussão: Lista de discussão: lista: rcarocha-mobics@lcpd.ime.usp.br cadastramento: rcarocha@ime.usp.br Estas transparências: Estas transparências:http://www.inf.puc-rio.br/~endler/courses/Mobile (link Sequência de Aulas)
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.