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が決まれば、その関係は変更されないと学びました。
例えば、以下の構成を見てください。
このシンプルな構成で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を解除したらどうなるでしょうか?
なんだか、いやーな予感がしますよね。
でも、こういう実験をするのは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したら結局時間と費用を無駄にします。
必要な書籍は、買いましょう。
コメント