针对AWS/GCP等海外云服务器不稳定之状况,需要开启GOOGLE的BBR TCP拥塞控制协议以迅速加快互联网访问。经实际测验(2019年11月21日下午16点),AWS的Japan东京D区通过BBR加速后可以实现25KB/s的下载速度迅速提升至500KB/s。
什么是BBR
BBR是GOOGLE推出的拥塞控制算法,核心大体为:遇到丢包时,不单纯考虑“丢包率”这一个变量来控制速率,这种算法目前相比于Cubix协议能更好地提升传输速率。
直接开启BBR
自带的内核版本是Linux 4.9及以上的系统已经内置BBR但默认为关闭状态。
最新版本诸如Ubuntu 19.04等已经默认开启BBR,不再需要手动开启。
但是诸如 CentOS 8.0+
, Debian 9.5+
, Ubuntu 18.04/18.10+
等近几年的需要通过以下命令开启:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
重启之后:
lsmod | grep bbr
若类似下图所示,即开启成功:
老系统开启BBR
目前 CentOS 6.0/7.0
, Debian 8
, Ubuntu 16.04/16.10
等再老一点的系统建议为升级至最新版,如果实在不想升级,可以升级Linux内核版本,参考秋水逸冰的脚本:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启之后:
lsmod | grep bbr
若类似下图所示,即开启成功:
疑问解答
1. 可以不安装BBR吗?
可以不开启,但是大多数情况下建议开启。针对国内腾讯云/阿里云等1Mbps小宽带则可以不开启。
2. 国内的服务器有必要开启BBR吗?
绝大多数情况不需要,实测腾讯云5M固定宽带开启BBR后通过HTTPS下载文件最高速度无法达到带宽的理论最大值,关闭后则可以达到理论最大值(512kb/s)。
3. BBR对UDP协议是否有用?
无用。BBR只针对TCP进行加速,对UDP不奏效。但是即将面世的基于UDP的HTTP3会采用BBR算法。
4. BBR是否需要用户端的支持?
否,BBR是单边加速算法,仅在服务器端安装即可成功加速。
5. 开启了BBR还是很慢怎么办?
首先检查BBR是否开启。
若已经开启,那说明:①你的服务器带宽质量真的很差,或者②你自己的带宽质量差,或者③网络极度拥堵。建议进行控制变量法排除问题。
6. OpenVZ可以开启BBR么?
首先,类似于KVM、HyperV及VMWare的那种可以自定义内核的虚拟机才可以开启BBR,如果你的VPS是基于OpenVZ架构的,可能无法直接开启BBR,需要通过别的方法才能启动BBR;如果是基于XEN架构的VPS,请先确定是否可以自定义内核,因为有些Xen架构的VPS是不允许自定义内核的,通过这个命令可以看到内核版本:
uname -r
,若小于4.9,则无法开启。
7. 如何停止/关闭/暂停/卸载/删除BBR?
配置了BBR之后,如果不想要了需要卸载的话,可以删除/etc/sysctl.conf上面添加的
net.core.default_qdisc=fq
和net.ipv4.tcp_congestion_control=bbr
,然后重启。
具体操作大体如下:
vim /etc/sysctl.conf
让光标移到对应的行,按dd
(dd即为vim命令的删除整行)
再按:wq
(别漏了冒号,这个是vim的保存命令)
8. BBR是否会多消耗服务器流量?
会,但是消耗的流量微乎其微,大约占到正常流量的5%左右。
9. 还有别的方法可以再加速吗?
有,还可以在开启BBR的同时启动TCP Fast Open:
echo "net.ipv4.tcp_fastopen=3" >> /etc/sysctl.conf && sysctl -p
其中参数
3
的含义:1 开启客户端,2 开启服务端,3 都开启。
10. IPv6怎么开启BBR?
BBR默认同时开启IPv4和IPv6的算法,无需另外开启IPv6。
参考
- 一文解释清楚GOOGLE BBR拥塞控制算法原理
- IPv6 如何开启 BBR 和 TCP Fast Open
- Debian 9开启Google BBR
- 题图创意参考自:How to Boost Linux Server Internet Speed with TCP BBR
沙发 🙂