OSPFのDR選出条件

OSPFのDR選出条件について、勘違いしていたこと。

DRの選出条件は、priority, loopback address, i/fの最大のアドレスの順に決定するというのは、参考書やらいろんなサイトに書かれていてみんな知っていることであろうが、実際のDRの決定には、もうひとつ大事な要件がかけている。いや、二つだ。

1つは、ルーター(OSPFプロセス)が起動していること、もうひとつはOSPFが起動してからdead-intervalが経過しているかどうか、である。

OSPFが起動してることなんて、当たり前じゃないかと笑うかもしれないが、そんなことはない。

あるネットワークに3台のルータがあるとする。まだルーティングプロトコルは設定していない。その状態から、OSPFを設定することになった。ひとりで。それくらい一人でやれ、ということで。

まずルータAに設定を入れる。次にB、Cと。ループバックアドレスは1.1.1.1, 2.2.2.2, 3.3.3.3となっていて、OSPFに関する設定はすべて初期値とする。ちなみにpriorityは1, hello intervalは10、deadintervalは40。多分、多くのルータがそうなっていると思う。

さあ、DRになるルータはどれか。

教科書的な答えであればCであるが、実際にはおそらくA。でなければB。CがDRになることはまずないだろう。

なぜか。それは、ルータAにOSPFの設定を入れてからBに設定を入れるまで、多分40秒が経過するからだ。

ルータAは自分以外のneighborがいないので、dead intervalの経過を待って、自分をDRとする。そのあとに自分よりDRとなる条件が優位なルータが起動しても、DRの再選出はおこなわれないため、ルータAがDRのままとなる。

Aを設定して40秒以内にBを設定すればB,Cまで設定すればCになる。

でも、40秒以内に3台のルータにOSPFの設定を入れるのは多分無理だろう。だから、AがDRになるというわけである。

もちろん、資格試験とかでAだと答えたらバツだけどね。