1. 更新:增加内核更新提醒,使用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算法了。

原文链接:https://marskid.net/2017/12/03/arch-linux-open-google-bbr/