看到 Leonax+ 更新了一片文章 在 Debian 中启用 TCP BBR 算法 顺势了解到出了这样一个技术。 BBR 算法由 Google 提出,原先主要用于 Google 内部网络的速度提升,现在 Google 把它提交到了 Linux 内核,所有人都可以使用了。
不明觉厉!跑去看了 BlueCocoa 关于TCP的三言两语 以及 Google 的报告,然后又搜索了 “BBR 测试效果” 的相关文章。厉害了!我的新玩具!
开始了解
- Linux kernel 4.9 已支持 tcp_bbr
- Ubuntu Server 16.04.1 LTS 的内核版本为 4.4
- 在虚拟服务器上面更新内核不支持 OpenVZ 架构的 VPS。
- GitHub上的教程 开启TCP BBR拥塞控制算法
- 启用 TCP BBR 拥塞控制算法*
- Debian/Ubuntu 之内核升级*
更新内核
我的服务器在腾讯云,服务器操作系统为 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 上行共享带宽无明确限速。