Skip to content

OSPF

基本概念

OSPF (Open Shortest Path First) はリンクステート型のIGP (Interior Gateway Protocol)。LSAをフラッディングしてLSDBを同期し、SPF(Dijkstra)で最短経路を計算する。

項目内容
種別リンクステート型 IGP
メトリックCost(小さいほど優先)
設計単位エリア(Area 0 がバックボーン)
代表バージョンOSPFv2(IPv4), OSPFv3(IPv6)

役割と用語

用語意味
Router IDOSPF装置を識別する32-bit値
ABR (Area Border Router)複数エリアに接続し、エリア間経路を中継する
ASBR (Autonomous System Boundary Router)外部経路をOSPFへ再配送する
DR / BDRマルチアクセスNWで隣接数を抑える代表/副代表
項目ポイント
Area 0すべての通常エリアは最終的にArea 0へ接続する
マルチエリア化SPF計算負荷を分割し、LSDB肥大化を抑制する

ルータID の選出

ルータIDはOSPFルータを一意に識別する32-bit値。以下の優先順位で決まる。

優先順位選出基準
router-id コマンドで明示指定(config-router)# router-id 1.1.1.1
起動中のループバックIFの最大IPアドレスLoopback 1: 2.2.2.2 → ルータID=2.2.2.2
起動中の物理IFの最大IPアドレスFa0/0: 192.168.5.1, Fa1/0: 192.168.2.1 → ルータID=192.168.5.1
設定目的コンフィグモードコマンド
Router ID明示指定Router configrouter-id <A.B.C.D>
確認コマンド見るポイント
show ip ospfRouter ID
show ip ospf interfaceProcess ID, Router ID

重要: ルータIDはOSPFプロセス起動時に決定される。変更後は clear ip ospf process またはプロセス再起動が必要。

ネイバー状態遷移

OSPFのネイバーは以下の状態を順に遷移して隣接関係(Adjacency)を確立する。

状態意味次の状態へのトリガー
DownHelloを受信していない初期状態相手からHelloパケットを受信
AttemptNBMAのみ。手動ネイバーへHello送信中相手からHelloを受信
Init相手からHelloを受信したが、自分のRouter IDが相手のHelloに未掲載相手のHelloに自分のRouter IDが含まれている(双方向確認)
2-Way双方向通信確立。DR/BDR選出はここで行われるDR/BDRとの関係ならDBD交換開始(DROTHERどうしはここで停止)
ExStartDBD交換の準備。Master/SlaveをルータIDで決定Master/Slave決定後、DBDパケットの交換開始
ExchangeDBDパケットでLSDBの概要(LSAヘッダ一覧)を交換中DBD交換完了。不足LSAがあればLSRを送信
LoadingLSR (Link State Request) で不足LSAを要求し、LSU (Link State Update) で受信中全LSAの受信完了
FullLSDB同期完了。完全な隣接関係が確立された状態-
mermaid
stateDiagram-v2
    Down --> Init : Hello受信
    Init --> 2Way : 双方向確認\n(相手Helloに自Router ID)
    2Way --> ExStart : DR/BDRとの関係
    2Way --> 2Way : DROTHERどうし\n(ここで停止)
    ExStart --> Exchange : Master/Slave決定
    Exchange --> Loading : DBD交換完了\n不足LSAあり
    Exchange --> Full : DBD交換完了\n不足LSAなし
    Loading --> Full : 全LSA受信完了
試験ポイント内容
DROTHERどうし2-Wayで止まる(FULLにならない)
DR/BDRとの関係FULLまで遷移する
ExStartで止まる場合MTU不一致が原因であることが多い
show ip ospf neighbor の StateFULL/DR、FULL/BDR、2WAY/DROTHER などで表示
確認コマンド見るポイント
show ip ospf neighborState(FULL/2WAY/INIT等)、Dead Time
show ip ospf neighbor detail状態遷移の詳細、再送カウンタ

覚え方: Down → Init → 2-Way → ExStart → Exchange → Loading → Full。「DI2-EELF」で覚える。

重要: DROTHERどうしは2-Wayまで。FULLになるのはDRまたはBDRとの間だけ。

重要: ExStartで止まったらMTU不一致を疑う。

Helloパケットと隣接構築条件

OSPFはHelloパケットでネイバーを発見・維持する。Helloに含まれる情報のうち、一致が必要なものが不一致だと隣接関係が構築されない。

Helloパケットの内容と一致条件

情報一致の必要説明
ルータIDネイバー検出には不要
ネイバーの一覧DR/BDR選出のために含まれるが、不一致でも隣接は成立
OSPFのプライオリティDR/BDR選出に使うが、一致不要
DRのIPアドレスDR/BDR情報だが、不一致でも隣接成立
BDRのIPアドレス同上
Hello間隔不一致で隣接失敗
Dead間隔不一致で隣接失敗
ネットワークマスク不一致で隣接失敗
エリアID不一致で隣接失敗
認証パスワード不一致で隣接失敗
スタブエリアフラグ不一致で隣接失敗

隣接不成立時のチェック項目

