Este documento apresenta um resumo sobre simulação de redes de sensores sem fio usando os softwares OMNeT++ e Castalia. Ele introduz conceitos básicos de redes de sensores, aplicações, desafios e componentes, e descreve como usar o simulador Castalia no OMNeT++ para projetar e testar protocolos e aplicações para redes de sensores.
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Introdução a Simulação de redes Sensores sem fio com Castalia
1. Simulação de Redes Sensores com
OMNET++ e Castalia
Principais conceitos teóricos e aplicações
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)
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).
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. 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. 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.
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. 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. 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. 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. 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. 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. 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.
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. 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. 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. 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. 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. 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. ● Mensagem enviada entre submódulos (Setas Cheias)
Castalia - Estrutura do nó sensor
25. ● Chamadas de função (Setas Tracejadas)
Castalia - Estrutura do nó sensor
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. ● 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. ● 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. 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. Castalia - Instalação (Comandos
terminal)
● $ cd castalia (busca da pasta descompactada)
● $ ./makemake
● $ make
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. 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. 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. 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. 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. ● O comando -c permite selecionar qual das configurações
dentro do arquivo do Castalia será executada.
Executando a Simulação - radioTest
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. ● 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
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. 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. 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. 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. 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. 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. 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. 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. 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. ● 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. 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. 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. 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. 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. 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. 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. 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.
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. 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)