如何在 MacOS 上启用 AccurateECN?(用于测试 L4S 队列管理)

如何在 MacOS 上启用 AccurateECN?(用于测试 L4S 队列管理)

我正在尝试使用L4S 队列管理MacOS Sonoma 中的功能。我遵循了在线指南:

基本上,我设置了“Internet 共享”,以允许流量通过使用 Linux 设备作为端点的 Mac Mini。(这需要两个以太网端口,因此我使用 USB 以太网适配器作为第二个端口)。

Linux 客户端发送启用了正确标志的 TCP SYNECE、CWR 和 AE。然而,在接收端相同的 SYN仅接收标志儿童早期教育、儿童无线通讯。这会导致回退到经典 ECN,这意味着没有启用 L4S(TCP Prague)。

看来,由于某种原因,Mac Mini 正在修改 SYN 消息的 TCP 标志。

我确实按照指南的指示启用了 L4S:

defaults write -g network_enable_l4s -bool true

有人知道如何让 AccurateECN 在 Mac 上运行吗?

更新:更多详细信息

Linux 设备直接连接到 Mac 上的以太网端口。它们之间没有代理或任何其他设备。

Mac 上的两个以太网端口配置了静态 IP,并且具有不同的子网:

  • Mac 以太网端口 1(内置端口):配置静态 IP 1.1.1.1/24,并以自身(1.1.1.1)作为网关
  • Mac 以太网端口 2(USB 适配器):配置静态 IP 2.2.2.1/24,并将其自身(2.2.2.1)作为网关
  • 端点分别配置为 1.1.1.2/24 和 2.2.2.2/24。
  • (没有互联网访问,因此使用公共 IP 进行此实验应该是安全的。)

我使用 Linux 端点上的 tcpdump 进行捕获,然后使用 Wireshark 打开捕获的内容。

  • 客户端端点捕获:我可以看到初始 SYN 已正确发送,并带有 3 个标志:AE、CWR 和 ECE。
  • 服务器端点捕获:我看到相同的 SYN仅带有 2 个标志:ECE、CWR。(注意:这是同一个 SYN,而不是 SYN-ACK!)

我的 Wireshark 是最新的,能够识别 TCP 标头中的 AE 标志和准确的 ECN 选项。

也许静态 IP 配置在某种程度上影响了结果?如果需要,我愿意做更多实验。如果您需要更多信息,请告诉我。

相关内容