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~