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

6. ルーターおよびプレフィックス探索 (Router and Prefix Discovery)

このセクションでは、ルーターとプレフィックスの探索について説明します。ルーター探索は、ホストが接続されたリンク上に存在するルーターを見つけるプロセスです。プレフィックス探索は、ホストが接続されたリンクに対してどの宛先がオンリンクであるかを定義するアドレスプレフィックスのセットを発見するプロセスです。

ホストは、広告されたオンリンクプレフィックスを使用して、パケットの宛先がオンリンクかルーターの先かを決定する際に使用されるリストを構築および維持します。デフォルトでは、ホストはルーター広告からすべてのオンリンクプレフィックスを学習します。ただし、ルーターは、ルーター広告から一部またはすべてのプレフィックスを省略するように構成される場合があります。そのような場合、ホストは宛先がオフリンクであると仮定し、トラフィックをルーターに送信します。次に、ルーターは必要に応じてリダイレクトを発行できます。

6.1. メッセージ検証 (Message Validation)

6.1.1. ルーター要請メッセージの検証 (Validation of Router Solicitation Messages)

ホストは、受信したルーター要請メッセージを黙って破棄しなければなりません (MUST)。

ルーターは、以下のすべての妥当性チェックを満たさない受信したルーター要請メッセージを黙って破棄しなければなりません (MUST):

  • IP送信元アドレスがリンクローカルアドレスである。要請の送信元アドレスが未指定アドレスの場合、ルーターはマルチキャストアドレス (全ノードマルチキャストアドレス以外) にルーター広告を送信してはなりません (MUST NOT)。この制限は、悪意のあるノードからのサービス拒否攻撃を防ぐためのものです。

  • IPホップ制限フィールドの値が255である。つまり、パケットがルーターによって転送された可能性はありません。

  • ICMPチェックサムが有効である。

  • ICMPコードが0である。

  • ICMP長 (IP長から導出) が8オクテット以上である。

  • 含まれるすべてのオプションの長さがゼロより大きい。

上記のチェックに従って有効なルーター要請がインターフェースで受信され、インターフェースが広告インターフェースである場合、ルーターは以下に説明するように、マルチキャストルーター広告または要請ノードのアドレス宛のユニキャストルーター広告のいずれかで応答できます (MAY)。ルーター要請がユニキャストアドレスから送信された場合、ルーターはユニキャストルーター広告で応答すべきであり (SHOULD)、ルーター要請が未指定アドレスから送信された場合は、マルチキャストルーター広告で応答すべきです (SHOULD)。

6.1.2. ルーター広告メッセージの検証 (Validation of Router Advertisement Messages)

ノードは、以下のすべての妥当性チェックを満たさない受信したルーター広告メッセージを黙って破棄しなければなりません (MUST):

  • IP送信元アドレスがリンクローカルアドレスである。ルーターは、ホストがルーターを一意に識別できるように、ルーター広告およびリダイレクトメッセージの送信元としてリンクローカルアドレスを使用しなければなりません (MUST)。

  • IPホップ制限フィールドの値が255である。つまり、パケットがルーターによって転送された可能性はありません。

  • ICMPチェックサムが有効である。

  • ICMPコードが0である。

  • ICMP長 (IP長から導出) が16オクテット以上である。

  • 含まれるすべてのオプションの長さがゼロより大きい。

予約済みフィールドおよび認識されないオプションの内容は、無視されなければなりません (MUST)。プロトコルへの将来の後方互換性のある変更では、予約済みフィールドの内容を指定したり、新しいオプションを追加したりする場合があります。後方互換性のない変更では、異なるコード値を使用する場合があります。

ルーター広告メッセージで使用されるように指定されていない定義済みオプションの内容は無視され、パケットは通常どおり処理されなければなりません (MUST)。表示される可能性のある定義済みオプションは、送信元リンク層アドレス、MTU、およびプレフィックス情報オプションのみです。

妥当性チェックに合格したルーター広告は、「有効なルーター広告 (valid Router Advertisement)」と呼ばれます。

6.2. ルーター仕様 (Router Specification)

