変更要約: 初版
3.4OSPFのDR/BDR選出とルータID
ブロードキャストネットワークで隣接数の爆発を抑えるDR(代表ルータ)/BDR(バックアップ代表ルータ)の役割と、優先度(既定1・0はDR不参加)→ルータIDの順で決まる選出、選出が非プリエンプティブである性質、そしてルータIDが手動→最高ロープバックIP→最高物理IPの順で決まる仕組みを、show ip ospf neighborのDR/BDR/DROTHER表示の診断を通じて学びます。
前節で見たとおり、ブロードキャストリンクではDR/BDRを選出します。CCNAでは「なぜ一番性能の良いルータがDRにならなかったのか」「ロープバックを足したのにルータIDが変わらないのはなぜか」といった、選出ルールの正確な理解が問われる診断が頻出です。この節では、選出が優先度→ルータIDで決まること、そして一度選ばれたDRは非プリエンプティブで居座ること、ルータIDが決まる順序を、実機の挙動として押さえます。
3.4.1DR/BDRの役割と選出ルール
- DR(代表ルータ)/BDR(バックアップ代表ルータ)=同一ブロードキャストセグメント上で、各ルータが全員と個別にFullの隣接を組むと隣接数が
n(n-1)/2に爆発する。これを防ぐため、代表としてDRを1台選び、全DROTHERはDRとBDRとだけFullになる。BDRはDR障害時に即座に引き継ぐ控えである。 - 選出は
①インタフェースの優先度(ip ospf priority、既定1・範囲0〜255)が最も高いルータがDR、次点がBDR。優先度が同じなら
②ルータIDが最も高いルータが勝つ。優先度0のルータはDR/BDRに一切ならない(常にDROTHER)。 - 選出は非プリエンプティブ=いったんDRが決まった後に、より高い優先度のルータが加わってもDRを奪い返さない。既存のDRが落ちるかOSPFがリセット(
clear ip ospf process)されるまで交代しない。これはHSRPのプリエンプト(次節)と対照的な性質。
3.4.2ルータIDの選出順序
- ルータID(32ビット・IPアドレス形式)は次の順で決まる:
①router-idコマンドで手動設定した値 →
②最も高いロープバックインタフェースのIP →
③最も高いアクティブな物理インタフェースのIP。ロープバックは物理より優先され、かつダウンしにくいので安定したルータIDになる。 - ルータIDはOSPFプロセス起動時に一度だけ確定する。運用中にロープバックを追加したり
router-idを変えても、clear ip ospf processでOSPFを再起動する(またはルータを再読み込みする)まで既存のルータIDは変わらない。
最頻出:DR/BDR選出は「優先度(高い方が勝ち・0は不参加)→ルータID(高い方が勝ち)」。選出は非プリエンプティブ(後から高優先度が来ても奪い返さない)。ルータIDは「手動→最高ロープバックIP→最高物理IP」の順で、プロセス起動時に確定しclear ip ospf processまで変わらない。 ポイントツーポイントではそもそもDR/BDRを選出しない点も忘れずに。
あなたはブロードキャストセグメントに、性能の高い新ルータR3を後から増設しました。R3のインタフェース優先度は既定の1ではなく100に上げてあり、「これでR3がDRになるはずだ」と考えたのに、show ip ospf neighborを見ると依然として先に立ち上がっていたR1がDRのままです。ここで「優先度100が効いていないのでは」と設定を疑うのは早計で、真因はOSPFのDR選出が非プリエンプティブである点にあります。DRはセグメント上で最初に選出が確定した時点のメンバーで決まり、あとから優先度の高いR3が加わっても既存のDR(R1)を奪い返さない——これは仕様どおりの正常動作です。R3を意図的にDRにしたいなら、clear ip ospf processでセグメント上のOSPFを再選出させる(メンテナンス時間に実施)必要があります。もう1つよくあるのが、安定したルータIDを狙ってR3にロープバックインタフェース(高いIP)を後から設定したのに、show ip ospfのルータIDが物理インタフェースのIPのままだ、というケースです。これもルータIDはプロセス起動時に一度確定し、後からロープバックを足してもclear ip ospf processするまで変わらないという仕様によるもので、設定ミスではありません。DR選出とルータID、どちらも「変更を反映するにはOSPFプロセスの再起動が要る」という共通の落とし穴があり、これを知っていれば「反映されない=故障」という誤診を避けられます。
| 判断 | 第1基準 | 第2基準(同点時) | 特記 |
|---|---|---|---|
| DR/BDR選出 | 優先度が高い(既定1) | ルータIDが高い | 優先度0は不参加・非プリエンプティブ |
| ルータID決定 | `router-id`手動設定 | 最高ロープバックIP | 次点は最高物理IP・起動時に確定 |
ひっかけ: 「後から優先度の高いルータを追加すれば自動的にそれがDRになる」は誤りです——OSPFのDR選出は非プリエンプティブで、既存のDRが落ちるかclear ip ospf processするまで交代しません。また「ロープバックを追加すればルータIDが自動で最高ロープバックIPに更新される」も誤り=ルータIDはプロセス起動時に確定し、再起動するまで変わりません。DR選出とルータIDは「最も性能の良い/最も新しいルータが自動的に主役になる」わけではない点に注意。
3.4.3この節のまとめ
- ブロードキャストではDR/BDRを選出し、DROTHERはDR/BDRとだけFullになる(隣接数の爆発を防ぐ)
- 選出は優先度(高い方・0は不参加)→ルータID(高い方)の順で、非プリエンプティブ(後から高優先度でも奪い返さない)
- ルータIDは手動→最高ロープバックIP→最高物理IPの順、プロセス起動時に確定し
clear ip ospf processまで変わらない
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. ブロードキャストセグメントでOSPFが安定稼働した後、より高い優先度(100)を設定した新ルータR3を増設した。しかし`show ip ospf neighbor`では先に稼働していたR1がDRのままで、R3はDROTHERになっている。この状況の説明として最も適切なものはどれか。
Q2. OSPFのルータIDについて、`router-id`コマンドによる手動設定がなく、ロープバックインタフェースも存在しないルータでは、ルータIDは何に基づいて決まるか。最も適切なものはどれか。
Q3. 同一ブロードキャストセグメント上で、あるルータを「絶対にDRやBDRにさせたくない(常にDROTHERとして動作させたい)」という運用方針がある。このルータのインタフェースに設定すべき最も適切なものはどれか。

