做网站设计抬头,深圳市国外网站建设服务机构,阜阳h5网站建设公司,谷歌商店下载官方正版Google的TCP BBR拥塞控制算法深度解析
宏观背景下的BBR
慢启动、拥塞避免、快速重传、快速恢复#xff1a; 说实话#xff0c;这些机制完美适应了1980年代的网络特征#xff0c;低带宽#xff0c;浅缓存队列#xff0c;美好持续到了2000年代。
随后互联网大爆发#x…Google的TCP BBR拥塞控制算法深度解析
宏观背景下的BBR
慢启动、拥塞避免、快速重传、快速恢复 说实话这些机制完美适应了1980年代的网络特征低带宽浅缓存队列美好持续到了2000年代。
随后互联网大爆发多媒体应用特别是图片音视频类的应用促使带宽必须猛增而摩尔定律促使存储设施趋于廉价而路由器队列缓存猛增这便是BBR诞生的背景。 正文之前给出本文的图例 BBR的组成
bbr算法实际上非常简单在实现上它由5部分组成 BBRBottleneck Bandwidth and Round-trip time拥塞控制算法是由Google开发的一种现代化的TCP拥塞控制算法。与传统的TCP拥塞控制算法如TCP Cubic相比BBR采用了不同的工作原理和算法策略。
BBR拥塞控制算法具有以下几个显著的优势
高带宽利用率BBR算法通过准确估算网络的瓶颈带宽能够充分利用可用的带宽资源。相比传统的拥塞控制算法如TCP Cubic它能够更有效地利用网络带宽提供更高的吞吐量。低延迟BBR算法通过实时测量往返时间RTT和带宽来调整发送速率以最小化网络延迟。它能够更快地适应网络变化并通过动态的发送速率控制来减少排队延迟从而提供更低的端到端延迟。公平性BBR算法采用了公平共享带宽的策略以避免某些连接占据过多的带宽导致其他连接的性能下降。它能够在网络负载较高的情况下相对公平地分配带宽资源确保多个连接能够公正地竞争带宽。适应性BBR算法具有较好的自适应性能够根据网络条件的变化进行实时调整。它能够快速响应网络的带宽和延迟变化自动调整发送速率以适应不同的网络环境和拥塞程度。丢包率减少由于BBR算法采用了基于带宽和延迟的拥塞控制策略它能够减少网络中的拥塞和丢包情况。相比传统算法BBR能够更好地探测和应对网络拥塞从而减少丢包率。
a. 噪声丢包
如果是噪声丢包在收到reordering个重复ACK后由于bbr并不区分一个确认是ACK还是SACK引起的所以在bbr看来即时带宽并没有降低可能还有所增加所以一个数据包的丢失并不会引发什么bbr依旧会给出一个比较大的cwnd配额此时虽然TCP可能已经进入了Recovery状态但bbr依旧按照自己的bw以及调整后的增益系数来计算cwnd的新值过程中并不会受到任何TCP拥塞状态的影响。
如此一来所有的噪声丢包就被区别开来了bbr的宗旨是“首先在我的bw计算指示我发生拥塞之前任何传统的TCP拥塞判断-丢包/时延增加均全部失效我并不care丢包和RTT增加”随后brr又会说“但是我比较care的是RTT在一段时间内(随你怎么配但我个人倾向于自学习)都没有达到我所采集到的最小值或者更小的值这也许意味着着链路真的发生拥塞了”…
b. 拥塞丢包
将a的论述反过来我们就会得到奇妙的封闭性结论。这样bbr不光是消除了吞吐曲线的锯齿(ssthresh所致bbr并不使用ssthresh)而且还消除了传统拥塞控制算法的判断滞后性问题。在cubic发现丢包进而判断为拥塞时拥塞可能已经缓解了但是cubic无法发现这一点。为什么原因在于cubic在计算新的cwnd的时候并没有把当前的网络状态(比如bw)当作参数而只是一味的按照数学意义上的三次方程去计算这是错误的这不是一个正确的反馈系统的做法
基于a和b看到了吧这就是新的拥塞判断机制综合考虑丢包和RTT的增加
b-1.如果丢包时真的发生了拥塞那么测量的即时带宽肯定会减少否则丢包即拥塞就是谎言。
b-2.如果RTT增加时真的发生了拥塞那么测量的即时带宽肯定会减少否则时延增加即拥塞就是谎言。
bbr测量了即时带宽这个统一cwnd和rtt的计量完全忽略了丢包因此bbr的算法思想是TCP拥塞控制的正轨事实上丢包本就不应该作为一种拥塞的标志它只是拥塞的表现。
拥塞控制算法如TCP拥塞控制算法的主要目标是通过监测丢包事件来判断网络的拥塞程度并调整发送速率以缓解拥塞。然而对于噪声丢包这些算法并不会做出相应的调整因为噪声丢包并不表示网络拥塞。因此对于拥塞控制算法来说区分噪声丢包和拥塞丢包是非常重要的。
的调整因为噪声丢包并不表示网络拥塞。因此对于拥塞控制算法来说区分噪声丢包和拥塞丢包是非常重要的。
BBR拥塞控制算法在这方面相对于传统算法具有优势它通过观察发送数据包的出队情况和接收确认ACK的延迟时间估计网络的瓶颈带宽并使用这些信息来动态调整发送速率。BBR算法在设计上能够更好地识别和应对拥塞丢包从而提供更好的网络性能和拥塞控制。