BBR (Bottleneck Bandwidth and Round-trip) 目的是要充分利用带宽,并且尽量降低网络链路上的 buffer 占用率,从而降低延迟。在有一定丢包率的网络链路上使用 TCP BBR 有着提高传输速度的作用。

内核版本

自从 Linux 内核 4.9 开始已经封装了这个新的 TCP 控制算法 BBR。

BBR

BBR 算法由 Google 提出,原先主要用于 Google 内部网络的速度提升,现在 Google 把它提交到了 Linux 内核,所有人都可以使用了。从Google的报告来看,这一新的算法可以明显降低网络延迟。Youtube 全球的延迟比之前的 CUBIC 算法下降了 50% 以上。

升级内核

基于 KVM 虚拟化技术的云服务器可以将内核更新到 4.9 以上的版本从而调用该功能。

开启 TCP BBR

执行 echo 命令,在  /etc/sysctl.conf  文件的末尾添加两行配置。其中第一行 default_qdisc  指的是默认的 TCP 队列算法,fq 是 Google 推荐的算法,更适用于 BBR。第二行则是在 IPv4 协议中开启拥塞控制算法。

1
2
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

直接重启主机是可以的加载新的配置。如果不想重启,可以使用以下命令来加载新的配置参数。

1
sysctl -p

执行下面的两个命令。如果结果都有 bbr,则证明你的内核已开启 TCP BBR!

1
2
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

然后使用下面的命令来验证 BBR 已生效。结果会显示 tcp_bbr 加一串数字,说明 BBR 算法已启动。

1
lsmod | grep bbr