镜像域名: doub.bid 提供给无翻墙能力的人使用~ 有能力的建议访问主域名(注意把"点"改为".") doub点io
投稿文章 | 广告投放 | Telegram 群组 / 公告频道

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

Shell脚本 Toyo 102评论
文章目录
[显示]
本文最后更新于 2017年6月11日 02:36 可能会因为没有更新而失效。如已失效或需要修正,请留言!

这几天很火的BBR,我研究了一下,写了一个一键脚本,适合新手使用。


手动安装方法:比锐速还强的 TCP拥塞控制技术 —— TCP-BBR 测试及开启教程

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

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

BBR 简单介绍

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

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

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

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

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

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

系统要求

Debian / Ubuntu 14.04 +

CentOS用户请使用这个脚本:CentOS/Debian/Ubuntu系统 TCP-BBR 一键安装脚本

本脚本只在 Debian 7 / Debian 8 / Ubuntu 14.04 / Ubuntu 16.04 (均 x64位) 这几个系统中测试过脚本可以正常运行(Vultr)!

强烈推荐 Debian 7 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。

至于为什么不支持 CentOS 等系统,主要是我不怎么用其他的系统,就不做支持了。

脚本版本

Ver: 1.0.11

安装步骤

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

sudo su

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

wget -N --no-check-certificate https://softs.pw/Bash/bbr.sh && chmod +x bbr.sh && bash bbr.sh

备用下载地址(上面的链接无法下载,就用这个):

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/bbr.sh && chmod +x bbr.sh && bash bbr.sh

下载并运行脚本后,会自动检测并开始安装,首先会提示你输入要下载的内核版本,可以安装自定义版本的内核,也可以直接回车安装最新版本的内核内核版本获取)!

