====== 轻松在 FreeBSD 14.1+ 启用 BBR 功能 ======
从 14.1 开始 tcphpts, tcp_rack, tcp_bbr 都已经默认编译为模块, 需要用直接加载就可以了, 不需要重新编译内核.
==== 加载模块 ====
kldload tcphpts
kldload tcp_bbr
==== 系统启动自动加载模块 ====
可以在 /etc/rc.conf 加入以下内容
kld_list="tcphpts tcp_bbr"
==== 检查模块加载成功 ====
运行以下命令, 看到有 BBR 一行, 并且有使用情况
sysctl net.inet.tcp.functions_available
==== 切换 TCP 默认实现方式为 BBR ====
运行以下命令
sysctl net.inet.tcp.functions_default=bbr
==== 使应用使用 BBR ====
默认在切换前启动的应用并不会使用到切换后的 bbr, 一种方法是重启应用, 一种是设置
sysctl net.inet.tcp.functions_inherit_listen_socket_stack=0
==== 系统启动时自动设置 sysctl ====
添加以下内容至 /etc/sysctl.conf 或 /etc/sysctl.conf.local
net.inet.tcp.functions_default=bbr
net.inet.tcp.functions_inherit_listen_socket_stack=0
20241205: 关闭 net.inet.tcp.bbr.measure.use_google 后, 大多数情况不会出现断流, 极小概率在某个系统出现极低速(该问题是接收端其他bug导致)
net.inet.tcp.bbr.measure.use_google=0
{{tag>freebsd bbr rack}}