BBR 与 TCP 原生拥塞控制算法的对比

 

1. 什么是拥塞控制?

要解释拥塞控制,那就要解释拥塞是什么。简单来说,拥塞是指由于带宽不足(或其他原因,但主要是带宽),导致包的主动或被动的丢失。而拥塞控制就是尽可能的减少包的丢失。

假设说没有拥塞控制算法的情况下,A 想发送 100 个数据包,由于拥塞,丢失了 99 个数据包,在这种条件下,A 只能重新传输 99 个数据包,接下来,可能又有 98 个丢失…每一次发送都会有成本,为了避免不必要的浪费,拥塞控制算法就很有必要了。

2. TCP 经典拥塞控制算法

TCP 作为传输层的协议,提供了拥塞控制算法,名字叫 Tahoe(version 1)/Reno(version 2)。他们的核心思想是:将传输速度按一定速度增加,当出现丢包等问题的时候,我们就降低传输速度(减半/变为 1),然后再次增加,如此循环。

3. TCP 拥塞控制的缺陷

TCP 的拥塞控制算法从代码层面比较好写,但是也有个明显的缺陷。

我们都知道,传输的流量为

而从上面的图可知,TCP 的拥塞算法,不可能完全利用带宽,从好的方面思考则是为其他的 TCP 连接留有空间,但是从另一个角度来说,这是一种浪费。

那么如何完美利用我们的带宽呢?

4. 符合现实的拥塞控制算法 - BBR

BBR (基于 Bottleneck Bandwidth and Round-trip 的拥塞算法) 是 Google 开源的拥塞控制算法,它的核心思想是:通过测量网络的带宽和延迟,来决定传输速度。说人话就是,我们测量出当前网络的带宽,然后就按照这个速度一直跑流量。

可是我们如何测定带宽?

BBR 会在一定的时间试探当前网络能否发送更多数据包,如果能,则增加单位时间发送的数据包,如果不能,则保持当前速度。

如图所示,BBR 算法会试探当前网络的带宽,如果能够发送更多的数据包,则会增加单位时间发送的数据包,如果不能,则保持当前速度。这样,理论情况下,我们可以完美的利用我们的带宽。

5. BBR 提升有多少?

Google 的全球广域网(B4)在 2016 年就已经将全部 TCP 流量从 CUBIC 切换到 BBR, 吞吐提升了 2~25 倍;在做了一些配置调优之后,甚至进一步提升到了 133 倍。

评论

此博客中的热门博文

gemini转发国内的部署教程

深度解析:Xray 核心技术 REALITY、Vision、xhttp 与 anytls 的协同工作原理

移动 IP 技术:如何在不同网络间无缝切换?