6.2.1. ルーター構成変数 (Router Configuration Variables)

ルーターは、各広告インターフェースについて、システム管理によって以下の概念的変数を構成できるようにしなければなりません (MUST):

MaxRtrAdvInterval - インターフェースから要請されていないマルチキャストルーター広告を送信する間隔の最大時間 (秒単位)。4秒以上1800秒以下でなければなりません (MUST)。

デフォルト: 600秒

MinRtrAdvInterval - インターフェースから要請されていないマルチキャストルーター広告を送信する間隔の最小時間 (秒単位)。3秒以上かつ0.75 * MaxRtrAdvInterval以下でなければなりません (MUST)。

デフォルト: 0.33 * MaxRtrAdvInterval

AdvManagedFlag - ルーター広告の「管理アドレス構成 (Managed address configuration)」フラグに配置する値。[ADDRCONF]を参照してください。

デフォルト: FALSE

AdvOtherConfigFlag - ルーター広告の「その他の構成 (Other configuration)」フラグに配置する値。[ADDRCONF]を参照してください。

デフォルト: FALSE

AdvLinkMTU - ルーターによって送信されるMTUオプションに配置する値。値がゼロの場合、MTUオプションは送信されません。

デフォルト: 0

AdvReachableTime - ルーターによって送信されるルーター広告メッセージの到達可能時間フィールドに配置する値。値がゼロの場合、(このルーターによって) 未指定を意味します。3,600,000ミリ秒 (1時間) を超えてはなりません (MUST)。

デフォルト: 0

AdvRetransTimer - ルーターによって送信されるルーター広告メッセージの再送信タイマーフィールドに配置する値。値がゼロの場合、(このルーターによって) 未指定を意味します。

デフォルト: 0

AdvCurHopLimit - ルーターによって送信されるルーター広告メッセージのCur Hop Limitフィールドに配置する値。値は、インターネットの現在の直径に設定する必要があります。値がゼロの場合、(このルーターによって) 未指定を意味します。

デフォルト: 実装時に有効だった「割り当て番号 (Assigned Numbers)」[ASSIGNED] で指定された値。

AdvDefaultLifetime - インターフェースから送信されるルーター広告のルーター寿命フィールドに配置する値 (秒単位)。ゼロまたはMaxRtrAdvIntervalから9000秒の間でなければなりません (MUST)。値がゼロの場合、ルーターがデフォルトルーターとして使用されないことを示します。これらの制限は、IPv6が異なるリンク層上でどのように動作するかを説明する特定の文書によって上書きされる場合があります。たとえば、ポイントツーポイントリンクでは、ピアは相手側のデバイスの数と状態に関する十分な情報を持っているため、広告は必要ありません。

デフォルト: 3 * MaxRtrAdvInterval

AdvPrefixList - インターフェースから送信されるルーター広告メッセージのプレフィックス情報オプションに配置するプレフィックスのリスト。

デフォルト: ルーターがルーティングプロトコルを介して、広告が送信されるインターフェースに対してオンリンクであると広告するすべてのプレフィックス。

プレフィックス情報オプションで広告される各プレフィックスについて、ルーターは以下の構成変数も許可しなければなりません (MUST):

AdvValidLifetime - プレフィックス情報オプションの有効寿命に配置する値 (秒単位)。すべて1の指定値 (0xffffffff) は無限を表します。

デフォルト: 2592000秒 (30日)、固定 (つまり、連続する広告で同じまま)。

AdvOnLinkFlag - プレフィックス情報オプションのオンリンクフラグ (「L-bit」) フィールドに配置する値。

デフォルト: TRUE

AdvPreferredLifetime - プレフィックス情報オプションの優先寿命に配置する値 (秒単位)。すべて1の指定値 (0xffffffff) は無限を表します。

デフォルト: 604800秒 (7日)、固定 (つまり、連続する広告で同じまま)。

AdvAutonomousFlag - プレフィックス情報オプションの自律フラグフィールドに配置する値。

デフォルト: TRUE

6.2.2. 広告インターフェースになる (Becoming An Advertising Interface)

