Valve GameNetworkingSockets P2P 連線問題

GameNetworkingSockets 中的 P2P 連線失敗

Valve 的 GameNetworkingSockets 正經歷嚴重的 Peer-to-Peer (P2P) 連線失敗,迫使連線必須回退到高延遲的轉發伺服器 (relay servers)。雖然最初報告為影響以色列和其他中東國家的區域性問題,但社群的進一步調查顯示,該問題可能更為廣泛。

技術根本原因與症狀

此失敗的主要症狀是無法建立直接的 P2P 連結。此失敗特別與 Session Traversal Utilities for NAT (STUN) 程序有關。當 STUN 失敗時,系統無法確定直接連線所需的公用 IP 和連接埠,導致回退到轉發伺服器,這會顯著增加玩家的延遲。

社群發現的權宜做法

使用者已透過手動替換 steamwebrtc.dll 檔案,為至少三款遊戲找到了臨時解決方案。該程序包括:

  1. 取得舊版本的 steamwebrtc.dll 函式庫。
  2. 將此舊版 DLL 直接複製到遊戲的 ./binaries 資料夾中。

此權宜做法顯示,在三月左右的 Steam 更新中可能引入了回歸 (regression) 問題,破壞了基於 WebRTC 的網路組件。

社群分析與理論

Hacker News 和 GitHub 上的使用者討論揭露了幾種關於此次停機原因的理論:

基礎設施與區域性封鎖

有些使用者假設,此問題並非 Valve 代碼中的錯誤,而是外部網路干擾的結果。有一種理論認為,STUN 因為未加密,比起加密的 WebRTC 流量,更容易受到封鎖或被用於 DDoS 反射/放大攻擊,這可能導致特定區域的 ISP 層級或國家層級的封鎖。

軟體回歸

其他使用者指出問題發生的時間點,並注意到它與三月的 Steam 更新一致。事實上,將 DLL 回退到舊版本可以為部分使用者恢復功能,這強力支持了 Valve 網路堆疊中存在軟體回歸的理論。

對第三方遊戲的影響

有推測認為此問題可能影響了依賴 Valve 網路基礎設施的高知名度作品。例如,有些使用者注意到 Street Fighter 6 在幾個月前似乎從 P2P 切換到了轉發連線,這可能是這些更廣泛的 GameNetworkingSockets 問題的副作用。

調查結果摘要

Aspect Detail
核心問題 STUN 失敗導致無法建立直接 P2P 連結
結果 回退到高延遲的轉發伺服器
疑似觸發因素 三月的 Steam 更新
權宜做法 手動將 steamwebrtc.dll 替換為舊版本
受影響區域 最初為以色列/中東;可能遍及全球

Sources