Ubuntu启用BBR修改版以加速TCP

之前的文章中提到了一款名为BBR的TCP拥塞控制算法。由于原本的版本为了公平起见,并非十分暴力,所以我们可以手动修改BBR算法的源代码来让它变得十分暴力,加速效果明显加强。

更新Linux内核

首先要更新Linux内核到较高的版本,同时需要安装和linux-image版本对应的linux-header,以下以安装linux kernel v4.12.11 amd64为例。

安装linux-image

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12.11/linux-image-4.12.11-041211-generic_4.12.11-041211.201709070418_amd64.deb

dpkg -i linux-image-4.12.11-041211-generic_4.12.11-041211.201709070418_amd64.deb

安装linux-header

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12.11/linux-headers-4.12.11-041211_4.12.11-041211.201709070418_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.12.11/linux-headers-4.12.11-041211-generic_4.12.11-041211.201709070418_amd64.deb

dpkg -i linux-headers-4.12.11-041211*

更新grub并重启:

update-grub
reboot

安装编译环境

我们需要手动编译该系统模块,并且需要gcc 4.9以上的版本。

安装gcc-4.9

apt update
apt install gcc-4.9

如果执行以上命令发现找不到gcc-4.9这个软件包,则需要导入PPA源并再次安装(此时可选择安装gcc-6了):

apt install software-properties-common
add-apt-repository ppa:ubuntu-toolchain-r/test 
apt update
apt install gcc-4.9
或
apt install gcc-6

安装make

apt install make

编译BBR魔改版

下载并编译模块:

mkdir tcp_tsunami
cd tcp_tsunami

wget -O ./tcp_tsunami.c https://gist.githubusercontent.com/zyfworks/d1da46fd4bf48bf31f9e717f87b7f064/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
或
make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-6

安装模块:

insmod tcp_tsunami.ko
cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4
depmod -a
modprobe tcp_tsunami

启动模块:

rm -rf /etc/sysctl.conf

wget -O /etc/sysctl.conf -N --no-check-certificate https://raw.githubusercontent.com/zyfworks/YankeeBBR/master/sysctl.conf

sysctl -p

至此为止,魔改版BBR已成功安装。

该模块按照如上的操作安装之后会随系统自动启动。如果升级内核,则需要按照以上步骤重新安装该模块。