広告
広告
https://www.7key.jp/rfc/1883/rfc1883_45.html#source
https://www.7key.jp/rfc/1883/rfc1883_45.html#translation
The Fragment header is used by an IPv6 source to send packets larger than would fit in the path MTU to their destinations. (Note: unlike IPv4, fragmentation in IPv6 is performed only by source nodes, not by routers along a packet's delivery path -- see section 5.) The Fragment header is identified by a Next Header value of 44 in the immediately preceding header, and has the following format:
フラグメントヘッダは、宛先へパスMTUに入るより大きいパケットを送信するためにIPv6発信元によって用いられるヘッダである。(注記:IPv4とは異なり、IPv6でのフラグメンテーションはパケットの伝送経路上のルータによってではなく発信元ノードによってのみ行われる/「5. パケットサイズに関する問題」を参照)フラグメントヘッダは直前のヘッダのネクストヘッダ値"44"によって識別され、下記のフォーマットである。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Reserved | Fragment Offset |Res|M| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Next Header 8-bit selector. Identifies the initial header type of the Fragmentable Part of the original packet (defined below). Uses the same values as the IPv4 Protocol field [RFC-1700 et seq.]. Reserved 8-bit reserved field. Initialized to zero for transmission; ignored on reception. Fragment Offset 13-bit unsigned integer. The offset, in 8-octet units, of the data following this header, relative to the start of the Fragmentable Part of the original packet. Res 2-bit reserved field. Initialized to zero for transmission; ignored on reception. M flag 1 = more fragments; 0 = last fragment. Identification 32 bits. See description below.
In order to send a packet that is too large to fit in the MTU of the path to its destination, a source node may divide the packet into fragments and send each fragment as a separate packet, to be reassembled at the receiver.
宛先への経路で定められているMTUよりも大きなパケットを送信するために、発信元ノードはパケットをフラグメント化し、パケット分割により生じたそれぞれのフラグメントを受信者側が再構築可能な状態で送信することができる。
For every packet that is to be fragmented, the source node generates an Identification value. The Identification must be different than that of any other fragmented packet sent recently* with the same Source Address and Destination Address. If a Routing header is present, the Destination Address of concern is that of the final destination.
フラグメント化された全てのパケット用に、発信元ノードは識別値を生成する。識別子は、発信元アドレスと宛先アドレスが同じで最近送信された他のフラグメント化されたパケットの間で重複してはならない。ルーティングヘッダがあるのであれば、宛先アドレスとは最終宛先のアドレスのことである。
* "recently" means within the maximum likely lifetime of a packet, including transit time from source to destination and time spent awaiting reassembly with other fragments of the same packet. However, it is not required that a source node know the maximum packet lifetime. Rather, it is assumed that the requirement can be met by maintaining the Identification value as a simple, 32- bit, "wrap-around" counter, incremented each time a packet must be fragmented. It is an implementation choice whether to maintain a single counter for the node or multiple counters, e.g., one for each of the node's possible source addresses, or one for each active (source address, destination address) combination.
最近は、発信元から宛先までの伝送時間や同一パケットの他のフラグメントを待ち受けて再構築するのに費やした時間を含む、パケットの生存期間の最大値を指す。ただし、発信元ノードがパケット生存期間の最大値を知ることは要求されていない。この要求は、パケットがフラグメント化されたるたびに増加する単純な32bitの巡回式カウンタのような識別値で満たすことができると想定される。ノードが1つのカウンターを用いるか、それぞれのノードの適当な発信元アドレスのごとやアドレスの組み合わせ(発信元アドレスと宛先アドレス)ごとに複数のカウンタを用いるかは、実装が選択することである。
The initial, large, unfragmented packet is referred to as the "original packet", and it is considered to consist of two parts, as illustrated:
初期の、そして大きい、フラグメント化される前のパケットは元のパケットとして示し、下図のように2つの部分で構成されるとみなされる:
original packet: +------------------+----------------------//-----------------------+ | Unfragmentable | Fragmentable | | Part | Part | +------------------+----------------------//-----------------------+
The Unfragmentable Part consists of the IPv6 header plus any extension headers that must be processed by nodes en route to the destination, that is, all headers up to and including the Routing header if present, else the Hop-by-Hop Options header if present, else no extension headers.
フラグメント化不可部分は、IPv6ヘッダと宛先までの経路中でノードによって処理されなければならない拡張ヘッダ――つまり、もしあればルーティングヘッダ以下の全てのヘッダ、でなければホップバイホップオプションヘッダ以下の全てのヘッダ、でなければ拡張ヘッダはなし――から構成される。
The Fragmentable Part consists of the rest of the packet, that is, any extension headers that need be processed only by the final destination node(s), plus the upper-layer header and data.
フラグメント化可能部分は、パケットの中の残りの部分――つまり、最終宛先ノードのみが処理する拡張ヘッダと、上位層ヘッダ及びデータ――から構成される。
The Fragmentable Part of the original packet is divided into fragments, each, except possibly the last ("rightmost") one, being an integer multiple of 8 octets long. The fragments are transmitted in separate "fragment packets" as illustrated:
元のパケットのフラグメント化可能部分は、可能な限り最後(右端)以外は8オクテットの整数倍となるようフラグメントに分割される。フラグメントは下図のように個々の"フラグメントパケット"として伝送される:
original packet: +------------------+--------------+--------------+--//--+----------+ | Unfragmentable | first | second | | last | | Part | fragment | fragment | .... | fragment | +------------------+--------------+--------------+--//--+----------+
fragment packets: +------------------+--------+--------------+ | Unfragmentable |Fragment| first | | Part | Header | fragment | +------------------+--------+--------------+ +------------------+--------+--------------+ | Unfragmentable |Fragment| second | | Part | Header | fragment | +------------------+--------+--------------+ o o o +------------------+--------+----------+ | Unfragmentable |Fragment| last | | Part | Header | fragment | +------------------+--------+----------+
Each fragment packet is composed of: (1) The Unfragmentable Part of the original packet, with the Payload Length of the original IPv6 header changed to contain the length of this fragment packet only (excluding the length of the IPv6 header itself), and the Next Header field of the last header of the Unfragmentable Part changed to 44.
(1)元のパケットのフラグメント化不可部分において、元のIPv6ヘッダのペイロード長はこのフラグメントパケットのみのサイズ(IPv6ヘッダ自身のサイズは除く)に変更され、フラグメント不可部分の最後のヘッダのネクストヘッダフィールドは"44"に変更される。
(2) A Fragment header containing: The Next Header value that identifies the first header of the Fragmentable Part of the original packet. A Fragment Offset containing the offset of the fragment, in 8-octet units, relative to the start of the Fragmentable Part of the original packet. The Fragment Offset of the first ("leftmost") fragment is 0. An M flag value of 0 if the fragment is the last ("rightmost") one, else an M flag value of 1. The Identification value generated for the original packet.
(2)フラグメントヘッダは下記を含む:
元のパケットのフラグメント化可能部分の最初のヘッダを識別するネクストヘッダ値。
元のパケットのフラグメント化可能部分の始まりから数えたそのフラグメントの位置を8オクテット単位で示すフラグメントオフセット。最初の(左端の)フラグメントのフラグメントオフセットは"0"である。
そのフラグメントが最後(右端)であればMフラグは0であり、そうでなければ1である。
元のパケットのために生成された識別値。
(3) The fragment itself.
(3)フラグメント自身。
The lengths of the fragments must be chosen such that the resulting fragment packets fit within the MTU of the path to the packets' destination(s).
パケットを分割した結果のフラグメント長は、宛先までの経路のMTUに合わせて決定されなければならない。
At the destination, fragment packets are reassembled into their original, unfragmented form, as illustrated:
宛先では、分割されたパケットを元のパケットに再構成することとなる:
reassembled original packet: +------------------+----------------------//------------------------+ | Unfragmentable | Fragmentable | | Part | Part | +------------------+----------------------//------------------------+
The following rules govern reassembly: An original packet is reassembled only from fragment packets that have the same Source Address, Destination Address, and Fragment Identification.
発信元アドレス、宛先アドレス、フラグメント識別子が同じフラグメントパケットのみが、元のパケットの再構築に用いられる。
The Unfragmentable Part of the reassembled packet consists of all headers up to, but not including, the Fragment header of the first fragment packet (that is, the packet whose Fragment Offset is zero), with the following two changes:
再構築されたパケットのフラグメント不可部分は、最初のフラグメントパケットのフラグメントヘッダ(つまり、フラグメントオフセットがゼロのパケット)を除き、次の2つの変更がなされた全てのヘッダからなる:
The Next Header field of the last header of the Unfragmentable Part is obtained from the Next Header field of the first fragment's Fragment header.
フラグメント化不可部分の最後のヘッダのネクストヘッダフィールドは、最初のフラグメントのフラグメントヘッダにあるネクストヘッダフィールドから得られる。
The Payload Length of the reassembled packet is computed from the length of the Unfragmentable Part and the length and offset of the last fragment. For example, a formula for computing the Payload Length of the reassembled original packet is: PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last where PL.orig = Payload Length field of reassembled packet. PL.first = Payload Length field of first fragment packet. FL.first = length of fragment following Fragment header of first fragment packet. FO.last = Fragment Offset field of Fragment header of last fragment packet. FL.last = length of fragment following Fragment header of last fragment packet.
再構築されたパケットのペイロード長は、フラグメント不可部分のサイズと最後のフラグメントの長さとオフセットから算出される。例えば、再構築された元のパケットのペイロード長を計算するための公式は以下:
PL.orig = PL.first - FL.first - 8 + (8 * FO.last) + FL.last
The Fragmentable Part of the reassembled packet is constructed from the fragments following the Fragment headers in each of the fragment packets. The length of each fragment is computed by subtracting from the packet's Payload Length the length of the headers between the IPv6 header and fragment itself; its relative position in Fragmentable Part is computed from its Fragment Offset value.
再構築されたパケットのフラグメント化可能部分は、各フラグメントパケットのフラグメントヘッダに後続するフラグメントで構成される。各フラグメントの長さは、自身のパケットのペイロード長からIPv6ヘッダとフラグメント間のヘッダの長さを引くことによって算出される。そのフラグメント化可能部分中の相対位置はそのフラグメントオフセット値から算出される。
The Fragment header is not present in the final, reassembled packet.
フラグメントヘッダは、最終的に再構築されたパケット内に存在しない。
The following error conditions may arise when reassembling fragmented packets:
次のエラーは、フラグメントパケットを再構築する際に起こり得る:
If insufficient fragments are received to complete reassembly of a packet within 60 seconds of the reception of the first-arriving fragment of that packet, reassembly of that packet must be abandoned and all the fragments that have been received for that packet must be discarded. If the first fragment (i.e., the one with a Fragment Offset of zero) has been received, an ICMP Time Exceeded -- Fragment Reassembly Time Exceeded message should be sent to the source of that fragment.
最初に到着した該当パケットのフラグメントを受け取ってから60秒以内に、パケットを完全に再構築するに十分なフラグメントを全て受信できないのであれば、そのパケットの再構築は放棄しなければならず、該当のパケット再構築のために受信した全てのフラグメントを破棄しなくてはならない。最初のフラグメント(つまり、フラグメントオフセットが0のフラグメント)が受信されていたのであれば、ICMPタイム超過メッセージ(フラグメント再構築時間の超過との意)を該当のフラグメントの発信者に送信すべきである。
If the length of a fragment, as derived from the fragment packet's Payload Length field, is not a multiple of 8 octets and the M flag of that fragment is 1, then that fragment must be discarded and an ICMP Parameter Problem, Code 0, message should be sent to the source of the fragment, pointing to the Payload Length field of the fragment packet.
フラグメントパケットのペイロード長フィールドから得られるフラグメント長が8オクテットの倍数ではなく、且つそのフラグメントのMフラグが"1"であれば、そのフラグメントは破棄されなければならず、フラグメントパケットのペイロード長フィールドの値を示すICMP不正パラメータメッセージ、コード"0"をフラグメントの発信元に送信すべきである。
If the length and offset of a fragment are such that the Payload Length of the packet reassembled from that fragment would exceed 65,535 octets, then that fragment must be discarded and an ICMP Parameter Problem, Code 0, message should be sent to the source of the fragment, pointing to the Fragment Offset field of the fragment packet.
フラグメントの長さとオフセット、つまりフラグメントから再構築したパケットのペイロード長が65,535オクテットを超えるのであれば、そのフラグメントは破棄されねばならず、フラグメントパケットのフラグメントオフセットフィールドの値を示すICMP不正パラメータメッセージ、コード"0"をフラグメントの発信元に送信すべきである。
The following conditions are not expected to occur, but are not considered errors if they do:
以下の事象は生じる可能性が低く、仮に生じたとしてもエラーとは見なされない:
The number and content of the headers preceding the Fragment header of different fragments of the same original packet may differ. Whatever headers are present, preceding the Fragment header in each fragment packet, are processed when the packets arrive, prior to queueing the fragments for reassembly. Only those headers in the Offset zero fragment packet are retained in the reassembled packet.
同じ元のパケットの異なるフラグメントのフラグメントヘッダに先行するヘッダの数量と内容は異なることがある。各フラグメントパケット内のフラグメントヘッダに先行するヘッダは全て、再構築のためフラグメントを待ち行列に入れる前に到着し次第処理される。つまり、オフセットがゼロのフラグメントパケットの中のヘッダのみが、パケットの再構築のために保持されることとなる。
The Next Header values in the Fragment headers of different fragments of the same original packet may differ. Only the value from the Offset zero fragment packet is used for reassembly.
同じ元のパケットの異なるフラグメントのフラグメントヘッダ内のネクストヘッダ値は異なることがある。これは、オフセットがゼロのフラグメントパケットの値だけが再構築のために用いられるためである。
広告