IPフラグメンテーション

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

IPフラグメンテーション: IP fragmentation)とは、Internet Protocol (IP) におけるデータグラム断片化であり、Maximum Transmission Unit (MTU) が通常のデータグラムのサイズより小さいリンク上でもパケットが転送できるようにする。

概要[編集]

RFC 791 でIPフラグメンテーションの手続きすなわちデータグラムの転送および再構築について記述している[1]RFC 815 では単純化した再構築アルゴリズムが記述されている[2]

IPプロトコルヘッダの「識別子」フィールド、「フラグ」フィールドの「禁止」フラグと「継続」フラグを使用してIPデータグラムの断片化と再構築を行う。

IPv4ルーターが次のホップのMTUより大きい Protocol Data Unit (PDU) を受信した場合、2つの対処法がある。1つは、そのPDUを廃棄し、Packet too Big(パケットが大きすぎる)という条件を設定した Internet Control Message Protocol (ICMP) メッセージを送信元に返す方法である。もう1つは、IPパケットを断片化してMTUの小さいリンク上に送り出す方法である。IPv6の場合、パケットを送信する前に最適な経路MTUを決定することになっている。また、IPv6では1280バイト以下のパケットはフラグメンテーションせずに送達可能であることを保証することになっている。

あるホストが断片化されたIPパケットを受信した場合、上位層プロトコルに渡す前にデータグラムの再構築を行う必要がある。再構築は一般に受信ホストで行うことになっているが、途中のルーターが再構築することもある。例えばネットワークアドレス変換では、RFC 2993 に記されているようにFTPなどでデータストリームの変換のために再構築する必要にせまられることがある[3]

断片化されたパケットが消失し、上位プロトコルがTCPなどの高信頼プロトコルだった場合、断片の一部が消失しただけなのにデータグラム全体の再送を要求することになるので、再送のオーバーヘッドが大きくなる[4]。そのため、一般にIPデータグラムのサイズを決定するのに2つの方法を使い、フラグメンテーションをなるべく防ごうとする。1つは、送信側で最初のホップのMTUをIPデータグラムのサイズとして使用する方式である。もう1つは、経路MTU探索アルゴリズムを使う方法であり、こちらは RFC 1191 で記述されている[5]

IPv4 と IPv6 の差異[編集]

IPv4とIPv6では、断片化機構の詳細やフラグメンテーションを含む全体的アーキテクチャが異なる。IPv4ではルーターがフラグメンテーションを行うが、IPv6でのルーターはMTUが大きすぎるパケットは廃棄する。従ってIPv4とIPv4のヘッダの形式も異なるが、フラグメンテーションに関わるフィールドはほぼ対応するものがあり、断片化と再構築のアルゴリズムは流用可能である。

IPv4では、再構築後のIPデータグラムの大きさが576バイト(IPv4の最小MTU)までならベストエフォートで再構築を行う。再構築後のIPデータグラムの大きさが576バイトより大きい場合も再構築するが、そのような大きなデータグラムは何も通知せずに廃棄してもよいことになっている。IPv6ではそのしきい値が1280バイトに増やされている[6]

脚注[編集]

  1. ^ RFC 791, Internet Protocol, Information Sciences Institute (September 1981)
  2. ^ RFC 815, IP Datagram Reassembly Algorithms, David D. Clark (July 1982)
  3. ^ RFC 2993, Architectural Implications of NAT (November 2000)
  4. ^ Christopher A. Kent, Jeffrey C. Mogul. “Fragmentation Considered Harmful”. 2012年8月29日閲覧。
  5. ^ RFC 1191, Path MTU Discovery (November 1990)
  6. ^ RFC 2460, Internet Protocol, Version 6 (IPv6) Specification, S. Deering, R. Hinden (December 1998)

関連項目[編集]

外部リンク[編集]