介绍Google神器之BBR

PVE也可以用

Posted by xqiushi on Tuesday, August 8, 2017

1.前言

互联网+让我们的家用宽带基本上都是100M左右,但是总还能听到抱怨:我都100M的光纤宽带,打个游戏,卡;看个视频,卡;浏览个网页还是卡.

这里不谈家庭内部的网络构成,也不谈是不是AC路由或无千兆局域网.今天只从服务器端来说说.

2.带宽拥塞

列举一个简单的例子可以更清楚的说明:

不错,你的确是100M的宽带,如果服务器端也是100M.问题就在于这并不像家庭宽带一样,只是几个人在使用,而是几万人同时在访问,而全球总线宽带可能是几十亿人在使用.

这就像家庭网络环境在没有使用Qos的情况下,某台电脑在使用迅雷全速下载,其他电脑网络会变得非常的慢.相对于100M的视频服务器来说,其他用户访问总和就是迅雷,所以当你访问视频服务器的时候,就会变得卡.这种现象就可以理解为带宽拥塞.

3.过去解决拥塞

不言而喻,可能人们最容易想的办法就是提高服务器端的带宽.但是提高服务器带宽还是不够,因为传输总线也会受到限制.就像你想多蓄水,光增大进口(家庭带宽)和出口(服务器带宽)的管口大小,而不是增加中间断(网管总线带宽)的大小,效果是非常不明显的.特别是总线带宽的增加的成本非常高,工程量也非常大,消耗时间也比较长.

所以geek们就想到了别外的办法:我把某个端口的优先权提高.所以就有了锐速、finalspeed、kcptun等加速工具.就好比你使用了一辆"救护车"在高速路上奔跑.

锐速闭源软,扩展或制定非常的方便,如果有需要保护的隐私内容,使用闭源软件也需要权衡一下.finalspeed是开源的,但原作者已经不维护了,另提供收费版.kcptun是新兴的开源端口加速软件,年轻力壮,颇受欢迎.

那么问题来了,你也开一辆"救护车”,我一开一辆,这还好办,我们就占了两根通道,但是大家都开"救护车”,这样仍然会出现别车抢道的情况,拥塞会变得更加"拥塞”.

4.新方法解决拥塞

为此google提出了新的BBR算法,来解决这一难题.与传统解决TCP拥塞的办法比较,有两个不同:

  • 不考虑丢包
  • 预估宽带和延迟

我不再开车站一个通道,而是开车找空位别车.(这个说法可能恰当,但是我现在不能更好的描述.)

名称 是否开源 是否单边
锐速
finalspeed
kcptun
BBR
如上表,只要在服务器端安装BBR提升的是上传速度,也就等于提升了客户端的下载速度。

安装

  • 自动安装:[1]
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh
  • 手动安装:喜欢动手的同学可以参考:CENTOS7安装4.9内核并开启BBR[2]

PS:手动方法亲测过.自动方法不有测度

检验

lsmod  | grep bbr
tcp_bbr  16384  11 

显示tcp_bbr说明BBR已正常启动。

5.总结

像finalspeed,如果运营商禁止UDP后,你完全没有多大的体验效果.看着很好的变化,最终都会带来新的麻烦.只有不断创新,原是永恒的.

参考与注释

[1]. 一键安装最新内核并开启 BBR 脚本 秋水逸冰

[2]. CENTOS7安装4.9内核并开启BBR 可乐没气的猫