14.4 TCP 堆栈

TCP 的实现被称为 TCP 堆栈(一层一层的堆叠,故称“栈”)。

FreeBSD 实现了多 TCP 栈共存,目前主要开发集中于 RACK 栈(由奈飞开发)和基础栈(4.4BSD 演化而来)。

使用 RACK 栈

# echo "net.inet.tcp.functions_default=rack" >> /etc/sysctl.conf # 持久化,重启生效
# sysrc kld_list+="tcp_rack" # 持久化,重启生效
# kldload tcp_rack # 加载内核模块,立即生效
# sysctl net.inet.tcp.functions_default=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 中,由 Netflix 团队开发。


无需编译内核,可直接配置加载:

# 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 启用成功。

参考文献

故障排除与未竟事宜

内网速度良好但互联网速度不佳

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

应该是可以调的,待解决。

最后更新于