Centos开启bbr拥塞控制算法


什么是bbr

这几天bbr很火的样子,据了解这是google团队今年9月开源的一套拥塞控制算法,与之前我们了解的hybla、htcp一样是为了更好的利用网络资源而设计的。bbr与锐速之类的单边加速有异曲同工之妙,但是从根本上比锐速要靠谱得多,至少不会像锐速那样破坏包标识关系,导致iptables的关联表失败。bbr相关的具体分析例如分析1分析2,感兴趣的可以参考一下。

简单来说,bbr最具创新性的部分在于其拥塞控制通过实际网络情况进行调度,而不是像其他拥塞控制那样单纯依靠算法模型,这就好比大数据人工智能与纯算法人工智能,无论目前的实际效果如何,个人认为这一方向长远上必然是良性发展的,所以必须要支持。

当然请辩证地对待bbr,尤其是生产环境要慎重,毕竟google也申明“This is not an official Google product.

开启bbr拥塞控制算法

I. 开启条件

目前在4.9的新kernel中都已经内置了bbr,Centos6/7(32位/64位)的内核现在均已有现成的包可用,所以实体机、可更换内核的VPS上使用相应版本的Centos都可以体验bbr,openvz的朋友看看就好,以下的内容别当真。(手工和直接源安装选一种方法即可)

II. 手工安装内核包

ELREPO源中已经有现成的4.9kernel包,请根据版本下载相应的rpm包。

    EL6(Centos6/RedHat6) : http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_64/RPMS/kernel-ml-4.9.0-0.rc8.el6.elrepo.x86_64.rpm
    
    EL7(Centos7/RedHat7) : http://elrepo.org/people/ajb/devel/kernel-ml/el7/x86_64/RPMS/kernel-ml-4.9.0-0.rc8.el7.elrepo.x86_64.rpm

以centos6为例,使用root权限执行下列命令安装:

    cd ~
    wget http://elrepo.org/people/ajb/devel/kernel-ml/el6/x86_64/RPMS/kernel-ml-4.9.0-0.rc8.el6.elrepo.x86_64.rpm
    rpm -ivh kernel-ml-4.9.0-0.rc8.el6.elrepo.x86_64.rpm

III. 直接通过源安装(推荐)

以Centos6为例:

    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm    
    yum --enablerepo=elrepo-kernel install kernel-ml -y

IV. 修改引导配置文件

以grub为例,内核包成功安装后,编辑/boot/grub/menu.lst文件,

vi /boot/grub/menu.lst

default参数改为0(默认新装的内核会在第一个,如果不是请修改为对应的顺序编号)

    default=0
    timeout=2
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (4.9.0-0.rc8.el6.elrepo.x86_64)
            root (hd0,0)
            kernel /boot/vmlinuz-4.9.0-0.rc8.el6.elrepo.x86_64 ro root=UUID=94e4e384-0ace-437f-bc96-057dd64f42ee rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
            initrd /boot/initramfs-4.9.0-0.rc8.el6.elrepo.x86_64.img
    title CentOS (2.6.32-642.11.1.el6.x86_64)
            root (hd0,0)

V. 修改sysctl.conf

vi /etc/sysctl.conf

在末尾添加以下内容后重启。

    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr

VI. 检测状态

重启成功之后,通过sysctl检测得到net.ipv4.tcp_congestion_control = bbr即说明成功使用bbr拥塞控制算法。

sysctl net.ipv4.tcp_congestion_control

VII. 其他

如果更换内核后无法启动,则需要换回原内核重启,修改相应的grub参数,并使用以下命令删除内核包。

rpm -e kernel-ml-4.9.0-0.rc8.el6.elrepo.x86_64 --nodeps 

如果是单纯为了科学上网,可能大部分情况下bbr的实际效果可能暂时还不如KCP。用V友的话说:国际出口网络就像一块小蛋糕,各种方式就像刀叉,总量在那里,刀叉再好最多只能多抢一点别人的份额。

已有 7 条评论
  1. 云明

    我还专门弃了搬瓦工的坑换了台VPS搞,然后发现我还是太年轻了,还指望经过BBR加持的日本VPS秒杀掉经过CN2转发的美国VPS。。。

    云明 回复
    1. Holmesian

      @云明

      主要还是看线路~ BBR最多只能锦上添花,毕竟网络环境太恶劣。

      Holmesian 回复
  2. 静静

    瞬间感觉全世界人都在折腾bbr

    静静 回复
    1. Holmesian

      @静静

      都是好玩图新鲜吧~

      Holmesian 回复
  3. 凯哥自媒体

    分享的不错,谢谢

    凯哥自媒体 回复
  4. eski

    准备在debian上试试,不过感觉4.x有点不是很稳的样子

    eski 回复
    1. Holmesian

      @eski

      我有两台服务器跑4.9的正式版,目前没有发现什么异常。

      Holmesian 回复
发表新评论