A disponibilidade de simuladores voltados para o estudo das Redes de Sensores Sem Fio vem crescendo desde o final da década de 90, a partir da inclusão de módulos específicos para WSN no simulador ns-2 [NS_97]. A escolha de um simulador adequado para uma determina análise em WSN não é tarefa simples, uma vez que cada grupo de pesquisa possui um foco diferente e a divergência de recursos encontrados nos simuladores muitas vezes não contempla todas as necessidades envolvidas no projeto.
A Tabela 3.2 apresenta em ordem alfabética as 17 ferramentas de simulação e emulação mais utilizadas no estudo das Redes de Sensores Sem Fio. Foram selecionadas as que apareceram mais vezes na literatura pesquisada, sendo que a maioria já foi alvo de investigação com relação à sua eficiência e suas deficiências.
Nem todos os simuladores presentes na Tabela 3.2 são dedicados às Redes de Sensores Sem Fio, mas são utilizados em estudos focados em determinadas particularidades das WSN. Muitas vezes o conhecimento e a familiaridade de um grupo de pesquisa na utilização de determinada ferramenta de simulação de redes (ou redes de sensores) pode gerar
resultados tão bons ou até superiores aos conseguidos com a utilização de ferramentas específicas para simulação de Redes de Sensores Sem Fio ainda em desenvolvimento e não totalmente validadas.
Tabela 3.2 – Ferramentas de Simulação e Emulação utilizadas para WSN
Ferramenta Tipo Linguagem Repositório na Internet
ATEMU [POL04] Emulador (Mica2) C http://www.hynet.umd.edu/research/atemu/ Avrora [TIT05] Simulador
para WSN Java http://compilers.cs.ucla.edu/avrora/
Castalia [BOU07] Simulador para WSN C++ http://castalia.research.nicta.com.au/index.php/en/ Cooja [SEH13] Simulador do Contiki C http://www.contiki-os.org/start.html Emstar [GIR07] Emulador
(Mica2) C http://static.usenix.org/event/usenix04/tech/general/ full_papers/girod/girod_html/eu.html
GloMoSim [ZEN98] Simulador de redes C http://pcl.cs.ucla.edu/projects/glomosim/ GTSNetS [OUL05] Simulador para WSN C++ http://www.ece.gatech.edu/research/labs/MANIACS/GTNetS/ J-Sim [SOB06] Simulador
de redes Java https://sites.google.com/site/jsimofficial/
MiXiM [KÖP08] Simulador de redes C++ http://mixim.sourceforge.net/ ns-2 / ns-3 [NS_97] / [NS_05] Simulador
de redes C++ http://www.isi.edu/nsnam/ns/ http://www.nsnam.org/
OMNeT++ [WAN05] Simulador de redes C++ http://www.omnetpp.org/ OPNET [OPN12] Simulador
de redes C / C++ / Java http://www.opnet.com/solutions/network_rd/modeler.html
QualNet [QUA01] Simulador de redes C http://web.scalable-networks.com/content/qualnet SENS [SAM04] Simulador para WSN C++ http://osl.cs.uiuc.edu/sens/ SENSE [CHE04] Simulador para WSN C++ http://www.ita.cs.rpi.edu/ SensorSim [PAR00] Simulador de redes C http://nesl.ee.ucla.edu/projects/sensorsim/ TOSSIM [LEV03] Emulador
Capítulo 3 Simuladores de Rede de Sensores Sem Fio Além dos simuladores e emuladores listados, outros merecem ser citados, mas com menor destaque devido a pouca utilização em pesquisas. O JSensor [RIB12], MATSNL [JUN07], Shawn [KRO05], Sidh [CAR05], VisualSense [BAL05] e WSNet [WSN06] são exemplos.
Os itens seguintes apresentam uma breve descrição das principais características das ferramentas de simulação presentes na Tabela 3.2. Não se busca um detalhamento rigoroso de cada ferramenta, tampouco é apresentada uma análise quantitativa de desempenho dos simuladores, uma vez que essa análise ultrapassa o propósito dessa tese. A motivação para o estudo apresentado é identificar as principais características desses simuladores e emuladores de Redes de Sensores Sem Fio, relacionando seus atributos e suas limitações de uso. Quando possível, são identificadas as vantagens e desvantagens na utilização das ferramentas.
A maioria das descrições foi realizada pelo estudo dos artigos de divulgação científica das ferramentas de simulação/emulação, manuais de usuário e sítios da Internet nos quais há a disponibilização das ferramentas e fóruns de discussão. A exceção está nos simuladores ns-2, J-Sim e QualNet (versão demonstrativa), nos quais foram realizadas suas instalações e executadas simulações.
Os estudos comparativos entre as ferramentas de simulação e emulação de Redes de Sensores Sem Fio apresentados em [IMR10], [JAI11], [KHA11], [CAV02] e [LHA12] foram de fundamental importância na elaboração dessa súmula apresentada a seguir.
3.2.1 – The Network Simulator (ns-2/ns-3) e SensorSim
O simulador ns-2 [NS_97] foi desenvolvido em 1997 a partir da sua versão preliminar (ns-1) na Universidade de Berkeley (EUA). Possuindo um núcleo de simulação do tipo event driven (vide Capítulo 4) e sendo desenvolvido na linguagem C++, é um simulador de redes de propósito geral, voltado tanto para o estudo de redes com fio como para redes sem fio. É o simulador de redes mais utilizado em pesquisas acadêmicas por disponibilizar uma grande quantidade de protocolos em todas as camadas de rede.
Segundo [JAI11], a dificuldade para se iniciar a utilização do ns-2 é a necessidade de aprendizado da linguagem TCL (Tool Command Language), linguagem de difícil entendimento e escrita. A dupla necessidade do conhecimento de TCL e C++ pode desencorajar o seu aprendizado e utilização [CAV02]. Além disso, a interface gráfica do ns-2 é limitada e a visualização da simulação só pode ser feita após a execução total da mesma.
modelos de energia e de bateria, além de permitir a mobilidade dos nós. Contudo, o grande problema é a escalabilidade, pois redes com mais de 100 nós podem encontrar dificuldade de serem simuladas [JAI11][KHA11][KOR09]. Possivelmente esta limitação está relacionada à elevada utilização de memória pelo ns-2 [CAV02].
O fato das WSN apresentarem uma aplicação diretamente associada ao processo de comunicação também representa uma dificuldade para sua inclusão no modelo de simulação do ns-2, uma vez que o foco do simulador está nas camadas de rede e não no comportamento da rede diante a sua aplicação.
A contabilização da energia utilizada nos nós no ns-2 também é limitada aos procedimentos de envio e recebimento de mensagens, desprezando o gasto energético relacionado ao processamento e sensoriamento, fundamentais para determinação do tempo de vida das WSN [LHA12]. O ns-3 [NS_05] corrige esse problema, criando duas entidades relacionadas à energia no nó: uma relacionada à comunicação e a outra ao consumo do dispositivo eletrônico do nó.
Apesar do ns-2 e ns-3 apresentarem uma boa extensibilidade com relação à adição de novos protocolos e módulos, o fato da sua programação ser aberta permite a incorporação de código com problemas de travamento e muitas vezes não otimizados.
O simulador SensorSim [PAR00] foi desenvolvido tendo como base o ns-2, mas direcionando seu enfoque para redes de sensores, sejam elas com ou sem fio. Um modelo de consumo de energia mais adequado ao estudo das WSN foi incluído no SensorSim, sendo uma entidade central responsável por contabilizar separadamente a energia utilizada pelo rádio, CPU e pelos sensores presentes nos nós.
O SensorSim é um simulador considerado híbrido, isto é, permite o estabelecimento de comunicação dos nós simulados com nós de uma rede real. A viabilidade desse tipo de simulação é questionável, uma vez que o mecanismo de sincronização da rede virtual com a rede real pode provocar, em muitos casos, problemas na interpretação dos resultados.
3.2.2 – SENSE
O SENSE (Sensor Network Simulator and Emulator – Simulador e Emulador de Redes de Sensores) [CHE04] foi desenvolvido tendo como foco a extensibilidade, a reusabilidade e a escalabilidade [IMR10][KHA11].
O simulador SENSE foi desenvolvido em C++ tendo como base o simulador event driven de propósito geral COST [GIL02]. A arquitetura interna do simulador não está baseada no conceito de orientação à objetos, mas em porta-componente (componente-port) que permite
Capítulo 3 Simuladores de Rede de Sensores Sem Fio uma maior modularidade e independência entre os componentes3 [KHA11].
A execução da simulação no SENSE pode ser realizada de forma serial ou paralela, sendo essa uma opção determinada pelos usuários do simulador. O resultado da simulação não dispõe de uma interface gráfica dedicada para visualização, fazendo com que o acompanhamento da simulação seja prejudicado e muitas vezes impedindo a detecção de erros.
3.2.3 – J-Sim
O J-Sim [SOB06] é um simulador desenvolvido na linguagem de programação Java. Apesar de a sua utilização estar comumente relacionada a simulações na área médica, o J-Sim também vem sendo empregado em simulações de Redes de Sensores Sem Fio.
A organização da programação orientada à objetos associada à arquitetura do J- Sim permite uma grande reusabilidade do código desenvolvido para este simulador. A biblioteca de classes do J-Sim já possui uma grande quantidade de protocolos para Redes de Sensores Sem Fio e mecanismos para a análise do consumo de energia nos nós sensores. Além disso, possui uma biblioteca de classes responsáveis por gerar uma interface gráfica para o acompanhamento das simulações.
Com relação à escalabilidade, o J-Sim permite a simulação de cerca de 500 nós [JAI11], possibilitada devido à otimização da JVM no uso da memória.
Apesar de todos os benefícios apresentados, [JAI11] salienta que pelo fato do J-Sim não ter sido desenvolvido no contexto das WSN, a inclusão de novos protocolos e componentes ao simulador não é realizada de forma simples.