한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

ゲームラグ白書 › 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が変わらないのに切れたなら「基地局のハンドオーバー(移動中)」か「モバイル電波の弱さ・不感地帯」
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. Read network state Android (Google)
    デフォルトネットワークが変わると、新しい接続は新しいネットワークを使い、以前のネットワークの接続は最終的に強制的に切られる。registerDefaultNetworkCallbackで切り替えを検知
  2. RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport IETF
    コネクションIDにより、IPアドレス・ポートが変わっても接続を維持(9章)。アドレス・ポートだけで振り分けるロードバランサーは、アドレスが変わったパケットを別のサーバーに送ってしまう可能性がある(5.2.3節)
  3. RFC 9293: Transmission Control Protocol (TCP) IETF
    TCP接続は、両端のソケット(アドレス・ポート)のペアで識別される

あわせて読みたい原因

同じ層:L2 クライアントのOS・端末

同じ症状(フリーズ)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る