遊戲 Lag 白皮書 › L4 網際網路線路
繞遠路的路由 Suboptimal routing
原因 ID isp-routing · 主要負責 基礎設施團隊(網路基礎設施) · 協同 外部(外部)
在含圖解與實驗的完整版中開啟卡片 →
受電信業者之間互連合約的影響,連到附近的伺服器也可能繞到遠處再回來。
為什麼 自己的電信業者與伺服器端的電信業者沒有直接互連 → 於是 經過其他國家或其他城市,距離與經過的設備都增加 → 畫面上 只有特定電信業者的使用者 ping 特別高
- 症狀
- 輸入延遲
- 因素
- 延遲
- 誰會遇到
- 特定地區/電信業者
- 何時
- 一直都有
- 負責單位
- 主要負責 基礎設施團隊(網路基礎設施) · 協同 外部(外部)
- 基礎設施團隊要做的事
- 與多家電信業者互連(multihoming),監控各電信業者的 ping 以找出繞路的業者,並與電信業者協調路由。
- 外部要做的事
- 請該電信業者調整路由。
- 數值參考
- 即使在同一個國家內,ping 也可能因路徑不同而相差兩三倍。
- 圖表上
- 一開始就一直偏高 · RTT(依電信業者/ASN)
- 查看位置
- 比較各電信業者(ASN)的 RTT,並用較慢業者的 RIPE Atlas probe 或向玩家取得的 traceroute、mtr,查看路徑經過哪些國家與城市。IPv4 與 IPv6 分開量測(mtr -4、-6)
- 符合的跡象
- 同一地區只有特定電信業者一直偏高,路徑中有經過其他國家或遠方城市的區段。或只有其中一種位址類型(IPv4 或 IPv6)偏高
- 不符合的跡象
- 所有電信業者都差不多高時是「傳播延遲(物理距離)」,只在晚上偏高時是「尖峰時段 peering 區段壅塞」
- 確認方式
- 用基礎設施工具確認(不需要遊戲程式碼)
- 深入了解
- IPv4 與 IPv6 的路徑是分開決定的,同一台伺服器也可能只有其中一邊繞遠路而變慢(2016 年 APNIC 量測:同一家電信業者內,出現了 IPv6 比 IPv4 慢 15、25、75ms 的不同使用者群)。採用 Happy Eyeballs(RFC 8305,IPv6 與 IPv4 哪邊先連上就用哪邊)的應用程式會先嘗試 IPv6,只要 IPv6 在建議值 250ms 內連上,就不會再嘗試 IPv4。因此即使 IPv6 稍慢,也很容易走那條路徑。只有特定電信業者 ping 偏高時,請把 IPv4 與 IPv6 分開量測。
- 實際案例
- Riot Games 2015: 繞遠路的 League of Legends 流量與 Riot Direct
出處
- Quantifying the Causes of Path Inflation (SIGCOMM 2003) ACM
分析 65 家 ISP:ISP 之間的 peering 政策與跨網域路由讓路徑大幅拉長 - The Internet at the Speed of Light (HotNets 2014) ACM
實際經過路由器的路徑,中位數約為光纖直線距離的 1.5 倍,也有相近兩點之間的封包繞到地球另一端的案例(hairpinning) - Probe Selection (RIPE Atlas REST API) RIPE NCC
依國家、地區、ASN、位址區段挑選 RIPE Atlas 量測的 probe,執行 ping、traceroute - mtr(8) manual page source mtr
用 -4、-6 只走 IPv4 或 IPv6 量測路徑 - RFC 8305: Happy Eyeballs Version 2: Better Connectivity Using Concurrency IETF
位址或位址類型(IPv4、IPv6)可能因網路而被封鎖、故障或變慢,先嘗試 IPv6,到下一次連線嘗試前建議等待 250ms - IPv6 Performance – Revisited APNIC
比較同一批雙堆疊(dual stack)使用者的 IPv6 與 IPv4 往返時間:接取網路有時會以完全不同的方式處理 IPv6 封包,同一家電信業者內出現 IPv6 慢 15、25、75ms 的群組
相關原因
同一層:L4 網際網路線路
同一症狀(輸入延遲)在其他層的原因
查看含圖解與實驗的完整版卡片