한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L4 網際網路線路

ECMP 其中一條路徑異常 ECMP / link bundle member fault

原因 ID isp-ecmp · 主要負責 基礎設施團隊(網路基礎設施) · 協同 遊戲開發團隊(伺服器開發), 外部(外部)

在含圖解與實驗的完整版中開啟卡片 →

電信業者與資料中心會為同一個目的地準備多條路徑,並替每條連線指定其中一條傳送。只要其中一條路徑故障,被分配到那條路徑的人就會持續遇到 lag。

為什麼 在多條線路綁在一起的區段中,其中一條線路或一台設備異常或壅塞 → 於是 路徑由位址與 port 的組合(雜湊)決定,只有被分配到那條路徑的連線出現封包遺失與延遲 → 畫面上 同一地區、同一電信業者,卻只有部分人持續瞬移。重新連線後有時就恢復正常

症狀
瞬移, 拉回, 卡頓
因素
遺失, 抖動
誰會遇到
只有我, 特定地區/電信業者
何時
一直都有
負責單位
主要負責 基礎設施團隊(網路基礎設施) · 協同 遊戲開發團隊(伺服器開發), 外部(外部)
遊戲開發團隊要做的事
記錄每條連線的遺失與重傳統計,讓受影響者的 IP、port 與時間點能被撈出來(TCP 用 TCP_INFO 的重傳次數,UDP 用缺漏的封包序號計算)。
基礎設施團隊要做的事
收集受影響者的 IP、port 與時間點,提供給電信業者與資料中心;監控各路徑的遺失;量測路徑時使用與遊戲相同的協定與 port(mtr --tcp、--udp 搭配 --port);若是我方設備的路徑,就把異常線路或設備從綁定中移除。
外部要做的事
請電信業者確認並更換異常路徑,並引導玩家以重新連線暫時避開(重新連線會換 port 的情況)。
數值參考
有 4 條路徑時,只有約 1/4 的使用者會遇到。量測 ping 時可能走的是和遊戲不同的路徑,結果看起來正常。
圖表上
只有部分偏高 · 每條連線的遺失與重傳(依 IP/port)
查看位置
依來源 IP、port 分開查看每條連線的遺失與重傳;用 UDP(-u)把 mtr 送往遊戲 port(-P),並指定來源 port(-L)量測,再換不同來源 port 重複多次。只給 -P 不給 -L 時,每次請求的來源 port 都會變,多條路徑的結果會混在一起
符合的跡象
同一地區、同一電信業者內,只有特定來源 port(或位址)的組合持續遺失,重新連線換了 port 後就恢復正常
不符合的跡象
換了 port 仍然全部都差時,是整個區段的壅塞或故障
確認方式
用基礎設施工具確認(不需要遊戲程式碼)
深入了解
為了不打亂同一條連線的封包順序,設備會依位址與 port(依設備設定,也可能只看位址)算出的值,替每條連線固定一條路徑(ECMP、LAG)。只看位址的地方,重新連線後仍是同一條路徑,不會改善。因此同時收到「ping 正常,只有遊戲 lag」、「重新連線後就好了」這類回報時,就要懷疑是這個原因。

出處

  1. RFC 7424: Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks IETF
    LAG、ECMP 以標頭欄位的雜湊替每個 flow 指定一條鏈路,保持封包順序(flow→鏈路為多對一對應)
  2. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    區分 flow 的依據因實作而異(只看目的位址、位址對、連 port 也看),多路徑環境下 ping、traceroute 的結果難以採信
  3. mtr(8) manual page source mtr
    -u(UDP)、-P(目的 port)、-L(UDP 來源 port)選項,只給 -P 時會把請求序號放進來源 port,每次請求都不同

相關原因

同一層:L4 網際網路線路

同一症狀(瞬移)在其他層的原因

查看含圖解與實驗的完整版卡片