OSPFでは、ネイバーを動的に発見するためにHelloパケットを送信します。ネイバー発見後、ネイバーが継続的に稼働しているかHelloパケットで監視します。
デフォルト値の確認
R2(config)#router ospf 1 R2(config-router)#network 192.168.23.0 0.0.0.255 area 0 R2(config-router)#network 2.2.2.2 0.0.0.0 area 0 R3(config)#router ospf 1 R3(config-router)#network 192.168.23.0 0.0.0.255 area 0 R3(config-router)#network 3.3.3.3 0.0.0.0 area 0
しばらくすると、隣接関係が結ばれます。
R2# *Jun 16 09:55:15.227: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 from LOADING to FULL, Loading Done
show ip ospf interface でHello/Deadインターバルを確認します。出力が多いため、Deadというキーワードを含む行のみ出力します。
R2#sh ip ospf interface | include Dead Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 R3#sh ip ospf interface | include Dead Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Helloインターバルが10秒、Deadインターバルが40秒であることが確認できます。これは、Ciscoのデフォルト値です。
では、R3のインターフェースをシャットダウンし、R2で Dead インターバル通りに、R3のダウンを検知するか確認します。
R3(config)#int fa0/0.23 R3(config-subif)#shutdown *Jun 16 10:01:02.767: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Interface down or detached
R3のOSPFがダウンしてから、約40秒後にR2で、Dead timer expiredを理由にネイバーがダウンしていることが確認できます。
R2#
*Jun 16 10:01:39.327: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23
from FULL to DOWN, Neighbor Down: Dead timer expired
値を変更
Helloインターバルのみ変更
まず、R2のHelloインターバルを1秒に変更します。
R2(config)#int fa0/0.23 R2(config-subif)#ip ospf hello-interval ? <1-65535> Seconds R2(config-subif)#ip ospf hello-interval 1
show ip ospf interface でHello/Deadインターバルを確認します。
R2#show ip ospf interface | include Dead
Timer intervals configured, Hello 1, Dead 4, Wait 4, Retransmit 5
Helloインターバルを変えると、自動的にDeadインターバルがHelloの4倍に変更されていることが確認できます。
Deadインターバルのみ変更
まず、R2のDeadインターバルを20秒に変更します。
R2(config)#int fa0/0.23 R2(config-subif)#ip ospf dead-interval 20
show ip ospf interface でHello/Deadインターバルを確認します。
R2#show ip ospf interface | include Dead
Timer intervals configured, Hello 10, Dead 20, Wait 20, Retransmit 5
Deadインターバルを変えても、Helloインターバルは変わらないことが確認できます。
値の短縮
Deadインターバルがデフォルトでは40秒と比較的に長い時間です。このDeadインターバルを短くすることで、ネットワークの収束時間を短縮させることができます。
Helloインターバルの変更
Helloインターバルを短縮することで、Deadインターバルも短縮されます。例えば、R2、R3ともにHelloインターバルを1秒に変更します。
R2(config)#int fa0/0.23 R2(config-subif)#ip ospf hello-interval 1 R3(config)#int fa0/0.23 R3(config-subif)#ip ospf hello-interval 1
Hello、Deadインターバルを確認します。
R2#show ip ospf interface | include Dead
Timer intervals configured, Hello 1, Dead 4, Wait 4, Retransmit 5
R3#sh ip ospf interface | include Dead
Timer intervals configured, Hello 1, Dead 4, Wait 4, Retransmit 5
では、R3のインターフェースをシャットダウンし、R2でDeadインターバル通りに、R3のダウンを検知するか確認します。
R3(config)#int fa0/0.23 R3(config-subif)#shutdown *Jun 16 12:16:51.091: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Interface down or detached
約4秒後にR2側でネイバーダウンを検知します。
R2# *Jun 16 12:16:55.347: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Dead timer expired
FastHelloの設定
ip ospf dead-interval コマンドで、1秒より短いインターバルでHelloパケットを送信し、Deadインターバルを1秒に設定します。hello-multiplier の値は、その 1 秒間に送信する hello パケット数です。
R2(config)#int fa0/0.23 R2(config-subif)#ip ospf dead-interval minimal hello-multiplier 3
R3(config)#int fa0/0.23 R3(config-subif)#ip ospf dead-interval minimal hello-multiplier 3
show ip ospf interface でHello/Deadインターバルを確認します。
R2#show ip os interface | include Dead
Timer intervals configured, Hello 333 msec, Dead 1, Wait 1, Retransmit 5
R3#show ip ospf interface | include Dead
Timer intervals configured, Hello 333 msec, Dead 1, Wait 1, Retransmit 5
Deadインターバルが1秒で、Helloは1秒間に3回送信する設定のため、インターバルは333msecとなります。では、R3のインターフェースをシャットダウンし、R2でDeadインターバル通りに、R3のダウンを検知するか確認します。
R3(config)#int fa0/0.23 R3(config-subif)#shutdown *Jun 16 12:22:03.075: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Interface down or detached
約1秒後にR2側でネイバーダウンを検知します。
R2# *Jun 16 12:22:04.651: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Dead timer expired
パケットキャプチャを取得すると、1秒間に3回程度の頻度でHelloパケットが送信されていることがわかります。
Helloパラメータが不一致
OSPF隣接関係になるには、ルータ間で、Hello・Deadインターバルが同じである必要があります。まず、デフォルト値で隣接関係が結ばれている状態で、R3のHelloインターバルをデフォルト値から変更してみます。
R2#show ip ospf interface | include Dead Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
R3#show ip ospf interface | include Dead Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
R2側でdebug ip ospf helloを実行し、Hello・Deadインターバルが異なる場合の挙動を確認します。
R2#debug ip ospf hello OSPF hello debugging is on
R3のHelloインターバルを15秒に変更します。
R3(config)#int fa0/0.23 R3(config-subif)#ip ospf hello-interval 15
R3のHelloインターバルを変更後のR2のdebug ip ospf helloの出力です。
OSPF-1 HELLO Fa0/0.23: Rcv hello from 3.3.3.3 area 0 192.168.23.3 OSPF-1 HELLO Fa0/0.23: Mismatched hello parameters from 192.168.23.3 OSPF-1 HELLO Fa0/0.23: Dead R 60 C 40, Hello R 15 C 10 Mask R 255.255.255.0 C 255.255.255.0 R2# OSPF-1 HELLO Fa0/0.23: Send hello to 224.0.0.5 area 0 from 192.168.23.2 R2# %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23 from FULL to DOWN, Neighbor Down: Dead timer expired R2#
Helloパラメータがルータ間で不一致となり、ネイバーがダウンしているのが確認できます。
コメント