「広告インターフェース」という用語は、ルーターが定期的にルーター広告を送信するインターフェースを指します。ルーターは、システム管理者がインターフェースを広告インターフェースにすることを許可しなければなりません (MUST)。

インターフェースはいつでも広告インターフェースになる可能性があります。その際、ルーターは:

  • [ADDRCONF] で説明されているようにインターフェースを初期化します。

  • インターフェースから送信される最初のルーター広告をスケジュールします。送信時刻は、0からMAX_INITIAL_RTR_ADVERT_INTERVALの間に均等に分布した時刻に広告が送信されるように選択されます。

6.2.3. ルーター広告メッセージの内容 (Router Advertisement Message Content)

ルーターは、広告インターフェースから定期的および要請されたルーター広告を送信します。送信ルーター広告は、セクション4.2で示されたメッセージ形式と一致する以下の値で埋められます:

  • ルーター寿命フィールド: インターフェースの構成されたAdvDefaultLifetime。

  • MおよびOフラグ: それぞれインターフェースの構成されたAdvManagedFlagおよびAdvOtherConfigFlag。

  • Cur Hop Limitフィールド: インターフェースの構成されたCurHopLimit。

  • 到達可能時間フィールド: インターフェースの構成されたAdvReachableTime。

  • 再送信タイマーフィールド: インターフェースの構成されたAdvRetransTimer。

  • オプション:

    • 送信元リンク層アドレスオプション: インターフェースのリンク層アドレス。このオプションは含めるべきですが (SHOULD)、アドレスを持たないリンクでは省略してもよいです (MAY)。

    • MTUオプション: 値がゼロでない場合、インターフェースの構成されたAdvLinkMTU値。AdvLinkMTUがゼロの場合、MTUオプションは送信されません。

    • プレフィックス情報オプション: AdvPrefixListにリストされている各プレフィックスに対して1つのプレフィックス情報オプション。各プレフィックス情報オプションには、以下のフィールドが含まれます:

      • 「オンリンク」フラグ: AdvOnLinkFlag
      • 有効寿命フィールド: AdvValidLifetime
      • 「自律アドレス構成」フラグ: AdvAutonomousFlag
      • 優先寿命フィールド: AdvPreferredLifetime
      • プレフィックス: 広告されるプレフィックス

ルーターは、上記で指定されたもの以外のオプションを含めてもよいです (MAY)。

6.2.4. 要請されていないルーター広告の送信 (Sending Unsolicited Router Advertisements)

ルーターは、その存在を通知し、さまざまなリンクおよびインターネットパラメータを広告するために、要請されていないルーター広告を送信します。各広告インターフェースについて、ルーターは全ノードマルチキャストアドレスに定期的なマルチキャストルーター広告を送信します。

ルーター広告が送信されるレートは、ルーターの構成変数によって制御されます: MaxRtrAdvIntervalおよびMinRtrAdvInterval。インターフェースが広告インターフェースになると、ルーターは最初の広告を送信した後に期限切れになるタイマーをインターフェース上で初期化します。タイマーは、0からMAX_INITIAL_RTR_ADVERT_INTERVALの間に均等に分布した時刻に期限切れになるように設定されます。

最初の広告の後、その後のルーター広告はタイマーが期限切れになったときに送信されます。タイマーは、タイマーが期限切れになるたびに、MinRtrAdvIntervalからMaxRtrAdvIntervalの間に均等に分布した値にリセットされます。

6.2.5. 広告インターフェースでなくなる (Ceasing To Be An Advertising Interface)

インターフェースはいつでも広告インターフェースでなくなる可能性があります。たとえば、シャットダウンしているルーターまたは無効化されているインターフェースは、広告インターフェースでなくなる場合があります。そのような場合、ルーターは、ルーター寿命フィールドがゼロの1つ以上 (ただしMAX_FINAL_RTR_ADVERTISEMENTS以下) の最終マルチキャストルーター広告をインターフェース上で送信すべきです (SHOULD)。シャットダウンしているルーターの場合、インターフェースは広告インターフェースでなくなることを宣言し、その後最終ルーター広告を送信する必要があります (SHOULD)。ルーターがインターフェースがしばらく利用できない可能性が高いことを認識している場合 (例えば、差し迫った電力喪失のため)、ルーターはより速いレート (つまり、MinRtrAdvIntervalごとに1回よりも頻繁に) で最終ルーター広告を送信してもよいです (MAY)。

