14.4 TCP/IP 协议栈配置与优化

TCP 的实现被称为 TCP 堆栈(按层次结构叠加,因此称为“栈”)。

不同于其他主流操作系统或发行版,FreeBSD 实现了多 TCP 栈共存,目前主要开发集中于 RACK 栈(由 Netflix 开发)和基础栈(基于 4.4BSD 演化)。

使用 RACK 栈

# echo "net.inet.tcp.functions_default=rack" >> /etc/sysctl.conf   # 将 TCP 默认拥塞控制算法设置为 RACK 并写入 sysctl 配置,实现开机启用
# sysrc kld_list+="tcp_rack"                                         # 将 tcp_rack 模块添加到系统启动加载列表,实现开机启用
# kldload tcp_rack                                                    # 立即加载 tcp_rack 模块
# sysctl net.inet.tcp.functions_default=rack                           # 立即应用 TCP RACK 拥塞控制算法

重启或加载内核模块后,可通过如下命令显示系统中可用的 TCP 拥塞控制算法列表:

# sysctl net.inet.tcp.functions_available
net.inet.tcp.functions_available:
Stack                           D Alias                            PCB count
freebsd                           freebsd                          3
rack                            * rack                             0

TCP BBR

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

  • 充分利用带宽;

  • 降低延迟。

通常来说,如果使用代理软件,建议启用 TCP BBR 功能,这在提升速度和稳定性方面效果显著。在中国大陆,该技术主要用于网络优化。在 FreeBSD 中,TCP BBR 由 Netflix 团队开发。


无需编译内核,可直接将 tcp_racktcp_bbr 模块添加到系统启动加载列表,实现开机启用

将 TCP 默认拥塞控制算法设置为 BBR 并写入 sysctl 配置,实现开机启用:

重启系统:

重启后,查看当前系统使用的 TCP 默认拥塞控制算法:

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

参考文献

故障排除与未竟事宜

局域网速度良好但互联网速度不佳

RACK 和 BBR 在局域网表现良好,均优于默认堆栈;但在互联网上表现不佳:RACK 的互联网速度约为默认堆栈的三分之一,BBR 则约为默认堆栈的六分之一。

或许通过调整参数可以解决该问题,具体方法待研究。

最后更新于

这有帮助吗?