OSPFプロトコルの基礎 - 概念・動作原理・初期設定ガイド

OSPFプロトコルとは

動的ルーティングプロトコルは、ネットワークの変化に自動的に対応できるため、大規模なネットワークにおいて静的ルーティングよりも広く採用されています。OSPF(Open Shortest Path First)は、リンクステートアルゴリズムを採用した代表的なIGP(Interior Gateway Protocol)であり、RFC2328で標準化されています。

静的ルーティングの限界

静的ルートは手動設定が必要であり、以下の問題があります:
- ネットワーク規模が大きくなると、設定作業が膨大になる。
- トポロジ変更時に自動収束せず、手動での修正が必要。

動的ルーティングプロトコルの分類

距離ベクトル型プロトコル

距離ベクトル型プロトコルでは、ルータは自身のルーティングテーブルを定期的に近隣に送信します。各ルータは宛先までの「方向」と「距離」のみを把握し、ネットワーク全体のトポロジを理解しません。

リンクステート型プロトコル

リンクステート型プロトコルでは、ルータはルート情報ではなく「リンクステート」を交換します。LSA(Link State Advertisement)には、インタフェースの状態やコスト、接続先などが記述されます。

LSAフラッディング

OSPFルータは、隣接関係を構築した後、LSAを相互にフラッディングします。

LSDBの構築

各ルータは受信したLSAをLSDB(Link State Database)に格納し、ネットワーク全体のトポロジを把握します。

SPF計算

各ルータはLSDBを基に、SPF(Shortest Path First)アルゴリズムを実行し、自身をルートとする最短路のツリーを生成します。

ルーティングテーブルの生成

SPF計算で得られた最適パスをルーティングテーブルに登録します。

OSPFの基本的な用語

エリア(Area)

OSPFエリアは、ルータを論理的にグループ化するための識別子(Area ID)です。これにより、LSAのフラッディング範囲を制限できます。

Router-ID

OSPFドメイン内でルータを一意に識別するためのIDです。手動設定または自動選択されます。

コスト(Cost)

OSPFのメトリックはコストで表され、各インタフェースに設定されます。デフォルトのコストは 100 Mbit/s / インタフェース帯域幅 で計算されます。経路全体のコストは、宛先から自身までの入り口インタフェースのコストの合計です。

OSPFプロトコルメッセージ

メッセージ名機能
Hello定期的に送信され、近隣関係の検出と維持に使用。
Database Description (DD)LSDBの概要情報を交換し、データベース同期の開始に使用。
Link State Request (LSR)不足するLSAを要求。
Link State Update (LSU)要求されたLSAを送信。
Link State Acknowledgment (LSAck)受信したLSAの確認応答。

OSPFの三大テーブル

近隣テーブル

display ospf peer コマンドで確認でき、OSPF近隣関係の状態を表示します。

LSDBテーブル

display ospf lsdb コマンドで確認でき、LSAのタイプや発信元ルータ(AdvRouter)が表示されます。

OSPFルーティングテーブル

display ospf routing コマンドで確認でき、宛先、コスト、ネクストホップなどが含まれます。これはシステムのルーティングテーブルとは別のものです。

OSPFの動作原理

近隣関係と隣接関係

OSPFルータ間には2つの関係があります:
- 近隣関係: Helloメッセージの交換により確立。
- 隣接関係: DD、LSR、LSU、LSAckの交換を経てLSDBが完全に同期した後に確立。隣接関係が確立されて初めてルーティング計算が行われます。

隣接関係確立の流れ

  1. 近隣関係の確立: Helloメッセージでお互いを発見。
  2. マスター/スレーブの選出: DDメッセージのシーケンス番号を使用。
  3. LSDB情報の交換: DDメッセージでLSDBの概要を交換。
  4. LSDBの同期: LSRとLSUを使用して不足情報を補完。

ネットワークタイプ

OSPFは4つのネットワークタイプをサポート: Broadcast、NBMA、P2MP、P2P。デフォルトはインタフェースのデータリンク層に依存し、両端で一致している必要があります。手動で変更可能です。

