无线传感器网络SMAC协议的研究与改进
扫描二维码
随时随地手机看文章
摘要:介质访问控制(MAC)协议是保证网络高效通信的关键网络协议之一。传感器介质访问控制(SMAC)协议是以节能为目的的MAC协议。介绍了SMAC协议工作原理,针对SMAC协议退避机制的缺陷,借鉴二进制指数退避算法,在SMAC协议的基础上引入了一种具有公平性的退避机制。节点根据接入信道的次数动态调整竞争窗口,退避失败时冻结退避计时器,在下个竞争周期继续计时,增加了节点接入信道的公平性,减小了碰撞,增大了吞吐量和信道利用率。仿真结果表明:改进后的SMAC协议在吞吐量,能量消耗和能量利用率方面相对于SMAC协议有显著的提高,起到了节能的效果。
关键词:无线传感器网络;SMAC协议;竞争窗口;退避算法
0 引言
无线传感器网络(Wireless Sensor Networks,WSNs)目前是一个最新的研究领域,它是由大量的节点组成的面向任务的分布式网络。而作为无线传感器网络协议栈重要基础构架的介质访问控制(Medium Access Control,MAC)协议决定着无线信道的使用方式,负责为网络节点分配无线信道资源,直接影响网络整体性能,成为网络协议研究的重中之重。
因为WSNs技术应用的独特性,SMAC协议以尽可能地节约能量,提高能量效率,从而延长整个网络的生存周期。Wei Ye等在2002年提出了传感器介质访问控制(Sensor MAC,SMAC)协议,SMAC协议同IEEE 802.11相比,具有明显的节能效果,但是由于SMAC协议引入了周期性睡眠方式,节点不一定能及时传递数据,使网络的能量利用率、吞吐量下降。本文通过引入动态自适应网络竞争动态改变竞争窗口大小的思想,在减少MAC协议能量消耗的同时,增加网络的吞吐量,增大了能量利用率。
1 SMAC协议简介
SMAC协议是专门为WSN设计的MAC协议。该协议通过综合运用时间安排协议和竞争协议能够达到良好的可扩展能力和碰撞回避能力,为了实现能量效率,尽量降低能量是SMAC协议的主要目标。
1.1 周期性侦听与休眠
SMAC协议使节点周期性地进入休眠状态,从而缩短侦听时间以减少空闲侦听带来的能量损耗。如图1所示,节点通过选择和维护休眠调度表,使相邻节点组成休眠/唤醒自同步的虚拟簇,从而实现信息传输的同步,并降低控制开销。
1.2 碰撞回避
为了避免碰撞以及解决隐含终端问题,SMAC协议采用虚拟载波侦听和物理载波侦听以及RTS/CTS交互机制。每个所发送的分组中都有一个时间域,用于标明剩余的传输时间。一个节点接收到传递给另一个节点的一个分组后,就能够根据该分组中持续时间域的数值而决定自己需要保持多长时间的静默,并将该值记录到一个叫做网络分配矢量(Network Allocation Vector,NAV)的变量中,然后设置相应的定时器。每当启动定时器时,节点递减其NAV,直到NAV等于零为止。节点在开始发送之前首先检查其NAV:若其NAV不等于零,节点判定媒介忙,叫做虚拟载波侦听。物理载波侦听是在物理层实现的,通过侦听信道确定是否有信息在传输。为了避免碰撞,SMAC协议采用随机的载波侦听时间。如果虚拟载波侦听和物理载波侦听都判定媒介空闲,才判定媒介空闲。
2 SMAC协议改进策略
2.1 SMAC协议随机退避原理
在SMAC协议中,为了减小分组传输发生碰撞而造成的能量损耗,节点在发送数据前要随机退避一段时间。在每个周期的开始,消息队列非空的节点就会从[0,CW-1]中随机选择一个退避数。如果信道空闲,每过一个时隙,退避计数器的值就会减1,当退避计数器的值递减为0时,节点就开始发送数据。此时,没有竞争到信道的节点就会停止退避计数器的计时,转入睡眠状态等到下一个周期的到来继续竞争信道。由于SMAC协议采用的是固定竞争窗口CW,这就不能很好的适应信道的变化,降低了信道的利用率,降低了网络的吞吐量。另外,节点每次竞争信道失败或者在退避过程中发现信道忙时,都会重新计算退避值。这就导致有些节点在经过很长的退避计时后由于信道忙竞争信道失败,而重新计算退避值,等到下一个竞争周期时执行新的退避值。这就使得一些节点低概率接入信道,能量消耗不均匀,并导致网络区域性中断不连通,降低了整个网络的生命周期。
2.2 SMAC协议退避算法改进
为了适应信道状态的动态变化和提高节点访问信道的公平性,本文参考了IEEE 802.11 DCF退避机制,针对SMAC的不足点加以改进。并引进了二进制指数退避BEB(Binary Exponential Backoff)算法,它的主要特征如下:
采用较小的初始化窗口CWMin和较大的最大值窗口CWMax。
当节点每次发送失败时,节点就会将其退避窗口CW加倍直到CWMax。
当节点每次发送成功时,节点就会将其退避窗口CW置为最小竞争窗口CWMin。
由于BEB算法针对节点竞争信道失败采用了竞争窗口倍增的思想,使节点快速摆脱竞争区提高节点接入信道几率。当节点发送分组成功时,就会将竞争窗口CW置为CWMin。这样就会使得上一次竞争信道成功的节点永远具有较小的竞争窗口,其接入信道的几率远远大于其他节点。竞争窗口的波动比较大,增加了节点的潜在竞争几率,势必会影响网络的吞吐量。
首先,在新的退避算法中引进3个定值,最小竞争窗口值min CW,最大竞争窗口值max CW,中间门限值mid CW=(minCW+maxCW)/2。
新退避算法的具体描述如下:
(1)信道竞争失败:如果节点在信道竞争过程当中失败,它便会倍增竞争窗口直到最大竞争窗口maxCW,CW=min(maxCW,CW×2)。
(2)信道竞争成功:如果节点成功地完成信道竞争,它便会将竞争窗口置为最优初始竞争窗口initCW,为了提高所有节点接入信道的公平性,初始竞争窗口是通过节点连续占用信道次数动态确定的。节点每次成功占用信道时都会将其信道占用计数器值Count加1,当信道占用计数器值小于信道占用次数阈值thCount时,此时将竞争窗口减半并以min CW为下限,初始竞争窗口initCW=max(minCW,CW/2)。当信道占用计数器值大于信道占用次数阈值th Count时,为了提高其他节点接入信道的几率,节点的初始竞争窗口尽量维持在一合适值范围内。在本算法中竞争窗口先减半再加上2倍信道占用次数值记为temp CW,将temp CW与mid CW比较,如果小于mid CW,此时竞争窗口位于小值区域内。再将temp CW与min CW比较,如果小于min CW则置init CW为min CW,否则置初始竞争窗口为temp CW减1。如果temp CW大于mid CW,则竞争窗口位于大值区域内,此时的初始退避窗口值计算为:
init CW=CW-[CW+(temp CW/mid CW)·CW]/Count
(3)退避过程:当所有处于未休眠状态的节点侦听信道时,节点发现信道空闲了一个时隙,它就会减少一个时隙的退避时间(BT),BTnew= BTold-aSlotTime,当它的退避计数器值为0时,节点会发送数据包。为了提高信道利用率,降低节点因退避而造成的能量浪费。如果节点侦听到信道有连续2minCW+1空闲时隙,则信道每经过一个空闲时隙就使BTnew=BTold/2,如果BTnew<aSlotTime,则BTnew=0。
3 理论分析
在一个周期内,影响SMAC协议能量利用率的主要因素有2个:因传输失败而重传数据消耗的能量和连续竞争信道消耗的能量。在高流量和一些遍历性假设的情况下,可以得到如下的能量利用率:
式中:PSD表示节点Ni在一个周期内成功发送数据包过程所消耗的功率;Pc表示在一个周期内节点因发生碰撞发送数据包失败过程所消耗的功率;PD表示在一个周期内节点成功发送数据包所消耗的功率。设在一个传输周期内数据包平均发生碰撞的次数为E[Cc],在竞争周期内由于退避而产生的空闲时隙的期望值为E[Bc],ts为每个时隙的时间长度,为数据包的平均长度,PT为发送功率,PR为接收功率,PIdle为节点空闲时消耗功率。在Pc阶段时长为TPc,在PD阶段时长为TPD。则有下式:
由式(1),式(4)~式(6)可以看出:如果数据包在传输过程中是一个接一个没有任何间隔,就可以得到最大的能量利用率和最大的吞吐量。在这种情况下,E[Cc]=0,E[Bc]=0,能量利用率为:
在此情形下,节点在竞争周期内传输数据包的必要条件是节点接入信道的概率P较其他节点大。本协议采用的是随机退避机制,所以,节点Ni在竞争周期内接入信道的概率取决于退避计数器:
式中Cbi为节点Ni的退避计数器。
由式(8)知,当节点Ni的退避计数器Cbi=0时,它将立即占用信道发送数据包,此时它在当前竞争周期内发送数据包的概率Ptrans(i)=1;当节点Ni的退避计数器Cbi=∞时,节点在当前竞争周期内发送数据包的概率Ptrans(i)=0。通过以上分析可知:对于将要发送数据包的节点设置较小的退避计数器,而对于暂时没有数据包要发送的节点设置较大的退避计数器,这样可以有效的提高节点能量利用率和吞吐量。对于长时间占用信道的节点设置较大的退避计数器,对于长时间因竞争失败且需要发送数据的节点设置较小的退避计数器,这样可以有效的提高节点接入信道的公平性和减少数据包的传输时延。
当节点竞争信道失败,加倍退避窗口有效地减少了“将来”发生碰撞的概率,减少了E[Cc]。在节点退避过程,节点发现信道连续空闲会认为信道上没有节点传输数据包,退避窗口成指数倍减少,可以减少空闲时隙E[Bc],减少节点退避时能量浪费,提高节点能量利用率和吞吐量。如果节点发现信道忙,计时器被挂起,等下一个竞争周期到来继续执行,提高节点接入信道的概率实现节点接入信道公平性。节点成功发送数据包后,根据占用信道次数动态调整退避计数器,使得需要发送数据包的节点在退避时能成功完成退避过程,减小E[Bc],这样可以提高节点接入信道的公平性也提高了整个网络的吞吐率。
4 仿真试验与结果分析
本文仿真平台为NS-2.34,对SMAC协议和改进的SMAC协议进行仿真比较。配置仿真拓扑为一个由10个节点组成的链状拓扑。拓扑中每2个节点间的距离是200 m,节点的通信距离为250 m,节点只能与周围一跳节点进行通信,保证数据包只能一跳一跳的通信。
通过改变CBR数据流发包间隔(interval)的值来模拟网络的不同流量负荷情况。数据包发送间隔设置从1~15 s,当发送间隔为5 s的时候,即每隔5 s发1个包。初始能量设为1 000 J,以保证整个仿真时间内节点能量不耗尽。发送功耗为386 mW,接收功耗为368.2 mW,空闲侦听功耗为344.2 mW,睡眠功耗为50μW。仿真带宽为20 Kb/s,路由协议为DSR,占空比为20%。
4.1 网络吞吐量分析
数据流的端到端的平均吞吐量是指目的节点在整个连续时间内成功接收到得数据包的平均值。由图2可以看出:由于SMAC协议采用的是固定竞争窗口和二进制指数退避算法,在网络流量很大时,造成数据包发生碰撞的次数增加,碰撞后重传的次数必然增大,因而,吞吐量保持在一个相对较低的值。改进后的SMAC协议,由于在退避机制上的改进,在网络流量很大时,显著的提高了网络吞吐量。当分组间隔小于5 s,改进后的SMAC协议比SMAC协议的吞吐量平均提高了近约70%。
4.2 网络能耗分析
网络总的能量消耗,就是把网络初始时的各个节点的能量累加起来,仿真结束时的各个节点的能量累加起来,能量差就是网络消耗的总能量。由图3可以看出:由于SMAC协议采用的是固定竞争窗口且每次退避时都是重获取窗口的大小,在网络流量较大时,造成数据包碰撞的几率较大,碰撞后数据包重传的几率较大,因而,能量消耗保持在一个相对较大的值。改进后的SMAC协议,由于改进了退避机制,能够适应网络流量的动态变化,减少了数据包的碰撞几率,因而,减少了因重传数据包所消耗的能量。本文的SMAC协议根据节点占用信道的次数动态调整节点的退避窗口,提高了节点接入信道的公平性,一定程度上降低了节点因连续竞争信道所消耗的能量。在整个仿真过程中,改进后的SMAC协议比SMAC协议的总能量消耗平均降低了100 J左右。
4.3 能量效率分析
本文的能量效率采用文献的定义,即每焦耳能量所能发送的数据包,单位为b/J。显而易见,每焦耳能量所能发送的数据包越多,协议就具有越好的节能性。由图4可以看出:在网络流量较大时,SMAC协议由于数据包的重传浪费了大量的能量,导致能量效率较低。改进后的SMAC协议,根据节点占用信道的次数动态调整了退避窗口值,减少了数据包重传所消耗的能量,能量效率相对较高。当分组间隔小于6 s,改进后的SMAC协议比SMAC协议的能量效率平均提高了近55%。当分组间隔大于6 s,由于改进后的SMAC协议较SMAC协议能量消耗较少,能量效率较SMAC协议有所提高。
5 结语
本文研究了SMAC协议,并在此基础上借鉴了二进制指数退避算法,对SMAC协议进行了改进。在改进的SMAC协议中,节点根据接入信道的次数动态调整退避窗口,在退避时能根据信道的状态动态调整退避计时器值。最后,利用NS2仿真软件进行仿真验证,证实了在吞吐量、能量消耗和能量利用率方面,改进后的SMAC协议与SMAC协议相比有所提高。