实录:FreeBSD开启BBR
首先感谢Netflix的工程师,是他们的工作使得FreeBSD上使用BBR成为可能。
这是Netflix相关项目的GitHub: tcplog_dumper
修改内核配置
# cd /usr/src/sys/amd64/conf
如果安装FreeBSD时没有选择安装内核源码,你可以直接解压FreeBSD发行镜像中的/usr/freebsd-dist/src.txz
到/usr/src/
.# cp GENERIC GENERIC-BBR
# ee GENERIC-BBR
调整配置,可以去掉许多不用的模块以提升性能和节省编译时间,修改ident
的值为GENERIC-BBR
,在ident
这一项下面加入以下项目:
options TCPHPTS
options RATELIMIT
makeoptions WITH_EXTRA_TCP_STACKS=1
新建/etc/src.conf
,内容为:
KERNCONF=GENERIC-BBR
MALLOC_PRODUCTION=yes
编译并安装内核
如果vps网络不好,中途可能断开。这时可以使用screen来开虚拟终端帮助解决问题,使用请自行搜索。# /usr/sbin/config GENERIC-BBR
# cd ../compile/GENERIC-BBR
# make cleandepend && make depend
# make -jN
其中N
建议为CPU核心数+1
. 如果编译出错,通常原因是配置时模块缺失。实在不能确定是否需要的模块请不要禁用。# make install
安装内核,完成后重启使用新内核。# uname -a
如果显示出GENERIC-BBR
,恭喜你,BBR内核编译并安装成功。
配置和加载BBR模块
# sysrc kld_list+="tcp_rack tcp_bbr"
启动时加载BBR模块。# echo 'net.inet.tcp.functions_default=bbr' >> /etc/sysctl.conf
设置默认使用BBR,重启。# sysctl net.inet.tcp.functions_default
如果结果是net.inet.tcp.functions_default: bbr
,则启用BBR成功。