把搬瓦工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