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

7. Bringing Up Adjacencies (隣接関係の確立)

本章では、OSPF ルーターが隣接関係(Adjacency)を確立および維持する方法を詳しく説明します。隣接関係は OSPF プロトコルの中核であり、どのルーター間でリンクステートデータベースを同期するかを決定します。

章の概要 (Chapter Overview)

隣接関係の確立は多段階のプロセスであり、以下を含みます:

  • ネイバー発見
  • 双方向通信確認
  • マスター/スレーブ関係の協議
  • データベース同期
  • 完全隣接状態の達成

7.1 ネイバー関係 vs 隣接関係 (Neighbor vs Adjacency)

概念の区別

概念定義状態
ネイバー (Neighbor)Hello プロトコルで発見された直接接続ルーター2-Way 以上
隣接 (Adjacency)LSDB を同期するネイバーFull 状態

7.2 ネイバー状態機械 (Neighbor State Machine)

状態遷移図

Down → Init → 2-Way → ExStart → Exchange → Loading → Full

(隣接を確立しない)

状態の詳細

1. Down (失効)

  • 初期状態
  • Hello パケットを受信していない
  • ネイバーが到達不能

2. Init (初期化)

  • ネイバーから Hello パケットを受信
  • Hello に本ルーターが含まれていない
  • 単方向通信

3. 2-Way (双方向通信)

  • 受信した Hello に本ルーター ID が含まれる
  • 双方向通信が確立
  • 決定点:隣接関係を確立するか

4. ExStart (交換開始)

  • マスター/スレーブ関係を協議
  • Router ID が大きい方が Master
  • 初期 DD シーケンス番号を決定

5. Exchange (データベース記述)

  • データベース記述パケット(DD)を交換
  • ローカル LSDB の内容を記述
  • 完全な LSA ではなく、LSA ヘッダーのみ

6. Loading (ロード)

  • 欠落または期限切れの LSA を要求
  • Link State Request(LSR)を送信
  • Link State Update(LSU)を受信

7. Full (完全隣接)

  • データベースが完全に同期
  • 正常運用状態
  • ルート計算可能

7.3 隣接確立決定 (Adjacency Formation Decision)

決定マトリクス

ネットワークタイプ誰と隣接を確立理由
ポイントツーポイントすべてのネイバー1 つのネイバーのみ
ポイントツーマルチポイントすべてのネイバー複数のポイントツーポイントとして扱う
ブロードキャストDR と BDR隣接数を削減
NBMADR と BDR隣接数を削減

7.4 DR と BDR の選出 (DR/BDR Election)

選出アルゴリズム

選出タイミング

  • インターフェース状態が Waiting から DR または DROther に遷移
  • Hello パケットが再計算をトリガー

選出ルール

  1. 優先度比較

    • Router Priority = 0:選出に参加しない
    • 優先度が高いほど優先
  2. Router ID 比較

    • 優先度が同じ場合、Router ID が大きい方が勝利
  3. 2 段階選出

    • 第 1 段階:BDR を選出
    • 第 2 段階:DR を選出

7.5 データベース記述パケット (Database Description Packets)

DD パケット形式

ヘッダーフィールド

フィールドサイズ説明
Interface MTU16ビットインターフェース MTU サイズ
Options8ビットオプション機能
Flags8ビットI/M/MS フラグ
DD Sequence Number32ビットシーケンス番号

フラグビットの説明

  • I (Init): 最初の DD パケット
  • M (More): 後続の DD パケットあり
  • MS (Master/Slave): 1=Master, 0=Slave

LSR 生成タイミング

トリガー条件

  • Exchange 状態:ネイバーがより新しい LSA を持っている
  • Loading 状態:欠落している LSA の要求を続行
  • Full 状態:時折欠落している LSA を要求

LSU の用途

使用シナリオ

  1. LSR への応答(ユニキャスト)
  2. 新しい LSA のフラッディング(マルチキャスト/ブロードキャスト)
  3. 定期的な LSA のリフレッシュ

確認タイミング

遅延確認

  • 複数の LSA を受信後にバッチ確認
  • 遅延時間は通常 < 1 秒
  • パケット数を削減

即座確認

  • 重複した LSA を受信
  • より古い LSA インスタンスを受信

7.9 隣接の維持 (Adjacency Maintenance)

Hello プロトコルの役割

継続的監視

  • 定期的に Hello パケットを送信
  • ネイバーの Hello を監視
  • Dead Interval 内に Hello を受信しない場合、ネイバーは失効

Hello 間隔

  • ポイントツーポイント/ブロードキャスト:10 秒
  • NBMA:30 秒

Dead 間隔

  • デフォルト:Hello Interval × 4
  • ポイントツーポイント/ブロードキャスト:40 秒
  • NBMA:120 秒

7.10 隣接確立の例 (Adjacency Formation Examples)

例 1: ポイントツーポイントリンク

Router A ←────────→ Router B

ステップ 1: 双方が Hello を送信
A → B: Hello (ネイバーリストが空)
B → A: Hello (ネイバーリストが空)

ステップ 2: 双方向通信を確認
A → B: Hello (ネイバーリストに B を含む)
B → A: Hello (ネイバーリストに A を含む)
状態: 2-Way

ステップ 3: マスター/スレーブを協議
A → B: DD (I, M, MS=1, Seq=X)
B → A: DD (I, M, MS=0, Seq=X)
A が Master になる

ステップ 4: データベース記述を交換
A → B: DD (M, MS=1, Seq=X+1) [LSAヘッダーリスト]
B → A: DD (M, MS=0, Seq=X+1) [LSAヘッダーリスト]
...交換が完了するまで続行

ステップ 5: 欠落している LSA を要求
A → B: LSR [LSA 1, 2, 3 を要求]
B → A: LSU [LSA 1, 2, 3]
A → B: LSAck [1, 2, 3 を確認]

ステップ 6: Full 状態に到達
状態: Full
ルート計算可能

技術要点まとめ (Technical Summary)

主要メカニズム

  1. 状態機械駆動

    • 明確な状態遷移
    • 7 つのネイバー状態
    • イベント駆動の動作
  2. 信頼性のある同期

    • シーケンス番号メカニズム
    • 確認と再送信
    • Master/Slave 調整
  3. 最適化設計

    • DR/BDR が隣接を削減
    • バッチ確認がトラフィックを削減
    • 段階的なデータベース同期

参考資料 (References)


注意 (Note):隣接関係の確立は OSPF プロトコルの基礎です。状態遷移とパケット交換順序を理解することは、トラブルシューティングに不可欠です。