比锐速还强的 TCP拥塞控制技术 —— TCP-BBR 测试及开启教程

网络资源 Toyo 7个月前 (12-08) 56评论

文章目录

[显示]

本文最后更新于 2017年6月11日 02:36 可能会因为没有更新而失效。如已失效或需要修正,请留言!

这几天BBR很火的样子,我就半夜测试一下。BBR和锐速都属于TCP拥塞控制技术,虽然这类技术互联网上面不少,不过我都不是很了解。

本文章仅为我个人的测试,各地区测试情况不一样,而且BBR还处于开发初期并且开源,而锐速则已经停止开发了。


一键脚本安装:『原创』Debian/Ubuntu系统 TCP拥塞控制技术 ——TCP-BBR 一键安装脚本

注意:TCP-BBR和锐速一样,不支持Openvz,查看本教程之前,请先确定你的VPS的虚拟化技术!

注意:本教程涉及到VPS更换内核,所以如果步骤错误,或者VPS不兼容最新的内核,会导致无法开机等错误,请勿用于生产环境!!!!

BBR 简单介绍

BBR 是一个由谷歌社区开发的 TCP拥塞控制技术,目前处于开发初期,但是前景很棒,大家可以持续关注,同时BBR是集成与Linux最新版本的内核中的。

具体什么是TCP拥塞控制技术,详细的我也不懂,我就用通俗的解释一下,不一定准确,看一看理解一下就好了。

原始的TCP流量传输技术,流量管理很乱,我们把 TCP流量比喻成 公路上的汽车流量,而TCP传输隧道就是 公路,那么:

在原始的TCP流量传输中,一条十字路口公路,很多车流量,但是却没有红绿灯和交警,导致大家左挤右挤的堵车了,这就是没有合理的管理导致的。

而BBR和锐速等TCP流量控制技术,就是红绿灯+交警,他们就是在无人管理的十字路口,去合理指挥分配车流量,然后最大化的利用车流量,保证路面畅通。

大概就是这样解释了,有什么错误请指出。

启动步骤

首先是教程,本人喜欢Debian,所以我先使用 Debian 7 / 8 x64 系统来做测试。Ubuntu随后考虑加上。

每一个步骤,我都会加上VPS中执行后的提示,本教程以64位为例。但是各个系统可能会存在差异,所以仅为参考。

在 2016-12-05 21:00 更新的 4.9.0-rc8 内核已经支持了TCP-BBR,最新内核看这里。

注意:TCP-BBR必须是 2016-12-05 21:00 更新的 4.9.0-rc8 内核及以后的版本 才能开启,而锐速并不支持这个最新的内核版本,所以TCP-BBR和锐速是不能共存的。

更换内核需要ROOT权限的账号,所以如果你是普通用户 的话,需要切换到ROOT账号,如果你是ROOT账号,那就忽略这个步骤:

  1. sudo su

输入并回车后,会提示让你输入当前用户账号的密码,输入并回车后就可以继续下面的步骤了。


  1. uname -m

使用这个命令会返回你的系统位数,如果是 x86_64 那就是64位,如果是 i386 或 386 那就是32位,如果是 i686 或 686,那么不支持

下载内核文件(64位系统)

  1. wget -O linux-image-4.10.1-amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_amd64.deb

下载内核文件(32位系统)

  1. wget -O linux-image-4.10.1-i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_i386.deb

点击展开 查看VPS提示

安装内核(64位)

  1. dpkg -i linux-image-4.10.1-amd64.deb

安装内核(32位)

  1. dpkg -i linux-image-4.10.1-i386.deb

点击展开 查看VPS提示

列出并删除旧内核

列出VPS 除了刚才安装的内核以外的 所有内核名称:

注意:这个代码是排除了刚才安装的内核,所以不会显示刚才安装的那个内核。删除了多余的内核后,就会什么都不显示!
  1. dpkg -l|grep linux-image | awk '{print $2}' | grep -v 'linux-image-[4-9].[0-9]*.'
  1. root@bbr1:~# dpkg -l|grep linux-image | awk '{print $2}' | grep -v 'linux-image-[4-9].[0-9]*.'
  2. linux-image-3.16.0-4-amd64
  3. linux-image-amd64

