OSPFのDR/BDRはPreemptしない?その1

この記事は約7分で読めます。
スポンサーリンク

CCIEではOSPFについてかなり細かい所まで求められます。

時にはCCNPで勉強した常識が覆される事も多々あります。

例えばNetwork Typeが違うルータ同士でもネイバー張れるとかですね。

今日の記事はそんなCCNPで勉強したOSPFのDR/BDRについてです。

CCNPまでの常識、DR/BDRはPreemptしない?

これは覚えてますか?Network Typeが「Broadcast」または「Non-Broadcast」の場合はDR/BDRをリンク間で選出します。

CCNPでは「このBR/BDRはPreemptしない」つまり、一度BR/BDRが決まれば、その関係は変更されないと学びました。

例えば、以下の構成を見てください。

GNS3 Project - Blog_OSPF_Wait 2015-07-26 20-28-23

このシンプルな構成でR1-R3のOSPFを有効にした場合、BR/BDRは誰になりますか?

簡単ですよね。

R1(config-if)#do sh ip ospf nei

Neighbor ID Pri State Dead Time Address Interface
192.168.1.2 1 FULL/BDR 00:00:37 192.168.1.2 FastEthernet0/0
192.168.1.3 1 FULL/DR 00:00:36 192.168.1.3 FastEthernet0/0

想定通り、Router-IDが大きいR3がDR、R2がBDRになりましたね。

ここで、R4もOSPFを有効にした場合、BR/BDRは変わりますか?

R4(config-if)#ip ospf 1 area 0
R4(config-if)#
*Jul 26 20:33:38.007: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.2 on FastEthernet0/0 from LOADING to FULL, Loading Done
*Jul 26 20:33:38.007: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.3 on FastEthernet0/0 from LOADING to FULL, Loading Done
R4(config-if)#do sh ip ospf nei

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.1       1   2WAY/DROTHER    00:00:33    192.168.1.1     FastEthernet0/0
192.168.1.2       1   FULL/BDR        00:00:36    192.168.1.2     FastEthernet0/0
192.168.1.3       1   FULL/DR         00:00:39    192.168.1.3     FastEthernet0/0

どうですか?DR/BDRは変わっていないです。Router-IDが大きいR4が来たにもかかわらずです。

確かに、この場合はDR/BDRはPreemptしませんね。CCNPで勉強した通りです。

面白い事をします

ここで、ちょっと特別なケースを作り出します。(Brianの受け売りですが)

まず、OSPFパケットだけを拒否するACLを作ります。

R4(config)#ip access-list extended NO_OSPF
R4(config-ext-nacl)#deny os
R4(config-ext-nacl)#deny ospf any any
R4(config-ext-nacl)#permit ip any any

これを、R4のOSPF通信を行っているF0/0のINにだけ適用します。

つまり、R4はOSPFパケットを一切受け取れません。

R4(config-if)#ip access-group NO_OSPF in
R4(config-if)#

しばらくすると、R4はR1-R3がダウンしたと認識します。(OSPFパケットを受け取れないので当然です)

*Jul 26 20:46:58.067: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.2 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R4(config-if)#
*Jul 26 20:46:59.431: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.3 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
R4(config-if)#
*Jul 26 20:47:01.651: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on FastEthernet0/0 from EXSTART to DOWN, Neighbor Down: Dead timer expired

この状態で、R1-R3とR4のOSPFの状態を見てみましょう。(R1は明らかにDROTHERなので割愛)

R2:

R2(config-if)#do sh ip o int bri
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Fa0/0        1     0               192.168.1.2/24     1     BDR   2/3

R3:

R3(config-if)#do sh ip o int bri
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Fa0/0        1     0               192.168.1.3/24     1     DR    2/3

R4:

R4(config-if)#do sh ip o int bri
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Fa0/0        1     0               192.168.1.4/24     1     DR    0/0

同じリンク上でR3とR4が共に自分自身がDRだと申告しています。

というか、R4が変なのです(OSPFの仕様上は正しいけど)。R4はリンク上で自分以外はOSPFパケットを出していないと思っているので、自分自身以外がOSPFの世界に存在していないと思っているのです。だから、自分をDRにすることしかできません。

つまり、一つのセグメントにR1-R3のOSPFの世界と、R4のOSPFの世界があるイメージと表現したらわかりやすいでしょうか。

ここで、R4のACLを解除したらどうなるでしょうか?

SEP_271415071204-thumb-1000xauto-16081

なんだか、いやーな予感がしますよね。

でも、こういう実験をするのはTOZAIは大好きです!業務で鉢合わせするのはいやですけど(笑)

で、これはどうなると思いますか?

今回の記事ではここまでにさせてください。一度どうなるか考えてみてほしいです。

次回のこの記事の続きで答えを書きますね!

そもそも、何でこの記事を書いたか

OSPFはネイバーを維持する関係のパラメーターが多く、また関連も複雑です

  • Network Type
  • Hello/Dead/Waitインターバル
  • BR/BDRの関係

CCIEではそれらのかなり細かい所を求められます。パラメーターは全て深い理解を身につけているべきです。

例えば、Hello/DeadインターバルはCCNPで多少勉強したと思います。じゃあ、Waitはどうですか?

Helloは1秒以下で設定出来ますか?Helloの秒は本当に一致する必要がありますか?(CCNPでは絶対に一致する必要があると学んだはず)

CCNPでは学んだ知識がCCIEでは覆る事があります。それは決してCCNPで嘘をついているというわけではないんです。

OSPFは本当の仕様レベルで挙動を説明するととても複雑なので、例外を一つ一つCCNPで説明出来ないだけです。

逆に、CCIEではそういう仕様レベルでの質問が出る可能性もあります。今回の例もそのうちの一つです。

なので、その辺のさわりを感じてほしかったんです。

 

 

OSPFの書籍紹介の記事でも説明しましたが、Official Guide Vol1のOSPFセクションはOSPFの仕様を理解する上で非常に参考になります。まだ購入していない方、小手先の勉強でCCIE合格は無理です。必要な書籍は購入して、しっかり体系だった勉強をしましょう。勉強に重要な書籍をケチって回り道をしても、ラボ試験にFailしたら結局時間と費用を無駄にします。

必要な書籍は、買いましょう。

コメント

タイトルとURLをコピーしました