VM UDP Fast Path

在使用 Surge 网关模式接管下游设备时,如果某些设备运行了大量使用 UDP 的 P2P 应用(如 BT 下载、游戏平台启动器、直播客户端等),可能会在 Dashboard 中瞬间产生海量连接。这不仅会拖慢 Surge 的整体处理速度,在极端情况下甚至可能导致 macOS 资源耗尽,使 Surge 被系统强制重启。

问题成因

Surge 作为工作在四层的代理,对每一个「四元组」不同的 UDP 流(源地址 / 源端口 / 目标地址 / 目标端口)都会按一个独立连接进行管理。 对于普通应用而言,即便使用 UDP,通常也只会维持少量逻辑连接,这一开销是完全可接受的;但对 P2P 应用来说,在数秒内就可能产生上千个逻辑连接,显著放大了连接管理成本。

UDP Fast Path 机制

为应对上述情况,我们引入了 UDP Fast Path 防御机制。当检测到某个客户端在短时间内新建了大量 UDP 连接时(1 秒内 ≥ 10 个10 秒内 ≥ 30 个),Surge 会对该客户端启用 UDP Fast Path,将其 UDP 流量退化为仅进行 L3 转发处理。

在 UDP Fast Path 模式下:

  • 每个数据包只做最小化的三层转发处理,不再为每个四元组建立独立连接;

  • 处理性能极高,理论上可轻松超过物理网卡的带宽极限;

  • 大幅降低连接管理与系统资源消耗,不再需要担心 P2P 连接风暴拖垮系统。

注意事项

  1. 绕过代理: 启用 UDP Fast Path 的数据包会被直接转发,不会经过代理规则和策略处理

  2. 关键端口与 FakeIP 保护: 为避免影响正常应用,对以下 UDP 流量始终使用常规模式处理,不会进入 Fast Path:

    • 目标端口号 小于 1024 的 UDP 数据包;

    • 目标地址为 FakeIP 的 UDP 数据包。

  3. 仅适用于 Surge Gateway VM: UDP Fast Path 仅在配合 Surge Gateway VM 使用时生效,对增强模式接管无效。

  4. 按设备单独开关: 自 Surge Mac 6.4.2 起,Dashboard 中新增了按设备单独关闭 UDP Fast Path的开关。 你可以根据需要,为特定设备单独启用或禁用 UDP Fast Path,以在性能与可控性之间取得平衡。

Last updated