MTU(最大伝送単位)とは?

最大伝送単位(MTU:Maximum Transmission Unit)は、インターネットに接続されたデバイスが受け入れることができる最大データパケットをバイトで示した単位です。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • 「MTU」(最大伝送単位)を定義する
  • IPフラグメンテーション(断片化)の仕組みを理解する
  • IPv4とIPv6におけるパスMTU検出について学ぶ

記事のリンクをコピーする

MTU(最大伝送単位)とは?

In networking, maximum transmission unit (MTU) is a measurement representing the largest data packet that a network-connected device will accept. Imagine it as being like a height limit for freeway underpasses or tunnels: Cars and trucks that exceed the height limit cannot fit through, just as packets that exceed the MTU of a network cannot pass through that network.

ただし、車やトラックとは違い、MTUを超えるデータパケットは通過できるように小さな断片に分割されます。このプロセスをフラグメンテーション(断片化)と呼びます。断片化されたパケットは、宛先に到着すると再構成されます。

MTUはバイト単位で測定されます。「1バイト」は8つの0と1の集まりで表される8ビットの情報に相当します。1,500バイトが最大MTUサイズです。

パケットとは?

インターネット経由で送信されるすべてのデータは、パケットと呼ばれる小さなまとまりに分割されます。たとえば、WebサーバーからユーザーのノートパソコンへWebページが送信されると、Webページの構成データは一連のパケットとしてインターネット上を移動します。その後、パケットはノートパソコンによって元のWebページ全体に再度組み立てられます。

Data packets have two main parts: the header and the payload. The header contains information about the packet's source and destination addresses, while the payload is the actual contents of the packet. Think of the header as a shipping label attached to a package, and the payload as the package’s contents. (Unlike packages, packets on the Internet have multiple headers attached by different networking protocols.)

MTUは、ほとんどの場合、第3層*パケット、または インターネットプロトコル (IP) を使用するパケットを参照するために使用されます。MTUは、すべてのヘッダーとペイロードを含むパケット全体を測定します。これには、IPヘッダーと TCP (トランスポート制御プロトコル) ヘッダーが含まれます。通常、最大40バイトまで加算されます。

* OSIモデルは、インターネットを可能にする機能を7つの層に分割します。第3層はネットワーク層であり、ルーティングが行われます。

パケットは、いつ断片化するか

When two computing devices open a connection and begin exchanging packets, those packets are routed across multiple networks. It is necessary to take into account not just the MTU of the two devices at the ends of each communication, but all routers, switches, and servers in the middle as well. Packets that exceed the MTU on any point in the network path are fragmented.

たとえば、サーバーAとコンピュータAーは接続していますが、互いに送信するデータパケットが、途中でルーターBとルーターCを通過しなければならないとします。サーバーA、コンピューターA、およびルーターBのすべてのMTUは1,500 バイトです。ただし、ルーターCのMTUは1,400バイトとします。サーバーAとコンピューターAがルーターCのMTUを認識せず、1,500バイトのパケットを送信する場合、すべてのデータパケットはルーターBによって転送中に断片化されます。

Maximum transmission unit - Packet fragmented to fit 1,400 byte MTU

断片化によって、ネットワーク通信にわずかなレイテンシー と非効率性が生じるため、可能であれば、避けるべきです。(古いネットワーク機器は、フラグメーションを悪用するサービス拒否 攻撃や、Ping of Death 攻撃などに対する脆弱かもしれません)。

断片化はどのように機能するか

すべてのネットワークルーターは、パケットを受信する次のルーターのMTUに対して、受信する各IPパケットのサイズをチェックします。パケットが次のルーターのMTUを超えると、最初のルーターはペイロードを2つ以上のパケットに分割し、それぞれが独自のヘッダーを持ちます。

新しい各パケットには、元のパケットからコピーされたヘッダーがあり(すべてのパケットに送信元および宛先 IPアドレス などが付与される)、重要な変更が加えられています。ルーターは IPヘッダーの特定のフィールドを編集して、パケットが断片化していること、再構成が必要であること、パケット数、および送信順序を示します。

