Valve GameNetworkingSockets P2P 连接问题

GameNetworkingSockets 中的 P2P 连接故障

Valve 的 GameNetworkingSockets 正在经历严重的点对点 (P2P) 连接故障,迫使连接回退到高延迟的转发服务器 (relay servers)。虽然最初报告为影响以色列和其他中东国家的区域性问题,但社区的进一步调查表明,该问题可能更为广泛。

技术根本原因与症状

这种故障的主要症状是无法建立直接的 P2P 链路。该故障特别与 NAT 会话穿越实用程序 (STUN) 过程相关。当 STUN 失败时,系统无法确定直接连接所需的公网 IP 和端口,导致回退到转发服务器,从而显著增加了玩家的延迟。

社区发现的临时解决方案

用户已通过手动替换 steamwebrtc.dll 文件,为至少三款游戏找到了一个临时修复方法。该过程包括:

  1. 获取旧版本的 steamwebrtc.dll 库。
  2. 将此旧版 DLL 直接复制到游戏的 ./binaries 文件夹中。

这一临时解决方案表明,在三月左右的一次 Steam 更新中可能引入了回归问题,从而破坏了基于 WebRTC 的网络组件。

社区分析与理论

Hacker News 和 GitHub 上的用户讨论揭示了关于此次故障原因的几种理论:

基础设施与区域性屏蔽

一些用户假设,该问题并非 Valve 代码中的 bug,而是外部网络干扰的结果。一种理论认为,由于 STUN 是未加密的,与加密的 WebRTC 流量相比,它更容易被屏蔽或被用于 DDoS 反射/放大攻击,这可能导致特定区域内的 ISP 级别或国家级别的屏蔽。

软件回归

其他用户指出,该问题的发生时间与三月的 Steam 更新一致。对于某些用户来说,回退到旧版 DLL 可以恢复功能这一事实,有力地支持了 Valve 网络栈内存在软件回归的理论。

对第三方游戏的影响

有推测认为,该问题可能影响了依赖 Valve 网络基础设施的高知名度游戏。例如,一些用户注意到 Street Fighter 6 在几个月前似乎从 P2P 切换到了转发连接,这可能是这些更广泛的 GameNetworkingSockets 问题带来的副作用。

调查结果摘要

| 方面 | 详情 | | :--- | :--- | | | 核心问题 | STUN 失败导致无法建立直接 P2P 链路 | | 结果 | 回退到高延迟的转发服务器 | | 疑似触发因素 | 三月的 Steam 更新 | | 临时解决方案 | 手动将 steamwebrtc.dll 替换为旧版本 | | 受影响区域 | 最初为以色列/中东;可能遍及全球 |

Sources