Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

PMTUD(ピーエムティーユーディー)とは | 意味や読み方など丁寧でわかりやすい用語解説

PMTUD(ピーエムティーユーディー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

パスMTU発見 (パスエムティーユーはっけん)

英語表記

PMTUD (ピーエムティーユーディー)

用語解説

PMTUD(Path MTU Discovery)とは、ネットワーク通信において、送信元から宛先までの経路(パス)上で許容されるIPパケットの最大サイズ(Path MTU)を動的に発見するための技術である。異なる種類のネットワーク機器や回線を組み合わせて構成されるインターネットにおいて、効率的で安定したデータ通信を実現するために非常に重要な役割を担っている。

詳細

ネットワーク上でデータをやり取りする際、データはIPパケットと呼ばれる単位に分割されて送信される。このIPパケットが一度に運べるデータの最大サイズは、通過するネットワーク機器や回線の種類によって異なる。この最大サイズをMTU(Maximum Transmission Unit)と呼ぶ。例えば、多くのイーサネット環境ではMTUが1500バイトに設定されているが、PPPoE接続などでは1492バイトのように、これより小さなMTUが設定される場合もある。

送信元ホストが、宛先までの経路上のどの区間よりも大きなパケットを送信しようとすると、問題が発生する。この時、途中にあるルーターは自身のMTUを超過するパケットを受け取ると、そのパケットをより小さなパケットに分割して転送する。この処理をフラグメンテーション(断片化)と呼ぶ。フラグメンテーションが発生すると、パケットを分割するルーターや、分割されたパケットを再組み立てする宛先ホストに余計な処理負荷がかかる。さらに、分割されたパケットのうち一つでも失われると、元の完全なデータが再構成できなくなり、通信効率の低下や通信の切断につながる恐れがある。特にUDPのようなコネクションレス型のプロトコルでは、フラグメンテーションは信頼性を著しく損なう原因となる。

このような問題を回避し、常に最適なサイズのパケットで通信を行うためにPMTUDが利用される。PMTUDの基本的な仕組みは以下の通りである。

まず、データを送信するホストは、送信するIPパケットのヘッダにある「Don't Fragment(DF)ビット」をオンに設定する。このDFビットは「このパケットをフラグメント化してはならない」という指示をルーターに与えるためのものだ。

DFビットがオンのパケットが、自身のMTUよりも小さなMTUを持つネットワーク区間を通過しようとすると、その区間を担当するルーターはそのパケットをフラグメント化することができないため、パケットを破棄する。パケットを破棄したルーターは、元の送信元ホストに対してICMP(Internet Control Message Protocol)メッセージを送信する。具体的には、「Destination Unreachable」(宛先到達不能)という種類で、「Fragmentation Needed and DF set」(フラグメント化が必要だがDFビットが設定されている)という詳細コードを持つメッセージを送る。このICMPメッセージには、そのルーターが持つインターフェースのMTU値も含まれている。

ICMPメッセージを受信した送信元ホストは、自身の送信MTUが大きすぎたことを認識し、以降のパケットサイズを、ルーターから通知されたMTU値以下に小さく調整する。そして、調整されたサイズのパケットに再度DFビットをオンにして送信する。このプロセスが、送信元から宛先までの経路全体で繰り返され、最終的にパケットがフラグメント化されることなく、かつ破棄されることもなく宛先まで到達できる最小のMTU値(Path MTU)が発見される。一度Path MTUが判明すれば、それ以降の通信はそのPath MTUに合わせて行われるため、効率的で安定したデータ転送が可能となる。

しかし、PMTUDには課題も存在する。ネットワーク上に設置されたファイアウォールが、セキュリティ上の理由からICMPメッセージをブロックするように設定されている場合がある。このような状況でICMPメッセージが送信元ホストに到達しないと、送信元ホストは自身のパケットサイズを調整することができず、DFビットがオンのまま大きなパケットを送り続けることになる。その結果、途中のルーターでパケットが繰り返し破棄され、宛先までデータが全く届かない「PMTUDブラックホール」と呼ばれる通信障害が発生する可能性がある。これは、データ通信が途中で行き詰まってしまう深刻な問題である。

TCPプロトコルを利用する通信では、PMTUDとは別にMSS(Maximum Segment Size)という仕組みも使われる。MSSはTCPセグメントのペイロード(純粋なデータ部分)の最大サイズを指し、TCPコネクション確立時に両端のホストが互いにMSS値を通知し合うことで、自身のMTUを超えないデータサイズを事前に調整できる。ルーターがこのMSS値を書き換える(MSSクランプ)ことで、経路上のMTUに合わせて通信を最適化する機能も持つ。MSSはTCP通信においてフラグメンテーションを防ぐのに有効だが、これはTCPに特化した仕組みであり、UDPなど他のプロトコルには適用できない。そのため、全てのIP通信においてフラグメンテーション回避と効率的な通信を実現するには、PMTUDが不可欠である。

特にIPv6においては、ルーターによるフラグメンテーションが原則として行われず、送信元ホストのみがフラグメンテーションを許容されているため、PMTUDまたはそれに類する仕組みの重要性がさらに高まっている。IPv6環境では、PMTUDが正しく機能しない場合、大きなパケットを送信するアプリケーションの通信が完全に停止する可能性が高い。こうした背景から、PMTUDは現代のインターネットインフラにおいて、円滑なデータ通信を支える基盤技術の一つとして位置づけられている。

関連コンテンツ