1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OSPF基礎理論

1
Last updated at Posted at 2026-04-05

CCNA合格に向けてOSPFの学習内容を簡単にまとめました。

OSPFの基本概念

OSPF(Open Shortest Path First)は、ダイナミックルーティングの一つで、IGP(Interior Gateway Protocol)に分類されるリンクステート型ルーティングプロトコルです。

リンクステート型では、ルータ同士がLSA(Link-State Advertisement)を交換し、その情報をもとにLSDB(Link-State Database)を作成する。
各ルータはLSDBをもとにSPFアルゴリズムを用いて最短経路を計算し、ルーティングテーブルを生成する。

OSPFのメトリックにはコストを用いる。

$$
Cost = \frac {100M [bps]}{帯域幅[bps]}
$$

RIPのように定期的にルーティングテーブル全体を交換する方式と比べると、OSPFはHelloパケットによる生存確認と、トポロジ変更時の更新が中心となるため、トラフィックを抑えやすく、コンバージェンスも速い。

また、エリアによってネットワークを階層化できるため、大規模ネットワークに適している。一方で、SPF計算を行うため、ルータ負荷は比較的高くなる。

OSPFの動作

Hello で Neighbor 関係と DR/BDR(役割)を決定し、DR/BDR とだけ Adjacency を形成する。
その Adjacency 間で LSDB を同期し、最終的に全ルータが同じトポロジを持ってルーティングを確定する。

OSPF動作順序

OSPFは次の流れで動作する。

  1. Helloパケットで隣接ルータを発見する
  2. ネイバー関係を形成する(DR、BDRの選出)
  3. 必要に応じてアジャセンシーを確立する
  4. DBDパケットでLSDBの概要を交換する
  5. LSRで不足しているLSAを要求する
  6. LSUでLSAを送信する
  7. LSAckで受信確認を返す
  8. LSDBを同期する
  9. SPF計算を行う
  10. ルーティングテーブルを生成する

OSPFパケット

OSPFのパケットはIPヘッダでカプセル化された情報であるため、それ以上のトランスポート層でカプセル化を行っていない

タイプ パケット名 各パケットの説明
1 Hello Helloパケットは、定期的に送信されるネイバーを発見と維持に使用される。DR、BDRの選出に使われる。Hello / Deadインターバルの一致が必要で、マルチキャスト ( 224.0.0.5 ) として送信される。
2 DBD(Database Description) アジャセンシを形成するネイバーに自身のLSDBに含まれるLSAの概要を通知する。
3 LSR(Link State Request) 不足しているLSAを要求する。
4 LSU(Link State Update) 要求されたLSAを送信する。
5 LSAck(Link State Acknowledgement) LSUを受信したことを通知するための確認応答として送信。

OSPFの構成要素

ルータID

OSPFルータを一意に識別するIDで、IPv4形式で表現される。
一般にループバックインターフェースのIPアドレスが使われる。

ネイバーとアジャセンシー

  • ネイバー:Helloを交換した状態
  • アジャセンシー:LSDB同期まで行う、論理的な隣接関係

image.png
簡易構成図

OSPFデータベース

テーブル名 説明
ネイバーテーブル Helloパケットを受け取ったルータ情報(隣のルーター)を格納したデータベース
LSDB(トポロジテーブル) LSAを格納したOSPFネットワークのトポロジ情報を保持するデータベース
ルーティングテーブル SPF計算の結果として作成される経路情報。

メトリック

  • OSPFではコストで経路選択を行う
  • 基本的には帯域幅をもとに決まる
  • コストの小さい経路が優先される

SPFアルゴリズム

  • Dijkstraアルゴリズムを利用する
  • LSDBから最短経路木を作成する
  • その結果をルーティングテーブルへ反映する

DR / BDR

ブロードキャストネットワークでは、全ルータ同士が完全に隣接すると非効率になるため、代表ルータを選出する。DR、BDRは全ルーターとアジャセンシを形成する。

  • DR:Designated Router
  • BDR:Backup Designated Router

DR / BDR は、Helloパケットの交換時に選出される。
選出はOSPFプライオリティが高い方が優先され、同じ場合はRouter IDが大きい方が優先される。

ポイントツーポイント回線(ルーターの一対一接続)では通常不要であり、Ethernetのようなマルチアクセス環境で重要となる。

補足:OSPFの状態遷移

OSPFネイバーは、次のような状態を経て確立される。

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

  • 2-Way:Helloのやり取りが成立した状態
  • Full:LSDB同期が完了した状態

補足:ネイバー成立条件

OSPFでネイバー関係を形成するには、主に次の条件が一致している必要がある。

条件 説明
エリア番号 同じエリアに属している必要がある。
Helloインターバル Helloパケットの送信間隔が一致している必要がある。
Deadインターバル ネイバーをダウンと判断するまでの時間が一致している必要がある。
サブネット 同一セグメントとして通信できる必要がある。
MTUサイズ DBD交換時などで不一致があるとアジャセンシー確立に失敗することがある。show interface で確認できる。

OSPFの設計

エリア

