Shadowsocks 服务端 Ubuntu 开启BBR加速

关于 BBR 加速算法

BBR是一款Google开发的TCP拥塞控制算法,开启这个算法的好处:

  • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路
  • 降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户

先检查一下 Ubuntu 系统是否可以开启这个加速算法

uname -r
4.15.0-36-generic

Linux系统内核高于 4.9 就可以开启。如果你的系统内核低于4.9,升级 Ubnutu 到最新版本就可以了

下面默认 Ubuntu 内核版本高于4.9,基于KVM的 VPS(包括DO)

shadowsocks 服务端开启 BBR加速

开启 BBR 加速需要设置 Linux 内核参数。自定义内核参数最好的实践是这样的:

  • 在 /etc/sysctl.d/ 下设置,尽量避免修改 /etc/sysctl.conf

  • 文件名以数字开头,表示系统启动时文件加载的顺序,数字小的文件先加载,最后加载 sysctl.conf

  • 文件名应该表示明确的意义,比如 50-tcp_fastopen.conf

    kige@ubuntu:~$ su
    # echo 'net.core.default_qdisc=fq' > /etc/sysctl.d/98-bbr.conf
    # echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.d/98-bbr.conf
    # sysctl --system
    

上面命令切换到 root 用户,把设置写入 .conf,然后用 sysctl --system 从系统目录重新读入所有配置

不要用 sysctl -p 来代替 sysctl --system,因为 sysctl --system 和重启系统的效果类似,于是我们可以测试出重启系统后的情况

用了 98-bbr.conf 而不是 50-bbr-conf,是为了覆盖 50-default.conf 中设定的默认值: net.core.default_qdisc = fq_codel

fq 和 fq_codel 有什么区别

CoDel 是 controlled delay的缩写

  • net.core.default_qdisc = fq_codel

    最好的通用qdisc

  • net.core.default_qdisc = fq

    用于胖服务器,fq_codel用于路由器,在虚拟化环境中,底层服务器是路由器,客户虚拟机是主机

检查 BBR 模块有没有启动:

kige@ubuntu:~$ lsmod | grep bbr

返回值有 tcp_bbr 说明 bbr 已启动

再检查我们刚才设置的值是否已经起作用:

$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
$ sysctl net.core.default_qdisc
net.core.default_qdisc =  fq

相关资源: