Google TCP BBR V2从编译到食用完全指南

Contents

1. 前言不搭后语

bbrv2的发挥效果不一定适合所有人,如果你本身的网络环境对vps就已经足够友好的话,那么bbr2的发挥效果是很一般的,或者说基本感觉不出来。但是如果你的网络环境对于vps很不友好,那么bbr2发挥的效果就很是显著了。我先来发一下我装了暴力魔改版bbr和装了bbr2之后的对比图:

装了暴力魔改版bbr:

装了bbr2之后:

以上均为,同一节点,同一网络环境对比。我家是100M联通,平时,最快也就跑个1.5w撑死了,但是食用了bbr v2后,速度真的是质的飞跃…

 

——————分割线——————

emmmm,在一切的开始之前,我还是声明一下,虽然google官方已经推出了bbr v2这套新的加速算法,但是吧…因为它针对的系统,有点高,所以这个BBR V2可能并不适用于所有人的小鸡,也许可能一个不小心,系统就会挂掉。所以在编译安装之前,建议大家先备份自己的重要文件…

尤其是像我这种已经在vps上搭建了博客的,数据库和wordpress一定要先备份一下,不然真的出现什么闪失,追悔莫及…

p.s 理论上来说,bbrv2算法,支持debian10以及ubuntu18.04+以上

加速有风险,食用需谨慎。

关于什么是BBR我就不过多介绍了,浪费口舌…简单的意思就是,给你的vps加速的一套算法。但是初代bbr毕竟是初代嘛,Bug问题啥的,肯定还是有的,要不然怎么会有一系列bbr魔改版,bbrplus惊现江湖呢。

本篇文章我会完全针对小白,来写一篇如何从前期编译在到后期食用的教程,我不敢保证每个人都能编译成功,也不敢保证每个人都能食用成功

我个人 非常建议大家在本地电脑上安装一个虚拟机,然后在本地进行编译的。编译完成可以用scp把编译出来的deb包上传到vps。

但是,如果你不会装ubuntu虚拟机,或者你懒得装,那么也可以移步到vps上面。 低于512MB内存的最好还是不要尝试编译。

可以直接食用我下面编译好的deb包。

下载地址见文章底部!

2.开始编译

2.1安装编译环境

我这次的教程就给大家演示一下,如何在vps上进行编译。

登录到vps,执行下面两行代码,安装必要的编译软件

sudo apt install build-essential libncurses5-dev git screen -y
sudo apt build-dep linux -y
 

——这是错误代码解决分割线——

p.s 如果执行第二段代码,出现了如下如图的错误提示代码:

Reading package lists... Done
E: You must put some 'source' URIs in your sources.list

请执行这两段代码,解决问题:

sudo sed -i 's/#deb-src/deb-src/g' /etc/apt/sources.list
sudo sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list

执行完上面两段代码后,在执行一下更新软件

sudo apt update && sudo apt upgrade -y
 

——这是错误代码解决结束分割线——

好了,现在,重新执行下面这段代码,然后等待跑码完成,大概需要个1-2分钟:

sudo apt build-dep linux -y

然后我们把BBR V2的源码clone下来,我们就在/home文件夹下进行吧:

cd /home
sudo git clone -o google-bbr -b v2alpha  https://github.com/google/bbr.git

执行完上面的代码,会看到如下界面,耐心等待个10分钟,如果你的vps网速不友好的话,emmmm,估计得时间更长一点,耐心点,少年:

出现下面这个界面,显示有三个done,代表源码已经下载成功:

现在,我们进入到bbr源码文件夹,然后输入ls,会看到下面一堆文件名字

cd bbr
ls

然后继续执行下面的代码,开始配置编译文件:

sudo make menuconfig

上面代码执行完,你会看到下面这个界面,然后用键盘上的方向键,移动到networking support这里,然后按一下空格,前面会出现一个*号,然后选择select,回车:

上面步骤执行完,你会看到下图所示,方向键选择第二项networking options,然后选择select,并回车

然后你会看到如下界面,用方向键移动到TCP/IP networking,并按一下空格,会出现下面很多选项:

然后用方向键移动到TCP:advanced congestion control这里,按一下空格,让前面变*号,然后选择select,回车:

p.s 这里插一句,正常来说我们不用在前面打*号的,打上M就可以了,但是我在我的linode vps上测试发现,没有办法打M,只能打*号,具体是为什么我也不知道。不过这个不重要,打*打M都是可以的。

出现如下界面,请用方向键移动到BBR2 TCP这里,然后按空格把前面打上*,然后用左右方向键,移动到save敲击回车保存:

保存完成以后,移动到exit选项,一直回车选择它,直到退出这个编译界面,回到ubuntu主界面:

