OSPF のルータを止めるとき、OSPF のプロセスを shutdown コマンドで止めると、ネイバーに「これから止まる」ことを伝えられます。ネイバーは Dead タイマーが切れるのを待たずに止まったことを知り、すぐに経路を計算し直せるので、ネットワークの収束(コンバージェンス)が早くなります。この記事では、Cisco ルータで OSPF のグレースフルシャットダウンを実行し、そのときに送られるパケットを確かめます。
router ospfのshutdownでネイバーの状態がどう変わるか- シャットダウンのときに送られる2つのパケット(LS Update と Hello)
no shutdownでの復旧
検証構成
R1 と R2 を 192.168.12.0/24 でつなぎ、エリア0で OSPF のネイバーにしています。R1 の OSPF プロセスをシャットダウンします。
事前に隣接関係を確認する
R1 と R2 は FULL の隣接関係で、R2 が DR、R1 が BDR です。
R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/DR 00:00:38 192.168.12.2 FastEthernet0/0.12 R2# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 1.1.1.1 1 FULL/BDR 00:00:36 192.168.12.1 FastEthernet0/0.12
R1 の OSPF プロセスを shutdown する
R1 の router ospf で shutdown を実行すると、R1 ではすぐに R2 とのネイバーがダウンします。これ以降、R1 は Hello を送りません。
R1
R1(config)# router ospf 1 R1(config-router)# shutdown R1(config-router)# *Jul 19 03:05:58.827: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.12 from FULL to DOWN, Neighbor Down: Interface down or detached
R2 の状態を確認する
R2 では、R1 の状態が FULL から INIT に変わっています。R1 からシャットダウンの知らせ(次の節の Hello)を受け取ったためです。
R2
R2# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 INIT/DROTHER 00:00:14 192.168.12.1 FastEthernet0/0.12
INIT になった時点で、R2 は R1 との隣接関係がなくなったものとして扱います。R1 はもう Hello を送らないので、Dead タイマー(既定 40 秒)が切れると、R1 は INIT から DOWN になります。ログの時刻を見ると、シャットダウン(03:05:58)からちょうど 40 秒後です。
R2#
*Jul 19 03:06:38.987: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0.12
from INIT to DOWN, Neighbor Down: Dead timer expired
シャットダウンのときに送られるパケット
shutdown を実行した直後、R1 から R2 へ2つの OSPF パケットが送られます。
LS Update(LS Age 3600)
R1 は、自分が作ったルータ LSA の LS Age を最大値の 3600 秒(MaxAge)にして、LS Update で送ります。MaxAge の LSA を受け取った R2 は、その LSA を LSDB から消します。
この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
▸ Internet Protocol Version 4, Src: 192.168.12.1, Dst: 224.0.0.5▾ Open Shortest Path First ▾ OSPF Header Version: 21 Message Type: LS Update (4) Packet Length: 76 Source OSPF Router: 1.1.1.1 Area ID: 0.0.0.0 (Backbone) Checksum: 0x5a30 [correct] Auth Type: Null (0) Auth Data (none): 0000000000000000 ▾ LS Update Packet Number of LSAs: 1 ▾ LSA-type 1 (Router-LSA), len 482 .000 1110 0001 0000 = LS Age (seconds): 3600 0... .... .... .... = Do Not Age Flag: 0 ▸ Options: 0x22, (DC) Demand Circuits, (E) External Routing LS Type: Router-LSA (1) Link State ID: 1.1.1.1 Advertising Router: 1.1.1.1 Sequence Number: 0x80000003 Checksum: 0x4cd9 Length: 48 ▸ Flags: 0x00 Number of Links: 2 ▸ Type: Stub ID: 1.1.1.1 Data: 255.255.255.255 Metric: 1 ▸ Type: Transit ID: 192.168.12.2 Data: 192.168.12.1 Metric: 1
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Message Type: LS Update (4) | LSA を送るパケット(タイプ4) |
| 2 | LS Age (seconds): 3600 | R1 のルータ LSA(Link State ID 1.1.1.1)の年齢を最大値にしたもの。受け取ったルータはこの LSA を消す |
Hello(DR・BDR が 0.0.0.0、Neighbor なし)
続けて R1 は、DR と BDR を 0.0.0.0 にし、ネイバー(Active Neighbor)の一覧を空にした Hello を送ります。Router Priority も 0 になっています。R2 の show ip ospf neighbor で R1 の Pri が 0 になっていたのはこのためです。
▸ Internet Protocol Version 4, Src: 192.168.12.1, Dst: 224.0.0.5▾ Open Shortest Path First ▾ OSPF Header Version: 2 Message Type: Hello Packet (1) Packet Length: 44 Source OSPF Router: 1.1.1.1 Area ID: 0.0.0.0 (Backbone) Checksum: 0xea9d [correct] Auth Type: Null (0) Auth Data (none): 0000000000000000 ▾ OSPF Hello Packet Network Mask: 255.255.255.0 Hello Interval [sec]: 10 ▸ Options: 0x12, (L) LLS Data block, (E) External Routing1 Router Priority: 0 Router Dead Interval [sec]: 402 Designated Router: 0.0.0.0 Backup Designated Router: 0.0.0.0 ▸ OSPF LLS Data Block
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Router Priority: 0 | DR・BDR の候補から外れる |
| 2 | Designated Router: 0.0.0.0Backup Designated Router: 0.0.0.0 | DR・BDR なし。Packet Length が 44 バイトで、Active Neighbor の欄がない(ネイバーの一覧が空) |
受け取った Hello のネイバー一覧に自分(R2)のルータ ID が入っていないので、R2 は R1 を2-WAY 以上の状態にしておけず、FULL から INIT に下げます。
シャットダウンからの復旧
no shutdown で戻す
R1 の router ospf で no shutdown を実行すると、隣接関係はすぐに FULL に戻ります。OSPF の設定はシャットダウン中も残っているので、設定し直す必要はありません。
R1
R1(config)# router ospf 1 R1(config-router)# no shutdown R1(config-router)# *Jul 19 03:34:22.191: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.12 from LOADING to FULL, Loading Done
まとめ
| タイミング | R1(shutdown したルータ) | R2(ネイバー) |
|---|---|---|
| shutdown 直後 | MaxAge の LS Update と、空の Hello を送る | R1 の LSA を消し、R1 を INIT に下げる(すぐに経路を計算し直せる) |
| その後 | Hello を送らない | Dead タイマー(40 秒)が切れて DOWN |
| no shutdown | OSPF を再開 | すぐに FULL に戻る |
メンテナンスでルータを止めるときは、電源を切ったりインターフェースを落としたりする前に OSPF を shutdown しておくと、ほかのルータが迂回経路へ早く切り替えられます。インターフェース単位で止めたいときは、インターフェースの ip ospf shutdown も使えます。
コメント