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

ゲームラグ白書 › 一部のユーザーだけに起きる問題

IP・端末基準のセッション識別バグ Session keyed by IP or machine ID

原因ID pt-session-key · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発

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

サーバーや中継サーバーが接続をIPや端末IDで区別していると、同じPC(同じグローバルIP)の2つのクライアントを1人として認識します。

なぜ セッションテーブルをIP、またはIP+端末IDで作っている → すると 2つ目のクライアントの情報が1つ目のセッションに上書きされるか混ざる → 画面では 片方はNPCが表示されず、もう片方は切断されるかほかの人の情報を受け取る

症状
表示されない・ゴースト, 切断
要因
パケットロス
誰に起きるか
同じPCの片方のクライアントだけ, 同じ家, 特定の地域・ISP
いつ
接続直後・メンテ明け
担当
主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
サーバー:サーバー・中継サーバーとも接続ごとに一意のセッショントークンで区別、同じ家(ルーターのNATの内側)の複数人や、通信事業者が1つのIPを複数の契約者に割り当てるモバイル回線(CGNAT)のユーザーも同じ問題に遭うので必ず修正。クライアント:起動したクライアントごとに個別に受け取ったセッショントークンを使う。
グラフでは
一部だけ高い · 同じグローバルIPの同時セッション数、セッション上書きの数
確認箇所
サーバー・中継サーバーのログに、セッション検索に使ったキー、セッショントークン、クライアントのIP・ポートを記録し、同じIPから2つ目の接続が来た瞬間に既存のセッションが変わったかを確認。同じPCで2つのクライアントを順に起動すると再現する
該当する場合
2つ目のクライアントが接続した瞬間に1つ目のセッションのアドレスやキャラクター情報が変わり、同じルーターやモバイル回線(CGNAT)の内側にいるほかのユーザーでも同じ切断が見られる
該当しない場合
同じIPの2つのセッションが別々のトークンで個別に維持されているなら、この原因ではない。2つのプロセスが同じローカルポートを使っているなら、固定UDPポートの衝突
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. RFC 6269: Issues with IP Address Sharing IETF
    NAT・CGNで複数の契約者が1つのIPv4アドレスを共有すると、IPだけではユーザーを区別できない

あわせて読みたい原因

同じ層:一部のユーザーだけに起きる問題

同じ症状(表示されない・ゴースト)を起こすほかの層の原因

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