たとえば、ある輸送会社が施設の一つで荷物を扱っていますが、その荷物は重量制限オーバーです。その会社は、荷物の配達を拒否するかわりに、荷物の中身を3つの小さな荷物に分割することにしました。また、各荷物の配送ラベルを複製し、各荷物が一緒に到着する必要がある3セットのどれかであることを示すメモを追加します。つまり、最初の荷物は1/3、2番目の荷物は2/3などのメモを付けます。(運送会社によるこのようなアプローチはプライバシーの侵害になるので、現実世界では起こりません。)

断片化ができないのはいつか

場合によっては、パケットが断片化されないため、ネットワークパス上のルーターまたはデバイスのMTUを超えると、パケットが配信されません:

  1. IPv6 では断片化は許可されません。IPv6はインターネットプロトコルの最新バージョンですが、IPv4もまだ広く使用されています。IPv6をサポートするルーターは、MTUを超えるIPv6 パケットをフラグメント化できないため、これをドロップします。
  2. パケットのIPヘッダーで「Don't Fragment(断片化しないでください)」フラグがアクティブになっている場合にも断片化はできません。

IPヘッダーの「Don't Fragment」フラグとは?

IPヘッダーは、消費者が小包を誰かに送るときに記入する配達伝票のようなものと考えてください。フォームには、送信元アドレス、宛先アドレス、荷物の配達日数、および配達業者に向けたその他の特別な指示が示されます。

「Don't Fragment」フラグは、ルーター用の特別な命令で、IPヘッダーの「伝票」で選択できるオプションです。フラグが設定されている場合、添付されたパケットは断片化できません。

パケットを受信したルーターはどれでも、ヘッダーを分析し、Don't Fragmentフラグを確認します。フラグがオンで、パケットがMTUを超えると、ルーターはパケットを断片化せずにドロップします。

ルーターは、パケットをドロップするだけでなく、パケットの発信元に ICMPメッセージを送信します。ICMPメッセージは、ステータスアップデートを送信する非常に小さなデータパケットです。この場合に表示される実際のメッセージは、「このルーターまたはデバイスは、パケットが大きすぎて、断片化できなかったため、配信できませんでした」というものです。

パスMTUディスカバリーとは?

パスMTUディスカバリー(PMTUD)とは、ネットワークパス上のすべてのデバイス、ルーター、およびスイッチのMTUを検出するプロセスです。前述の例のコンピューターAとサーバーAがPMTUDを使用する場合、ルーターBのMTU要件を特定し、それに応じてパケットサイズを調整して断片化を回避します。

PMTUの動作は、接続されたデバイスが IPv4またはIPv6 のいずれを使用しているかによって、若干異なります:

IPv4: IPv4は断片化を許可し、したがって、IPヘッダーにDon't Fragmentフラグを含めます。IPv4のPMTUDは、Don't Fragmentフラグをオンにして、ネットワークパスに沿ってテストパケットを送信することで機能します。パス上のルーターまたはデバイスのいずれかがパケットをドロップすると、MTUとともにICMPメッセージを返送します。送信元デバイスはMTUを下げ、別のテストパケットを送信します。このプロセスは、テストパケットがドロップされることなく、ネットワークパス全体を通過できるほど十分に小さくなるまで繰り返されます。

IPv6: 断片化を許可しないIPv6の場合、PMTUDはほぼ同じように動作します。主な違いは、IPv6ヘッダーにDon't Fragmentオプションがないため、フラグが設定されないことです。IPv6をサポートするルーターはIPv6パケットを断片化しないため、テストパケットがMTUを超えると、ルーターはパケットをドロップし、対応するICMPメッセージをDon't Fragmentフラグをチェックせずに返信します。IPv6 PMTUDは、IPv4の場合と同様に、パケットがネットワークパス全体を通過できるようになるまで、より小さなテストパケットを送信します。

MSSとは?

MSS は、最大セグメントサイズを表します。MSSは、インターネットの第3層ではなく第4層 (トランスポート層) でTCPによって使用されます。MSSは、各パケット内のペイロードのサイズだけに関係します。これは、MTUからTCPおよび IPヘッダーの長さを引いて計算されます。

ルーターのMTUを超えるパケットは断片化またはドロップされますが、MSSを超えるパケットは常にドロップされます。

MTUとMSSの詳細については、「MSSとは?」を参照してください。

ネットワーク層について