メインコンテンツまでスキップ

4.2 オプション (Options)

現在定義されている二つの拡張ヘッダー — Hop-by-Hop Options ヘッダーと Destination Options ヘッダー — は、以下の形式で type-length-value (TLV、タイプ-長さ-値) エンコードされた「オプション (options)」を可変数で運びます。

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

オプションタイプ (Option Type) — 8 ビットのオプションタイプ識別子。

オプションデータ長 (Opt Data Len) — 8 ビットの符号なし整数。このオプションの Option Data フィールドの長さ(オクテット単位)。

オプションデータ (Option Data) — 可変長フィールド。オプションタイプ固有のデータ。

ヘッダー内のオプションのシーケンスは、ヘッダー内に現れる順序で厳密に処理されなければなりません。例えば、受信者は特定のタイプのオプションを探してヘッダーをスキャンし、前のすべてのオプションを処理する前にそのオプションを処理してはなりません。

Option Type 識別子の内部エンコーディングにより、最上位の 2 ビットが、IPv6 ノードが Option Type を認識しない場合に取るべき処置を指定します。

00 - このオプションをスキップしてヘッダーの処理を続ける。

01 - パケットを破棄する。

10 - パケットを破棄し、パケットの Destination Address がマルチキャストアドレスであるかどうかに
かかわらず、パケットの Source Address に ICMP Parameter Problem, Code 2 メッセージを送信し、
認識されない Option Type を指す。

11 - パケットを破棄し、パケットの Destination Address がマルチキャストアドレスでない場合に限り、
パケットの Source Address に ICMP Parameter Problem, Code 2 メッセージを送信し、
認識されない Option Type を指す。

Option Type の第 3 上位ビットは、そのオプションの Option Data がパケットの最終宛先への途中で変更される可能性があるかどうかを指定します。パケットに Authentication ヘッダーが存在する場合、途中でデータが変更される可能性があるオプションについては、パケットの認証値を計算または検証する際に、その Option Data フィールド全体をゼロ値オクテットとして扱わなければなりません。

0 - Option Data は途中で変更されない

1 - Option Data は途中で変更される可能性がある

上記の 3 つの上位ビットは、Option Type から独立したものではなく、Option Type の一部として扱われるべきです。すなわち、特定のオプションは Option Type の下位 5 ビットだけでなく、完全な 8 ビットの Option Type によって識別されます。

Hop-by-Hop Options ヘッダーと Destination Options ヘッダーは同じ Option Type 番号空間を使用します。ただし、特定のオプションの仕様により、これら二つのヘッダーのいずれか一方のみでの使用に制限される場合があります。

個々のオプションには特定のアライメント要件がある場合があり、Option Data フィールド内の複数オクテット値が自然境界に配置されることを保証します。オプションのアライメント要件は xn+y という表記で指定され、Option Type はヘッダーの先頭から x オクテットの整数倍に y オクテットを加えた位置に現れなければならないことを意味します。例えば:

2n    ヘッダーの先頭からの任意の 2 オクテットオフセット。
8n+2 ヘッダーの先頭からの任意の 8 オクテットオフセットに 2 オクテットを加えた位置。

後続のオプションをアライメントするため、およびオプションを含むヘッダーを 8 オクテット長の倍数に埋めるために使用される 2 つのパディングオプションがあります。すべての IPv6 実装はこれらのパディングオプションを認識しなければなりません。

Pad1 オプション (Pad1 option)(アライメント要件: なし)

+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+

注意!Pad1 オプションのフォーマットは特殊なケースです — 長さフィールドと値フィールドがありません。

Pad1 オプションは、ヘッダーの Options 領域に 1 オクテットのパディングを挿入するために使用されます。複数の Pad1 オプションではなく、1 オクテット以上のパディングが必要な場合は、以下に説明する PadN オプションを使用すべきです。

PadN オプション (PadN option)(アライメント要件: なし)

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

PadN オプションは、ヘッダーの Options 領域に 2 オクテット以上のパディングを挿入するために使用されます。N オクテットのパディングの場合、Opt Data Len フィールドには値 N-2 が含まれ、Option Data は N-2 個のゼロ値オクテットで構成されます。

付録 B には、新しいオプションを設計するためのフォーマットガイドラインが含まれています。