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

ゲームラグ白書 › TCP再送の根本原因

物理エラー(不良ケーブル・光モジュール・コネクター) Bit errors: bad cable, optics, dirty fiber

原因ID rt-physical · 主担当 インフラチーム・ネットワークインフラ · 副担当 インフラチーム・サーバーインフラ, 外部・外部

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

ケーブルの損傷、ほこりの付いた光コネクター、寿命を迎えた光モジュールはビットエラーを起こし、壊れたパケットは機器が黙って破棄します。

なぜ ケーブル・光モジュール・コネクターの不良でビットが反転 → すると チェックサム(CRC)が合わないパケットを機器が破棄 → 画面では その経路を通る人だけが継続的に一瞬止まっては早送り、時間帯とは無関係

症状
フリーズ, 早送り, ワープ
要因
パケットロス
誰に起きるか
特定の場所・チャンネル, 同じ家
いつ
常に
担当
主担当 インフラチーム・ネットワークインフラ · 副担当 インフラチーム・サーバーインフラ, 外部・外部
インフラチームの対応
CRCエラーは壊れた方向の受信側で計上されるため、両端とも確認。ネットワーク:機器ポートのCRC・入力エラーカウンターを確認、光信号の強度を点検(スイッチの光モジュール情報)、光コネクターの清掃、ケーブル・光モジュールの交換。サーバー機器・OS:サーバーのethtool -Sのrx_crc_errors(ドライバーによって名前が少し違う)を確認、光信号の強度を点検(ethtool -m)、サーバー側のケーブル・NICの交換。
外部の対応
ユーザーの家の区間ならLANケーブル・ルーターの交換を案内、通信事業者の回線区間なら通信事業者に回線の点検を依頼。
数値の目安
パケットロスが0.1%でも、ゲームのパケット1,000個に1回です。その経路を通る人が数十人いれば、数秒ごとに誰かがカクッと止まります。ビットエラーは大きなパケットほど起きやすくなります。
グラフでは
一部だけ高い · ポートごとのCRCエラー数、サーバー・ポートごとの再送率
確認箇所
リンク両端のCRCカウンターを確認。サーバーはethtool -Sのrx_crc_errorsやip -s -s linkのcrc、スイッチはポートのFCSエラー(dot3StatsFCSErrors)・入力エラー(ifInErrors)。光リンクならethtool -mとスイッチの光モジュール情報で受信光強度を確認
該当する場合
1つのポートのCRCエラーが時間帯に関係なく継続的に増え、そのポートを通るサーバー・接続だけ再送率が高い。同じ種類の他のリンクより受信光強度が低い
該当しない場合
CRCは変わらないのに出力破棄だけが増えるならキューあふれ(「送信バーストによる浅いバッファのあふれ」「ボトルネックでのキューあふれ」)。片側のレイトコリジョンともう片側のCRCがそろって増えるなら「デュプレックスの不一致」
確認手段
インフラのツールで確認(ゲームコード不要)

出典

  1. Interface statistics Linux kernel
    rx_crc_errorsは受信側のインターフェースがCRCエラーとして数えたパケット数、ip -s -s linkとethtool -Sで確認
  2. ethtool(8) — Linux manual page ethtool
    -SでNIC・ドライバーごとの統計、-mで光モジュール(SFP+・QSFP)のEEPROMと光診断情報を確認
  3. RFC 3635: Definitions of Managed Objects for the Ethernet-like Interface Types IETF
    スイッチポートのFCSエラー(dot3StatsFCSErrors)、このエラーは入力エラー(ifInErrors)に合算

あわせて読みたい原因

同じ層:TCP再送の根本原因

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

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