導入
IPの分類原理と非分類原理、そしてネットワーク通信におけるその応用は、誰もが知っています。IPフラグメンテーションとリアセンブルは、パケット伝送プロセスにおける重要なメカニズムです。パケットのサイズがネットワークリンクの最大転送単位(MTU)制限を超えると、IPフラグメンテーションによってパケットは複数の小さなフラグメントに分割されて伝送されます。これらのフラグメントはネットワーク内で独立して伝送され、宛先に到着すると、IPリアセンブルメカニズムによって完全なパケットに再構成されます。このフラグメンテーションとリアセンブルのプロセスにより、データの整合性と信頼性を確保しながら、大容量のパケットをネットワーク内で伝送できるようになります。このセクションでは、IPフラグメンテーションとリアセンブルの仕組みについて詳しく見ていきます。
IP の断片化と再構成
データリンクによって最大転送単位(MTU)は異なります。例えば、FDDIデータリンクのMTUは4352バイトですが、イーサネットのMTUは1500バイトです。MTUは「Maximum Transmission Unit(最大転送単位)」の略で、ネットワーク上で転送できる最大パケットサイズを指します。
FDDI(Fiber Distributed Data Interface)は、光ファイバを伝送媒体とする高速ローカルエリアネットワーク(LAN)規格です。最大転送単位(MTU)は、データリンク層プロトコルで転送できる最大パケットサイズです。FDDIネットワークでは、MTUのサイズは4352バイトです。つまり、FDDIネットワークのデータリンク層プロトコルで転送できる最大パケットサイズは4352バイトです。転送するパケットがこのサイズを超える場合、パケットをMTUサイズに適した複数のフラグメントに分割し、転送と受信側での再構成を行う必要があります。
イーサネットの場合、MTUは通常1500バイトです。これは、イーサネットが最大1500バイトのパケットを送信できることを意味します。パケットサイズがMTU制限を超える場合、パケットは小さなフラグメントに分割されて送信され、宛先で再構成されます。フラグメント化されたIPデータグラムの再構成は宛先ホストによってのみ実行され、ルーターは再構成処理を実行しません。
先ほどTCPセグメントについても触れましたが、MSSはMaximum Segment Size(最大セグメントサイズ)の略で、TCPプロトコルにおいて重要な役割を果たします。MSSは、TCP接続で送信できる最大データセグメントのサイズを指します。MTUと同様に、MSSはパケットのサイズを制限するために使用されますが、トランスポート層(TCPプロトコル層)で制限されます。TCPプロトコルは、アプリケーション層のデータを複数のデータセグメントに分割して送信し、各データセグメントのサイズはMSSによって制限されます。
各データリンクのMTUは、データリンクの種類によって用途が異なるため異なります。使用目的に応じて、異なるMTUをホストできます。
送信側がイーサネットリンク経由で4000バイトの大きなデータグラムを送信したいとします。この場合、データグラムは3つの小さなデータグラムに分割して送信する必要があります。これは、各小さなデータグラムのサイズがMTU制限(1500バイト)を超えることができないためです。受信側は3つの小さなデータグラムを受信した後、各データグラムのシーケンス番号とオフセットに基づいて、それらを元の4000バイトの大きなデータグラムに再構成します。
フラグメント化された伝送では、フラグメントが失われるとIPデータグラム全体が無効になります。これを回避するため、TCPはMSSを導入しました。MSSでは、IP層ではなくTCP層でフラグメント化が行われます。このアプローチの利点は、TCPが各セグメントのサイズをより正確に制御できるため、IP層でのフラグメント化に伴う問題を回避できることです。
UDPでは、MTUを超えるデータパケットを送信しないように努めます。これは、UDPがコネクションレス型のトランスポートプロトコルであり、TCPのような信頼性と再送メカニズムを提供しないためです。MTUを超えるUDPデータパケットを送信すると、IP層によってフラグメント化されて送信されます。フラグメントの1つが失われると、UDPプロトコルは再送できず、データが失われます。したがって、信頼性の高いデータ伝送を確保するためには、UDPデータパケットのサイズをMTU内で制御し、フラグメント化された伝送を回避する必要があります。
Mylinking™ ネットワークパケットブローカーVxLAN/NVGRE/IPoverIP/MPLS/GREなど、各種トンネルプロトコルを自動的に識別し、トンネルフロー出力の内部または外部の特性に応じてユーザープロファイルに応じて判断できます。
○ VLAN、QinQ、MPLSラベルパケットを認識できます
○ 内部VLANと外部VLANを識別できる
○ IPv4/IPv6パケットを識別できる
○ VxLAN、NVGRE、GRE、IPoverIP、GENEVE、MPLSトンネルパケットを識別できます
○ IP フラグメントパケットを識別できます (IP フラグメント識別をサポートし、すべての IP フラグメントパケットに対して L4 機能フィルタリングを実装できるように IP フラグメントの再構成をサポートします。トラフィック出力ポリシーを実装します。)
IP と TCP が断片化されるのはなぜですか?
ネットワーク伝送において、IP層はデータパケットを自動的にフラグメント化するため、TCP層がデータをセグメント化しない場合でも、データパケットはIP層によって自動的にフラグメント化され、正常に伝送されます。では、なぜTCPはフラグメント化を必要とするのでしょうか? やりすぎではないでしょうか?
TCP層で分割されていない大きなパケットが転送中に失われたとします。TCPはパケット全体を再送信しますが、IP層ではデータをMTU長を持つ小さなパケットに分割します。これは、IP層がデータの信頼性を重視していないためです。
つまり、マシンのトランスポート層とネットワークリンクにおいて、トランスポート層がデータをフラグメント化した場合、IP層はフラグメント化を行いません。トランスポート層でフラグメント化が行われない場合、IP層でフラグメント化が行われる可能性があります。
簡単に言えば、TCPはデータをセグメント化することでIP層における断片化を解消し、再送時には断片化されたデータのごく一部だけを再送します。これにより、伝送効率と信頼性が向上します。
TCP がフラグメント化されている場合、IP 層はフラグメント化されないのですか?
上記の説明で、送信側でのTCPフラグメンテーション後、IP層ではフラグメンテーションが発生しないことを説明しました。しかし、トランスポートリンク上には、送信側のMTU(最大転送単位)よりも小さいMTUを持つネットワーク層デバイスが存在する場合があります。そのため、パケットは送信側でフラグメンテーションされていても、これらのデバイスのIP層を通過する際に再びフラグメンテーションされます。最終的に、すべての断片は受信側で組み立てられます。
リンク全体における最小のMTUを決定し、その長さでデータを送信すれば、どのノードにデータが送信されても断片化は発生しません。このリンク全体における最小のMTUは、パスMTU(PMTU)と呼ばれます。IPパケットがルーターに到着した際、ルーターのMTUがパケット長よりも短く、DF(Do not Fragment)フラグが1に設定されている場合、ルーターはパケットを断片化できず、破棄することしかできません。この場合、ルーターは「Fragmentation Needed But DF Set(断片化が必要ですが、DFが設定されています)」というICMP(インターネット制御メッセージプロトコル)エラーメッセージを生成します。このICMPエラーメッセージは、ルーターのMTU値とともに送信元アドレスに返送されます。送信側はICMPエラーメッセージを受信すると、MTU値に基づいてパケットサイズを調整し、再び禁断の断片化状態を回避することができます。
IPフラグメンテーションは必須であり、IP層、特にリンクの中間デバイスでは回避する必要があります。そのため、IPv6では中間デバイスによるIPパケットのフラグメンテーションは禁止されており、フラグメンテーションはリンクの開始と終了でのみ実行できます。
IPv6の基本的な理解
IPv6はインターネットプロトコルのバージョン6であり、IPv4の後継です。IPv6は128ビットのアドレス長を使用し、IPv4の32ビットのアドレス長よりも多くのIPアドレスを提供できます。これは、IPv4のアドレス空間が徐々に枯渇しているのに対し、IPv6のアドレス空間は非常に広く、将来のインターネットのニーズを満たすことができるためです。
IPv6 について言えば、アドレス空間の拡大に加えて、セキュリティとスケーラビリティも向上します。つまり、IPv6 は IPv4 に比べて優れたネットワーク エクスペリエンスを提供できます。
IPv6は長年存在してきましたが、世界的な普及は依然として比較的遅れています。これは主に、IPv6は既存のIPv4ネットワークとの互換性を保つ必要があり、移行が必要となるためです。しかし、IPv4アドレスの枯渇とIPv6の需要の高まりに伴い、ますます多くのインターネットサービスプロバイダーや組織がIPv6を徐々に採用し、IPv6とIPv4のデュアルスタック運用を実現しています。
まとめ
この章では、IP のフラグメンテーションと再構成の仕組みを詳しく見てきました。異なるデータ リンクには、最大転送単位 (MTU) が異なります。パケットのサイズが MTU 制限を超えると、IP フラグメンテーションはパケットを複数の小さなフラグメントに分割して送信し、宛先に到着した後に IP 再構成メカニズムによって完全なパケットに再構成します。TCP フラグメンテーションの目的は、IP 層がフラグメント化されないようにし、再送が発生したときにフラグメント化された小さなデータのみを再送することで、伝送効率と信頼性を向上させることです。ただし、トランスポート リンク全体に、送信元の MTU よりも小さい MTU を持つ他のネットワーク層デバイスが存在する場合があり、その場合、パケットはこれらのデバイスの IP 層で再びフラグメント化されます。IP 層でのフラグメンテーションは、特にリンク内の中間デバイスでは、可能な限り回避する必要があります。
投稿日時: 2025年8月7日