基于TOSSIM无线传感器网络仿真研究

(整期优先)网络出版时间:2010-06-16
/ 3

基于TOSSIM无线传感器网络仿真研究

朱有忠

朱有忠(吉林省统计局吉林吉林132000)

中图分类号:TP393.0文献标识码:A

摘要:本文使用TOSSIM实现TinyOS程序的模拟仿真。在分析完TOSSIM的编译器、基本结构、事件处理机制后,对TOSSIM的使用也做了详细的描述。最后,分析了TinyViz——TOSSIM的可视化工具的基本组成以及TinyViz的插件结构。

关键词:无线传感器网络,TinyOS,nesC,TOSSIM,仿真

一、前言

无线传感器网络(WSN)日新月异,各种网络方案和协议日趋复杂,网络规模日趋庞大,对网络研究人员而言,掌握网络仿真的重要性是不言而喻的。WSN仿真能够在一个可控制的环境里研究WSN应用,包括操作系统和网络协议栈,能够仿真数量众多的节点,能够观察由不可预测的干扰和噪声引起的难以琢磨的节点间的相互作用,获取节点间详细的细节,从而提高节点投放后的网络成功率,减少投放后的网络维护工作。

在传感器网络的实际运用中,常常会涉及到很多节点,同时这些节点间的布局会比较复杂,而各个节点都有其相应的算法和数据处理,处理这么多节点的工作量让人都感到畏惧,并且节点在运行过程中可能会遇到许多潜在的错误。为了能让无线传感器节点更好的工作,提前发现其在运行时的内部错误,使得仿真器的出现很具有现实意义。

TinyOS的基于组件的模型让我们容易的改变小部分底层的组件来实现硬件平台模拟。这种事件驱动的执行模式可以开发成一种非常有效的基于事件驱动的模拟器,然后整个程序的编译过程可以使用是在模拟器的存储和本地指定集来实现了。因为大多数节点的资源都是非常小的,我们可以在模拟器的内存空间上模拟许多节点。设置适当的模拟层可以准确的捕获TinyOS程序的行为和他们之间所发生的联系。但大多模拟器存在扩展性与有效性的问题,这里我们就用TOSSIM来解决这些问题。[1~2]

(一)TOSSIM

1.TOSSIM简介。TOSSIM(TinyOSSimulator)是TinyOS传感器网络的离散事件模拟器,也是用nesC语言编写的。理论上它可以模拟复杂度为O(n?㏒(n))的节点,但是实验的结果表明其最多只能模拟1000个节点。TOSSIM可以直接从TinyOS的程序代码中编译执行。当用户想使用TinyOS的程序时,可以直接把TinyOS的组件图编译进TOSSIM中,接着就可以在PC机上运行了。(编译时只需要改变make目标:使用makepc代替makemica等)。

目前大多数的网络模拟器都适合TinyOS。传统的网络模拟器通常把注意力放在模拟大范围的网络连接协议上,例如:ns-2在数据包程度上模拟传感器网络的,它记录了详细的节点信息和具体的连接描述。相反,在TOSSIM中的节点都运行相同的程序代码。TOSSIM是在位粒度(bitgranularity)上模拟网络的行为,这种层次的模拟对于研究TinyOS在数据链路层的行为很有帮助。[3]

2.TOSSIM的编译器。为了能直接把TinyOS的组件图编译后的结果放入TOSSIM模拟器中执行,TOSSIM对ncc(nesC的编译器)进行一下修改。在TinyOS的内存模块中,许多组件框架组成了整个程序。在TOSSIM中,使用组件数组来代替原来的那些组件。所有组件的变量都参照当前运行的组件的变量数组。

TOSSIM提供了新的物理抽象层,在替换了TinyOS的硬件部分后,TOSSIM可以直接编译TinyOS的程序代码。它把TinyOS的硬件中断模拟成离散的事件,当有TinyOS中有硬件中断发生时,TOSSIM事件队列就将此中断转变成TOSSIM内部的模拟事件来处理。中断后的其它执行与TinyOS中的源程序是一样执行的。

TOSSIM中的通信服务可以让程序通过TCP的套接字与TOSSIM进行连接,来观察模拟器的运行。程序还可以收到更高层的信息,例如数据包的接收与传送或者是应用层的事件。

4.TOSSIM的事件处理模式。在TOSSIM的核心处有个模拟器事件队列。中断被模拟成模拟器事件,模拟器事件是不同于TinyOS的事件。一个模拟器事件在硬件抽象组件中可以调用中断句柄,中断句柄唤醒TinyOS事件并且调用TinyOS命令。这些TinyOS事件和命令还可以发送任务,然后唤醒更多的模拟器事件,使程序向前执行。

让我们看一下TOSSIM中是怎么具体执行这些事件的!

TOSH_run_task一直查询直到任务队列为空为止,当任务队列为空时,CPU进入休眠状态。当发生中断时节点被唤醒,如果中断造成任务调度,则任务就开始运行,当任务在运行时,中断才会被处理。否则就不去处理该中断。

