APP下载

浅析TCP拥塞控制机制

2010-08-29李秀妮

科技传播 2010年19期
关键词:重传接收端控制算法

李秀妮

陕西省西安欧亚学院信息工程学院,陕西西安 710065

0 引言

在互联网应用中,当一个子网或者其中的一部分出现太多分组时,网络的性能开始下降,如网络延时增大、丢包率上升、吞吐量下降等,这种情况即称为拥塞(congestion)。导致拥塞出现的原因通常是当前的负载超过了资源的容量和处理能力。解决这拥塞一般采用两种方式:其一是对拥塞进行控制,其二是对流量进行控制。

现今互联网中拥塞控制大部分工作是由TCP完成的,目前标准TCP协议的实现都包含了一些避免和控制网络拥塞的算法。当今互联网的可靠性和稳定性与TCP拥塞控制机制密不可分,而TCP的成功也要归功于其稳固的拥塞控制机制。

1 TCP协议

传输控制协议从应用程序中得到大段的信息、数据,然后将它们分割成若干个数据段。TCP会为这些数据段编号并排序,形成虚电路连接方式,信源的TCP会等待信宿TCP给一个确认性应答。没有收到确认应答的数据段将被重新发送。TCP是一个全双工的、面向连接的、可靠的并且是精确控制的协议。

TCP建立连接之后,通信双方通过全双工方式进行数据传输;在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口机制,机制中规定,对于窗口内未经确认的分组需要重传。 在拥塞控制上,采用慢启动算法。

2 TCP拥塞控制

TCP拥塞控制是基于窗口方式的。发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个TCP连接需要有以下两个状态变量:接收端窗口rwnd(receiver window)又称为通知窗口(advertised window)和拥塞窗口cwnd(congestion window)。

2.1 慢启动和拥塞避免算法的原理

在刚开始发送时,可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至2倍MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。 慢启动和拥塞避免算法的实现举例如图1。

图1 慢启动和拥塞避免算法图例

当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢启动门限的初始值设置为 16个报文段,即ssthresh=16。发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。慢启动算法在初始化连接时很有效,他探测网络环境,以确保不会把太多报文发送进一个已经拥塞的环境。可是网络进入饱和状态很容易,但让网络从饱和状态中恢复却很难,一旦拥塞发生了,要将拥塞清除掉可能需要很长时间,因此慢启动中cwnd指数增加就可能太激进,于是当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。

2.2 快速重传和快速恢复机制的原理

由于在拥塞避免阶段,当发生超时,cwnd重新置1,进入慢启动,这将导致过大减小发送窗口尺寸,很大程度上降低了TCP连接的吞吐量。为了完善TCP的性能,又引入了快速重传和快速恢复机制。快速重传阶段,当源端收到3个或者3个以上的重复ACK确认,即认为发生了数据包丢失,此时将ssthresh设置为当前cwnd的一半,ssthresh=awnd/2,并重新传送丢失的数据包,进入快速恢复阶段。在快速恢复阶段,源端每收到一个重复的ACK,则cwnd加1;若收到非重复的ACK,置cwnd=ssthresh,转入拥塞避免;当发生超时重传时,置ssthresh=cwnd/2,cwnd=1,进入慢启动阶段。快速重传和快速恢复机制避免了数据包一发生超时就直接进入慢启动,在很大程度上提高了TCP的性能和吞吐量。

2.3 TCP拥塞控制研究改进

在慢启动阶段,在每个RTT时间内,CWND增加一倍,这样当CWND增加到一定的值时,就可能导致以网络能够处理的最大容量的2倍来发送数据,从而淹没网络,所以后来HOE建议使用packet-pair算法和测量RTT来为ssthresh估计合适值,一次来适时的结束慢启动阶段。

对快速重传和快速恢复机制的改进改进的方案有很多,比较著名的包括NewReno-TCP、SACK、FACK等。选择确认SACK:源端检测到拥塞后,要重传丢失的数据包,至检测丢失时发送的全部数据包,而实际上二者之间有些数据包已正确传到接收端,不必重传。选择确认算法SACK,对数据包进行有选择的确认和重传,这样源端就能准确地知道哪些数据包已正确的传到接收端,从而避免了不必要的重传,减少了时延,提高了网络的吞吐量。有限传输机制:如果分组非顺序到达接收方,也会产生重复的ACK,而只有收到连续3次重复的ACK时才能激发快速重传,导致了一定的时延和某些数据不必要的重传,在快速恢复阶段又会减少发送量,导致不必要的带宽浪费。在很多情况下,有限传输机制允许小窗口的TCP连接不用等到超时发生就可以从小与一个窗口的收据丢失中恢复过来。

3 结论

随着网络规模的与日俱增,以传统的端到端TCP为基础,改进拥塞控制算法,将是完善Internet拥塞控制最主流也是最有效的途径。在现有拥塞控制机制的基础上,一个有效的拥塞控制算法将带来巨大的效益,这对于网络的发展十分重要。因此,对于算法的改进和研究仍然是Internet拥塞控制中的一个重要课题。

[1]Andrew S.Tanenbaum 著.计算机网络[M].潘爱民,译.4版.北京:清华大学出版社,2004,8.

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

[3]章淼,吴建平,林闯.互联网端到端拥塞控制研究综述.

[4]李艳凌,江勇.TCP拥塞控制算法研究,2005,2.

[5][美]W.Richard Stevens著.TCP/IP详解[M].胡谷雨,吴礼发,等译.机械工业出版社,2000,9.

猜你喜欢

重传接收端控制算法
基于扰动观察法的光通信接收端优化策略
顶管接收端脱壳及混凝土浇筑关键技术
一种设置在密闭结构中的无线电能传输系统
基于多接收线圈的无线电能传输系统优化研究
面向异构网络的多路径数据重传研究∗
基于ARM+FPGA的模块化同步控制算法研究
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
数据链路层的选择重传协议的优化改进
一种非圆旋转工件支撑装置控制算法
DI材横向厚差自动控制算法及其应用