BBR 算法由 Google 提出,原先主要用于 Google 内部网络的速度提升,现在 Google 把它提交到了 Linux 内核,所有人都可以使用了。
开始了解
Linux kernel 4.9 已支持 tcp_bbr
Ubuntu Server 16.04.1 LTS 的内核版本为 4.4
在虚拟服务器上面更新内核不支持 OpenVZ 架构的 VPS。
GitHub上的教程 开启TCP BBR拥塞控制算法
更新内核
我的服务器在腾讯云,服务器操作系统为 Ubuntu Server 16.04.1 LTS 64 bit
使用 sudo 或者切换至 root 账户
sudo -s
创建一个暂时盛放内核安装包的目录 kernel (可选。只是为了一个干净的目录~)
mkdir kernel && cd kernel
下载最新内核,最新内核查看>>这里<<
curl -O http://kernel.ubuntu.com/~kernel-ppa/mainline/<版本号>/linux-image-<版本号>-generic_<版本号>_amd64.deb
PS:已经打包好 Ubuntu 新内核安装包分为两部分 headers 和 image,image 才是我们需要的内核安装包,headers 也可以下载来一起安装。而安装包又分为两个版本 generic 和 lowlatency,在这里我选择的是 generic 版本,而 lowlatency 适合于 Ubuntu Studio 这种音乐工作站需要一种 lowlatency(低延迟)的 “实时内核”。另外还有一个 linux-headers-*_all.deb 的安装包也可以下载来一起安装。
安装内核(包的名字太长,直接使用 *.deb 泛指)
dpkg -i *.deb
删除旧内核(可选)
dpkg -l|grep linux-image
apt-get purge <旧内核>
更新 grub 系统引导文件并重启
update-grub
reboot
开启 TCP BBR
开机后 uname -r 看看是不是内核 ≥ 4.9
执行
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, 则证明你的内核已开启 TCP BBR!
执行
lsmod | grep bbr
看到有 tcp_bbr 模块即说明bbr已启动
实际测试
在腾讯云广州III 节点使用 wget 下载于DigitalOcean 美国纽约数据中心的 VPS 上面的 Linux-image-**.deb (52MB)文件。
测试分两次,分别是普通下载速度和更新内核后开启 TCP BBR 后的下载速度。直接上图片:
第一次下载,数据传输速度十分缓慢而且不稳定,低至 50KB/s!导致我直接 Control+C 放弃下载。
第二次下载,数据中心的 VPS 已经开启 TCP BRR,再次尝试 wget!速率一路飙升到 1.45MB/s,仍然不算稳定,但是传输效率明显提高!
注:腾讯云广州III 节点 VPS 下行共享带宽无限速,DigitalOcean 美国纽约数据中心 VPS 上行共享带宽无明确限速。