请输入 要下载安装的Linux内核版本(BBR) [ 格式: x.xx.xx ,例如: 4.10.12 ]
 [注意]内核版本列表请去这里获取:[ http://kernel.ubuntu.com/~kernel-ppa/mainline/ ]
(默认回车,自动获取最新版本):4.10.10

注意:在Debian系统中,删除旧内核时,会提示你是否终止删除内核的行为(如下图),这个需要你选择 <No> (键盘方向键 选择,回车键 确认)。

如果没有出错,内核更换完毕后,会提示是否立即重启VPS,直接回车或者输入 Y

需要重启VPS后,才能开启BBR,是否现在重启 ? [Y/n] : y
[注意]  重启VPS后,请重新运行脚本开启BBR: bash bbr.sh start 

[信息]  VPS 重启中...

等待十几秒,VPS启动后,重新通过SSH连接VPS,进入 bbr.sh 脚本的目录,然后执行下面这个命令开启BBR。

bash bbr.sh start

然后就会自动开启BBR。

如果重启VPS后,无法连接,说明内核安装或与系统存在兼容性问题,无法正常启动,代表你的VPS当前系统无法使用BBR,请更换其他系统!

使用方法

# 启动BBR,更换/升级内核并重启后,需要执行这个开启BBR!
bash bbr.sh start

# 关闭BBR
bash bbr.sh stop

# 查看BBR状态
bash bbr.sh status

# 升级BBR
bash bbr.sh
# 因为BBR是集成于内核中的,只是内核中的一部分,所以不一定要更新最新的内核,因为内核升级不一定是BBR升级。
注意:关闭BBR,需要重启VPS,所以脚本会提醒是否立即重启VPS。

卸载BBR

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

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

其他说明

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

裸SS / 锐速+SS / BBR+SS简单速度对比,仅供参考,看这里

更换内核后重启服务器无法启动 的问题

如果重启VPS后,无法连接,说明内核安装有问题 或 内核与系统存在兼容性问题,无法正常启动。

这代表你的VPS当前系统不支持最新的内核版本,无法开启BBR,请更换其他系统尝试!

提示 wget: unknown host “softs.pw” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

Debian/Ubuntu系统:

apt-get install -y wget

更新日志

2017年05月07日,版本 v1.0.11

1.新增 支持内核 4.11.x 后的版本

—— 已知BUG:获取的版本号是 4.11 ,而安装后本地查到的版本号是 4.11.0 会无法匹配,提示不是最新版本,无视就好。

2017年04月25日,版本 v1.0.10

1.新增 安装内核时 可安装自定义内核版本(可升级/降级)

点击展开 查看更多更新日志


如果有什么BUG,请联系我或者在下面评论留言!

允许转载,但是请注明源链接,谢谢!

转载请超链接注明:逗比根据地 » 『原创』Debian/Ubuntu TCP拥塞控制技术 ——TCP-BBR 一键安装脚本
责任声明:本站一切资源均原创或收集自互联网,仅作交流学习之用,请勿用作商业!如造成任何后果,本站概不负责!

赞 (37)or打赏
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(102)个小伙伴在吐槽
  1. 检测到 BBR 已开启但未正常启动,请检查 !
    clover2017-06-23 15:43 (4天前)回复
  2. debian7 64,装过脚本正常,后来手工搞过XanMod的内核,今天内核更新,继续用本站脚本,发觉报错了: 4.9.31: 请输入 要下载安装的Linux内核版本(BBR) [ 格式: x.xx.xx ,例如: 4.10.12 ] [注意] 内核版本列表请去这里获取:[ http://kernel.ubuntu.com/~kernel-ppa/mainline/ ] (默认回车,自动获取最新版本):4.9.31 [信息] 检测到 当前内核版本 不是最新版本,升级(或降级)内核... --2017-06-07 20:51:32-- http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.31/ Resolving kernel.ubuntu.com (kernel.ubuntu.com)... 91.189.94.216 Connecting to kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: `linux-image-4.9.31-amd64.deb' [ ] 3,591 --.-K/s in 0s 2017-06-07 20:51:33 (45.0 MB/s) - `linux-image-4.9.31-amd64.deb' saved [3591] [信息] 内核文件下载成功,开始安装内核... dpkg-deb: error: `linux-image-4.9.31-amd64.deb' is not a debian format archive dpkg: error processing linux-image-4.9.31-amd64.deb (--install): subprocess dpkg-deb --control returned error exit status 2 Errors were encountered while processing: linux-image-4.9.31-amd64.deb [错误] 检测到 内核版本 安装失败,请检查 ! 4.11.4: Resolving softs.pw (softs.pw)... 69.12.67.44 Connecting to softs.pw (softs.pw)|69.12.67.44|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 8564 (8.4K) [application/octet-stream] Server file no newer than local file `bbr.sh' -- not retrieving. 请输入 要下载安装的Linux内核版本(BBR) [ 格式: x.xx.xx ,例如: 4.10.12 ] [注意] 内核版本列表请去这里获取:[ http://kernel.ubuntu.com/~kernel-ppa/mainline/ ] (默认回车,自动获取最新版本): [信息] 检测内核最新版本中... [信息] 当前内核最新版本为 : 4.11.4 [信息] 检测到 当前内核版本 不是最新版本,升级(或降级)内核... --2017-06-07 20:52:26-- http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.4/ Resolving kernel.ubuntu.com (kernel.ubuntu.com)... 91.189.94.216 Connecting to kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: `linux-image-4.11.4-amd64.deb' [ ] 3,483 --.-K/s in 0.001s 2017-06-07 20:52:26 (2.43 MB/s) - `linux-image-4.11.4-amd64.deb' saved [3483] [信息] 内核文件下载成功,开始安装内核... dpkg-deb: error: `linux-image-4.11.4-amd64.deb' is not a debian format archive dpkg: error processing linux-image-4.11.4-amd64.deb (--install): subprocess dpkg-deb --control returned error exit status 2 Errors were encountered while processing: linux-image-4.11.4-amd64.deb [错误] 检测到 内核版本 安装失败,请检查 ! 请问是提示的error: `linux-image-4.11.4-amd64.deb' is not a debian format archive的问题,还是因为我手工搞过的影响呢?
    Me22017-06-07 20:57 回复
    • 等不及,先折腾了Debian8 64,用了 jessie-backports源的Debian 4.9.25-1~bpo8+1来跑,没用最新的了。
      Me22017-06-08 01:22 回复
  3. Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libuuid-perl linux-base Use 'apt-get autoremove' to remove them. The following packages will be REMOVED: linux-image-3.2.0-4-amd64* 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 106 MB disk space will be freed. (Reading database ... 47773 files and directories currently installed.) Removing linux-image-3.2.0-4-amd64 ... Aborting removal of running kernel image. dpkg: error processing linux-image-3.2.0-4-amd64 (--purge): subprocess installed pre-removal script returned error exit status 1 Errors were encountered while processing: linux-image-3.2.0-4-amd64 E: Sub-process /usr/bin/dpkg returned an error code (1) [信息] 卸载 linux-image-3.2.0-4-amd64 内核卸载完成,继续... [错误] 内核卸载异常,请检查 ! root@R:~# dpkg -l|grep linux-image pi linux-image-3.2.0-4-amd64 3.2.88-1 amd64 ii linux-image-4.11.1-041101-generic 4.11.1-041101.201705140931 amd64 root@R:~# virt-what kvm 这个旧内核删除怎么失败了呢?
    siam2017-05-18 10:19 回复
    • 尝试手动卸载试试:
      apt-get purge linux-image-3.2.0-4-amd64
      
      Toyo2017-05-18 11:44 回复
      • root@R:~# apt-get purge linux-image-3.2.0-4-amd64 Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libuuid-perl linux-base Use 'apt-get autoremove' to remove them. The following packages will be REMOVED: linux-image-3.2.0-4-amd64* 0 upgraded, 0 newly installed, 1 to remove and 50 not upgraded. After this operation, 106 MB disk space will be freed. Do you want to continue [Y/n]? y (Reading database ... 41610 files and directories currently installed.) Removing linux-image-3.2.0-4-amd64 ... Aborting removal of running kernel image. dpkg: error processing linux-image-3.2.0-4-amd64 (--purge): subprocess installed pre-removal script returned error exit status 1 Errors were encountered while processing: linux-image-3.2.0-4-amd64 E: Sub-process /usr/bin/dpkg returned an error code (1) 还是不能卸载喔
        siam2017-05-18 14:48 回复
        • 那就不清楚了,只能确定不是脚本问题,而是系统问题了。
          Toyo2017-05-18 17:09 回复
  4. 现在内核已经到4.11了,希望可以更新一下脚本。
    Sun2017-05-07 16:33 回复
    • 已经更新了脚本 v1.0.11 ,不过目前已知BUG是,获取的版本号是 4.11 ,而安装后本地查到的版本号是 4.11.0 会无法匹配,提示不是最新版本,无视就好。
      Toyo2017-05-07 17:16 回复
  5. 居然不支持i686哭QMQ
    scarletk2017-03-28 18:20 回复
  6. 写了一篇关于BBR算法原理的分析 https://www.nanqinlang.com/cwnd-control 上午写到现在 头好晕 我要去睡觉了。。。
    南琴浪2017-03-25 13:19 回复
  7. 非常感谢偷油的一键脚本,有一事请教! 我才申请的google一年的vps,最基础的debian版本,能否直接用这个脚本? 非常感谢!
    meisqq2017-03-23 07:43 回复
    • 可以,不过需要第一步去 先切换为 root用户,否则会各种权限不足,安装失败。
      Toyo2017-03-23 12:14 回复
      • 非常感谢,已经搞定! 不过有个问题,只要重启VPS,就要重新启动SSSERVER。 有没有自启动的脚本? 看了几个教程,运行命令 sudo vim /etc/rc.local 编辑自启动配置文件。加入代码 怎么加?在哪里加? 加完了之后怎么退出?按键盘没有反应 我是小白,不好意思!
        meisqq2017-03-23 12:38 回复
  8. 不知道是什么原因,vultr安装使用都很顺利,但是换成linode之后,使用ubuntu和debian都是安装内核成功,最后一步提示:检测到 BBR 已开启但未正常启动,请检查 !
    Akring2017-03-03 13:42 回复
    • linode,我记得是可以后台直接更换4.9.x内核的,反正需要在后台调整什么才行。
      Toyo2017-03-03 19:58 回复
  9. 安装运行之后提示 “检测到BBR已开启,但未正常启动,请检查!”,请问这个要怎么破呀?
    julian2017-03-03 09:55 回复
    • 这个说明你更换内核后,开启了BBR,但是BBR没有运行或无法运行。
      尝试手动开启:https://doub.io/wlzy-15/
      如果还不行,那么说明系统和内核不兼容。
      Toyo2017-03-03 12:55 回复
  10. 用秋水的脚本最新内核是4.10,用你的脚本检测最新还是4.9啊
    jaz2017-02-26 23:12 回复
    • 已经更新脚本支持 4.1x.x,之所以只检测到 4.9,是因为当时 4.10还是测试版,所以只检测到 4.9版本。这几天没看,没留意到 4.10正式版出来了。
      Toyo2017-02-27 10:35 回复
  11. Info: TCP BBR has been successfully installed. nothing to do... 站长,我的vps抽风之后我重启,然后查看bbr显示这样,是已经启动的意思么,vps重启之后ss和bbr需要不需要重新启动呢?
    大人看的片叫大片2017-02-20 15:46 回复
    • 你用的不是我的脚本。
      这句话的意思是BBR正常开启。
      BBR是集成于内核的,VPS启动时,会随内核一起启动,只要开启后就不用管了。
      Toyo2017-02-20 17:04 回复
  12. 据说openvz可以上bbr了
    ku ro ki to m ko2017-02-17 23:12 回复
    • 一、步骤麻烦,错误率很高。
      二、既然是卖OpenVZ的IDC,那就不喜欢让你在OpenVZ的VPS上面安装这个,大部分IDC发现后会封VPS的。
      三、我手里OpneVZ的机器很少,早就不买这种低价超售鸡了。
      Toyo2017-02-18 01:22 回复
      • 可以,反正我对openvz无感
        kurokitomoko2017-02-18 18:56 回复
  13. [信息] 检测内核最新版本中... [信息] 当前内核最新版本为 : 4.9.9 [信息] 检测到 内核版本 已满足要求,继续... sysctl: cannot stat /proc/sys/net/ipv4/tcp_available_congestion_control: No such file or directory sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory sysctl: cannot stat /proc/sys/net/ipv4/tcp_congestion_control: No such file or directory sysctl: cannot stat /proc/sys/net/ipv4/tcp_available_congestion_control: No such file or directory [错误] BBR 启动失败,请检查 ! ------------------------------------------------------------ 博主,求解,是什么问题
    whythatme2017-02-11 13:49 回复
    • 你是,更换内核并重启后,输入 bash bbr.sh start 后提示的这个?
      Toyo2017-02-11 14:11 回复
      • 是的,输入这个start命令后,就报错了
        doubiNIHAO2017-02-11 14:12 回复
        • dpkg -l|grep linux-image | awk '{print $2}'
          # 看一下当前内核是否有 4.9.9,如果有就手动开启试试,看看有没有报错
          echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
          echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
          sysctl -p
          # 如果还是报错,那可能还是内核安装有问题或者兼容性问题了,那我就不清楚了,建议重装其他系统测试。
          
          Toyo2017-02-11 15:11 回复
          • 有4.9.9,但是【sysctl -p】后报错:sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory sysctl: cannot stat /proc/sys/net/ipv4/tcp_congestion_control: No such file or directory sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory sysctl: cannot stat /proc/sys/net/ipv4/tcp_congestion_control: No such file or director ---------------------------------------------- 看来要换系统了,谢啦
            doubiNIHAO2017-02-11 15:17 回复
          • 真心搞不定,各种问题都有,希望博主可以写个樱花使用TCP BBR的教程,安装了SSR,但是加速不会添加,内核升级也搞不定,现在速度超级慢超级慢。
            doubiNIHAO2017-02-11 16:33 回复
            • 樱花Docker?算了,Docker是有诸多限制的,特别是樱花免费的Docker。
              Toyo2017-02-11 17:31 回复
              • 但是我看到有人说成功了,只是我怎么弄都不行,樱花应该是可以开启BBR的,推上还有人TCP也成功了,只是藏着不肯说,博主有空不妨试试啊
                doubiNIHAO2017-02-11 17:44 回复
                • 樱花Docker没劲,太烦,懒得玩。
                  Toyo2017-02-11 17:57
              • 不过他们都在说,最近docker很火啊,博主也该尝尝鲜啦,樱花拿来练手很不错
                doubiNIHAO2017-02-11 17:59 回复
1 2