OSPFのDR/BDRを選出する仕組みを見ていく
・DR(Disignated Router)
セグメント内でのLSAの交換を取りまとめる代表ルータ。
・BDR(Backup Disignated Router)
DRのバックアップとして動作するルータ。
・DROTHER
それ以外のルータ
LSAの交換を各ルータとDR,BDR間のみすることで、
トラフィック量を抑えることができる。
※LSA(Link State Advertisement : リンク状態広告)
インターフェイスや接続しているネットワークなどの情報。
OSPF機器はこれらの情報からネットワークマップを生成し、
ルーティングテーブルを構成する。
これらは、下記の基準によって選出される。
・OSPFプライオリティ(デフォルトは1)
プライオリティが最大のものがDR、
2番目のものがBDRになる。
(プライオリティ値が0のものは必ずDROTHERになる)
・ルータID
プライオリティ値が同じ場合は、
ルータIDが大きいものからDR,BDRが選出される。
ルータIDのフォーマットはIPアドレス形式。
ルータIDは下記のように決まる。(上から優先度:高)
・ルータIDをコマンドで明示的に指定する
・ループバックインターフェイスのIPアドレス
・アクティブなインターフェイスの中で最大のIPアドレス
○動作確認
以上のことを実機で確かめていきたいと思います。
環境は、前回の記事で設定した、
Cisco C841M (以下、C841側)
Debian に入れたQuagga(以下、debian側)
で見ていきます。
現状の設定は、
・C841側でネイバー確認 Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/DR 00:00:36 192.168.11.100 GigabitEthernet0/4.1 ・debian側でネイバー確認 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 192.168.11.50 1 Full/Backup 35.798s 192.168.11.50 eth0:192.168.11.100 0 0 0
debian側がDR、C841がBDRになっていることが分かる。
今回は、プライオリティの設定もなし、
ルータIDも明示的に設定していない、
ループバックインターフェイスのIPアドレスも設定していないので、
アクティブなインターフェイスのIPアドレスがルータIDとなり、
そのルータIDの値が大きいdebian側がDRとなりました。
ちなみに、その時のやり取りを、
WireSharkでキャプチャしてみると、
まずは、お互いにHelloパケットを飛ばしています。
内容はこんな感じ。
(From C841側)
“OSPF Hello Packet”の中を見ると、
DRは自分、BDRは 0.0.0.0 としています。
(From debian側)
debian側は、C841側のHelloを受け取ってるので、
ネイバーは検出済み。
DR/BDRはまだ決定していない様子。
その後、DescriptionやUpdateのやり取りがありますが、
10秒後くらいに再度送られているHelloを見ると、
(From C841側)
(From debian側)
お互いに、DR/BDRの選定・認識ができてますね。
この間に選定が行われたようです。
●DR/BDR入れ替え
で、この状態から、
C841側のGigabitEthernet0/4.1のIPアドレスを変更する。
192.168.11.50 → 192.168.11.200
Router(config)#int GigabitEthernet 0/4.1 Router(config-subif)#ip address 192.168.11.200 255.255.255.0 Router(config-subif)#end Router#clear ip ospf process (一度clearしてルータIDの変更を反映させる) Reset ALL OSPF processes? [no]: y Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/DR 00:00:35 192.168.11.100 GigabitEthernet0/4.1
あら?
debian側がDRのままですね。
一度、debian側がDRとしてネイバー関係が確立しているので、
そこにルータIDやPriorityの値が大きい機器が参入しても、
DRのポジションは変わらないと。
というわけで、
改めて1からネイバー関係を確立するために、
一度お互いのネイバー関係をリセットしてあげる必要がある。
互いのHelloパケットが届かないように、
物理的に切断してあげてtime outを待ちます。
(interfaceのリンクをdownさせないように注意)
デフォルトでtime outの時間(dead-interval)は40秒。(確認方法は↓↓)
通信を切断して40秒待つ。
ネイバーが検出されなくなったことを確認。
・C841側 Router#show ip ospf neighbor Router# ・debian側 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL ospfd#
この状態で、改めて接続してネイバー確立。
して、状態確認。
・C841側で確認 Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/BDR 00:00:33 192.168.11.100 GigabitEthernet0/4.1 ・debian側で確認 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 192.168.11.200 1 Full/DR 32.152s 192.168.11.200 eth0:192.168.11.100 0 0 0
DR/BDRが入れ替わりました。
●loopbackの設定
では、
ルータIDの決定に、他のinterfaceより、
loopbackのIPアドレスが優先されることを確認します。
C841で、例えば下記のように設定
Router(config)#int Loopback 0 Router(config-if)#ip address 1.1.1.1 255.255.255.255 Router(config-if)#exit Router(config)#no router ospf 1 (※) Router(config)#router ospf 1 Router(config-router)#network 192.168.11.0 0.0.0.255 area 0 Router(config-router)#end Router#show ip ospf Routing Process "ospf 1" with ID 1.1.1.1 Start time: 03:10:46.716, Time elapsed: 00:01:13.300 (以下略)
ルータIDが、loopbackのIPアドレスになりました。
※アクティブなinterfaceのIPアドレスに
ルータIDが既に設定されている場合は、
loopbackのIPアドレスを設定した後に、
一度OSPFプロセス自体を削除する必要がある。
(clear ip ospf process コマンドでは反映されない)
ちなみに、この状態で、↑↑と同じ手順で、
1からネイバー確立する。
・C841側で確認 Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/DR 00:00:36 192.168.11.100 GigabitEthernet0/4.1 ・debian側で確認 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 1.1.1.1 1 Full/Backup 38.828s 192.168.11.200 eth0:192.168.11.100 0 0 0
DRがdebian側に変わりましたね。
ルータIDはdebain側の方が大きい値なので、
debian側がDR。
ルータIDの比較でDR/BDRを選ぶときは、
ルータIDの決定方法は関係なさそう。
●ルータID:明示的に設定
続いて、ルータIDをコマンドで明示的に設定してみる。
Router(config)#router ospf 1 Router(config-router)#router-id ? A.B.C.D OSPF router-id in IP address format Router(config-router)#router-id 192.168.11.80 (IPアドレス形式で指定) % OSPF: Reload or use "clear ip ospf process" command, for this to take effect Router(config-router)#end Router#clear ip ospf process Reset ALL OSPF processes? [no]: y Router#show ip ospf Routing Process "ospf 1" with ID 192.168.11.80 (以下略)
ルータIDを明示的に設定した場合は、
clear コマンドで設定値に反映される。
ちなみに、この設定で同様にDR/BDRの選定をさせてみても、
ルータIDの値が大きいdebian側がDRになる。
やっぱり、ルータIDの比較でDR/BDRを選ぶときは、
ルータIDの決定方法は関係ないと。
それもそのはず、パケットのOSPFヘッダーの中に、
ルータIDの決定方法なんて無いですもんねw
●Priorityの設定
では、OSPF Priority を設定してみる。
OSPF Priorityは、デフォルトでは1。
これを2に設定します。
Router(config)#interface GigabitEthernet 0/4.1 Router(config-subif)#ip ospf priority 2 Router(config-subif)#end Router#show ip ospf interface GigabitEthernet0/4.1 is up, line protocol is up Internet Address 192.168.11.200/24, Area 0, Attached via Network Statement Process ID 1, Router ID 192.168.11.80, Network Type BROADCAST, Cost: 1 Topology-MTID Cost Disabled Shutdown Topology Name 0 1 no no Base Transmit Delay is 1 sec, State DR, Priority 2 (←プライオリティ値が変更されている) Designated Router (ID) 192.168.11.80, Interface address 192.168.11.200 (以下略)
Priorityは即時に反映される。
で、同様の方法でネイバーを1から確立させると、
・C841側で確認 Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/BDR 00:00:30 192.168.11.100 GigabitEthernet0/4.1 ・debian側で確認 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 192.168.11.80 2 Full/DR 32.253s 192.168.11.200 eth0:192.168.11.100 0 0 0
最後に、Priorityを0に設定した時の動作を確認する。
・C841側 Router#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.11.100 1 FULL/DR 00:00:34 192.168.11.100 GigabitEthernet0/4.1 ・debian側 ospfd# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 192.168.11.80 0 Full/DROther 32.070s 192.168.11.200 eth0:192.168.11.100 0 0 0
プライオリティが0になったルーターは、
即時にDROTHERになり、BDRがDRに昇格する。
●dead-intervalの確認:show ip ospf interface
Router#show ip ospf interface GigabitEthernet0/4.1 is up, line protocol is up Internet Address 192.168.11.200/24, Area 0, Attached via Network Statement Process ID 1, Router ID 192.168.11.200, Network Type BROADCAST, Cost: 1 Topology-MTID Cost Disabled Shutdown Topology Name 0 1 no no Base Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 192.168.11.200, Interface address 192.168.11.200 Backup Designated router (ID) 192.168.11.100, Interface address 192.168.11.100 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 oob-resync timeout 40 Hello due in 00:00:05 (以下略)
●参考
(スマホ問題集付)徹底攻略Cisco CCNA Routing & Switching教科書 ICND2編[200-105J][200-125J]V3.0対応 |