老朋友都知道,之前的旧博客是用Wordpress搭建的,出于各种原因导致加载比较慢,再加上受到了大佬们的安利,所以改用了现在的Typecho,整站访问速度看起来还不错,但是某些地方还是有些瑕疵,所以在那之后我就一直在找能够有效加速网站访问速度的方法,然后在今天找到了谷歌BBR拥塞控制算法,开始着手配置。
注:本文部分内容引用于其他博客
0x00 概念
传统 TCP 拥塞控制算法,基于 丢包反馈 的协议。
基于「丢包反馈」的协议是一种 被动式 的拥塞控制机制,其依据网络中的 丢包事件 来做网络拥塞判断。即便网络中的负载很高时,只要没有产生拥塞丢包,协议就不会主动降低自己的发送速度。
这种协议可以 最大程度的利用网络剩余带宽,提高吞吐量。 然而,由于基于丢包反馈协议在网络近饱和状态下所表现出来的侵略性,一方面大大提高了网络的带宽利用率;但另一方面,对于基于丢包反馈的拥塞控制协议来说,大大提高网络利用率同时意味着下一次拥塞丢包事件为期不远了,所以这些协议 在提高网络带宽利用率的同时也间接加大了网络的丢包率 ,造成整个网络的抖动性加剧。
于是Google 的科学家们开发了一种过渡算法,这个算法的名字是 BBR(Bottleneck Bandwidth and RTT) ,它是一种全新的 拥塞控制算法 ,BBR 同 CDG 一致的思想是不以丢包作为拥塞控制信号,但是和 CDG 不同的是,BBR 能和 cubic 和 reno 共存。
BBR 由 Google 开发,供 Linux 内核的 TCP 协议栈使用,有了 BBR 算法,Linux 服务器可以显著提高吞吐量并减少连接延迟,简单来说 BBR 能加速网络传输速度。此外,部署 BBR 也很容易,因为该算法只需要发送方,而不需要网络或接收方的支持。
使用BBR前后网络吞吐量对比图 / By Google
0x01 支持环境
系统:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟化技术:Xen、KVM、VMWare,不支持OpenVZ
Linux内核从4.9版开始集成BBR算法。相比锐速BBR的加速效果更为温和,并且占用内存小对服务器压力也很小,当时理想情况下是可以跑满整个服务器物理带宽,比锐速更加稳定,能够有效的降低服务器的网络丢包率,减少网络拥堵。
我的服务器用的是debian,由于Debian 9默认的内核版本就是4.9.x,我们不需要像别的系统需要更换内核,直接就能开启BBR算法。
0x02 配置BBR
0x02.1 检查内核
用lsb_release -a
或者uname -r
命令:
root@iZ2ze0a8w2ct7qZ:~# uname -r
4.9.0-9-amd64
0x2.2 修改变量
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
命令保存。
0x2.3 查看内核是否已开启BBR
sysctl net.ipv4.tcp_available_congestion_control
如下显示表示开启成功:
# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
0x2.4 查看BBR是否启动
lsmod | grep bbr
如下显示表示已经开始:
lsmod | grep bbr
tcp_bbr 20480 4
0x03 结语
综上,开启了BBR后测试了一下,效果不是很明显,可能是因为我的垃圾站还不至于到堵塞那一步吧;
于是为了安全性和访问速度,我还是毅然决然地投资了CDN,现在感觉速度还不错。
嘛,还是希望大家能多多帮我测试一下,让我的站能够配得上BBR(疯狂暗示)