提醒:本文最后更新于 2888 天前,文中所描述的信息可能已发生改变,请仔细核实。
最近BBR(Bottleneck Bandwidth and RTT)算法很火,类似于锐速的单边加速工具,而且免费使用,不存在破解问题。
这是由谷歌程序员们开发的新的TCP拥塞控制算法,其目的就是要尽量跑满带宽,并且尽量不要有排队的情况。
目前Linux Kernel 4.9 RC已加入了该算法,所以我们只要升级内核,即可享用。
目前elrepo的mainline stable包,只到4.8.13,要想用4.9RC,就要用到developer地址了。
请确认你的CentOS 6版本是x64还是x86,本文暂以x64为例,说明如何更新的。
首先,先安装最新版本内核,也就是Kernel 4.9 RC8。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -ivh http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_64/RPMS/kernel-ml-4.9.0-0.rc8.el6.elrepo.x86_64.rpm sed -i 's:default=.*:default=0:g' /etc/grub.conf
接着查看/etc/sysctl.conf
是否存在net.ipv4.tcp_congestion_control
和net.core.default_qdisc
,存在就删除掉。
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf sysctl -p reboot
运行完,会自动重启,重启后执行sysctl net.ipv4.tcp_available_congestion_control
,如果结果中有bbr,则证明你的内核已开启BBR。
执行lsmod|grep bbr
,看到有tcp_bbr模块即说明BBR已启动。折腾有风险,祝你好运。
如果你是CentOS 6 x86版本,只要把内核下载地址换为下面这个即可。
http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_32/RPMS/kernel-ml-4.9.0-0.rc8.el6.elrepo.i686.rpm
至于使用elrepo的原因,就是容易roll back,或者持续更新。
启用BBR的效果据说并不会比锐速差多少,不过据我实测,也就下载大文件的时候,稍微快了一些,而且跟VPS运行时间等也有关系。
BBR内置了自主的调速机制,不受TCP拥塞控制状态机的控制,BBR算法是自闭的,完全基于反馈,它可以自己完成VJ的所有状态探测以及切换,无需外界干涉,且对外界的干涉视而不见。
怎么说呢,有总比没有好,没准越来越完善呢?最重要是免费。
转载请注明转自:kn007的个人博客的《CentOS 6安全快速启用TCP BBR拥塞控制算法》
error: "No such file or directory" setting key "net.ipv4.tcp_congestion_control"
error: "net.core.default_qdisc" is an unknown key
这个是什么原因
@大喇叭: 内核不支持。
@kn007: 妈蛋。内核都换不掉。
@大喇叭: ovz换不了哦
@kn007: 是kvm的,我试了好几种 都不好换。搞不懂了
@大喇叭: linode?linode貌似跟别人不一样,有专门用的内核。
@kn007: 没有 一个小众的。搞不懂了。算了。省的折腾
作者你好!感谢你的教程。不过我内核一直没有更新成功,手动安装后发现问题在于
将default= 设置为0了,重启后,依旧进入的是旧的内核(default = 3那个)。请问可能是什么原因呢?
以下为 grub.conf配置文件。
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/vda1
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.10.2-1.el6.elrepo.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-4.10.2-1.el6.elrepo.x86_64 ro root=UUID=a6416c5f-80c8-418f-8645-340a55fadf44 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 crashkernel=auto consoleblank=0 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-4.10.2-1.el6.elrepo.x86_64.img
title CentOS (3.10.105-1.el6.elrepo.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-3.10.105-1.el6.elrepo.x86_64 ro root=UUID=a6416c5f-80c8-418f-8645-340a55fadf44 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 crashkernel=auto consoleblank=0 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-3.10.105-1.el6.elrepo.x86_64.img
title CentOS (4.11.0-0.rc2.el6.elrepo.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-4.11.0-0.rc2.el6.elrepo.x86_64 ro root=UUID=a6416c5f-80c8-418f-8645-340a55fadf44 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 crashkernel=auto consoleblank=0 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-4.11.0-0.rc2.el6.elrepo.x86_64.img
title CentOS (2.6.32-642.15.1.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-642.15.1.el6.x86_64 ro root=UUID=a6416c5f-80c8-418f-8645-340a55fadf44 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 crashkernel=auto consoleblank=0 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-2.6.32-642.15.1.el6.x86_64.img
title CentOS 6 (2.6.32-642.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=a6416c5f-80c8-418f-8645-340a55fadf44 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 crashkernel=auto consoleblank=0 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-2.6.32-642.el6.x86_64.img
@Alone: 你是vps还是毒妇?
试试看开机自己选择启动项试试。
查下引导是不是通过grub。。
个别VPS主机商可以后台强制固定启动哪个版本kernel。
@kn007: vultr的服务器... 是用VNC吗?我好像不会用... 用秋水逸冰的一键bbr脚本安装完毕后,就卡在重启了。秋水逸冰的博客说卡重启是卡在grub引导上了。
不懂啊= =。
我应该怎么做... 之前我还用秋水那个脚本一键更新过的,不知道为什么现在不行了.
@Alone: 嗯,用vnc,在cp重启服务器,然后连接vnc,启动菜单那里选。
vultr没用过,你可以看下后台设置,或者发个ticket。
@kn007: 也就是我需要先装一个VNC咯?好的哦,感谢。