这是2016年9月份才开源的一个优化网络拥堵的算法。
目前最新版本的Linux内核(4.9-rc8)中已经集成了该算法。
据很多人反馈,速度比锐速还厉害!!
毕竟是新鲜的东西,难免有BUG,酌情使用。
更新动态
2017年2月16日01:01:11
新增秋水逸冰一键安装脚本
2016年12月13日11:33:18
新增CentOS7 RMP 安装BBR步骤说明
新增CentOS6一键安装脚本
更新CentOS6 RMP包地址。
开源地址
https://github.com/google/bbr
注意这不是Google官方的产品。
使用必读
不支持OpenVZ虚拟!
安装前需要备份重要数据,安装完可能会导致系统无法启动!
系统无法修改请尝试修改引导!或者重装系统!
安装方式
Debian8/Ubuntu14
- 下载最新内核,最新内核查看这里
1 |
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9-rc8/linux-image-4.9.0-040900rc8-generic_4.9.0-040900rc8.201612051443_amd64.deb |
- 安装内核
1 |
dpkg -i linux-image-4.9.0*.deb |
- 删除其余内核
1 2 |
dpkg -l|grep linux-image sudo apt-get remove linux-image-[Tab补全] #删旧内核,在这里,就是把第一个3.13的删掉 |
- 更新 grub 系统引导文件并重启
1 2 |
update-grub reboot |
- 开启bbr
1 2 |
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf |
保存生效 sysctl -p
执行 sysctl net.ipv4.tcp_available_congestion_control
如果结果中有bbr
, 则证明你的内核已开启bbr
执行lsmod | grep bbr
, 看到有 tcp_bbr 模块即说明bbr已启动。
CentOS7
评论有人已经成功。
1)RMP安装(推荐)
先更新到7.3,安装elrepo官方4.9正式版
YUM 更新
1 |
yum update -y |
查看内核版本
1 2 |
cat /etc/redhat-release #CentOS Linux release 7.3.1611 (Core) |
安装RPM
1 2 |
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm |
修改elrepo让yum update可用
1 |
vim /etc/yum.repos.d/elrepo.repo |
把enabled=0改成enabled=1
然后保存之后yum update -y,就会更新到elrepo正式版4.9内核。
开启bbr
1 |
vim /etc/sysctl.conf |
加两行:
1 2 |
net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr |
保存生效 sysctl -p
2) 编译安装
1 2 3 4 5 6 7 8 9 10 11 12 |
wget http://mirrors.kernel.org/debian/pool/main/l/linux/linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb ar x linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb tar -Jxf data.tar.xz install -m644 boot/vmlinuz-4.9.0-rc8-amd64 /boot/vmlinuz-4.9.0-rc8-amd64 cp -Rav lib/modules/4.9.0-rc8-amd64 /lib/modules/ depmod -a 4.9.0-rc8-amd64 #centos >= 6 dracut -f -v --hostonly -k '/lib/modules/4.9.0-rc8-amd64' /boot/initramfs-4.9.0-rc8-amd64.img 4.9.0-rc8-amd64 grub2-mkconfig -o /boot/grub2/grub.cfg |
然后修改系统启动引导文件:
1 |
vi /etc/grub.conf |
需要修改Grub引导顺序,让新安装的内核作为默认内核。
或者执行:
1 |
grub2-set-default "CentOS Linux (4.9.0-rc8-amd64) 7 (Core)" |
然后重启
1 |
reboot |
重启后,查看内核是否安装成功。
1 |
uname -r |
开启bbr
据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。
1 2 |
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf |
保存生效 sysctl -p
执行 sysctl net.ipv4.tcp_available_congestion_control
如果结果中有bbr
, 则证明你的内核已开启bbr
执行lsmod | grep bbr
, 看到有 tcp_bbr 模块即说明bbr已启动。
CentOS6
1)一键安装(推荐)
安装脚本(开源地址:https://github.com/52fancy/GooGle-BBR)
1 |
wget --no-check-certificate https://github.com/52fancy/GooGle-BBR/raw/master/BBR.sh && sh BBR.sh |
之后重启服务器即可
验证是否安装成功
1 |
lsmod | grep bbr |
如果结果显示bbr安装成功。
如果失败,请尝试RMP安装。
2)RMP安装
RMP 地址:https://elrepo.org/linux/kernel/
1 2 |
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install -y https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.9.0-1.el7.elrepo.x86_64.rpm |
CAC CentOS6 系统可直接执行以下代码(以下代码已经失效)
1 2 3 |
####此代码已经失效#### rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install -y http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_64/RPMS/kernel-ml-devel-4.9.0-0.rc8.el6.elrepo.x86_64.rpm |
安装完成,修改启动引导。(自己百度vi 命令用法)
1 |
vi /etc/grub.conf |
修改成 default=0
保存然后重启
1 |
reboot |
重启后,查看内核是否安装成功。
1 |
uname -r |
开启bbr
据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。
1 2 |
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf |
保存生效 sysctl -p
执行 sysctl net.ipv4.tcp_available_congestion_control
如果结果中有bbr
, 则证明你的内核已开启bbr
执行lsmod | grep bbr
, 看到有 tcp_bbr 模块即说明bbr已启动。
编译安装(不推荐)
速度较慢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
yum install vim wget gcc gcc-c++ xz bc ncurses-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel openssl-devel -y cd /usr/local/src/ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.9-rc8.tar.xz tar xvJf linux-4.9-rc8.tar.xz cd linux-4.9-rc8 make menuconfig uname -r #2.6.32-573.3.1.el6.x86_64 cp /boot/config-2.6.32-573.3.1.el6.x86_64 .config #cp: overwrite `.config'? #输入y sudo sh -c 'yes "" | make oldconfig' make #执行比较久,可以去看一集电视剧 make modules_install install#忽略提示could not find module vmware_balloon |
修改Grub引导顺序,让新安装的内核作为默认内核。default = 0
1 |
vi /boot/grub/menu.lst #修改启动项 |
重启
1 |
reboot |
重启后,查看内核是否安装成功。
1 |
uname -r |
开启bbr
据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。
1 2 |
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf |
保存生效 sysctl -p
执行 sysctl net.ipv4.tcp_available_congestion_control
如果结果中有bbr
, 则证明你的内核已开启bbr
执行ps -ef| grep bbr
, 看到有 tcp_bbr 模块即说明bbr已启动。
一键安装
本脚本为秋水逸冰的一键安装。
系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的(KVM、Xen、VMware等)
内存要求:≥128M
1 2 3 |
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh chmod +x bbr.sh ./bbr.sh |
安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:
1 |
uname -r |
查看内核版本,含有 4.9 就表示 OK 了
1 |
sysctl net.ipv4.tcp_available_congestion_control |
返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
1 |
sysctl net.ipv4.tcp_congestion_control |
返回值一般为:
net.ipv4.tcp_congestion_control = bbr
1 |
sysctl net.core.default_qdisc |
返回值一般为:
net.core.default_qdisc = fq
1 |
lsmod | grep bbr |
返回值有 tcp_bbr 模块即说明bbr已启动。
测试效果
使用 CloudAtCost 小JJ,安装SS测试了一下。
明显没有锐速效果好。
不知道建站会怎么样。
参考文献:
https://groups.google.com/forum/#!forum/bbr-dev
http://www.hostloc.com/thread-342411-1-1.html
https://www.91yun.org/archives/4216
https://teddysun.com/489.html
google cloud 安装秋水逸冰脚本后ssh连不上,怎么解决啊?
不知道为什么 centos7 装好了执行ps -ef| grep bbr 什么都没有
怎么卸载
/etc/sysctl.conf
将文件里添加的去掉不就行了
Red Hat Enterprise Linux Server (3.10.0-514.el7.x86_64) 7.3 (Maipo) RPM安装使用:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.9.0-1.el7.elrepo.x86_64.rpm
修改启动:
grub2-set-default "Red Hat Enterprise Linux Server (4.9.7-1.el7.elrepo.x86_64) 7.3 (Maipo)"
查看启动:
grub2-editenv list
重启:
reboot
修改设置:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
...................................
求大佬详述一下 这是啥?萌新不懂
上面没有 redhat 系统的 ,而且 centos rpm 安装的那个地址也失效了,刚刚弄完就发出来了,
哦,谢谢大佬反馈。
centos rpm 地址,早就失效,等一会我换上新的。
一键安装有后门,安装后很快就会被中马,修改root密码,请大家注意了。
是么?应该木有吧。毕竟是开源的。没看见有恶意代码呢?
给开源的大佬留言问问??
想问一下为什么博主的 RSS 常年出错……
修复了。是DNS运营商的锅。已经换DNS。
支持KVM OPZ XEN 都支持吗
OPENVZ 不支持。
这单边加速 对延迟高丢的FP 有用吗
FP 是啥? 求科普!
扶墙 打错了
CentOS 7 已测试,暂无任何不良反应,速度与锐速相当。
谢博主,博主有空给我发个邮件,我有福利跟你说
BBR开源单边还支持IPV6,锐速已出坑。
CentOS6 貌似不行。
可能6确实太久了吧,很多都不一样
在CAC 上做实验呢。正在安装中...
如果成功就更新到文章里。
我在两部CAC上分别做了对比BBR在CAC上大概YouTube只有800-1000kb,锐速的能上到2500kb。。。
是,CAC上还是锐速给力
是没有不良反映 但是完全没有加速效果啊
不可能啊,你查看一下内核和tcp模块是否生效,真的和锐速不相上下
[root@vultr ~]# sysctl -p
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.eth0.accept_ra = 2
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
[root@vultr ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
[root@vultr ~]# lsmod | grep bbr
tcp_bbr 16384 0
kcptun 跑的话 youtube 1080p 不卡,bbr 完全看不了。
但是kcptun 双端 用着不太方便
麻烦说一下机房或位置、ping值、丢包状况以及服务器上下行带宽,我感觉你这种情况不是BBR的问题
我的宽带 ping 250ms左右 10秒丢1左右。vultr 最低的那个 地区:Singapore
Centos7
刚刚看了下百度,感觉csdn那个说的 对丢包情况优化没撒作用呢
给你发邮件了
ramnode速度从20kb变成了2M,像坐了小火箭一样
按照这教程的吗?
什么主机和主机环境?
如何把ipv6的TCP控制算法改为BBR呢?
net.ipv4.tcp_congestion_control是针对IPV4的设置啊
没有net.ipv6.tcp_congestion_control这个配置项
已经搞清楚了,内核的文档里有说明:
IPv6 has no global variables such as tcp_*. tcp_* settings under ipv4/ also
apply to IPv6 [XXX?].
IPV4下的TCP配置项设置同样应用于IPV6
请问你这边ipv6速度如何?我的速度上不去啊