ゲームラグ白書 › L2 クライアントのOS・端末
Wi-Fi ↔ LTE・5Gの切り替え Network switch changes IP
原因ID co-netswitch · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発, インフラチーム・ネットワークインフラ
図と実験のあるメインページでこのカードを開く →
家の外に出てWi-Fiが切れ、LTE・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接続は、両端のソケット(アドレス・ポート)のペアで識別される
あわせて読みたい原因
同じ層:L2 クライアントのOS・端末
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る