第 14.1 节 TCP BBR

TCP BBR 是一种 Google 开发的拥塞控制算法。作用有两个:

  1. 在有一定丢包率的网络链路上充分利用带宽。

  2. 降低网络链路上的 buffer 占用率,从而降低延迟。

一般来说,如果你使用了代理软件,建议开启 TCP BBR 功能,在速度和稳定性上会有十分显著的作用。在中国大陆该技术通常用于魔法。该项目在 FreeBSD 中,由 Netflix 团队协助开发。最低系统版本支持:r363032,也即推荐 FreeBSD 13.0。

14.1-RELEASE 及以上版本

无需编译内核。可以直接配置加载。

# sysrc kld_list+="tcp_rack tcp_bbr"

启动时加载 BBR 模块。

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

重启:

# reboot 

重启后,查看 BBR:

# sysctl net.inet.tcp.functions_default

如果输出结果为 net.inet.tcp.functions_default: bbr,则 TCP BBR 启用成功。

14.0-RELEASE 及以下版本(最低 r363032,或者说 FreeBSD 13.0-RELEASE)

修改内核配置

# cd /usr/src/sys/amd64/conf

如果安装 FreeBSD 时没有选择安装内核源码,建议阅读后文。

# 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

编译并安装内核

# /usr/sbin/config GENERIC-bbr
# cd ../compile/GENERIC-bbr
# make cleandepend && make depend
# make -jN+1

其中 N 建议为 CPU 核心数

# make install``

安装内核,完成后重启使用新内核。

# uname -a

如果显示出 GENERIC-bbr,则表示 TCP BBR 内核编译并安装成功。

配置和加载 BBR 模块

# sysrc kld_list+="tcp_rack tcp_bbr"

启动时加载 BBR 模块。

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

重启:

# reboot 

重启后,查看 BBR:

# sysctl net.inet.tcp.functions_default

如果输出结果为 net.inet.tcp.functions_default: bbr,则 TCP BBR 启用成功。

故障排除

故障排除等事宜请参考:

netflix/tcplog_dumper

最后更新于