あなたのIPv4アドレス:
オペレーティングシステム:
プロバイダー:

MTUとは?パケットサイズと経路上の問題を解説

MTUとは、あるインターフェースやリンクが、その層で分割せずに送れるネットワークパケットの最大サイズです。イーサネットでは1500バイトが一般的ですが、トンネルなどのリンクではそれより小さいこともあります。通信は、実際に通る経路の制限の範囲内で成り立たなければなりません。

インターフェースのMTUと経路MTUは別物

ネットワークカードに表示される値はローカルのリンクについてのもので、リモートサーバーまでのすべてのホップに当てはまるわけではありません。VPNなどのトンネルは外側のヘッダーを付け加えるため、そのぶん容量を消費します。内側のパケットがすでに外側のリンクで許される最大サイズに達していると、カプセル化したパケットは大きすぎることになります。経路MTUとは、特定の経路を通過できる最大のIPパケットのサイズです。宛先によって異なることがあり、行きと帰りで違う可能性もあります。

MTUはファイルサイズの上限でも、回線速度でもありません。アプリケーションは大きなファイルも転送でき、その際はトランスポート層がデータを適切なセグメントに分割します。TCPの最大セグメントサイズ(MSS)は、1つのTCPセグメントで運ぶデータ量を指し、IPとTCPのヘッダーにも領域が必要なため、該当するMTUより小さくなります。サイズを超えたパケットの扱いは、IPv4とIPv6で異なります。

エンドポイントが上限を見つける仕組み

経路MTU探索(Path MTU Discovery)は、パケットが大きすぎることを知らせる信号を利用します。IPv4では、フラグメント化が禁止されているパケットについて、ルーターがフラグメント化が必要であると通知できます。IPv6では、中継ルーターはパケットをフラグメント化せず、ICMPv6のPacket Too Bigを送ることができます。これらのメッセージをブロックすると、小さなリクエストは通るのに、大きな応答だけが止まってしまうという不可解な障害が起きることがあります。実装によっては、ほかのプローブ手法で通るサイズを探すこともあります。

IPv4の経路MTU探索はRFC 1191に、IPv6についてはRFC 8201に規定されています。ヘッダーのサイズやトンネルの挙動が影響するため、1500がエンドツーエンドで通用する値とは限りません。実際の経路を考慮せずに、覚えている数字からMSSを計算するのは避けましょう。

設定を変える前に原因を調べる

VPN経由のときだけ失敗する、あるいはサイトの一部は表示されるのに大きなデータの転送が止まる、という場合は、トンネルを使うときと使わないときで同じ作業を比べてみます。インターフェース、宛先、症状を記録しておきましょう。ペイロードのサイズを変え、フラグメント禁止のオプションを付けたpingのプローブが役立つこともありますが、コマンドの書き方はシステムによって異なり、ICMPがフィルタリングされている場合もあります。疎通確認ツール(ping・traceroute)の結果は、決定的な判定ではなく、裏付けのひとつとして使ってください。

仮説もなしに、すべての機器のMTUを下げるのはやめましょう。トンネルの設定と関連するICMPメッセージを確認し、設定は一度にひとつずつ変えて、アプリケーションを再テストします。MTUを必要以上に小さくすると、ヘッダーのオーバーヘッドが増えて効率が落ちることがあります。ボトルネックが自分の管理できない範囲にある場合は、再現できる具体例をプロバイダーに伝えましょう。