Ad Hoc网络支持QoS保障的多信道MAC协议
2016-03-05李保婷周雷韩沁赵宏
李保婷+周雷+韩沁+赵宏
摘要:提出一种基于多信道的Qos保障方案,结合业务区分和资源预留两种Qos保障策略,保证优先级高的业务及时接入信道;并且建立节点发送链表,给数据通信预留一段时间,实现数据信道上连续的帧交换,有效地使用了数据信道资源。
关键词:无线自组织网;服务质量;多信道
近年来,在无线网络中传输多媒体业务逐渐成为用户的基本需求,在无线网络中如何提供服务质量(Qos:Qualityof Service)保障已成为Ad Hoc网络领域中的研究重点;MAC子层是自组网QoS体系中最基本的部分,与单信道技术相比,多信道技术能较好地解决信道争用、隐藏终端、暴露终端、入侵终端等问题,其具有提高系统吞吐量、降低时延等优点,但是大都不能为实时业务提供QoS保障。文章参考动态信道分配信道预约的思想,结合业务区分和资源预留两种方式,给出了一种提供QoS保障的多信道MAC层协议,为不同种类的业务类型设置不同的优先级和帧间隔,使高优先级业务优先预约数据信道,同时给不同目的地址节点建立发送链表,并且使用自动重传请求技术,实现在数据信道上进行连续帧交换过程,以此提高系统的吞吐量和时延性能,保证多媒体业务的实时传输。
1 协议基本思想
把多信道分成N个数据信道和1个控制信道,每个节点配两个半双工收发模块,1个用于控制信道且附加侦听模块,1个用于在多个数据信道间切换使用。通信节点在控制信道上收发RTS/CTS/RES帧来预约数据信道,然后在数据信道上收发DATA/ACK帧来进行通信。业务区分功能是给不同业务类型设置不同的优先级和帧间隔,资源预留功能是在每次RTS/CTS/RES帧交换中,都预约好一段时间,在该时间内,通信节点可进行连续的帧交换过程。下面详细说明本协议中的几个重要规则。
1.1 发送链表
协议中,给不同目的地址节点分别建立发送链表,链表结构如图l所示;SrvDataElem是业务数据在链表中的结构:Pkptr指向业务数据;Oos是分组优先级的整数值,实时业务分组(如语音、视频等)比普通业务分组有更高的优先级,Oos数值越大表示优先级越高;AtTime是高层数据的到达时间。
NL[]是链表表头结构:SrvList是以SrvDataElem为元素的数组首地址;Dest是目的地址;TOos是链表优先级权重值,表示链表中分组的平均优先级,由链表中分组的Oos和ArTime共同决定,有:
其中Q、T表示Oos和ArTime在链表优先级权值中的比例度量,DataNum表示链表中分组个数,TQos值定期更新且其值越大表示本链表的优先级越高;业务数据按照目的地址放入相应的发送链表中,相同目的地址分组在同一个链表中,分组的类型和目的地址由相应的路由协议规定。
1.2 信道规程
在控制信道上收发RTS/CTS/RES帧来预约数据信道,帧格式如下所示:
当节点A的发送链表非空时,选择TQos值最大的链表且其目的地址为B。在控制信道空闲时,等待一段间隔时间,执行退避后发送RTS帧。TOos越大,此间隔时间越小,以保证高优先级业务数据较早接入信道。RTS帧中设置NAVrts、Fcl、N、Tdl、Ndl域,其中NAVrts表示网络分配矢量,以将控制信道的使用情况告知邻居节点;Fcl是节点A的空闲数据信道列表;N表示发送链表的业务数据数;Tdl表示N个业务数据的总长度,目的节点根据N、Tdl字段计算数据信道上的通信占用时间。Ndl是节点A发送链表中下一条数据的长度,节点B可以根据该字段设置超时定时器值。在节点B接收到RTS帧时,将帧中的Fcl值与自己的FCL表进行匹配,在有匹配空闲数据信道的情况下返回CTS(Dj,NAVcts)帧,其中Dj是一个随机选择的匹配信道号,NAVcts用来将数据信道Dj的使用情况告知邻居节点;在无匹配空闲数据信道时,B返回CTS(0,TEst)帧,这里的TEst表示节点B的CUL表中出现空闲信道的最小时间:
TEst=min{i,CUL[i].RelTime-TCurr-TSifs-TCts}。
A节点在收到CTS(Dj,NAVcts)帧后发送RES(Dj,NAVres)广播帧,Dj表示选定的空闲数据信道号,NAVres是网络分配矢量,用于将信道Dj的使用情况告知邻居节点。A节点在收到CTS(0,Test)帧后退避TEst时间,之后需要等待一个帧间隔时间再发送RTS帧。
在数据信道上收发DATA/ACK帧进行通信,DATA/ACK帧格式如下所示:
DATA帧中有Ndl、Itrp、Seq字段,Ndl是发送数据链表中下一条DATA帧的长度,用于对端节点计算超时定时器值;Seq用于对方节点辨别接收帧是新帧还是重复帧,正常时此字段值按0、1交替变化,重传时值不变;Itrp表示强制中断,正常时此字段值1,为0时表示需要立即中止通信,之后双方收发ACK帧结束本次通信;强制中止通信可以保证在重传发生时,通信时间小于NAVcts值。ACK帧中有Ack字段,为1时表示确认接收到帧,为0时表示收到的帧错误或者未收到。
2 协议过程描述
每个通信节点(A节点)有两张表:信道使用列表(cuL)和空闲信道列表(FcL)。CUL表中有三个元素,CUL口.Host表示A的一个邻节点,CUL[].ch是和邻节点CUL[].Host的数据信道,CUL[].RelTime指CUL[].ch信道的释放时间,FCL表由CUL计算得出。下面详细描述协议过程,分组收发时序如图2所示。
(1)节点A发送链表非空时,选择TQos值最大的链表作为发送链表,目的地址为节点B,在发送RTS帧前,节点A做以下检查:
①节点B的数据信道收发模块空闲。在CUL表满足:
CUL[i].Host=B且CUL[i].RelTime>TCurr+(TRts+TSifs+TCts)。
②本节点的数据信道收发模块空闲。在CUL表满足:
CUL[i].Host=ARCUL[i].RelTime>TCurr+(TRts+TSifs+TCts)。
③本节点A有空闲的数据信道。最少有一个数据信道Dj满足:
CUL[i].Ch=Dj且CUL[i].RelTime<=TCurr+(TRts+TSifs+TCts)。
将符合条件的信道记到FCL表,设定NAVrts、Fcl、N、Tdl、Ndl等字段值,向节点B发送RTS帧。
(2)接收RTS帧后,节点B检查是否有匹配的空闲数据信道,需要FCL与FCL有匹配项或Dj FCL时CULlil.ch=Dj且CUL[i].RelTime<=TCurr+TCts存在。
①如满足,选择一个空闲的数据信道,设置NAVcts等字段,向A返回NAVcts(Dj,NAVcts)帧,再把数据信道收发模块切到Dj,准备DATA帧的接收。
②如不满足,返回CTS(0,TEst)帧,TEst是B节点有信道空闲的最小预测时间。
(3)非目的节点在控制信道接收到RTS帧后,执行退避,以免控制信道上继续发生冲突,退避时间为:
NAVrts=TCts+TRes+2*TSifs+2*TProp
(4)B收到CTS(Dj,NAVcts)帧后,节点A执行:
①向CUL表中增加一项:CUL[i].Host=B;CUL[i].Ch=Dj;CUL[i].RelTime=TCurr+NAVcts:
②将数据信道收发模块切换到Dj,再发送DATA帧,然后设置超时定时器。
③发送广播帧REs(Dj,NAVres),其中:NAVres=NAVcts-TSifs-TRes-TProp。
若收到的是CTS(TEst)帧,则A退避TEst时间重新发送RTS帧。
(5)非源节点c收到B发送的CTS(Dj,NAVcts)帧时:
在CUL表中增加一项:CUL[i].Ch=Dj;CUL[i].Host=B;CUL[i].RelTime=TCurr+NAVcts。
若收到CTS(TEst)时,不用处理。
(6)非目的节点接到A的广播帧RES(Dj,NAVres)后:
在CUL表中加一项:CUL[i].Ch=Dj;CUL[i].Host=B;CUL[i]l.RelTime=TCurr+NAVres。
(7)在收到A发送的DATA帧后,B返回ACK帧:
①检查DATA的Itrp位,若为0,则回送ACK帧并且中止通信。
②检查DATA的Seq位,检查是否重发。
③检查DATA的Ndl字段,在回送ACK帧后设定超时定时器;Ndl为0时源节点发送数据完毕,回送ACK后中止通信。
若DATA帧有错误或定时器超时,回送CK(Ack(0))以表重传。
(8)在收到节点B的ACK帧后,节点A回送DATA帧:
①如ACK帧的Ack位是0,则重传DATA,其中的seq位不改变。
②计算下一条数据传输结束的时刻是否会超过NAVcts值表示的时刻,若会,则将回复的DATA帧Itrp位置1,就此结束通信。
如ACK帧错误或定时器发生超时,则重传DATA帧。
综上所述,本协议的优点是建立了发送链表,在数据信道上采用自动重传技术,实现了持续的帧收发过程,减少控制帧的收发次数;既提高了数据信道的通信效率,又降低了控制信道的冲突。
3 仿真分析
利用Opnet10.0网络仿真软件,对本协议进行仿真分析,在3000×3000m的范围内设定了50个节点,随机放置,节点间的最大通信距离为300m,数据信道数量为6,仿真分析时间是400s,采用二进制指数退避算法,其他的仿真参数如表1所示。各帧头及报文的长度是:MAC头大小为144bits,PHY头大小为192bits,RTS报文大小为160bits,CTS报文大小为112bits,RES报文大小为112bits。对于每个到达MAC层的高层数据,节点随机选择一个邻居节点作为目的节点,因为实时分组长度较大,支持对其分割、重组。
下面从吞吐量和时延特性两个方面分析文章协议的性能。吞吐量反映了系统传输数据的能力,仿真中用归一化吞吐量作为衡量系统吞吐量性能的指标,其定义为:
归一化吞吐量=单位时间内的吞吐量/信道容量
在相同场景下,同时运行多信道DCA协议和文章协议,比较其吞吐量和平均时延指标情况,如图3、图4所示。由此可知,本协议提供了更大的吞吐量和更低的时延。