拥塞控制相关总结

拥塞控制概念

网络拥塞:当某个阶段,网络中涌入大量数据包时,可能会导致路由器的转发不及时,大量数据包会陆续填满路由器的缓冲区,缓冲区满了,再涌入数据时就会造成数据的丢失,这时网络发生了拥塞

发送网络拥塞时,如果继续发送大量数据包,可能会导致数据包丢失,这时TCP就会触发重传机制,这样会使网络负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环

拥塞控制:当发送方感知到网络发送拥塞时,发送方要减缓向网络中注入数据的速度,来减缓网络拥塞

拥塞窗口cwnd

拥塞窗口cwnd是发送方维护的一个状态变量,他会根据网络的拥塞程度动态变化;

发送窗口值swnd=min(cwnd,rwnd)

变化规律:

1.没有拥塞,增大

2.有拥塞,减小

什么时候判定网络出现拥塞

当发送方在规定时间内没有收到ACK报文,发生了超时重传,就会认为网络出现拥塞

网络延时是由什么造成的?

数据到达路由器时,路由器需要对数据进行拆包解析,决定把数据转发到哪个路由器上

慢启动算法

发送方每收到一个ACK,拥塞窗口cwnd的大小就会加1

慢启动:每经过一个传输轮次RTT,cwnd成指数型增长

1.当cwnd<ssthresh(慢启动门限slow start threshold),启用慢启动算法

2.当cwnd>=ssthresh时,启动拥塞避免算法

拥塞避免算法

  拥塞避免算法:每经过一个传输轮次,cwnd+1;

所以得出,拥塞算法就是将原本慢启动算法的指数增长变成线性增长,使增长速度缓慢;

慢慢增长后,网络就会进入拥塞状态,于是会出现丢包现象,这时就需要对丢包进行重传,于是触发【拥塞发生算法】

拥塞发生

触发条件:当经过慢启动和拥塞避免算法,cwnd慢慢增长,网络就会进入拥塞状态,于是会出现丢包现象,这时就需要对丢包进行重传,于是触发【拥塞发生算法】

1.超时重传触发:

 更新慢启动阈值:ssthresh=1/2*cwnd(当前窗口的一半) ,将当前窗口cwnd=1,然后执行慢启动算法,这样的话我们发送方可以在短时间内大量减小向网络中注入的速度,又可以尽快的将发送速度恢复到一个比较合适的值

2.快重传触发:

 发送快重传时,TCP认为当前网络状态没那么糟,更新慢启动阈值ssthresh=1/2*cwnd,将当前窗口大小设置为慢启动阈值cwnd=ssthresh,然后执行快恢复算法;

快恢复算法: 将当前窗口大小设置为cwnd+3,发送方每收到一个冗余的ACK,cwnd+1.直到收到一个好的ACK,cwnd重新设置为慢启动的门限值,执行拥塞避免算法

快恢复算法

触发机制:快重传与快恢复算法一般同时使用,快恢复算法认为你还能收到3个重复ACK说明网络也不那么糟糕,只丢了一小部分;

在进入快恢复前,拥塞发送算法已更新cwnd和ssthresh:

Cwnd=cwnd的一半,ssthresh=cwnd;

开始启动快恢复算法:

1.Cwnd=ssthresh+3(3指的是有3个数据包被收到了)

2.重传丢失的数据包

3.如果再收到重复的ACK,那么cwnd+1

4.如果收到新数据的ACK后,将cwnd设置回cwnd=ssthresh,因为该ACK确认了新的数据,说明之前没收到ACK回复的数据已收到,该恢复过程可以结束了,可以恢复到之前状态,即再次进入拥塞避免状态

发送方允许发送的字节

流量控制中16位通告窗口大小awnd

发送方允许发送的字节数=min(awnd,cwnd)

  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值