论文部分内容阅读
摘要:随着计算机网络的快速发展,人们对网络资源的要求也越来越高,尤其是近年来如语音,图像等多媒体流在网络上大量涌现,网络拥塞问题也随之变得严重,而网络拥塞也一直是计算机网络研究的重点和热点问题之一。该文将阐述目前基于TCP/IP协议的几种典型拥塞控制算法,并指出其优缺点,同时给出两种拥塞控制方法的比较。
关键词:拥塞控制;TCP/IP协议
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)35-2165-02
Based on TCP Port Congestion Control Algorithm
LIANG Feng
(College of Computer, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
Abstract: With the rapid development of computer networks, network resources on the requirements of increasingly high, especially in recent years, such as voice, video streaming, and other multi-media network in a large number of network congestion has become a serious problem, and Network congestion has been the focus of research computer network and one of the hot spots. This article is currently based on TCP/IP protocol of the typical congestion control algorithms, and pointed out its strengths and weaknesses, both at the same time give congestion control methods.
Key words: congestion control; TCP/IP protocol
1 引言
网络拥塞是当今计算机网络中一个比较突出和严重的问题,拥塞控制便显得极为重要。当用户对网络资源的需求大于网络本身所提供的资源时就发生拥塞。其表现为数据包分组延时增加,丢弃数增多,上层应用性能下降等[1]。TCP源端的拥塞控制算法一般都包括四个过程[2-3],即慢启动阶段,拥塞避免,快速重传和快速恢复。其基础就是加性增和乘性减(AIMD: additive-increasemultiplicative-decrease)。
慢启动阶段:为了防止在启动一个连接时向网络发送过多的数据包而造成不必要的数据丢失和网络拥塞,所以在刚建立连接时,发送方将拥塞窗口(cwnd)的大小设置为一个TCP段的最大字节数(mss),若发送方获得一个来自接收方的对已接收的数据应答ACK时,则cwnd增加一个报文段,即cwnd=cwnd+mss。可见cwnd将随往返时间(RTT)呈指数增长。
拥塞避免: 随着发送窗口的不断增大,当发送方收到3个相同的ACK确认或收到的ACK超时时,则网络将发生拥塞(TCP这一假设是基于:由传输引起的数据包破坏和丢失的概率很小,小于1%),此时就进入拥塞避免。慢启动阈值ssthresh将被设置为当前cwnd的一半。再当数据包发生超时,cwnd被置为1,如果cwndssthresh,则cwnd执行拥塞避免算法,即cwnd在每次收到一个ACK确认时只增加1/cwnd个数据包( 这里假定资料包的大小为1)。可见cwnd是按线性方式增长。
快速重传和快速恢复:当接收方收到3个或以上重复ACK就认为该数据包丢失,马上重传该数据包,并将阈值ssthresh设为当前发送窗口(cwnd)的一半进入快速重传,有利于提高吞吐量。而不需要等到重传定时器超时才重传,且重传时将发送窗口cwnd设置为1,进入慢启动阶段,这样过大的减小发送窗口,降低了吞吐量。
2 基于窗口的TCP拥塞控制存在的问题和改进
公平性问题:在Internet中存在有连接的TCP和无连接的UDP在发生拥塞时会采用不同的措施。TCP采用了拥塞控制机制,当发送端收到的ACK超时或3个相同的ACK时,就认为网络发生拥塞,同时采取相应的拥塞控制策略。最直观的是减少源端发送数据包数,以缓解拥塞。而无连接的UDP没有采用拥塞控制机制,当发生拥塞时,由于没有采用拥塞控制,源端不会减少数据包发送,这样UDP会占用更多的网络资源,而TCP则相应获得越来越少的网络资源,形成网络资源分配的不公平,资源分配的不公平反过来又进一步加重网络拥塞,甚至导致拥塞崩溃。
恢复时间长:高带宽下,源端为获得较高的单流吞吐量,必须保持一个较大的拥塞窗口。然而产生拥塞时,目前TCP拥塞避免算法中的窗口调节机制,需要较长的恢复时间,不能有效地利用可用带宽,严重降低了网络资源的利用率。
随着网络多媒体流的不断增加,TCP拥塞控制的公平性问题显得十分突出,就此有很多网络研究者提出了一些改进算法,比较著名的TCP Westwood,TCPW协议的关键思想在于TCP发送端通过检测返回的确认帧(ACKS)的速度来持续测量网络有效带宽,在发送端自适应修改拥塞窗口的控制算法,与在发生拥塞时根据AIMD的盲目执行拥塞窗口相比,在一个拥塞事件发生时,TCPW具有更快的恢复机制——端到端可用带宽的计算与估计来自适应地设置一个与发生拥塞时有效带宽一致的慢启动阈值和cwnd,并且对随机抖动不敏感,有利于多媒体流的传播。
基于公式的拥塞控制,其原理是通过一个丢失事件率等为参数的公式来计算发送速率上限,发送方以此公式的计算结果为依据来对自身的发送速率进行调整,并保证发送速率不会超过这个值——目的是改进TCP数据流的剧烈抖动性。Padhye等人提出的较为合理的公式:
其中s是TCP的报文大小,l是丢失率,t0是超时时间,b为一个应答所接收到的报文的报文数,一般为2,tRtt为往返时间。
TFRC(TCP Friendly Rate Control)算法采用Padhye提出的TCP平均速率计算公式作为拥塞控制公式,其目的是使TFRC流与TCP流在相同环境下强占带宽的能力相同,从而能使TCP流公平竞争。
3 基于网络端的拥塞控制
目前,基于网络端的拥塞控制主要是先进先出(FIFO)的丢尾(Drop Tail)算法,称为被动队列管理(Passive queue management,),该算法容易产生全局同步、死锁、满队列问题。所以就有了主动队列管理策略 (Active queue management):通过主动的丢弃或标记分组来维持一个稳定的队列目标长度,达到减小排队时延和保证较高吞吐量的目的。
关键词:拥塞控制;TCP/IP协议
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)35-2165-02
Based on TCP Port Congestion Control Algorithm
LIANG Feng
(College of Computer, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
Abstract: With the rapid development of computer networks, network resources on the requirements of increasingly high, especially in recent years, such as voice, video streaming, and other multi-media network in a large number of network congestion has become a serious problem, and Network congestion has been the focus of research computer network and one of the hot spots. This article is currently based on TCP/IP protocol of the typical congestion control algorithms, and pointed out its strengths and weaknesses, both at the same time give congestion control methods.
Key words: congestion control; TCP/IP protocol
1 引言
网络拥塞是当今计算机网络中一个比较突出和严重的问题,拥塞控制便显得极为重要。当用户对网络资源的需求大于网络本身所提供的资源时就发生拥塞。其表现为数据包分组延时增加,丢弃数增多,上层应用性能下降等[1]。TCP源端的拥塞控制算法一般都包括四个过程[2-3],即慢启动阶段,拥塞避免,快速重传和快速恢复。其基础就是加性增和乘性减(AIMD: additive-increasemultiplicative-decrease)。
慢启动阶段:为了防止在启动一个连接时向网络发送过多的数据包而造成不必要的数据丢失和网络拥塞,所以在刚建立连接时,发送方将拥塞窗口(cwnd)的大小设置为一个TCP段的最大字节数(mss),若发送方获得一个来自接收方的对已接收的数据应答ACK时,则cwnd增加一个报文段,即cwnd=cwnd+mss。可见cwnd将随往返时间(RTT)呈指数增长。
拥塞避免: 随着发送窗口的不断增大,当发送方收到3个相同的ACK确认或收到的ACK超时时,则网络将发生拥塞(TCP这一假设是基于:由传输引起的数据包破坏和丢失的概率很小,小于1%),此时就进入拥塞避免。慢启动阈值ssthresh将被设置为当前cwnd的一半。再当数据包发生超时,cwnd被置为1,如果cwnd
快速重传和快速恢复:当接收方收到3个或以上重复ACK就认为该数据包丢失,马上重传该数据包,并将阈值ssthresh设为当前发送窗口(cwnd)的一半进入快速重传,有利于提高吞吐量。而不需要等到重传定时器超时才重传,且重传时将发送窗口cwnd设置为1,进入慢启动阶段,这样过大的减小发送窗口,降低了吞吐量。
2 基于窗口的TCP拥塞控制存在的问题和改进
公平性问题:在Internet中存在有连接的TCP和无连接的UDP在发生拥塞时会采用不同的措施。TCP采用了拥塞控制机制,当发送端收到的ACK超时或3个相同的ACK时,就认为网络发生拥塞,同时采取相应的拥塞控制策略。最直观的是减少源端发送数据包数,以缓解拥塞。而无连接的UDP没有采用拥塞控制机制,当发生拥塞时,由于没有采用拥塞控制,源端不会减少数据包发送,这样UDP会占用更多的网络资源,而TCP则相应获得越来越少的网络资源,形成网络资源分配的不公平,资源分配的不公平反过来又进一步加重网络拥塞,甚至导致拥塞崩溃。
恢复时间长:高带宽下,源端为获得较高的单流吞吐量,必须保持一个较大的拥塞窗口。然而产生拥塞时,目前TCP拥塞避免算法中的窗口调节机制,需要较长的恢复时间,不能有效地利用可用带宽,严重降低了网络资源的利用率。
随着网络多媒体流的不断增加,TCP拥塞控制的公平性问题显得十分突出,就此有很多网络研究者提出了一些改进算法,比较著名的TCP Westwood,TCPW协议的关键思想在于TCP发送端通过检测返回的确认帧(ACKS)的速度来持续测量网络有效带宽,在发送端自适应修改拥塞窗口的控制算法,与在发生拥塞时根据AIMD的盲目执行拥塞窗口相比,在一个拥塞事件发生时,TCPW具有更快的恢复机制——端到端可用带宽的计算与估计来自适应地设置一个与发生拥塞时有效带宽一致的慢启动阈值和cwnd,并且对随机抖动不敏感,有利于多媒体流的传播。
基于公式的拥塞控制,其原理是通过一个丢失事件率等为参数的公式来计算发送速率上限,发送方以此公式的计算结果为依据来对自身的发送速率进行调整,并保证发送速率不会超过这个值——目的是改进TCP数据流的剧烈抖动性。Padhye等人提出的较为合理的公式:
其中s是TCP的报文大小,l是丢失率,t0是超时时间,b为一个应答所接收到的报文的报文数,一般为2,tRtt为往返时间。
TFRC(TCP Friendly Rate Control)算法采用Padhye提出的TCP平均速率计算公式作为拥塞控制公式,其目的是使TFRC流与TCP流在相同环境下强占带宽的能力相同,从而能使TCP流公平竞争。
3 基于网络端的拥塞控制
目前,基于网络端的拥塞控制主要是先进先出(FIFO)的丢尾(Drop Tail)算法,称为被动队列管理(Passive queue management,),该算法容易产生全局同步、死锁、满队列问题。所以就有了主动队列管理策略 (Active queue management):通过主动的丢弃或标记分组来维持一个稳定的队列目标长度,达到减小排队时延和保证较高吞吐量的目的。