# 在 Linux 系统上启用 BBR

# BBR 算法

TCP的BBR(Bottleneck Bandwidth and Round-trip propagation time,BBR)是谷歌在 2016 年开发的一种新型的 TCP 拥塞控制算法。

在此以前,互联网主要使用基于丢包的拥塞控制策略,只依靠丢失数据包的迹象作为减缓发送速率的信号。这样做的的效果还是不错的,但随着全球化互联网的迅速普及,我们所使用的网络已经发生了巨大的变化。我们拥有了越来越大的带宽,而现在的互联网质量也越来越好。于是我们观察到了一些新的问题,比如影响延迟的缓冲区膨胀的问题。

BBR 尝试通过使用全新的拥塞控制来解决这个问题,它使用基于延迟而不是丢包作为决定发送速率的主要因素。

下图是一个原理的演示: transparent-proxy-explain

TCP BBR congestion control comes to GCP – your Internet just got faster (opens new window)

Google 向来是自己先吃螃蟹,BBR首先在 Google 自己的数据中心使用;在达到稳定后,Google 将该技术开源,提交到 Linux 内核中;Linux kernel 4.9 开始,可以启用该算法。


# 检查当前内核版本

BBR 在 Linux kernel 4.9 以上才可开启,请保证 kernel 版本大于此版本号。

内核版本检查命令:

uname --kernel-release
1

# 检查当前是否开启 BBR 算法

# 检查点 1

输入:

sysctl net.ipv4.tcp_available_congestion_control
1

返回值一般为:

net.ipv4.tcp_available_congestion_control = bbr cubic reno
1

或者为:

net.ipv4.tcp_available_congestion_control = reno cubic bbr
1

# 检查点 2

输入:

sysctl net.ipv4.tcp_congestion_control
1

返回值一般为::

net.ipv4.tcp_congestion_control = bbr
1

# 检查点 3

输入:

lsmod | grep bbr
1

返回值有 tcp_bbr 模块即说明 bbr 已启动。

# 开启 BBR 算法

# 编辑配置文件

使用 vi 编辑 /etc/sysctl.conf 文件;

vi /etc/sysctl.conf
1

将以下内容粘贴到配置文件中;

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
1
2

保存,并退出。

# 刷新配置和检查

键入以下命令刷新配置:

sysctl -p
1

至此,BBR 算法即开启完成。

还可以使用前面关于检查 BBR 算法是否开启的步骤,二次检查是否开启了 BBR 算法。


# 参考文章

  1. 从流量控制算法谈网络优化 – 从 CUBIC 到 BBRv2 算法 (opens new window)
  2. 一键安装最新内核并开启 BBR 脚本 (opens new window)
  3. 怎样在 Ubuntu 22.04 LTS 上启用 BBR | 月灯依旧 (bynss.com) (opens new window)