2024-11-28 Cat9000V GIR 機能検証
Nexus で開発され Catalyst 9000 にも実装された GIR について、機能検証を実施しました。
このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。
検証対象として Catalyst 9000V Q200 を使用していますが、実機の Catalyst 9000 シリーズでも同様の動作をするはずです。
GIR (Graceful Insertion and Removal) とは ?
直訳ではスムーズな挿入と削除。
主にルーティング プロトコルの停止と開始を制御し、冗長化された機器を簡易にトラフィック迂回したり挿入したりできる機能。
このドキュメントの目的
GIR の動作について理解を深められること。
ラボを再現して検証できること。
通信要件
GIR : BGP / OSPF / HSRP
- GIR を開始したホストを経路迂回すること
- GIR を停止したホストに経路復旧すること
- 断時間がそこまで長くないこと
所感
メリット
- L3 プロトコルのどこを止めてルートを迂回させて・・・などと考えて切り離し・切り戻しのコンフィグを組む必要がない
- 断時間は非常に短く切り替え・切り戻しできた
- メンテナンスするプロトコルの順番を入れ替えられる
- 環境にもよると思われるが、基本的に上位プロトコルから実施したほうが良さそう
- 切り戻し (Insert) は切り替えの逆順で実施してくれる
- iBGP は OSPF の Loopback アドレス学習を元にピアを張るため、OSPF ネイバーを先に上げた方が良い
考慮点
- Stack には使えない
- GIR 導入後にコンフィグを変更した際、GIR にも変更が必要になるケースがあるので、変更を忘れないようにする
- HSRP で新 Group を追加した、など
- 導入当初は検証しても、普段の設定追加で忘れがちになるのでは
- いったんメンテナンスを開始 (Remove) すると、手を出すことができない
- 新規導入時に動作検証を実施し、挙動を確認したほうが良い
- メンテナンス中はコンフィグ変更が可能
- 指定したプロトコルの状態を保存しているようで、切り戻せないコンフィグにした場合、stop maintenance しても切り戻りと判定してくれないため注意が必要
- 例) 事前に Up していた、OSPF ネイバーのインターフェースをメンテナンス中にシャットダウンした
- ネイバーの Up / Down が作業前後で異なるような作業に、GIR の利用は想定されていないと考えられる
- 基本的には OS Verup などコンフィグ変更しないメンテナンスを対象に GIR を使うのが良さそう
- 指定したプロトコルの状態を保存しているようで、切り戻せないコンフィグにした場合、stop maintenance しても切り戻りと判定してくれないため注意が必要
- メンテナンス停止 (Insert) 中は、コンフィグを変更できない
- failsafe は今回挙動を確認できなかった
- snapshot 機能は今回の Version に実装されていない模様
- 各プロトコルのルート学習にかかる時間に wait などは設定できない
- フルルートや高スケールの環境でも GIR が考慮してくれるか、追加検証が必要
- 2024/11 時点の最新長期サポート Version である、17.12.4 では C9500X が非サポート
検証結果概要
プロトコル別の挙動
ピア・ネイバー・ステート | ルート | メトリック | 備考 | |
---|---|---|---|---|
BGP | 保持される | 広報が停止される | - | BGP はアトリビュートが非常に多いため、ルートの広報をやめる実装になっていると思われる。
今回のユースケースでは断時間は非常に短かったため、問題にはなりにくいと考えられる。 |
OSPF | 保持される | 広報する | 65536 になる | ネイバーが保持され、ルートも削除されない。
ルートのメトリックは最低値になるため、優先度を低下する実装となっている。 OSPF で学習する Loopback を telnet 用アドレスとして管理する環境も多いため、好ましい実装と言える。 |
HSRP | Resign メッセージを送信する
Active -> Init になる Hello も送信しなくなる |
- | - | HSRP Active から降格する際、Resign メッセージを送信しているため、Standby が素早く Active へ昇格することが可能。
断時間を短く切り替えが可能となっている。 |
shutdown l2 | スイッチポート : ダウンになる
ルーテッドポート : アップを維持 EtherChannel : アップを維持 |
- | - | スイッチポートに収容された、ダウンリンクのルートを上位ルーティング プロトコルへ広報するのを、止めたいときに使用するのが目的と考えられる。
左の挙動は仮想環境のものであるため、実機では異なる挙動の可能性がある。 |
その他
- start maintenance 中の再起動 : stop maintenance 状態で起動する
検証環境
Cisco Catalyst 9000V Q200 : IOS-XE 17.12.1 x6
構成図
- Catalyst 9000V Q200 : PE01 , CE01 , CE02 , CORE01 , CORE02 , CPE01
PE01 を WAN の機器、CE01 , CE02 , CORE01 , CORE02 , CPE01 を LAN の機器とする。
IP アドレッシング
文書用例示アドレス (8.8.8.8 を除く) | ||||||
---|---|---|---|---|---|---|
大種別 | 小種別 | ネットワーク アドレス | ホスト | インターフェース | ホスト アドレス | 備考 |
グローバルアドレス | WAN グローバルアドレス | 203.0.113.128/30 | PE01 | Gi1/0/1 | 203.0.113.129/30 | BGP でデフォルトルートを広報 |
CE01 | Gi1/0/23 | 203.0.113.130/30 | PE ルータからデフォルトルートを受信 | |||
203.0.113.132/30 | PE01 | Gi1/0/1 | 203.0.113.133/30 | BGP でデフォルトルートを広報 | ||
CE02 | Gi1/0/23 | 203.0.113.134/30 | PE ルータからデフォルトルートを受信 | |||
198.51.100.0/24 | PE01 | Lo0 | 198.51.100.1/32 | 上り方向 ping の宛先 | ||
LAN グローバル アドレス | CE01 | Lo0 | 198.51.100.11/32 | iBGP ピア用 | ||
CE02 | Lo0 | 198.51.100.12/32 | iBGP ピア用 | |||
CORE01 | Lo0 | 198.51.100.21/32 | ||||
CORE02 | Lo0 | 198.51.100.22/32 | ||||
203.0.113.128/25 | CE01 | Po21 | 203.0.113.137/30 | CE01 <-> CE02 間わたり OSPF P2P リンク
迂回経路用 | ||
CE02 | Po21 | 203.0.113.138/30 | ||||
CE01 | Gi1/0/1 | 203.0.113.141/30 | CE01 <-> CORE01 間 OSPF P2P リンク | |||
CORE01 | Gi1/0/23 | 203.0.113.142/30 | ||||
CE02 | Gi1/0/2 | 203.0.113.145/30 | CE02 <-> CORE02 間 OSPF P2P リンク | |||
CORE02 | Gi1/0/24 | 203.0.113.146/30 | ||||
CE01 | Po21 | 203.0.113.149/30 | CORE01 <-> CORE02 間 OSPF P2P リンク
迂回経路用 | |||
CE02 | Po21 | 203.0.113.150/30 | ||||
203.0.113.0/25 | CE01 | Vlan1 | 203.0.113.2/25
HSRP .1 |
CPE 収容 SVI | ||
CE02 | Vlan1 | 203.0.113.3/25
HSRP .1 |
CPE 収容 SVI | |||
CPE | Vlan1 | 203.0.113.101/25 | CPE01 用ホストアドレス | |||
プライベートアドレス | LAN プライベート アドレス | なし |
コンフィギュレーション
ここではプロトコル・ホスト別にコンフィギュレーションを簡単に解説します。
自分でコンフィグを組んでみたい人向けに、デフォルトでは表示しません。
PE01
CE01 , 02
正常時の疎通・経路確認
コマンドリスト
PE01
PE01#ping 203.0.113.101 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 203.0.113.101, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 70/87/103 ms PE01# PE01#traceroute 203.0.113.101 Type escape sequence to abort. Tracing the route to 203.0.113.101 VRF info: (vrf in name/id, vrf out name/id) 1 203.0.113.130 40 msec 40 msec 38 msec 2 203.0.113.142 81 msec 54 msec 61 msec 3 203.0.113.101 [AS 64512] 103 msec * 105 msec
通常時は CE01 -> CORE01 -> CPE01 を経由します。
PE01#show ip bgp BGP table version is 11, local router ID is 198.51.100.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, t secondary path, L long-lived-stale, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path 0.0.0.0 0.0.0.0 0 i *> 203.0.113.0/25 203.0.113.130 100 0 64512 i * 203.0.113.134 300 0 64512 i
CE01 宛を優先させています。
CORE01
CORE01#show ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "ospf 1", distance 110, metric 2, candidate default path Tag 1, type extern 1 Last update from 203.0.113.141 on GigabitEthernet1/0/23, 00:01:20 ago Routing Descriptor Blocks: * 203.0.113.141, from 198.51.100.11, 00:01:20 ago, via GigabitEthernet1/0/23 Route metric is 2, traffic share count is 1 Route tag 1 CORE01# CORE01#show standby brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Vl1 1 110 P Active local 203.0.113.3 203.0.113.1
OSPF メトリック 1 と HSRP Priority 110 で優先させています。
CPE01
CPE01#ping 198.51.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 198.51.100.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 77/87/109 ms CPE01# CPE01#traceroute 198.51.100.1 Type escape sequence to abort. Tracing the route to 198.51.100.1 VRF info: (vrf in name/id, vrf out name/id) 1 203.0.113.2 40 msec 41 msec 72 msec 2 203.0.113.141 63 msec 66 msec 69 msec 3 203.0.113.129 89 msec * 84 msec
通常時は CORE01 -> CE01 -> PE01 を経由します。
CE01 GIR BGP + OSPF 動作確認
start maintenance でホストを Remove します。
CE01#start maintenance Template BGP_OSPF will be applied. Do you want to continue?[confirm] CE01# Nov 3 2024 00:43:52 UTC: %MMODE-6-MMODE_SNAPSHOT_CREATE_ENTER_MMODE: Generating current snapshot 'before_maintenance' Nov 3 2024 00:43:52 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for router bgp 64512 Nov 3 2024 00:44:23 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for router bgp 64512 Nov 3 2024 00:44:23 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for router ospf 1 Nov 3 2024 00:44:53 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for router ospf 1 Nov 3 2024 00:44:53 UTC: %MMODE-6-MMODE_ISOLATED: System is in Maintenance CE01(maint-mode)#show system mode System Mode: Maintenance Maintenance window: 14 mins remaining CE01(maint-mode)#show system mode maintenance System Mode: Maintenance Maintenance window: 14 mins remaining Current Maintenance Parameters: Maintenance Duration: 15(mins) Failsafe Timeout: 5(mins) Maintenance Template: BGP_OSPF Snapshot Template: default Reload in Maintenance: False
timeout 15 経過後、切り戻りました。
CE01(maint-mode)# Nov 3 2024 23:52:04 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Insert start for router ospf 1 Nov 3 2024 23:52:34 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Insert complete for router ospf 1 Nov 3 2024 23:52:34 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Insert start for router bgp 64512 Nov 3 2024 23:53:04 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Insert complete for router bgp 64512 Nov 3 2024 23:53:04 UTC: %MMODE-6-MMODE_SNAPSHOT_CREATE_EXIT_MMODE: Generating current snapshot 'after_maintenance' Please use 'show system snapshots compare before_maintenance after_maintenance' to check the health of the system Nov 3 2024 23:53:04 UTC: %MMODE-6-MMODE_INSERTED: System is in Normal Mode
CORE01 GIR OSPF + HSRP 動作確認
start maintenance でホストを Remove します。
CORE01#start maintenance Template OSPF_HSRP will be applied. Do you want to continue?[confirm] CORE01# Nov 3 2024 23:55:21 UTC: %MMODE-6-MMODE_SNAPSHOT_CREATE_ENTER_MMODE: Generating current snapshot 'before_maintenance' Nov 3 2024 23:55:21 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for router ospf 1 Nov 3 2024 23:55:51 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for router ospf 1 Nov 3 2024 23:55:51 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for hsrp Vlan1 1 Nov 3 2024 23:55:51 UTC: %HSRP-5-STATECHANGE: Vlan1 Grp 1 state Active -> Init Nov 3 2024 23:56:21 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for hsrp Vlan1 1 Nov 3 2024 23:56:21 UTC: %MMODE-6-MMODE_ISOLATED: System is in Maintenance CORE01(maint-mode)#show system mode System Mode: Maintenance Maintenance window: 14 mins remaining CORE01(maint-mode)#show system mode maintenance System Mode: Maintenance Maintenance window: 14 mins remaining Current Maintenance Parameters: Maintenance Duration: 15(mins) Failsafe Timeout: 5(mins) Maintenance Template: OSPF_HSRP Snapshot Template: default Reload in Maintenance: False
動作確認 - ホスト別コマンドリスト
PE01
show ip bgp summary
show ip bgp
ping 203.0.113.101
traceroute 203.0.113.101
CE01 . CE02
show ip bgp summary
show ip bgp
show ip route 0.0.0.0
show ip route 198.51.100.21
show ip ospf neighbor
CORE01 , CORE02
show ip route 0.0.0.0
show ip route 198.51.100.11
show ip ospf neighbor
show standby brief
CPE01
traceroute 198.51.100.1
ping 198.51.100.1 rep 1000000 timeout 1
リファレンス
High Availability Configuration Guide, Cisco IOS XE Dublin 17.12.x (Catalyst 9500 Switches)
Chapter: Configuring Graceful Insertion and Removal
更新履歴
2024/11/03 : 初版作成
2024/11/28 : shutdown l2 を追加