OSPF 仕様書
65 / 65 items
InfraLab Reference Series
Category: OSPF
Updated: 2026-05-12
infralab.jp
ospf
65 items
OSPF 仕様書
Abstract
OSPFv2 / OSPFv3 のパケット種別・隣接ステート・エリア種別 (Stub/NSSA)・LSA タイプ (1〜7)・DR/BDR 選出・コスト計算・タイマー・認証・Cisco 設定例・トラブルシュート。
Table of Contents
1. 概要
1.1. OSPF とは
Open Shortest Path First。リンクステート型 IGP。Dijkstra アルゴリズムで最短経路を計算。
Link-State / IGP / Dijkstra (SPF)1.2. OSPFv2
IPv4 用。RFC 2328。最も普及。
RFC 2328 / IPv41.3. OSPFv3
IPv6 用。RFC 5340。Address Family 拡張で IPv4 も収容可 (RFC 5838)。
RFC 5340 / IPv6 (AF 拡張で IPv4 も)1.4. 用途
エンタープライズ・ISP の AS 内ルーティング標準。階層 (area) で大規模 AS をスケール。
AS 内 / 階層型 (area) / 中〜大規模2. トランスポート
2.1. IP プロトコル番号
OSPF は IP プロトコル 89 として直接乗る。UDP/TCP は使わない。
IP proto 892.2. マルチキャストアドレス (v2)
AllSPFRouters 224.0.0.5 と AllDRouters 224.0.0.6。
AllSPFRouters: 224.0.0.5 / AllDRouters: 224.0.0.62.3. マルチキャストアドレス (v3)
IPv6 リンクローカル。FF02::5 と FF02::6。
FF02::5 / FF02::62.4. Router ID
32 ビット識別子。慣例として Loopback の IP を割当。
32-bit / Loopback IP 推奨3. パケット種別
3.1. OSPF パケットヘッダ
OSPFv2 packet に共通する 24B ヘッダ。Type により Hello/DBD/LSR/LSU/LSAck を識別する。
RFC 2328 OSPF Packet Header ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Type | Packet Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Router ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Area ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | AuType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Authentication |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.2. Hello
隣接関係確立と維持。Network Mask / Hello Interval / Dead Interval / 既知 Neighbor 等を含む。
type=1 / 隣接確立・維持
RFC 2328 Hello Packet ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Mask |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HelloInterval | Options | Rtr Pri |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RouterDeadInterval |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Backup Designated Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Neighbor ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.3. DBD (Database Description)
LSDB の要約を交換し、不足分を特定する。
type=2 / LSA ヘッダ要約
RFC 2328 Database Description Packet ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface MTU | Options | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DD Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LSA Headers ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.4. LSR (Link State Request)
不足している LSA を要求する。
type=3 / 不足 LSA 要求
RFC 2328 Link State Request Packet ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.5. LSU (Link State Update)
LSA を実際に運ぶ。LSA ヘッダ + 内容。
type=4 / LSA 配送
RFC 2328 Link State Update Packet ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of LSAs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LSAs ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.6. LSAck
LSU の確認応答。
type=5 / LSU の Ack
RFC 2328 Link State Acknowledgment Packet ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LSA Headers ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+4. 隣接ステート
4.1. Down
Hello を受信していない初期状態。
Hello 未受信4.2. Init
相手からの Hello を受信したが、自分の Router ID が記載されていない。
Hello 受信 / Neighbor リストに自分なし4.3. 2-Way
双方が互いの Router ID を Hello に記載している。マルチアクセス NW では DR/BDR 選出後に Adjacency に進むかを決定。
双方向 Hello / DR/BDR 選出ここで4.4. ExStart
マスター/スレーブと初期 DBD シーケンス番号を決める。
DBD master/slave 決定4.5. Exchange
DBD を交換中。
DBD 交換4.6. Loading
LSR/LSU で不足 LSA を取得中。
LSR/LSU 進行中4.7. Full
LSDB が完全同期。隣接関係確立。
完全同期 / 正常状態5. エリア種別
5.1. Backbone (Area 0)
他のすべてのエリアと隣接または仮想リンクで接続する必須エリア。
Area 0 / 必須 / 全 Area の接続点5.2. Standard Area
Type 1-5 LSA を受け入れる通常エリア。
Type 1,2,3,4,5 OK5.3. Stub Area
外部 (Type 5) を遮断、デフォルトルートだけ流す。ASBR は持てない。
Type 5 遮断 / Type 3 デフォルト注入5.4. Totally Stubby Area
Stub に加え Type 3 (Inter-Area) も遮断。Type 3 のデフォルトだけ。Cisco 拡張。
Type 3/4/5 遮断 / Type 3 default のみ / Cisco5.5. NSSA (Not-So-Stubby Area)
Stub の制約を緩和し、ASBR を許可。外部経路は Type 7 → ABR で Type 5 に変換。
Type 5 遮断 / Type 7 で再配布許可5.6. Totally NSSA
NSSA に Type 3 遮断を加えた Cisco 拡張。
Type 3/4/5 遮断 / Type 7 OK / Cisco6. LSA タイプ
6.1. LSA ヘッダ
OSPFv2 LSA に共通する 20B ヘッダ。LS Type と Link State ID で LSA の意味が決まる。
RFC 2328 LSA Header ASCII 図:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Age | Options | LS Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link State ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertising Router |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LS Checksum | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+6.2. Type 1 (Router LSA)
各ルータが自エリア内のリンク情報を生成。エリア内に flood。
Router LSA / 自エリア内 flood6.3. Type 2 (Network LSA)
DR が生成。マルチアクセス NW 上のルータ一覧。
Network LSA / DR 生成6.4. Type 3 (Summary / Inter-Area)
ABR が他エリアのプレフィックスを要約して生成。
Summary LSA / ABR 生成 / Inter-Area prefix6.5. Type 4 (ASBR Summary)
ABR が ASBR の位置 (Router ID) を他エリアに広告。
ASBR Summary / ABR 生成 / ASBR の場所6.6. Type 5 (External)
ASBR が他プロトコル (BGP/static 等) の経路を OSPF に注入。Stub には流れない。
External LSA / ASBR 生成 / E1 or E26.7. Type 7 (NSSA External)
NSSA 内の ASBR が生成。エリア内のみ flood、ABR が Type 5 に変換して外へ。
NSSA External / ABR で Type 5 に変換6.8. Type 9-11 (Opaque)
MPLS-TE 等で使用される拡張用 LSA。
Opaque LSA / RFC 5250 / TE 拡張7. DR / BDR 選出
7.1. DR 選出
高い OSPF priority (既定 1)、同点ならルータ ID。priority 0 は永遠に DR 候補にならない。
priority 高 → Router ID 高 / 0 は非候補7.2. BDR
DR 失効時に即昇格。DR と同時選出。
DR 失効時に昇格 / 同時選出7.3. DR/BDR が必要な NW タイプ
Broadcast (Ethernet) と NBMA (Frame Relay/ATM)。Point-to-Point/Point-to-Multipoint では不要。
Broadcast / NBMA は必要 / P2P 不要7.4. 非選出性 (non-election)
DR/BDR は preempt しない。後から高 priority/RID が入っても置き換わらない。
preempt なし / 後発高 priority は無効8. メトリック
8.1. Cost 計算
参照帯域 / IF 帯域。既定参照帯域 100Mbps (Cisco)。10Gbps 以上は同一 cost=1 になるので auto-cost reference-bandwidth で拡張する。
cost = ref-bw / IF-bw / 既定 ref-bw 100M8.2. auto-cost reference-bandwidth
ハイスピードリンクで適切な cost 差をつけるため。100000 (100Gbps) を推奨。
auto-cost reference-bandwidth 1000008.3. E1 (External Type 1)
外部メトリック + 内部 OSPF コストを足す。
external metric + internal cost8.4. E2 (External Type 2、既定)
外部メトリックのみ。OSPF 内のコストは加算しない。
external metric only / 既定9. タイマー
9.1. Hello Interval (Broadcast/P2P)
Hello の送出間隔。Ethernet などの broadcast / point-to-point の既定は 10 秒。
既定 10s (broadcast/P2P)9.2. Hello Interval (NBMA/P2MP)
NBMA や Point-to-Multipoint の既定は 30 秒。
既定 30s (NBMA/P2MP)9.3. Dead Interval
Hello が無くなってから隣接断とする時間。既定 4 × Hello。両端で一致必須。
既定 4 × Hello / 隣接機で一致必要9.4. LSA Refresh
各 LSA は 30 分ごとに再 flood (paranoia update)。
30 分間隔9.5. MaxAge
1 時間 (3600 秒) で LSA を期限切れと判定。
3600 秒 / 期限切れ9.6. SPF 遅延 (Throttle)
頻繁な SPF 再計算を抑制する指数バックオフ。
spf-interval initial / min / max (ms)10. 認証
10.1. 認証なし (Type 0)
既定。本番運用では避ける。
Type 0 / 既定 / 推奨しない10.2. 平文 (Type 1)
Hello に平文鍵を含める。実質保護にはならない。
Type 1 / 平文 (非推奨)10.3. MD5 / HMAC-SHA (Type 2)
Cryptographic 認証。key-chain で鍵ローテーション可。OSPFv2 で広く使われる。
Type 2 / MD5 or HMAC-SHA / key-chain10.4. OSPFv3 認証 (IPsec)
OSPFv3 自体は認証フィールドを持たず、IPsec AH/ESP に依存する設計。
IPsec AH/ESP (RFC 4552/7166)11. Cisco IOS 設定例
11.1. 基本設定
プロセス ID は機器ローカル。Router ID を明示するのが定石。
router ospf 1
router-id 10.0.0.1
network 10.0.10.0 0.0.0.255 area 011.2. インタフェース直接設定 (新書式)
network 文の代わりに IF で ip ospf area を直接指定。
interface Vlan10
ip ospf 1 area 011.3. Hello/Dead 変更
高速収束のため Hello を短く。両端で一致必須。
interface Gi0/0
ip ospf hello-interval 3
ip ospf dead-interval 1211.4. 認証 (MD5)
key-chain で運用するのが今風。
interface Gi0/0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 s3cret11.5. Stub Area 設定
エリア内の全ルータで同じ area type 宣言が必要。
router ospf 1
area 10 stub11.6. auto-cost 拡張
10G 以上で正しい cost 差をつける。
router ospf 1
auto-cost reference-bandwidth 10000012. 確認・トラブルシュート
12.1. ネイバ確認
Full に到達しているか、ステートと Dead タイマー残を確認。
show ip ospf neighbor [detail]12.2. インタフェース確認
IF ごとの area・cost・priority・Hello/Dead・DR/BDR を確認。
show ip ospf interface [Gi0/0]12.3. LSDB 確認
LSA の種別ごと、または特定 prefix の詳細。
show ip ospf database / database router12.4. MTU 不一致
DBD で MTU を比較し不一致だと ExStart で停止する典型障害。
症状: ExStart で停滞 / 確認: IP MTU 両端12.5. Hello/Dead 不一致
Hello/Dead の値が不一致だと隣接が確立しない。
症状: Init/2-Way 止まり / 両端値を一致12.6. Network type 不一致
片側 Broadcast、片側 P2P など Network Type 違いで DR/BDR が成立しないこともある。
show ip ospf interface で Type を確認13. References
- OSPF
- OSPFv2
- OSPFv3
- RFC 2328
- RFC 5340
- Link State
- LSA
- Area 0
- Stub
- NSSA
- DR
- BDR
- SPF
- Dijkstra