我使用的VPS是 3.16.0-4-amd64 内核的,所以删除这两个内核: linux-image-3.16.0-4-amd64、linux-image-amd64

删除旧内核:

  1. apt-get purge 旧内核名称
  1. # !!!!示例!!!!
  2. # 比如我是有这两个内核,所以我把这两个删掉,不要照着我的这个步骤做,自己换成你VPS的内核名称!!!
  3. apt-get purge linux-image-3.16.0-4-amd64
  4. apt-get purge linux-image-amd64
  5. # !!!!示例!!!!

删除旧内核的过程中会提示你是否继续,选择 Y ,然后还会提示你是否终止删除内核的行为,选择 NO

点击展开 查看VPS提示

更新 grub 系统引导文件并重启VPS

  1. # 更新系统引导文件
  2. update-grub
  3. # 重启VPS,执行后SSH链接会断开,等十几秒再重新连接继续执行下面的启动命令。
  4. reboot
  1. # VPS提示
  2. root@bbr1:~# update-grub
  3. Generating grub configuration file ...
  4. Found linux image: /boot/vmlinuz-4.10.1-040900rc8-generic
  5. Found initrd image: /boot/initrd.img-4.10.1-040900rc8-generic
  6. done

开启bbr

  1. echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
  2. echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

执行这个保存生效更改。

  1. sysctl -p
  1. # VPS提示
  2. root@bbr1:~# sysctl -p
  3. net.ipv6.conf.all.accept_ra = 2
  4. net.core.default_qdisc = fq
  5. net.ipv4.tcp_congestion_control = bbr

关闭bbr

  1. sed -i '/net\.core\.default_qdisc=fq/d' /etc/sysctl.conf && sed -i '/net\.ipv4\.tcp_congestion_control=bbr/d' /etc/sysctl.conf
  2. sysctl -p

执行完上面的代码,就使用reboot重启VPS后才能关闭bbr,重启后再用下面的查看bbr状态代码,查看是否关闭了。

  1. reboot

查看bbr是否开启

执行下面命令,如果结果中有bbr,即证明你的内核已开启bbr。

  1. sysctl net.ipv4.tcp_available_congestion_control

执行下面命令,看到有 tcp_bbr 模块,即说明bbr已启动

  1. lsmod | grep bbr
  1. # VPS提示
  2. root@bbr1:~# sysctl net.ipv4.tcp_available_congestion_control
  3. net.ipv4.tcp_available_congestion_control = bbr cubic reno
  4. # ================================================
  5. root@bbr1:~# lsmod | grep bbr
  6. tcp_bbr 20480 0

卸载BBR

BBR集成于内核中,所以卸载BBR=更换内核,教程:

Debian/Ubuntu 内核降级教程 —— 降低(BBR)为支持锐速的内核版本

裸 SS/锐速+SS/BBR+SS 速度对比

本人的测试环境是:晚上23:00点,联通运营商,美国渣渣VPS。

各个地区和运营商都存在差别,我的测试 速度对比仅供参考。谷歌网盘单线程下载测速地址:100MB

因为是半夜测试的,再加上用的美国垃圾小鸡,所以 裸SS 速度感人。

使用 锐速+SS 后,单线程下载测速,翻了十倍,Youtube 也能看 1080P流畅 了。

换成 BBR+SS 后,单线程又在 锐速+SS 的基础上翻了一倍,Youtube 速度有上升了一个档次 1440P 倒是勉强,1080P可以随便拖拉了。

虽然 Youtube 的数值不是很准,但是还是有点用的,数值太低同样也代表速度不行。

总其以上,锐速(ServerSpeed)的技术已经成熟、定型,加速效果还是不错的,但是不再更新和维护了。

而 TCP-BBR 属于新生的技术,处于开发初期,买没有完善成熟,未来的潜力相信还好更好。

所以总的来说:非折腾党,还是建议先使用锐速观望 TCP-BBR 一段时间,这是最稳妥的办法。

裸 SS

锐速+SS

BBR+SS

本文章安装步骤来自:https://github.com/iMeiji/shadowsocks_install/wiki/开启TCP-BBR拥塞控制算法

