- 更新:增加内核更新提醒,使用modinfo进行验证 - 2018-02-11
Google BBR是一种服务器端单边TCP加速优化工具,在特定网络情况下可以实现加速效果,特别适合高延迟和丢包的网络。Kernel 4.9 及以后已经合并了 BBR 的代码。
Linux 内核4.9已经包含了BBR算法,在Archlinux下软件包名为linux-lts。
随着内核的升级,BBR有可能默认安装,请先使用命令modinfo tcp_bbr
查看内核模块是否存在,若不存在,使用如下命令安装linux-lts内核:
pacman -Syu linux-lts
会提示Packages (2) man-db-2.8.1-1 linux-lts-4.14.18-1
,版本有可能会更新。
内核会自动安装,并且会对之前的内核作备份。但是GRUB启动项不会自动更新,需要使用如下命令备份并更新启动项:
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.back
grub-mkconfig -o /boot/grub/grub.cfg
然后重启,查看内核版本号:
$ uname -r
4.14.17-1-lts
如果内核版本大于等于4.14.17-1-lts说明安装和启动成功,注意后缀lts。然后使用命令modinfo tcp_bbr
查看内核模块是否存在。
$ modinfo tcp_bbr
filename: /lib/modules/4.14.17-1-lts/kernel/net/ipv4/tcp_bbr.ko.xz
description: TCP BBR (Bottleneck Bandwidth and RTT)
license: Dual BSD/GPL
author: Soheil Hassas Yeganeh <[email protected]>
author: Yuchung Cheng <[email protected]>
author: Neal Cardwell <[email protected]>
author: Van Jacobson <[email protected]>
srcversion: 7C7F7D84BD0154D0C12F9BC
depends:
intree: Y
name: tcp_bbr
vermagic: 4.14.17-1-lts SMP mod_unload modversions
查看模块是否加载和开启,默认BBR算法是没有开启的,需要手动开启:
$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = cubic
$ sudo modprobe tcp_bbr
$ lsmod | grep tcp_bbr
tcp_bbr 20480 0
$ sudo sysctl net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_congestion_control = bbr
不需要重启,就可以测试优化效果。
经测试,在移动网络下使用HTTPS协议下载10MB的测试文件,原本只有不到百Kb的速度,经过优化后稳定在250kb每秒,最高达350kb每秒。不过这仅是大文件下载速度,对于大量短连接的速度没有测试。在电信网络下丢包率太高,仍旧是10到20kb每秒。
若对结果不满意,可以退回之前的系统内核,恢复之前的GRUB启动配置就行了:
cp /boot/grub/grub.cfg.back /boot/grub/grub.cfg
如果对加速效果满意可以将配置写入文件系统:
echo "tcp_bbr" > /etc/modules-load.d/80-bbr.conf
echo "net.ipv4.tcp_congestion_control=bbr" > /etc/sysctl.d/80-bbr.conf
这样重启后也会使用BBR算法了。