如何开启 BBR 加速 ?

一、何为 BBR ?

  BBR 即 Bottleneck Bandwidth and RTT,一种 TCP 拥塞控制算法,类似于锐速,可用于优化 TCP 连接,是最近比较火的加速优化工具,由 Google 出品 ,比较奇怪的是项目主页上说 “This is not an official Google product”,但又放在 Google Github 主页上,估计是测试版本

二、原理是什么?

  TCP BBR 致力于解决两个问题:
  1、在有一定丢包率的网络链路上充分利用带宽。
  2、降低网络链路上的 buffer 占用率,从而降低延迟。
  在这项技术中,BBR 接管了 TCP 的控制权,以实际情况说,也就是应用程序在创立会话时,这项技术会增加额外少量的的会话,这些会话用于检测带宽和延迟,根据网路设备返回的情况来分析网路质量(确认延迟和带宽口径,以及回避不易确认丢包类型)。

三、加速效果如何?

  通过上面的原理分析,我们知道 BBR 的最终目的是最大化利用网络上瓶颈链路的带宽。在实际使用中,通过 BBR 加速基本可以提升 1 倍以上,特别是国外丢包严重的线路,加速效果非常明显,国内线路的话,因为本身比较稳定,效果可能就没那么明显了。

四、会消耗更多流量吗?

  关于流量消耗,我们知道像 net-speeder、kcp-tun 等等加速工具是通过多发包来实现加速,因此使用这些加速是两倍三倍甚至更多的消耗流量,而 BBR 属于动态调整发包量,虽然也会多消耗流量但相对来说会少一些,而且线路使用率会更高。

五、如何开启 BBR ?

  BBR 目前已集成在 kernel 4.9 及以上版本,所以如果 kernel 低于 4.9 需要先升级(通过命令 uname -a 查看),然后再开启 BBR,由于涉及内核,故操作时要特别小心,以免操作失误开不了机。

① Debian / Ubuntu 升级内核

  以 64 位为例,下载最新内核,最新内核查看 这里

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-image-4.13.10-041310-generic_4.13.10-041310.201710270531_amd64.deb \
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-headers-4.13.10-041310_4.13.10-041310.201710270531_all.deb \
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-headers-4.13.10-041310-generic_4.13.10-041310.201710270531_amd64.deb

  安装内核

dpkg -i linux-*.deb
reboot  //安装完重启

  删除旧内核以及无用套件(可选)

dpkg -l|grep linux-*    //显示安装的内核
apt-get purge 旧内核    //彻底删除旧内核
apt autoremove

② CentOS 6 升级内核

  下载安装内核,最新内核查看 这里

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

  查看内核是否安装成功

rpm -qa | grep kernel

  更新 grub 系统引导文件并重启:

sed -i 's:default=.*:default=0:g' /etc/grub.conf
reboot

  若开不了机, 应是卡在 grub 引导, 只需要手动选择内核就可以了。

  删除内核(可选)

rpm -ev 旧内核  

③ CentOS 7 升级内核

  下载安装内核,最新内核查看 这里

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

  查看内核是否安装成功

rpm -qa | grep kernel

  更新 grub 系统引导文件并重启(注意有的云主机是 /etc/grub.cfg)

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
grub2-set-default 0  #default 0 表示第一个内核设置为默认运行, 选择最新内核就对了
reboot

  删除内核(可选)

rpm -qa | grep kernel  //查看内核列表
rpm -ev 旧内核  

2017/08/22 更新:
若使用 yum 安装提示找不到包(通常是国内主机),则可以采取 rpm 直接安装的方法解决:
① 打开内核列表界面: CentOS6 CentOS7 .
② 右键选中最新版本内核,复制链接地址:

getlink.jpg

③ 在 SSH 命令行中输入:

rpm -ivh 刚复制的链接地址

其他步骤不变。


④ 开启并验证 BBR

  重启后执行

uname -r 

  查看新内核是否启用成功,启用成功则继续执行

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 && \
sysctl net.ipv4.tcp_congestion_control

  若两者返回结果都有 bbr , 则证明你的内核已开启 BBR,执行

lsmod | grep bbr

  看到有 tcp_bbr 模块即说明 BBR 已启动。

六、总结

  基于 KVM 的 VPS 基本都支持开启 BBR,比如 VultrGCEAWS 等, 除了 GCE 台湾机房开启效果不明显(本来就很快了),其他机房加速还是挺不错的,拥有 VPS 的同学可以尝试开启体验一下。
  另外,现在网上也有不少一键安装包,大家可以下载下来参考,不过也有看到反馈说一键安装后 VPS 启动不了或者磁盘变成了只读,由于手动安装也不难,因此博主还是推荐大家自己动手。

七、问答

  问:GCE 重启后发现变成 read-only system怎么办?
  答:root 用户执行以下命令即可修复:

~# mount -o remount rw /

  CentOS 7 可通过如下方法实现开机自动修复(目前发现也只是 CentOS 有这问题):

~# chmod +x /etc/rc.d/rc.local
~# vim /etc/rc.d/rc.local
  mount -o remount rw /     # exit 0 前添加这一行

你可能还需要:《部署 chacha20,salsa20,chacha20-ietf 等高级加密方式


参考文章:
1、开启 TCP BBR 拥塞控制算法
2、Linux Kernel 4.9中BBR拥塞控制算法的优势
3、How to Deploy Google BBR on CentOS 7
4、Centos7开机启动自己的脚本


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 linux加速vultrgceawsbbrcentos 的文章

 本文最后更新于 2017/10/30 20:00:44,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 系统 > 如何开启 BBR 加速 ?

精选评论

  1. 欧文斯

    Ubuntu 17 默认内核已是 4.x ,安装前务必确认清楚。