OSPFは階層設計が可能であり、大規模ネットワークではLSDB肥大化やSPF計算負荷を抑えるためにエリア分割を行う。トポロジーを分割する

Backbone Area(Area 0)

  • Area 0 がバックボーンエリア
  • 他エリアは原則としてArea 0 に接続する

ルータの役割

  • 内部ルータ
    すべてのインターフェースが同一エリア内にあるルータ

  • ABR
    複数エリアを接続するルータ。Area 0 と他エリアの境界に存在する

  • ASBR
    外部経路を再配布するルータ

  • Backbone Router
    Area 0 に接続しているルータ

OSPFの実装

基本設定

1. OSPFの有効化

プロセスIDは1から65,535の値で指定可能

Router(config)# router ospf <プロセスID>

2. Router IDの設定

DR, BDRを選出するための設定

Router(config)# router ospf <プロセスID>
Router(config-router)# router-id <ルーターID>
    
## ループバックインターフェースを作成し、そのIPアドレスをRouter IDとして利用することもある。
Router(config)# interface loopback 0
Router(config-if)# ip address <IPアドレス> 255.255.255.255

3. インターフェースの指定

指定ネットワークに一致する現在設定しているルーターのインターフェースをOSPFに参加させるための条件指定であり、相手機器を直接指定するものではない。
Hellowパケットの送受信をする

Router(config)# router ospf <プロセスID>
Router(config-router)# network <ネットワーク> <ワイルドカードマスク> area <エリアID>
    
## インターフェース設定モードで直接指定することもできる
Router(config)# interface <インターフェース>
Router(config-if)# ip ospf <プロセスID> area <エリアID>

補助設定

  1. passive-interface
  2. デフォルトルートの配布
  3. ネットワークタイプの変更
  4. ルータプライオリティの変更
  5. コストの変更
  6. 帯域幅の変更
  7. Hello / Deadインターバルの変更
  8. MTUミスマッチ検出の無効化
## passive-interface:Helloパケットを送信せず、ネイバーを形成しない 
Router(config)# router ospf <プロセスID>
Router(config-router)# passive-interface <インターフェース>

## デフォルトルートの配布:OSPFでデフォルトルートを広報する
Router(config-router)# default-information originate [always]

## ネットワークタイプの変更:OSPFが回線をどう扱うかを変更する
Router(config-if)# ip ospf network <broadcast | non-broadcast | point-to-multipoint | point-to-point>

## ルータプライオリティの変更:DR / BDR選出時の優先度を変更する
Router(config-if)# ip ospf priority <ルータープライオリティ>

## コストの変更:OSPFのメトリックを手動で変更する
Router(config-if)# ip ospf cost <コスト>

## 帯域幅の変更:コスト計算に影響する帯域値を変更する
Router(config-if)# bandwidth <帯域幅>

## Hello / Deadインターバルの変更:ネイバー監視に使うタイマーを変更する
Router(config-if)# ip ospf hello-interval <秒数>
Router(config-if)# ip ospf dead-interval <秒数>

## MTUミスマッチ検出の無効化:MTU不一致による隣接失敗を回避する場合に使う
Router(config-if)# ip ospf mtu-ignore

確認コマンド

## ネイバーの確認
Router# show ip ospf neighbor

## LSDBの要約情報の確認
Router# show ip ospf database

## OSPFのプロトコルの確認
Router# show ip protocols

## インターフェースの確認
Router# show ip ospf interface [インターフェース]

設定例

image.png
マルチエリアタイプのOSPFの設定例

設定コマンド
--------------router1のconfig--------------
!
!
interface Loopback0
 ip address 10.10.10.1 255.255.255.255
!
interface FastEthernet0/0
 ip address 172.16.10.1 255.255.255.0
 ip ospf 1 area 0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.100.1 255.255.255.0
 ip ospf 1 area 0
 duplex auto
 speed auto
!
!
router ospf 1
 log-adjacency-changes
 network 172.16.10.0 0.0.0.255 area 0
 network 192.168.100.0 0.0.0.255 area 0
!


--------------router2のconfig--------------
!
interface Loopback0
 ip address 10.10.10.2 255.255.255.255
!
interface FastEthernet0/0
 ip address 192.168.100.2 255.255.255.0
 ip ospf 1 area 0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.150.1 255.255.255.0
 ip ospf 1 area 1
 duplex auto
 speed auto
!
interface Vlan1
 no ip address
 shutdown
!
router ospf 1
 log-adjacency-changes
 network 192.168.100.0 0.0.0.255 area 0
 network 192.168.150.0 0.0.0.255 area 1
!


--------------router3のconfig--------------
!
interface Loopback0
 ip address 10.10.10.3 255.255.255.255
!
interface FastEthernet0/0
 ip address 192.168.150.2 255.255.255.0
 ip ospf 1 area 1
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 172.16.30.1 255.255.255.0
 ip ospf 1 area 1
 duplex auto
 speed auto
!
interface Vlan1
 no ip address
 shutdown
!
router ospf 1
 log-adjacency-changes
 network 192.168.150.0 0.0.0.255 area 1
 network 172.16.30.0 0.0.0.255 area 1
!
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?