DRとBDR

マルチアクセスネットワーク(例:Ethernet)では、全ルータ間で隣接関係を張るとオーバーヘッドが大きいため、DR(Designated Router)とBDR(Backup Designated Router)を選出します。DRotherルータはDR/BDRとのみ隣接関係を確立し、DRother同士は2-way状態で止まります。BDRはDR障害時に引き継ぎます。

シングルエリアとマルチエリア

OSPFドメインは1つ以上のエリアで構成されます。
- シングルエリア: 設計は簡単ですが、大規模になるとLSDBが巨大化し、SPF計算負荷が高まります。
- マルチエリア: LSAフラッディングをエリア内に制限し、トポロジ変更の影響を局所化。ルート集約によりルーティングテーブルを縮小。

ルータの種類

  • Internal Router: 単一エリア内のみ。
  • ABR (Area Border Router): 複数エリアを接続。
  • Backbone Router: バックボーンエリア(Area 0)に属する。
  • ASBR (AS Boundary Router): 外部ネットワークと接続。

OSPFの基本設定

設定コマンド

  1. OSPFプロセスの作成(システムビュー)

    [Huawei] ospf [ process-id | router-id router-id ]

    process-id のデフォルトは1。router-id は手動指定可能。

  2. エリアの作成と移動(OSPFビュー)

    [Huawei-ospf-1] area area-id

    area-id は整数(0~4294967295)またはドット付き10進数。

  3. インタフェースの指定(エリアビュー)

    [Huawei-ospf-1-area-0.0.0.0] network network-address wildcard-mask

    wildcard-mask はサブネットマスクの反転。

  4. コストの設定(インタフェースビュー)

    [Huawei-GE1/0/1] ospf cost cost

    cost は1~65535。デフォルトは帯域幅から自動計算。

  5. 帯域幅参照値の変更(OSPFビュー)

    [Huawei-ospf-1] bandwidth-reference value

    value は1~2147483648(Mbit/s)、デフォルトは100。

  6. DR優先度の設定(インタフェースビュー)

    [Huawei-GigabitEthernet0/0/0] ospf dr-priority priority

    priority は0~255。値が大きいほど優先。

設定例

トポロジ: R1(1.1.1.1/32)とR3(3.3.3.3/32)をR2経由で接続。エリア0とエリア1を使用。

1. インタフェースの設定

#R1
[R1] interface LoopBack 0
[R1-LoopBack0] ip address 1.1.1.1 32
[R1-LoopBack0] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 10.1.12.1 30

#R3
[R3] interface LoopBack 0
[R3-LoopBack0] ip address 3.3.3.3 32
[R3-LoopBack0] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ip address 10.1.23.2 30

2. OSPFの設定

#R1
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.3

#R2
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 10.1.12.0 0.0.0.3
[R2-ospf-1-area-0.0.0.0] area 1
[R2-ospf-1-area-0.0.0.1] network 10.1.23.0 0.0.0.3

#R3
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 1
[R3-ospf-1-area-0.0.0.1] network 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.1] network 10.1.23.0 0.0.0.3

3. 確認

<R2> display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
 Peer Statistic Information
----------------------------------------------------------------------------
Area Id       Interface          Neighbor id     State
0.0.0.0       GigabitEthernet0/0/0  1.1.1.1        Full
0.0.0.1       GigabitEthernet0/0/1  3.3.3.3        Full

<R1> display ip routing-table
...
Destination/Mask Proto Pre Cost Flags NextHop Interface
 3.3.3.3/32   OSPF  10   2    D    10.1.12.2    GigabitEthernet0/0/0

<R1> ping -a 1.1.1.1 3.3.3.3
Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=254 time=50 ms

各ルータの近隣状態がFullであること、R1がOSPFで3.3.3.3/32を学習し、pingが成功していることを確認。

タグ: OSPF リンクステートルーティング ダイナミックルーティング ネットワーク設計 ルータ設定

7月16日 16:33 投稿