用語辞典・IPv6・接続方式

パスMTU探索

パスMTU探索とは

パスMTU探索(経路MTU探索)は、送信元から宛先までの経路で、断片化せずに運べるIPパケットの最大サイズを調べ、送信サイズを合わせる仕組みです。英語の正式名称はPath MTU Discovery(パス・エムティーユー・ディスカバリー)、略称はPMTUD(ピーエムティーユーディー)です。この最大値をPath MTU(経路MTU)といいます。

一つの経路には、Ethernet、トンネル、事業者網など異なるリンクが含まれます。Path MTUは、その中で最も小さいMTUに制約されます。送信元がそれより大きなパケットを送り続けると、途中で分割が必要になったり、破棄されたりします。

PMTUDは回線速度を測る機能ではなく、一本のパケットをどこまで大きくできるかを調べる機能です。経路が変われば、同じ宛先でも適切な値が変わることがあります。

最も小さな出口を通れる大きさへ送信元が調整する途中の装置からの通知、または到達結果を手掛かりにする
幅の異なる複数のネットワーク区間のうち最も狭い区間で大きなパケットが止まり、通知を受けた送信元が小さく調整して再送する経路MTU探索の図解
図1Path MTUは送信端末のインターフェースだけでは決まりません。宛先までに通過するすべてのリンクのうち、最小のMTUが上限になります。

大きすぎると分かったら、送信単位を下げて記憶する

推定、通知、調整、再確認の循環経路は変わるため、一度決めた値を永久に固定しない
  1. 1
    初期値で送る

    送信インターフェースのMTUや、過去に記憶したPath MTUを候補にする

  2. 2
    大きすぎることを知る

    ICMPの通知、または試験パケットが届かなかった結果を手掛かりにする

  3. 3
    送信サイズを下げる

    トランスポート層が一度に渡す量も調整し、通過できる大きさへ合わせる

  4. 4
    一定時間後に再確認

    経路変更で上限が増減する可能性があるため、キャッシュを更新する

図2実装は同じ値を宛先ごと、経路ごと、接続ごとなどに記憶します。詳しい管理単位や再試行時間はOSとプロトコル実装で異なります。

IPv6では、途中のルーターはパケットを分割しない

IPv6では、転送中のルーターが大きなパケットを断片化しません。次のリンクへ出せない場合、ルーターはパケットを破棄し、送信元へICMPv6Packet Too Bigメッセージを返します。送信元は通知に含まれるMTUを基にサイズを下げます。

IPv4の古典的なPMTUDでは、送信側がDF(Don't Fragment)を指定し、断片化が必要なルーターからICMP Destination Unreachableの通知を受けます。IPv4は途中で断片化できる場合もありますが、PMTUDは断片化を避けて効率と信頼性を保つために使われます。

ICMPが遮断されると、大きな通信だけ止まることがある

大きすぎるというICMP通知がファイアウォールなどで捨てられると、送信元はサイズを下げるきっかけを失います。小さな要求は通るのに、画像の転送や暗号化通信の途中で止まるような現象はPMTUブラックホールの候補です。

これを補うPLPMTUD(Packetization Layer Path MTU Discovery/パケタイゼーション・レイヤー・パス・エムティーユー・ディスカバリー)は、TCPなどのパケット化層が異なる大きさのプローブを送り、到達確認から安全なサイズを探します。さらにRFC 8899のDPLPMTUDは、データグラム型トランスポートにも使える手順を定めています。

トンネルでは、内側に使えるMTUが小さくなる

トンネルは外側のヘッダーを追加するため、外側リンクが同じMTUなら内側パケットの上限が下がります。入口がその差を反映しない、あるいは出口からの通知が送信元まで適切に戻らないと、トンネル区間でだけ大きな通信が失敗します。

Pingが成功することだけでは、すべてのサイズが通る証明になりません。調査では小さなパケットと大きなパケットの違い、ICMP通知、トンネル追加分、MSS調整を切り分けます。

仕様の確認資料:RFC 8201「Path MTU Discovery for IP version 6」RFC 1191「Path MTU Discovery」RFC 4821「Packetization Layer Path MTU Discovery」RFC 8899「Datagram PLPMTUD」

関連用語