パスMTU探索

読み:ぱすえむてぃーゆーたんさく / 英語表記:Path MTU Discovery

送信元から宛先までの経路上で、途中で分割されずに通れるパケットの最大の大きさ(パスMTU)を調べる仕組み。

イマシルちゃんの解説

通信に使う回線ごとに、一度に通せるパケットの大きさには上限があるよ。
パスMTU探索は、送信先までの経路で分割せずに通せる最大サイズを調べるIP通信の仕組みなんだ。
例えばIPv4では、途中での分割を禁止するDFビットを立ててパケットを送るよ。
大きすぎて次の回線へ渡せないルータは、そのパケットを捨てて、エラーを伝えるICMPの通知で通せるサイズを知らせるの。
送信元はその知らせに合わせて、送るパケットを小さくするんだ。
こうして経路に合う大きさに調整することで、サイズ超過による廃棄を避けてデータを運びやすくなるよ。

より深い解説

定義

MTU(Maximum Transmission Unit)は、1つの回線で一度に送れるパケットの最大長である(イーサネットでは1,500バイト)。経路上の各回線のMTUのうち最も小さいものをパスMTUといい、それを調べる仕組みをパスMTU探索(PMTUD)という。

IPv4での仕組み(RFC 1191)

  1. 送信元は、IPヘッダーのDF(Don't Fragment)ビットを立てて、パケットを送る
  2. 次の回線のMTUより大きいパケットを受け取ったルータは、分割せずに捨て、ICMPの宛先到達不能(タイプ3、コード4:フラグメントが必要)を、次の回線のMTUの値を添えて送信元に返す
  3. 送信元は、その値に合わせてパケットを小さくして送り直す

IPv6での仕組み(RFC 8201)

IPv6では、経路上のルータはパケットを分割しない(分割できるのは送信元だけ)。大きすぎるパケットを受け取ったルータは、パケットを捨ててICMPv6のPacket Too Big(タイプ2)を返す。送信元はそこに書かれたMTUに合わせて送り直す。

パスMTUを決めるのはこのメッセージで、近隣探索プロトコルのメッセージではない。なお、IPv6ではすべての回線が少なくとも1,280バイトのMTUを持つことが求められている。

ブラックホール問題

途中のファイアウォールがICMPやICMPv6をすべて遮断していると、パスMTU探索のためのメッセージが送信元に届かない。送信元は大きなパケットを送り続け、それがすべて捨てられるため、「接続はできるのに、大きなデータだけ届かない」という障害になる。これをPMTUDブラックホールという。

対策には次のようなものがある。

PPPoEやトンネル(IPsec、GREなど)を使う回線は、ヘッダーが増えるぶんMTUが1,500より小さくなるため、この問題が起きやすい。

実際の試験ではここに出る!全3問

ネットワークスペシャリスト

午前Ⅱ
午後Ⅱ

この用語が出てくる記事

↑