# 在 Linux 系统上启用 BBR
# BBR 算法
TCP的BBR(Bottleneck Bandwidth and Round-trip propagation time,BBR)是谷歌在 2016 年开发的一种新型的 TCP 拥塞控制算法。
在此以前,互联网主要使用基于丢包的拥塞控制策略,只依靠丢失数据包的迹象作为减缓发送速率的信号。这样做的的效果还是不错的,但随着全球化互联网的迅速普及,我们所使用的网络已经发生了巨大的变化。我们拥有了越来越大的带宽,而现在的互联网质量也越来越好。于是我们观察到了一些新的问题,比如影响延迟的缓冲区膨胀的问题。
BBR 尝试通过使用全新的拥塞控制来解决这个问题,它使用基于延迟而不是丢包作为决定发送速率的主要因素。
下图是一个原理的演示:

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
2
保存,并退出。
# 刷新配置和检查
键入以下命令刷新配置:
sysctl -p
1
至此,BBR 算法即开启完成。
还可以使用前面关于检查 BBR 算法是否开启的步骤,二次检查是否开启了 BBR 算法。
# 参考文章
- 从流量控制算法谈网络优化 – 从 CUBIC 到 BBRv2 算法 (opens new window)
- 一键安装最新内核并开启 BBR 脚本 (opens new window)
- 怎样在 Ubuntu 22.04 LTS 上启用 BBR | 月灯依旧 (bynss.com) (opens new window)