APP下载

浅谈计算机网络拥塞控制

2012-04-02袁希群

电大理工 2012年1期
关键词:重传接收端门限

袁希群

铁岭广播电视大学(铁岭 112000)

Internet网络是分组交换网络,资源为众多用户共享,无法根据资源状态限制用户数量,同时也无法控制用户使用资源的数量。如果网络中的报文数量过多,网络来不及处理,势必导致网络拥塞,严重时甚至会导致网络通信陷入停顿,即出现死锁现象。拥塞控制就是TCP为了应对IP网络的拥塞情况而对发送方进行发送速率控制的一种服务。引发控制的原因就是网络堵塞。

1 网络拥塞概述

拥塞是一种持续过载的网络状态,此时用户对网络资源的需求超过了固有的容量。就Internet的体系结构而言,拥塞的发生是其固有的属性。因为在事先没有任何协商和请求许可机制的资源共享网络中,几个IP分组同时到达路由器,并期望经同一个输出端口转发的可能性是存在的,显然,不是所有分组可以同时接受处理,必须有一个服务顺序,中间节点上的缓存为等候服务的分组提供一定保护。然而,如果此状况具有一定的持续性,当缓存空间被耗尽时,路由器只有丢弃分组。当网络中存在过多的报文时,网络的性能就会相应下降,这种现象就被成为拥塞。

造成网络拥塞的原因:①多条流入线路有分组到达,并需要同一输出线路,此时,如果路由器没有足够的内存来存放所有这些分组,那么有的分组就会丢失;②路由器的慢带处理器的缘故,以至于难以完成必要的处理工作,如缓冲区排队、更新路由表等。

防止拥塞的方法:①在传输层可采用:重传策略、乱序缓存策略、确认策略、流控制策略和确定超时策略。②在网络层可采用:子网内部的虚电路与数据报策略、分组排队和服务策略、分组丢弃策略、路由算法和分组生存管理。③在数据链路层可采用:重传策略、乱序缓存策略、确认策略和流控制策略。

2 网络拥塞控制

2.1 慢启动(slow-start)和拥塞避免(congestion avoidance)

发送报文段速率的确定,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞,这由接收端窗口和拥塞窗口两个状态变量确定。接收端窗口rwnd(receiver window)又称通知窗口(advertised window),是接收端根据目前的接收缓存大小所许诺的最新窗口值,是来自接收端的流量控制。拥塞窗口cwnd(congestion window)是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

发送端发送窗口的上限值应当取接收端窗口rwnd和拥塞窗口cwnd之中较小的那一个,即发送窗口的上限值=Min[rwnd,cwnd]。也就是说TCP发送端的发送速率是受目的主机或网络中较慢的一个约束。

慢开始原理可以归结为三点。

(1)当主机开始发送数据时,如果立即将较大的发送窗口中的全部数据字节都注入到网络中,那么由于不清楚网络的情况,有可能引起网络拥塞;

(2)比较好的方法是试探一下,即从小到大逐渐增大发送端的拥塞窗口数值;

(3)通常在刚刚开始发送报文段时可以现将拥塞窗口 cwnd设置为一个最大报文段 MSS的数值。在每收到一个对新报文段的确认后,将拥塞窗口增加至多一个 MSS的数值。当 rwnd足够大的时候,为了防止拥塞窗口cwnd的增长引起网络拥塞,还需另外一个变量——慢开始门限ssthresh。

拥塞控制的具体过程为。

(1)TCP连接初始化,将拥塞窗口 cwnd值置为1;

(2)执行慢开始算法,cwnd按指数规律增长。直到cwnd=ssthresh,开始执行拥塞避免算法,cwnd按线性规律增长;

(3)当网络发生拥塞,把 ssthresh值更新为拥塞前ssthresh值的一半,cwnd重新设置为1,按步骤(2)执行。

在这里强调一下,慢开始的“慢”并不是指拥塞窗口cwnd的增长速率慢,即使cwnd增长得很快,和一开始就将cwnd设置为较大的数值相比,使用慢开始算法可以使发送端在开始发送时向网络注入的分组数大大减少。慢开始按指数规律增长,拥塞避免按线性规律增长。判断网络发生拥塞的依据是发送方未按时收到ACK(TCP数据包首部中的确认标志,对已接收到的 TCP报文进行确认。)或收到了重复的 ACK。“拥塞避免”并非指能够完全避免拥塞,而是说在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使得网络不容易出现拥塞。

2.2 快重传(fast retransmit)和快恢复(fast recovery)

一条TCP连接有时会因等待重传计时器的超时而空闲较长的时间,慢开始和拥塞控制算法又无法很好地解决这类问题,因此提出了快重传和快恢复的拥塞控制算法。快重传算法并非取消了重传机制,只是在某些情况下更早地重传丢失的报文段(如果当发送端接连收到三个重复的确认ACK时,则断定分组丢失,立即重传丢失的报文段,而不必等待重传计时器超时)。快恢复算法常常与快重传算法配合使用,当不使用快恢复算法时,发送端发现网络出现拥塞就将拥塞窗口降低为1,然后执行慢开始算法,这样做会导致网络不能很快地恢复到正常工作状态。当使用快恢复算法时,慢开始算法只是在TCP建立时才使用。

