本文转自:如有乐享 文中集合了雨落无声,Vicer,91Yun各位大佬的一键脚本

img
img

之前本博介绍过 Google BBR 优化算法,实现TCP加速 加速效果还不错。

最近大佬 @Yankee 更新了一份 BBR魔改方案,使得BBR加速效果更明显了。

目前还没有关于CentOS 和 Ubuntu 14 详细安装说明。本文解决这一个空白。

由于本人技术太渣,暂时不提供一键安装方案。

本文手动安装都经过作者亲测可以使用。

对于一些基本Linux命令,请百度查询使用方法。手动安装涉及到系统文件的修改,不建议小白操作。

安装BBR加速需要升级系统内核,可能造成系统无法启动。请备份重要数据后再操作。

源码对比

左侧为原BBR 右侧为魔改BBR (能看懂的可以瞅瞅)

img
img

源码地址:

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/plain/net/ipv4/tcp_bbr.c

https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c

大佬特别提醒:编译时系统必须安装4.10以上版本的kernel及对应的linux-header,gcc版本应在4.9以上

鉴于之前的那篇文章内核是 4.9的,所以再水一篇文章吧!!

特别提醒:OpenVZ虚拟不能直接升级。升级内核可能会造成服务器无法启动。请酌情使用。

CentOS 6 X64

CentOS系统本文演示使用 4.11.8 内核。如果下面代码中的内核地址失效,请自行搜索最新的内核地址即可。

内核地址:http://elrepo.org/linux/kernel

升级系统内核

1)依次执行以下代码。

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-4.11.8-1.el6.elrepo.x86_64.rpm
yum remove -y kernel-headers
yum install -y http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-headers-4.11.8-1.el6.elrepo.x86_64.rpm
yum install -y http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-devel-4.11.8-1.el6.elrepo.x86_64.rpm

设置启动引导

2)修改启动引导,修改配置文件即可。

执行命令:

vi /etc/grub.conf

img
img

红框可看见我们新安装的内核。修改 default=0 即可。然后保存。重启服务器。

编译安装

依次执行以下脚本

yum install -y make gcc
wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
echo "obj-m:=tcp_tsunami.o" > Makefile
make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
chmod +x ./tcp_tsunami.ko
cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4
insmod tcp_tsunami.ko
depmod -a
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf

执行完之后 重启一下服务器。

reboot

重启成功后,执行以下命令。如果有显示内容说明启动成功。

lsmod | grep tsunami

>> tcp_tsunami 6053 5

CentOS 7 X64

由于手头暂时没有CentOS7 系统的服务器。以下代码并没有测试。

升级系统内核,请执行以下代码。其他的请参考 CentOS 6 X64!!

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.11.8-1.el7.elrepo.x86_64.rpm
yum remove -y kernel-headers
yum install -y http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-headers-4.11.8-1.el7.elrepo.x86_64.rpm
yum install -y http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.11.8-1.el7.elrepo.x86_64.rpm

Debian 8/Ubuntu 14

升级系统内核

分别安装 headers 和 images 即可。

内核地址:http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/

你可以选择更高版本的内核试一试,注意自己替换命令中的 v4.10.9

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/linux-headers-4.10.9-041009_4.10.9-041009.201704080516_all.deb
dpkg -i linux-headers-4.10.9*.deb
 
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/linux-image-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb
dpkg -i linux-image-4.10.9*.deb

设置启动引导

1)查看系统内核列表,执行以下命令

dpkg -l|grep linux-image

执行命令后,可见多个内核如下:

ii linux-image-3.16.0-4-amd64 3.16.7-ckt9-3~deb8u1 amd64 Linux 3.16 for 64-bit PCs
ii linux-image-4.10.9-041009-generic 4.10.9-041009.201704080516 amd64 Linux kernel image for version 4.10.9 on 64 bit x86 SMP
ii linux-image-amd64 3.16+63 amd64 Linux for 64-bit PCs (meta-package)

上面显示的我们需要将 linux-image-3.16.0 这个删除掉。

PS : 如果你显示的是其他的内核版本,那么就删掉它。只保留 4.10.9。

2)删除内核。

apt-get remove linux-image-3.16.0-4-amd64

注意:Debian8 系统会弹出一个提示,直接【Tab】选择 【NO】然后回车。

img
img

3)重新生成启动引导。

update-grub

4)重启系统。

reboot

安装gcc

根据大佬的要求 gcc版本必须 >= 4.9 ,否则无法编译。

我在 Ubuntu 14上安装gcc的时候竟然是 4.8版本,可能是由于 Ubuntu 14版本的问题。

1)查看 gcc 版本 。如果 版本 >= 4.9 可跳过这个步骤了。

gcc -v

2) 执行以下命令来安装 gcc-4.9

apt-get install build-essential
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-4.9

编译安装

1)请依次执行以下脚本。执行完重启服务器。

apt-get install make gcc-4.9
wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
echo "obj-m:=tcp_tsunami.o" > Makefile
make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9
install tcp_tsunami.ko /lib/modules/$(uname -r)/kernel
cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4
depmod -a
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf

2)重启成功后,执行以下命令。如果有显示内容 说明启动成功。

lsmod | grep tsunami

>> tcp_tsunami 6053 5

一键安装脚本

对于小白用户,以上手动安装可能有点复杂。那么就推荐你使用大佬的一键脚本吧。

提醒一下几位大佬的一键暂不支持 CentOS系统。大佬们的一键脚本可能在 Ubuntu14 下执行可能出问题。

如果一键出错,那么只能上面的内容手动安装了。

谢谢@Leonn 的博客 收集以下内容。

落雨无声版本

原文地址:https://ylws.me/tech/68.html

注意只支持 Debian8 / Ubuntu16 +

wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh && bash bbr.sh install

Vicer版本

原文地址:https://moeclub.org/2017/06/24/278/

注意只支持 Debian8 / Ubuntu16 +

wget --no-check-certificate -qO 'BBR_POWERED.sh' 'https://moeclub.org/attachment/LinuxShell/BBR_POWERED.sh' && chmod a+x BBR_POWERED.sh && bash BBR_POWERED.sh

91Yun版本

原文地址:https://www.91yun.org/archives/16781

注意只支持 Debian8 / Ubuntu16 +

wget https://raw.githubusercontent.com/singhigh/502newbbr/master/502newbbr.sh
chmod +x 502newbbr.sh
./502newbbr.sh