6.2.6. ルーター要請の処理 (Processing Router Solicitations)

ホストは、受信したルーター要請メッセージを黙って破棄しなければなりません (MUST)。

定期的な要請されていない広告の送信に加えて、ルーターは広告インターフェースで受信した有効なルーター要請に応答してルーター広告を送信します。ルーターは、要請ホストのアドレスに直接ユニキャストで応答を送信することを選択してもよいですが (要請の送信元アドレスが未指定アドレスでない場合) (MAY)、通常のケースは全ノードグループへの応答をマルチキャストすることです。後者の場合、インターフェースの間隔タイマーは、要請されていない広告が送信されたかのように、新しいランダム値にリセットされます (セクション6.2.4を参照)。

すべての場合において、ルーター要請に応答して送信されるルーター広告は、0からMAX_RA_DELAY_TIME秒の間のランダムな時間だけ遅延されなければなりません (MUST)。(複数の要請に応答して単一の広告が送信される場合、遅延は最初の要請に対して相対的です。) さらに、全ノードマルチキャストアドレスに送信される連続するルーター広告は、MIN_DELAY_BETWEEN_RAS秒ごとに1つの広告以下にレート制限されなければなりません (MUST)。

ルーターの構成がインターフェースでルーター広告を送信すべきでないことを示している場合、ルーターはルーター要請を無視することを選択してもよいです (MAY)。

6.2.7. ルーター広告の一貫性 (Router Advertisement Consistency)

誤構成の可能性を最小限に抑えるため、ルーターは広告する値で一貫性があるべきです (SHOULD)。つまり、同じリンク上のルーターは、AdvCurHopLimit、AdvManagedFlag、AdvOtherConfigFlag、AdvLinkMTU、AdvReachableTime、およびAdvRetransTimerに対して同じ値を広告すべきです (SHOULD)。ただし、そのような一貫性は必須ではなく、ルーターが異なる値を広告した場合でも、システムは正常に動作するはずですが、おそらく最適ではありません。

リンク上のルーターがAdvCurHopLimitに対して異なる値を広告する場合、ホストは最近学習した広告値を使用します。AdvCurHopLimitが変更された場合、すべてのホストが新しい値を広告するルーター広告を受信するまで、一部のホストは1つの値を使用し、他のホストは別の値を使用する可能性があります。

ルーターがAdvReachableTimeまたはAdvRetransTimerに対して異なる値を広告する場合、ホストはセクション6.3.2で説明されているように独自の値を計算します。

ルーターがAdvDefaultLifetimeに対して異なる値を広告する場合、ホストは最大値を広告するルーターを優先します。

6.3. ホスト仕様 (Host Specification)

6.3.1. ホスト構成変数 (Host Configuration Variables)

ホストは、各インターフェースについて、システム管理によって以下の変数を構成できるようにすべきです (SHOULD):

DupAddrDetectTransmits - 暫定アドレスに対して重複アドレス検出を実行する際に送信される連続する近隣要請メッセージの数。値がゼロの場合、暫定アドレスに対して重複アドレス検出が実行されないことを示します。値が1の場合、フォローアップの再送信なしの単一の送信を示します。

デフォルト: 1、ただし、特定のリンクタイプ上でIPを操作することをカバーする文書でリンクタイプ固有の値によって上書きされる場合があります。

6.3.2. ホスト変数 (Host Variables)

ホストは、インターフェースごとに以下の変数を維持します:

RouterList - セクション5で定義されているデフォルトルーターのリスト。

PrefixList - セクション5で定義されているプレフィックスのリスト。

LinkMTU - リンクのMTU値。リンク層が提供するlinkmtu値から初期化されます。

CurHopLimit - 送信IPパケットのIPヘッダーのホップカウントフィールドに配置すべきデフォルト値。「IPv6割り当て番号 (IPv6 Assigned Numbers)」文書 [ASSIGNED] で指定された値に初期化されます。