当执行完模拟器事件后,TOSSIM开始调度在TinyOS任务队列中的事件,也是使用TinyOS的FIFO(先进先出)的调度机制。但是TOSSIM处理任务有一点不同:TOSSIM中的中断不会抢占任务的执行[4]。

二、TinyViz

TinyViz不是真正意义上的可视化工具,实际上它只是一些提供所需要功能函数的插件组成的一个整体。TinyViz做的工作只是画出节点和节点上的提示灯,把插件处理后的结果表现在可视化窗口中,其实真正起到做用的是那些插件。TinyViz的核心其实就是处理TOSSIM中的事件和命令接口。用户使用插件来与仿真事件进行联系。

在TinyViz的中心部分有个简单的事件总线;所有模拟的消息在TinyViz中都被当成事件,并且每个插件都能收到此事件。例如,当在TOSSIM中的节点要传送数据包时,模拟器就给TinyViz发送有数据包准备发送的消息,接着TinyViz就把这个消息事件广播到它的事件总线上去。一个网络方面的插件可以听取到事件总线上的数据包的发送事件,接着它会更新TinyViz上的节点,并把通信的过程以动画的形式表现出来。一个插件可以听到事件总线上的任一事件,但是不是对这个事件进行相应,那要取决于该插件本身了。这样做可以简化对总线事件的处理,减少了系统的开销。

其中register是实现插件与事件总线的连接,而deregister中把插件从事件总线上卸载下来。draw方法是用来在TinyViz的左窗口中画出可视化过程的函数。handleEvent则是事件处理方法,不同的插件根据从事件总线处接收到的消息调用此函数。

三、模拟器运行结果

通过在程序的目录下打makepc编译生成TOSSIM在PC上的执行文件main.exe。TOSSIM编译生成的main.exe文件,在build/pc的目录下。

TinyViz的运行主界面示:TinyViz大致上可以分为三个部分:最顶上的菜单栏,左边的显示窗口和右边的插件窗口。左边的窗口中显示的是模拟的拓扑结构和使用相应插件所运行的结果;右边窗口是一些TinyViz所提供的默认的插件,每个插件在TinyViz中显示的都是一个面板,在面板上有各自对程序的控制组件。菜单栏则是进行一系列控制功能组合。此TinyOS程序在模拟器中,运行的结果图,是在RadioLinks插件的帮助下得到的图形。左边面板中显示的是结点间的通信路径图,右边面板中显示的是每个结点的Debug信息。

四、总结

TOSSIM是TinyOS自带的模拟仿真器,它将TinyOS环境下的NesC代码直接编译为可在PC环境下运行的可执行文件,提供了不用将程序下载的真实的Mote节点上就可以对程序进行测试的一个平台。并且在位粒度上模拟了TinyOS程序,能够很好的观察出TinyOS程序在网络中的行为,并能发现一些潜在的错误。

参考文献:

[1]PhilipLevis,NelsonLee,MattWelsh,DavidCuller;

TOSSIM:AccurateandScalableSimulationofEntireTinyOSApplications[M].ACMConferenceonEmbeddedNetworkedSensorsystems(SenSys2003)August23,2003:126-137;

[2]李丽娜,石高涛,廖明宏,.传感器网络操作系统TinyOS关键技术分析[J].哈尔滨商业大学学报(自然科学版),2005,(06):724-728;

LILi2na,SHIGao2tao,LIAOMing2hong;

AnalysisofkeytechniquesforTinyOSinsensornetwork[J].JournalofHarbinUniversityofCommerce(NaturalSciencesEdition),2005,(06):724-728;

[3]PhilipLevisandNelsonLee;

TOSSIM:ASimulatorforTinyOSNetworks[M]。September17,2003:10-14;

[4]ASCALABLESIMULATORFORTINYOSAPPLICATIONS[M]Proceedingsofthe2002WinterSimulationConference.LuizFelipePerrone;

DavidM.Nicol.March112006:1-9;

[5]PhilipLevis.TinyOSProgramming.[M],June28,2006:21;

[6]DavidGay,PhilipLevis,DavidCuller,EricBrewernesC1.1LanguageReferenceManual[M].,2003:3-10

[7]PhilipLevis,NelsonLee,DennisChiandDavidCullerTOSSIM:VisualizingtheRealWorldUCBerkeleyNESTRetreat,January2003;

[8]李晶,王福豹,段渭军.无线传感器网络中TinyOS的研究[J].计算机测量与控制,2006,(06):838-840

LiJing,WangFubao,DuanWeijun;

ResearchofTinyOSinWirelessSensorNetworks[J];

ComputerMeasurement&Control,2006,(06):838-840;

[9]周欣欣.蚁群算法在无线传感器网络中的应用研究[D].长春:吉林大学计算机科学与技术学院,2006。

Xinxinzhou.ACAandItsApplicationResearchonWirelessSensorNetwork[D].Changchun:CollegeofComputerScienceandtechnology,JilinUniversity,2006。