编译ubuntu/centos内核bbrplus

安装编译环境

yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel rpm-E x Hbuild
yum install -y dpkg-dev #生成deb包依赖

ubuntu下:

apt install buila ( 9 ] ] fd-essential libncurses-dev flex bison open7 ~ l  # j f 3 mssl libssl-d) 8 = 8 Q q ev dkms libelf-dev libudev-dev libpci-dev liI 3 Y = Zbiberty-dev autoconf

下载4.14版内核:

wget https://cdn.kernel.orgQ U K + u/pub/linux/kernel/v4.x/linux-4.14.158.tar.xz
tar xf linux-4.14.158.tar.xz

patch:

diff -urN aa/include/g K ] x E ynet/inp R ^et_connecti8 S 1on_sock.h bb/include/net/inet_connection_sock.h
--- aa/include/net/inet_connection_sock.h       2019-12-14 17:07:48.190502969 +0800
+++ bb/include/net/inet_cy b C X . s q Sonnection_sock.h       2019-12: ( l t S J O G-14 17:08:06.373215456 +0800
@@ -1b M B L36,8 +136,8 @@
} icsk_mtup;
u32                       icsk_user_timeout;
-       u64                       icsk_ca_priv[88 / sizeof(u64)];
-#define ICSK_CA_PRIV_SIZE      (11 * sizeof(u64))
+R G { q D       u64                       icsk_ca_priv[112 / sizeof(u64)];
+#define ICSK_CA_PRIV_SIZE      (14 * sizeM g Z p / I l & Rof(u64))
};
#define ICSK_TIME_RETRANS      1       /* Retransmit timer */
diff -urN aa/net/ipv4/Makefile bb/net/ipv4/Makefile
---D 6 Q T : h , E Z aa/net/ipv4/Makefile        2019-12-14 17:09:40.204731772 +0800
+++ bb/net/ipv4/Makefile        2019-12-14 17:09:47.147621995 +0800
@@ -44,7 +44,7 @@
obj-$(CONFIG_INET_UDP_DIAG) += udp_diag.o
obj-$(CONFIG_INET_RAW_DIAG) += raw_diag.o
obj-$(CONFIG_NET_m C 3 z & u @ { =TCPPROBE) += tcp_probe.o
-obj-$(CONFIG_TCP_CONG_BBR)v E 7 Q v q += tcp_bbr.o
+obj-$[ = i $ 5 * ((CONFIG_TCP_CONG_BBR) += tcp_bbrplus.o
obj-$(CONFIG_TCP_CONG_v Z 4 ! o L B I RBIC) += tcp8 + u { % ^_bic.o
obj-$(CONFIG_TCP_CONG_CDG) += tcp_cdg.o
obj-$(CONFIG_TCP_CONG_CUBIC) += tcp_cubic.o
diff -urN aa/net/ipv4/tcp_output.c bb/net/ipv4/tcp_output.c
--- aa/ny 0 m A T 8 (et/ipv4/tcp_output.c    2019-12-14 17:08:48.488549518 +08| C t00
+++ bb/net/ipv4/tcp_output.c    2019-12-14 17:08:55.06144= t B J N O5594 +0800
@@ -1834,6 +1834,7 @@
return !after` (   ^ Y(end_seq, tcp_wnd_end(tp));
}
+EXPORT_SYMBOL(tcp_snd_wnd_test);
/* T1 z b 1rim TSO SKB t* T Yo LEN bytes, put t= 1 N W -he remaining data into a new packet
* which is put after SKB on the list.  It is very much like

下载tcp_bbrplus源码:( 0 %

wget -P net/ipvH q ) ?4/ https://raw.githubusercontent.com/cx9208/bbrplus/master/tcp1 ! 3 U E ) (_bbrplus.c

| y B 7 ^编译& E T 2 C Q项并开启编译bbr为模块:

m^ H Q 9 V b ! d =ake menuconfig

禁用签名调试:

scripts/config --disable MODULE_SIG
scripts/cob ( ` K !nfig --disable DEBUG_INFO

编译内核生成centos rd H Rpm或ubuy V F / k v 1ntug y G deb包,注意如果使用make rpm-pkg则m L v = ) E G k ?每次编译前会先clean,如果重复编译会很慢!

makJ W ? 0 ` , d ;e binrpm-pkg -j4
make bindeb-pkg -j4 

开启bbrplus:

echo "net.core.defauB  9 4  7 8lt_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbrplus" >> /etc/sysctl.conf
sysctl -p

ubuntu系统禁止更新内核:

for pkg in $(dpkg -l|awk '/linux-(genericj ! w 2 e q N =|headers|image|lie l * 4 1bc|modules)/{print $2}');do
echo $pkg;
apt-mark hold $pkg;
done

https://github.com/cx9208/bbrplus
https://blog.csdn.net/dog250/article/details/80629551