为评价无线传感器网络协议算法的性能,仅通过实验是无法实现的,特别是 包含大量节点的大规模无线传感器网络,更是很难通过实验来实现 ( 实际上,上 百个节点的实验己经比较难以管理与实现 ) 。
为了实现无线传感器网络的仿真,研究人员设计开发 ( 或在现有平台建立无 线传感器网络模型 ) 了许多的仿真平台,包括 NS-2, OPNET, SensorSim, EmStar, OMNet, G1oMoSim, TOSSIM, PowerTOSSIM 等。
NS-2
NS-2 (Network Simulator-2) 是著名的用于网络研究的离散事件仿真工具,里面包括了大量的用于在有线或无线、本地连接或通过卫星连接进行 TCP 协议、路由算法、多播协议仿真的网络协议、调度器和工具。 NS-2 主要致力于 OSI 模型的仿真,包括物理层的行为。 NS-2 可以对仿真进行详细的跟踪并用仿真工具“网络动画播放器” C Network Animator } NAM) 进行回放。 NS-2 是开放源码的自由软件,可以免费下载 。有一些研究小组对 NS-2 进行了扩展,使它能支持无线传感器网络的仿真,包括传感器模型、电池模型、小型的协议栈、混合仿真的支持和场景工具等 。由于 NS-2 对数据包级进行非常详细的仿真,接近于运行时的数据包数量,使得其无法进行大规模网络的仿真 。
OPNET
OPNET 建模工具是商业化的通信网络仿真平台。 OPNET 采用网络、节点和过程三层模型实现对网络行为的仿真。其无线模型是采用基于流水线的体系结构来确定节点间的连接和传播,用户可指定频率、带宽、功率和包括天线增益模式和地形模型在内的其它特征。 OPNET 提供了很多的模型,包括 TCP/IP, 802.1 I , 3G 等。并已有一些研究人员在 OPNET 上实现对 TinyOS 的 NesC 程序的仿真 . 但要实现无线传感器网络的仿真,还需要添加能量模型,而 OPNET 本身似乎更注重于网络 QoS 的性能评价。
SensorSim
SensorSim 是建立在 NS-2 的一个采用 DSR 的 802.11 网络模型上的。 SensorSim 是用于 WINS 平台的,需要用 SensorWare Tel 脚本进行设计。 SensorSim 在仿真时跟踪了节点的能量使用情况,其能量模型来自 WINS 节点,使得其无法用于 Mote 平台的仿真。另外, SensorSim 已经停止开发和支持,也无法下载到程序代码。
EmStar
EmStar 提供了在仿真和基于 iPAQ 的运行 Liunx 的节点之间灵活切换的环境,用户可以选择在一个主机上运行多个虚拟节点进行仿真,也可以在一个主机上运行多个与真实的节点进行桥接的虚拟节点。 EmSta: 可以将无线传感器网络部署在一个友好的基于 Linux 的环境 中,并进行跟踪和调试程序。 EmTOS 是用于在 EmStar 中进行 TinyOS 程序仿真的工具。 EmStar 虽然不是一个真正意义上的无线传感器网络仿真工具,但却是一个很有用的用于对传感器网络的应用程序进行测试的环境。
OMNeT++
OMNeT++ ( Objective Modular Network Testbed in C++) 是一个面向对象的模块化离散事件仿真工具。和 NS-2 一样,主要面向 OSI 模型,可以执行上千个节点的仿真。 OMNeT++ 提供了图形化的网络编辑器和网络、数据流查看工具。仿真环境采用 C++ 语言开发,并采用自定义的配置语言“ NED ”进行配置定义。 OMNeT++ 的主要目标是提供可灵活配置仿真的组件体系。组件采用 C++ 编程,并通过 NED 配置成更大的组件。 OMNeT++ 在仿真 802.11 的 MAC 和 Directed Diffusion 协议时,比 NS-2 要快一个数量级 。
GloMoSim
GloMoSim (Global Mobile Information Systems Simulation Library ) 是一个可扩展的用于无线和有线网络的仿真系统,根据 OSI 进行分层的建模设计。应用层、传输层、网络层、数据链路层、数据包接收模型、无线电模型和无线电波传播模型等不同的层次之间采用标准的 APIs 进行仿真。 GIoMoSim 采用 Parsec 进行设计开发,提供了对并行离散时间仿真的支持。 G1oMoSim 目前仅支持纯无线网络的协议仿真,可用于仿真传感器网络中的物理信道特征和数据链路协议的时延等特性。
TOSSIM
TOSSIM (TinyOS mote simulator) 是用于对采用 TinyOS 的 Motes 进行 bit 级的仿真的工具。 TOSSIM 将 TinyOS 环境下的 NesC 代码直接编译为可在 PC 环境下运行的可执行文件,提供了不用将程序下载的真实的 Mote 节点上就可以对程序进行测试的一个平台。 TOSSIM 还提供了用于显示仿真情况的用户界面 TinyViz. TOSSIM 的缺点是没有提供能量模型,无法对能耗有效性进行评价。
PowerTOSSIM
PowerTOSSIM 是对 TOSSIM 的扩展,采用实测的 MICA2 节点的能耗模型对节点的各种操作所消耗的能量进行跟踪,从而实现无线传感器网络的能耗性能评价。 PowerTOSSIM 的缺点是,所有节点的程序代码必须是相同的,而且无法实现网络级的抽象算法的仿真。
OMNeT++ 仿真 WSN 相关开放源码网站
Mobility Framework for OMNeT++
http://mobility-fw.sourceforge.net/hp/index.html
EYES WSN Simulation Framework
http://wwwes.cs.utwente.nl/ewsnsim/download/
NesCT: A language translator (使用NesC基于TinyOS平台开发, 然后使用omnet来模拟,提供界面支持)
http://www.omnetpp.org/pmwiki/index.php?n=Main.NesCT wiki
一般来说,仿真是一种科学实验方法。通常情况下,你有了一些想法,为了证明这种想法,就建立一个模型来仿真,对于得到的仿真结果进行分析,如果和你的想法结果一致,就等于是一种证明方法,如果和你的想法不一致,排除仿真实验错误的情况后,可能也可以帮助你修正你的想法。
总得说了,如果你对于仿真,从概念上比较生疏,建议你参考清华大学出版的 modeling simulation and analysis 英文影印教材。然后就是选择仿真工具。
OMNet ++相对于其它工具,入门非常简单,并且也有相应的支持 WSN 仿真的开源项目,所以很适合。
协议的性能评价方法
在计算机网络的理论研究中,设计一个新型的网络协议,需要对该协议的性能进行合理的评价。可以进行这种评价的方法大致有以下三种:
数学分析的方法。这一种方法有数学理论基础的支持,因此可以得出精确而合理的结果。但是另一方面,进行数学分析前需要首先建立一个合理的数学 模型来对网络状况进行合理的描述。而这种模型的建立,往往又是无法全面兼顾各种情况的。因此,对网络协议的数学分析之余,需要还有具体的实践来证实这样的 分析的有效性。
网络模拟器。这是一种将一些网络环境量化后,通过计算机来进行模拟的方法。实践证明这种方法是行之有效的,因为它可以利用软件模拟硬件环境,节省了开销,也节省了网络协议性能评价的代价。 GloMoSim[1][2][3] 就是现在比较流行的模拟器之一,其他比较著名的网络性能模拟器还有: NS2 ( Network Simulator Version 2 )、 OPNET (事实上是 NS2 的商业版)、 QualNet ( GloMoSim 的商业版)。
试验台( Test bed )。这种方式就是把需要的试验做到硬件上,利用现实的环境,进行确实的测验。这种方式一般在网络模拟器性能估价比较完备的基础上进行。当然,现在有很多设备都支持对该设备进行编程(比如可以将软件在 Palm 上运行),现在利用这种方式进行实验的代价也已经大大降低。
对于大多数网络理论的研究者来说,除了从数学分析上对所做的协议进行评估以外,使用网络模拟器是一种快速而有效的方法。
在现有的网络模拟器中, OPNET 和 QualNet 是商业软件。 NS2 加上 CMU 模块,也可以支持 ad hoc 网络环境。 GloMoSim 对大型可扩展的无线网络支持的比 NS2/CMU 好。在 ad hoc 网络研究方面,很多的研究模拟都是基于 GloMoSim 的。
在使用网络模拟器的过程中,我们往往需要对模拟器进行添加和修改,以满足我们的试验要求。如果能对模拟器的结构和实现机制深入了解,实验的过程也会事半功倍。
References
http://www.idsia.ch/~andrea/simtools.html
仿真, 建模工具集合
官方网站
Applying image processing techniques to simulate a self organized sensor network for tracking objects
http://www.citeulike.org/user/rafamayo/article/1005959
Simulating Wireless Sensor Networks with OMNeT++
http://wwwes.cs.utwente.nl/ewsnsim/download/
EYES WSN Simulation Framework
http://ctieware.eng.monash.edu.au/twiki/bin/view/Simulation/OMNeTppComparison?rev=1.5
OMNeT++ vs. NS-2