用語辞典・IP・アドレス

MTU

MTUとは

MTUは、一つのネットワーク区間で、分割せずに運べるIPパケットの最大サイズです。正式名称はMaximum Transmission Unit(マキシマム・トランスミッション・ユニット)です。

MTUは、一つのネットワーク区間で、分割せずに運べるIPパケットの最大サイズです。

MTUは回線全体に一つだけ付く値ではなく、ネットワークインターフェースやリンクごとにあります。イーサネットではIP MTUとして1500バイトが広く使われますが、トンネルや接続方式が追加のヘッダーを付けると、内側で運べるIPパケットの上限が小さくなることがあります。端から端まで運べる最大サイズは、途中で最も小さい上限に合わせる必要があります。

一番狭い区間が、経路全体の上限になる大きすぎる通知を受けた送信元が、サイズを下げて送り直す
大きなIPパケットが途中の狭いリンク上限を通れず通知が送信元へ返り、送信元が小さなパケットにして全区間を通過させる図解
図1経路上の各リンクのMTUのうち最小の値をPath MTU(パス・エムティーユー)と呼びます。経路が変われば、同じ宛先でもPath MTUが変わることがあります。

MTUに数えるのは、IPヘッダーとデータの合計

同じ1500バイトでも、数える範囲が違うMTUとアプリのデータ量を同じ数として扱わない
IPパケットMTU 1500の例
IPヘッダーTCPヘッダーTCPデータ

MTUはIPヘッダーから末尾までの合計を制限します。

TCPセグメントMSS 1460の例
TCPヘッダーTCPデータ

IPv4ヘッダー20バイト、TCPヘッダー20バイトで追加オプションがない代表例です。

図2MSS(Maximum Segment Size/マキシマム・セグメント・サイズ)はTCPが一つのセグメントで運ぶデータ部分の上限です。IPやTCPのヘッダー長が増えれば、同じMTUでもデータに使える量は減ります。

IPv4は途中で分割される場合がある

IPv4では、大きすぎるパケットをルーターが複数の断片へ分割できる場合があります。これをfragmentation(フラグメンテーション)と呼びます。宛先は断片をそろえて元のパケットへ再構成します。

しかし、分割は断片の一部が失われたときの負担を増やし、機器やフィルターとの相性問題も生じます。IPv4ヘッダーのDFフラグで分割を禁止したパケットが大きすぎる場合、ルーターは破棄し、ICMPで「分割が必要」と次ホップMTUを返します。

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

IPv6では、転送中のルーターがパケットを分割しません。大きすぎる場合はパケットを破棄し、ICMPv6のPacket Too Big(パケット・トゥー・ビッグ)メッセージで送信元へ上限を知らせます。必要なら送信元がIPv6フラグメントヘッダーを付けて分割します。

IPv6のリンクは1280オクテット以上のMTUを提供する必要があります。経路がそれより小さい値しか運べない部分を含む場合は、リンク層の分割などによりIPv6からは1280以上として見せる必要があります。

Path MTU Discoveryは、分割せず通る大きさを探す

Path MTU Discovery(パス・エムティーユー・ディスカバリー)は、送信元が経路上で分割なしに通せる大きさを学習する仕組みです。大きすぎる通知を受けると推定値を下げ、以後のパケットサイズを調整します。

必要なICMPやICMPv6通知が途中で不適切に遮断されると、小さな通信は成功するのに大きなデータだけ止まるPath MTU black hole(パス・エムティーユー・ブラックホール)が起きる場合があります。MTUを小さくすれば常に速くなるわけではなく、余計なパケットとヘッダーが増えるため、経路と方式に合った値を使います。

仕様の確認資料:RFC 1191「Path MTU Discovery」RFC 8200「Internet Protocol, Version 6」RFC 8201「Path MTU Discovery for IP version 6」

関連用語