Debian 开启BBR TCP加速

BBR 已经出来将近半年了。 它解决问题的出发点在于:

  • 在有一定丢包率的网络链路上充分利用带宽,最大优化网络速度.。
  • 降低网络链路上的 buffer 占用率,从而降低延迟。

关于 BBR 加速原理的细节,可以参考知乎这篇文章,讲的很详细。《Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?》

这篇文章我记录一下开启过程。事先提个醒,在生产环境中不轻易升级内核。就我实践的结果,这次升级把我的Docker搞坏了,服务无法启动。

安装

Kernel.Ubuntu.com找到版本号文件夹,amd64 的 linux-image 中含有 generic 这个 deb 包的。以我Debian 64位的系统,于是安装过程如下:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10/linux-image-4.10.0-041000-generic_4.10.0-041000.201702191831_amd64.deb
dpkg -i     dpkg -i linux-image-4.10.0-041000-generic_4.10.0-041000.201702191831_amd64.deb

安装完成后重启。

开启BBR

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

sysctl -p

如果以下命令输出有bbr,那么已经成功开启BBR.

sysctl net.ipv4.tcp_available_congestion_control

如果以下命令输出有tcp-bbr,那么BBR正在运行.

lsmod | grep bbr

关闭BBR

执行完以下命令,重启后即可.

sed -i '/net\.core\.default_qdisc=fq/d' /etc/sysctl.conf
sed -i '/net\.ipv4\.tcp_congestion_control=bbr/d' /etc/sysctl.conf
sysctl -p

相关问题

如果是租用的云服务器,要注意确认系统内核是否被改过,有无影响。例如如果是linode的服务器,要注意将启动配置修改成使用grub2内核模式启动。

参考资料


Jekyll 使用技巧 Laravel 插件 mews/captcha 实现图片验证码