今回はOSPFのDR/BDRの選出について詳しく解説致します。
座学
DR/BDRの選出
前回の記事で、OSPFのDR、BDRは以下の基準に従い、選出されることを解説しました。
- Priorityが最大のルータをDRに選出
- Priorityが2番目に大きいルータをBDRに選出
- Priorityが同じ場合、Router IDが最大のルータをDR、2番目に大きいルータをBDRに選出
ルータのBroadcastタイプのインタフェースでOSPFが起動すると、Wait Timerが開始されます。
Wait Timerが経過するまで、ルータはDR/BDRの選出をせず、Helloパケット経由でネイバーの学習のみを行います。
Helloパケットには、DR/BDRの選出に関わる、Router IDとPriorityが格納されています。
Wait Timer経過後、ルータは「自身のRouter ID/Priority」と「Helloパケットで学習したネイバーのRouter ID/Priority」を比較し、DRとBDRを選出します。DRとBDR選出後、ルータが送信するHelloパケットには選出されたDRとBDRのIPアドレスが格納されます。
注意点として、DR/BDRはネットワークセグメント毎に選出されます。そのため、あるネットワークセグメントではDRであるルータが、別のセグメントではBDRやDROTHERのケースもあります。また、DR/BDRはネットワークセグメント毎に選出されるため、OSPFのPriorityはインタフェース単位で設定します。
DR/BDRのPreempt
下図の様に、DR/BDRの選出後に、DRであるR1よりもPriorityが大きいR4が出現した場合、R4がDRの役割を奪うのか、と疑問が生じるかと思います。結論を言うと、OSPFではDR/BDRのPreemptは発生しません。このように、新たに出現したルータが他のルータの役割を奪うことをPreemptと呼びます。
R4のBroadcastタイプのインタフェースでOSPFが有効になると、OSPFではWait Timerが開始されます。
R4は自身のRouter IDとPriorityを格納したHelloパケットを送信します。R1~R3はR4のHelloパケットを受信後、既にDR/BDRを選出済みなため、Priorityが最大のR4をDROTHERとして認識します。
Wait Timer経過中に、R4はR1~R3のHelloパケット経由でDR/BDRが選出済みなことを認識し、R4は自身をDROTHERとします。
Priority 0
Priorityを0に設定することで、特定のネットワークセグメントにおいて、ルータをDR/BDRの選出対象から除外可能です。
BroadcastタイプのインタフェースのPriorityが0のルータは、そのインタフェースが接続しているネットワークセグメント上で、常にDROTHERとして動作します。また、下図のように、BDRが存在しない場合でも、OSPFは正しく動作します。
注意点として、Priorityが0以外の全ルータがダウンした場合、DRが選出できず、Broadcastネットワーク上でLSAの交換ができなくなります。この様な状況では、DROTHERであるルータ同士のネイバーは2-Way状態にとどまります。
実機での動作確認
検証内容1(DR/BDRの選出)
R1、R2、R3でOSPF Area 0を有効にします。
R1、R2、R3のNetwork TypeにはBroadcastを使用します。
R1のRouter IDを1.1.1.1、Priorityを5に設定します。
R2のRouter IDを2.2.2.2、Priorityを1に設定します。
R3のRouter IDを3.3.3.3、Priorityを1に設定します。
設定
interface GigabitEthernet2
ip address 10.1.1.1 255.255.255.0
ip ospf priority 5
!
router ospf 1
router-id 1.1.1.1
network 10.1.1.0 0.0.0.255 area 0
interface GigabitEthernet2
ip address 10.1.1.2 255.255.255.0
!
router ospf 1
router-id 2.2.2.2
network 10.1.1.0 0.0.0.255 area 0
interface GigabitEthernet2
ip address 10.1.1.3 255.255.255.0
!
router ospf 1
router-id 3.3.3.3
network 10.1.1.0 0.0.0.255 area 0
Priorityの設定の確認
OSPFが動作しているインタフェースのPriorityはip ospf priority <priority>コマンドで変更可能です。デフォルトのPriorityは1になります。
interface GigabitEthernet2
ip ospf priority 5
OSPFが動作しているインタフェースの状態確認(R1のインタフェース障害前)
R1のg2のPriorityが5で、R1がDRであることが確認できます。また、R1はR2をDROTHER、R3をBDRとして認識していることが確認できます。また、Wait Timerが40秒であることも確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, 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 5
Designated Router (ID) 1.1.1.1, Interface address 10.1.1.1
Backup Designated router (ID) 3.3.3.3, Interface address 10.1.1.3
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:06
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 2
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 2, Adjacent neighbor count is 2
Adjacent with neighbor 2.2.2.2
Adjacent with neighbor 3.3.3.3 (Backup Designated Router)
Suppress hello for 0 neighbor(s)
R2のg2のPriorityが1で、R2がDROTHERであることが確認できます。また、R2はR1をDR、R3をBDRとして認識していることが確認できます。
R2#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.2/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DROTHER, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 10.1.1.1
Backup Designated router (ID) 3.3.3.3, Interface address 10.1.1.3
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:08
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 2
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 2, Adjacent neighbor count is 2
Adjacent with neighbor 1.1.1.1 (Designated Router)
Adjacent with neighbor 3.3.3.3 (Backup Designated Router)
Suppress hello for 0 neighbor(s)
R3のg2のPriorityが1で、R3がBDRであることが確認できます。また、R3はR1をDR、R2をDROTHERとして認識していることが確認できます。
R3#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.3/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 3.3.3.3, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 1.1.1.1, Interface address 10.1.1.1
Backup Designated router (ID) 3.3.3.3, Interface address 10.1.1.3
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:08
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 2, Adjacent neighbor count is 2
Adjacent with neighbor 1.1.1.1 (Designated Router)
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
OSPFネイバーの状態確認(R1のインタフェース障害前)
R1はR2をDROTHER、R3をBDRとして認識していることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 FULL/DROTHER 00:00:31 10.1.1.2 GigabitEthernet2
3.3.3.3 1 FULL/BDR 00:00:31 10.1.1.3 GigabitEthernet2
R2はR1をDR、R3をBDRとして認識していることが確認できます。
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 5 FULL/DR 00:00:34 10.1.1.1 GigabitEthernet2
3.3.3.3 1 FULL/BDR 00:00:35 10.1.1.3 GigabitEthernet2
R3はR1をDR、R2をDROTHERとして認識していることが確認できます。
R3#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 5 FULL/DR 00:00:36 10.1.1.1 GigabitEthernet2
2.2.2.2 1 FULL/DROTHER 00:00:36 10.1.1.2 GigabitEthernet2
Helloパケットの確認(R1のインタフェース障害前)
以下はDR/BDR選出前にR1が送信したHelloパケットになります。Priorityとして5が格納されていること、DR/BDRのIPアドレスが0.0.0.0なことが確認できます。
以下はDR/BDR選出後のR1が送信したHelloパケットになります。DRのIPアドレスとしてR1のg2の10.1.1.1、BDRのIPアドレスとしてR3のg2の10.1.1.3が格納されていることが確認できます。
OSPFのデバックの確認(R1のインタフェース障害前)
R1はg2でOSPFが起動してからWait Timer(40秒)経過後にDR/BDRを選出していることが確認できます。
R1#debug ip ospf adj
*May 11 13:15:04.752: OSPF-1 ADJ Gi2: Interface going Up
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: end of Wait on interface
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: DR/BDR election
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: Elect BDR 1.1.1.1
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: Elect DR 1.1.1.1
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: Elect BDR 3.3.3.3
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: Elect DR 1.1.1.1
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: DR: 1.1.1.1 (Id)
*May 11 13:15:44.752: OSPF-1 ADJ Gi2: BDR: 3.3.3.3 (Id)
R1のインタフェース障害
DRであるR1のg2をシャットダウンします。
interface GigabitEthernet2
shutdown
OSPFが動作しているインタフェースの状態確認(R1のインタフェース障害後)
R2がBDRであること、R2はR3をDRとして認識していることが確認できます。
R2#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.2/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 3.3.3.3, Interface address 10.1.1.3
Backup Designated router (ID) 2.2.2.2, Interface address 10.1.1.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:02
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 2
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 3.3.3.3 (Designated Router)
Suppress hello for 0 neighbor(s)
R3がDRであること、R3はR2をBDRとして認識していることが確認できます。
R3#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.3/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 3.3.3.3, 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) 3.3.3.3, Interface address 10.1.1.3
Backup Designated router (ID) 2.2.2.2, Interface address 10.1.1.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:03
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2 (Backup Designated Router)
Suppress hello for 0 neighbor(s)
OSPFネイバーの状態確認(R1のインタフェース障害前)
R2はR3をDRとして認識していることが確認できます。
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
3.3.3.3 1 FULL/DR 00:00:35 10.1.1.3 GigabitEthernet2
R3はR2をBDRとして認識していることが確認できます。
R3#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 1 FULL/BDR 00:00:36 10.1.1.2 GigabitEthernet2
Helloパケットの確認(R1のインタフェース障害後)
以下はR3が送信したHelloパケットになります。DRのIPアドレスとしてR3のg2の10.1.1.3、BDRのIPアドレスとしてR2のg2の10.1.1.2が格納されていることが確認できます。
OSPFのデバックの確認(R1のインタフェース障害後)
R3はDRとしてR3自身、BDRとしてR2を選出していることが確認できます。
R3#debug ip ospf adj
*May 11 14:25:07.152: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on GigabitEthernet2 from FULL to DOWN, Neighbor Down: Dead timer expired
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: DR/BDR election
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: Elect BDR 2.2.2.2
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: Elect DR 3.3.3.3
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: Elect BDR 2.2.2.2
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: Elect DR 3.3.3.3
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: DR: 3.3.3.3 (Id)
*May 11 14:25:14.650: OSPF-1 ADJ Gi2: BDR: 2.2.2.2 (Id)
検証内容2(Priority 0)
R1とR2でOSPF Area 0を有効にします。
R1とR2のNetwork TypeにBroadcastを使用します。
R2のg2のPriorityを0に設定し、R2がDR/BDRに選出されないことを確認します。
設定
interface GigabitEthernet2
ip address 10.1.1.1 255.255.255.0
!
router ospf 1
router-id 1.1.1.1
network 10.1.1.0 0.0.0.255 area 0
interface GigabitEthernet2
ip address 10.1.1.2 255.255.255.0
ip ospf priority 0
!
router ospf 1
router-id 2.2.2.2
network 10.1.1.0 0.0.0.255 area 0
OSPFが動作しているインタフェースの状態確認
R2のg2のPriorityが0なことが確認できます。また、R1がDR、R2がDROTHERであり、BDRは選出されていないことが確認できます。
R1#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.1/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 1.1.1.1, 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) 1.1.1.1, Interface address 10.1.1.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:01
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 2.2.2.2
Suppress hello for 0 neighbor(s)
R2#show ip ospf interface
GigabitEthernet2 is up, line protocol is up
Internet Address 10.1.1.2/24, Interface ID 6, Area 0
Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DROTHER, Priority 0
Designated Router (ID) 1.1.1.1, Interface address 10.1.1.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:00
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 1.1.1.1 (Designated Router)
Suppress hello for 0 neighbor(s)
OSPFネイバーの状態確認
R1はR2をDROTHER、R2はR1をDRとして認識していることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 FULL/DROTHER 00:00:36 10.1.1.2 GigabitEthernet2
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 1 FULL/DR 00:00:34 10.1.1.1 GigabitEthernet2
Helloパケットの確認
以下はR2が送信したHelloパケットになります。Priorityとして0、DRとしてR1のg2の10.1.1.1が格納されていることが確認できます。また、BDRは存在しないので、BDRとして0.0.0.0が格納されていることが確認できます。
OSPFのデバックの確認(R1のインタフェース障害前)
R1のOSPFのデバックからDRのみ選出されていることが確認できます。。
R1#debug ip ospf adj
*May 11 15:04:41.670: OSPF-1 ADJ Gi2: Interface going Up
*May 11 15:05:31.690: OSPF-1 ADJ Gi2: DR/BDR election
*May 11 15:05:31.690: OSPF-1 ADJ Gi2: Elect BDR 0.0.0.0
*May 11 15:05:31.690: OSPF-1 ADJ Gi2: Elect DR 1.1.1.1
*May 11 15:05:31.690: OSPF-1 ADJ Gi2: DR: 1.1.1.1 (Id)
*May 11 15:05:31.690: OSPF-1 ADJ Gi2: BDR: none
検証内容3(DRが選出できない場合)
R1とR2でOSPF Area 0を有効にします。
R1とR2のNetwork TypeにBroadcastを使用します。
R1とR2のg2のPriorityを0に設定し、DRが選出できない場合の挙動を確認します。
設定
interface GigabitEthernet2
ip address 10.1.1.1 255.255.255.0
ip ospf priority 0
!
router ospf 1
router-id 1.1.1.1
network 10.1.1.0 0.0.0.255 area 0
interface GigabitEthernet2
ip address 10.1.1.2 255.255.255.0
ip ospf priority 0
!
router ospf 1
router-id 2.2.2.2
network 10.1.1.0 0.0.0.255 area 0
OSPFネイバーの状態確認
R1とR2はお互いをDROTHERとして認識しており、かつ、2-Way状態であることが確認できます。
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
2.2.2.2 0 2WAY/DROTHER 00:00:32 10.1.1.2 GigabitEthernet2
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 2WAY/DROTHER 00:00:37 10.1.1.1 GigabitEthernet2
OSPFのデバックの確認(R1のインタフェース障害前)
R1のOSPFのデバックからDRとBDRが選出できていないことが確認できます。
R1#debug ip ospf adj
*May 11 15:10:35.683: OSPF-1 ADJ Gi2: Interface going Up
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: end of Wait on interface
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: DR/BDR election
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: Elect BDR 0.0.0.0
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: Elect DR 0.0.0.0
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: DR: none
*May 11 15:11:15.683: OSPF-1 ADJ Gi2: BDR: none
コメント