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

2024-06-05 10:32
文章标签 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/1032814

相关文章

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

以canvas方式绘制粒子背景效果,感觉还可以

这个是看到项目中别人写好的,感觉这种写法效果还可以,就存留记录下 就是这种的背景效果。如果想改背景颜色可以通过canvas.js文件中的fillStyle值改。 附上demo下载地址。 https://download.csdn.net/download/u012138137/11249872

echarts省份标注加散点效果

这个是安徽的效果图,鼠标移到红色标注或者对应的市区位置都会显示对应的数值。 先直接上代码: import anhuiMapJson from './anhui.json'getCoords: function(city) {var res = [];if (city != null) {for (var c in this.cityMap.features) {if (this.cityMa

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

大林 PID 算法

Dahlin PID算法是一种用于控制和调节系统的比例积分延迟算法。以下是一个简单的C语言实现示例: #include <stdio.h>// DALIN PID 结构体定义typedef struct {float SetPoint; // 设定点float Proportion; // 比例float Integral; // 积分float Derivative; // 微分flo

LeetCode 算法:二叉树的中序遍历 c++

原题链接🔗:二叉树的中序遍历 难度:简单⭐️ 题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 提示: 树中节点数目在范围 [0, 100] 内 -100 <= Node.

【Java算法】滑动窗口 下

​ ​    🔥个人主页: 中草药 🔥专栏:【算法工作坊】算法实战揭秘 🦌一.水果成篮 题目链接:904.水果成篮 ​ 算法原理 算法原理是使用“滑动窗口”(Sliding Window)策略,结合哈希表(Map)来高效地统计窗口内不同水果的种类数量。以下是详细分析: 初始化:创建一个空的哈希表 map 用来存储每种水果的数量,初始化左右指针 left

XMG 抽屉效果

1.比如说我创建了3个View -(void)viewDidLoad{  [ super viewDidLoad]; [self setUpChild] ;         UIPanGestureRecognizer *pan=[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];