感觉速度很慢?使用BBR优化服务器加速小飞机!

在上文 电脑小白使用Shadowsocks搭建翻墙服务器傻瓜式手把手教程中,我们已经利用Bandwagonhost(搬瓦工)的VPS 搭建起自己的专属Shadowsocks翻墙服务器(小范围分享也可以,比如供自己家人或同事使用,但不建议公开在网上,很容易导致服务器被列入黑名单导致不可用,网上也有很多坏人会拿你提供的服务去干坏事。),在使用中,你可能会感觉速度不甚理想,可能会不如你之前购买的商家的服务。

这种情况是确实存在的,因为专业提供这类服务的商家都会提供与大陆物理距离近的国家的服务器,比如HK香港/JP日本/KR韩国等。我们购买的自己的服务器是在美国西海岸洛杉矶,和周边国家确实没得比。

这个速度慢表现在两方面,一是延迟,二是带宽。

延迟是因爱因斯坦的相对论(光速)限制着的,最快也不可能低于120ms,但实际上,这延迟对访问体验影响很小的,访问网页时加载网页的时间一般都比这个长得多,两秒内能完全打开的网站都算体验很好的,延迟的这不到1/5秒,基本可忽略不计。

带宽这个才是比较要命的,因中美之间宽带上限限制,虽然服务器的网络端口是1Gbps的,但实际上我们在中国使用它,可能连10Mbps都达不到,不到1%。

这个问题是有办法改善的,因为服务器是千兆网络,而我们实际在中国访问因网络拥塞只能使用1%的宽带,相当于有99%的的带宽都是闲置的。我们可能通过优化服务器采用更激进的发包策略来加快速度。例如 我们发送一个请求,正常情况下服务器会返回一个数据包,这个数据包可能因为网络拥塞而没有到达我们这,我们通知服务器说没有收到,服务器才会再次发送,这浪费了时间,也导致了速度上不去。优化过后,服务器会根据网络情况,掉包多时一次发送2个数据包,即使一个掉包了,还有一个会到达我们这。这样做也有一个缺点:会损耗更多的流量。

我们买的服务器最少都有500G/月的流量,个人正常使用几乎是不可能用完的。所以也大可别介意损耗更多流量。

介绍完优化加速原理,我们先来做个试验

之前已经搭建好的SS服务器,我们来看下Youtube上的4K视频,看其能达到的宽带是多少?
未优化前看4k视频
看到的情况,连接宽带在5Mbps-10Mbps之间跳,看1080P没问题,很流畅,但看4K就不行了,需要缓冲。
我们装好优化再来看看情况怎么样?
优化后看4k视频
优化后看4k视频2
看到的情况,连接宽带很快就飙到了50Mbps以上,看了一会后更飙到了80Mbps以上,youtube 4K视频 即点即看,体验和未优化前有天壤之别。

另外放出我已经优化好的搬瓦工VPS的下载测试链接,你自己亲身体验下
ChromeStandaloneSetup64.exe Win7-10 64位系统安装包 50.6Mb
ChromeStandaloneSetup.exe Win7-10 32位系统安装包 40.6Mb
这是Chrome浏览器的离线安装包,刚从官网下载的最新版,请放心下载。
下载能达到的速度可认为等同于你使用它翻墙的速度。

效果这么好!你是不是也想要呢?没问题,下面开始优化教程,还是照例的傻瓜化操作^_^

准备工具

一台搬瓦工的VPS,KVM架构的,确保你是默认的系统没有重装过别的系统,关键字 Centos 6 x86 KVM 如下
搬瓦工VPS

一个SSH客户端–Xshell,下载后安装好

本教程使用的加速方案是Google的开源TCP拥塞控制算法 BBR ,其主要解决两个问题

  1. 充分利用宽带
  2. 降低网络延迟

有兴趣了解原理的朋友可以看下这个链接

原版的BBR有兼顾网络公平,使用效果有,但可能快感不够,因为它是渐渐提升网速的,而不是一开始就直接怼到满速的。

我们这里使用其修改版(感谢 @Yankee 大佬),其发包策略更加激进,从一开始就给你满满的快感^_^
修改内核并启用BBR用的是秋水逸冰的一键包,一并感谢!

下面开始

  1. 先找到你的搬瓦工管理账号信息,在购买开通后搬瓦工已经把信息发到你的注册邮箱里了,去邮箱里找到如下邮件
    VPS信息
    VPS信息2
  2. 打开已安装好的Xshell,新建连接-输入VPS信息-连接 如下图
    Xshell1
    Xshell2
    Xshell3
    Xshell4
    Xshell5
  3. 输入如下命令
    2017-09-18更新:近期发现评论区很多人说安装出错,根据提供的安装日志,发现是编译魔改块时出错了。一番查找,发现秋水逸冰修改内核的一键包默认安装最新版内核,而这个版本是一直在更新的。之前我安装时最新版内核是4.12,现在已经是4.13了,魔改版BBR只支持到4.12,4.13内核就会出现编译错误。我修改了秋水的一键包,使它指定安装4.12.10版内核,测试通过了,放出来。注意:修改过的这个脚本没有做系统适配,只适用于搬瓦工默认安装的CentOS6.9 i386(不带BBR)系统,别的系统请勿尝试,特别是64位系统,可能造成VPS系统内核损坏无法开机!
