bbrplus-4.9
Linux BBRplus Kernel 4.9 ported from BBRplus 4.14
with nvme_core.io_timeout patch (otherwise may got long boot time on some VMs)
based on original version
https://github.com/cx9208/bbrplus
some improvements as Nov-2021
i) merged official v4.14 tcp_bbr patches between 2018-2021 into bbrplus
ii) keep official v5.17 tcp_bbr module, so may use either
net.ipv4.tcp_congestion_control = bbrplus
net.core.default_qdisc = fq
or
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
in the /etc/sysctl.conf
file. ( fq
is the only recommended packet scheduler, do not use fq_codel
etc )
patch & build bbrplus kernel youself
(or you can use releases compiled by me in "Releases" section)
1) get convert patch on this repository, use git or direct download
(e.g., convert_official_linux-4.9.x_src_to_bbrplus.patch)
2) download officaial linux kernel
say 4.9.252
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.252.tar.gz
3) extract the tarball & cd extracted directory
tar zxvf linux-4.9.252.tar.gz && cd linux-4.9.252
4) copy convert patch to extracted kernel directory
something like
cp ../convert_official_linux-4.9.x_src_to_bbrplus.patch .
5) do the patch job
patch -p1 < convert_official_linux-4.9.x_src_to_bbrplus.patch
(if no error or failed on previous step)
6) install dependencies for building kernels
CentOS
sudo yum groupinstall Development tools
sudo yum install ncurses-devel bc gcc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel
press "y" key when asked
Debian/Ubuntu
sudo apt install build-essential libncurses5-dev
sudo apt build-dep linux
press "y" key when asked
7) config build parameters based on current kernel settings
make oldconfig
press Enter key when asked (if dont know what is what)
8) disable debug info & module signing
scripts/config --disable DEBUG_INFO && scripts/config --disable MODULE_SIG
9) build kernel
CentOS
make rpm-pkg LOCALVERSION=-bbrplus 2>&1 | tee build.log
Debian/Ubuntu
make deb-pkg LOCALVERSION=-bbrplus 2>&1 | tee build.log
if anything goes wrong check the "build.log" file
(if not failed on previous step)
10) collect kernel package files, do test on some other Linux machine
CentOS files
located in
/"user home dir"/rpmbuild/RPMS/x86_64/
Debian/Ubuntu files
located in
parent directory