TCP BBR试用体验

Kernel 4.9 正式版本的发布带来了一些令人激动的特性以及一些驱动的更新。
其中来自 Google 的 TCP BBR 拥塞控制算法也在这个版本并入了主线。
                                                       ———— 背景

今天和大神聊天的时候知道了TCP BBR这个神奇的控制算法。遗憾自己以前的孤陋寡闻,我对此等神器居然一无所知。为了尽快弥补这个遗憾,我大晚上的搭了一台测试机对TCP BBR进行了测试。
首先需要一台linux 4.9内核版本以上的机器(现在居然已经出到4.10了,不过gregkh已经宣布4.9将是LTS版本),我搜刮了我所有的机器发现居然没有一台的内核达标。于是在Vultr上买了一台新的CentOS来测试。
要在 CentOS 上安装最新的内核版本,我们需要增加一个 ELRepo 源。首先,让我们添加 ELRepo GPG key:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

之后添加 CentOS-7的 源:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装fastestmirror (Vultr的镜像已经自带了,保险起见,可以确定一下)

yum install yum-plugin-fastestmirror

最后,安装 kernel 主线版本

yum --enablerepo=elrepo-kernel install kernel-ml

当然,将 kernel-ml 选为第一启动

grub2-set-default 0

重启后,通过 uname -a 查看内核是否已经切换到最新版

$ uname -a

在确定安装好了4.9以上版本内核之后,我们就可以开启TCP BBR了。

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

重启后,首先 uname -a 看下内核是否切换,然后执行下面明亮查看内核是否开启 TCP BBR

sudo sysctl net.ipv4.tcp_available_congestion_control
sudo sysctl net.ipv4.tcp_congestion_control

查看 tcp_bbr 模块是否加载

lsmod | grep tcp_bbr

如果已经加载成功,就可以愉快地开始测试了。实测发现TCP BBR确实可以有效提高上行速度,但效果没有网上其他的测评那么拔群,我这里差不多是200%的样子。