保存完成以后执行下面两行代码,先把源码的签名调试给禁用这两行代码执行完,vps不会有任何反应:

sudo scripts/config --disable MODULE_SIG
sudo scripts/config --disable DEBUG_INFO

现在创建一个编译屏幕:

sudo screen -S bbr2

然后开始执行编译,j1后面的数字,是线程数,不过我建议大家第一次编译的时候,都选择单线程来编译,这样防止编译报错:

sudo make -j1 deb-pkg

然后你就看到满屏幕的代码在跑,别害怕也别着急,这是vps已经开始编译了:

此时,如果你需要用vps做一些其他事情,可以按键盘上ctrl + a + d,退出screen程序,让bbr在后台编译,这样你就可以去做一些其他事情。

如果你想进入到screen查看编译状态的话,请执行如下代码:

sudo screen -ls

这个时候screen会罗列出此时有多少个screen后台程序:

我们找到刚才我们命名为bbr的程序,查看进程前面的数字,执行下面的代码,进入到程序中,上面我们之间的数字可能会不太一样,一切请以你自己的为标准:

sudo screen -r 13198

我们就能再次进入到bbr编译程序中去了。

3.安装bbr v2内核

说真的,至于编译多久才能成功,我现在还真是不好说,因为我在本地ubuntu机器上编译了差不多三个多小时,才成功编译完成。

但是,我为了写教程,在我的linode vps上编译了只有大概十分钟,就编译完了。并且我的linode配置,也就是1核1G的配置,所以,具体我也说不准到底需要编译多久。

但不管怎么样,你在你的屏幕上看到了类似下面的字样,就代表已经编译完成了:

这个时候,我们进入到home目录下,查看列表,会看到如下这些文件:

cd /home
ls

上面那三个.deb后缀的文件包,就是我们需要的软件包,但是我们不需要全部安装,只需要安装带有header和image字样的就可以.。也许你看到我这篇文章的时候,bbrv2的内核又升级了,也就是文件名或许和我的不一样,也许你的是5.6.0,那么请根据自己的实际情况来修改下面前两行的代码:

sudo dpkg -i linux-headers-5.4.0-rc6_5.4.0-rc6-1_amd64.deb
sudo dpkg -i linux-image-5.4.0-rc6_5.4.0-rc6-1_amd64.deb
sudo dpkg -l|grep linux-headers   | awk '{print $2}'
sudo dpkg -l|grep linux-image   | awk '{print $2}'

4.开启BBR V2内核

上面所有的操作都执行完以后,我们现在正式的开启BBR V2内核,我们先进入root用户下:

sudo su

然后执行下面两行代码,来开启BBR V2内核

echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr2" >> /etc/sysctl.conf

执行下面代码,刷新一下

sysctl -p

你会看到vps返回net.ipv4.tcp_congestion_control = bbr2的字样,这说明bbr2已经成功开启。如果代码中还返回了箭头标注的错误,不用在意,一会儿执行完重启就可以了:

新版linux内核安装以后,我们需要删除现在的vps内核,执行下面代码,先查看我们的vps目前使用的内核版本:

uname -r

上面代码执行完,ubuntu会返回如下代码,告诉我们正在使用的内核版本,我的系统是使用的是4.11.8-041108-generic内核,你的也许会和我不一样,请记住返回的内核版本,因为重启完,我们需要删除它:

给VPS进行重启:

reboot

大概过个1分钟左右,我们重新登陆VPS,然后执行下面的代码,删除现在的内核,请自行更改自己的内核版本号,不要原封不动的复制我下面的代码:

sudo su 
apt purge "linux-image-4.11.8-041108-generic"

内核删除完以后,我们执行下面两行代码,再把vps重启一下:

update-grub
reboot

大概过个1-2分钟我们在重新登陆到vps中,然后执行如下代码,查看VPS是否开启BBR:

sysctl net.ipv4.tcp_available_congestion_control

vps如果返回如下代码,代表bbr2彻底启动成功:

5.开启ECN加速

如果你想了解什么是ecn加速,可以查看维基百科的官方解释:传送门

简单来说,就是它是避免丢包发生的。

执行如下代码,开启ECN:

sudo su
echo "net.ipv4.tcp_ecn = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_ecn_fallback = 1" >> /etc/sysctl.conf

执行一下刷新,查看ecn状态:

sysctl -p

如果vps返回上面的代码,代表ecn开启成功!

至此,你已经给自己的vps开启了谷歌的bbr v2算法,好好的enjoy吧~

7.直接食用我编译好的deb包

分享链接: 传送门

enjoy~

 

——本文章为Cattypapa原创,如需转载,请注明出处——

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注