首页 > 编程知识 正文

在tcp的拥塞控制中什么是慢开始,tcp拥塞控制中什么是慢开始

时间:2023-05-06 01:04:13 阅读:242533 作者:798

*之前总结了TCP拥塞控制的原理, 这次来看看具体的设计算法——慢开始与拥塞避免。。。→_→*

拥塞窗口cwnd(Congestion Window)

发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度且动态变化。发送方让自己的发送窗口等于拥塞窗口,如果还考虑接收方的接受能力,那么发送窗口还可能小于拥塞窗口

发送方控制拥塞窗口的原则:只要网络没有出现拥塞,就增大拥塞窗口,以便将更多的分组发送出去;只要网络出现拥塞(发送方没有按时收到应当到达的确认报文),就减少拥塞窗口,以减少注入到网络中的分组数

慢开始(Slow Start)算法

由小到大逐渐增加发送窗口,相当于由小到大逐渐增大拥塞窗口数值。通常在刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的字节数,当每收到一个对新的报文的确认后,就将拥塞窗口增加至多一个MSS的字节数,以逐渐增大发送方的拥塞窗口cwnd

使用慢开始算法后,每经历一个传输轮次(Transmission Round),拥塞窗口cwnd就加倍

传输轮次:一个传输轮次所经历的时间是往返时间RTT。这里更加强调是将拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到对发送的最后一个字节的确认

拥塞避免(Congestion Avoidance )

让拥塞窗口cwnd缓慢的增大,每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,所以拥塞窗口按线性规律缓慢增长,比慢开始算法的拥塞窗口增长更加缓慢

慢开始门限ssthresh

防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置慢开始门限ssthresh状态变量

cwnd < ssthresh时,使用慢开始算法

cwnd == ssthresh时,可以使用慢开始算法,也可以使用拥塞避免算法

cwnd > ssthresh时,使用拥塞避免算法

无论使用哪种算法,只要发送方判断网络出现拥塞,就把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半,把拥塞窗口cwnd设置为1,执行慢开始算法

总结

乘法减小(Multiplicative Decrease):不论在慢开始阶段或拥塞避免阶段,只要出现超时,就把慢开始门限值减半(当前拥塞窗口的一半)

加法增大(Additive Increase):执行拥塞避免算法后,使拥塞窗口缓慢增大,以防止网络过早出现拥塞

将这两种算法结合起来被称为AIMD算法

拥塞避免不能完全避免拥塞,只是在拥塞避免阶段将拥塞窗口控制为线性增长,使网络不容易出现拥塞

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  •  标签:  
  • tcp