IPフラグメンテーション

IPフラグメンテーションとは



IPフラグメンテーション(IP分割)は、インターネットプロトコル(IP)において、データグラムを小さな断片に分割するプロセスです。これは、ネットワークの最大転送単位(MTU)が、送信したいデータグラムのサイズよりも小さい場合に必要となります。分割されたデータグラムは、受信側で再構築され、元のデータグラムに戻されます。

IPフラグメンテーションの仕組み



IPフラグメンテーションは、RFC 791で詳細に定義されており、データグラムの分割と再構築の手順が規定されています。また、RFC 815では、よりシンプルな再構築アルゴリズムが示されています。

IPヘッダには、識別子、フラグ(禁止フラグと継続フラグ)が含まれており、これらを使用してIPデータグラムの分割と再構築が行われます。

IPv4では、ルーターが次のホップのMTUよりも大きいパケットを受信した場合、パケットを破棄してICMPメッセージを送信元に返すか、パケットをフラグメンテーションして送信するかのいずれかの対応を取ります。一方、IPv6では、ルーターでのフラグメンテーションは禁止されており、送信元が事前にMTUを把握し、適切なサイズに分割してから送信する必要があります。IPv6では、1280バイト以下のパケットはフラグメンテーションなしで伝送できることが保証されています。

再構築の必要性



フラグメンテーションされたパケットを受信した場合、上位層プロトコルにデータを渡す前に、元のデータグラムを再構築する必要があります。再構築は通常、受信ホストで行われますが、ネットワークアドレス変換(NAT)などを行うルーターが再構築することもあります。

フラグメンテーションによる問題点と対策



フラグメンテーションされたパケットが失われると、TCPなどの信頼性の高いプロトコルでは、データグラム全体の再送が必要になります。これにより、再送のオーバーヘッドが大きくなる可能性があります。このため、可能な限りフラグメンテーションを回避することが望ましく、以下の2つの方法が用いられます。

1. 送信側が最初のホップのMTUを基準にデータグラムサイズを決定する。
2. 経路MTU探索アルゴリズム(RFC 1191)を利用して、経路上の最小MTUを把握し、それに合わせてデータグラムサイズを調整する。

IPv4IPv6の違い



IPv4IPv6では、フラグメンテーションの仕組みに大きな違いがあります。IPv4では、ルーターがフラグメンテーションを行うことが許容されていますが、IPv6ではルーターでのフラグメンテーションが禁止されています。IPv6では、送信元が事前にMTUを把握し、適切なサイズで送信する必要があります。

IPv4では、再構築後のデータグラムのサイズが576バイト(IPv4の最小MTU)以下であれば、可能な限り再構築が行われます。しかし、576バイトを超える場合は、再構築せずに破棄しても良いとされています。IPv6では、この閾値が1500バイトに引き上げられています。

ヘッダの形式は異なりますが、フラグメンテーションに関するフィールドは類似しており、フラグメンテーションと再構築のアルゴリズムは流用可能です。

まとめ



IPフラグメンテーションは、ネットワーク上でデータを効率的に転送するための重要なメカニズムです。しかし、フラグメンテーションは再送オーバーヘッドやパケット損失の問題を引き起こす可能性もあるため、可能な限り避けるように設計することが重要です。経路MTU探索などの技術を活用し、最適なパケットサイズでデータ転送を行うことが推奨されます。


参考資料:
JPRS用語辞典|IPフラグメンテーション(IP fragmentation)
福田 洋治、佐野 工・白石 善明・森井 昌克「QoSを考慮したインターネットセキュリティプロトコルの提案」

関連リンク:
IPフラグメンテーション @IT
What is packet fragmentation?
* The Never-Ending Story of IP Fragmentation

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。