BaseReachableTime - ランダムなReachableTime値を計算するために使用される基本値。REACHABLE_TIMEに初期化されます。

ReachableTime - 到達可能性確認を受信した後、近隣ノードが到達可能と見なされる時間。ReachableTimeは、近隣到達不可能性検出アルゴリズムによって使用されます (セクション7.3を参照)。ルーター広告から学習されるか、デフォルト値に設定されます。これは、MIN_RANDOM_FACTORからMAX_RANDOM_FACTOR倍のBaseReachableTimeの間に均等に分布したランダム値です。BaseReachableTimeが変更された場合 (ルーター広告のため)、または少なくともルーター広告が受信されない場合でも数時間ごとに、新しいランダム値を計算する必要があります (SHOULD)。

RetransTimer - アドレスを解決する際または近隣ノードの到達可能性を調査する際に、近隣ノードへの近隣要請メッセージの再送信間の時間。重複アドレス検出中にも使用されます ([ADDRCONF]を参照)。RetransTimerは、ルーター広告から学習されるか、デフォルト値に設定されます。

6.3.3. インターフェースの初期化 (Interface Initialization)

ホストは、すべてのマルチキャスト対応インターフェースで全ノードマルチキャストアドレスに参加します。

6.3.4. 受信したルーター広告の処理 (Processing Received Router Advertisements)

有効なルーター広告を受信すると、ホストはパケットの送信元アドレスを抽出し、以下を実行します:

  • アドレスがまだホストのデフォルトルーターリストに存在せず、広告のルーター寿命がゼロでない場合、リストに新しいエントリを作成し、広告のルーター寿命フィールドからその無効化タイマー値を初期化します。

  • 以前に受信した広告の結果としてアドレスがすでにホストのデフォルトルーターリストに存在する場合、その無効化タイマーを新しく受信した広告のルーター寿命値にリセットします。

  • アドレスがすでにホストのデフォルトルーターリストに存在し、受信したルーター寿命値がゼロの場合、セクション6.3.5で指定されているように、エントリを直ちにタイムアウトします。

ルーター広告フィールド (例: Cur Hop Limit、Reachable Time、Retrans Timer) には、未指定を示す値が含まれる場合があります。そのような場合、パラメータは無視され、ホストはすでに使用している値を使い続けるべきです (SHOULD)。

受信したCur Hop Limit値がゼロでない場合、ホストはそのCurHopLimit変数を受信した値に設定すべきです (SHOULD)。

受信したReachable Time値がゼロでない場合、ホストはそのBaseReachableTime変数を受信した値に設定すべきです (SHOULD)。新しい値が以前の値と異なる場合、ホストは新しいランダムなReachableTime値を再計算すべきです (SHOULD)。

受信したRetrans Timer値がゼロでない場合、ホストはそのRetransTimer変数を受信した値に設定すべきです (SHOULD)。

MTUオプションが存在する場合、ホストは、値が最小リンクMTU [IPv6] 以上であり、リンクタイプ固有の文書 (例えば、[IPv6-ETHER]) で指定されたデフォルトのLinkMTU値を超えない限り、オプションの値をLinkMTUにコピーすべきです (SHOULD)。

「オンリンク」(L) フラグが設定されたプレフィックス情報オプションは、オンリンクと見なされるべきアドレスの範囲を識別するプレフィックスを示します。ただし、オンリンクフラグがゼロに設定されたプレフィックス情報オプションは、オンリンク決定に関する情報を伝えず、プレフィックスでカバーされるアドレスがオフリンクであることを意味すると解釈してはなりません (MUST NOT)。以前に広告されたプレフィックスを無効にする唯一の方法は、有効寿命をゼロに設定してそのプレフィックスを広告することです (セクション6.3.5を参照)。

