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

付録 D. IsRouter フラグルールの要約 (Summary of IsRouter Rules)

この付録では、近隣キャッシュエントリで IsRouter フラグを維持および使用するためのルールを要約します。

D.1. 概要 (Overview)

近隣キャッシュエントリの IsRouter フラグは、近隣がルータであることが既知かどうかを示します。この情報は適切なパケット転送に不可欠であり、近隣探索動作のいくつかの側面に影響します。

D.2. IsRouter フラグの設定 (Setting the IsRouter Flag)

IsRouter フラグは、次の場合に TRUE に設定されます:

  1. Router Advertisement を受信: 近隣から Router Advertisement を受信した場合、その近隣の IsRouter フラグを TRUE に設定しなければなりません (MUST)。

  2. Router フラグ付き Neighbor Advertisement: Router (R) フラグが設定された Neighbor Advertisement を受信した場合、IsRouter フラグを TRUE に設定しなければなりません (MUST)。

  3. Router Solicitation を送信: Router Solicitation を送信する際、宛先の近隣キャッシュエントリが作成されるか既に存在する場合、実装は IsRouter を TRUE に設定してもよい (MAY)(ただし、通常 Router Solicitation は全ルータマルチキャストアドレスに送信されます)。

D.3. IsRouter フラグのクリア (Clearing the IsRouter Flag)

IsRouter フラグは、次の場合に FALSE に設定されます:

  1. Router フラグなしの Neighbor Advertisement: Router (R) フラグがクリア(0に設定)された Neighbor Advertisement を受信した場合、IsRouter フラグを FALSE に設定しなければなりません (MUST)。

  2. Router Lifetime の満了: Default Router List 内のルータの Router Lifetime が満了した場合、IsRouter フラグは TRUE のままですが、ルータは Default Router List から削除されます。

D.4. IsRouter フラグの使用 (Using the IsRouter Flag)

IsRouter フラグはいくつかの方法で動作に影響します:

D.4.1. Default Router List 管理

  • IsRouter = TRUE の近隣のみが Default Router List に追加可能
  • IsRouter が TRUE から FALSE に変更されると、近隣は Default Router List から削除されなければなりません (MUST)

D.4.2. Redirect メッセージ処理

Redirect メッセージを処理する場合:

  • リダイレクトのターゲットが宛先と異なる場合、ターゲットはより良い最初のホップルータとして示されています
  • リダイレクトターゲットの IsRouter フラグは TRUE に設定されるべきです (SHOULD)

D.4.3. Neighbor Advertisement 処理

IsRouter=TRUE の近隣から R=0 の Neighbor Advertisement を受信した場合:

  • IsRouter を FALSE に設定
  • Default Router List から近隣を削除
  • これは通常、近隣がルータでなくなったことを示します

D.5. 競合状態と特殊ケース (Race Conditions and Special Cases)

D.5.1. ルータからホストへの遷移

ルータがホストに遷移する場合:

  1. ルータは Router Advertisement の送信を停止
  2. ルータは R=0 の Neighbor Advertisement を送信
  3. ホストは NA を受信し、IsRouter=FALSE を設定し、Default Router List から削除
  4. ホスト上の Router Lifetime は最終的に満了(まだ削除されていない場合)

D.5.2. ホストからルータへの遷移

ホストがルータになる場合:

  1. 新しいルータは Router Advertisement の送信を開始
  2. ホストは RA を受信し、IsRouter=TRUE を設定
  3. 新しいルータが Default Router List に追加される
  4. ルータはプロセスを迅速化するために R=1 の Neighbor Advertisement を送信してもよい (MAY)

D.5.3. 同時メッセージ

Router Advertisement と Neighbor Advertisement (R=0) の両方が近接して受信される場合:

  • 受信した順序でメッセージを処理
  • 最後に処理されたメッセージが最終的な IsRouter 状態を決定
  • Router Advertisement は常に IsRouter=TRUE を設定
  • R=0 の Neighbor Advertisement は常に IsRouter=FALSE を設定

D.6. 実装ガイドライン (Implementation Guidelines)

D.6.1. 初期化

新しい近隣キャッシュエントリを作成する場合:

  • IsRouter のデフォルト値は FALSE であるべきです (SHOULD)
  • 受信したメッセージによって確認された場合にのみ TRUE に設定

D.6.2. 整合性チェック

実装は整合性を確保すべきです (SHOULD):

  • IsRouter=TRUE で Default Router List エントリが存在しない場合、これは許容されます(近隣はルータだがデフォルトルータではない)
  • Default Router List エントリが存在するが IsRouter=FALSE の場合、これはリストからルータを削除することによって修正されなければならないエラー条件です (MUST)

D.6.3. ログとデバッグ

実装はデバッグのために IsRouter フラグの遷移を記録すべきです (SHOULD):

  • IsRouter が FALSE から TRUE に変更される場合
  • IsRouter が TRUE から FALSE に変更される場合
  • IsRouter が FALSE になったためにルータが Default Router List から削除される場合

D.7. セキュリティ上の考慮事項 (Security Considerations)

IsRouter フラグは攻撃者によって操作される可能性があります:

攻撃: R=0 の悪意のある Neighbor Advertisement

  • 攻撃者は正当なルータに対して R=0 の NA を送信
  • ホストは Default Router List からルータを削除
  • トラフィックが中断される

軽減策:

  • 近隣探索メッセージを認証するために SEND (RFC 3971) を使用
  • IsRouter フラグ変更に対する合理的なレート制限を実装
  • 疑わしいパターン(頻繁な IsRouter 遷移)を監視

D.8. 状態遷移の例 (Example State Transitions)

例1: 通常のルータ探索

初期: 近隣キャッシュエントリなし
アクション: fe80::1 から Router Advertisement を受信
結果: エントリを作成、IsRouter=TRUE、Default Router List に追加

例2: ルータが利用不可能になる

初期: IsRouter=TRUE、Default Router List 内のルータ
アクション: R=0 の Neighbor Advertisement を受信
結果: IsRouter=FALSE、Default Router List から削除

例3: ルータへのリダイレクト

初期: fe80::2 の近隣キャッシュエントリなし
アクション: fe80::2 をより良いルータとして示す Redirect メッセージを受信
結果: エントリを作成、IsRouter=TRUE(リダイレクトターゲットによって暗示)

D.9. 要約表 (Summary Table)

イベントIsRouter に対するアクションDefault Router List への影響
RA を受信TRUE に設定リストに追加(存在しない場合)
R=1 の NA を受信TRUE に設定直接的な影響なし
R=0 の NA を受信FALSE に設定リストから削除
Redirect を受信TRUE に設定(ターゲットに対して)ターゲットが優先ルータになる
Router Lifetime が満了変更なしリストから削除