チェック項目デフォルト値確認コマンド
Hello間隔ブロードキャスト:10秒 / NBMA:30秒show ip ospf interface
Dead間隔ブロードキャスト:40秒 / NBMA:120秒show ip ospf interface
ネットワークマスクIFのマスクIFアドレスの確認
エリアIDnetwork コマンドで指定show ip ospf interface
認証なし(デフォルト)show ip ospf interface
スタブエリアフラグNormal(デフォルト)show ip ospf / show ip protocols
設定目的コンフィグモードコマンド
Hello間隔変更Interface configip ospf hello-interval <秒>
Dead間隔変更Interface configip ospf dead-interval <秒>
認証設定Interface configip ospf authentication message-digest

重要: process-idrouter-idprioritymaximum-paths は隣接成立の必須条件ではない。これらが不一致でも隣接は成立する。

重要: Hello間隔を変更するとDead間隔も自動調整されるが、明示設定がある場合はそちらが優先される。

DR/BDR の選出

マルチアクセスネットワーク(Ethernetなど)で、LSAフラッディングを効率化するために DR (Designated Router) と BDR (Backup Designated Router) を選出する。

優先順位基準説明
プライオリティip ospf priority <0-255> で設定。最大値→DR、次点→BDR
ルータIDプライオリティ同値時。ルータID最大→DR、次点→BDR
項目内容
デフォルトプライオリティ1
プライオリティ 0DR/BDRに選出されない
非プリエンプティブDRが決まった後に高プライオリティのルータが参加しても、DRは入れ替わらない
設定目的コンフィグモードコマンド
プライオリティ変更Interface configip ospf priority <0-255>
確認コマンド見るポイント
show ip ospf interfaceState(DR/BDR/DROTHER)、Priority、Designated Router / Backup DR
show ip ospf neighborDR/BDRのルータID、State

重要: プライオリティが同じならルータIDで決まる(大きい方が勝つ)。

重要: DR/BDR選出は非プリエンプティブ。既にDRが存在する場合、後から高い値のルータが参加してもDRは変わらない。

ネットワークタイプ

OSPFのネットワークタイプはインタフェースの種類によって自動的に選択される。

ネットワークタイプDR/BDR選出HelloDead設定コマンド
ブロードキャストマルチアクセスする10秒40秒ip ospf network broadcast
NBMA (Non Broadcast Multi Access)する30秒120秒ip ospf network non-broadcast
ポイントツーポイントしない10秒40秒ip ospf network point-to-point
ポイントツーマルチポイントしない30秒120秒ip ospf network point-to-multipoint

デフォルトネットワークタイプの判別

IF種別デフォルトのネットワークタイプ
GigabitEthernet / FastEthernetブロードキャストマルチアクセス
Serial(PPP / HDLC)ポイントツーポイント
フレームリレー(物理IF)NBMA
フレームリレー(ポイントツーポイント サブIF)ポイントツーポイント
フレームリレー(マルチポイント サブIF)NBMA
確認コマンド見るポイント
show ip ospf interfaceNetwork Type、Hello/Dead間隔、State(DR/BDR/POINT_TO_POINT)

覚え方: DR/BDR選出は「マルチアクセス系(broadcast / NBMA)」だけ。Point-to-Point / Point-to-Multipoint では選出しない。

重要: Ethernet = broadcast(Hello 10秒)、Serial = point-to-point(Hello 10秒)がデフォルト。試験で頻出。

重要: 隣接構築にはネットワークタイプの一致も必要。片方がbroadcastで片方がpoint-to-pointだと隣接が上がらない。

LSAタイプ一覧

Type名前生成者内容スコープ
1Router LSA全ルータ自ルータのリンク情報エリア内
2Network LSADRマルチアクセスNW情報エリア内
3Summary LSAABR他エリアプレフィックスエリア間
4ASBR Summary LSAABRASBR到達情報エリア間
5External LSAASBR外部経路(再配送)OSPFドメイン全体
7NSSA External LSANSSA内ASBRNSSA外部経路NSSAエリア内
確認コマンド見るポイント
show ip ospf databaseLSAタイプごとのLSDB
show ip ospf database summaryLSA3の一覧

エリアタイプ

エリアLSA 3LSA 5LSA 7備考
Normal-制限なし
Stub×-ABRがデフォルトルート注入
Totally Stub××-エリア間詳細を抑えてデフォルト中心
NSSA×LSA7をABRでLSA5へ変換
Totally NSSA××NSSA + LSA3も制限

覚え方: Stub系は「LSA5を止める」。Totallyが付くと「LSA3も止める」。

Cost と経路選択

