基于OMNeT++的无线传感器网络通信协议仿真
2015-01-03高承志范贤学
高承志 范贤学
基于OMNeT++的无线传感器网络通信协议仿真
高承志 范贤学
(中国电子科技集团公司第二十八研究所)
采用OMNeT++软件构建了基于ZigBee/IEEE 802.15.4标准的无线传感器网络通信协议仿真模型,并仿真验证了关键参数(从设备的数量、BO和SO的取值、是否关闭GTS模式下的ACK等)对平均端到端时延和平均丢帧率的影响。
OMNeT++;无线传感器网络;通信协议;ZigBee;IEEE 802.15.4
0 引言
随着电子信息和无线通信技术的飞速发展,无线传感器网络(wireless sensor networks,WSN)应用前景越来越广阔,在许多重要领域都有着潜在的使用价值[1]。通信协议负责维护节点的互联、实现信息传输,是无线传感器网络正常工作的关键性技术[2]。OMNeT++是面向对象的离散事件仿真工具,具有强大的图形用户界面接口和嵌入式仿真内核,可以用来仿真任何离散事件的系统,能够建立目前几乎所有网络对象的基本模型之间的互联,并且使复杂的网络通信和拓扑结构得到简单而正确的仿真[3]。本文基于OMNeT++构建了无线传感器网络通信协议仿真模型,并对关键指标进行分析。
1 通信协议仿真模型建立
ZigBee技术是一种新兴的低成本的用于无线传感器网络的通信协议,能最大限度地节省网络中的能量,可随时连接大量节点,具有较好的容错性和鲁棒性,已逐渐成为无线传感器网络的首选通信协议。ZigBee协议的结构主要由物理层(port physical layer,PHY)、媒体接入控制层(media access control,MAC)、网络层和应用层组成。其中PHY和MAC层均采用IEEE 802.15.4标准,而网络层和应用层的标准由ZigBee联盟制定,各层之间均有数据服务接口和管理实体接口。
本文仿真过程中采用的软件为OMNeT++ 4.6,建立的网络模型基于Inetmanet Framework中的WPAN星状网络来实现。该模型较全面地实现了IEEE 802.15.4 MAC和PHY,并可方便地扩展为基于ZigBee技术的无线传感器网络,在当前的无线传感器网络协议栈仿真研究中被广泛采用[4]。典型仿真运行场景如图1所示。
图1典型仿真运行场景
网络模型采用IEEE802154StarNet,其中host[0]为网络协调器(中心节点),host[1]至host[10]为从设备(传感器节点)。信道控制模块负责节点间连接的控制和维护,并获取节点的位置和移动信息,来确定哪些节点在通信范围内,供节点的无线接口在传输中使用。节点模型如图2所示。
节点模型(IEEE802154Node)中各模块的主要功能如下:
1) 通告版(notificationBoard)模块,通告版模块的主要功能是当有“事件”发生时,通知节点各模块,如路由表发生变化、接口状态变化(上/下)、接口配置变化、无线切换、改变无线信道和移动节点位置的变化等;
图2 节点模型
2) 移动(mobility)模块,主要功能是处理节点的移动并将节点的位置改变信息通知信道控制模块,更新该节点相关的连接信息;
3) 显示(disp)模块,主要负责计算各节点的通信覆盖范围,并在运行时显示;
4) 电池(battery)模块,可以根据记录的工作状态时间、无线电功率等数值即时测量各个节点的能耗;
5) 应用(app)模块,既可以用于模拟数据信息的产生,也可以用于收集并分析接收到的数据信息,支持多种产生数据的方式,如指数分布等;
6) 网络(net)模块,主要完成星状网络中的数据包收发功能,包括中心节点到传感器节点以及传感器节点到中心节点的数据传送;
7) 接口(nic)模块,又分为3个子模块,如图3所示。其中ifq模块主要实现上层和MAC层之间的缓冲区功能;MAC模块主要实现信道访问管理、信标机制和协调器管理;PHY模块实现了无线收发器的常见功能,如收发器状态转换、空闲信道评估等。
图3 Nic模块
2 仿真参数设置及评价指标
网络和节点模型建立完成后,需要进行仿真参数的设置。OMNeT++中仿真参数可以在omnetpp.ini文件中设置,本仿真实验设置的主要参数如下:
#网络模型设置**.numHosts = 16 //节点数为16个,包含1个协调器和15个从设备**.constraintAreaMaxX = 300m //仿真场景大小设置为300 m×300 m**.constraintAreaMaxY = 300m#应用模块参数设置**.host[0].app.isSink = true //设置节点0为流量汇点,收集并分析数据信息**.host[*].app.isSink = false**.app.packetSize = 50B //应用层包的大小**.app.interDepartureTime = exponential(1s) //采用指数传输类型**.host[*].app.trafDest = "host[0]" //目的地址为节点0#网络模块参数设置**.host[0].net.isPANCoor = true //在网络层设置节点0为协调器**.host[*].net.isPANCoor = false#ifq模块参数设置**.nic.ifqType = "DropTailQueue" //配置采用的ifq模块类型**.ifq.frameCapacity = 1 //缓冲区容量#MAC模块参数设置**.host[0].**.mac.isPANCoor = true //在MAC层设置节点0为协调器**.host[*].**.mac.isPANCoor = false**.mac.panCoorName = "host[0]"**.mac.BO = 8 //在[1,14]范围内选取BO值**.mac.SO = 7 //在[0, BO)范围内选取SO值# GTS设置**.host[*].**.mac.ack4Gts = true //需要确认帧**.host[*].**.mac.gtsPayload = 10 //GTS负载大小**.host[*].**.mac.dataTransMode = 1 //传输模式1:direct; 2:indirect; 3: GTS#PHY模块参数设置**.phy.channelNumber = 11 //信道数11个,默认采用2.4GHz频段的信道**.phy.transmitterPower = 1.0mW //发射功率**.phy.sensitivity = -90dBm //灵敏度设置
在本实验中,用来评估仿真结果的主要指标包括:
1) 平均端到端时延(mean end-to-end delay,meanE2EDelay),其统计的是从设备成功发送数据包给协调器的平均时延,具体计算方法为
平均端到端时延 = 协调器接收数据包的总时延÷协调器收到的数据包总数
2) 平均丢帧率(meanLossRate),是通过PHY模块每50个包的丢帧率平均计算得来。丢帧有2种可能,一是碰撞,二是正在执行CCA。PHY模块每50个包的丢帧率计算方法为
丢帧率 = 丢弃的帧数量÷(成功接收的帧数量+丢弃的帧数量)
3 仿真结果及分析
本文共进行了3个仿真试验,仿真一验证了从设备数量的影响;仿真二验证了BO和SO取值的影响;仿真三验证了GTS模式下是否需要ACK的影响。
3.1验证从设备数量的影响
分别将从设备的数量设置为3个和15个(即numHosts设为4、16),来测试星型网络内从设备数量的增加对平均端到端时延和平均丢帧率2个指标的影响。图4是不同从设备数量情况下平均端到端时延的仿真结果;图5是平均丢帧率的仿真结果。
从仿真结果可以看出,从设备数量从3增大到15后,平均端到端时延并没有十分明显的变化,而平均丢帧率却从不到0.03增大到了0.08以上。因此,从设备数量的增加带来了明显的平均丢帧率的增加。
(a)从设备数量为3
(b)从设备数量为15
图4不同从设备数量情况下平均端到端时延比较
图5(a)从设备数量为3
(b) 从设备数量为15
图5不同从设备数量情况下平均丢帧率比较
3.2验证BO和SO值的影响
IEEE 802.15.4网络中,有信标模式和非信标模式2种通信模式可供选择。在信标模式中,协议引入超帧的概念,实现协调器和从设备之间的同步,超帧的活动部分分为信标、竞争访问周期(contention access period,CAP)和非竞争周期(contention free period,CFP)3个部分。信标指数(beacon order,BO)决定了发送信标帧的周期,超帧指数(superframe order,SO)决定了一个超帧中活动部分持续的时间,且满足0<=SO<=BO<=14。
从设备的数量设置为15个(即numHosts设为16),BO的取值由8改为4,SO的取值由7改为3,其他参数保持omnetpp.ini文件中的设置不变,测试星型网络内BO和SO取值的减小对平均端到端时延和平均丢帧率2个指标的影响。图6是不同BO和SO取值情况下平均端到端时延的仿真结果;图7是平均丢帧率的仿真结果。
从仿真结果可以看出,当BO和SO的取值变小之后,平均端到端时延从0.5 s多下降到了0.05 s左右,而平均丢帧率也从0.08以上减小到了不足0.04。因此,减小BO和SO的取值可以显著降低平均端到端时延和平均丢帧率。
3.3验证GTS模式下是否需要ACK的影响
GTS机制是在超帧的非竞争周期(CFP)阶段所采用的信道管理机制,节点申请到GTS服务后,在CFP阶段无需进行信道竞争就可以进行通信。
(a) BO=8,SO=7
(b) BO=4,SO=3
图6不同BO和SO取值情况下平均端到端时延比较
该仿真需要在omnetpp.ini文件中更改的主要设置如下:
**.numHosts = 3 //1个协调器,2个从设备**.host[0].app.isSink =false //应用模块不需设置sink节点**.host[1].app.trafDest="host[0]" //host[1]的应用数据发给host[0]**.host[0].app.trafDest = "host[2]" //host[0]的应用数据发给host[2]**.mac.BO = 5**.mac.SO = 4**.host[*].**.mac.dataTransMode = 3**.host[1].**.mac.isRecvGTS = false // host[1]为GTS数据发送方**.host[2].**.mac.isRecvGTS = true //host[2]为GTS数据接收方
在GTS模式下,本实验的数据传输模式是host[1]通过host[0]转发数据给host[2]。本试验测试对比了需要ACK和不需要ACK情况下的平均端到端时延。仿真结果见图8。
从仿真结果可以看出,关闭ACK之前,平均端到端时延超过了1.4s;而关闭ACK之后,平均端到端时延仅有不足0.4 s。因此,在假定网络环境一致且不考虑关闭ACK带来的网络丢包、网络重传等问题的条件下,GTS模式下关闭ACK可以显著地降低平均端到端时延。
(a) 需要ACK
(b) 不需ACK
图8需要和不需要ACK情况下meanE2EDelay比较
4 结语
本文采用OMNeT++软件对基于IEEE 802.15.4标准的无线传感器网络通信协议进行了仿真,仿真结果显示:从设备数量的增加会带来明显的平均丢帧率的增加;减小BO和SO的取值可以显著降低平均端到端时延和平均丢帧率;关闭GTS模式下的ACK可以显著地降低平均端到端时延。仿真结果将对不同应用场景下无线传感器网络通信协议的选择及优化改进起到一定的参考作用。
参考文献:
[1] 陈林星.无线传感器网络技术与应用[M].北京:电子工业出版社,2009.
[2] 陆冰.实用无线传感器网络系统设计及通信协议的设计与实现[D].北京:北京邮电大学,2011.
[3] 王俊义,魏延恒,仇洪冰,等.OMNeT++网络仿真[M].西安:西安电子科技大学出版社,2014.
[4] 夏锋.OMNeT++网络仿真[M].北京:清华大学出版社,2013.
Simulation of WSN Communication Protocol Based on OMNeT++
Gao Chengzhi Fan Xianxue
(The 28th Research Institute of China Electronics Technology Group Corporation)
By using the OMNeT++, this paper builds a simulation model for WSN communication protocol based on ZigBee/IEEE802.15.4 standard, and simulates the mean E2E Delay and mean Loss Rate in different parameter settings including the quantity of slave device, the value of BO and SO, sending the ACK in GTS mode or not.
OMNeT++; WSN; Communication Protocol; ZigBee; IEEE802.15.4
高承志,男,1980年生,高级工程师,主要研究方向:通信工程和信息系统总体技术。E-mail: cgaochengzhi@163.com
范贤学,男,1985年生,工程师,主要研究方向:通信工程和信息系统总体技术。