Debian8/Centos7 开启 TCP-BBR 的方式

谷歌推出的 TCP-BBR 开源算法,起到单线程加速的作用 %&*(!$(&# (此处省略X字) :bubble_funny: 你要是问我具体什么理论和技术... 网络上有很多文章。我不懂我怎么说?

https://github.com/google/bbr
https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md?utm_source=www.iyu.co
https://groups.google.com/forum/#!forum/bbr-dev

开启 TCP-BBR 首先要升级 Linux 内核,也就是升级到 4.9.0 (目前是这个版本,以后会有更高的更新)

OpenVZ 架构的 VPS 没办法使用。
OpenVZ 架构没法更换 Linux Kernel ,不过可以使用一些个人编写的软件加速,这里不讲。

部分服务商首先要去后台改一下内核设置,例如 Digital Ocean 和 Linode

如何更新 Digital Ocean 服务器 linux 内核?
我的 VPS 服务商是 Digital Ocean ,首先要在服务商的网页后台,Kernel 选择为 GrubLoader ,远程命令 poweroff VPS 关机 (为了避免数据损坏使用命令关机而不是网页后台),后台进入 Power ,选择 Power On VPS 开机,如果没问题应该可以开始更换内核了。

这里我出现了些问题,因为选择几次 GrubLoader,我已经安装配置好内核,但是内核没有改变,我当时是傻掉的。
原因是 DO 在国内属于被墙一半的情况,这几天网络掉包严重,DO 后台选择后没有生效...

Linode 服务商 Kernel 选择 GRUB 2启动 (大概这样?! 我没有使用过 Linode )

0_1483265435231_QQ截图20170101175544.png

以下是我使用的操作系统,所以如果问,嗯? 好像有些系统是通用或者差不多哎,为什么没有写上呢,那是因为我没试过哎. :bubble_funny:

Debian 9 可直接开启 BBR,不需要更换 Kernel.

确认现在正使用的 linux 内核
内核 4.9 以上可以直接启动BBR

uname -a

Debian 8

这里根据官方文档升级内核 https://wiki.debian.org/HowToUpgradeKernel

搜寻内核镜像,它会列出一个表,来选一个 .
apt-cache search linux-image

如没有,需要在 /etc/apt/sources.list 添加 deb http://ftp.debian.org/debian jessie-backports main
apt update

apt-cache search linux-image

选中一个内核然后安装
apt install -t jessie-backports linux-image-4.9.0-2-grsec-amd64

查看内核列表
dpkg -l|grep linux-image

运行 update-grub 更新引导 . reboot 重启系统 , 重启完成后执行 uname -a 查看内核版本,如果是你刚刚安装好的,说明完成了更新 .

Centos
http://elrepo.org/tiki/tiki-index.php

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

查看内核列表,第一个的编号是 0

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

返回信息,可以看见刚刚安装的内核 4.9 处于第1位,编号 0

CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.13.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-fd8cf26e06e411e4a9d004010897bd01) 7 (Core)

设置处于编号 0 的 4.9 内核默认运行
grub2-set-default 0

重启 linux,SSD 存储器的服务器重启速度还是快的,几十秒就可以重新操作 .
reboot

查看内核是否在使用 4.9
uname -r

返回信息

[root@set-fire ~]# uname -r
4.9.0-1.el7.elrepo.x86_64

开启 TCP-BBR

写入参数到 sysctl.conf

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

检测设置是否生效

sysctl net.ipv4.tcp_available_congestion_control

返回信息,可以看见 bbr 已经启用

[root@set-fire ~]# sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = bbr cubic reno

查看 bbr 是否在运行

lsmod | grep bbr

返回信息

[root@set-fire ~]# lsmod | grep bbr
tcp_bbr                16384  29 

这样应该安装完成了,可以测试一下有没有传输速度上的提升。:bubble_funny:

我认为传输速度提升是有的,只是效果的差别,有些服务器作用明显,有些服务器因为网路传输原因而作用微小... 并且中国大陆有神奇的网路(丢包)。

最后由 BlueBlue_Master 编辑

@zdh_ssd @ArturiaPendragon 你们这样真够无聊的

:bubble_squinting: :bubble_spray: :bubble_spray: :bubble_spray: :bubble_spray: :bubble_spray:

@ArturiaPendragon 在 Centos7 开启 TCP-BBR 的方式 中说:

@zdh_ssd 不允许你发滑稽!

:bubble_funny: