和梦琪,施伟斌
(上海理工大学光电信息与计算机工程学院,上海 200093)
无线传感器网络(WSN)由大量具有无线通信与计算能力的传感器节点以自组织和多跳方式构成,其大范围的应用及技术特点一直备受关注,涉及军事、环境监测、医疗服务、目标追踪和智慧城市等多个领域。介质访问控制(MAC)协议构建WSN 系统的底层基础结构,决定节点接入无线信道的方式,协调网络中多个节点共享无线信道的有限通信资源,目的在于保证无线信道中的通信效率和通信可靠性,同时避免冲突,尽可能减少能量消耗,对网络整体性能有直接影响[1]。
WSN 需电池供电的节点长时间处于活动状态以实现可靠有效的观察,而单个节点的能量及处理能力有限,WSN 需要网内大量节点相互协作才得以实现,这些特性使MAC 协议的发展面临巨大挑战[2]。MAC 协议设计时考虑以下方面的性能:
(1)能耗高效性。WSN 中的节点大多采用电池供电,对于部署在恶劣和不可接近环境中的节点而言,电池无法及时更换,因此节省节点能量消耗以延长网络生存周期是协议设计的关键问题。WSN 在通信过程中的节点耗能环节如图1 所示,MAC 协议设计应考虑降低占空比以减少空闲侦听能耗、避免冲突以减少重发数据能耗、避免串音干扰能耗以及减少协议运行的控制开销等方面。
(2)自适应性。节点移动、死亡或加入都会引起网络规模及拓扑变化,MAC 协议设计需要自组织机制才能实现节点的随机部署,保障网络稳定性能。
(3)整体性能最优化。WSN 中节点的能耗有效性一般处于最高优先级,而面向不同应用的无线传感器网络系统,需求会有差异。因此,协议设计需综合考虑系统性能要求,如信道利用率、网络时延、网络吞吐量等,多种性能要求取得平衡,实现网络整体性能最优化。
Fig.1 Node energy consumption图1 节点能耗环节
节点信道访问依赖于两种基本的多址接入机制:时分多址接入(TimeDivision Multiple Access,TDMA)和载波侦听多址接入(Carrier Sense Multiple Access,CSMA)。当前,MAC 协议根据信道访问方式不同分为3 类:①基于调度的MAC 协议,如TRAMA、DEANA、PMAC 等;②基于竞争的MAC 协议,如S-MAC、T-MAC、B-MAC、WiseMAC、X-MAC等;③混合型MAC 协议,如IEEE802.15.4、Z-MAC 等[2-3]。
调度型MAC 协议调度传输数据的节点,按照调度的先后顺序传输数据,以免多个节点同时接入信道造成数据传输冲突。基于调度的MAC 协议多采用TDMA 机制,是基于某些策略预先为不同的节点分配时隙,节点在分配的时隙内保持活跃状态并传输数据,在非分配时隙保持休眠状态以避免干扰其他节点之间的通信。
基于TDMA 策略的MAC 协议通过分配信道资源的方式,避免了节点间的相互干扰,而且数据传输的过程中不需要过多的控制信息,节省了开销。不足之处是,一般采用同步通信方式,需要节点之间比较严格的时间同步;如果节点在分配时隙内无法通信则产生空时隙,造成能量浪费;网络拓扑结构及规模变化时,时隙分配方案很难灵活调整,动态性弱。
流量自适应介质访问协议(Traffic-adaptive MAC Protocol)[4]是基于传统TDMA 时隙结构的协议,且根据每个节点的流量分布式选择时隙方案,是一种高效节能且无冲突的协议。TRAMA 协议将时间帧划分为交替的调度访问阶段和随机访问阶段。协议操作由3 部分构成:邻居协议(NeighbourProtocal,NP)、时间调度表交换协议(Schedule Exchange Protocol,SEP)、自适应选择算法(Adaptive Election Algorithm,AEA)。每个节点根据NP 协议获得两跳范围内邻节点信息,确定时间调度表,采用SEP 协议将时间调度表传给邻节点,并计算每个节点的优先权,执行AEA 算法确定节点时隙,实现节点无冲突的传输数据。无流量的节点则保持休眠状态,节省能量。
随机访问阶段可处理节点的加入与退出,使网络具有可扩展性,并增加节点处在休眠阶段时间的比例,减少能耗。不足之处是,为满足SEP 协议,节点间频繁的数据交换以及复杂的分布选则机制,引入了较大端到端的数据等待时延,导致额外开销。
分布式能量感知节点协议(Distributed Energy-Aware Node Activation)[5],其时间帧由调度访问阶段的控制时隙和数据传输时隙,以及随机访问阶段的信令时隙构成。调度访问阶段,在数据传输时隙前设置了一个控制时隙,节点在所分配时隙内有数据传输时,控制时隙会发出控制消息,指出接收节点,再传输数据。控制时隙内所有节点保持活跃状态,获取信道中的数据接收节点信息,若发现是数据接收方,在数据传输时隙内继续保持活跃态以接收数据;若发现不是数据接收方,则不需要接收数据,立马进入休眠状态,减少能量损耗。随机访问阶段用来处理节点的加入与退出,并保持时间同步。
设置控制时隙,使空闲节点能够及时进入休眠状态,避免串音现象,减少能耗。并且,随机访问阶段允许节点的加入与退出,增强了网络的可扩展性。不足之处是,控制时隙对节点的时间同步精度要求较高。
模式协议(Pattern MAC)[6]采用活动模式交换和时间调度表机制,是一种自适应MAC 协议。时间帧由模式重复时间阶段(Pattern Repeat TimeFrame,PRTF)和模式交换时间阶段(Pattern ExchangeTime Frame,PETF)构成。PRTF 阶段由等间隔时隙以及末尾一个特殊活跃时隙构成,在此阶段所有节点重复其当前模式。模式模型由每个时隙的0 和1 组成,1 表示节点将在时隙内启用即保持唤醒状态,0 表示节点将切换到休眠模式。PETE 阶段也分为等间隔时隙,在此阶段邻居节点交换新模式。根据节点流量,每一个节点在交换模式后,每个时隙都被分配了模式位,确定了时间调度表。活跃时隙节点可以及时发送数据,使目标节点更新模式并快速唤醒。
节点根据自身及邻居节点流量模式模型,自适应地确定休眠/活跃状态,以指数增长节点处于休眠状态及零线性增长防止休眠过度,在高负载下可以获得更高的吞吐量,低负载下节省更多能量。
此外,调度MAC 协议还有自适应控制能效协议TRACE[7],其采用竞争与数据传输分开的方式,动态预约传输数据,是一种集中式的MAC 协议。TRACE 协议适用于单跳网络,MH-TRACE[8]协议在此基础上,结合分布式和集中式对网络分簇,实现多跳通信。E-TDMA[9]能量感知MAC 协议也是分簇通信MAC 协议,收集网络节点的剩余能量、位置、状态信息,更新时隙设置,簇头管理每跳通信时间并规划路径。BMA-MAC[10]位图辅助协议是改进的高效节能E-TDMA 协议,根据节点剩余能量选择簇头,簇内节点依据需求发送大小1bit 的控制消息,簇头主要管理时隙分配。
竞争型MAC 协议依赖于节点之间可控制的竞争机制以建立通信连接,按节点需求使用信道,需要发送数据的节点通过竞争方式获取信道使用权。基于竞争的MAC 协议多采用载波侦听多路访问/冲突避免(Carrier Sense Multiple Access/Collision Avoidance,CSMA/CA)机制,节点先侦听信道,建立连接通路再发送数据,若与其他节点发生碰撞,则根据协议重发,直到数据发送成功或者重发次数达上限后放弃。
基于CSMA/CA 机制的协议,其节点可以独立执行竞争与否的决定,不需要数据交换,网络具有灵活性;采用侦听和退避机制,避免节点间发生碰撞,增强网络的健壮性。不足之处是,网络负载加强时,隐终端数量随之增加,退避机制会变得无效,冲突概率会随着高负载而加大;采用侦听机制,节点需要连续监测信道是否处于空闲状态造成大量能耗,当节点无数据传输需求处于空闲状态时侦听耗能更加明显。
竞争型MAC 协议对时钟同步要求较低,依据节点侦听/休眠调度表的不同,节点唤醒方式不同。从时钟同步方面,基于竞争的MAC 协议分为同步竞争型和异步竞争型两大类,同步竞争型选取S-MAC、T-MAC 协议,异步竞争型选取B-MAC、Wise-MAC、X-MAC 协议,对其作重点研究分析。
S-MAC 协议(Sense-MAC)[11]是基于CSMA/CA 机制,采用周期性休眠、周期性监听机制以减少空闲侦听能耗。时间帧由休眠阶段和侦听阶段构成,侦听阶段包括同步段SYNC 和数据段DATA。通过节点间周期性交换时间同步消息,本地邻居节点构建统一侦听/休眠的虚拟簇。在SYNC 内同一个虚拟簇的所有节点同步唤醒,保持活跃状态同步时钟,建立时间调度表。时间调度表建立后,数据将在DATA 内采用竞争机制进行数据传输。在DATA 阶段,节点通过交换RTS/CTS 分组,建立握手,发送节点则可开始传输数据包,虚拟簇中其他节点则切换到休眠状态直到结束,避免了空闲侦听时的能量浪费。协议采用虚拟簇,不需要全网节点时间同步,减少开销。
S-MAC 协议由于周期性休眠机制,节点转发数据包时,必须等到休眠状态结束进入下一个周期活跃状态时才可进行,即周期内只能单跳传输,缺少多跳传输能力,增加了时延。改进S-MAC 增加了自适应侦听机制,为节点提供多跳感知功能,自适应侦听允许邻居节点侦听数据传输,通过RTS/CTS 分组中的时间调度表得知此次传输持续时间,在数据包传输结束前唤醒一段时间。节点则可以立即向下一跳节点发送数据,若唤醒的邻居节点是下一跳的目标节点,则实现了周期内的两跳数据传输,减少将近一半的时延;若不是下一跳的目标节点,节点需进入下一个周期才可以发送数据,则侦听属于无效操作,导致额外开销。
S-MAC 协议(Timeout-MAC)[12]中,所有节点流量大小都遵循固定的占空比进行数据传输,流量高的节点需要更多的时间传输数据,而周期性休眠机制使节点不得不等待几个帧时间才能完成数据传输,会造成很大的时延。
T-MAC 采用超时休眠策略,引入自适应占空比机制,侦听、休眠阶段比例可调。节点在侦听阶段SYNC 后,插入一个TA(Time Active)时隙,TA>C+R+T,C 为竞争信道时间,R 为RTS 分组传输时间,T 为RTS 分组结束到CTS 分组开始传输的时间。若在TA 内没有侦听到任何事件,则认为信道处于空闲状态,节点提前结束侦听,不用等待休眠阶段到来就可直接进入休眠。
T-MAC 协议可根据网络负载,动态调整占空比,减少空闲侦听造成的能耗。不足之处是,节点在TA 时隙内若未能侦听到发送节点向接收节点发送数据的激活事件,直接进入休眠状态,引起节点“早睡”问题,造成延迟。
T-MAC 协议自适应侦听机制可有效降低周期性休眠带来的时延,但同时也造成很多非相关节点的自适应侦听,造成额外开销,在能效方面表现欠缺。低能耗E2SMAC[13]协议利用节点侦听到的RTS/CTS 消息,实现不同区域节点状态的选择,最大程度地减少无关邻居节点唤醒,减少空闲侦听和串听带来的能耗。
此外,动态占空比DSMAC[14]协议采用加倍占空比机制。侦听/休眠调度机制与S-MAC 保持一致,在高负载时将加倍占空比,使节点能够处理更多的数据包,减少时延。针对S-MAC 协议采用CSMA/CA 机制的二进制指数退避,在网络负载高时竞争加剧,冲突随之加剧,节点退避窗口变大,引起较长时延。Sift[15]协议采用CW 值固定窗口,节点使用非平均概率分布于不同的时隙发送数据,实现多个节点在不同时隙的数据无冲突发送。MAC 协议关于退避时间算法,包括倍数增加线性递减退避MILD[16]算法、队列退避算法BDQR[17]、流量预测的服务质量区分退避算法FPQoSD[18]、拥塞避免的自适应退避算法CABEB[19]、自适应随机退避算法AD-BEB[20]等,都是依据网络负载大小动态调整窗口CW 值,以减少时延。
为实现周期内多跳距离数据传输,LD-MAC[21]协议使用扩展RTS、CTS、ACK 帧进行多跳传输的节点路径预约;RMAC[22]协议基于S-MAC,在DATA 阶段传输数据包前发送一个多跳的PION 帧,并预约之后的多跳节点;类似设计多跳预约协议,PR-MAC[23]协议采用不同区域的节点选择不同长度的帧结构,依据节点帧的同步特性进行路径预约。
S-MAC 和T-MAC 协议采用周期性侦听休眠机制,需形成侦听/休眠时间调度表,网络中节点才可以同时启动,同时需要较为精确的时钟同步。因此,B-MAC 协议(Berkeley MAC)[24]引入低功耗侦听(Low Power Listening,LPL)的侦听/休眠机制能得以有效改善。采用LPL 机制,网络中节点可以根据需求制定自己的时间调度表,需周期性发送SYNC 同步消息构建时间调度表以保持所有节点时钟同步。节点在发送数据包前发送一个前导码,唤醒目标节点使之做好接收数据的准备。前导码的长度需要大于接收节点的休眠时长,发送节点在此时间段内占用信道,保证接收节点能够侦听到前导码,避免空传。
相比周期性侦听/休眠机制,B-MAC 协议有效缩短了唤醒时间,相对减少了空闲侦听功耗。不足之处是,节点无需时钟同步是以长前导码为代价,每个数据包的传输需要消耗更多能量,网络负载大时,前导码会产生相当大的开销;前导码传输过程中,节点不能获得目标节点的状态消息,无论目标节点是否已经唤醒,都必须等待前导码传输结束后才能够传输数据,增加传输延迟,且其他节点也能接收到该前导码,造成串听问题。
B-MAC 协议节点每一次将数据发送给目标节点时都必须发送一次前导码,等待目标节点唤醒。若节点在完成前传输,且在下一次传输前获得目标节点的时间调度表,即可在目标节点唤醒侦听信道时,再发送前导码,节省由长前导码带来的能量损耗。而WiseMAC 协议[25]采用局部自同步,通过节点维护本地邻居节点时间调度表,最小化前导码的长度。在目标节点完成数据包的接收,向发送节点反馈的ACK 消息中添加目标节点的时间调度表信息,发送节点收到后更新邻居调度表,确保下一次数据传输时,在目标节点唤醒前再发送前导码。
WiseMAC 协议最小化前导码,减少传输前导码的能耗,且很大程度上提高目标节点侦听到前导码的正确率,减少数据空传发生;小的前导码也减少了邻居串听带来的能耗。不足之处是,邻居节点休眠/唤醒调度时间一般不一致,节点需要更新并存储邻居节点的时间调度表,耗能且会占用存储空间,网络负载较大时,存储空间被过多占用,增加协议实现的复杂度。
X-MAC 协议[26]采用短小的脉冲前导码机制且引入握手机制,优化前导码过长以及邻居节点串听问题。每个脉冲前导码中都带有目标节点的地址信息,所有接收到脉冲前导码的节点,都会与前导码中的目标节点地址信息对比,若不是目标接收节点,节点立即返回休眠状态继续周期性任务循环;若是目标接收节点,则在前导码间隙内反馈给发送节点一个ACK 帧,与之建立连接,发送节点立刻停止继续发送脉冲前导码,转而开始发送数据包。采用LPL 机制的B-MAC 协议中,接收节点在完成当前数据包接收后依然保持活跃状态的时间内,若有其他节点想与之通信,必须等待下一周期发送前导码确认后,才能够发送数据,增加时延与开销。对此,X-MAC 协议中引入随机退避,接收节点在当前传输完成后,会保持一段最大随机退避时间的活跃状态,而其他节点能够侦听到反馈给当前发送节点的ACK 帧,之后随机退避一段时间,省略前导码发送步骤,直接向目标节点发送数据。
X-MAC 协议采用脉冲前导码机制,减少传输长前导码以及节点过度侦听的能耗。不足之处是,接收节点在保持随机退避活跃状态的时间内,若没有其他节点与之通信,操作无效会增加时延,且可能造成串听。
B-MAC、WiseMAC、X-MAC 协议都是采用前导码机制的协议,此外还有稀疏拓扑和能源管理STEM[27]协议依赖正在传输的小数据包,而不是单一的长前导码,减少侦听阶段时间。节点配置两个收发机,主收发机和唤醒收发机,在发送节点发送唤醒数据包后侦听信道,若侦听到来自目标节点的反馈,再进行数据传输则没有能量浪费。
WiseMAC 协议和STEM 协议都通过缩短前导码减少能量损耗,CSMA-MPS[28]协议结合这两者,采用STEM 协议中的多个小唤醒数据包,同时采用WiseMAC 协议中邻居节点时间调度表,再发送唤醒数据包,改善性能。类似长前导码设计的协议还有微帧MFP[29]协议、低功耗分散Speck-MAC[30]协议。
混合型MAC 协议旨在结合调度与竞争两种方式进行信道分配权衡,根据网络负载大小,调整信道获取方式。通常负载小时以竞争为主,通信简易灵活且扩展性好;负载大时以调度为主,通信时延较小且避免碰撞和串听。但混合型协议为了满足网络要求,设计相对复杂,运行协议控制开销大。
本文选择典型的混合型MAC协议,即IEEE802.15.4MAC协议和Z-MAC 协议的研究。
IEEE 802.15.4 网络标准[31]是为低数据速率而设计,其中MAC 协议结合了基于调度和竞争的两种MAC 协议。网络模式分为信标使能和非信标使能两种模式,非信标使能模式下,网络中节点采用非时隙CSMA/CA 机制竞争信道并传输数据。
信标使能模式引入占空比,时间结构采用有固定工作周期的超帧,超帧由活跃周期和非活跃周期组成,数据传输集中在活跃期,非活跃期节点进入休眠状态以减少能耗。活跃期包含16 个等间时隙,进一步划分为信标周期、竞争访问期(Contention Access Period,CAP)和非竞争访问期(Contention-Free Period,CFP)即保证时段(Guaranteed Time Slot,GTS)。协调器在信标周期内广播信标帧,全网节点时钟同步且分配时隙,在竞争访问期,节点利用时隙CSMA/CA 机制竞争信道,在给定的时隙内进行数据传输。非竞争访问期是由信标帧依据网络流量设置,是可选的,协调器针对高优先级节点传输要求,在非竞争访问期分配了GTS 传输数据。
IEEE802.15.4 MAC 协议为小负载网络节点接入信道提供了一种灵活的方式,提高网络扩展性且通过GTS 机制保证数据传输。不足之处是,GTS 可用时隙数目最大为7,无法满足高负载网络数据传输。超帧活跃周期长度必须通过超帧指标(SuperframeOrder,SO)等参数预先配置,不能实时扩展以处理突发流量负载,导致带宽受限。
在混合MAC 协议IEEE 802.15.4 基础上,Queue-MAC[32]协议采用标准IEEE 802.15.4 MAC 的超帧结构,将“队列指示器”定义为IEEE 标准MAC 包有效载荷的第一个字节,以此描述节点的负载,队列长度作为网络流量指示器,根据当前网络流量动态调整占空比。基于Queue-MAC,iQueue-MAC[33]协议引入跳频和路由节点突发传输机制,增强协议对节点多跳和多信道接入的支持。pQueue-MAC[34]在Queue-MAC 的竞争阶段使用序言采样检查低流量条件下的潜在通信。即通过信道监听,可以确定哪些节点选择休眠以节能,哪些节点选择保持活跃以进行数据交换。节点队列中的数据包需等待协调器广播下一信标帧后才能发送,时延很大。因此,eQueue-MAC[35]协议采用在竞争周期和非竞争周期间插入次信标帧,实现当前超帧内时隙分配。
Z-MAC 混合协议(Zebra MAC)[36]以CSMA 竞争机制为基准,竞争加剧时以TDMA 调度机制分配信道使用权。ZMAC 协议包括启动阶段和通信阶段两个阶段,启动阶段由邻居发现、时隙分配、本地时间帧交换、全局时间同步4 步骤构成。协议运行之初,邻居发现阶段每个节点通过信息交换收集两跳邻居节点信息,再执行DRAND 算法为每个节点分配时隙,与两跳范围邻居节点时隙不会冲突,确保节点一跳范围数据传输不会发生碰撞。采用本地帧结构,节点时隙分配后,指定自身本地时间帧的大小,与节点两跳范围邻居节点数相对,确保节点两跳范围内所有节点的数据传输都不会发生碰撞。网络初始化后,所有节点获得全局时钟,且分配了时隙,在此时隙内,时隙所有者的优先权最高。网络负载小、竞争低的情况下,节点处于低冲突级别状态,可在所分配时隙内优先发送数据,若没有数据传输,其他所有节点都可通过竞争“窃取”信道;网络负载大、竞争激烈情况下,节点处于高冲突级别状态,会发出一个显示反馈通知(Explicit Contention Notification,ECN)消息给两跳邻居节点,禁止竞争时隙,只有时隙所有者及其一跳邻居可以竞争信道。时隙所有者优先级机制实现了依据竞争程度隐式切换CSMA 和TDMA 机制。
Z-MAC 协议与基于竞争的协议相比,在高负载时有更少能耗,但为了避免冲突,限制了节点发送数据的可选择时隙,增加了时延;与基于调度的协议相比,在低负载时可维持与之相当的时延,但仍然避免不了隐终端问题。且ZMAC 采用的ECN 机制竞争激烈时容易聚爆,对此需要通过更多控制抑制聚爆,从而增加了开销。
针对Z-MAC 协议应用的DRAND 算法复杂度较高问题,设计一种基于能量和拓扑因子的分布式TDMA 时隙调度E-T DRAND[37]算法。该算法考虑了网络节点的邻居数和剩余能量,降低了消息复杂度、时间复杂度,从而减少了算法的执行时间和能量消耗,提高了TDMA 时隙调度效率。但当连续时隙请求发生时,相邻节点之间交换数据包过多,会导致时隙分配时间和轮数不收敛,这将增加数据包交换的数量和时隙分配的运行时间。在此基础上,通过引入Lamport 的面包树算法思想,提出基于指数回退规则和能量拓扑因子的分布式TDMA 调度EB-ET DRAND[38]优先级控制算法,对时隙分配的优先级进行适当调整。
无线传感器网络研究热度不减,而MAC 协议对网络整体性能有直接影响。本文将MAC 协议分为调度型、竞争型和混合型三大类,并对典型的MAC 协议进行系统梳理和分析比较。研究发现,调度型MAC 协议网络扩展性相对较差,但低负载时空时隙易造成能量浪费;竞争型MAC 协议复杂度低,但高负载时冲突频繁易增加能耗;混合型MAC协议更能适应网络动态变化,但协议复杂度高且运行开销大。通过研究可知,现有的MAC 协议还没有一种能够适合所有WSN 应用且保持高性能。因此,MAC 协议设计在满足网络需求且提高整体性能方面还有较大改进空间。