无线传感器网络模拟器的技术与发展陈海明摘要:无线传感器网络模拟器是无线传感器网络研究中必不可少的支撑软件。
本文以SensorSim、SensorSimulator和J-Sim为例介绍了现有无线传感器模拟器的架构和设计原理,指出了这些模拟器在可支持的最大网络规模方面的问题。
本文重点是介绍中科院计算所无线传感网络实验室所建立的无线传感器网络模拟器EasiSim的设计原理,该模拟器采用了“基于列表的集中式仿真对象组织结构”的设计方法,实现了对模拟器中所有节点的有效管理,减少了事件的数量,提高了系统的执行效率,其“分层体系结构”的设计思想,使其具有很好的可扩展性。
关键词:无线传感器网络;模拟器;网络规模;性能评价无线传感器网络(WSN, Wireless Sensor Networks)是由部署在监测区域内的大量微型智能传感器节点组成,通过这些节点相互协同地采集和处理网络覆盖范围内的环境或感知对象的信息,并通过多跳自组织无线通信方式形成的一类新型网络系统。
随着嵌入式计算、无线通信和分布式信息处理等技术的快速发展,无线传感器网络得到了学术界和工业界的广泛关注,各种网络部署方案和应用系统相继提出,网络功能和协议日趋复杂,网络规模也日趋庞大。
网络模拟是测试和评价网络性能的重要手段之一。
无线传感器网络模拟器(Simulator),也称无线传感器网络模拟平台(Simulation Platform),是指一种能够模拟众多节点在各种配置环境下的协同工作过程,获取有关节点状态的详细信息,评价节点操作系统和网络协议栈服务质量的支撑软件。
按照所模拟的事件粒度的不同,无线传感器网络模拟器可以分为两类,一类是数据包级的模拟器,另一类是指令级的模拟器。
由于后者一般按照特定的无线传感器节点的架构建立,用于直接在PC上运行节点的应用程序,所以又被称为无线传感器网络仿真器(Emulator),如TOSSIM[1]、ATEMU[2]、Avrora[3]和Emstar[4]。
由于仿真器需要逐条运行操作系统或应用程序中指令来完成对某一事件的处理,所以运行速度很低,一般只用于单一节点的代码调试,而很少用于模拟多个节点间的网络级行为。
本文所说的无线传感器模拟器特指数据包级的模拟器。
现有的这类模拟器(如表1所示)大都是在传统的网络模拟器(如ns-2, OMNeT++, J-Sim)的基础上加以扩展而建立的。
表1.几个典型的无线传感器网络模拟器模拟器 研制单位 基础 架构 语言SensorSim[5]美国加州大学洛杉矶分校(UCLA)ns-2 面向对象(Object-orient)C++/OTclSensorSimulator[6] 美国路易斯安那州立大学(LSU) OMNeT++ 面向组件(Component-orient)C++/NEDJ-Sim[7]美国伊利诺伊大学香槟分校(UIUC) JavaSim 面向组件(Component-orient)Java/JaclSENSE[8]美国伦斯勒理工大学(RPI) COST 面向组件(Component-orient)CompC++VisualSense[9]美国加州大学伯克利分校(UCB) Ptolemy II 面向元件(Actor-orient)Java/XML下面首先以SensorSim、SensorSimulator和J-Sim为例介绍现有无线传感器模拟器的架构和组成原理,然后介绍无线传感网络实验室所建立的无线传感器网络模拟器EasiSim的设计原理和创新之处,最后对本领域的发展做一点展望。
1现有的无线传感器网络模拟器1.1SensorSimSensorSim是由美国加州大学洛杉矶分校(UCLA)的派克(Park)等人在ns-2的基础上建立的无线传感器网络模拟器,其模型架构如所示。
可见,在该模拟器中包含以下几类实体的模型:用户节点(User Node):图1.无线传感器网络模拟器SensorSim的模型架构也称汇聚节点(Sink Node),是传感器网络中负责接收信息和发布命令的节点。
它也可以作为无线传感器网络和有线网络之间的网络节点(Gateway),将传感器节点采集到的信息转发到用户终端。
与ns-2中已经存在的无线节点(Wireless Node)的模型相同,用户节点只包含各层网络协议(物理层、介质访问控制(MAC)层、网络层和应用层)的模型。
传感器节点(Sensor Node):是无线传感器网络的主要构成实体,不但需要采集覆盖范围内的感知对象的信息,还要将采集到的信息以多跳自组织的方式发送到用户节点,所以传感器节点含有两个协议栈模型,一个是网络协议栈模型(Network Stack),另一个是感知协议栈模型(Sensor Stack)。
前者用于模拟和其他节点的通信过程,后者用于模拟和感知对象的交互过程。
此外,为了模拟节点的能量消耗过程,还包含一个电池模型(Battery Model)。
目标节点(Target Node):用于模拟传感器网络所检测的对象,如特定地理位置的温湿度、一个运动物体的方位信息等。
它只含有感知协议栈模拟,用于模拟和传感器节点的交互过程。
无线信道(Wireless Channel)和感知信道(Sensor Channel):分别用于模拟无线信号的传播过程和感知信号的散发过程。
通过无线信道和节点中的网络协议栈模型,就可以模拟无线传感器网络的通信过程;同样通过感知信道和感知协议栈模型,就可以模拟无线传感器网络的信息感知和采集过程。
SensorSim继承了ns-2的分裂对象模型的设计原则,使用C++语言实现了以上这些模型,并通过OTcl语言这些模块链接成一个完整的模拟场景。
由于SensorSim定义的模型架构比较全面,目前大多数无线传感器网络模拟器都采用该模型架构。
1.2SensorSimulatorSensorSimulator是由美国路易斯安那州立大学(LSU)的马兰达(Mallanda)等人在OMNeT++的基础上建立的传感器网络模拟器。
它实质上是按照OMNeT++的模块扩展原则,将SensorSim定义的模型架构加以实现。
具体来说,SensorSimulator就是以分层嵌入式的结构将无线传感网络中的实体依次定义为简单组件(Simple Module)、复合组件(Compound Module)和系统组件(System Module)。
其中简单组件包括各层协议栈、节点硬件(类似于SensorSim的电池模块)和坐标模块等;复合组件包括感知目标、感知信道和无线信道等。
SensorSimulator继承了OMNeT++的实现方法,即用C++语言实现以上所说的各种新增简单组件,并用NED(NEtwork Description language) 语言将这些组件链接成所需的复合组件和系统组件。
可见,SensorSimulator与SensorSim的架构和实现方法类似。
1.3J-SimJ-Sim是美国伊利诺伊大学香槟分校(UIUC)的索贝赫(Sobeih)等人在JavaSim的基础上建立的传感器网络模拟器。
它实质上是按照JavaSim的自治组件ACA (Autonomous Component Architecture)的软件架构,在包交换互联INET (packet-switched internetworking)框架下,将SensorSim中定义的各类节点模型和信道模型加以实现。
具体来说,每个节点由一个核心服务层CSL (Core Server Layer)和若干个协议模块组成,CSL和协议模块以服务器/客户端的模式进行连接。
与以上两种模拟器不同的是,JavaSim采用Java语言实现各种协议模型和信道模型,并采用Jacl(与OTcl类似的一种脚本语言)语言实现模型间的连接和场景的定义。
2EasiSim从以上的介绍不难发现,现有的无线传感器网络模拟器大都是在传统的网络模拟器的基础上加以模块扩展而建立的,因此继承了这些传统模拟器在架构和设计原理上的一些问题,一个比较典型的问题就是模拟器可以支持的最大网络规模有限。
由于传统的网络模拟器主要是为有线网络或无线局域网络而建立的,需要考虑的网络中的节点数量较少(几十到几百个),而无线传感器网络一般是以大规模的末端网络的形式存在,其节点数量往往较大(几千到几万个)。
随着节点数量的增多,模拟器中的事件数量会快速上升,从而造成模拟器的运算时间大大增长。
比如在基于“面向对象”的仿真建模思想建立的模拟器中(如ns-2, OMNeT++),都以类和对象的方式定义场景中的每个节点。
虽然这些平台继承了面向对象设计方法在封装性、模块的可重用性等方面的优点,但也因为某个节点在事件处理过程中要想操作其他节点的状态信息都需要产生新的事件和调用相应的方法,增加了运行时的计算开销和内存开销,而且随着网络规模和模拟时间的增大,这种开销会越来越大。
针对该问题,无线传感网络实验室设计并开发了一个能够支持大规模传感器网络的模拟器EasiSim[10]。
该模拟器的核心是采用“基于列表的集中式仿真对象组织结构”的设计思想,将场景中的所有节点组织成一个“多维有序列表”,构成仿真平台中的拓扑结构。
通过该结构可以在任一节点的事件处理过程中快速存取场景中任一其他节点的状态信息,而不再需要产生额外的事件和调用其他的函数或方法,从而提高了系统的执行效率和可达到的网络规模。
错误!未找到引用源。
是分别以事件数、执行时间为指标对基于“面向对象”和基于“列表组织”建立的模拟器的性能比较,验证了EasiSim在执行效率和仿真规模方面的优势。
(a)(b)图2.采用不同方法建立的模拟器的事件数和运行事件的比较无线传感网络实验室将这种节点组织结构与模拟器中的其他核心模块(如仿真时钟、离散事件队列、事件分发器和随机数产生器)采用“分层体系结构”的架构思想集成为一个可运图3.传感器网络仿真器EasiSim核心系统的架构图行的系统(如图3所示)。
在EasiSim 核心系统中,传感器网络中的仿真对象按照自底向上的规则组织成节点、拓扑和场景三种实体,并且通过各层实体所包含的引用指针,将这些实体组织成一个有机的整体。
其中节点是构成传感器网络仿真平台的最基本元素,包含了描述各层协议的状态信息。
在EasiSim中,无线传感网络实验室以OSI1参考模型为基础,建立了一个轻量级的节点协议体系结构[11],并且定义了各层协议之间的统一交互接口,降低了在该仿真平台中扩展其他协议模块的难度,提高了仿真平台的可扩展性。
此外,为实现仿真平台的可视化,又不影响核心系统的运行效率,无线传感网络实验室提出了一种采用“客户/服务器”模式建立仿真平台界面的方法。
在该架构下,仿真器核心模块作为客户端,显示界面作为服务器。