基于节点分级的NNSs跨层MAC协议设计
2022-06-25顾昊伦赵国荣姚金博
顾昊伦, 赵国荣, 姚金博, 高 超
(1. 海军航空大学岸防兵学院, 山东 烟台 264001; 2. 国电南瑞科技股份有限公司, 江苏 南京 211106)
0 引 言
组网导航系统(networked navigation systems, NNSs)是一类以集群运动体为对象,以获取目标运动体实时导航信息为核心任务并将现代导航技术与无线网络技术相结合的导航技术的总和,用以解决诸如卫星导航禁用、导航装备参差不齐等场景下导航体编队控制与数据共享等问题,最终实现网络内导航性能的整体提升[1]。
实现组网导航的基础是针对导航体传感器网络设计一套高效的组网通信协议。其中,媒介访问控制(medium access control, MAC)协议位于数据链路层,是保证NNSs高效利用无线信道的关键机制。与传统Ad-hoc网络相比,NNSs MAC协议的设计难点[2]为:① 节点高机动性;② 低通信时滞与丢包率需求;③ 节点能量受限更为明显;④ 接入需求复杂,服务类型多样;⑤ 视距/超视距传输需求。
针对问题④,文献[3]和文献[4]分别提出了区分服务的低时延MAC (diffserv-based low-delay MAC, DLD-MAC) 协议和分布式时/频分多信道MAC(distributed time/frequency division multi-channel MAC, DTFMM) 协议,针对不同类型服务对时延敏感度和服务质量(quality of service, QoS)的要求差异,设计对应的优先级别和服务方式。针对问题⑤,文献[5]利用Multi-hop中继转发思想设计了随机协作MAC (random cooperative MAC, CoopMAC)协议,实现了信息的远距传输。文献[6]和文献[7]则利用定向天线的高增益方向性波束设计了双感知定向MAC(dual sensing directional MAC, DSDMAC)协议和具备远距通信能力的定向MAC(directional MAC with long-range communication ability, DMAC) 协议,有效提高了空间复用率,扩大了传输范围。但是,上述文献均未考虑问题①~问题③对MAC协议设计带来的影响,尤其是普遍存在于NNSs中的问题①。事实上,节点的高速移动往往会加剧问题②和问题③,这使得适用于NNSs的MAC协议更加复杂。
针对问题①~问题③,目前的学者提出了两类解决方案,一类是基于无竞争的具有移动性检测的MAC协议,另一类是基于竞争的具有移动性检测的MAC协议。无竞争的MAC协议并不适合NNSs这种大规模组网系统。因此,下文重点阐述基于竞争的MAC协议。
基于竞争的具有移动性检测的MAC协议通常具有两种通信管理机制。第一种机制的基本思想是同步化某一领域中节点的活跃/睡眠周期,这种机制下网络被整体分为多个虚拟簇群,每个簇群遵循相同的时间规划表。文献[8]基于此提出了支持移动节点的MAC (mobile-supporting MAC, MS-MAC)协议,该协议检测移动节点及其邻节点交互的同步包的信号接收强度指示器(received signal strength indicator, RSSI)变化并估计移动节点的速度。当移动节点到达虚拟簇群边界时,MS-MAC加快了同步速率,使移动节点能够迅速更新时间规划表,避免了簇间切换阶段长时间的断连。但该协议会给移动节点及其邻节点带来巨大的开销,且RSSI本身并不能提供足够精准的移动性检测。文献[9]针对文献[8]中的不足,设计了具备速度响应的移动性感知MAC(mobility-aware speed-respond MAC, MS-SMAC)协议,改进了移动性检测算法,主动响应移动节点速度变化,但需要付出额外的开销,尤其是当移动节点数目增加时,能量节省率大幅降低。文献[10]则变换思路,利用簇群的边界节点包含相邻簇群时间规划表这一特点,设计了支持移动节点的自适应MAC(adaptive mobility-supporting MAC, AM-MAC)协议,实现了平滑的簇间切换。但该协议需要移动节点在完成切换前始终保持在边界节点区域,一旦移动节点速度过快,那么极有可能导致切换失败,且该协议需要预定义移动节点,并不符合NNSs实际工作场景。
第二种机制是具有前导采样的异步MAC协议。这类协议允许节点单独管理自身时间规划表,每次数据传输前需要进行专门的同步过程。文献[11]基于此思想设计了基于任播的支持移动节点的Contiki操作系统下的MAC(mobility-supporting anycast-based ContikiMAC, M-ContikiMAC)协议,该协议使用任播传输机制改善数据包的突发传输情况。但任播模式可能导致数据包重复以及确认包冲突。文献[12]针对文献[11]的缺点,提出了移动性增强的Contiki操作系统下的MAC(mobility-enhanced ContikiMAC, ME-ContikiMAC)协议,解决了数据包重复以及确认包冲突的问题。但如果移动节点速度过快,其将多次改变目标接收机,导致网络内大量节点重新连接,大大降低了能量节省率。文献[13]则设计了一种新的邻居发现机制,并以此提出了支持移动节点的适用于物联网和无线传感器网络突发流量的MAC(mobility-supporting MAC sheme for bursty traffic in IoT and WSNs, MobIQ)协议,实现了数据包突发传输情况下目标节点的高效切换。但该协议仍未解决确认包冲突的问题,且上述文献均明确指出移动节点不能参与路由过程,这与NNSs实际工作场景不符。事实上,具有前导采样的异步MAC协议由于异步特性,导致其在NNSs这种高度动态的环境中复杂度增加,通信时滞更为明显[14]。
本文综合考虑上述文献中的优缺点,力求在针对NNSs设计的CRTCC路由协议基础上,设计一套适用于NNSs的GN-MAC协议,旨在解决以下5个问题:① 通过路由层构建交叉路由树的过程协作定义节点级别,完成MAC层自适应虚拟分簇,使移动节点实现平滑的簇间切换;② 通过定义GN-MAC包格式,引入路由层的路径信息;③ 通过设计一种改进型移动性检测算法,为移动节点提供自主且精确的移动性检测;④ 通过设计基于优先级的竞争机制区分各级别节点访问媒介的优先级,减小通信时滞并提高能量节省率;⑤ 通过设计多信道通信方案提高吞吐量,进一步减小通信时滞,解决数据包突发传输情况下的信道占用问题。
1 问题描述
1.1 网络模型及CRTCC路由协议概述
NNSs网络模型基本设置参考CRTCC路由协议中的规定。设NNSs共有N个节点,1个汇聚节点,其中移动节点的个数为M(M≤N)。节点测距方式为基于信号到达时间法(time of arrival, TOA)的组网测距[15],解算导航信息采取三维球面定位算法[16]和四元数无迹卡尔曼滤波(unscented Kalman filter, UKF)姿态估计算法[17]。初始时刻前,网络内所有节点通过文献[18]设计的NNSs通信协议获取了初始导航信息并建立了网络空间局部坐标系。设局部坐标系下x轴范围[0,X],y轴范围[0,Y],z轴范围[0,Z]。
CRTCC路由协议规划了移动汇聚节点的路径,创建了以移动汇聚节点为中心的交叉区域并构建了交叉路由树,而对于交叉区域外的节点制定了适用于NNSs的簇头选取策略,构建了链式簇群结构,完成了数据传递路径的规划。GN-MAC与CRTCC的融合主要体现在:① GN-MAC包中加入CRTCC的路由信息,包括CRTCC所决定的下一跳节点ID号以及TOA测距所需时间戳(time stamp, TS);② GN-MAC进行节点分级时考虑了CRTCC中交叉路由树的特殊地位;③ GN-MAC规定了路由上的节点享有更高优先级去访问媒介;④ GN-MAC针对路由树上的节点采取了不同的簇间切换策略。
1.2 GN-MAC包格式
GN-MAC包格式以采取超时策略的MAC协议(timeout MCA, T-MAC)包格式[19]为基础进行修改,具体定义如图1所示。其中,GN-MAC包相对于T-MAC:① 报头均新添一个4位的Node_LV字段,用于标识每个节点的级别,从而确定哪些节点能够优先访问媒介并允许与移动节点协作实现高效的通信管理和平滑的簇间切换;② 增加了切换请求(handover request, HReq)和切换同步(handover synchronization, HSyn)两种控制包,用于实现移动节点平滑的簇间切换;③ Syn、HReq和HSyn中新添了一个16位的TS字段,使得同步化阶段能够完成TOA测距,从而确保CRTCC路由协议正常运作;④ Syn和HSyn中的Schedules字段是动态扩展的,一个节点允许包含最多4种不同的时间规划表,每种以20位进行编码;④ RTS中加入一个16位正交信道可用状态(statuses of orthogonal channels available, SOCA)字段,CTS中加入一个4位的数据信道(data channel, DC)字段,发送节点和接收节点通过这两个字段协商决定用于发送数据包的信道;⑥ RTS和CTS中均增加一个16位的NT_hop字段,用于标识CRTCC路由协议所规划的路径中下一跳节点的ID号,该节点一旦接收/侦听到RTS/CTS包,将以最高优先级主动竞争发送FRTS(future-RTS)包;⑦ FRTS中新添一个16位的未来数据传输时间(time of future data transmission, TxTime_F)字段,发送节点使用该字段告知预期的接收节点计划的未来数据传输时间,从而保证接收节点能够在特定的时间保持活跃,以接收发送节点传输的控制包和数据包。
2 GN-MAC协议算法
GN-MAC协议算法主要由5部分组成,分别为同步化及节点分级算法、移动性检测算法、簇间切换算法、基于优先级的竞争算法、多信道算法。
2.1 同步化及节点分级算法
GN-MAC采取节点周期性睡眠机制节省能量,若要保证节点之间能够完成通信,必须使发送节点和接收节点遵循相同的睡眠/活跃时间规划表。下文将首先完成同步化及节点分级。
算法 1同步化及节点分级
步骤 1汇聚节点立刻创建自身时间规划表,初始化Syn包中TS,将Syn包中的Node_LV置为Sink,随后广播Syn包,与此同时,网络内其余节点中有一部分被随机指定为簇首(cluster head, CH),同样立刻创建自身时间规划表,并将Syn包中的Node_LV置为CH,初始化TS,随后广播Syn包;
步骤 2剩余节点侦听Syn包,一旦接收到来自Sink或CH的Syn包,该节点采取其时间规划表,更新TS,完成TOA测距,将自身定义为普通节点(normal node, NN),随后将其Syn包继续转播;
步骤 3不断重复步骤2的过程,如果某一个节点在一定的侦听期间内没有接收到任何Syn包,则将其认为是CH,初始化TS及Node_LV,随后立刻广播其Syn包;
步骤 4第一轮同步过程中,路由层同步进行交叉区域构建与路由树生成,GN-MAC将重新定义路由树上节点的Syn包,将其Node_LV定义为路由树节点(node in routing tree, RT);
步骤 5所有节点全部更新完时间规划表后,遵循相同时间规划表的节点形成一个虚拟簇群,对于具有多个不同时间规划表的节点,首先确认其Node_LV是否为RT,若不是,则将其定义为一级边界节点(LV1 boarder node, BN1),该节点的第一个时间规划表定义为主时间规划表,其余时间规划表按照对应接收的Syn包的RSSI值降序排列,随后广播Syn包;
步骤 6接收到BN1广播的Syn包的节点,同样确认其Node_LV是否为RT,若不是,则将其定义为二级边界节点(BN2),其主时间规划表保持原先的不变,次时间规划表采取距离其最近的BN1的第一个次时间规划表,随后广播Syn包;
步骤 7接收到BN2广播的Syn包的节点,同样确认其Node_LV是否为RT,若不是,则将其定义为三级边界节点(BN3),其主时间规划表保持原先的不变,次时间规划表采取距离其最近的BN2的次时间规划表;
步骤 8Sink再次广播其Syn包,其余节点一旦接受/侦听到来自Sink或RT节点的Syn包,确认其Node_LV是否为RT,如果是,则重新采取Sink的主时间规划表作为自身的主时间规划表,随后广播Syn包,直到所有RT节点完成主时间规划表的更新。
至此,算法1完成了同步化并定义了7种节点级别(Sink、RT、BN1、BN2、BN3、CH、NN),对于Sink和RT节点,无论是快速还是慢速移动节点都将迅速切换其时间规划表,以实现数据包迅速传递至Sink,对于BN1、BN2和BN3,移动节点也将采取不同的切换策略。此外,Sink和RT节点相对于其他级别的节点也将享有更高的优先级去访问媒介,上述内容均在下文设计的算法中得以体现。
2.2 移动性检测算法
网络进入移动性检测阶段后需要GN-MAC提供一个足够精准且不需要额外硬件、能量或带宽资源的移动性检测算法。由于TOA测距需要承担NNSs导航信息解算的任务,且TOA测距为追求精度常在硬件或软件上增加滤波器,因此TOA测距不适合额外承担移动性检测的任务。下文将利用RSSI和链路质量指示(link quality indicator, LQI)[20]设计一种精准高效的移动性检测算法。
算法 2移动性检测
步骤 1节点侦听媒介,同时转步骤10,若一段时间内接收/侦听到一个GN-MAC包,则转步骤2,否则继续侦听媒介;
步骤 2判断该GN-MAC包的发送者是否已经存在于邻居列表中,若已经存在,则转步骤3,否则将该邻居节点信息加入邻居列表,并转步骤12,这里邻居列表是所有节点均会维护的,其中记录了发送者的ID号以及接收的最新GN-MAC包的RSSI、LQI和TS;
步骤 3判断最新接收的GN-MAC包RSSI与LQI是否分别大于阈值thr1与thr2,若大于,则转步骤四,否则返回步骤1。thr1与thr2分别代表RSSI和LQI的最大容许变化值,需要根据目标环境中的经验测量值来预定义;
步骤 4利用文献[21]所提对数正态阴影模型估计节点距离变化Δd并根据TS计算移动速度v,Δd表达式如下:
Δd=ω1ΔdRSSI+ω2ΔdLQI
(1)
其中,ω1和ω2分别为基于RSSI的距离估计ΔdRSSI和基于LQI的距离估计ΔdLQI的权重,且满足ω1+ω2=1;
步骤 5更新邻居列表中对应ID号的信息,判断计时器T1是否已经触发,若已经触发,则直接进入步骤6,否则触发T1,令计数器C1=0,再进入步骤6;
步骤 6C1=C1+1,判断C1是否大于阈值thrC1,若是,则转步骤7,否则返回步骤1,thrC1代表了判断节点移动性的严格程度,为了防止移动节点周围的静止邻居节点被误认为是移动的,thrC1必须大于等于2;
步骤 7判断计时器T3是否被触发,若已经触发,则取消T3并重新触发T3,否则触发T3;
步骤 8根据v的大小改变该节点的Node_LV,标识该节点的移动性,移动性级别共3种,分别为一级移动节点(level 1 move node, MN1)、MN2、MN3,代表低速移动、中速移动、高速移动;
步骤 9C1=0,C2=0,取消T1、T2,返回步骤1;
步骤 10遍历该节点邻居列表,将一段时间内没有更新的邻居节点从邻居列表中删除,转步骤12;
步骤 11判断计时器T3是否超时,若超时,则令v=0,返回步骤9;
步骤 12判断计时器T2是否已经触发,若已经触发,则直接进入步骤13,否则先触发T2,令计数器C2=0,再进入步骤13;
步骤 13C2=C2+1,判断C2是否大于阈值thrC2,若是,则转步骤7,否则返回步骤1, thrC2代表了判断节点移动性的严格程度,为了防止移动节点周围的静止邻居节点被误认为是移动的,thrC2必须大于等于2。
至此,算法2完成了任意一个节点的实时自主移动性检测,其中涉及了两个计数器C1、C2,3个计时器T1、T2、T3。C1与T1协作完成了基于RSSI和LQI的移动性检测过程,C2和T2是考虑了网络中长时间缺乏数据流量的情况下,协作完成了基于分析邻居节点变化的移动性检测过程。C1实际上计的是动态链路的个数,C2实际上计的是邻居节点变化的次数。T3则是实现实时检测节点移动性的计时器,T3超时意味着该移动节点一段时间内没有再次被认定为移动节点,实际就是该节点从移动状态变为静止状态。需要特别说明的是,T1或T2一旦超时,将会自动重置C1=0或者C2=0并取消自身,然后重新侦听媒介。算法2流程图如图2所示。
2.3 簇间切换算法
算法1和算法2一共确立了10种节点级别(MN3、MN2、MN1、Sink、RT、BN1、BN2、BN3、CH、NN),前3种是移动节点。当移动节点从一个虚拟簇群移动到另一个虚拟簇群时,将依靠BN同时遵循这两个虚拟簇群时间规划表的特性完成平滑的簇间切换。需要特别说明的是,移动节点一旦移动到Sink与RT节点附近,那么无论其速度快慢,将直接采取Sink和RT的主时间规划表,从而完成数据向汇聚节点的快速传输。
算法 3簇间切换
步骤 1节点侦听媒介,若MN接收到来自Sink、RT、BN的Syn包,则转步骤2,若MN接收/侦听到Sink、RT、BN除Syn包的任意一种GN-MAC包,则转步骤3,若Sink、RT、BN接收/侦听到来自MN的任意一种GN-MAC包,则转步骤4;
步骤 2若Syn包(或HSyn包)中Node_LV为Sink或RT,则无论自身处于何种MN级别,直接转步骤8,若Node_LV为BN1,则转步骤7,若Node_LV为BN2,则转步骤6,若Node_LV为BN3,则转步骤5;
步骤 3MN向Sink、RT、BN发送HReq包, Sink、RT、BN接收到HReq包后将会立刻响应HSyn包,其中包含簇间切换所需时间规划表,MN一旦接收到HSyn包,转步骤2;
步骤 4Sink、RT、BN立刻向MN发送HSyn包,MN一旦接收到HSyn包,转步骤2;
步骤 5判断自身Node_LV是否为MN3,若是,则转步骤8,否则返回步骤1;
步骤 6判断自身Node_LV是否为MN3或MN2,若是,则转步骤8,否则返回步骤1;
步骤 7判断自身Node_LV是否为MN3或MN2或MN1,若是,则转步骤8,否则返回步骤1;
步骤 8MN遵循Syn包(或HSyn包)中第一个次级时间规划表及其原主时间规划表,同时触发计时器T4,转步骤9;
步骤 9判断T4是否超时,若超时,则删除自身所有时间规划表,返回步骤1,否则转步骤10;
步骤 10持续侦听媒介,若在一定时间间隔内,MN先后接收到来自Sink或RT的Syn包和BN的Syn包,说明MN正在远离交叉区域,转步骤11,若MN先后受到来自不同等级BN的Syn包,且BN等级由小到大,说明MN正在向新簇群内部移动,转步骤12,若接收到来自CH或NN的Syn包,则转步骤13;
步骤 11将BN的时间规划表加入自身时间规划表,删除原主时间规划表,取消T4,返回步骤1;
步骤 12删除未使用的时间规划表,取消T4,返回步骤1;
步骤 13清除所有时间规划表,采取CH或NN的时间规划表,取消T4,返回步骤1。
至此,算法3完成了基于节点级别的最优簇间切换决策过程。其中,步骤1、步骤3、步骤4规定了MN开始进行簇间切换的3种情况;步骤2、步骤5、步骤6、步骤7为基于节点级别的簇间切换机制;步骤8~步骤13实际上考虑了MN完成簇间切换后,长时间遵循两种以上时间规划表将导致能量浪费的情况,制定了移除旧时间规划表的机制。需要特别说明的是,在移除旧时间规划表机制中,一旦MN判断出自身正在远离交叉区域,那么将直接删除原先采用的Sink和RT的主时间规划表,转而采用来自BN的Syn包中的时间规划表。这样做是为了防止MN下一个侦听周期内又接收/侦听到来自Sink或RT的GN-MAC包,导致MN误认为自身正在进入交叉区域,从而使得MN在下次簇间切换前一直保持Sink与RT的主时间规划表,造成能量浪费。算法3流程图如图3所示。
2.4 两种通信管理算法
GN-MAC帧结构由活跃周期与睡眠周期组成。活跃周期包括同步周期PSyn、RTS/CTS周期PRTS/CTS、FRTS周期PFRTS以及可能存在的数据传输和确认(DATA/ACK)周期PDATA/ACK。活跃周期表达式为
Pawake=f(t)PSyn+n1(PRTS/CTS+PFRTS)+n2(PDATA/ACK)
(2)
式中:f(t)为周期性脉冲函数;n1≥1,n2≥0,n1、n2均为整数。
PSyn、PRTS/CTS、PFRTS和PDATA/ACK除了传输各自周期对应的数据包以外,还涉及到竞争时间CT以及短帧间隔时间TSIFS。这些周期与CT、TSIFS以及传输各类GN-MAC包的时间TX之间的关系如下所示:
PSyn≫max CTSyn+TXSyn
(3)
PRTS/CTS=CTRTS+TXRTS+TSIFS+TXCTS
(4)
PFRTS≥max CTFRTS+TXFRTS
(5)
PDATA/ACK=TSIFS+TXDATA+TSIFS+TACK
(6)
式中:CTSyn和CTFRTS均是由空闲信道评估(clear channel assessment, CCA)时间TCCA以及随机退避时间Tr组成,且两者表达式如下所示:
max CTSyn=max CTFRTS=TCCA+maxTr
(7)
需要特别说明的是,为了提高能量节省率,避免与任何潜在的邻居节点发生误通信,节点进入PRTS/CTS后,若没有再次收到任何GN-MAC包,将自动进入睡眠状态。这一段时间定义为超时时间To。To必须至少能够包含PFRTS,这样才能使节点确认在该帧内没有需要传输给自己的GN-MAC包,GN-MAC帧结构示意图如图4所示。因此,To表达式如下所示:
To=maxPRTS/CTS+PFRTS
(8)
下文将分别在PRTS/CTS和PDATA/ACK内设计基于优先级的竞争算法以及多信道算法。
算法 4基于优先级的竞争
定义5个优先级别,由低到高依次为r1、r2、r3、r4、r5。r1对应BN、CH和NN,r2对应Sink和RT,r3对应MN1,r4对应MN2,r5对应MN3。基于优先级的竞争算法重新设计PRTS/CTS,引入5段slot,按时间先后顺序对应不同的优先级别,分别记为s5、s4、s3、s2、s1。低等级的节点需要等待直到属于自己的slot才能够准备发送RTS/CTS包,定义这段等待时间为Tw。
s1~s5的时间间隔并不相同,其中,s5、s4、s3时间间隔相同,其表达式如下所示:
(9)
s2表达式如下所示:
(10)
s1表达式如下所示:
s1=TCCA+3maxTr
(11)
式(9)与式(10)中,TXRTS/2的含义是:在下一段slot之前,低优先级的节点需要侦听一个最小位以检测媒介是否繁忙,并相应地放弃预留媒介,因此高优先级的slot至少得包含TXRTS/2时间段,而s1由于是最低级别的slot,不需要包含TXRTS/2时间段。需要特别说明的是,由于引入了TXRTS/2时间段,高优先级节点若在PRTS/CTS内未能成功发送RTS包,则其可以重新占用低优先级节点预留的媒介,只需等待侦听到低优先级节点发送RTS包后立刻发送自身RTS包即可。式(10)与式(11)中多倍的maxTr项含义是:NNSs中非MN节点的个数可能远远大于MN节点的个数,因此需要更长的maxTr,由此也可得r3、r4、r5优先级别的节点CTRTS表达式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,maxTr]
(12)
r2优先级别的节点CTRTS表达式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,2maxTr]
(13)
r1优先级别节点的CTRTS表达式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,3maxTr]
(14)
综合上述内容,可得max CTRTS实际就是r1级别节点发送RTS/CTS包的情况,其表达式如下所示:
max CTRTS=s1+s2+s3+s4+s5
(15)
重新设计的PRTS/CTS如图5所示,其中图5(a)为r3、r4、r5优先级别节点的PRTS/CTS(以r4级别为例),图5(b)为r2优先级别节点的PRTS/CTS,图5(c)为r1优先级别节点的PRTS/CTS。
算法 5多信道数据传输
GN-MAC利用IEEE802.15.4规定的2.4 GHz频带内的16个正交信道[22],将第一个信道定义为控制信道(control channel, CC),在其上交换所有的GN-MAC控制包,其余15个信道全部定义为数据信道(data channel, DC)。每个节点维护一个SOCA,主要包括信道定义、编号及状态,如图6所示。当一个新的帧开始时,节点将初始化所有信状态为0,代表所有信道空闲可用。若一个节点所有数据信道状态都被标记为1,则代表当前所有信道都处于忙碌预留状态,该节点自动将其DATA/ACK推迟至下一帧。每一帧内,发送节点和接收节点都将协商决定一个空闲可用的信道完成DATA/ACK,协商决定结果将由接收节点通过CTS包告知发送节点,其余邻节点通过侦听CTS包得到选用的DC并将该DC状态置为1。单播DATA包具体过程将在第2.5节详细阐述。
有两种特殊情况需要说明,一是从节能和降低时滞的角度出发,若需要传输的DATA包的大小非常小,那么可以跳过RTS/CTS直接在CC上传输该DATA包,一旦传输完成,邻节点将继续正常侦听媒介,等待是否有发送节点竞争发送RTS包。二是从避免冲突的角度出发,GN-MAC处理广播DATA包时,同样不采用RTS/CTS而直接在CC上广播DATA包,一旦广播完成,邻节点继续正常侦听媒介,等待是否仍有需要发送的RTS包。
2.5 单播DATA包完整过程
考虑在同一单跳邻域中多个发送节点竞争发送RTS包的情形。节点在PSyn内完成同步,随后,所有想发送DATA包的节点都将在PRTS/CTS内基于算法4完成竞争,竞争成功的节点将向预期接收节点发送包含其SOCA的RTS包,接收节点将自身的SOCA与RTS包中的SOCA进行比较,从状态为0的DC中随机挑选出一个,并加入CTS包中的DC字段,反馈给发送节点。与此同时,其余邻节点侦听RTS/CTS包,从中确定将要进行的DATA/ACK所选择的DC,改变各自SOCA中对应DC的状态。
接下来,所有节点进入PFRTS,同时在各自的CC上侦听潜在的FRTS包。若节点想要发送DATA包,则将在该PFRTS内发送FRTS包,其中包含了TxTime_F,预期的接收节点将通过TxTime_F字段在未来某一时刻与发送节点同时活跃以接收发送节点的RTS包。
在一帧间隔内,需特别说明以下几点原则。
原则 1决定FRTS包中的TxTime_F字段时有两种情况,一是FRTS包的发送节点和接收节点均不是当前将要进行DATA/ACK的节点,那么这两个节点将在PFRTS后立刻竞争发送RTS包并在完成竞争后再次经历一个PFRTS,侦听是否有需要发送数据的节点,随后完成DATA/ACK;二是FRTS包的发送节点或接收节点是当前将要进行DATA/ACK的节点,那么这两个节点将基于接收/侦听到的RTS/CTS包中的网络分配矢量(network allocation vector, NAV)字段,规划当前帧的未来某一时刻使两个节点同时活跃完成RTS/CTS过程。
原则 2其余邻节点在侦听RTS/CTS的过程中,将自身ID与其中的NT_hop字段进行比较,如果自身是路由层所决定的下一跳节点,那么其将在PFRTS内以最高优先级主动竞争发送FRTS包。
原则 3节点在一帧内既可以发送FRTS包,也可以接收另一个FRTS包,甚至可以接收多个FRTS包,其余所有处于活跃状态的邻节点都将侦听到这些FRTS包。当一个节点需要接收多个FRTS包时,发送节点将在PFRTS内按照节点优先级以及原则2进行竞争,然后再根据原则1中所述原则规划TxTime_F。其余需要发送的FRTS包将在该帧内的下一次活跃期间继续竞争。这里的竞争需要将节点分为两类,一类是发送/接收节点均不是当前将要进行DATA/ACK的节点,另一类是接收节点是当前将要进行DATA/ACK的节点。如果存在多组第一类情况的节点竞争发送FRTS包,则按照发送节点优先级顺序在PFRTS后依次完成各自的数据传输过程。
原则 4按照原则3最后所述原则,每一帧开始时刻有可能出现多组节点进行DATA/ACK,因此规划节点下一次活跃时必须遵循在此之前所有DATA/ACK完成这一原则。此外,节点每次成功竞争到发送FRTS包时,都将检查该帧剩余时间能否足够包含未来数据传输的整个活跃周期,若不能,则节点主动放弃发送FRTS包并进入睡眠状态,等待下一帧开始重新竞争发送FRTS包。
GN-MAC在多节点竞争情形下单播DATA包完整过程示例如图7所示。
3 算例仿真
本文将利用Matlab进行仿真,记网络区域大小为200 m×200 m×200 m,N=100,有效数据传输速率为300 kbps,发送/接收模式功耗为50 mW,侦听模式功耗为1 mW,睡眠模式功耗为0.01 mW。每次仿真持续时间为600 s,一帧间隔为600 ms。
为确定最优PFRTS大小,在上述网络区域中,选取10 m×10 m×10 m范围内6个节点,该6个节点属于同一单跳邻域,且Node_LV均为NN。考虑3种情景,分别假设发送节点个数为1、2和4个,每个发送节点周期性地挑选一个随机邻节点作为其预期的接收节点,数据包生成速率为 1 Pkt/s。
对于每种情景,均令PFRTS分别等于0 ms,1 ms,…,10 ms,每个PFRTS值都进行10次仿真,研究每次数据包成功被接受时的平均数据包投递率(packet delivery ratio, PDR)和平均能耗(10次仿真结果的平均值)。仿真结果如图8所示。
由图8可知:① 对于只有1个发送节点的情况,PDR随PFRTS增大几乎不变,这是因为没有其他节点与其进行竞争,与此同时平均能耗逐渐增大,这是因为节点在PFRTS内需花费额外的能量完成侦听;② 对于多发送节点的情况,若PFRTS比较小,则PDR损失很大,这是因为多节点竞争使得在短PFRTS内,节点很难完成未来数据传输的规划,然而随着PFRTS增大,PDR并不是无限增大,而是增大到接近只有1个发送节点的情况就稳定下来,此时多节点在PFRTS内均能完成未来数据的规划;③ 对于多发送节点的情况,若PFRTS=0,则能耗将非常大,这是因为没有规划的竞争将会导致多节点长期处于活跃状态,然而随着PFRTS增大,能耗将迅速减小,直到到达一个最小值后再缓慢增大,这是因为此时PDR已经趋于稳定,PFRTS的进一步增大将会导致节点花费更多的能量完成侦听。
综上所述,尽管多发送节点时能耗会随着PFRTS增大而缓慢增大,但因增大速度缓慢,主要考虑PDR大小的影响,因此令PFRTS=7 ms。
下面将选取节能异步QoS MAC(energy-efficient asynchronous QoS MAC, AQSen-MAC)协议[23]、具有快速移动性自适应能力的MAC(fast-mobility adaptive MAC, FM-MAC)协议[24]与GN-MAC进行比较,原因是两者均考虑了能量与通信时滞的问题,且均考虑了节点移动的影响。假设数据包生成率仍为1 Pkt/s,DATA包大小为100 bytes,同一条件的仿真仍然反复进行10次以求得所需评价指标的平均值。
网络内随机指定任意节点为MN,被选中成为MN的节点在网络范围内沿随机方向作往复直线运动。设MN个数为5个,分别令移动速度取5 m/s、10 m/s、15 m/s、…、50 m/s,其中,5~10 m/s对应低速移动场景,15~40 m/s对应中速移动场景,45~50 m/s对应高速移动场景。则4种MAC协议下MN的平均PDR、平均时滞以及平均能耗随移动速度的变化趋势如图9所示。设MN移动速度恒为5 m/s,分别令MN个数取5、10、15、…、50,则4种MAC协议下MN的平均PDR、平均时滞以及平均能耗随MN个数的变化趋势如图10所示。
由图9和图10可知:① AQSen-MAC协议中MN在低移动速度以及MN数目较小的情况下,相较于其他两种协议能够获得较高的PDR和较低的能耗。但由于其异步特性,随着移动速度的增加或者MN个数的增加,数据包冲突越来越显著,PDR将会逐渐降低,能耗也会逐渐增高,并且幅度越来越大,最终性能将不如其他两种协议。② AQSen-MAC协议中MN的通信时滞较大,尤其是高速移动的情景下,MN反复改变其接收节点,造成大量时延现象,甚至导致丢包率急剧增大。③ FM-MAC由于采取了快速移动自适应的算法,MN在高速移动或MN数目较大的情况下,性能优于AQSen-MAC,且由于其不需要与路由协议进行交联,FM-MAC包相对于GN-MAC包设计简单,协议相较于GN-MAC也省去了交联部分,因此FM-MAC在低移动速度和MN数目较小的情况下,性能与GN-MAC几乎一致,甚至在通信时滞这一方面要优于GN-MAC。但随着MN移动速度增加或者MN数目的增加,FM-MAC性能逐渐降低,最终性能将不如GN-MAC。④ GN-MAC尽管在低移动速度和MN数目较小的情况下,性能不一定优于其他两种协议,但在高速移动或MN数目较多的情况下,性能将优于其余两种协议,这符合NNSs节点高速移动及多节点机动的应用情景。
4 结 论
本文重点设计了5个算法来构成GN-MAC协议。同步化及节点分级首先奠定了其余算法的基础;移动性检测完成了高效且精准的节点移动性确认和分级,减小了节点移动性检测时的能耗及时滞;簇间切换完成了MN时间规划表的平滑切换,避免了节点簇间移动导致的长时间断连和侦听现象,进一步减小能耗与时滞;基于优先级的竞争以及多信道通信使得GN-MAC性能更为优异;最后通过与AQSen-MAC协议和FM-MAC协议仿真比较,验证了算法的有效性。