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%的样子。