拥塞控制算法

拥塞控制算法

ID:32987584

大小:57.88 KB

页数:3页

时间:2019-02-18

拥塞控制算法_第1页
拥塞控制算法_第2页
拥塞控制算法_第3页
资源描述:

《拥塞控制算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、TCP拥塞控制算法为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初山V.Jacobson在1988年的论文中提出的TCP的拥塞控制由"慢启动(Slowstart)”和"拥塞避免(Congestionavoidance)w组成,后来TCPReno版本中又针对性的加入了"快速重传(Fastretransmit)”、“快速恢复(FastRecovery)”算法,再后来在TCPNewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答(selectiveacknowledgement,SACK)算法,还

2、有其他方血•的人人小小的改进,成为网络研究的一个热点。TCP的拥塞控制主要原理依赖于一个拥塞窗M(cwnd)來控制,在Z前我们还讨论过TCP还有一个对端通告的接收窗口(rwnd)用于流量控制。窗口值的大小就代表能够发送出去的但还没有收到ACK的最大数据报文段,显然窗口越大那么数据发送的速度也就越快,但是也有越可能使得网络出现拥塞,如果窗口值为1,那么就简化为一个停等协议,每发送一个数据,都要等到对方的确认才能发送第二个数据包,显然数据传输效率低下。TCP的拥塞控制算法就是要在这两者ZI'可权衡,选取最好的cwnd值,从而使

3、得网络吞吐最最大化且不产生拥塞。由于需要考虑拥塞控制和流最控制两个方面的内容,因此TCP的真正的发送窗口=min(rwnd,cwnd)o但是rwnd是由对端确定的,网络环境对其没有影响,所以在考虑拥塞的时候我们一般不考虑™】d的值,我们暂时只讨论如何确定cwnd值的大小。关于cwnd的单位,在TCP中是以字节来做单位的,我们假设TCP每次传输都是按照MSS大小来发送数据的,因此你町以认为cwnd按照数据包个数来做单位也町以理解,所以有时我们说cwnd增加1也就是相当于字节数增加1个MSS大小。慢启动:最初的TCP在连接建立

4、成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发牛拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发牛。具体來说,当新建连接时,cwnd初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS大小。这样cwnd的值就随着网络往返时间(RoundTripTime,RTT)呈指数级增长,事实上,慢启动的速度一点也不慢,只是它的起点比较低一点而已。我们可以简单计算下:开

5、始-一>cwnd=1经过1个RTT后一-〉cwnd=2*1=2经过2个RTT后---〉cwnd=2*2二4经过3个RTT后---〉cwnd=4*2=8如果带宽为W,那么经过RTT*log2W时间就可以占满带宽。拥塞避免:从慢启动对以看到,cwnd可以很快的增长上来,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制。TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。对于大多数TCP实现来说,ssthresh的值是65536(同样

6、以字节计算)。拥塞避免的主要思想是加法增人,也就是cwnd的值不再指数级往上升,开始加法增加。此时当窗口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就对以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。上而讨论的两个机制都是没有检测到拥塞的情况下的行为,那么当发现拥塞了cwnd乂该怎样去调整呢?首先来看TCP是如何确定网络进入了拥塞状态的,TCP认为网络拥塞的主要依据是它重传了一个报文段。上面提到过,TCP对每一个报文段都有一个定时器,称为重传定时器(RTO),当RTO超

7、时口述没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的nJ能性就很大,某个报文段町能在网络中某处丢失,并后续的报文段也没有了消息,在这种情况下,TCP反应比较“强烈”:1.把ssthresh降低为cwnd值的一半2.把cwnd重新设置为13.重新进入慢启动过程。从整体上來讲,TCP拥塞控制窗口变化的原则是ATMD原则,即加法增大、乘法减小。可以看出TCP的该原则可以较好地保证流之间的公平性,因为一旦出现丢包,那么立即减半退避,可以给其他新建的流胡有足够的空间,从而保证整个的公平性。其实TCP

8、还有一种情况会进行重传:那就是收到3个相同的ACKoTCP在收到乱序到达包时就会立即发送ACK,TCP利用3个相同的ACK来判定数据包的丢失,此时进行快速重传,快速重传做的事情有:1.把ssthresh设迸为cwnd的一半2.把cwnd再设置为ssthresh的值(具体实现有些为ssthresh+3)3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。