Appearance
OSPF
基本概念
OSPF (Open Shortest Path First) はリンクステート型のIGP (Interior Gateway Protocol)。LSAをフラッディングしてLSDBを同期し、SPF(Dijkstra)で最短経路を計算する。
| 項目 | 内容 |
|---|---|
| 種別 | リンクステート型 IGP |
| メトリック | Cost(小さいほど優先) |
| 設計単位 | エリア(Area 0 がバックボーン) |
| 代表バージョン | OSPFv2(IPv4), OSPFv3(IPv6) |
役割と用語
| 用語 | 意味 |
|---|---|
| Router ID | OSPF装置を識別する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 config | router-id <A.B.C.D> |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf | Router ID |
show ip ospf interface | Process ID, Router ID |
重要: ルータIDはOSPFプロセス起動時に決定される。変更後は clear ip ospf process またはプロセス再起動が必要。
ネイバー状態遷移
OSPFのネイバーは以下の状態を順に遷移して隣接関係(Adjacency)を確立する。
| 状態 | 意味 | 次の状態へのトリガー |
|---|---|---|
| Down | Helloを受信していない初期状態 | 相手からHelloパケットを受信 |
| Attempt | NBMAのみ。手動ネイバーへHello送信中 | 相手からHelloを受信 |
| Init | 相手からHelloを受信したが、自分のRouter IDが相手のHelloに未掲載 | 相手のHelloに自分のRouter IDが含まれている(双方向確認) |
| 2-Way | 双方向通信確立。DR/BDR選出はここで行われる | DR/BDRとの関係ならDBD交換開始(DROTHERどうしはここで停止) |
| ExStart | DBD交換の準備。Master/SlaveをルータIDで決定 | Master/Slave決定後、DBDパケットの交換開始 |
| Exchange | DBDパケットでLSDBの概要(LSAヘッダ一覧)を交換中 | DBD交換完了。不足LSAがあればLSRを送信 |
| Loading | LSR (Link State Request) で不足LSAを要求し、LSU (Link State Update) で受信中 | 全LSAの受信完了 |
| Full | LSDB同期完了。完全な隣接関係が確立された状態 | - |
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 の State | FULL/DR、FULL/BDR、2WAY/DROTHER などで表示 |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf neighbor | State(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アドレスの確認 |
| エリアID | network コマンドで指定 | show ip ospf interface |
| 認証 | なし(デフォルト) | show ip ospf interface |
| スタブエリアフラグ | Normal(デフォルト) | show ip ospf / show ip protocols |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| Hello間隔変更 | Interface config | ip ospf hello-interval <秒> |
| Dead間隔変更 | Interface config | ip ospf dead-interval <秒> |
| 認証設定 | Interface config | ip ospf authentication message-digest |
重要: process-id、router-id、priority、maximum-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 |
| プライオリティ 0 | DR/BDRに選出されない |
| 非プリエンプティブ | DRが決まった後に高プライオリティのルータが参加しても、DRは入れ替わらない |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| プライオリティ変更 | Interface config | ip ospf priority <0-255> |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf interface | State(DR/BDR/DROTHER)、Priority、Designated Router / Backup DR |
show ip ospf neighbor | DR/BDRのルータID、State |
重要: プライオリティが同じならルータIDで決まる(大きい方が勝つ)。
重要: DR/BDR選出は非プリエンプティブ。既にDRが存在する場合、後から高い値のルータが参加してもDRは変わらない。
ネットワークタイプ
OSPFのネットワークタイプはインタフェースの種類によって自動的に選択される。
| ネットワークタイプ | DR/BDR選出 | Hello | Dead | 設定コマンド |
|---|---|---|---|---|
| ブロードキャストマルチアクセス | する | 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 interface | Network 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 | 名前 | 生成者 | 内容 | スコープ |
|---|---|---|---|---|
| 1 | Router LSA | 全ルータ | 自ルータのリンク情報 | エリア内 |
| 2 | Network LSA | DR | マルチアクセスNW情報 | エリア内 |
| 3 | Summary LSA | ABR | 他エリアプレフィックス | エリア間 |
| 4 | ASBR Summary LSA | ABR | ASBR到達情報 | エリア間 |
| 5 | External LSA | ASBR | 外部経路(再配送) | OSPFドメイン全体 |
| 7 | NSSA External LSA | NSSA内ASBR | NSSA外部経路 | NSSAエリア内 |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf database | LSAタイプごとのLSDB |
show ip ospf database summary | LSA3の一覧 |
エリアタイプ
| エリア | LSA 3 | LSA 5 | LSA 7 | 備考 |
|---|---|---|---|---|
| Normal | ○ | ○ | - | 制限なし |
| Stub | ○ | × | - | ABRがデフォルトルート注入 |
| Totally Stub | × | × | - | エリア間詳細を抑えてデフォルト中心 |
| NSSA | ○ | × | ○ | LSA7をABRでLSA5へ変換 |
| Totally NSSA | × | × | ○ | NSSA + LSA3も制限 |
覚え方: Stub系は「LSA5を止める」。Totallyが付くと「LSA3も止める」。
Cost と経路選択
| 項目 | 内容 |
|---|---|
| 基本 | 合計Costが小さい経路を優先 |
| 計算 | 参照帯域幅 / IF帯域幅(実装依存) |
| 使い分け | 帯域差を反映した経路制御に使う |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| 参照帯域幅変更 | Router config | auto-cost reference-bandwidth <mbps> |
| IFコスト手動設定 | Interface config | ip ospf cost <value> |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf interface brief | IFごとのArea/Cost |
show ip route ospf | OSPF経路(O / O IA / O E1 / O E2) |
経路集約
OSPFの経路集約には2種類のコマンドがあり、使う場所が異なる。
| コマンド | 実行場所 | 用途 | 集約対象 | LSAタイプ |
|---|---|---|---|---|
area <ID> range <IP> <mask> | ABR | エリア間経路の集約 | エリア間経路 | LSA3 |
summary-address <IP> <mask> | ASBR | 外部経路の集約 | 再配送経路 | LSA5 |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| エリア間経路集約 | Router config | area <エリアID> range <集約IP> <マスク> |
| 外部経路集約 | Router config | summary-address <集約IP> <マスク> |
| パラメータ | 注意点 |
|---|---|
| エリアID(area range) | 集約元のエリアIDを指定する(宛先エリアではない) |
| マスク | サブネットマスク形式で指定(ワイルドカードマスクではない) |
| 確認コマンド | 見るポイント |
|---|---|
show ip route ospf | 集約経路が O IA で反映されているか |
show ip ospf database summary | LSA3の集約状況 |
「外部経路」と「エリア間経路」の違い
| 用語 | 意味 | LSAタイプ | 経路表示 | 集約コマンド |
|---|---|---|---|---|
| エリア間経路 | OSPF内の別エリアから来た経路 | LSA3 | O IA | area range |
| 外部経路 | OSPF以外のプロトコル(EIGRP, RIP, Static等)からredistributeされた経路 | LSA5 | O E1 / O E2 | summary-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 config | ip prefix-list <名前> seq <番号> deny <IP/mask> |
| ① 暗黙のdeny対策 | Global config | ip prefix-list <名前> seq <番号+1> permit 0.0.0.0/0 le 32 |
| ② エリア間フィルタ適用 | Router config | area <エリアID> filter-list prefix <名前> in | out |
distribute-list と filter-list の違い
| コマンド | フィルタ対象 | 動作 | 影響範囲 |
|---|---|---|---|
distribute-list prefix <LIST> in | ルーティングテーブルへの経路登録 | LSDBには入るが、ルーティングテーブルに載せない | 自ルータのみ |
area <X> filter-list prefix <LIST> in | LSA3のフラッディング | ABRがLSA3を生成しない | エリア全体 |
| 確認コマンド | 見るポイント |
|---|---|
show ip route ospf | フィルタ後の経路が消えているか |
show ip ospf database summary | LSA3が生成されていないか |
重要: 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 config | passive-interface <IF> |
| 全IFをpassiveに(例外を除外) | Router config | passive-interface default + no passive-interface <IF> |
| 確認コマンド | 見るポイント |
|---|---|
show ip protocols | Passive Interface一覧 |
show ip ospf interface | 対象IFのOSPF状態(Hello/Dead送信なし) |
重要: passive-interfaceはHello送信を止めるだけで、そのIFのネットワーク広告は止めない。広告するには network コマンドでの指定が必要。
重要: 「隣接関係を確立しないため」が正解。「経路をアドバタイズしないため」は誤り。
OSPF 基本設定
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| OSPFプロセス開始 | Global config | router ospf <process-id> |
| ネットワークをAreaへ所属 | Router config | network <ip> <wildcard> area <area-id> |
| Router ID明示 | Router config | router-id <A.B.C.D> |
| 受動IF設定 | Router config | passive-interface <IF> |
| デフォルト配布 | Router config | default-information originate |
| 確認コマンド | 見るポイント |
|---|---|
show ip ospf neighbor | 隣接状態(FULL/2WAYなど)、Dead Time |
show ip ospf | Process ID, Router ID, Area情報 |
show ip ospf database | LSAタイプごとのLSDB |
show ip ospf interface | IF別のOSPF設定・状態 |
show running-config | section router ospf | OSPF設定全体 |
重要: process-id はローカル値で、隣接成立条件ではない。
重要: 隣接不成立時は「Helloパケットと隣接構築条件」セクションの チェック項目を優先確認。