TCP-BBR加速VPS

很久以来,总是发现的VPS的速度很慢,只有几十KB/s的速度,而最近听说TCP-BBR协议能够有效的进行单边加速,于是试着在自己的VPS上安装了一下,发现效果很不错。下面记录下如何在VPS上使用TCP-BBR协议.

一、TCP-BBR简介

TCP加速指的是通过一组优化技术,使TCP在通过Internet传输数据的性能更高(与标准TCP相比),同时不需要修改具体应用。TCP加速分为双边加速和单边加速,其中单边加速指的是只在TCP的一端部署软件或设备,达到提升TCP性能的目标。与双边TCP相比,单边TCP优化的适应性更广且更灵活1

在早期,锐速(协议为ZetaTCP)是一个很不错的单边加速技术,而华夏创新更是声称“ZetaTCP是业界唯一可以单边部署的加速技术”2,不过google的TCP-BBR算法出现,使得单边TCP加速有了更好的选择。

TCP-BBR致力于解决两个问题3:

1. 在有一定丢包率的网络链路上充分利用带宽。
2. 降低网络链路上的 buffer 占用率,从而降低延迟。

根据相关测试表明,与标准的TCP相比,布署了TCP-BBR的机器能够有效提高在高丢包率情况下的要带宽。标准TCP在0.01%的丢包率情况下,带宽将只有30%,而TCP BBR则能做到5%以下的丢包率能保持满带宽,15%的丢包率保持75%的带宽。另外TCP BBR也能有效的降低。标准TCP延迟越大,则TCP BBR延迟下降的越大。所以BBR-TCP单边加速非常适用于两种情况:

1. 非常适合高延迟、高带宽的网络链路
2. 非常适合慢速接入网络的用户

二、在服务端布署4

2.1 安装linux kernel 4.9

TCP BBR协议已被集成到linux 4.9以上的内核版本中,也只有4.9以的内核可以使用,所以首先需要安装内核。既然需要安装内核,也就意味着openVZ虚拟化技术的VPS无法使用(openVZ是共用内核的虚拟化技术),当然如果运行商的的内核版本已足够是另外一码事。另外更换内核也存在不可预知的风险,所以首先需要利用VPS运行商提供的工具将当前的VPS备份一下。

不同的LINUX版本有着不同的更换内核的方式,下面列主常见的几个发行版本的安装方法。

2.1.1 Debian/ubuntu

1.首先需要下载相应版本的内核,一般情况下,可直接下载4.9的版本,当然如果需要更新的版本,可以点击此处

$ wget wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb

2.安装内核并查看内核

$ sudo dpkg -i ./linux-image-4.9*.deb
$ sudo dpkg -l |grep linux-image
ii  linux-image-4.4.0-31-generic       4.4.0-31.50~14.04.1              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.9.0-040900-generic   4.9.0-040900.201612111631        amd64        Linux kernel image for version 4.9.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-31-generic 4.4.0-31.50~14.04.1              amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-generic-lts-xenial     4.4.0.31.21                      amd64        Generic Linux kernel image

显然机器中已经有两个版本的内核。

3.更新grub引导并重启。更新引导的时候,会默认使用最新的kernel(也就是4.9的版本)

$ sudo update-grub
$ sudo reboot

2.1.2 CentOS6

1.更新内核

$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
$ sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

2.查看内核版本:

$ rpm -qa | grep kernel

3.更新grub引导文件并重启

$ sudo sed -i 's:default=.*:default=0:g' /etc/grub.conf
$ sudo reboot

2.1.3 CentOS7

1.更新内核

$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
$ sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

2.查看内核版本:

$ rpm -qa | grep kernel

3.更新grub引导文件并重启

$ sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

#default 0表示第一个内核设置为默认运行, 选择最新内核就对了
$ sudo grub2-set-default 0

$ sudo reboot

2.2 开启TCP-BBR

在完成重启之后,如果能够重新进入系统,那么首先查看一下当前运行的内核:

$ uname -r
4.9.0-040900-generic

之后再使得BBR生效即可:

$ sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
$ sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
$ sudo sysctl -p

2.3 检测TCP-BBR是否生效

为检测TCP-BBR是否生效,需要执行一下下面三条命令,如果均存在bbr的字样,说明已经成功生效了。

$ sudo sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
$ sudo sysctl -n net.ipv4.tcp_congestion_control
bbr
$ sudo lsmod | grep bbr
tcp_bbr 20480 55

三、小结

TCP-BBR在本人ubuntu14.04+DigitOcean的VPS上已经成功运行,表示加速效果相当不错,表示youtube的720p的视频都可以看了,而之前速度完全不行。下面是几个官方的参考页:

  1. TCP-BBR项目github主页:https://github.com/google/bbr
  2. TCP-BBR项目开发论坛:https://groups.google.com/forum/#!forum/bbr-dev
  3. TCP-BBR快速使用手册:https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md

Reference

此条目发表在LINUX, 网络建站分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。