項目内容
基本合計Costが小さい経路を優先
計算参照帯域幅 / IF帯域幅(実装依存)
使い分け帯域差を反映した経路制御に使う
設定目的コンフィグモードコマンド
参照帯域幅変更Router configauto-cost reference-bandwidth <mbps>
IFコスト手動設定Interface configip ospf cost <value>
確認コマンド見るポイント
show ip ospf interface briefIFごとのArea/Cost
show ip route ospfOSPF経路(O / O IA / O E1 / O E2

経路集約

OSPFの経路集約には2種類のコマンドがあり、使う場所が異なる。

コマンド実行場所用途集約対象LSAタイプ
area <ID> range <IP> <mask>ABRエリア間経路の集約エリア間経路LSA3
summary-address <IP> <mask>ASBR外部経路の集約再配送経路LSA5
設定目的コンフィグモードコマンド
エリア間経路集約Router configarea <エリアID> range <集約IP> <マスク>
外部経路集約Router configsummary-address <集約IP> <マスク>
パラメータ注意点
エリアID(area range)集約のエリアIDを指定する(宛先エリアではない)
マスクサブネットマスク形式で指定(ワイルドカードマスクではない)
確認コマンド見るポイント
show ip route ospf集約経路が O IA で反映されているか
show ip ospf database summaryLSA3の集約状況

「外部経路」と「エリア間経路」の違い

用語意味LSAタイプ経路表示集約コマンド
エリア間経路OSPF内の別エリアから来た経路LSA3O IAarea range
外部経路OSPF以外のプロトコル(EIGRP, RIP, Static等)からredistributeされた経路LSA5O E1 / O E2summary-address

重要: area range はABRで、summary-address はASBRで使う。間違えると集約されない。

重要: area range のエリアIDは集約元(経路が存在する側)のエリアを指定する。

重要: 「外部」= OSPFドメインの外(別プロトコル)であり、「別エリア」ではない。ここを混同しやすいので注意。

エリア間ルートフィルタリング

ABRで area filter-list を使い、LSA3(エリア間経路)のフィルタリングができる。

in / out の方向

方向意味動作
area <X> filter-list prefix <LIST> inエリアXが受信するルート情報にフィルタエリアXへLSA3を送らない
area <X> filter-list prefix <LIST> outエリアXから送信するルート情報にフィルタエリアXの経路を他エリアに出さない

覚え方: area X in = エリアXに「入れない」、area X out = エリアXから「出さない」。

設定手順(2ステップ)

ステップコンフィグモードコマンド
① プレフィックスリスト定義Global configip prefix-list <名前> seq <番号> deny <IP/mask>
① 暗黙のdeny対策Global configip prefix-list <名前> seq <番号+1> permit 0.0.0.0/0 le 32
② エリア間フィルタ適用Router configarea <エリアID> filter-list prefix <名前> in | out

distribute-list と filter-list の違い

コマンドフィルタ対象動作影響範囲
distribute-list prefix <LIST> inルーティングテーブルへの経路登録LSDBには入るが、ルーティングテーブルに載せない自ルータのみ
area <X> filter-list prefix <LIST> inLSA3のフラッディングABRがLSA3を生成しないエリア全体
確認コマンド見るポイント
show ip route ospfフィルタ後の経路が消えているか
show ip ospf database summaryLSA3が生成されていないか

重要: distribute-list in は自ルータのルーティングテーブルのみ影響。filter-list はLSA3自体を止めるのでエリア全体に影響する。

重要: プレフィックスリストの末尾は暗黙の deny all。permit 0.0.0.0/0 le 32(全許可)を忘れると全経路がフィルタされる。

passive-interface

passive-interface はそのIFでHelloパケットの送受信を停止し、OSPFの隣接関係を確立しないようにする設定。

項目内容
目的隣接ルータがいないIF(PC・サーバ接続先)でOSPFのやり取りを停止する
動作Hello送受信を停止 → 隣接関係が確立されない
経路広告passive-interfaceにしても network コマンドで含めれば、そのIFのネットワークはOSPFで広告される
セキュリティ不要なOSPF隣接を防ぎ、誤った経路情報の流入リスクを抑える
設定目的コンフィグモードコマンド
特定IFをpassiveにRouter configpassive-interface <IF>
全IFをpassiveに(例外を除外)Router configpassive-interface default + no passive-interface <IF>
確認コマンド見るポイント
show ip protocolsPassive Interface一覧
show ip ospf interface対象IFのOSPF状態(Hello/Dead送信なし)

重要: passive-interfaceはHello送信を止めるだけで、そのIFのネットワーク広告は止めない。広告するには network コマンドでの指定が必要。

重要: 「隣接関係を確立しないため」が正解。「経路をアドバタイズしないため」は誤り。

OSPF 基本設定

設定目的コンフィグモードコマンド
OSPFプロセス開始Global configrouter ospf <process-id>
ネットワークをAreaへ所属Router confignetwork <ip> <wildcard> area <area-id>
Router ID明示Router configrouter-id <A.B.C.D>
受動IF設定Router configpassive-interface <IF>
デフォルト配布Router configdefault-information originate
確認コマンド見るポイント
show ip ospf neighbor隣接状態(FULL/2WAYなど)、Dead Time
show ip ospfProcess ID, Router ID, Area情報
show ip ospf databaseLSAタイプごとのLSDB
show ip ospf interfaceIF別のOSPF設定・状態
show running-config | section router ospfOSPF設定全体

重要: process-id はローカル値で、隣接成立条件ではない。

重要: 隣接不成立時は「Helloパケットと隣接構築条件」セクションの チェック項目を優先確認。