《武汉工程大学学报》  2008年04期 85-89   出版日期:2008-04-30   ISSN:1674-2869   CN:42-1779/TQ
无线传感器网络分簇低延时MAC协议


0引言无线传感器网络[1](WSN,Wireless Sensor Network)是新兴的下一代传感器网络,它融合了传感器技术、信息处理技术和网络通信技术,由分布在物理空间上大量无线传感器节点通过自组织的形式构成网络,获取和收集信息,然后通过网络传回监控中心;监控中心可以根据情况收集各类所需数据和信息,并根据这些数据和信息监测、控制某些节点完成相关的处理和操作任务,可广泛应用于军事、工业、交通、探测、医疗等领域.无线传感器网络节点采用无法替换的电池供电,能量有限,为了尽可能延长网络的寿命,协议设计都将降低能耗放在重要位置,尤其是MAC层协议.传感器网络中能量浪费[2~3]主要集中在四个方面:不可预知的数据发送造成的空闲侦听、数据同时发送时产生的冲突、保证正常可靠传输所加入的必要控制开销以及广播式共享信道上接收发送给其他节点的数据包所造成的串听(overhearing),其中空闲侦听能量浪费最为严重.以往的传感器网络MAC协议主要以高延时、低吞吐量等为代价来减少以上四种能量损失以换取低能耗,但在一些传感器网络的应用中,用户需要实时地获得所监测的数据,以便及时采取处理措施,较高的延时是无法接受的,因此,研究出获得低能耗同时又具有低延时的MAC协议是一项急待解决的问题.1无线传感器网络中的MAC协议为了能在无线传感器网络能量约束和硬件资源约束的条件下实现有效通信,人们针对无线传感器网络的特点已经设计并提出了许多新颖的MAC协议,主要分为以下两类.1.1基于竞争的MAC协议各节点通过随机竞争接入使用信道,产生数据碰撞后重新竞争,一般基于载波侦听多址接入(CSMA)、带冲突避免的CSMA(CSMA/CA)或RTS/CTS方式.典型的基于RTS/CTS方式的MAC协议有SMAC[4]和TMAC[5]协议.SMAC协议中,节点周期性的关闭无线收发装置、进入睡眠状态,以便减少空闲侦听、节约能量;TMAC协议基于SMAC协议,如果在一个空闲ta内没有相应的激活事件发生,节点就提前进入睡眠,这种自适应的睡眠机制可以根据通信业务流量动态调节活跃时间,更好地减少空闲侦听.1.2基于时分的接入协议为完全避免数据包的碰撞,许多基于TDMA机制的MAC协议被提出来. TRAMA[6]是其中具有代表性的协议,TRAMA将时间划分为随机接入周期和调度接入周期,在随机接入周期中,每个节点随机选择一个时隙来发布自己一跳邻居信息.在调度接入周期中,节点根据业务需要生成自己的调度表,计算出具有最高优级的时隙.与此同时让无数据发送和接收的节点处于睡眠状态以达到节约能源的目的.2协议设计在基于竞争的MAC协议中,为了避免大量能量损失,保持持久工作,传感器节点必须周期性地进入长时间的睡眠状态.在睡眠状态下,节点不可能被叫醒来接收相关数据,也不可能在有发送时转成发送状态.因此,周期性睡眠机制增加了网络信息的多跳延迟,并且延迟会随着信息在网络中传递跳数的增加而加剧.提出了一种基于竞争的MAC协议,在节约能量的同时减少信息在网络中的多跳延时,解决了节能与延迟之间的矛盾.2.1协议框架无线传感器网络的体系结构可分为平面式和分级式.平面结构由于可扩展性不好,网络控制开销大,主要用于中小型网络.分级结构中,网络被划分为一些簇的集合,每个簇中包含有一个簇头和多个簇成员.在大规模无线传感器网络中,分簇是一种有效实现网络分布控制的方法,尤其在一些实时性要求较高的大规模网络中,采用分簇结构可快速组建网络.分簇是指将网络中所有节点划分为若干簇,每个簇按一定规则来选举一个簇头.各个节点采集的数据在簇头节点进行融合,簇头不仅负责簇内信息的收集和融合处理,还负责簇间数据转发,最后簇头节点把聚集的数据传送给终端节点,即用簇头作为到Sink节点的路由器.簇头还可以组成更高层次的簇.在簇建立阶段,每个节点选取一个0~1间的随机数.如这个数大于门限值T(n),该节点成为簇头.门限值计算方法如下:
T(n)=P1-P×[r mod(1/P)]ifn∈G
0other (1)
式(1)中P是簇头节点占全部节点的比例;r是现在的轮次;G是在最近1/p轮未成为簇头的节点集合.选举结束之后,新当选的簇头节点向所有节点广播自己成为簇头的消息.每个节点根据收到广播信号的强弱决定加入哪个簇,并通知该簇的簇头.如分簇后网络簇大小相差较大,还可以借助簇分裂/合并机制来优化簇结构.网络在分成多个相互重叠的簇后,相邻簇头节点之间协商各簇的活跃期和睡眠期的时机,使相邻簇交替的进入活跃期,以避免相邻簇互相干扰.因为每个簇的活跃期都很短而睡眠周期相对较长,所以相邻的各簇头可以在共同的簇内通信睡眠期内,选择一个时间进行簇间同步信息和控制信息的通信,并称这一时间为簇头会晤时间.第4期刘焱骊,等:无线传感器网络分簇低延时MAC协议
武汉工程大学学报第30卷
为了在簇规模扩大的情况下减少簇内节点通信的冲突,在分簇完成后,簇头节点广播层次建立消息以将簇内节点按位置分为不同的层.任何收到此层次建立消息信号的节点将自己定义为第一跳节点.与此同时,它们随即产生让自己成为第一跳接力点的等待时间(0~1 s的随机数).在这段随机时间内,第一跳节点监听它们同一层节点发出的“自愿成为接力点”的信号.如果听到,证明在它的通信范围内已经存在接力点,它就没必要充当接力点的角色了.如果没有听到,证明该节点是它所在通信区域中最早成为接力点的志愿者,它将成为接力点.如果有两个节点同时发出“自愿成为接力点”的信号.那该区域就有两个接力点,并不影响网络的传输.这样,第一跳就存在两种节点——普通节点和接力节点.接力节点在一秒钟后发出“层次建立”信号.第一跳和簇头节点将略过此信号.还没有加入层次结构的节点在接收到此信号后将自己定义为第二跳节点.然后通过相同的原理,该层次结构不断扩大,直至整个网络拓扑结构建立完毕.层的拓扑结构如图1所示.图1网络拓扑
Fig.1Network topology同一层次节点具有相同的调度表,同时进入接收、发送或睡眠状态之一,每层节点对应的时隙图如图2所示.不同层次节点的接收和发送状态周期逐层交错,即节点的接收周期与上一层节点的发送周期相对应,发送周期与下一层的接收周期相对应,节点可以在接收到上一层节点发送的数据后,在接下来的发送周期将其发送至下一跳节点,在睡眠周期中则关闭其无线收发装置.这样,信息就可以迅速经过多跳网络发送至Sink节点,多跳延时大大减少.而这就要求各层节点在路由查找信息中加入跳数计算,计算其到sink要经过的跳数,节点记录自己的跳数,根据跳数计算出自己帧的起始时刻,与上层节点和下层节点都错开一个接收状态长度.如第N跳节点a的发送数据时刻为ta,那么第N1跳节点b的发送时刻如式(2):tba=ta+trec.(2)
式(2)中trec.为接收周期时间, tba为节点b接收到的节点a的时间基准.跳数计算需要路由支持,但其复杂度很小,对减少的延时和能耗而言是完全值得的.图2CMAC协议时隙结构
Fig.2Slot structure of the CMAC agreement2.2数据交换机制CMAC协议采用RTS/CTS/DATA/ACK四轮握手机制来实现节点间的数据交换,节点间通过竞争来占用共享的无线信道.在发送周期中,节点随机选取一段时间作为自己的竞争时间(CT)并且侦听信道,如果在CT时间内信道为空,它就向目的节点发送一个RTS,选取CT最小的节点首先赢得信道,其他节点则要在下一个数据传输周期重新竞争信道.目的节点在收到RTS后返回给发送节点一个CTS,随后发送节点向目的节点发送数据,目的节点在成功接收数据后返回给发送节点一个ACK告知此次数据交换成功.不同跳数节点因错开发送时隙,已无冲突发生,冲突只存在于同跳数节点的发送,为解决此冲突问题,节点在发送前竞争数据传输周期中的发送时隙,如未竞争到仍会竞争下一发送时隙,当发送节点未收到返回ACK时也会继续竞争下一发送时隙重发此数据包.一个时隙正好可以成功发送一个数据包,用τ表示一个时隙的持续时间,如式(3).为减少同路数节点冲突,每个时隙都以一个固定的竞争窗口开始,发送节点在竞争窗内退避随机长时间后侦听信道,当侦听到信道为空时立即发送数据包.τ=tcw+tDATA+tACK(3)
式(3)中,tcw为竞争窗大小,tDATA和tACK分别包括数据包和ACK的时间与处理时间.为避免发送或接收状态内节点发送或接收完数据后仍然侦听信道,在数据包的MAC头部保留一位MoreData(MD)位,根据MD位节点可判断子节点是否发送完毕,子节点如仍有数据包要发送至父节点就将MD位置“1”,反之置“0”,如果父节点根据MD位知道所有子节点都已发送完毕就立即关闭电路休眠至发送状态,子节点在发送完数据后也立即进入睡眠状态.为尽量减少传输延迟,数据收发周期需精确同步[7],故相邻节点间要发送SYNC帧来定期更新它们的休眠调度表,以避免时钟漂移.一个数据传输周期分为同步、接收和发送三个部分.一个同步周期包含10个数据传输周期,而一个邻居发现周期则包含15~25个同步周期.各周期间关系如图3所示.协议在每个同步周期的第一个数据传输周期的同步时段内通过发送SYNC帧保证各节点调度表同步.由于簇头节点向基站发送数据需要很高的能耗,每隔一段时间要重新选举一次簇头,以保证功耗在所有节点的平均分配.重新选举簇头后,CMAC协议在每个邻居发现周期的第一个同步周期的整个时段内进行邻居发现,每个节点更新自身路由表项.图3CMAC协议各周期间关系
Fig.3The relationships between different cycles of the CMAC agreement2.3自适应睡眠机制在上述数据交换中,当子节点无数据发送时,父节点认为子节点可能有数据发送,只是没有竞争到信道,会保持接收状态直至接收状态结束,这会造成大量能耗.由于网络中不同层次节点所需要收发的数据量不同,故引入自适应睡眠机制:如果节点在接收周期中侦听到信道在一段固定时间(ta)内为空且邻居节点无通信,则进入睡眠状态直到发送周期到来.这种机制可以增加业务量较少节点的睡眠时间,从而使协议更好地节约能量.ta满足:ta>CT+RTS+CTS.在CMAC中,由于各层节点的接收和发送周期是逐层对应的,不存在TMAC中的早睡问题.3仿真结果及讨论3.1仿真环境 为了验证CMAC协议的设计是否能有效的节约能量,减少睡眠时间,对该协议进行了仿真测试,并与常用的SMAC和TMAC进行了比较.测试采用的工具是NS2,网络拓扑使用的是如图1中的二个簇,每个簇由4层×3个节点和1个簇头节点组成,除了簇头节点,每个节点周期性的产生数据并经过多跳路由发送至簇头节点.测试中没有采用固定路由,而是让节点随机选取一个它的上层节点作为数据的接收者.因此,消息是沿着一定的方向但不是沿着同一条路径在网络中进行发送的.为了测试在不同的传输通道中能量消耗的情况,在实验中改变消息的传输周期.消息的产生周期从1 s到10 s变化,意味着每个源节点每隔1 s到10 s产生一条消息.有100个字节的20条消息将周期性的由各个节点产生.3种协议采用相同的帧长1 s,SMAC活跃周期为100 ms.TMAC、CMAC的接收和发送周期均为50 ms,TMAC和CMAC取相同的ta时间15 ms.这里定义了三组不同的能量模式:接收、传送和睡眠,其功耗参数分别设置为:13.5 MW、24.75 MW和15 μW.节点的能耗以节点工作在各种模式下的功耗和持续时间乘积之和来计算.消息的平均端到端延时是以簇头节点收到的消息端到端延时之和除以收到消息的个数来计算.3.2仿真结果图4为3种协议在不同负载下的能耗比较,TMAC和CMAC协议的能量消耗比SMAC小,这是因为前二协议采用了自适应睡眠机制,能大大减少空闲帧听所带来的能量消耗,网络负载越低,空闲帧听比重越大,自适应睡眠机制的节能效果越好.CMAC由于要定期分簇,故能耗略大于TMAC协议,但从后面的延时和吞吐量性能来看,这是完全值得的.图4不同负载下的能耗比较
Fig.4Consumption comparison in different message interarrival periods图5为3种协议在不同负载下消息的平均端到端延时比较,CMAC协议的延时明显低于SMAC和TMAC.这是因为该协议中发送和接收周期相分离且分层交错, 使节点可以在收到来自上层节点的消息后,在随后的发送周期将消息发送至下层节点,这样层层发送,大大减少了由于睡眠引起的消息多跳网络延时.另外,TMAC中引入TA带来了早睡问题:如果节点侦听到它的邻居节点正在通信,刚不能发送任何消息,它的下一跳节点就会在侦听到信道空闲ta后进入睡眠,这样,如果该节点有数据要向下一跳节点发送,就要等到下一个活跃周期的到来,这增加了TMAC的网络延时,因此它的平均端到端延时高于SMAC.图5不同负载下的平均端到端延时比较
Fig.5Mean endtoend delays in different message interarrival periods图6为3种协议在不同负载下的吞吐量,从图5中可以看出负载越大的时CMAC的吞吐量越大于TMAC和SMAC,这是由于采用了分簇结构,不同簇间协商进入活跃期和睡眠期,且在一个簇内采用分层结构,网络中参与竞争的节点数目减少,降低了冲突的可能性,减少了控制帧的重发及数据的丢失而导致的重传,从而提高了吞吐量.随着数据包生成间隔逐渐增大,发送竞争冲突逐渐减少,三种协议的吞吐量也逐渐趋于平稳.图6不同负载下的吞吐量
Fig.6Average throughput in different message interarrival periods4结语以无线传感器网络能量的有效性为首要考虑因素,提出了分簇且簇内分层结构,不同簇、层间交错进入接收和发送周期,减少了传输中数据冲突及网络延时,其自适应睡眠机制更好的实现了能量的节省,仿真结果表明,协议设计达到了预期要求.