Introdução a Simulação de redes Sensores sem fio com Castalia

646 visualizações

Publicada em

Uma introdução aos conceitos iniciais do simulador de redes sensores sem fio Castalia.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
646
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
124
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Simulação de redes Sensores sem fio com Castalia

  1. 1. Simulação de Redes Sensores com OMNET++ e Castalia Principais conceitos teóricos e aplicações
  2. 2. Apresentadores/Pesquisadores ● Daniel G. Costa - Professor Doutor da Universidade Estadual de Feira de Santana (UEFS) ● Lucas Vinícius dos S. Assis - Graduando em Engenharia de Computação (UEFS)
  3. 3. Laboratório de pesquisa - UEFS http://www2.uefs.br/netmedia/
  4. 4. Introdução ● O avanço tecnológico na década de 1990 nas áreas de sensores, circuitos integrados e comunicação sem fio permitiu a criação das Redes de Sensores sem Fio (RSSF).
  5. 5. Parte I Introdução às Redes de Sensores sem Fio (RSSF)
  6. 6. RSSF - O que são? ● Sensores sem fio, com recursos energéticos e de processamento limitados, densamente distribuídos numa região de interesse e trabalhando em conjunto para obter informações sobre esse ambiente.
  7. 7. RSSF - Deve-se levar em consideração ● Fenômeno: é o que a rede de sensores monitora; ● Sensor: é quem de fato monitora o fenômeno; ● Observador: é o usuário final, ou seja, quem deseja estudar o fenômeno.
  8. 8. RSSF - Componentes principais ● Nós sensores: dispositivos que capturam e/ou retransmitem a informação capturada do ambiente; ● Sink: gateway que recebe as informações provenientes dos sensores e as repassa para o banco de dados do usuário da aplicação.
  9. 9. RSSF - Componentes principais
  10. 10. RSSF - Aplicações ● Ambiente: monitoramento de variáveis ambientais em locais internos ou externos; ● Controle: fornece mecanismos de controle automatizados para ambientes residenciais ou industriais; ● Tráfego: monitorar veículos em rodovias, malhas viárias urbanas dentre outros.
  11. 11. RSSF - Aplicações ● Segurança: fornecendo segurança em centros comerciais, estacionamentos, dentre outros; ● Medicina/Biologia: ○ Monitoramento do funcionamento de órgãos no corpo humano ou animal; ○ Detectar substâncias que indiquem a presença ou surgimento de um problema biológico ou doenças.
  12. 12. RSSF - Aplicações ● Militar: ○ Rastreamento e vigilância de alvos; ○ Detecção de material perigoso, como radiação e gases tóxicos; ○ Geralmente utilizam dados criptografados e de curto alcance para evitar interceptações clandestinas.
  13. 13. RSSF - Camadas de rede ● A interação entre as camadas de RSSF deve levar em consideração fatores como energia, mobilidade e as tarefas da rede.
  14. 14. RSSF - Restrições e desafios tecnológicos ● Algoritmos e protocolos em RSSFs devem levar em consideração a quantidade de energia consumida em cada nó (rádio, processador, bateria, etc); ● Processamento limitado nos nós sensores.
  15. 15. RSSF - Restrições e desafios tecnológicos ● Devido a limitação do alcance da transmissão entre os nós, o envio da informação envolve caminhos multi-hop utilizando outros nós, uma topologia altamente variável.
  16. 16. Por que deve-se usar simuladores? ● Em geral para RSSF a solução para um contexto não pode ser aplicada diretamente em outro cenário sem uma avaliação cuidadosa; ● Simulações permitem testar aplicações envolvendo RSSF antes de sua implantação em campo.
  17. 17. Parte II Simulador de RSSF - Castalia
  18. 18. Castalia - O que é? ● Simulador de RSSF, Body Area Network (BAN) e redes de dispositivos embarcados; ● Baseado na plataforma OMNeT++; ● Utilizado para testes de algoritmos e/ou protocolos de rede distribuídos em modelos realistas de acesso ao canal e rádio.
  19. 19. Castalia - Características ● Modelo de Canal avançado (simulações baseadas em informações empíricas), que: ○ Define um map of path loss (diminuição da potência da onda eletromagnética com sua propagação); ○ Permite mobilidade de nós; ○ Trata interferência como potência do sinal recebido.
  20. 20. Castalia - Características ● Modelo de transmissão baseado em rádios de baixa potência; ● Simulador permite adaptações e expansões de seu código fonte (Software livre).
  21. 21. Castalia - Herança OMNet++ (Módulos e Mensagens) ● Módulo é a unidade básica de execução (OMNet++); ● Um módulo aceita mensagens de outro módulos ou dele mesmo; ● Módulos executam algoritmos diferentes dependendo da mensagem recebida;
  22. 22. Castalia - Herança OMNet++ (Linguagem NED) ● Os módulos têm suas portas de entrada e saída mapeadas pela linguagem NED no OMNet++ (arquivos terminados em “.ned”); ● Linguagem usada para definir, por exemplo: ○ Nome; ○ Parâmetros; ○ Interface (Portas de entrada e saída); ○ Estrutura de submódulos (Para módulos compostos).
  23. 23. Castalia - Módulos ● Conjunto de Módulos e Submódulos formam a estrutura do nó sensor; ● Conjunto de nós sensores formam uma RSSF.
  24. 24. ● Mensagem enviada entre submódulos (Setas Cheias) Castalia - Estrutura do nó sensor
  25. 25. ● Chamadas de função (Setas Tracejadas) Castalia - Estrutura do nó sensor
  26. 26. ● A maioria dos módulos chamam funções de gerenciamento de recursos para indicar que energia foi consumida, por exemplo. Castalia - Estrutura do nó sensor
  27. 27. ● Usuário pode modificar, para construir seus protocolos e aplicações, os módulos: ○ Aplicação; ○ Comunicação MAC; ○ Roteamento, dentre outros. Castalia - Criando protocolos e aplicações
  28. 28. ● Nós sensores são conectados entre sí indiretamente pelo canal sem fio e pelos processos físicos monitorados. Castalia - Interação entre nós sensores
  29. 29. Antes de instalar o Castalia... ● Necessita de instalações prévias: GnuPlot, G++, OMNet++; ● Instalação do OMNeT++ (comandos do terminal): ○ $ cd omnetpp (busca da pasta descompactada) ○ $ . setenv ○ $ ./configure ○ $ make
  30. 30. Castalia - Instalação (Comandos terminal) ● $ cd castalia (busca da pasta descompactada) ● $ ./makemake ● $ make
  31. 31. Scripts ● Castalia: executa as simulações; ● CastaliaResults: interpreta os resultados provenientes do Castalia; ● CastaliaPlot: cria gráficos (utilizando o GnuPlot) utilizando as tabelas de saída resultantes do CastaliaResults. Os scripts acima encontram-se na pasta: ~/Castalia/bin
  32. 32. Antes de simular... 1. Criar uma pasta dentro do diretório ~/Castalia/Simulations para colocar o arquivo contendo a simulação a ser criada; 2. Dentro da pasta criada adicionar um arquivo denominado omnetpp.ini (arquivo padrão de simulações); 3. Escrever as simulações e executá-las utilizando os scripts.
  33. 33. Antes de simular... ● Execução padrão do Castalia: $ ../../bin/Castalia; ● Para não precisar executar esse comando toda vez que for simular pode-se criar um alias; 1. Pelo terminal, vá à pasta /home e procure o arquivo .bashrc; 2. Abra-o com qualquer editor de texto; 3. Adicione o caminho dos scripts do Castalia ao final do arquivo como no exemplo a seguir: alias castalia=’~/caminhoqueseencontra/Castalia’ 4. Salve o arquivo e digite o comando $ bash para atualizar o terminal.
  34. 34. Executando a Simulação - radioTest ● Ao executar o comando Castalia sem nenhum argumento o script irá realizar um parser no arquivo omnetpp.ini da pasta e imprimir na tela o nome das configurações válidas contidas no mesmo.
  35. 35. Executando a Simulação - radioTest ● O comando -h exibe todas as opções válidas de execução para do script Castalia. (CastaliaResults e Plot também possuem esse comando)
  36. 36. ● O comando -c permite selecionar qual das configurações dentro do arquivo do Castalia será executada. Executando a Simulação - radioTest
  37. 37. ● Após a execução do script, um arquivo de saída padrão (contendo os dados da simulação) no formato YYMMDD- HHMMSS.txt será adicionado na mesma pasta que o omnetpp.ini. Executando a Simulação - radioTest
  38. 38. ● Além do arquivo de saída padrão, um arquivo denominado Castalia-Trace.txt poderá ser criado caso a simulação solicite rastros (Traces) de algum módulo. Executando a Simulação - radioTest
  39. 39. Exemplo - radioTest
  40. 40. Conhecendo o arquivo de simulação - radioTest ● include ../Parameters/Castalia.ini - arquivo que contém alguns parâmetros básicos que toda simulação do Castalia irá precisar. (Necessário incluir no início das simulações) ● sim-time-limit = 100s - é o tempo que será simulado pelo Castalia.
  41. 41. Conhecendo o arquivo de simulação - radioTest ● SN.field_x = 200 - Os eixos x, y e z ditam o tamanho do campo através de valores inteiros (como o eixo z, no exemplo, foi deixado vazio ele assume o seu valor padrão: 0). ● SN.numNodes = 3 - escolha do número de nós presentes na simulação ● # meters - O caractere ‘#’ indica comentário de linha
  42. 42. Conhecendo o arquivo de simulação - radioTest ● SN.wirelessChannel.onlyStaticNodes = false - Indica que a simulação terá nós móveis. Os parâmetros abaixo foram desligados para que sejam desconsiderados os efeitos de sombreamento (atenuação da onda com a distância) na simulação. ● SN.wirelessChannel.sigma = 0. ● SN.wirelessChannel.bidirectionalSigma = 0.
  43. 43. Conhecendo o arquivo de simulação - radioTest ● SN.node[*].Communication.Radio.RadioParametersFile = ".. /Parameters/Radio/CC2420.txt" - o RadioParameterFile é um arquivo especialmente formatado definindo propriedades básicas de operação de rádio. ● SN.node[*].Communication.Radio.TxOutputPower = "-5dBm" - configura a potência com que o rádio transmite os seus pacotes.
  44. 44. Conhecendo o arquivo de simulação - radioTest ● SN.node[9].xCoor = 10.5 - modifica um parâmetro específico do nó com índice [9]. ● É possível modificar uma grande quantidade de nós de uma só vez da seguinte maneira: ○ [*] - todos os índices ○ [3..5] - índices 3, 4 e 5 ○ [..4] - índices 0, 1, 2, 3, 4 ○ [5..] - índices 5 até o último
  45. 45. Conhecendo o arquivo de simulação - radioTest ● SN.node[*].Communication.Routing.maxNetFrameSize = 2500 ● SN.node[*].Communication.MAC.maxMACFrameSize = 2500 ● SN.node[*].Communication.Radio.maxPhyFrameSize = 2500 Os Parâmetros acima configuram o máximo tamanho permitido (em bytes) do pacote em todas as camadas de comunicação: roteamento, enlace e rádio.
  46. 46. Conhecendo o arquivo de simulação - radioTest ● SN.node[*].ApplicationName = "ThroughputTest" - nome da aplicação. ● SN.node[*].Application.packet_rate = 5 - taxa de pacotes entregues por segundo. ● SN.node[*].Application.constantDataPayload = 2000 - quantidade de bytes entregues em um pacote. ● SN.node[0].Application.collectTraceInfo = true - ativando o trace para o nó destinatário (nó zero) pode-se ver o padrão de entregas de arquivos pelo protocolo de aplicação.
  47. 47. Conhecendo o arquivo de simulação - radioTest ● SN.node[0].xCoor = 0 - caso o usuário queira configurar o posicionamento de nós individualmente, pode-se assinalar seus eixos x, y e z pelos parâmetros xCoor, yCoor, zCoor respectivamente.
  48. 48. Conhecendo o arquivo de simulação - radioTest ● SN.deployment - posiciona todos os nós em campo de uma só vez utilizando uma string pré-definida, como nos exemplos abaixo: ○ “uniform” - os nós são colocados no campo usando uma distribuição randomica e uniforme ○ “NxM” - as variáveis N e M são número inteiros. Os nós so colocados na grade de N nós por M nós. ○ “NxNxK” - mesa coisa que o de cima para três dimensões ○ “center” - nós são colocados no centro do campo
  49. 49. ● Configurando mobilidade no nó zero ○ SN.node[0].MobilityManagerName = "LineMobilityManager" ○ SN.node[0].MobilityManager.updateInterval = 100 ○ SN.node[0].MobilityManager.xCoorDestination = 200 ○ SN.node[0].MobilityManager.yCoorDestination = 200 ○ SN.node[0].MobilityManager.speed = 15 ● Pode-se escolher desativar mobilidade, como a seguir: ○ SN.node[0].MobilityManagerName = "NoMobilityManager" Conhecendo o arquivo de simulação - radioTest
  50. 50. Conhecendo o arquivo de simulação - radioTest ● Por padrão os protocolos de roteamento e de enlace são configurados para deixar os pacotes passarem sem nenhuma interferência por essas camada, como os próprios nomes já sugerem: ○ SN.node[*].Communication.MACProtocolName = "BypassMAC" ○ SN.node[*].Communication.RoutingProtocolName = "BypassRouting"
  51. 51. Interpretando a simulação - CastaliaResults ● Ao executar o CastaliaResults sem nenhum argumento é apresentada a lista de arquivos de resultados das simulações presentes na pasta atual:
  52. 52. Interpretando a simulação - CastaliaResults ● -i - permite trocar o arquivo de entrada do castaliaResults ● Ao executar, por exemplo, “CastaliaResults -i 150319-130527.txt”, o results percorre o arquivo e encontra o que a simulação do Castalia gerou nos diferentes módulos da simulação.
  53. 53. Interpretando a simulação - CastaliaResults ● Cada saída tem uma dimensão NxM, onde N é o número de módulos que produziram essa saída. Módulos que são instanciados somente uma vez, como o canal sem fio, irão sempre ter o N=1. ● M é o número de diferentes índices que uma saída de um único módulo tem.
  54. 54. Interpretando a simulação - CastaliaResults ● É possível especificar a saída desejada do Castalia Results com o comando -s (caso deseje ver a informação referente a cada nó acrescentar o comando -n ao final) ○ Exemplo: “CastaliaResults -i 150319-130527.txt” ● -p mostra porcentagens do total (sempre que possível)
  55. 55. Interpretando o CastaliaResults - CastaliaPlot ● O CastaliaPlot imprime em gráficos as tabelas obtidas do CastaliaResults. (Comando do Results | Comando do Plot); ● Colunas Determinam coordenadas do eixo X; ● Linhas (valores das células da tabela) determinam as coordenadas do eixo Y; ● Os gráficos são coloridos automaticamente, bem como as legendas e títulos (que são extraídos das informações da tabela).
  56. 56. Interpretando o CastaliaResults - CastaliaPlot (Comandos) ● -o - seleciona o arquivo de saída, o default é plot.ps; ● -s - o comando usado para configurar o estilo de impressão, os estilos suportados são: linespoints, histogram, stacked; ● -l - o comando configura a posição da legenda, a default é ‘top-right’, procure por gnuplot’s para todas as opções possíveis; ● --invert - onde você inverte a tabela então as linhas se tornam colunas.
  57. 57. Parte III Exercícios
  58. 58. Exercício 1 ● Topologia: Linear ● Quantidade de nós: 10 ● 1 nó fonte e um nó sink ● Objetivo: Interpretação de testes com diferentes quantidades de pacotes enviados por segundo (5 e 10)
  59. 59. Exercício 2 ● Topologia: Malha 5x5 ● Quantidade de nós: 25 ● 3 nós fonte e um nó sink ● Objetivo: Interpretação de testes com diferentes quantidades de pacotes enviados por segundo (5 e 10)
  60. 60. Isso é Tudo!!! Obrigado… www.uefs.br/netmedia

×