導入
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層によって断片化されて送信されます。断片のいずれかが失われると、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断片化の再構成をサポートすることで、すべてのIP断片化パケットに対してL4機能フィルタリングを実装します。トラフィック出力ポリシーを実装します。)
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」というICMP(Internet Control Message Protocol)エラーメッセージを生成します。このICMPエラーメッセージは、ルータのMTU値とともに送信元アドレスに返送されます。送信側はICMPエラーメッセージを受信すると、MTU値に基づいてパケットサイズを調整し、再び断片化が禁止される状況を回避できます。
IPフラグメンテーションは必要不可欠であり、特にリンクの中間デバイスにおいては、IP層でのフラグメンテーションは避けるべきである。そのため、IPv6では、中間デバイスによるIPパケットのフラグメンテーションは禁止され、フラグメンテーションはリンクの開始時と終了時のみに実行できるようになった。
IPv6の基本的な理解
IPv6はインターネットプロトコルのバージョン6であり、IPv4の後継規格です。IPv6は128ビットのアドレス長を使用するため、IPv4の32ビットのアドレス長よりも多くのIPアドレスを提供できます。これは、IPv4のアドレス空間が徐々に枯渇していく一方で、IPv6のアドレス空間は非常に大きく、将来のインターネットのニーズを満たすことができるためです。
IPv6について言えば、アドレス空間の拡大に加えて、セキュリティと拡張性の向上も実現しており、つまりIPv4と比較してより優れたネットワーク体験を提供できるということです。
IPv6は長年存在しているものの、世界的な普及は依然として比較的遅れている。これは主に、IPv6が既存のIPv4ネットワークとの互換性を必要とするため、移行と移行作業が必要となるためである。しかし、IPv4アドレスの枯渇とIPv6への需要の高まりに伴い、ますます多くのインターネットサービスプロバイダや組織が徐々にIPv6を採用し、IPv6とIPv4のデュアルスタック運用を実現しつつある。
まとめ
この章では、IPフラグメンテーションと再構成の仕組みについて詳しく見てきました。データリンクによって最大伝送単位(MTU)は異なります。パケットのサイズがMTUの制限を超えると、IPフラグメンテーションはパケットを複数の小さなフラグメントに分割して送信し、宛先に到着した後にIP再構成メカニズムによって完全なパケットに再構成します。TCPフラグメンテーションの目的は、IPレイヤでのフラグメンテーションをなくし、再送信時にフラグメント化された小さなデータのみを再送信することで、伝送効率と信頼性を向上させることです。しかし、トランスポートリンクには送信者よりもMTUが小さいネットワークレイヤデバイスが存在する可能性があり、その場合、パケットはこれらのデバイスのIPレイヤで再びフラグメンテーションされます。IPレイヤでのフラグメンテーションは、特にリンクの中間デバイスでは、可能な限り避けるべきです。
投稿日時:2025年8月7日
