Google BBR-加快VPS的网络传输速度的脚本

什么是BBR?

BBR(“ Bottleneck Bandwidth and Round-trip propagation time”)是Google开发的一种新的拥塞控制算法。拥塞控制算法(连接到网络的每台计算机,手机或平板电脑)决定了数据发送的速度。拥塞控制算法如何做出此决定?自1980年代后期以来,互联网已大量使用基于丢失的拥塞控制,仅依靠丢失数据包的迹象作为信号减慢速度。由于互联网交换机和路由器的小缓冲区与互联网链接的低带宽完全匹配,因此多年来一直很好地工作。结果,当发件人真正开始以太快的速度发送数据时,缓冲区倾向于填充和丢弃多余的数据包。

但是,在当今的各种网络中,基于损耗的拥塞控制存在问题:

  • 在浅缓冲区中,数据包丢失发生在拥塞之前。利用当今的高速,长途链路,使用带有浅缓冲区的商用交换机,基于丢失的拥塞控制会导致吞吐量过低,因为它反应过度,即使丢包是由于瞬时流量突发而导致的丢包,发送速率也减半(即使链路大部分处于空闲状态,这种丢包也可能非常频繁)。
  • 在深缓冲区中,拥塞发生在数据包丢失之前。在当今互联网的边缘,基于损耗的拥塞控制通过反复填充许多最后一英里链路中的深缓冲区并造成几秒钟不必要的排队延迟,从而导致了臭名昭著的“ 缓冲区膨胀 ”问题。

我们需要一种能够响应实际拥塞而不是数据包丢失的算法。BBR通过彻底重写拥塞控制来解决此问题。我们从头开始,使用了一个全新的范例:为了确定通过网络发送数据的速度,BBR考虑了网络传递数据的速度。对于给定的网络连接,它使用对网络传输速率和往返时间的最新测量结果来建立一个显式模型,该模型包括该连接可用的最大最近带宽以及其最小最近往返延迟。然后,BBR使用此模型来控制它发送数据的速度以及它实时在网络中允许的最大数据量。该算法可实现更高的带宽和更低的互联网流量延迟。可为来自google.com的TCP流量提供动力,并在全球范围内将YouTube网络吞吐量平均提高了4%,而在某些国家/地区则提高了14%以上。

” alt=”” aria-hidden=”true” />GCP-TCP-BBR-animate-r3%2B%25281%2529plh0.GIF

BBR的优点不仅仅局限在Google和YouTube。主要的优点如下:

  • 更高的吞吐量:BBR可以大大提高高速长距离链路的吞吐量。例如一台具有10 Gb带宽的计算机,该计算机以往返时间为100 ms(例如,从芝加哥到柏林)的路径发送,丢包率为1%。在这种情况下,BBR的吞吐量比当今最佳的基于损耗的最佳拥塞控制CUBIC高2700倍(CUBIC的速度约为3.3 Mbps,而BBR的速度超过9,100 Mbps)。由于这种丢失恢复能力,单个BBR连接可以充分利用具有数据包丢失的路径。这使得它非常适合使用单个HTTP / 2连接,并且意味着用户不再需要打开多个TCP连接来完全利用的解决方法。最终结果是当今高速骨干网上的流量更快,
  • 更低的延迟:BBR可以显着减少将用户连接到互联网的延迟。例如一个典型的最后一英里链路,其带宽为10兆比特,往返时间为40毫秒,典型的1000包瓶颈缓冲区。在这种情况下,BBR的排队延迟比CUBIC低25倍(CUBIC的往返时间平均为1090 ms,而BBR仅为43 ms)。BBR减少了队列,从而在观看视频或下载软件时减少了最后链接的延迟,从而实现了更快的网络冲浪速度和响应速度,以更快的加载视频会议和游戏。

谷歌Github:https://github.com/google/bbr

秋水逸冰的BBR一键安装脚本

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M
日期  :2018 年 12 月 14 日

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者为:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

原创文章,作者:admin,

发表评论

电子邮件地址不会被公开。 必填项已用*标注