linux BBR 优化算法,实现TCP加速

最近比较忙比较忙很久没更新一些技术文章了,昨晚干完活研究了下锐速和bbr,也对他们有了一些了解。

建站服务器我推荐bbr,毕竟是谷歌大佬开发,而且免费。

ss服务器我看好锐速,相同机器测试bbr对ss加速并不明显。

教程开始:

使用必读

不支持OpenVZ虚拟!

安装前需要备份重要数据,安装完可能会导致系统无法启动!

系统无法修改请尝试修改引导!或者重装系统!

安装方式

Debian8/Ubuntu14

下载最新内核,最新内核查看这里

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

安装内核

dpkg -i linux-image-4.9.0*.deb
删除其余内核

dpkg -l|grep linux-image
sudo apt-get remove linux-image-[Tab补全] #删旧内核,在这里,就是把第一个3.13的删掉
更新 grub 系统引导文件并重启

update-grub
reboot
开启bbr

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 更新

yum update -y
查看内核版本

cat /etc/redhat-release
#CentOS Linux release 7.3.1611 (Core)
安装RPM

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可用

vim /etc/yum.repos.d/elrepo.repo
把enabled=0改成enabled=1
然后保存之后yum update -y,就会更新到elrepo正式版4.9内核。

开启bbr

vim /etc/sysctl.conf
加两行:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
保存生效 sysctl -p

2) 编译安装

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

然后修改系统启动引导文件:

vi /etc/grub.conf
需要修改Grub引导顺序,让新安装的内核作为默认内核。

或者执行:

grub2-set-default “CentOS Linux (4.9.0-rc8-amd64) 7 (Core)”
然后重启

reboot
重启后,查看内核是否安装成功。

uname -r
开启bbr

据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。

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)

wget –no-check-certificate https://github.com/52fancy/GooGle-BBR/raw/master/BBR.sh && sh BBR.sh
之后重启服务器即可

验证是否安装成功

lsmod | grep bbr
如果结果显示bbr安装成功。

如果失败,请尝试RMP安装。

2)RMP安装

RMP 地址:https://elrepo.org/linux/kernel/

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 系统可直接执行以下代码(以下代码已经失效)

####此代码已经失效####
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 命令用法)

vi /etc/grub.conf
修改成 default=0

保存然后重启

reboot
重启后,查看内核是否安装成功。

uname -r
开启bbr

据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。

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已启动。

编译安装(不推荐)

速度较慢。

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

vi /boot/grub/menu.lst #修改启动项
重启

reboot
重启后,查看内核是否安装成功。

uname -r
开启bbr

据人反馈:先把/etc/sysctl.conf 文件中 关于 net.ipv4.tcp_congestion_control的配置注释掉。

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

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已启动。


打赏

网友评论10条

  1. 6楼
    肥柴

    加速???花里胡哨的,根本不存在的~ :奸笑:

    [回复]
    • Javst

      :奸笑: :奸笑: 小学生一边玩泥巴去哈~~

      [回复]
      • 肥柴

        玩TM的皮皮你吧,吃我一手皮 :奸笑:

        [回复]
        • Javst

          :不屑: :不屑: :不屑: :不屑: :不屑: 我不吃,除非你叫我爸爸

          [回复]
          • 肥柴

            你怕是失了智哦,我今天感觉自己很帅,数学又考炸了2333 :奸笑:

            [回复]
  2. 5楼
    Timothy Su

    怕是看不懂哦。

    [回复]
  3. 4楼
    肥柴

    哎,我很烦你知道吧 :汗:

    [回复]
  4. 地板
    iQxmoe

    搬张小凳子来学习,~\(≧▽≦)/~啦啦啦

    [回复]
  5. 板凳
    肥柴

    加污,该水文了 :汗:

    [回复]
  6. 沙发
    嘿嘿

    :不说话: :不说话: :不说话: :不说话: :不说话: :不说话: :抠鼻: :抠鼻: :抠鼻: :抠鼻: :酷: 看看这个网站

    [回复]

发表评论