分享到朋友圈 1. 点击导航栏右侧按钮。
2. 选择 发送给朋友 或 分享到朋友圈。
收起 捐款给作者

Cherysun’s Tech Cafe

配置启用 BBR 拥塞控制算法

摘要 TL;DR

近期重新配置了 Google Cloud 的服务器,安装了 Ubuntu 18.04 LTS,由于 Linux Kernel 4.9 以上版本就已经加入了对 BBR (Bottleneck Bandwidth and RTT) 的支持,因此整体配置过程相较以前就更为简单了。因此做一个简单的记述。

对于由 Google 公布的 BBR1 已经为人熟知。一般在使用的拥塞控制算法多为 CUBIC 和 Reno,这些算法更多的是基于拥塞检测,在拥塞出现后进行补救,会导致网络流量出现瓶颈,相较而言,BBR 基于主动探测和预防,更充分地使用带宽资源,提高网络吞吐量并降低延迟。Google 称 BBR 帮助 YouTube 的网络吞吐量提升了 4%,在某些国家更是超过了 14%。2

启用 BBR 前后的网络吞吐量对比

想要详细了解有关 BBR 的技术文档和算法细节,可以查看 IETF 的文档 “draft-cardwell-iccrg-bbr-congestion-control-00” 和发表在 ACM Queue 上的研究论文 “BBR: Congestion-Based Congestion Control”。

在启用 BBR 之前,再次确认 Linux Kernel 版本高于 4.9。

> uname -r

在我的服务器上,显示结果为 4.15.0-1028-gcp,可以进行接下来的操作。

首先,修改内核参数,将默认的队列机制更改为 fq,将 TCP 拥塞控制算法设置为 bbr,并保存。

> sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
> sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
> sudo sysctl -p

接下来,检查并确认该修改已生效。

> sudo sysctl net.core.default_qdisc
net.core.default_qdisc = fq
> sudo sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno

当输出中 net.core.default_qdiscfqnet.ipv4.tcp_available_congestion_control 包含 bbr 即表示内核已启用 BBR 算法。

最后验证 BBR 是否已经启动。结果应如下。

> lsmod | grep bbr
tcp_bbr                20480  7
  1. google/bbr on GitHub: https://github.com/google/bbr 

  2. TCP BBR congestion control comes to GCP – your Internet just got faster: https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster 

使用微信扫描下方二维码,然后 发送给朋友分享到朋友圈

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

支持微信支付和支付宝。

在微信中扫描二维码 在支付宝中扫描二维码

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

触摸并按住二维码,选择识别图中二维码

触摸并按住二维码