遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置
Wi-Fi ↔ LTE/5G 切換 Network switch changes IP
原因 ID co-netswitch · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發), 基礎設施團隊(網路基礎設施)
在含圖解與實驗的完整版中開啟卡片 →
走出家門時 Wi-Fi 斷掉、改用 LTE/5G,自己的 IP 位址會改變,原本的連線就此失效。
為什麼 Wi-Fi 訊號變弱,切換到行動網路 → 於是 自己的 IP 位址改變,用舊位址建立的連線無法再收送資料 → 畫面上 短暫停住後斷線,或重新連線
- 症狀
- 定格, 斷線
- 因素
- 遺失
- 誰會遇到
- 只有我
- 何時
- 移動中/切換地圖時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發), 基礎設施團隊(網路基礎設施)
- 遊戲開發團隊要做的事
- 伺服器:位址改變時也用 session token 接續成同一位玩家,並立刻清理舊位址的連線;評估位址改變也能延續連線的協定(QUIC 的連線遷移等)。用戶端:偵測到網路切換時,不要等心跳逾時,直接用 session token 重新連線。
- 基礎設施團隊要做的事
- 使用 QUIC 連線遷移時,把負載平衡器設定成依連線 ID 選擇伺服器,不依位址與 port(依位址與 port 選擇時,位址改變後的封包會被送到別台伺服器)。
- 圖表上
- 連線同時大量中斷 · 斷線與重新連線次數、重新連線時改變的 IP
- 查看位置
- 在伺服器連線 log 中找出同一個 session token 從不同 IP 重新連線的紀錄,並對照用戶端預設網路變更回呼(registerDefaultNetworkCallback)的時間
- 符合的跡象
- 斷線後重新連線的 IP 從 Wi-Fi(家用線路)網段變成行動電信業者網段,或反過來,且在那之前剛收到網路切換回呼
- 不符合的跡象
- IP 沒變卻斷線時,是「基地台換手(移動中)」或「行動網路訊號弱、收訊死角」
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Read network state Android (Google)
預設網路改變後,新連線會走新網路,舊網路上的連線最後會被強制中斷;用 registerDefaultNetworkCallback 偵測切換 - RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport IETF
以連線 ID 讓 IP 位址與 port 改變時連線仍能維持(第 9 章);只依位址與 port 分流的負載平衡器,可能把位址改變後的封包送到別台伺服器(5.2.3 節) - RFC 9293: Transmission Control Protocol (TCP) IETF
TCP 連線由兩端的 socket(位址、port)組合來識別
相關原因
同一層:L2 用戶端 OS 與裝置
同一症狀(定格)在其他層的原因
查看含圖解與實驗的完整版卡片