2.其他基于IEEE802.11改进的MAC协议
尽管传统的基于CSMA方式的MAC协议也是基于载波监听和退避机制,但它们并不太适合无线传感器网络,因为它们都基本假设了随机分布的业务,并且趋向于支持独立的点到点的业务流。此外,无线传感器网络的MAC协议必须支持可变的而且高度相关和可控的周期业务。任意基于CSMA的MAC机制都有两个重要组成部分:监听和退避机制。实际上,无线传感器网络MAC协议关注的基本问题主要还是能耗管理,而射频通信模块是能耗的最大部件,而MAC协议直接控制射频通信模块,对无线传感器网络节点节能具有重要的影响。
(1) S-MAC/DSMAC
W.Ye等 通过实验证实了无线传感器网络无效能耗的四大来源:空闲监听,由于节点不知何时邻居节点会向自己发送数据,射频通信模块一直处于接收状态,消耗大量能量; 数据冲突,邻居节点同时向同一节点发送多个数据帧,信号相互干扰,接收方无法准确接收,重发数据造成能量浪费;串扰,接收和处理无关的数据;控制开销,控 制报文不传送有效数据,消耗节点能量。在IEEE802.11MAC协议基础上,W.Ye等提出了第一个完全针对无线传感器网络设计的MAC协议S-MAC(Sensor MAC),具有有效节能、扩展性和冲突避免三大优点。S-MAC协议对网络做了三大基本假设:拥有很多小的传感器节点;采用Ad-hoc网络配置;节点致力于协作完成一个或多个共同任务。此外,对于无线传感器网络应用,S-MAC协议还假设了网络能够容忍一定的通信延迟;具有较长的空闲周期(直到检测到事件发生为止);应用关注网络的寿命。针对上面提到的四种能量浪费因素,S-MAC采用的主要应对机制如下:
1) 周期监听和睡眠机制
2) 冲突和串音避免机制
为了减少冲突和避免串音,S-MAC采用了物理和虚拟载波(使用网络分配矢量NAV)监听机制和RTS/CTS握手交互机制。与IEEE802.11 MAC协议不同的是当邻居节点正在通信时,S-MAC协议节点直接进入睡眠阶段;当接收方节点处于空闲并正在监听周期时,就会被唤醒。串音分组通常是不需要的分组,它随着节点密度和业务负载增加而变得更加严重,因而造成能量浪费。串音可以通过更新基于RTS/CTS的NAV来避免,当NAV不为零就进入睡眠阶段,从而避免串音现象发生。一个可以遵循的原则就是当发送方和接收方的所有邻居在节点发送数据期间监听到RTS/CTS后就应当进入睡眠阶段。
3) 消息传递机制
S-MAC协议采用了消息传递机制以很好支持长消息的发送。对于无线信道,传输差错和消息长度成正比,短消息传输成功的概率要大于长消息。消息传递技术根据这一原理,将长消息分为若干个短消息,采用一次RTS/CTS交互的握手机制预约这个长消息发送的时间,集中连续发送全部短消息,既可以减少控制报文开销,又可以提高消息成功发送率。IEEE802.11 MAC与S-MAC协议不同的是考虑了网络的公平性,RTS/CTS只预约下一个短消息发送的时间,其他节点在每个短消息发送完成后都不需醒来进入监听工作阶段,只要发送方没有收到某个短消息的应答,连接就会断开,其他节点便可以开始竞争信道。
4) 流量自适应监听机制
在多跳无线传感器网络中,节点周期性睡眠会导致通信延迟的累加。S-MAC协议采用了流量自适应监听机制,减小了通信延迟的累加效应。主要思想就是在一次通信过程中,通信节点的邻居节点在通信结束后不立即进入睡眠阶段,而是保持监听一段时间。如果节点在该时间段内收到RTS分组,则可立即接收数据,无须进入下一次监听工作周期,从而减少了数据分组的传输延迟。如果这段时间没有收到RTS分组,则转入睡眠阶段直到下一次监听工作周期。
DSMAC协议是在S-MAC协议基础上引入了动态工作周期特征,旨在减少延迟敏感应用的传输延迟。在SYNC同步期间,所有节点共享一跳的延迟值(指当接收到进入队列的一个分组与其传输之间的时间间隔),且开始都是相同的工作周期。如图3-5所示给出了DSMAC协议工作周期加倍的原理。当一个接收节点发现平均一跳延迟值较高时,就决定缩短其睡眠时间并在SYNC期间广播该消息。对应地,当发送节点收到睡眠时间缩短信号,则检查其队列的发往接收方的分组。如果存在一个分组且电池高于规定的阈值时,就决定将其工作周期加倍。
DSMAC协议工作周期加倍后使得邻居的调度将不受影响。这样其传输延迟要优于S-MAC协议的延迟。此外,对于每个分组而言,DSMAC协议拥有更低的平均功耗。
(2) T-MAC
由于无线传感器网络存在业务汇聚的数据单向通信情况,T-MAC协议存在一种特殊的通信延迟,即早睡(Early-sleep Problem)问题。如图3-7所示,假设节点A沿路线A→B→C→D传输数据到节点D。如节点A首先获得竞争优先权发送数据RTS消息给节点到B,B收到RTS后应答CTS消息。节点C收到B发出的CTS消息立即转入睡眠阶段,等节点B接收完数据才醒来,以便接收节点B发给它的数据。D由于不知道节点A和B之间的通信存在,故节点A→B的通信结束后就处于睡眠阶段,节点C只有等到下一个工作周期才能传数据给节点D,这样就存在一个通信延迟,即早睡现象。
为克服上面的目的节点早睡问题,T-MAC协议又提出了两种解决方案:第一种方法是在节点C和A分别引入FRTS(Future Request-To-Send)和DS(Data-Send)分组。节点C收到B发给A的CTS分组后立即向下一跳节点D发出FRTS,其中包含D接收数据前需等待的时间,节点D必须睡眠该等待时间后才能唤醒接收数据。节点A收到CTS分组后需发送一个与FRTS等长度的分组DS才能实现对无线信道的占用,节点A在DS分组之后就可发送数据消息了。尽管FRTS方法提高了数据吞吐率,但带来了额外的分组FRTS和DS通信开销。第二种方法就是满缓冲区优先策略(Full Buffer Priority)。当节点缓冲区快要满时,对收到的RTS不予应答,而立即向目标接收者发送RTS消息,并传输数据给目标节点。该方法优点是减小早睡问题发生的可能性,起到一定网络流量控制作用,然而增加了网络冲突的可能性。
(3) Sift
Sift协议是K.Jamieson等提出的基于事件驱动的无线传感器网络MAC协议,不同于上面IEEE802.11和其他基于竞争的MAC协议,它充分考虑了无线传感器网络的三个特点:大多数传感器网络是事件驱动的网络,因而存在事件检测的空间相关性和事件传递的时间相关性;由于汇聚节点的存在,不是所有节点都需要报告事件;感知事件的节点密度随时间动态变化。
Sift协议设计的目的是当共享信道的N个传感器节点同时监测到同一事件时,希望R个节点(R≤N)能够在最小时间内无冲突地成功地发送事件检测消息,抑制剩余(N-R)个节点的消息发送。Sift协议不但保留了S-MAC和T-MAC协议都具有的尽可能让节点处于睡眠阶段以节省能量的功能。而且,由于无线传感器网络的流量具有突发性和局部相关性,Sift协议很好地利用了这些特点,通过在不同时隙采用不同的发送概率,使得在短时间内部分节点能够无冲突地广播事件,从而在节省能量的同时也减少了消息传输的延迟,这是和以往的MAC协议的最大不同之处。
通常一般的基于窗口的竞争性MAC协议中,当有数据需要发送时,节点首先在发送窗口[1,CW]内的概率随机选择一个发送时隙;然后节点监听直到选择的发送时隙到来。如监听期间没有其他节点使用信道,则节点立即发送数据,否则需在信道空闲时重新选择发送时隙。当多个节点选择相同一个时隙时就会发生冲突。多数协议都是规定冲突节点倍增CW值,并在新窗口内重新选择发送时隙,以增大无冲突发送的概率。但是,这种方法使无线传感器网络存在新的问题:当多个节点同时监测到同一事件,并同时发送数据时,导致事件区域内节点同时闲忙,忙时竞争加剧,需要经过很长时间来调整CW值,以适应发送节点的数目;如果CW值很大,而同时监测同一事件的节点数目很少时,就会造成报告事件的延迟较大;此外,CW取值是为了保证所有活动节点都有机会发送数据,而无线传感器网络只需N个活动节点中有R个节点能够无冲突地报告事件。Sift协议采用的是CW值固定的窗口,节点不是从发送窗口选择发送时隙,而是在不同时隙中选择不同发送数据的概率。因此,关键在于如何在不同时隙为节点选择合适的发送概率分布,使得监测到同一事件的多个节点能够在竞争窗口前面各个时隙内无冲突地发送数据消息。
Sift协议工作过程如下:当节点有消息发送时,首先假定当前有N个 节点与其竞争发送。如果在第一个时隙内节点不发送消息,也无其他节点发送消息,则节点就减少假想的竞争发送节点的数目,并相应地增加选择在第二个时隙发送 数据的概率;如果节点没有选择第二个时隙,且无其他节点在该时隙发送消息,则节点继续减少假想的竞争发送节点数目,并进一步增加选择第三个时隙发送数据的 概率。依次类推,节点在选择第r个时隙发送数据的概率Pr为:
式中,α为分布参数(0<α<1)。如果选择时隙过程中有其他节点发送消息,节点就进入重新开始竞争过程。Sift协议就是通过非均匀概率分布将优胜节点从整个竞争节点中筛选(Sift)出来的。式(3-1)中参数α选择与N和CW值相关。具体设置见参考文献[13]。
Sift协议和S-MAC以及T-MAC协 议一样只是从发送数据的节点考虑问题,对接收节点的空闲状态考虑较少,需要节点间保持时钟同步,特别适合于传感器网络内局部区域使用,如分簇结构网络。簇 头可以一直处于监听状态,这样节点发送消息给一直处于活动状态的簇头节点,通过簇头节点的能量消耗换来消息传输延迟的缩短。
(4) WiseMAC
由于T-MAC协议在帧前加入了唤醒前导,这样就引入了控制开销。为了将控制开销压缩到最小,WiseMAC协议在数据确认分组中携带了下一次信道监听时间,节点获得所有邻居节点的信道监听时间。在发送数据时可以将唤醒前导压缩到最短。
考虑节点时钟的漂移,唤醒前导长度TP=min(4θL,TW)。其中,θ是节点的时钟漂移速度,L是从上次确认分组到现在的时间,TW是所有节点监听信道的时间间隔。尽管WiseMAC协议能够很好地适应网络流量的变化,但是节点需要存储邻居节点的信道监听时间,会占用大量存储空间,并增加协议实现的复杂度,对于高密度的无线传感器网络,该问题较为突出。
(5) B-MAC
B-MAC(Berkeley-MAC)协议采用信道估计和退避算法分配信道,通过链路层保证传输可靠性,利用低功耗技术减少空闲监听,实现低功耗通信。
信道估计凭借对接收信号强度指示RSSI,采用指数加权移动平均算法计算出信道的平均噪声,再将一小段时间内的最小RSSI值与平均噪声相比较,从而确定信道的冲突状态。退避算法根据应用需求可以选择初始退避和拥塞退避两种方式。
(6) IEEE 802.15.4 MAC协议
IEEE 802.15.4为无线传感器网络的应用提供了一种低成本、低功耗和低速率的无线联网的标准。该标准不但定义了物理层,即可以有三种频率选择(2.4GHz、915MHz和868MHz),而且也规定了MAC层协议采用CSMA/CA的竞争性接入方式。为降低功耗,采用了缓存节能机制,如图3-8所示。节点周期监听信道,接收信标(Beacon)帧,当没有数据接收和发送时就进入睡眠阶段。网络协调者暂时缓存发往睡眠节点的数据,并定期发送信标帧,信标帧携带了这些缓存数据的目的节点的地址。当节点发现网络协调者缓存了发往自己的数据之后,向其发送轮询帧(Poll),表明自己可接收数据了。当网络协调者收到轮询帧后,首先向节点发送确认帧(ACK),然后发送缓存的数据。收到数据后,节点再向网络协调者发送确认帧。
(7) BMA协议
BMA协议适合于分簇的无线传感器网络,分为簇建立和稳定两个阶段。在簇建立期间,节点是根据剩余能量多少来选择簇头节点的。所有当选簇头通过非持续的CSMA方 式向其他节点广播当选通告。其他节点收到通告后根据接收信号强度决定加入哪一个簇。经过一段时间系统进入稳定工作阶段。该阶段由若干定长的会话组成,每个 会话包括竞争阶段、数据传输阶段和空闲阶段。竞争阶段所有节点都打开通信模块,竞争数据传输阶段。竞争阶段之后,簇头建立数据发送调度策略并向簇内节点广 播数据发送调度策略,这样每个需要发送数据的节点获得了一个确定的发送时间。各个节点只有在自己的发送时问内打开通信模块,向簇头发送数据,其余时间都转 入睡眠阶段。如果一个长会话内没有节点发送数据,那么数据传输阶段长度为0。簇头收到簇内节点数据后,需要进行数据融合,并向汇聚节点发送。相比于传统的TDMA和有效节能的TDMA协议(节点在分配给它的时隙里没有数据发送就将无线电通信模块关掉),BMA协议最大的贡献就是使得平均分组延迟大大减小。
此外,除了上面主要关注节能和延迟的MAC协议外,Woo和Culler提出了一个新的基于CSMA的无线传感器网络的MAC竞 争协议,考虑了有效节能和公平性问题,没有引入额外的控制分组开销,并从仿真实验证实了采用固定的监听周期策略且在退避期间关掉无线电波方式较为节能,而 且引入随机延迟使得无线传感器网络对于避免数据的反复冲突提供了鲁棒性。他们还提出了一种自适应传输速率控制机制,实现了公平性和较好的吞吐性能。