オンリンクフラグが設定された各プレフィックス情報オプションについて、ホストは以下を実行します:

  • プレフィックスがまだプレフィックスリストに存在せず、プレフィックス情報オプションの有効寿命フィールドがゼロでない場合、プレフィックスの新しいエントリを作成し、その無効化タイマーをプレフィックス情報オプションの有効寿命値に初期化します。

  • 以前に受信した広告の結果としてプレフィックスがすでにホストのプレフィックスリストに存在する場合、その無効化タイマーをプレフィックス情報オプションの有効寿命値にリセットします。新しい寿命値がゼロの場合、プレフィックスを直ちにタイムアウトします (セクション6.3.5を参照)。

  • プレフィックス情報オプションの有効寿命フィールドがゼロで、プレフィックスがホストのプレフィックスリストに存在しない場合、オプションを黙って無視します。

自律アドレス構成フラグ (A-flag) は、プレフィックスをステートレスアドレス自動構成に使用できるかどうかを示します。A-flagの処理は [ADDRCONF] で指定されています。

6.3.5. プレフィックスとデフォルトルーターのタイムアウト (Timing out Prefixes and Default Routers)

プレフィックスの有効寿命が期限切れになると、プレフィックスはプレフィックスリストから削除されます。プレフィックスは、その有効寿命が期限切れになると無効化されます。

デフォルトルーターリストのエントリに対して無効化タイマーが期限切れになるたびに、そのエントリは破棄されます。デフォルトルーターリストからルーターを削除する場合、ノードは、ルーターを使用するすべてのエントリが (削除された) ルーターへのトラフィックの送信を続けるのではなく、再度ネクストホップ決定を実行するように、宛先キャッシュを更新しなければなりません (MUST)。

6.3.6. デフォルトルーター選択 (Default Router Selection)

デフォルトルーターを選択するアルゴリズムは、ホストのポリシーに依存します。このアルゴリズムは、モビリティソリューションの一部である可能性があります。

以下のルールは、より良いアルゴリズムがない場合に使用されるべき (SHOULD) デフォルトルーター選択アルゴリズムを表しています。

  • 到達可能または到達可能である可能性が高い (つまり、INCOMPLETE以外の任意の状態の) ルーターは、到達可能性が不明または疑わしい (つまり、INCOMPLETE状態の) ルーターよりも優先されるべきです (SHOULD)。実装は、到達可能なルーターが利用可能な場合に常に到達可能なルーターを返す限り、常に同じルーターを返すか、ラウンドロビン方式でルーターリストを巡回することを選択できます。

  • リスト上のルーターが到達可能または到達可能である可能性が高いことが知られていない場合、ルーターはラウンドロビン方式で選択されるべきであり (SHOULD)、その後のデフォルトルーターの要求が、他のすべてのルーターが選択されるまで同じルーターを返さないようにします。

この場合にルーターリストを巡回することで、到達可能であることが知られていない間、すべての利用可能なルーターが到達可能性について積極的にテストされることが保証されます。

6.3.7. ルーター要請の送信 (Sending Router Solicitations)

インターフェースが有効になると、ホストは最大MAX_RTR_SOLICITATIONSのルーター要請メッセージを送信できます (MAY)。ただし、要請されていないルーター広告が期待されないインターフェース (例えば、ホストのみのリンク、またはホストがデフォルトルーターで構成されているリンク) では、ルーター要請を送信する必要はありません。

ホストは、全ルーターマルチキャストアドレスにルーター要請を送信します。

ホストは、最大MAX_RTR_SOLICITATIONSのルーター要請メッセージを送信すべきであり (SHOULD)、各メッセージは少なくともRTR_SOLICITATION_INTERVAL秒間隔で送信されます。ただし、ネットワークの輻輳を避けるため、最初の送信前の遅延は、0からMAX_RTR_SOLICITATION_DELAYの間に均等に分布したランダム値であるべきです (SHOULD)。この遅延により、異なるホストからのルーター要請が同期しないことが保証されます。

MAX_RTR_SOLICITATIONSの要請を送信した後、ホストはルーター広告を受信するか、リンクにルーターが存在しないと結論付けます。ホストがMAX_RTR_SOLICITATIONSの要請を送信した後、ルーター要請の送信を停止した後に到着する可能性のあるルーター広告を引き続き受信および処理すべきです (SHOULD)。