摘 要: 提出了一种提供QoS保障的多信道MAC协议,该协议把不同种类业务划分优先级和帧间隔时间,以保障优先级高的数据较早接入信道,同时把高层数据按目的地址的不同建立发送链表,采用自动重传技术,实现数据信道上连续的帧交换过程。仿真结果表明,该方法大大提高了数据信道利用率,改善了系统性能。
关键词: 无线自组织网络;服务质量;介质接入控制协议;多信道
无线自组织网络(Ad hoc)是一种具有无中心、自组织、快速展开和移动等特点的对等式网络,又被称作多跳网络(Multi-hop Network)或自组织网络(Self-organized Network)[1]。随着自组网业务的多样化以及逐渐向公用网络领域渗透,服务质量QoS(Quality of Service)保障问题越来越重要,介质接入控制(MAC)协议是自组网QoS体系中最基本的部分,主要用来管理和协调多个用户共享可用的频谱资源,QoS路由和信令都要依赖它。MAC需要解决两个问题[2]:如何将频谱划分为不同的信道,如何将信道资源分配给不同的用户。在Ad hoc网络MAC协议领域,多信道技术成为研究热点,很多的多信道MAC协议能较好地解决信道争用、隐藏终端、暴露终端[3-4],与单信道技术相比,其具有提高系统吞吐量、降低时延等优点[3-5],但是大部分不能为实时业务提供QoS保障。本文结合多信道DCA[5]协议信道预约的思想,给不同种类的业务划分优先级和帧间隔,保证优先级高的业务较早地预约数据信道,同时把高层数据按目的地址的不同建立发送链表,实现数据信道上连续的帧交换,改善了系统吞吐量和时延特性。
1 协议基本思想
把整个信道分为1个控制信道和n个数据信道,这些子信道互不重叠且带宽相等,每个节点配置两部半双工收发机,1个用于控制信道,1个可在n个数据信道间切换使用。通信双方通过在控制信道上交换RTS/CTS/RES帧来预约数据信道,然后在数据信道上交换DATA/ACK帧进行通信。每个节点(如A)保存信道使用列表CUL[]和空闲信道列表FCL。CUL[]表项有3个元素:CUL[i].host是A的一个邻居地址,CUL[i].ch是被邻居CUL[i].host占用的数据信道,CUL[i].rel_time指CUL[i].ch信道的释放时间。FCL表可由CUL[]计算得出。
建立发送链表,采用自动重传技术,双方可实现数据信道上连续的DATA/ACK帧交换过程,直到通信完成或者达到预定通信时间。下面说明协议中的几个重要规则。协议中用到的标识符含义如表1所示。
1.1 发送链表
按目的地址的不同把高层数据加入到相应链表中,发送数据链表的结构形式如图1所示。
Hld_Data_Elem是高层数据的表示结构,pkptr指向高层数据,qos是描述分组优先级的整数值,实时(语音、视频等)分组比数据分组优先级高,ar_time是高层数据的到达时间。NL[]是链表头结构,具有同一目的地址的分组均放在此链表中,Hld_List是链表头指针,dest是目的地址,T_qos是表示此链表中所有分组的平均优先级权值,由链表中所有分组的qos和ar_time值决定:
1.2 控制信道规程
在控制信道上交换RTS/CTS/RES帧预约数据信道,RTS/CTS/RES帧格式如图2所示。
RTS帧中的N域表示发送链表中的高层数据个数;Tdl(Total data length)域是N个高层数据的总长度,目的节点可以结合N、Tdl域计算数据信道上的总通信时间。Ndl(next data length)域是节点A当前发送链表中下一个要发送的数据长度,用于节点B设置超时定时器。
要在数据信道上实现连续的帧交换功能,则在控制帧交换过程中,网络分配矢量NAVcts必须有效地预测数据信道Dj上的通信时间,NAVcts值被设为发送链表中的数据正常交换完成所需要的时间,NAVcts的计算过程如下:
源节点的当前发送链表中有4条数据,在数据信道上正常交换时的传输序列如图3所示,由此可以推出:
NAVcts=TdlA+NA×T_ack+2NA×T_prop
其中,若帧交换过程中出现异常需要重传,则数据信道上的通信时间将会大于NAVcts值,这种异常情况的处理见下文。
1.3 数据信道规程
数据信道上交换DATA/ACK帧,DATA/ACK帧格式如图4所示。
DATA帧中的Seq域用于对方节点辨别到来是否是重复帧,正常情况下此位按0、1交替变化,在重传时不发生变化,此位是必要的,因为节点超时定时器发生超时,可能是正确的应答帧在链路上丢失造成的,这样重传时设置Seq位不变,对方节点便知道是重复帧而丢弃它;Itrp域是强制中断位,正常情况下此位为1,当为0时,表示要求立即停止通信,之后双方交换ACK帧结束本次通信。
系统记录数据信道上的通信时间,当发生重传时,源节点在发送本条数据时,计算发送链表中下一条数据正常传输结束的时刻会不会超过NAVcts值表示的时刻,如果超过,则把Itrp位置0,强制结束通信,如图5中所示,目的节点收到DATA(Itrp(0))时,返回ACK帧,之后结束通信。A中未传完的数据依然留在发送链表中。因此,Itrp位保证了发生错误重传时,数据信道上总的通信时间不大于NAVcts表示的时间,既充分利用了信道资源,又及时释放信道不至于造成冲突。
2 本文协议的描述过程
本文协议的描述过程如下,其分组交换时序图如图6所示。
(1)节点(如A)发送链表不全为空时,选择T_qos权值最大的链表作为当前发送链表,其目的地址为节点B,在RTS帧前,节点A做三项检查:
(a)保证目的节点B的数据信道收发机空闲。在CUL表中不能有:
CUL[i].host=B且CUL[i].rel_time>T_curr+(T_rts+T_sifs+T_cts)
(b)保证本节点的数据信道收发机空闲。在CUL表中不能有:
CUL[i].host=A且CUL[i].rel_time>T_curr+(T_rts+T_sifs+T_cts)
(c)保证本节点A有空闲的数据信道。至少一数据信道Dj满足:
CUL[i].ch=Dj且CUL[i].rel_time<=T_curr+(T_rts+T_sifs+T_cts)
再把满足条件的信道记入FCL表,设置好NAVrts、Fcl、N、Tdl、Ndl等域,向B发送RTS帧。
(2)收到RTS帧后,B检查是否有匹配的空闲数据信道,能否满足FCLA与FCLB有匹配项或者对DjEFCLA有:CUL[i].ch=Dj且CUL[i].rel_time<=T_curr+T_cts存在。
(a)若满足,选择一个空闲数据信道(如Dj),设置NAVcts等域,向A返回NAVcts(Dj,NAVcts)帧。然后把数据信道收发机切换到Dj,准备接收DATA帧。
(b)若不满足,返回CTS(0,T_est)帧,其中T_est是B节点有空闲信道的最小估计时间。
(3)当非目的节点收到RTS帧时,控制信道上执行退避,以避免控制信道上发生冲突,退避时间为:
NAVrts=T_cts+T_res+2×T_sifs+2×T_prop
(4)收到B的CTS(Dj,NAVcts)后,节点A执行:
(a)向CUL表中增加一表项:
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVcts;
(b)把数据信道收发机切换到Dj上发送DATA帧,发送完设置超时定时器。
(c)发送广播帧RES(Dj,NAVres),其中:
NAVres=NAVcts-T_sifs-T_res-T_prop。
若收到的是CTS(T_est)帧,则A退避T_est时间重新发送RTS帧。
(5)非源节点C收到B返回的CTS(Dj,NAVcts)帧时:
(a)向CUL表中增加一表项:
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVcts
若收到的是CTS(T_est),不做任何处理。
(6)非目的节点收到来自A的广播帧RES(Dj,NAVres)时,向CUL表中增加一项:
CUL[i].host=B;
CUL[i].ch=Dj;
CUL[i].rel_time=T_curr+NAVres
(7)当收到A的DATA帧时,B返回ACK帧:
(a)检查DATA帧的Itrp位是否为0,若是,则回复ACK帧后终止通信。
(b)检查DATA帧的Seq位,确认是否为重发帧,再根据情况决定是否丢弃DATA帧。
(c)根据DATA帧的Ndl域值,在回复ACK帧后设置超时定时器,若Ndl值为0,表示源节点数据发送完毕,回复ACK后结束通信。若DATA帧错误或定时器超时回复ACK(Ack(0))以示重传。
(8)当收到节点B的ACK帧时,A回DATA帧:
(a)若ACK帧中Ack位为0,则重传上一条DATA帧,其中Seq位保持不变。
(b)计算下一条数据传输完成后立即结束本次通信时刻会不会超过NAVcts值表示的时刻,若超过,回复DATA帧中Itrp位置1,就此终止通信。
若ACK帧错误或者定时器超时,则重传上一条DATA帧。
本协议最大的优点在于建立发送链表,结合自动重传请求技术,实现连续的帧交换过程,减少了控制帧交换次数,既增加数据信道上的通信时间,又减少了控制信道上的冲突。
4 仿真结果分析
在相同的场景中,从吞吐量、分组平均时延两方面比较本文协议和DCA协议的性能。仿真条件:在3 km×3 km的范围内放置50个节点,最大通信距离为300 m,仿真时间为400 s,分组长度1 024 B,发包率服从Poisson分布,其中实时业务分组随机产生,数据分组帧间隔50 ?滋s,实时分组帧间隔20 ?滋s。仿真结果对比如图7、图8所示。
DCA协议中,每条数据发送前需要进行一次信道预约,而本文协议实现了数据信道上的连续帧交换过程,一次信道预约可以完成多个分组交换,既大大避免了控制信道上的冲突,又提高了数据信道上的平均通信时间,系统的吞吐量和平均时延特性得到明显改善。同时,本文协议给实时业务规定较高的优先级和较小的帧间隔时间,可以保证先于普通数据分组接入信道,平均时延显著低于数据分组,因此可以从一定程度上为实时业务提供QoS保障。
本文提供了一种支持QoS保障的Ad hoc网络多信道MAC协议,给不同种类的业务划分不同的优先级和帧间隔,以保证高优先级业务较早地接入信道。同时把高层数据按其目的地址的不同建立发送链表。采用自动重传技术,实现了数据信道上连续的帧交换过程,大大减少了控制信道上的冲突,提高了数据信道上的平均通信时间,系统吞吐量和时延特性得到明显改善。
参考文献
[1] 郑少仁,王海涛,赵志峰,等.Ad hoc网络技术[M].北京:人民邮电出版社,2005.
[2] RAMANATHAN R, REDI J. A brief overvirew of Ad hoc network: challenges and directions[J]. IEEE Communication Magazine, 2002,40(5):20-22.
[3] SO J, VAIDYA N. A multi-channel MAC for Ad hoc wireless networks[J]. Dept. of Electrical and Computer Engineering, 2003(1):254-257.
[4] JIN K T, CHO D H. Multi-code MAC for multi-hop wireless ad hoc network[C]. Vehicular Technology Conference 2002 Proceedings, USA. 2002,2:1100-1104.
[5] WU Shih-Lin, TSENG Yu-Chee, LIN Chih-Yu, et al. A new multi-channel MAC protocol with on-demand channel assignment for mobile Ad hoc networks[C]. Dallas: in Proc. of the International Symposium on Parallel Architectures, Algorithms and Networks(I-SPAN), 2000: 232-237.