把搬瓦工VPS上的系统换成了FreeBSD,想开启内核的BBR功能。

但搬瓦工算力有限制,于是找了台本地电脑,编译好内核上传替换来开启BBR。

文章参考https://github.com/netflix/tcplog_dumper

一,找台能正常编译内核的电脑,编译好内核

1,进入/usr/src/sys/amd64/conf,创建个BBR内核

cp GENERIC BBR

2,在ident这行下面添加如下参数

ident           BBR
options         TCPHPTS
options         RATELIMIT
makeoptions     WITH_EXTRA_TCP_STACKS=1

3,创建/etc/src.conf文件,内容如下

KERNCONF=BBR
MALLOC_PRODUCTION=yes

4,多内核的,可以启用全核心编译,这样更快,只要编译/etc/make.conf文件,加入如下参数:

FORCE_MAKE_JOBS=yes
MAKE_JOBS_NUMBER=8  #8个内核

FreeBSD13下无效果

5,编译,安装内核

cd /usr/src
make buildkernel -j8 KERNCONF=BBR
make installkernel KERNCONF=BBR

6,打包内核并上传到VPS服务器

cd /boot
tar cfj kernel.bbr.tar.bz2 kernel
scp -P 'ports' kernel.bbr.tar.bz2 user@VPS_IP:/boot

** 二,VPS上的设置 **

1,删除使用内核,换上刚刚上传的开启BBR的内核

cd /boot
rm -rf kernel
tar xvf kernel.bbr.tar.bz2

2,系统设置

sysrc kld_list+="tcp_rack tcp_bbr"

echo 'net.inet.tcp.functions_default=bbr' >> /etc/sysctl.conf

3,重启系统,执行以下命令,如果提示有bbr,说明成功了。

# sysctl net.inet.tcp.functions_default
net.inet.tcp.functions_default: bbr

4,Log设置(可有可无)

# sysctl net.inet.tcp.bb.log_auto_mode=4
# sysctl net.inet.tcp.bb.log_auto_all=1
# sysctl net.inet.tcp.bb.log_auto_ratio=1
# mkdir /var/log/tcplog_dumps
# chown nobody /var/log/tcplog_dumps
# tcplog_dumper

Related content