目录
(1).此时将更新ssthresh的值为当前拥塞窗口的一半,上图中是更新为24的一半即12
(1).要求接收方不要等待自己发送数据时才捎带确认,而是要立即发送确认
(2).即使是失序的报文段,也要立即发送对已收到的报文段的重复确认
(3).发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等待该报文的重传计时器超时再重传
(1).最初cwnd=1,ssthresh=16,执行慢开始算法,cwnd大小指数增长
(2).cwnd到达慢开始门限ssthresh后,转而执行拥塞避免算法,cwnd线性加一增长
(3).随着发送速率的增加,若发生超时重传,则将慢开始门限ssthresh减小为当前拥塞窗口的一半、再将拥塞窗口cwnd设置为1,然后执行慢开始-–拥塞避免,重复1、2
(4).若发送方收到3个重复确认,则表示分组丢失,发送方立刻重传相应分组;然后执行快恢复算法
(5).将慢开始门限ssthresh和拥塞窗口cwnd重新设置为当前拥塞窗口的一半,然后执行拥塞避免算法
1. GCC (Google Congestion Control):
2. BBR (Bottleneck Bandwidth and Round-trip propagation time):
1. GCC (Google Congestion Control):
2. BBR (Bottleneck Bandwidth and Round-trip propagation time):
一、背景
在网络工程中,拥塞控制算法是用来调节网络流量,以防止过量的数据流导致网络拥堵和性能下降。这些算法在实现上可以非常复杂,旨在平衡数据传输的速率和网络的承载能力,以维持网络的稳定性和效率。下面是一些著名的网络拥塞控制算法,包括GCC和BBR,及其工作原理的简要介绍:
二、什么是阻塞?
随着网络中的主机增加其发送速率并使网络变得十分拥挤,此时会经常发生丢包现象,导致网络的传输效率急剧降低。分组的超时重传通常被作为网络拥塞的标志。
如果不对网络拥塞进行控制,整个网络的吞吐量将随着输入负荷的增大而下降,降低网络的传输效率,如下图:
三、TCP的4种阻塞控制算法
慢启动、拥塞避免、快重传、快恢复是TCP的4种阻塞控制算法。
1.慢启动
- 传输轮次:指把发送窗口内可以发送的数据全部发送并接收到最后一个TCP报文的确认报文这样一个来回
- 通常在一条TCP连接开始时,cwnd被设置为1个MSS(最大报文段),也即cwnd=1
- 该阶段,每当TCP发送方将发送窗口的数据发送完,并顺利接收到所有的确认后,就会将拥塞窗口大小翻倍,也即慢启动阶段,cwnd以指数形式增长,如上图所示;注意这里忽略了接收窗口的影响,上文也提到了。
- 拥塞窗口会一直增长直到到达慢开始门限ssthresh,开始执行拥塞避免算法
2.拥塞避免
- 该阶段的拥塞窗口变为线性增长,每次cwnd+1,也即每次增加一个MSS
- 随着拥塞窗口的增加,发送速率不断提高,当TCP遇到分组超时重传时,即认为发生了网络拥塞
(1).此时将更新ssthresh的值为当前拥塞窗口的一半,上图中是更新为24的一半即12
(2).更新cwnd的值为1
(3).然后继续执行慢启动—拥塞避免,如上图所示
- 如果TCP发送方接收到连续的3个重复确认,则认为是正常的网络包丢失,而不是网络拥塞造成的(这正是快重传算法的功劳)
(1).重传丢失的分组
(2).执行快恢复算法
3.快重传
- 所谓的快重传算法,就是让发送方尽快重传,而不是等待超时重传计时器超时再重传
(1).要求接收方不要等待自己发送数据时才捎带确认,而是要立即发送确认
(2).即使是失序的报文段,也要立即发送对已收到的报文段的重复确认
(3).发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等待该报文的重传计时器超时再重传
- 如下图所示: