4. 新しい Neighbor Discovery のオプションとメッセージ (New Neighbor Discovery Options and Messages)
4. 新しい Neighbor Discovery のオプションとメッセージ
本節は, 本仕様で使用される新しい Neighbor Discovery メッセージオプションを定義する。アドレス登録オプション (Address Registration Option, ARO) はホストにより使用され, 権威ある境界ルータオプション (Authoritative Border Router Option, ABRO) と 6LoWPAN コンテキストオプション (6LoWPAN Context Option, 6CO) は置換可能な router-to-router 交互作用で使用される。本節はまた, 新しい router-to-router 重複アドレス要求 (Duplicate Address Request, DAR) および 重複アドレス確認 (Duplicate Address Confirmation, DAC) メッセージを定義する。
4.1. アドレス登録オプション
ルータは, 直接到達可能なホスト IP アドレスの集合と, それらに対応するリンク層アドレスを知る必要がある。無線到達性が変化するにつれて, これを維持する必要がある。この目的のために Address Registration Option (ARO) が導入され, ホストが送信するユニキャスト NS メッセージに含めることができる。したがって, ホストがデフォルトルータにまだ到達できることを判断するために NUD の一部として送信するユニキャスト NS メッセージにも含めることができる。ARO は受信ルータによって Neighbor Cache を信頼性高く維持するために使用される。同じオプションが対応する NA メッセージにも含まれ, Status フィールドは登録の成功または失敗を示す。このオプションは常にホスト起動である。
ARO に含まれる情報は, 6LR と 6LBR の間で使用されるマルチホップ DAR および DAC メッセージにも含まれるが, それらのメッセージではオプション自体は使用されない。
ARO は信頼性および省電力のために必要である。lifetime フィールドは, ホストに対して, その意図したスリープスケジュールの間に使用可能であるべきアドレス(ルーティングプロトコルで 6LR により継続して広告される等)を登録する柔軟性を提供する。
NS の送信者は, アドレスを登録しているインタフェースの EUI-64 [EUI64] も含める。これは重複アドレス検出のための一意 ID として使用される。これは, 同一ノードがそのアドレスを再登録する場合と, 異なるノード(異なる EUI-64 を持つ)が既に他者により使用されているアドレスを登録する場合とを区別するために使用される。EUI-64 はまた, エラー Status コードを運ぶ NA をホストの EUI-64 ベースのリンクローカル IPv6 アドレスへ配送するために使用される(第 6.5.2 節参照)。
ホストにより ARO が使用される場合, 送信元リンク層アドレスオプション (Source Link-Layer Address Option, SLLAO) [RFC4861] を MUST 含めなければならず, 登録されるべきアドレスは NS メッセージの IPv6 ソースアドレスで MUST なければならない。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length = 2 | Status | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ EUI-64 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
フィールド:
Type: 33
Length: 8-bit unsigned integer. 8 バイト単位のオプション長。常に 2。
Status: 8-bit unsigned integer. NA 応答における登録の状態を示す。NS メッセージでは 0 に MUST 設定される。下記参照。
Reserved: このフィールドは未使用である。送信者は 0 に MUST 初期化し, 受信者は MUST 無視しなければならない。
Registration Lifetime: 16-bit unsigned integer. このオプションを含む NS の送信者に対する NCE をルータが保持すべき時間量であり, 60 秒単位。
EUI-64: 64 bits. このフィールドは, 割り当てられた EUI-64 識別子 [EUI64] を変更せずに含めることにより, Registered Address のインタフェースを一意に識別するために使用される。
NA で使用される Status 値は次のとおり:
| Status | Description |
|---|---|
| 0 | 成功 |
| 1 | 重複アドレス |
| 2 | Neighbor Cache 満杯 |
| 3-255 | Standards Action [RFC5226] を使用して割り当て |
Table 1
4.2. 6LoWPAN コンテキストオプション
6LoWPAN Context Option (6CO) は LoWPAN header compression のためのプレフィックス情報を運び, [RFC4861] の PIO に類似する。ただし, ヘッダ圧縮は潜在的にすべての IPv6 アドレスに適用されるため, プレフィックスは LoWPAN にローカルなものだけでなくリモートなものでもよい。このオプションは, [RFC6282] で規定されるとおり使用するために, CID により識別される複数のコンテキストの配布を可能にする。コンテキストは任意長のプレフィックスまたはアドレス(/128)であり得る。RA メッセージには最大 16 個の 6CO を含められる。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |Context Length | Res |C| CID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Valid Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. Context Prefix .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
図 1: 6LoWPAN コンテキストオプションのフォーマット
Type: 34
Length: 8-bit unsigned integer. (Type と Length フィールドを含む) 8 バイト単位のオプション長。Context Prefix フィールドの長さに応じて 2 または 3。
Context Length: 8-bit unsigned integer. Context Prefix フィールドのうち有効な先頭ビット数。値は 0 から 128。64 を超える場合, Length MUST は 3。
C: 1-bit context Compression フラグ。コンテキストが圧縮で使用可能かを示す。圧縮で有効でないコンテキストは MUST NOT 圧縮に使用されるが, 別の圧縮器が更新済みコンテキスト情報をまだ受信していない場合に備え, SHOULD 解凍で使用されるべきである。このフラグは, 第 7.2 節の推奨に基づいてコンテキストのライフサイクルを管理するために使用される。
CID: 4-bit Context Identifier。CID フィールドは, [RFC6282] で規定されるコンテキストベースのヘッダ圧縮で使用される。LoWPAN の CID の一覧は, 6LoWPAN のコンテキスト情報を生成する 6LBR で構成される。
Res, Reserved: このフィールドは未使用である。送信者は 0 に MUST 初期化し, 受信者は MUST 無視しなければならない。
Valid Lifetime: 16-bit unsigned integer. (パケット受信時刻からの相対で) ヘッダ圧縮または解凍の目的でコンテキストが有効な時間長であり, 60 秒単位。全ビットが 0 (0x0) の値は, このコンテキストエントリが MUST 直ちに削除されることを示す。
Context Prefix: CID フィールドに対応する IPv6 プレフィックスまたはアドレス。该フィールドの有効長は Context Length フィールドに含まれる。オプションを 8 バイトの倍数にするため, このフィールドは 0 でパディングされる。
4.3. 権威ある境界ルータオプション
Authoritative Border Router Option (ABRO) は, route-over トポロジ全体にわたりプレフィックスおよびコンテキスト情報を配布するために RA メッセージが使用される場合に必要である。この場合, 6LR は他の 6LR から PIO を受信する。これは, 6LR が単に最新に受信した RA を勝たせることができないことを意味する。6LoWPAN からプレフィックスを信頼性高く追加および削除できるようにするため, 権威ある 6LBR からの情報を運ぶ必要がある。これは, 6LBR が設定し, 6LR が ABRO を伴ってプレフィックスおよびコンテキスト情報を伝播する際に伝播するバージョン番号を導入することで行われる。複数の 6LBR がある場合, それらは別々のバージョン番号空間を持つ。したがって, このオプションは, その情報集合を生成した 6LBR の IP アドレスを運ぶ必要がある。
ルータ間で情報を伝播するために RA が使用される場合(第 8.2 節で説明される), ABRO MUST はすべての RA メッセージに含められなければならない。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length = 3 | Version Low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version High | Valid Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 6LBR Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
フィールド:
Type: 35
Length: 8-bit unsigned integer. 8 バイト単位のオプション長。常に 3。
Version Low, Version High: Version Low と Version High は合わせて Version Number フィールドを構成する。これは 32-bit unsigned integer であり, Version Low は下位 16 ビット, Version High は上位 16 ビットである。このバージョン番号は RA メッセージに含まれるこの情報集合に対応する。権威ある 6LBR は, そのプレフィックスまたはコンテキスト情報集合が変化するたびにこのバージョン番号を増加させる。
Valid Lifetime: 16-bit unsigned integer. (パケット受信時刻からの相対で) この境界ルータ情報集合が有効な時間長であり, 60 秒単位。全ビットが 0 (0x0) の値は, 既定値 10,000 (~1 週間) を仮定する。
Reserved: このフィールドは未使用である。送信者は 0 に MUST 初期化し, 受信者は MUST 無視しなければならない。
6LBR Address: 含まれるバージョン番号の起源である 6LBR の IPv6 アドレス。
4.4. 重複アドレスメッセージ
第 8.2 節で規定される 6LR と 6LBR の間のマルチホップ DAD 交換のために, 重複アドレス要求 (Duplicate Address Request, DAR) および 重複アドレス確認 (Duplicate Address Confirmation, DAC) と呼ばれる 2 つの新しい ICMPv6 メッセージタイプがある。この目的のために NS および NA メッセージを再利用することは避ける。これらのメッセージは中間 6LR により転送されるため hop limit=255 のチェックの対象ではないからである。メッセージに含まれる情報はそれ以外の点では, ARO を運ぶ NS に含まれるものと同一であり, メッセージ形式は ARO のフィールドをインライン化する。
DAR と DAC は, 異なる ICMPv6 Type 値を持つ同一のメッセージ形式を使用し, Status フィールドは DAC メッセージにおいてのみ意味がある。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status | Reserved | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ EUI-64 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Registered Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP フィールド:
IPv6 Source: 送信ルータの非リンクローカルアドレス。
IPv6 Destination: DAR では, 6LBR の非リンクローカルアドレス。DAC では, DAR のソースそのもの。
Hop Limit: 送信時に MULTIHOP_HOPLIMIT に設定される。受信時 MUST 無視される。
ICMP フィールド:
Type: DAR は 157, DAC は 158。
Code: 送信時に 0 に設定される。受信時 MUST 無視される。
Checksum: ICMP チェックサム。[RFC4443] 参照。
Status: 8-bit unsigned integer. DAC における登録の状態を示す。DAR では 0 に MUST 設定される。Table 1 参照。
Reserved: このフィールドは未使用である。送信者は 0 に MUST 初期化し, 受信者は MUST 無視しなければならない。
Registration Lifetime: 16-bit unsigned integer. 6LBR が Registered Address のために DAD table entry (第 8.2.2 節) を保持すべき時間量であり, 60 秒単位。DAR における値 0 は, DAD table entry を削除すべきことを示す。
EUI-64: 64 bits. 割り当てられた EUI-64 識別子 [EUI64] を変更せずに含めることにより, Registered Address のインタフェースを一意に識別するために使用される。
Registered Address: 128-bit field. ホストが送信した ARO を含む NS の IPv6 Source フィールドに含まれていたホストアドレスを運ぶ。