游戏卡顿白皮书 › L2 客户端操作系统与设备
Wi-Fi ↔ 4G/5G 切换 Network switch changes IP
原因 ID co-netswitch · 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发, 运维团队·网络运维
在含图示和实验的完整版中打开此卡片 →
走出家门时 Wi-Fi 断开、切换到 4G 或 5G,自己的 IP 地址会改变,原有连接随之失效。
起因 Wi-Fi 信号变弱,切换到移动网络 → 结果 自己的 IP 地址改变,用旧地址建立的连接无法再收发数据 → 画面表现 画面短暂卡住后掉线或重连
- 症状
- 卡住, 掉线
- 因素
- 丢包
- 谁会遇到
- 只有我
- 何时出现
- 移动中/切换地图时
- 负责方
- 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发, 运维团队·网络运维
- 研发团队要做的事
- 服务器:用会话令牌在地址变化后仍识别为同一玩家并接续,旧地址的连接立即清理,评估地址变化后仍能保持连接的协议(如 QUIC 的连接迁移)。客户端:检测到网络切换时,不等心跳超时,直接用会话令牌重连。
- 运维团队要做的事
- 使用 QUIC 连接迁移时,把负载均衡器设置为按连接 ID 选择服务器,不按地址和端口选择(按地址和端口选择时,地址变化后的数据包会被发到别的服务器)。
- 监控图上
- 连接成批断开 · 掉线、重连次数,重连时变化的 IP
- 查看位置
- 在服务器连接日志中查找同一会话令牌用不同 IP 重连的记录,并与客户端默认网络变更回调(registerDefaultNetworkCallback)的时刻对照
- 确认依据
- 掉线后重连的 IP 从 Wi-Fi(家庭宽带)网段变为移动运营商网段,或者反过来,并且在此之前刚收到网络切换回调
- 排除依据
- IP 没变也掉线,看“基站切换(移动中)”或“手机信号弱/信号盲区”
- 确认手段
- 需要游戏服务器/客户端的日志和指标
出处
- Read network state Android (Google)
默认网络变化后,新连接走新网络,旧网络上的连接最终会被强制断开;用 registerDefaultNetworkCallback 检测切换 - RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport IETF
靠连接 ID,IP 地址和端口变化后也能保持连接(第 9 节);只按地址和端口分流的负载均衡器,可能把地址变化后的数据包发到别的服务器(5.2.3 节) - RFC 9293: Transmission Control Protocol (TCP) IETF
TCP 连接由两端的 socket(地址、端口)对来标识
相关原因
同一层:L2 客户端操作系统与设备
其他层中同样导致“卡住”的原因
查看含图示和实验的原卡片