ゲームラグ白書 › L5 データセンターのネットワーク機器
MTUの不一致(大きなパケットだけ消える) MTU black hole
原因ID dc-mtu · 主担当 インフラチーム・ネットワークインフラ · 副担当 インフラチーム・サーバーインフラ, ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
途中の区間のMTU(一度に送れるサイズ)が小さくなっているのにサイズ超過の通知がブロックされると、大きなパケットだけが消え続けます。
なぜ トンネル・VPNの区間でMTUが小さくなる → すると サイズ超過の通知(ICMP)がファイアウォールでブロックされ、送信側が気づかない → 画面では インベントリ・キャラクター一覧のような大きな画面を開いたときだけフリーズした後に切断
- 症状
- フリーズ, 切断, 接続不可・無限ロード
- 要因
- パケットロス
- 誰に起きるか
- 特定の地域・ISP, 自分だけ
- いつ
- 特定の操作をしたとき, 接続直後・メンテ明け
- 担当
- 主担当 インフラチーム・ネットワークインフラ · 副担当 インフラチーム・サーバーインフラ, ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- サーバー側で直接下げるなら、ソケットの最大セグメントサイズ(TCP_MAXSEG)を設定(ゲームのコードでメッセージを細かく分けるだけでは防げない)、UDPパケットは1,200バイト以下に保つ。
- インフラチームの対応
- ネットワーク:トンネル区間でTCPのパケットサイズを小さくする(MSSの調整)、ファイアウォール・クラウドのネットワークACLでサイズ超過の通知(ICMP)を許可。サーバー機器・OS:サーバーのファイアウォール・クラウドのセキュリティグループでもサイズ超過の通知(ICMP)を許可、サーバーカーネルのMTU探索(tcp_mtu_probing=1)を有効化(数秒止まった後にようやく働く最後のセーフティネット)。
- 数値の目安
- 通常は1,500バイトで、トンネルを通ると1,400前後に小さくなります。
- グラフでは
- 一部だけ高い · 地域・通信事業者別の切断、大きな応答の失敗
- 確認箇所
- 問題のユーザーのPCからサーバーへ、フラグメント禁止の印(DF)を付けたpingをサイズを変えながら送る。Windowsはping /f /l 1472 SERVER_IP、Linuxはping -M do -s 1472 SERVER_IP(1,472はMTU 1,500からIPヘッダー20バイトとICMPヘッダー8バイトを引いた値)。サイズを小さくしながら通る最大サイズを探し、サーバー側のセキュリティグループ・ファイアウォールがICMPのサイズ超過通知(Fragmentation Needed)を許可しているか確認
- 該当する場合
- 小さいpingは通るのに1,472バイトのDF付きpingは失敗し(応答なし、またはフラグメント化が必要というエラー)、通る最大サイズが1,400前後と小さい。同じ地域のユーザーが大きな画面を開いたときだけフリーズする
- 該当しない場合
- 1,472バイトのDF付きpingも問題なく通るなら経路MTUの問題ではない。小さいpingも通らないならICMP自体がブロックされているため、この方法では判断できない
- 確認手段
- ユーザー側の環境で確認
出典
- RFC 2923: TCP Problems with Path MTU Discovery IETF
ファイアウォールがICMP(Fragmentation Needed)をブロックすると経路MTU探索が失敗し、大きなパケットだけが消え続ける(ブラックホール)、pingや小さな通信は通るため診断が難しい - Maximum transmission unit and maximum segment size Cloudflare
インターネットの経路MTUは1,500、GREトンネルを通ると1,476、TCP MSSは1,436以下に制限することを推奨 - IP Sysctl Linux kernel
tcp_mtu_probing=1は普段はオフで、ICMPブラックホールを検知したときにTCPの経路MTU探索をオンにする - ping(8) — Linux manual page iputils
-M doはDFを付けて経路MTUより大きいパケットを拒否、-sでデータサイズを指定(デフォルトは56バイトで、これにICMPヘッダー8バイトが加わる) - ping Microsoft
/fはDFを付けて経路MTUの問題を探すのに使い、/lでデータサイズを指定
あわせて読みたい原因
同じ層:L5 データセンターのネットワーク機器
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る