比锐速还强的 TCP拥塞控制技术 —— TCP-BBR 测试及开启教程相关推荐

  1. TCP拥塞控制技术 与BBR的加速原理

    什么是拥塞 拥塞现象,是指数据到达通信子网的过程中,某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象.严重时会导致网络陷入死锁. 这种现象好比公路上常见的交通 ...

  2. 从TCP拥塞本质看BBR算法及其收敛性(附CUBIC的改进/NCL机制)

    本文试图给出一些与BBR算法相关但却是其之外的东西. 1.TCP拥塞的本质 注意,我并没有把题目定义成网络拥塞的本质,不然又要扯泊松到达和排队论了.事实上,TCP拥塞的本质要好理解的多!TCP拥塞绝大 ...

  3. TCP 拥塞控制算法 1

    转自:https://mp.weixin.qq.com/s/NIFandX8w-Cynnbl-f2Lwg 拥塞:路由器因无法处理高速到达的流量而被迫丢弃数据信息的现象称为拥塞. 为什么有了流量控制,还 ...

  4. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  5. WebRTC的拥塞控制技术转

    转载地址:http://www.jianshu.com/p/9061b6d0a901 1. 概述 对于共享网络资源的各类应用来说,拥塞控制技术的使用有利于提高带宽利用率,同时也使得终端用户在使用网络时 ...

  6. WebRTC的拥塞控制技术(Congestion Control

    http://www.jianshu.com/p/9061b6d0a901 1. 概述 对于共享网络资源的各类应用来说,拥塞控制技术的使用有利于提高带宽利用率,同时也使得终端用户在使用网络时能够获得更 ...

  7. TCP拥塞控制算法-从BIC到CUBIC

    摘要:tcp就是乘性加,然后加性加接近最大码率.BIC优化了,变成折半加,不是加一个rtt,这样加的速度变快,同时进入下一周期做了图形对称.cubic完全根据bic的图形,将图形转成代数,带入3个关键 ...

  8. Linux TCP拥塞控制算法原理解析

    这里只是简单梳理TCP各版本的控制原理,对于基本的变量定义,可以参考以下链接: TCP基本拥塞控制http://blog.csdn.net/sicofield/article/details/9708 ...

  9. TCP拥塞状态机的实现(中)

    内容:本文主要分析TCP拥塞状态机的实现中,虚假SACK的处理.标志丢失数据包的详细过程. 内核版本:2.6.37 作者:zhangskd @ csdn 虚假SACK state B 如果接收的ACK ...

最新文章

  1. 03 基本数据类型、运算符 输入输出
  2. 用Leangoo看板工具策划一场活动,看板示例
  3. 几种xml读取方法比较
  4. java 输出 三角形_Java实现输出三角形
  5. 猜想串scan的order
  6. 谷歌chrome浏览器的源码分析(五)
  7. 晶科能源与森源电气签订300MW光伏组件供货协议
  8. 为了杀蚊子,他用树莓派DIY了一把激光枪!
  9. 正则的简单学习与应用
  10. 试验一下纯手写blog
  11. mybatis 之 parameterType=Map
  12. 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理
  13. 全网首发:JDK绘制文字:三、绘制句柄的内容是如何定义的
  14. 从时间上算,我和李笑来是同一批人 | 十年币圈生存实录
  15. 一个 Python Bug 干倒了估值 1.6 亿美元的公司
  16. 极速office(Word)怎么修改纸张方向
  17. 光剑诗集选——2021.2
  18. 子网掩码、IP和默认网关
  19. vivo陷全国手机行业反垄断第一案
  20. C# 移除富文本多余标签

热门文章

  1. 华为交换机路由器例行维护(巡检)方法参考
  2. c语言符号txt下载,C语言符号集
  3. 9月4日微软服务器,Windows Server 2012完成RTM版 9月4日上市
  4. P4828 Nagisa loves Tomoya
  5. TP4056大电流1A使用注意事项
  6. 推荐一部小说《亵渎》
  7. mysql怎么判断是否断号_孩子是否有多动症,应该怎么判断呢?
  8. 人工智能 —— 产生式推理
  9. UMeditor百度富文本编辑器的使用
  10. cisco b 系列 c 系列 服务器,UCS B系列/C系列/S系列/HyperFlex系列组合,与Cisco VIC卡绑定选项...