从 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
运行以下命令
sysctl net.inet.tcp.functions_default=bbr
默认在切换前启动的应用并不会使用到切换后的 bbr, 一种方法是重启应用, 一种是设置
sysctl net.inet.tcp.functions_inherit_listen_socket_stack=0
添加以下内容至 /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