yum update -y && yum install wget -y
wget --no-check-certificate https://downloads.glorystar.me/bbr/bbr.sh && bash bbr.sh

命令输入完按回车键,会提示自动安装最新内核启用BBR,按任意键即开始安装。如下图
安装BBR
命令执行完后会提示需要重启,输入 y 按回车键重启VPS。如下图
安装BBR1

注意VPS重启会断开连接,等大约30秒等VPS重启完成,再连接上去,开始安装修改版模块。输入如下命令

wget --no-check-certificate https://downloads.glorystar.me/bbr/bbr-m.sh && bash bbr-m.sh

验证安装是否成功,输入如下命令

lsmod | grep tsunami

有输出就代表安装成功了,显示如下

s9.png

OK, Enjoy it!

本教程只在Bandwagonhost(搬瓦工)的VPS KVM CENTOS6 32位测试通过。请确保你的系统和我的环境一致。

感觉速度很慢?使用BBR优化服务器加速小飞机!》上有51条评论

      1. liuenshuo9510

        KiwiVM主面板信息是这样的,它的系统是CENTOS6呀
        localhost.localdomain [WAGON10G512M1T-CA] OVZ
        Physical Location: US, California Node ID: xxx VPS ID: xxx
        IP address: xx.xx.xx.xx
        SSH Port: xxx
        Status: Running (7 processes; LA: 0.00/0.00/0.00)
        Actions: start stop reboot kill
        RAM:
        12.76/512 MB
        SWAP:
        8.57/64 MB
        Disk usage (/):
        0.67/10 GB
        Bandwidth usage:
        Resets: 2017-08-15
        2.69/1000 GB
        Operating system: Centos 6 x86
        Hostname: localhost.localdomain

        回复
        1. skwing 文章作者

          你买的Openvz架构的VPS,而本篇教程说得很清楚,要是KVM架构才行。
          不过搬瓦工Openvz的VPS也提供使用BBR内核的的系统,你在后台后选择重装为带BBR的Centos后运行上次回复的命令试试。

          回复
        2. skwing 文章作者

          如果你的VPS买了不满1个月,也可以发TK跟客服商量下能不能转成KVM架构的,如不行,直接申请退款另外购买KVM架构的,搬瓦工有提供1个月退款保证的。

          回复
      2. zx007

        Physical Location: US, California Node ID: v7110 VPS ID: 643333
        IP address: 104.225.159.30
        SSH Port: 29728
        Status: Running, LA: 0.00 0.00 0.00 1/112 31421
        Actions:
        RAM:

        44.01/512 MB
        Disk usage (/):

        0.99/11 GB
        Bandwidth usage:
        Resets: 2017-10-12

        43.95/550 GB
        Operating system: Centos 6 x86 bbr

        Hostname: localhost.localdomain change

        这个不能弄吗???

        回复
          1. skwing 文章作者

            是的,如你不想重装,就直接跳过第一条命令,执行第二条看看,我没试过,你可以做下小白鼠~

      3. zx007

        Physical Location: US, California Node ID: v7110 VPS ID: 643333
        IP address: 104.225.159.30
        Status: Running
        Actions:
        Disk usage (/):

        1.18/11 GB
        Bandwidth usage:
        Resets: 2017-10-12

        44.27/550 GB
        Operating system: Centos 6 x86

        Hostname: localhost.localdomain change

        这个服务器怎么了??炸了??

        回复
    1. skwing 文章作者

      第一行命令 更新列表并安装wget
      第二行命令 下载bbr.sh一键包并执行
      你可以先复制第一行粘贴,回车执行,再复制第二行粘贴,回车执行。

      回复
  1. Pingback引用通告: 电脑小白使用Shadowsocks搭建翻墙服务器傻瓜式手把手教程 | SKWING

  2. mth

    执行这段的时候:
    wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && bash bbr.sh

    结果是这样的怎么解决?

    [root@host ~]# wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && bash bbr.sh
    –2017-08-23 08:57:38– https://github.com/teddysun/across/raw/master/bbr.sh
    Resolving github.com… 192.30.255.112, 192.30.255.113
    Connecting to github.com|192.30.255.112|:443… connected.
    HTTP request sent, awaiting response… 302 Found
    Location: https://raw.githubusercontent.com/teddysun/across/master/bbr.sh [following]
    –2017-08-23 08:57:38– https://raw.githubusercontent.com/teddysun/across/master/bbr.sh
    Resolving raw.githubusercontent.com… 151.101.0.133, 151.101.64.133, 151.101.128.133, …
    Connecting to raw.githubusercontent.com|151.101.0.133|:443… connected.
    HTTP request sent, awaiting response… 503 first byte timeout
    2017-08-23 08:57:54 ERROR 503: first byte timeout.

    回复
        1. skwing 文章作者

          不清楚 Github是世界上最大的代码仓库 一遭受攻击肯定是大事件 也不会马上就停止的。

          回复
  3. 浩克

    按楼主的步骤,在提示自动安装最新内核启用BBR,按任意键即开始安装后,按了任意键开始安装,完毕后并没有出现要求重启的命令,而是说
    Info: TCP BBR has been successfully installed. nothing to do…
    [root@host ~]#

    那现在是不是需要重启呢,该如何做呢?
    我没有重启,直接执行后面的步骤,结果在输入lsmod | grep tsunami验证是否成功的时候,没有输出。这个怎么解决?麻烦楼主看看

    回复
    1. skwing 文章作者

      你的系统确定是centos 6 x86 (不自带bbr)的吗?理论上如果是自带bbr的centos 6 x86的话,直接执行第二条命令就好了,不用再使用第一条命令修改内核为bbr,但我没有试过。

      回复
    1. skwing 文章作者

      你的环境可能跟我的不一样,运行以下两个命令看到输出是什么发一下
      cat /etc/issue
      uname -r

      回复
      1. zzk

        [root@host ~]# cat /etc/issue
        CentOS release 6.9 (Final)
        Kernel \r on an \m

        [root@host ~]# uname -r
        4.13.2-1.el6.elrepo.i686

        回复
        1. skwing 文章作者

          之前我用秋水的一键脚本安装的内核是4.12.4的,现在已经更新到4.13.2了,它默认安装最新的版本,但因为鸡血BBR模块不支持4.13内核,所以会编译失败,我已经把秋水的一键包修改为安装指定4.12.10版本,并测试通过,你再试一下。
          稳妥起见,最好重装下系统。

          回复
  4. 问题反馈

    CentOS release 6.9 (Final)
    4.12.7-1.el6.elrepo.i686
    执行 insmod tcp_tsunami.ko 的时候, 提示: insmod: error inserting ‘tcp_tsunami.ko’: -1 Unknown symbol in module

    回复
      1. 问题反馈

        以前就是用的秋水的脚本装的, 刚才下你那第二个脚本文件,看就几个命令, 然后我一条条执行的, 到这步就这提示了…

        回复
        1. 问题反馈

          编辑文件夹里有那个 tcp_tsunami.ko 的.. 还生成了些其它的文件, 也拷贝到内核文件夹里面去了,

          回复
        2. 问题反馈

          make 打印的信息:
          make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
          make: Entering directory `/usr/src/kernels/4.12.7-1.el6.elrepo.i686′
          CC [M] /root/ls/tcp_tsunami.o
          Building modules, stage 2.
          MODPOST 1 modules
          WARNING: “__fentry__” [/root/ls/tcp_tsunami.ko] undefined!
          CC /root/ls/tcp_tsunami.mod.o
          LD [M] /root/ls/tcp_tsunami.ko
          make: Leaving directory `/usr/src/kernels/4.12.7-1.el6.elrepo.i686′

          make 版本 3.81. gcc 版本 4.8.2
          生成的 tcp_tsunami.ko 文件大小 9804

          回复
        3. skwing 文章作者

          可能是内核不适配,再执行一遍安装内核试试 现在被修改成安装指定4.12.10版的内核了,我今天用搬瓦工的VPS测试了,没问题

          回复
          1. 问题反馈

            还是不行.. 试过好几个可能了..
            不知道生成的文件和你们的一样不..
            -rw-r–r– 1 root root 21 Sep 18 12:44 Makefile
            -rw-r–r– 1 root root 0 Sep 18 12:44 Module.symvers
            -rw-r–r– 1 root root 31 Sep 18 12:55 modules.order
            -rw-r–r– 1 root root 32858 Sep 18 12:43 tcp_tsunami.c
            -rw-r–r– 1 root root 9804 Sep 18 12:55 tcp_tsunami.ko
            -rw-r–r– 1 root root 1140 Sep 18 12:44 tcp_tsunami.mod.c
            -rw-r–r– 1 root root 2392 Sep 18 12:55 tcp_tsunami.mod.o
            -rw-r–r– 1 root root 8848 Sep 18 12:55 tcp_tsunami.o

            内核用的 4.12.10

          2. 问题反馈

            解决了, 是 GCC 的问题, 我用了备份的老版就可以了.. 说是 4. 6以后就将__fentry__移除了, 不知道大于 4.9 的版本能行不.. 我之前用的是 4.8.2

发表评论

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

你也可以 订阅 评论而不留下评论。

请勿使用QQ(腾讯)邮箱,可能会被退信导致你无法及时收到提醒。