TCP BBR算法加速效果实测(比对)

2023-10-28 18:50
文章标签 算法 效果 加速 tcp 实测 bbr

本文主要是介绍TCP BBR算法加速效果实测(比对),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为一枚学生党,国内的云服务器价格和带宽太过昂贵,有提供学生优惠的云服务带宽也只有1M,而我想做的是在服务器上搭建一个同步云盘,当然这些都不是最重要的,最重要的是无法帮助我科学上网。
恰巧去年暑假的时候,Vultr搞活动注册了一个账号,现还有15美元,当时因为它们的网络对电信太不友好,速度慢丢包率高,用了一小段时间后就抛弃了,而后在去年年底Google 发布了TCP BBR算法,最近突然想起来正好可以用它来试试这个算法的效果。
这里不谈论哪家的云服务器性价比高。

无TCP BBR测速

先是从这里测试了一下它的哪一个节点对我现在的网络比较友好,多次测试后选择了Los Angeles节点,创建了一个Ubuntu 16.10 x64服务器。

在部署完成后,为服务器装上nginx,并做如下配置:

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;keepalive_timeout  65;server {listen 80;charset utf-8;root /root/test;location / {autoindex on;autoindex_exact_size on;autoindex_localtime on;}
}

}" title="" data-original-title=“复制”>


user root;
worker_processes 2;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

<span class="hljs-attribute">sendfile</span>        <span class="hljs-literal">on</span>;<span class="hljs-attribute">keepalive_timeout</span>  <span class="hljs-number">65</span>;<span class="hljs-section">server</span> {<span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;<span class="hljs-attribute">charset</span> utf-<span class="hljs-number">8</span>;<span class="hljs-attribute">root</span> /root/test;<span class="hljs-attribute">location</span> / {<span class="hljs-attribute">autoindex</span> <span class="hljs-literal">on</span>;<span class="hljs-attribute">autoindex_exact_size</span> <span class="hljs-literal">on</span>;<span class="hljs-attribute">autoindex_localtime</span> <span class="hljs-literal">on</span>;}
}

}

然后进入到/root/test文件夹内下载一个100M的文件,这里我们用官方测速的文件:

wget https://lax-ca-us-ping.vultr....

运行nginx后用浏览器访问ip地址,选择文件进行下载。
我这里是四川电信的网,分别使用wget和迅雷进行下载时速度如下:
图片描述
图片描述

wget速度保持在20KB/s~40KB/s,迅雷要快一些,但也只有100KB/s~200KB/s,很不稳定,在去年使用的时候,经常抽风导致即使是迅雷也只有50KB/s不到。

开启TCP BBR

Linux4.9的内核已经支持TCP BBR了,所以我们将内核升级到4.9.10,其他版本可以到这里来查看和下载:

  1. 下载安装包: wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.10/linux-image-4.9.10-040910-generic_4.9.10-040910.201702141931_amd64.deb

  2. 安装: dpkg -i linux-image-4.9.10-040910-generic_4.9.10-040910.201702141931_amd64.deb

  3. 查看当前系统中都有哪些内核: dpkg -l | grep linux-image

  4. 删除旧的内核,我这里的旧内核版本是4.8.0-30,所以执行: apt-get purge *4.8*

  5. 步骤4完成后再执行步骤3会发现只剩下4.9.10的内核了

  6. 更新引导: update-grub

  7. 重启: reboot

  8. 编辑/etc/sysctl.conf, 在文件末尾加上下面两行

    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr
  9. 保存退出后执行sysctl -p使配置生效

  10. .执行lsmod | grep bbr, 如果看到tcp_bbr则说明启用成功

启用TCP BBR后,再次用wget和迅雷重新下载文件测速:
![wget][4]
迅雷

我用的是电信20M带宽,wget几乎是以满速的状态在下载,迅雷则稍慢一些,原因不明(和运行在虚拟机中有关?)当然在我用了小半个月的时间里,并不是一直都这么快,但是最差的情况我印象中也有600KB/s以上。

不过值得一提的是它对上传速度并没有影响,我在家里上传时速度在200KB/s~400KB/s之间,在公司上传则可以达到1M/S~2M/s,公司也同是电信网= =

下载文件显然不是终极目标,科学上网速度才是, 在Linux下,我使用是的proxychains-ng + shadowsocks,浏览器使用SwitchyOmega代理,proxychains-ng可以强制执行的命令通过配置文件中的代理访问网络,shadowsocks请自行Github,SwitchyOmega则可以自动切换直连和代理。

直接说结论: 在开启BBR后,访问谷歌基本在1秒左右看到结果,youtube任何时候看720p没有压力,1080p少数情况会卡顿,很少。

最后,如果你打算使用Vultr的话,用这个链接注册可获得20$

这篇关于TCP BBR算法加速效果实测(比对)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295247

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停