论文部分内容阅读
摘要:随着互联网规模的增长,互连网上的用户和应用都在快速的增长,拥塞已经成为一个十分重要的问题。近年来,在拥塞控制领域开展了大量的研究工作。此文介绍了基于TCP协议的拥塞控制算法的研究现状,分析了对算法改进的研究,并提出一些改进的建议。
关键词:Internet;TCP;拥塞控制
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)22-619-02
Based on TCP Congestion Control Algorithm Research Summary
DIAN Shi-mei
(Yunnan Medical College, Kunming 650031, China)
Abstract: As the number of users and applications of Internet increases very quickly, congestion control become more and more important. A mass of research in the field of congestion control has been done recently. In this paper, the current research of congestion control algorithms based on the TCP protocols that implemented on Internet are summarized, and the improvement of algorithms are analyzed. Finally, the paper make some suggestions for future research.
Key words: Internet; TCP; Congestion control
1 引言
随着互联网技术的迅猛发展,网络用户和信息传输量呈爆炸性增长,用户提供给网络的负载大于网络资源容量和处理能力的时候,网络将产生拥塞,表现为数据包时延增加、丢弃概率增大、上层应用系统性能下降等。
目前,Internet上广泛使用的TCP/IP协议中,拥塞控制算法可以分为两个主要部分:在端系统上使用的源算法和在网络设备上使用的链路算法。其中,TCP拥塞控制算法实现于端到端的主机中。在各种TCP协议实现中一般都包含四种相互交织的拥塞控制算法:慢启动、拥塞避免、快速重传以及快速恢复。基于这四个阶段的算法,本文总结了一些改进的研究,并就值得改进的环节提出想法和建议。
2 TCP拥塞控制算法
1988年Van Jacobson指出了TCP在控制网络拥塞方面的不足,并提出了“慢启动”(slow start)算法、“拥塞避免”(congestion avoidance)算法[1]。1990年出现的TCP Reno版本增加了“快速重传”(fast retransmit)算法、“快速恢复”(fast recovery)算法,避免了网络拥塞不够严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的现象,这样TCP的拥塞控制就由这4个核心部分组成,最近几年又出现TCP 的改进版本如New Reno [2]、SACK[3]等。
2.1 TCP拥塞控制的主要参数
TCP拥塞控制是通过控制一些重要参数的改变实现的,主要的参数有:
1)拥塞窗口(cwnd):是拥塞控制的关键参数,它描述源端在拥塞控制情况下一次最多能发送数据包的数量。
2)通告窗口(awin):是接收端给源端预设的发送窗口大小,它只在TCP连接建立的初始阶段起作用。
3)发送窗口(win):是源端每次实际发送数据的窗口大小。
4)慢启动阈值(ssthresh):是拥塞控制中慢启动阶段和拥塞避免阶段的分界点。
5)回路响应时间(RTT):一个TCP数据包从源端发送到接收端。源端收到接收端确认的时间间隔。
6)超时重传计数器(RTO):描述数据包从发送到失效的时间间隔,是判断数据包丢失与否、网络是否拥塞的重要参数,通常设为2RTT或5RTT。
7)快速重传阈值(tcp rexm tthresh):是能触发快速重传的源端收到重复确认包ACK的个数。当此个数超过tcp rexm tthresh时,网络就进入快速重传阶段。tcp rexm tthresh缺省值为3。
2.2 TCP拥塞控制的四个阶段
2.2.1 慢启动阶段
慢启动的实质是通过逐渐增加发送量以找到合适的发送带宽的过程。旧的TCP在启动一个连接时会向网络中发送许多数据包,由于一些路由器必须对数据包排队,所以这样就有可能耗尽存储空间,从而导致TCP连接的吞吐量急剧下降。避免这种情况发生的算法就是慢启动。当建立新的TCP连接时,拥塞窗口(cwnd)初始化为一个数据包大小(一个数据包缺省为536或512bytes)。源端按cwnd大小发送数据,每收到一个ACK确认,cwnd就增加一个数据包发送量。cwnd的增长将随RTT呈指数级(exponential)增长:1个、2个、4个、8个、……。源端向网络中发送的数据量将急剧增加。
2.2.2 拥塞避免
当发现超时或收到3个相同ACK确认帧时,网络即发生拥塞。TCP这一假定是基于由传输引起的数据包损坏和丢失的概率很小(小于1%[1])。此时就进入拥塞避免阶段。慢启动阈值(ssthresh)被设置为当前cwnd的一半,如果是超时,cwnd还要被置1。如果此时cwnd>=ssthresh,TCP就重新进入慢启动过程;如果cwnd > ssthresh,TCP 就执行拥塞避免算法,cwnd在每次收到一个ACK时只增加1/cwnd个数据包(这里将数据包大小seg size假定为1),所以在拥塞避免算法中cwnd的增长不是指数的,而是线性的(linear)。
2.2.3 快速重传和恢复阶段
当数据包超时时,cwnd要被置为1,重新进入慢启动,这会导致过大地减小发送窗口尺寸,降低TCP 连接的吞吐量。所以快速重传和恢复就是在源端收到3个或3个以上重复ACK时,就断定数据包已经丢失,重传数据包,同时将ssthresh置为当前cwnd的一半,而不必等到RTO超时。
3 TCP拥塞控制算法的改进研究
3.1 慢启动的改进
在TCP拥塞控制的4个过程中,慢启动是基础,在TCP连接开始时,必须首先执行慢启动,所以在改善慢启动阶段的性能以减小响应时间方面开展了很多研究工作[4]。慢启动算法通过逐渐增加的大小来探测可用的网络容量,然而有时也会浪费可用的网络容量,因为慢启动算法总是从cwnd=1开始,每收到一个ACK,cwnd增加1,对RTT时间长的网络,为使cwnd达到一个合适的值,需要花很长的时间。文献[5]提出了使用大初始窗口的改进建议, 建立连接后,设初始窗口IW=min(4*MSS,max(2*MSS,4380bytes)),其中,MSS(maximum segment site)指这一连接的最大报文长度,这样TCP发送端在刚开始就可以发送3个1460字节或4个512字节的分组,从而减少3个RTT时间和一个延迟ACK时间,但是同时它也会导致附加分组的丢失,降低网络性能,因此这种改进仍处于研究阶段,没有应用实施。
3.2 基于速率的控制策略
在TCP中使用的窗口控制策略本身机制存在一定的缺陷,如容易导致突发报文的出现;速率受到窗口大小的限制;一个窗口内多个报文的丢失不容易恢复等。针对这些问题,一些研究者提出了Rate-Based Pacing(RBP)的概念,将基于窗口的控制和基于速率的控制结合起来。
3.3 ACK过滤(ACK Filter)
该研究的主要目的是保持TCP的“自时钟”(Self Clocking)机制。TCP的“自时钟”机制有利于减轻突发报文对网络的冲击,而“ACK压缩”(ACK Compression)破坏了“自时钟”机制,因而网络中增加特殊的设备PEP(Performance Enhance Proxy)来确保ACK报文之间的间隔。
3.4 减少不必要的重传时钟超时和快速重传
在重传时钟超时和快速重传发生时,TCP都会减小拥塞窗口,从而降低传输的速率。RTT测量的准确性和“乱序报文”(Out-of-Order Packet)的出现都会影响TCP做出正确的判断。通过在应答报文中增加特殊的信息来解决这个问题。
3.5 显式拥塞通知(Explicit Congestion Notification)
当拥塞发生时,网关通过在报文中设定标志位通知端系统,而不等待发送方的时钟超时,这改变了原来TCP依赖报文丢失来判断拥塞发生的方法。
3.6 “TCP友好”(TCP-Friendly)拥塞控制
“TCP友好”定义为:长时间的吞吐量不超过相同条件下TCP连接的吞吐量。“TCP友好”拥塞控制属于基于速率的控制,速率的计算建立在TCP吞吐量模型的基础上。
4 结束语
网络拥塞问题的解决,将使互联网在多媒体和实时应用(如网络视频会议、远程监控等)中发挥更大的价值。本文对基于TCP拥塞控制算法的研究现状进行了总结,在介绍研究现状的同时,讨论了该领域的研究热点和发展方向。其中慢启动作为TCP拥塞控制过程的基础,其性能的提高对于拥塞问题的解决起着极其重要的作用。
需要指出的是,这种在端系统进行的拥塞控制从感知拥塞到采取行动之间有着明显的时延,而且它无法了解资源的使用情况,目前主要是通过降低发向网络的流量来减小网络负载从而解决拥塞,这在一定程度上可以提高效率,但是很难保证公平性,要保证公平性以及进行有效的控制,最好能在对拥塞情况有足够信息的子网中,即在拥塞发生地进行相应的控制。
参考文献:
[1] Jacobson V.Congestion Avoidance and Control[J].IEEE/ACM Transaction Networking,1998,6(3):314-329.
[2] Zhang H.Traffic control and QoS management in the Internet[J/OL].http://www.cs.cmu.edu/hzhang/.
[3] Mathis M, Mahdavi J. TCP Selective Acknowledgment Options. RFC 2018, 1996.
[4] Allman M, Floyd S, Partridge C. Increasing TCP’s Initial window RFC 2414[S].Internet Network Working Group,1998.
[5] Jacobson V.Congestion avoidance and control[J].IEEE/ACM Transaction On Networking, 1998,6(3):314-329.
关键词:Internet;TCP;拥塞控制
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)22-619-02
Based on TCP Congestion Control Algorithm Research Summary
DIAN Shi-mei
(Yunnan Medical College, Kunming 650031, China)
Abstract: As the number of users and applications of Internet increases very quickly, congestion control become more and more important. A mass of research in the field of congestion control has been done recently. In this paper, the current research of congestion control algorithms based on the TCP protocols that implemented on Internet are summarized, and the improvement of algorithms are analyzed. Finally, the paper make some suggestions for future research.
Key words: Internet; TCP; Congestion control
1 引言
随着互联网技术的迅猛发展,网络用户和信息传输量呈爆炸性增长,用户提供给网络的负载大于网络资源容量和处理能力的时候,网络将产生拥塞,表现为数据包时延增加、丢弃概率增大、上层应用系统性能下降等。
目前,Internet上广泛使用的TCP/IP协议中,拥塞控制算法可以分为两个主要部分:在端系统上使用的源算法和在网络设备上使用的链路算法。其中,TCP拥塞控制算法实现于端到端的主机中。在各种TCP协议实现中一般都包含四种相互交织的拥塞控制算法:慢启动、拥塞避免、快速重传以及快速恢复。基于这四个阶段的算法,本文总结了一些改进的研究,并就值得改进的环节提出想法和建议。
2 TCP拥塞控制算法
1988年Van Jacobson指出了TCP在控制网络拥塞方面的不足,并提出了“慢启动”(slow start)算法、“拥塞避免”(congestion avoidance)算法[1]。1990年出现的TCP Reno版本增加了“快速重传”(fast retransmit)算法、“快速恢复”(fast recovery)算法,避免了网络拥塞不够严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的现象,这样TCP的拥塞控制就由这4个核心部分组成,最近几年又出现TCP 的改进版本如New Reno [2]、SACK[3]等。
2.1 TCP拥塞控制的主要参数
TCP拥塞控制是通过控制一些重要参数的改变实现的,主要的参数有:
1)拥塞窗口(cwnd):是拥塞控制的关键参数,它描述源端在拥塞控制情况下一次最多能发送数据包的数量。
2)通告窗口(awin):是接收端给源端预设的发送窗口大小,它只在TCP连接建立的初始阶段起作用。
3)发送窗口(win):是源端每次实际发送数据的窗口大小。
4)慢启动阈值(ssthresh):是拥塞控制中慢启动阶段和拥塞避免阶段的分界点。
5)回路响应时间(RTT):一个TCP数据包从源端发送到接收端。源端收到接收端确认的时间间隔。
6)超时重传计数器(RTO):描述数据包从发送到失效的时间间隔,是判断数据包丢失与否、网络是否拥塞的重要参数,通常设为2RTT或5RTT。
7)快速重传阈值(tcp rexm tthresh):是能触发快速重传的源端收到重复确认包ACK的个数。当此个数超过tcp rexm tthresh时,网络就进入快速重传阶段。tcp rexm tthresh缺省值为3。
2.2 TCP拥塞控制的四个阶段
2.2.1 慢启动阶段
慢启动的实质是通过逐渐增加发送量以找到合适的发送带宽的过程。旧的TCP在启动一个连接时会向网络中发送许多数据包,由于一些路由器必须对数据包排队,所以这样就有可能耗尽存储空间,从而导致TCP连接的吞吐量急剧下降。避免这种情况发生的算法就是慢启动。当建立新的TCP连接时,拥塞窗口(cwnd)初始化为一个数据包大小(一个数据包缺省为536或512bytes)。源端按cwnd大小发送数据,每收到一个ACK确认,cwnd就增加一个数据包发送量。cwnd的增长将随RTT呈指数级(exponential)增长:1个、2个、4个、8个、……。源端向网络中发送的数据量将急剧增加。
2.2.2 拥塞避免
当发现超时或收到3个相同ACK确认帧时,网络即发生拥塞。TCP这一假定是基于由传输引起的数据包损坏和丢失的概率很小(小于1%[1])。此时就进入拥塞避免阶段。慢启动阈值(ssthresh)被设置为当前cwnd的一半,如果是超时,cwnd还要被置1。如果此时cwnd>=ssthresh,TCP就重新进入慢启动过程;如果cwnd > ssthresh,TCP 就执行拥塞避免算法,cwnd在每次收到一个ACK时只增加1/cwnd个数据包(这里将数据包大小seg size假定为1),所以在拥塞避免算法中cwnd的增长不是指数的,而是线性的(linear)。
2.2.3 快速重传和恢复阶段
当数据包超时时,cwnd要被置为1,重新进入慢启动,这会导致过大地减小发送窗口尺寸,降低TCP 连接的吞吐量。所以快速重传和恢复就是在源端收到3个或3个以上重复ACK时,就断定数据包已经丢失,重传数据包,同时将ssthresh置为当前cwnd的一半,而不必等到RTO超时。
3 TCP拥塞控制算法的改进研究
3.1 慢启动的改进
在TCP拥塞控制的4个过程中,慢启动是基础,在TCP连接开始时,必须首先执行慢启动,所以在改善慢启动阶段的性能以减小响应时间方面开展了很多研究工作[4]。慢启动算法通过逐渐增加的大小来探测可用的网络容量,然而有时也会浪费可用的网络容量,因为慢启动算法总是从cwnd=1开始,每收到一个ACK,cwnd增加1,对RTT时间长的网络,为使cwnd达到一个合适的值,需要花很长的时间。文献[5]提出了使用大初始窗口的改进建议, 建立连接后,设初始窗口IW=min(4*MSS,max(2*MSS,4380bytes)),其中,MSS(maximum segment site)指这一连接的最大报文长度,这样TCP发送端在刚开始就可以发送3个1460字节或4个512字节的分组,从而减少3个RTT时间和一个延迟ACK时间,但是同时它也会导致附加分组的丢失,降低网络性能,因此这种改进仍处于研究阶段,没有应用实施。
3.2 基于速率的控制策略
在TCP中使用的窗口控制策略本身机制存在一定的缺陷,如容易导致突发报文的出现;速率受到窗口大小的限制;一个窗口内多个报文的丢失不容易恢复等。针对这些问题,一些研究者提出了Rate-Based Pacing(RBP)的概念,将基于窗口的控制和基于速率的控制结合起来。
3.3 ACK过滤(ACK Filter)
该研究的主要目的是保持TCP的“自时钟”(Self Clocking)机制。TCP的“自时钟”机制有利于减轻突发报文对网络的冲击,而“ACK压缩”(ACK Compression)破坏了“自时钟”机制,因而网络中增加特殊的设备PEP(Performance Enhance Proxy)来确保ACK报文之间的间隔。
3.4 减少不必要的重传时钟超时和快速重传
在重传时钟超时和快速重传发生时,TCP都会减小拥塞窗口,从而降低传输的速率。RTT测量的准确性和“乱序报文”(Out-of-Order Packet)的出现都会影响TCP做出正确的判断。通过在应答报文中增加特殊的信息来解决这个问题。
3.5 显式拥塞通知(Explicit Congestion Notification)
当拥塞发生时,网关通过在报文中设定标志位通知端系统,而不等待发送方的时钟超时,这改变了原来TCP依赖报文丢失来判断拥塞发生的方法。
3.6 “TCP友好”(TCP-Friendly)拥塞控制
“TCP友好”定义为:长时间的吞吐量不超过相同条件下TCP连接的吞吐量。“TCP友好”拥塞控制属于基于速率的控制,速率的计算建立在TCP吞吐量模型的基础上。
4 结束语
网络拥塞问题的解决,将使互联网在多媒体和实时应用(如网络视频会议、远程监控等)中发挥更大的价值。本文对基于TCP拥塞控制算法的研究现状进行了总结,在介绍研究现状的同时,讨论了该领域的研究热点和发展方向。其中慢启动作为TCP拥塞控制过程的基础,其性能的提高对于拥塞问题的解决起着极其重要的作用。
需要指出的是,这种在端系统进行的拥塞控制从感知拥塞到采取行动之间有着明显的时延,而且它无法了解资源的使用情况,目前主要是通过降低发向网络的流量来减小网络负载从而解决拥塞,这在一定程度上可以提高效率,但是很难保证公平性,要保证公平性以及进行有效的控制,最好能在对拥塞情况有足够信息的子网中,即在拥塞发生地进行相应的控制。
参考文献:
[1] Jacobson V.Congestion Avoidance and Control[J].IEEE/ACM Transaction Networking,1998,6(3):314-329.
[2] Zhang H.Traffic control and QoS management in the Internet[J/OL].http://www.cs.cmu.edu/hzhang/.
[3] Mathis M, Mahdavi J. TCP Selective Acknowledgment Options. RFC 2018, 1996.
[4] Allman M, Floyd S, Partridge C. Increasing TCP’s Initial window RFC 2414[S].Internet Network Working Group,1998.
[5] Jacobson V.Congestion avoidance and control[J].IEEE/ACM Transaction On Networking, 1998,6(3):314-329.