比锐速还强的 TCP拥塞控制技术 —— TCP-BBR 测试及开启教程
文章目录
[显示]
本文最后更新于 2017年6月11日 02:36 可能会因为没有更新而失效。如已失效或需要修正,请留言!
这几天BBR很火的样子,我就半夜测试一下。BBR和锐速都属于TCP拥塞控制技术,虽然这类技术互联网上面不少,不过我都不是很了解。
本文章仅为我个人的测试,各地区测试情况不一样,而且BBR还处于开发初期并且开源,而锐速则已经停止开发了。
一键脚本安装:『原创』Debian/Ubuntu系统 TCP拥塞控制技术 ——TCP-BBR 一键安装脚本
注意:TCP-BBR和锐速一样,不支持Openvz,查看本教程之前,请先确定你的VPS的虚拟化技术!
注意:本教程涉及到VPS更换内核,所以如果步骤错误,或者VPS不兼容最新的内核,会导致无法开机等错误,请勿用于生产环境!!!!
BBR 简单介绍
BBR 是一个由谷歌社区开发的 TCP拥塞控制技术,目前处于开发初期,但是前景很棒,大家可以持续关注,同时BBR是集成与Linux最新版本的内核中的。
具体什么是TCP拥塞控制技术,详细的我也不懂,我就用通俗的解释一下,不一定准确,看一看理解一下就好了。
原始的TCP流量传输技术,流量管理很乱,我们把 TCP流量比喻成 公路上的汽车流量,而TCP传输隧道就是 公路,那么:
在原始的TCP流量传输中,一条十字路口公路,很多车流量,但是却没有红绿灯和交警,导致大家左挤右挤的堵车了,这就是没有合理的管理导致的。
而BBR和锐速等TCP流量控制技术,就是红绿灯+交警,他们就是在无人管理的十字路口,去合理指挥分配车流量,然后最大化的利用车流量,保证路面畅通。
大概就是这样解释了,有什么错误请指出。
启动步骤
首先是教程,本人喜欢Debian,所以我先使用 Debian 7 / 8 x64 系统来做测试。Ubuntu随后考虑加上。
每一个步骤,我都会加上VPS中执行后的提示,本教程以64位为例。但是各个系统可能会存在差异,所以仅为参考。
在 2016-12-05 21:00 更新的 4.9.0-rc8 内核已经支持了TCP-BBR,最新内核看这里。
注意:TCP-BBR必须是 2016-12-05 21:00 更新的 4.9.0-rc8 内核及以后的版本 才能开启,而锐速并不支持这个最新的内核版本,所以TCP-BBR和锐速是不能共存的。
更换内核需要ROOT权限的账号,所以如果你是普通用户 的话,需要切换到ROOT账号,如果你是ROOT账号,那就忽略这个步骤:
- sudo su
输入并回车后,会提示让你输入当前用户账号的密码,输入并回车后就可以继续下面的步骤了。
- uname -m
使用这个命令会返回你的系统位数,如果是 x86_64 那就是64位,如果是 i386 或 386 那就是32位,如果是 i686 或 686,那么不支持。
下载内核文件(64位系统)
- wget -O linux-image-4.10.1-amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb
下载内核文件(32位系统)
- wget -O linux-image-4.10.1-i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_i386.deb
安装内核(64位)
- dpkg -i linux-image-4.10.1-amd64.deb
安装内核(32位)
- dpkg -i linux-image-4.10.1-i386.deb
列出并删除旧内核
列出VPS 除了刚才安装的内核以外的 所有内核名称:
注意:这个代码是排除了刚才安装的内核,所以不会显示刚才安装的那个内核。删除了多余的内核后,就会什么都不显示!
- dpkg -l|grep linux-image | awk '{print $2}' | grep -v 'linux-image-[4-9].[0-9]*.'
- root@bbr1:~# dpkg -l|grep linux-image | awk '{print $2}' | grep -v 'linux-image-[4-9].[0-9]*.'
- linux-image-3.16.0-4-amd64
- linux-image-amd64
我使用的VPS是 3.16.0-4-amd64
内核的,所以删除这两个内核: linux-image-3.16.0-4-amd64、linux-image-amd64
。
删除旧内核:
- apt-get purge 旧内核名称
- # !!!!示例!!!!
- # 比如我是有这两个内核,所以我把这两个删掉,不要照着我的这个步骤做,自己换成你VPS的内核名称!!!
- apt-get purge linux-image-3.16.0-4-amd64
- apt-get purge linux-image-amd64
- # !!!!示例!!!!
删除旧内核的过程中会提示你是否继续,选择 Y
,然后还会提示你是否终止删除内核的行为,选择 NO
。
更新 grub 系统引导文件并重启VPS
- # 更新系统引导文件
- update-grub
- # 重启VPS,执行后SSH链接会断开,等十几秒再重新连接继续执行下面的启动命令。
- reboot
- # VPS提示
- root@bbr1:~# update-grub
- Generating grub configuration file ...
- Found linux image: /boot/vmlinuz-4.10.1-040900rc8-generic
- Found initrd image: /boot/initrd.img-4.10.1-040900rc8-generic
- done
开启bbr
- echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
- echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
执行这个保存生效更改。
- sysctl -p
- # VPS提示
- root@bbr1:~# sysctl -p
- net.ipv6.conf.all.accept_ra = 2
- net.core.default_qdisc = fq
- net.ipv4.tcp_congestion_control = bbr
关闭bbr
- sed -i '/net\.core\.default_qdisc=fq/d' /etc/sysctl.conf && sed -i '/net\.ipv4\.tcp_congestion_control=bbr/d' /etc/sysctl.conf
- sysctl -p
执行完上面的代码,就使用reboot重启VPS后才能关闭bbr,重启后再用下面的查看bbr状态代码,查看是否关闭了。
- reboot
查看bbr是否开启
执行下面命令,如果结果中有bbr,即证明你的内核已开启bbr。
- sysctl net.ipv4.tcp_available_congestion_control
执行下面命令,看到有 tcp_bbr 模块,即说明bbr已启动
- lsmod | grep bbr
- # VPS提示
- root@bbr1:~# sysctl net.ipv4.tcp_available_congestion_control
- net.ipv4.tcp_available_congestion_control = bbr cubic reno
- # ================================================
- root@bbr1:~# lsmod | grep bbr
- tcp_bbr 20480 0
卸载BBR
BBR集成于内核中,所以卸载BBR=更换内核,教程:
Debian/Ubuntu 内核降级教程 —— 降低(BBR)为支持锐速的内核版本
裸 SS/锐速+SS/BBR+SS 速度对比
本人的测试环境是:晚上23:00点,联通运营商,美国渣渣VPS。
各个地区和运营商都存在差别,我的测试 速度对比仅供参考。谷歌网盘单线程下载测速地址:100MB
因为是半夜测试的,再加上用的美国垃圾小鸡,所以 裸SS 速度感人。
使用 锐速+SS 后,单线程下载测速,翻了十倍,Youtube 也能看 1080P流畅 了。
换成 BBR+SS 后,单线程又在 锐速+SS 的基础上翻了一倍,Youtube 速度有上升了一个档次 1440P 倒是勉强,1080P可以随便拖拉了。
虽然 Youtube 的数值不是很准,但是还是有点用的,数值太低同样也代表速度不行。
总其以上,锐速(ServerSpeed)的技术已经成熟、定型,加速效果还是不错的,但是不再更新和维护了。
而 TCP-BBR 属于新生的技术,处于开发初期,买没有完善成熟,未来的潜力相信还好更好。
所以总的来说:非折腾党,还是建议先使用锐速观望 TCP-BBR 一段时间,这是最稳妥的办法。
裸 SS
锐速+SS
BBR+SS
本文章安装步骤来自:https://github.com/iMeiji/shadowsocks_install/wiki/开启TCP-BBR拥塞控制算法