游戏卡顿白皮书 › L4 公网链路
路由绕行 Suboptimal routing
原因 ID isp-routing · 主责 运维团队·网络运维 · 配合 外部·外部
在含图示和实验的完整版中打开此卡片 →
受运营商之间互联协议的限制,离得近的服务器也可能要绕远路才能到。
起因 自己的运营商和服务器所在的运营商之间没有直连 → 结果 绕经其他国家或城市,距离和经过的设备都增加 → 画面表现 只有特定运营商的用户 ping 特别高
- 症状
- 操作延迟
- 因素
- 延迟
- 谁会遇到
- 特定地区/运营商
- 何时出现
- 一直
- 负责方
- 主责 运维团队·网络运维 · 配合 外部·外部
- 运维团队要做的事
- 与多家运营商互联(多线接入),按运营商监控 ping,找出绕路的运营商,与运营商协商调整路由。
- 外部要做的事
- 请相关运营商调整路由。
- 数值参考
- 即使在同一个国家内,不同路径的 ping 也可能相差两三倍。
- 监控图上
- 一直偏高 · RTT(按运营商/ASN)
- 查看位置
- 按运营商(ASN)比较 RTT,用慢的运营商的 RIPE Atlas 探针或玩家提供的 traceroute、mtr 结果,看路径经过哪些国家和城市。IPv4 和 IPv6 分开测(mtr -4, -6)
- 确认依据
- 同一地区只有特定运营商一直偏高,路径中有绕经其他国家或远方城市的跳。或者只有一个地址族(IPv4 或 IPv6)偏高
- 排除依据
- 所有运营商都差不多高,看“传播延迟(物理距离)”;只在晚上高,看“高峰时段对等互联链路拥塞”
- 确认手段
- 运维工具即可确认(无需游戏代码)
- 深入了解
- IPv4 和 IPv6 的路由各自独立,同一台服务器也可能只有一边绕远路而变慢(2016 年 APNIC 测量:同一运营商内单独出现了几组 IPv6 比 IPv4 慢 15、25、75 ms 的用户)。采用 Happy Eyeballs(RFC 8305,IPv6 和 IPv4 谁先连上就用谁)的应用会先尝试 IPv6,IPv6 在建议值 250 ms 内连上就不再尝试 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 之间的对等互联策略和域间路由会让路径大幅变长 - The Internet at the Speed of Light (HotNets 2014) ACM
实际路由器路径的长度中位数约为光纤直线距离的 1.5 倍;也有相邻两地之间的数据包绕到地球另一侧的情况(发夹路由,hairpinning) - Probe Selection (RIPE Atlas REST API) RIPE NCC
RIPE Atlas 测量可按国家、地区、ASN、地址段挑选探针,执行 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,到下一次连接尝试之前建议等待 250 ms - IPv6 Performance – Revisited APNIC
对比同一批双栈用户的 IPv6 与 IPv4 往返时间:有的接入网处理 IPv6 数据包的方式完全不同,同一运营商内出现了几组 IPv6 慢 15、25、75 ms 的用户
相关原因
同一层:L4 公网链路
其他层中同样导致“操作延迟”的原因
查看含图示和实验的原卡片