1 S-MAC协议的分析和研究
S-MAC协议是一种基于竞争的控制协议,具有同步机制功能与无中心等特点,不需要局部或全局中心主节点的调度传感器节点自己发现邻居节点,并合理地安排占用信道的时间。
1.1 S-MAC协议
S-MAC协议时间分为若干个帧,帧长度由应用程序来确定,帧内分为活动与睡眠两个部分。在睡觉时段,节点关闭发送器模块,缓存在此时负责采集数据信息,数据在等待序列中,到活动阶段集中进行发送。在活动开始时,发送节点进入同步机制决定帧长度的确定方式,之后通过(RTS/CTS/DATA/ACK)机制发送数据信息,这个机制能够避免因冲突产生的能耗。通过同步机制,局部的节点之间可以采用相同的时间周期,采用相同的工作休眠策略,它方便了无线传感器网络发现新节点。
1.2 S-MAC的节能机制分析
为了减少无线传感器网络消耗的能量,在IEEE 802.11基础上提出了一种专门的传感器网络MAC协议S-MAc协议。无线传感器网络的冲突重传、接收到不是发送给自己的数据、控制信号、空闲侦听等造成传感器网络耗能的原因。它引入了节点间的SYNC机制,允许没有数据发送和接收的节点进入休眠状态以节省耗能。但根据前文所讨论的,睡眠的本身会引起数据的传输中断,从而增加延时。下面将具体分析S-MAC协议是怎么节能的。
1.2.1 交替侦听/睡眠机制
S-MAC协议的工作是按照周期进行的,在每个周期里,每一个基于S-MAC协议的节点都会工作一段时间、睡眠一段时间,通过减少节点的工作时间来节省能量。如图1所示S-MAC协议的一个周期包含了睡眠和侦听两个阶段,侦听阶段属于工作阶段,侦听阶段如果收到数据包,则节点之间会建立通信。如果节点处于睡眠状态,则节点不能接收任何数据,发送给它的数据都会被阻塞。处于睡眠状态的节点会在一定时间后醒来。在S-MAC协议中,相邻的节点是尽量同时睡眠同时侦听的,为了保证时间上的一致,防止时钟偏移,不同节点间需要定期广播同步包来交换时间信息,从而进行调整,做到同步。
1.2.2 “虚拟簇”机制
S-MAC协议使用了“虚拟簇”的机制,在“虚拟簇”机制下,节点之间的调度信息是通过节点广播SYNC包来实现的。S-MAC协议使用调度表来保存调度信息,每一个节点会保存一个调度表。节点会在启动的初期监听一段时间,因为S-MAC协议是固定占空比的,所以这段时间是固定的。在监听的这段时间,如果节点能够收到邻居节点的调度信息,则它使用邻居节点的调度周期更新自己的调度周期,并且它会在一段时间后广播自己的调度信息。如果接收到的邻居节点的调度方式与自己的调度方式相同,则调度方式不变;如果发现邻居节点的调度方式与自己不同,而且还没有收到与自己调度方式相同的节点消息,则使用新的调度方式进行调度。
1.2.3 串音避免机制
基于竞争MAC协议能量消耗的一个重要原因就是串音。在S-MAC协议中,如果节点收到不是发送给自己的RTS数据包或CTS数据包,节点会直接进入睡眠状态。这样,发送数据包的节点就不会把数据包和ACK报文发送到刚刚进入睡眠的节点,从而减少了节点处理这些数据包所消耗的能量。
1.2.4 冲突避免机制
竞争信道时产生的碰撞是每一个竞争类协议都会碰到的问题,S-MAC协议也对该问题进行了解决,尽量减少不必要的能量浪费。
1.2.5 消息分段机制
如果传感器网络传递比较长的数据包,一个包出错就会重传,这就将耗费比较多的能量。S-MAC为了解决这个问题采用了消息分段机制,将长消息分成几个小的消息发送出去。[page]
1.2.6 自适应侦听机制
自适应侦听机制的基本思想是:当一个节点收到RTS或者CTS数据包,侦听到邻居节点有数据通信,就进入睡眠,同时记录它的通信时间。对通信时间的记录帮助节点通信结束后能够醒来,在一个较短的时间内侦听信道查看是否有数据包需要传递,这种侦听同样是通过是否接收RTS数据包和CTS数据包来实现的。通信结束后节点会醒来,这个时候节点进入工作状态,侦听是否有数据包到达,如果有数据包到达则建立信道进行通信,如果没有数据包到达,则结束侦听,继续进入睡眠,按照既定调度方式工作。
2 改进的MAC协议ATC-SMAC
如前面所述,S-MAC协议由于采用了固定的占空比,它不能根据网络中数据流的延迟情况动态调整占空比大小,造成了两个主要的问题。本节提出了一种新的无线传感器网络的MAC层协议——ATC-SMAC(Automation of Time Controlled-SMAC),该协议在S-MAC协议的基础上改进了固定占空比的劣势,采用根据每个节点上的数据包的平均延迟调整占空比的策略。
2.1 ATC-SMAC协议的工作原理
ATC-SMAC协议支持传感器网络中的不同节点拥有不同的占空比。现在假设节点的初始化占空比为P,帧长为T,睡眠时间为Tsleep,工作时间为Tactive,显然有,P=Tactive/T。设数据包在某节点的平均阻塞延迟为Tblock。
ATC-SMAC的节点占空比调整策略如下:如果Tblock的变化超过了Pctr,那么占空比也要调整相应的比例;不论这种变化是增加还是减少,只要变化的范围超过了Pctr,占空比都会调整;根据Tblock变化的幅度,占空比调整的幅度也会相应地变化。本文中Pctr选为20%,经过后面的仿真实验验证,Pctr为20%的ATC-SMAC协议要比自适应的S-MAC协议更加优秀。为了通过减少节点的计算量从而达到节省节点能量的目的,节点的数据包平均时延为两个同步周期计算一次。节点统计在刚刚过去的两个同步周期内自己转发的所有数据包的延迟。对于每一个数据包,在它进入节点的缓冲队列的时候,从数据包的报头中可以看到上一个节点发送出该数据包的时刻Tin,忽略数据在物理介质中传播的时间,记录该数据包从本节点上发送出去的时刻Tout,该节点的延迟Ti=Tout-Tin。对于该节点转发的数据包1,2,…,n,统计得出它们的延迟T1,T2,…,Tn,得到该节点的平均延迟Teven为:
Teven=(T1+T2+…+Tn)/n (1)
节点除了计算刚刚过去的两个同步周期内的平均延迟外,还保存上两个同步周期内的平均延迟Tpast。
如果在刚刚过去的两个同步周期内,节点转发数据包的量比较大,延迟较高,Teven>Tpast,那么计算Teven高于Tpast的百分比P,如果P不到20%,那么该节点的占空比不做调整;如果P高于20%(包括20%)小于40%,那么该节点在下一个同步周期的时候将自己的占空比上调20%;如果P高于40%(包括40%)小于60%,那么占空比往上调整40%;依次类推,如果P高于C%(包括C%,其中C为20的整数倍)而小于(C+20)%,那么占空比往上调整C%。
同理可得向下调整占空比的方式:如果在刚刚过去的两个同步周期内,节点转发数据包的量比较小,延迟较低,Teven
2.2 ATC-SMAC的节能策略分析
Pctr为20%的基于ATC-SMAC协议的传感器在吞吐量、端到端延时以及能量消耗上都要略优于动态的S-MAC协议。与使用固定占空比的S-MAC协议相比,ATC-SMAC在吞吐量上平均要比S-MAC协议高大约1倍;在端到端延时这项上,ATC-SMAC的数据包平均时延大约为S-MAC协议的0.6倍;ATC-SMAC平均每字节消耗的能量大概为S-MAC协议的0.4倍。与动态调整的S-MAC协议相比,ATC-SMAC协议的平均端到端时间大概为动态S-MAC协议的70%,ATC-SMAC协议的平均吞吐量大概为动态S-MAC协议的1.2倍,ATC-SMAC平均传输每字节消耗的能量大概为动态S-MAC协议的75%。
3 结语
ATC-SMAC协议在SMAC协议的基础上进行了改进,使用了更加优秀的动态调整占空比的算法。它可以让节点根据自己流量的变化动态地调整自身的占空比。通过仿真结果,可以看出ATC-SMAC协议在端到端延迟、能量使用效率以及网络吞吐量等方面较S-MAC协议(自适应和非自适应两种)都有一定程度的提高。
上一篇:工程用红外测温仪及选型
下一篇:温室大棚卷帘机无线远程控制系统的设计
推荐阅读最新更新时间:2024-05-02 21:49
- 热门资源推荐
- 热门放大器推荐