MTUは1回の転送で送信できるパケットの最大容量を示す。イーサネットやIP、CIFSなど様々な階層のプロトコルで独立して定められており、例えばイーサネットのMTUは、規格上1500バイトである。IPでは個々のネットワークごとに設定が可能だ。このため、パソコンなどで「MTUを設定する」という場合、一般にIPのMTUを指す。

 1回の転送ごとのオーバーヘッドがあるので、MTUは基本的に大きいほうが通信効率は高い。例えばイーサネットを高速化する方策として、MTUを大きくした「ジャンボフレーム」がある。

 一方、むやみにMTUの値を上げると、通信中にエラーが発生する確率も高まる。品質が低い回線を使う場合は、MTU値が小さいほうが通信効率が高くなる。イーサネットのMTU値が1500バイトなので、プロバイダーの多くがIPのMTUをこれよりやや小さい程度の値に設定している。

 IPネットワークで、MTU値の大きいネットワークから小さいネットワークにパケットを転送する場合、ルーターが転送先の回線に設定されたMTU値を参照し、パケットを分割処理する()。IPパケットのヘッダー情報が付け替えられ、分割されたパケットであることを示す情報が付与される。この情報を基に、受信側のパソコンなどがパケットを組み立て直して、正しいデータにする。

図●送信先のMTUに合わせて適切な大きさにパケットを分割
図●送信先のMTUに合わせて適切な大きさにパケットを分割
[画像のクリックで拡大表示]

 ただし最近のIPネットワークでは、パケットを分割するよりも、経路を事前に探索して最小のMTU値を取得しておき、パケット分割を必要としない状態で通信するのが一般的だ。IPパケットの分割はルーターの負荷を高めるうえ、転送効率の低下を招くためだ。

 事前に最小MTU値を取得するには、「経路MTU探索」を使う。パケット分割を禁止した状態で、MTU値が小さい経路をパケットが通ると、ICMPプロトコルに基づいてネットワーク機器が送信元にエラーを返す。エラーには、エラーとなった回線のMTU値とヘッダー情報が入っている。エラーを受け取ったパソコンは、この情報に基づいてMTU値を調整して再送信する。宛先に届くまでこの作業を繰り返せば、経路中の最小MTU値がわかる。