一种附带式跨层设计的无线网络拥塞控制方法
技术领域
本发明涉及无线网络、网络拥塞控制技术领域,具体指一种附带式跨层设计的无线网络拥塞控制方法。
背景技术
传统TCP协议的拥塞控制算法根据数据分组的丢失来判断网络中的拥塞状况,当TCP源节点判定网络拥塞时,通过减小拥塞控制窗口来降低发送速率,最终达解除网络拥塞的目的。而在无线网络中,由于无线信道噪声干扰、节点的移动、隐藏终端等因素,会产生严重的丢包问题。当TCP应用于无线网络中时,上述分组丢失将造成源节点误判网络处于拥塞状况,使得TCP源节点降低发送速率,最终影响网络的吞吐量。
目前,研究人员提出了很多修改TCP的方案,以提高其在无线网络中的性能。这些方案大致可以分为以下两类:1)通过多层的相互协作,减少TCP发送端对网络拥塞状况的误判;2)通过优化网络中特定的层,使得TCP更适应无线网络的特性。
在现有技术中拥塞控制功能都是基于RTS/CTS握手机制上实现,但是RTS/CTS握手机制在实际网络中不一定被采用,因而在不使用RTS/CTS握手机制的无线网络中,上述拥塞控制方法将无法实施,此外RTS/CTS机制会占用额外的信道资源。
发明内容
本发明的目的在于克服现有技术的缺点和不足,提供一种附带式跨层设计的无线网络拥塞控制方法,通过将节点拥塞状态信息附带于MAC中的ACK确认帧,使其变成ACKC帧。节点利用发送和接收ACK或ACKC来发布和获取拥塞信息,以便于其准确判断网络的拥塞状况。本发明还提出缩短拥塞节点信道竞争退避时间的算法,加快其解除拥塞的速度,这种拥塞控制机制能用来提高TCP协议在无线多跳网络中的性能。
本发明通过如下技术方案实现:
一种附带式跨层设计的无线网络拥塞控制方法,包括如下步骤:
1.数据帧的发送方在向接收方发送数据之前,依据其对邻居拥塞状况的评估来判断是否有邻居节点处于拥塞状态,如果有邻居处在拥塞状态,发送方就延迟本次发送,并跟据其对邻居拥塞程度的估计确定延迟发送的时间间隔;如果没有邻居处于拥塞状态,则当发送方成功竞争到信道时,它就向接收方发送数据帧。
所述数据帧的发送方和接收方为无线网络中任意两个相邻节点;所述发送方对邻居拥塞状况的评估是通过如下方式实现的:节点设置用以评估邻居拥塞程度的参数,并根据接收或者侦听到ACK、ACKC以及数据帧,来动态调整该参数。
2.当接收方在收到以它为目标节点的数据帧时,向发送方回复确认帧;同时接收方检查自身是否处于拥塞状态,如果处在拥塞状态,则其向发送方回复ACKC帧;否则回复ACK帧。
所述ACK帧为没有携带拥塞信息的确认帧;所述ACKC帧为附带拥塞信息的确认帧。所述接收方检查自身是否处于拥塞状态是通过如下方式实现的:把接收方内的缓存划分为接收缓存和发送缓存,本节点产生的数据包直接进入发送缓存,中转的数据包先经过接收缓存;所述的中转是指把从其他节点发来的数据包转发到下一跳节点的操作;设T1为接收缓存的拥塞门限值,T2为发送缓存的拥塞门限值,并设N1为接收缓存内数据包的个数,N2为发送缓存内数据包的个数。当N2<T2时,中转的数据包进入发送缓存;否则,中转的数据包占据接收缓存。当N1<T1时,接收方判定自身处在非拥塞状态;否则,接收方判定自身处在拥塞状态。T1、T2、N1和N2都为自然数。
接收方需要预留缓存空间,以接收在发送方不知道该接收方已拥塞的情况下所发送的数据帧。所述预留的缓存空间为接收方的内存除去T1个内存空间后剩余的内存空间。
3.当数据帧的发送方接收到来自接收方的确认帧时,确认数据发送成功。同时,发送方根据所接收的确认帧的类型来评估邻居拥塞程度。
4.为了尽快解除拥塞状态,减少数据帧丢失,针对下述情况采用如下的方式处理:
(1)当数据帧的发送方竞争信道失败进行退避时,发送方先检查自身是否处在拥塞状态,如果发送方处于非拥塞状态,则增加其退避窗口;如果发送方处在拥塞状态,则减小其退避窗口,以提高其信道竞争的成功率。
(2)当数据帧发送方将一数据帧在MAC层重传的次数达到协议所规定的最大次数后,仍然无法成功发送的情况下,将该数据帧退回给路由层,以告知路由层其下的MAC层已经处于拥塞状态,同时路由层采取以下措施协助解除拥塞:(i)如果该数据帧的生存时间已经耗尽,则在路由层丢弃该帧;(ii)如果该数据帧的生存时间仍然有效,则路由层为该数据帧寻找一条经过其他邻居节点的路径,如果寻找成功,将该数据帧传向MAC层,进行发送;如果不成功,则在延迟一定时间后,将该数据帧传向MAC层,进行发送。
(3)当网络中的节点启动了虚拟载波侦听时,在其处于虚拟载波侦听的时间段内,节点保持物理侦听一段时间,如果在该段时间内,节点侦听到信道忙碌,则表明信道确实被占用,则节点在虚拟载波侦听截止之前不参与信道竞争;如果节点侦听到信道空闲,则其可以参与信道竞争。
相对于现有技术,本发明具有如下优点和有益效果:
1、在现有技术中拥塞控制功能都是基于RTS/CTS握手机制上实现,但是RTS/CTS握手机制在实际网络中不一定被采用,同时RTS/CTS机制会占用额外的信道资源;而本发明所提出的拥塞控制方法不依赖于RTS/CTS握手机制,而是基于ACK来实现拥塞控制功能。相对于RTS/CTS握手机制,ACK更广泛的存在于无线网络中,因而本发明有更广泛的适用性。
2、使用ACK作为拥塞信息的载体,能更及时准确的发布拥塞信息.在现有技术中,使用RTS、CTS作为拥塞信息的载体。在本发明中,节点在接收数据帧后,立即查看自身是否拥塞,如果拥塞则,回复ACKC帧;如果非拥塞则,回复ACK帧,相对与现有技术而言,使用ACK帧来能更及时准确的传递拥塞信息。
3、提高信道利用率,消除死锁隐患。在现有技术中,处在拥塞状态的接收方会拒绝接收发送方发给它的数据帧,即使在发送方无法知道接收方拥塞的情况下,接收方也会这样做。这将导致信道浪费,并有可能产生死锁。而本发明能有效的解决上述问题,当接收方已经拥塞而发送方无法知道的情况下,接收方需要预留缓存空间来接收在这种情况下发送方所发给它的数据帧。
4、减少误判链路失效造成的分组丢失,提高网络性能。在现有的技术中,一个分组在链路层竞争信道的次数超过协议规定的最大重传次数时,会认为链路失效,把该分组丢弃。在无线网络中,特别是高负载的情况中,容易误判链路失效而丢弃分组。在本发明中,当数据帧发送方将一数据帧在MAC层重传的次数达到协议所规定的最大次数后,仍然无法成功发送的情况下,将该数据帧退回给路由层,以告知路由层其下的MAC层已经处于拥塞状态,同时路由层采取以下措施协助解除拥塞:(i)如果该数据帧的生存时间已经耗尽,则在路由层丢弃该帧;(ii)如果该数据帧的生存时间仍然有效,则路由层为该数据帧寻找一条新的路径,如果寻找成功,将该数据帧沿新的路径发送;如果不成功,则在延迟一定时间后,将该数据按原路径发送。这样可以减少误判路由失效造成的丢包,提高网络性能。
5、通过缩短拥塞节点竞争信道退避时间,提高其竞争信道的优先权。在本发明中,当数据帧的发送方已处于拥塞状态,并无法竞争到信道时,减小其竞争窗口,缩短竞争信道退避时间,以提高其竞争信道的能力;当非拥塞的发送方未能竞争到信道时,则增加其竞争窗口,以利于拥塞节点解除拥塞状态。
6、采用新的虚拟载波侦听机制,节点能更准确了解信道的状态,能更加充分的利用信道资源。在现有的技术中,当节点启动虚拟载波侦听时,就不再进行物理侦听,但在实际情形中,由于隐藏终端、节点移动等因素,在节点进行虚拟载波侦听的时段内,并没有其他节点发送数据帧,导致该时段内信道资源的浪费。在本发明中,在节点的网络分配矢量所表示的虚拟侦听时段内,保持物理侦听,以侦测该信道是否被实际占用,如果没有被使用,节点竞争该信道的使用权。
附图说明
图1为本发明任意两个相邻发送方和接收方的数据发送和接收示意图;
图2为本发明数据帧发送方发送数据前的判断流程图;
图3为本发明网络节点内部结构示意图,网络层负责为每个数据包计算下一跳转发节点;链路层负责一跳内无线信道资源的分配,其设有接收缓存和发送缓存;物理层负责数据帧的传输;
图4为本发明数据帧接收方收到发送方的数据帧后的流程图。
具体实施方式
下面结合附图1~4和实施例对本发明作进一步的说明,但是本发明要求保护的范围并不局限于实施方式表述的范围。
实施例
本发明附带式跨层设计的无线网络拥塞控制方法,通过如下步骤实现:
1、为了使确认帧能附带拥塞状态信息,我们将确认帧中的一个空闲控制位定义为拥塞状态标志位,如果将拥塞状态标志位设置为0,则该确认帧为不携带拥塞信息的ACK帧;如果将拥塞标志位设置为1,则该确认帧为携带拥塞信息的ACKC帧。当数据帧的接收方向数据帧的发送方回复ACKC帧时,表示该接收方处在拥塞状态;当数据帧接收方向数据帧的发送方回复ACK帧时,表示该接收方处在非拥塞状态。
2、为了判断自身的拥塞状态,将网络中每个节点的缓存划分为接收缓存和发送缓存。本节点产生的数据包直接进入发送缓存。从其他节点转发过来的数据包,先进入接收缓存,随后网络层判断该数据包的最终目的节点是否为本节点,如果目的节点是本节点,则将该数据包传给传输层;如果目的节点不是本节点,则该数据包为需要转发的数据包,当网络层为其选择好路径后,按照下面的规则将该数据包传给链路层:设L1为接收缓存最大容量,T1为接收缓存拥塞门限,且0<T1≤L1;L2为发送缓存最大容量,T2为发送缓存拥塞门限,且0≤T2≤L2。N1、N2分别表示当前接收缓存和发送缓存中数据包的个数。若N2<T2,需要转发的数据包就由接收缓存进入发送缓存。其中T1、T2、N1、N2都是自然数。
3、当数据帧的接收方接收完数据,先判断自身的拥塞状态,然后向数据帧的发送方回复确认帧,方式如下:如果当前接收缓存内的数据包个数N1≥T1,接收方判定自身处在拥塞状态,其向数据帧的发送方回复ACKC帧;如果当前接收缓存内的数据包个数N1<T1,接收方判定自身处在非拥塞的状态,其向发送方回复ACK帧。
4、为了评估周围邻居的拥塞状况,网络中的每个节点在其内存中维护三个参数:邻居拥塞时刻,简称CONG_TIME,用以表示邻居发生拥塞的时刻;邻居拥塞度,简称CONG_LEVEL,用以表示邻居拥塞的严重程度;邻居发包数,简称DATA_NUM,用以记录节点在得知邻居拥塞后,侦听到邻居发送的数据包个数。这三个状态的初始值分别为-1,0,0。由于时间不能为负值,所以CONG_TIME取-1表示该节点未曾侦听到邻居发送ACKC帧;CONG LEVEL取0表示该节点侦听到邻居发送了0个ACKC帧;DATA NUM取0表示该节点侦听到邻居发送0个数据帧。另外,CONG_TIME的取值是一个确切的时刻值,单位必须精确到毫秒级别;而CONG_LEVEL和DATA_NUM的值为一个大于或者等于0的自然数。
5、数据帧的发送方可以通过查看步骤4中的三个参数来判断是否有邻居处在拥塞状态,方式如下:如果DATA_NUM的值小于CONG_LEVEL的值,且NOW-CONG_TIME的值小于RTT与CONG_LEVEL的乘积时,发送方认为有邻居处在拥塞状态;否则,发送方认为没有邻居处于拥塞状态。上述中,NOW为网络的当前时刻;RTT为数据链路层完成一次数据通信所需要的时间,其值由所使用的物理层技术确定。
数据帧的发送方在向接收方发送数据之前,先根据上述方法检查是否有邻居处在拥塞状态,如果发送方判定有邻居处于拥塞状态,发送方就延迟本次发送,其延迟的时间间隔的计算方法如下:DELAY=RTT*CONG_LEVEL;如果发送方判定没有邻居处于拥塞状态,当发送方成功竞争到信道时,立即向接收方发送数据;若发送方未能竞争到信道,则进行信道竞争退避。发送方发送数据前的判断流程如图2所示。
6.网络中的每个节点在收到或侦听到数据帧和确认帧时,按照如下的方式更新步骤4中的三个参数:
(1)当节点收到或侦听到ACKC帧时,将该节点的CONG_TIME的值设置为网络当前时刻,表示从当前时刻起有邻居拥塞;将该节点的DATA_NUM的值设置为0,表示从该节点最近一次得知有邻居拥塞的时刻起,侦听到其所有邻居总共发送了0个数据包;将该节点的CONG_LEVEL的值加一,表示该节点的邻居拥塞的程度增加;
(2)当节点收到或侦听到数据帧时,将该节点的DATA_NUM的值加一,表示从该节点最近一次得知有邻居拥塞的时刻起,侦听到其所有邻居总共发送了DATA_NUM个数据包;
(3)当节点接收或侦听到ACK帧时,表示该节点的邻居处于非拥塞状态,如果此时该节点的CONG_LEVEL的值大于0,则将其CONG_LEVEL的值设置为0,表示其邻居的拥塞状态已经解除。
7、在步骤5中,当数据帧的发送方竞争信道失败而进行退避时,发送方先按照步骤5中方法检查自身是否处在拥塞状态,如果发送方处于非拥塞状态,且此时发送方的退避窗口未达到协议规定的最大值,则增加其退避窗口;如果发送方处于拥塞状态,则将发送方的竞争窗口调整为协议规定的最小竞争窗口,以缩短拥塞发送方竞争信道的退避时间,提高其竞争信道的优先权,以利于其解除拥塞。
8、当数据帧的发送方将一数据帧在MAC层重传的次数达到协议所规定的最大次数后,仍然无法成功发送的情况下,将该数据帧退回给路由层,以告知路由层其下的MAC层已经处于拥塞状态,同时路由层采取以下措施协助解除拥塞:(i)如果该数据帧的TTL计数为0,表明该数据帧在网络中的生存时间已经耗尽,所以应丢弃该数据帧;(ii)若该数据帧的TTL计数大于0,表明该数据帧在网络中的生存时间仍然有效,则路由层为该数据帧寻找另外一条到达目的节点的路径,若寻找成功,则将该数据帧传向MAC层,进行发送;如果寻找不成功,则在延迟一定时间后,将该数据帧传向MAC层,进行发送。所述TTL,全称为Time-To-Live,是IP协议包中的一个值,它用于告诉网络,一个数据包在网络中的时间是否太长而应被丢弃。
9、在选用了RTS/CTS握手机制的场景中,当网络中的节点侦听到不是以本节点为目的地址的RTS帧时,保持物理载波侦听一段时间T2=TSIFS+TCTS+TSIFS+t,如果在这段时间内,节点侦听到信道忙碌,则表明信道确实被占用,再将NAV定时器设定为T3=TDATA+TSIFS+TACK-t;如果节点侦听到信道空闲,则节点可以参与信道竞争。RTS帧中的DURATION字段T1=TSIFS+TCTS+TSIFS+TDATA+TSIFS+TACK,其中TSIFS为短帧间间隔,TCTS为节点发送CTS帧所耗费的时间,TDATA为发送数据帧的时间,TACK为发送ACK帧的时间。T2的取值标准是保证若信道确实被占用的话,可以在T2时间内检测到其他节点发送的数据包信号,只要检测到有信号即可,不需要完整的接收包,因而t的取值可以很小,在本发明中取t=TSIFS。
如上所述便可较好的实现本发明。