2.3 随机早期丢弃RED进行拥塞控制

网络层策略对TCP拥塞控制影响最大的就是路由器数据报丢失策略。为了避免发生网络中的全局同步现象,可以在路由器采用随机早期丢弃RED(Random Early Discard,随机早期检测)。RED正常工作的关键就是要选择好三个参数:最小门限THmin、最大门限THmax和概率p。RED中的“随机”就体现在概率p上,也就是说RED不是等到已经发生网络拥塞后才将所有在队列尾部的数据全部丢弃,而是在检测到网络拥塞的早期征兆时,就先以概率p丢弃个别数据报,让拥塞控制只在个别TCP连接上进行,因而避免发生全局的拥塞控制。总之,随机早期丢弃RED算法使得路由器可以更好的管理其队列长度。采用RED的好处就是当平均队列长度超过门限THmin时,就会有少量的数据报被丢弃,从而避免网络拥塞的发生。

2.4 拥塞控制的其他算法

(1) TCP Vegas

1994年,Brakmo提出了一种新的拥塞控制机制TCP Vegas,从另外的一个角度来进行拥塞控制。从前面可以看到,TCP的拥塞控制是基于网络丢包,一旦出现丢包,于是调整拥塞窗口,然而由于丢包不一定是由于网络进入了拥塞,但是由于RTT(Round-Trip Time,往返时延)值与网络运行情况有比较密切的关系,于是TCP Vegas利用RTT值的改变来判断网络是否拥塞,从而调整拥塞控制窗口。如果发现RTT在增大,Vegas就认为网络正在发生拥塞,于是开始减小拥塞窗口,如果RTT变小,Vegas认为网络拥塞正在逐步解除,于是再次增加拥塞窗口。由于Vegas不是利用丢包来判断网络可用带宽,而是利用RTT变化来判断,因而可以更精确的探测网络的可用带宽,从而效率更好。TCP Vegas也存在一定的缺陷,在这里就不再阐述了。

(2) Limited transmit算法

这个算法是在拥塞窗口比较小的时候如果在一个传输窗口内有多个包丢失时比较有效率的恢复算法。Limited Transmit就是当收到两个重复ACK时,开始检测两个条件:①接收方的通告窗口rwnd是否允许传输新的数据包,即是否满足rwnd>cwnd?;②停留在网络中的数据包个数是否小于或等于cwnd+2?

如果这两个条件都满足的话,那么TCP再发送新的数据包,其实第二个条件换个意思理解就是说在这种情况下可以超出拥塞窗口最多再发送两个数据包。假设新的数据包和相应的ACK不被丢失的话,那么有了这两个新的数据包,从而发送端与接收端就可以立即从相互等待的僵局中恢复出来,发送方接着进入标准的快速恢复。注意的是尽管可以发送两个新的数据包,但是cwnd的值要保持不变,而不能把它增加2。显然Limited Transmit算法比利用超时重传在包乱序时具有更好的鲁棒性。

3 结语

拥塞控制不仅是网络稳定、高效运行的关键,同时又是实现各种服务质量的基础和前提。实际的网络是一个不断发展的系统,网络拥塞控制研究也是一个非常困难、有挑战性的研究领域。对于网络拥塞控制的研究仍有许多工作要做。

[1]徐昌彪,鲜永菊.计算机网络中的拥塞控制与流量控制.北京:人民邮电出版社,2007.

[2]孙知信.网络异常流量识别与监控技术研究.北京:清华大学出版社,2010.

[3]王崇,张大方,曾彬.高速网络中TCP拥塞控制算法的研究和改进.计算机技术与自动化,2007(3).

[4]王秀利.网络拥塞控制及拒绝服务攻击防范.北京:邮电大学出版社,2009.

[5]季敏,张利萍.网络拥塞控制概述.军民两用技术与产品,2006(8).

[6]孙德辉.网络化控制系统--理论、技术及工程应用.北京:国防工业出版社,2008.

猜你喜欢

重传接收端门限
基于扰动观察法的光通信接收端优化策略
基于规则的HEV逻辑门限控制策略
顶管接收端脱壳及混凝土浇筑关键技术
基于多接收线圈的无线电能传输系统优化研究
随机失效门限下指数退化轨道模型的分析与应用
基于Neyman-Pearson准则的自适应门限干扰抑制算法*
面向异构网络的多路径数据重传研究∗
生产性服务业集聚与工业集聚的非线性效应——基于门限回归模型的分析
数据链路层的选择重传协议的优化改进
MPTCP中一种减缓缓存阻塞的重传策略