「2024-11-03 Cat9000V GIR 機能検証」の版間の差分

提供:hkatou_Lab
ナビゲーションに移動 検索に移動
ページの作成:「Nexus で採用され Catalyst 9000 から実装された GIR について、機能検証を実施しました。 このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。 検証対象として Catalyst 9000V Q200 を使用していますが、実機の Catalyst 9000 シリーズでも同様の動作をするはずです。 == 目的 == GIR の動作について理解を深…」
 
編集の要約なし
 
(同じ利用者による、間の7版が非表示)
1行目: 1行目:
Nexus で採用され Catalyst 9000 から実装された GIR について、機能検証を実施しました。
Nexus で開発され Catalyst 9000 にも実装された GIR について、機能検証を実施しました。


このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。
このページにラボシナリオとして、コンフィグや確認コマンド、疎通確認のポイントなどをまとめています。
5行目: 5行目:
検証対象として Catalyst 9000V Q200 を使用していますが、実機の Catalyst 9000 シリーズでも同様の動作をするはずです。
検証対象として Catalyst 9000V Q200 を使用していますが、実機の Catalyst 9000 シリーズでも同様の動作をするはずです。


== 目的 ==
== GIR (Graceful Insertion and Removal) とは ? ==
直訳ではスムーズな挿入と削除。
 
主にルーティング プロトコルの停止と開始を制御し、冗長化された機器を簡易にトラフィック迂回したり挿入したりできる機能。
 
== このドキュメントの目的 ==
GIR の動作について理解を深められること。
GIR の動作について理解を深められること。
ラボを再現して検証できること。


== 通信要件 ==
== 通信要件 ==
14行目: 21行目:
* GIR を開始したホストを経路迂回すること
* GIR を開始したホストを経路迂回すること
* GIR を停止したホストに経路復旧すること
* GIR を停止したホストに経路復旧すること
* 断時間がそこまで長くないこと
== 所感 ==
=== メリット ===
* L3 プロトコルのどこを止めてルートを迂回させて・・・などと考えて切り離し・切り戻しのコンフィグを組む必要がない
* 断時間は非常に短く切り替え・切り戻しできた
* メンテナンスするプロトコルの順番を入れ替えられる
** 環境にもよると思われるが、基本的に上位プロトコルから実施したほうが良さそう
* 切り戻し (Insert) は切り替えの逆順で実施してくれる
** iBGP は OSPF の Loopback アドレス学習を元にピアを張るため、OSPF ネイバーを先に上げた方が良い
=== 考慮点 ===
* Stack には使えない
* GIR 導入後にコンフィグを変更した際、GIR にも変更が必要になるケースがあるので、変更を忘れないようにする
** HSRP で新 Group を追加した、など
** 導入当初は検証しても、普段の設定追加で忘れがちになるのでは
* いったんメンテナンスを開始 (Remove) すると、手を出すことができない
** 新規導入時に動作検証を実施し、挙動を確認したほうが良い
* メンテナンス中はコンフィグ変更が可能
** 指定したプロトコルの状態を保存しているようで、切り戻せないコンフィグにした場合、stop maintenance しても切り戻りと判定してくれないため注意が必要
*** 例) 事前に Up していた、OSPF ネイバーのインターフェースをメンテナンス中にシャットダウンした
*** ネイバーの Up / Down が作業前後で異なるような作業に、GIR の利用は想定されていないと考えられる
** 基本的には OS Verup などコンフィグ変更しないメンテナンスを対象に GIR を使うのが良さそう
* メンテナンス停止 (Insert) 中は、コンフィグを変更できない
* failsafe は今回挙動を確認できなかった
* snapshot 機能は今回の Version に実装されていない模様
* 各プロトコルのルート学習にかかる時間に wait などは設定できない
** フルルートや高スケールの環境でも GIR が考慮してくれるか、追加検証が必要
*2024/11 時点の最新長期サポート Version である、17.12.4 では C9500X が非サポート
== 検証結果概要 ==
=== プロトコル別の挙動 ===
{| class="wikitable"
|+GIR Remove 実施時
!
!ピア・ネイバー・ステート
!ルート
!メトリック
!備考
|-
|BGP
|保持される
|広報が停止される
| -
|BGP はアトリビュートが非常に多いため、ルートの広報をやめる実装になっていると思われる。
今回のユースケースでは断時間は非常に短かったため、問題にはなりにくいと考えられる。
|-
|OSPF
|保持される
|広報する
|65536 になる
|ネイバーが保持され、ルートも削除されない。
ルートのメトリックは最低値になるため、優先度を低下する実装となっている。
OSPF で学習する Loopback を telnet 用アドレスとして管理する環境も多いため、好ましい実装と言える。
|-
|HSRP
|Resign メッセージを送信する
Active -> Init になる
Hello も送信しなくなる
| -
| -
|HSRP Active から降格する際、Resign メッセージを送信しているため、Standby が素早く Active へ昇格することが可能。
断時間を短く切り替えが可能となっている。
|}
=== その他 ===
* start maintenance 中の再起動 : stop maintenance 状態で起動する


== 検証環境 ==
== 検証環境 ==
23行目: 103行目:


PE01 を WAN の機器、CE01 , CE02 , CORE01 , CORE02 , CPE を LAN の機器とする。
PE01 を WAN の機器、CE01 , CE02 , CORE01 , CORE02 , CPE を LAN の機器とする。
[[ファイル:Catalyst_PBR_01.png|代替文=Catalyst PBR Network Diagram|なし|フレーム|Catalyst PBR Feature Test Network Diagram]]
[[ファイル:20241103 GIR Diagram.png|代替文=20241103 GIR Diagram|フレーム|20241103 GIR Diagram|なし]]
 
== IP アドレッシング ==
== IP アドレッシング ==
{| class="wikitable"
{| class="wikitable"
290行目: 369行目:
   set local-preference 100
   set local-preference 100
|PE01 と eBGP ピア、
|PE01 と eBGP ピア、
CE01 と CE02 で iBGP ピアを
CE01 と CE02 で iBGP ピアを張るコンフィグ
張るコンフィグ
 
 
'''route-map LP300'''
'''route-map LP300'''
LP300 で上りトラフィックを優先する
LP300 で上りトラフィックを優先する
値が高いほうが優先
値が高いほうが優先
'''route-map MED100'''
'''route-map MED100'''
MED100 で下りトラフィックを優先する
MED100 で下りトラフィックを優先する
値が低いほうが優先
値が低いほうが優先
|-
|-
378行目: 464行目:
|CE01 , 02 間  
|CE01 , 02 間  
CE01 , 02 <-> CORE01 , 02 間 OSPF
CE01 , 02 <-> CORE01 , 02 間 OSPF
iBGP で使用する Loopback を広報する
iBGP で使用する Loopback を広報する
|-
|-
387行目: 475行目:
   router ospf 1
   router ospf 1
  system mode maintenance
  system mode maintenance
  timeout 15
   template BGP_OSPF
   template BGP_OSPF
  failsafe 5
|
|
  CE02#show run | s mainte
  CE02#show run | s mainte
394行目: 484行目:
   router ospf 1
   router ospf 1
  system mode maintenance
  system mode maintenance
  timeout 15
   template BGP_OSPF
   template BGP_OSPF
|
  failsafe 5
|GIR で BGP と OSPF を切り替える
'''timeout 15'''
メンテナンス時間を設定します 15 は分を意味しています
タイムアウトすると、stop maintenance が実行され、切り戻ります
'''failsafe 5'''
不明
|}
|}
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
467行目: 564行目:
   network 203.0.113.144 0.0.0.3 area 0.0.0.0
   network 203.0.113.144 0.0.0.3 area 0.0.0.0
   network 203.0.113.148 0.0.0.3 area 0.0.0.0
   network 203.0.113.148 0.0.0.3 area 0.0.0.0
|
|CE01 , 02 から
OSPF デフォルトルートを
受信するための設定
|-
|-
|HSRP
|HSRP
500行目: 599行目:
   standby 1 priority 105
   standby 1 priority 105
   standby 1 preempt
   standby 1 preempt
|
|CPE01 を HSRP で
収容するための設定
|-
|-
|GIR
|GIR
510行目: 610行目:
   
   
  system mode maintenance
  system mode maintenance
  timeout 15
   template OSPF_HSRP
   template OSPF_HSRP
  failsafe 5
|
|
  CORE02#show run | s mainte
  CORE02#show run | s mainte
518行目: 620行目:
   
   
  system mode maintenance
  system mode maintenance
  timeout 15
   template OSPF_HSRP
   template OSPF_HSRP
|
  failsafe 5
|GIR で OSPF と HSRP を切り替える
|}
|}
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
549行目: 653行目:
   
   
  ip route 0.0.0.0 0.0.0.0 203.0.113.1
  ip route 0.0.0.0 0.0.0.0 203.0.113.1
|
|CORE01 , 02 の HSRP VIP に対してデフォルトルートを設定
|}
|}


== 疎通・経路確認 ==
== 正常時の疎通・経路確認 ==


=== コマンドリスト ===
=== コマンドリスト ===
570行目: 674行目:
   2 203.0.113.142 81 msec 54 msec 61 msec
   2 203.0.113.142 81 msec 54 msec 61 msec
   3 203.0.113.101 [AS 64512] 103 msec *  105 msec
   3 203.0.113.101 [AS 64512] 103 msec *  105 msec
通常時は CE01 -> CORE01 -> CPE01 を経由する。
通常時は CE01 -> CORE01 -> CPE01 を経由します。
  show ip bgp
  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 ====
587行目: 722行目:
   2 203.0.113.141 63 msec 66 msec 69 msec
   2 203.0.113.141 63 msec 66 msec 69 msec
   3 203.0.113.129 89 msec *  84 msec
   3 203.0.113.129 89 msec *  84 msec
通常時は CORE01 -> CE01 -> PE01 を経由する。
通常時は CORE01 -> CE01 -> PE01 を経由します。


== CE01 GIR BGP + OSPF 動作確認 ==
== CE01 GIR BGP + OSPF 動作確認 ==
start maintenance でホストを Remove します。
  CE01#start maintenance
  CE01#start maintenance
  Template BGP_OSPF will be applied. Do you want to continue?[confirm]
  Template BGP_OSPF will be applied. Do you want to continue?[confirm]
599行目: 735行目:
  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_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
  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
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+CE01 BGP + OSPF GIR 動作確認
|+CE01 BGP + OSPF GIR 動作確認
!確認
!確認
!PE01 経路確認
!通常時
!CPE01 経路確認
!CE01 メンテナンス時
!備考
!備考
|-
|-
|BGP
|BGP
|
|
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 39 msec 65 msec 37 msec
  2 203.0.113.142 66 msec 75 msec 67 msec
  3 203.0.113.101 [AS 64512] 94 msec *  94 msec
PE01#show ip bgp
BGP table version is 13, 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
|
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.134 50 msec 30 msec 35 msec'''
  '''2 203.0.113.146 57 msec 67 msec 67 msec'''
  3 203.0.113.101 [AS 64512] 125 msec *  135 msec
PE01#
  PE01#show ip bgp
  PE01#show ip bgp
  BGP table version is 8, local router ID is 198.51.100.1
  BGP table version is 8, local router ID is 198.51.100.1
620行目: 799行目:
       0.0.0.0          0.0.0.0                                0 i
       0.0.0.0          0.0.0.0                                0 i
   *>  203.0.113.0/25  203.0.113.134          300            0 64512 i
   *>  203.0.113.0/25  203.0.113.134          300            0 64512 i
|'''上り : CPE01'''
CORE01 はわたりを経由するように変更されています。
'''下り : PE01'''
PE01 は CE02 を経由するように変更されています。
CE01 の Next Hop がなくなっており、'''BGP アドレス広報を停止'''していました。
|-
|
|
|
|
CE01#show ip bgp summary
BGP router identifier 198.51.100.11, local AS number 64512
BGP table version is 3, main routing table version 3
2 network entries using 496 bytes of memory
4 path entries using 544 bytes of memory
4/2 BGP path/bestpath attribute entries using 1184 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2248 total bytes of memory
1 received paths for inbound soft reconfiguration
BGP activity 2/0 prefixes, 4/0 paths, scan interval 60 secs
2 networks peaked at 08:12:30 Nov 4 2024 JST (00:02:19.633 ago)
Neighbor        V          AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down  State/PfxRcd
198.51.100.12  4        64512      24      24        3    0    0 00:03:04        1
203.0.113.129  4        64496      20      19        3    0    0 00:02:19        1
CE01#show ip bgp
BGP table version is 3, local router ID is 198.51.100.11
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          203.0.113.129                300      0 64496 i
  *>  203.0.113.0/25  203.0.113.142            2        32768 i
  * i                  198.51.100.12          41    100      0 i
|
CE01(maint-mode)#show ip bgp summary
BGP router identifier 198.51.100.11, local AS number 64512
BGP table version is 20, main routing table version 20
2 network entries using 496 bytes of memory
5 path entries using 680 bytes of memory
5/2 BGP path/bestpath attribute entries using 1480 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2680 total bytes of memory
1 received paths for inbound soft reconfiguration
BGP activity 5/3 prefixes, 22/17 paths, scan interval 60 secs
2 networks peaked at 08:12:51 Nov 3 2024 JST (03:45:55.560 ago)
Neighbor        V          AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down  State/PfxRcd
198.51.100.12  4        64512    153    160      20    0    0 00:22:50        2
203.0.113.129  4        64496    155    159      20    0    0 00:23:14        1
CE01(maint-mode)#show ip bgp
BGP table version is 20, local router ID is 198.51.100.11
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
  * i  0.0.0.0          198.51.100.12            0    100      0 64496 i
  *>                    203.0.113.129                300      0 64496 i
  * i  203.0.113.0/25  198.51.100.12          41    100      0 i
  *>                    203.0.113.142        65536        32768 i
|'''BGP ピア'''
ピアは維持されます。
'''eBGP 受信ルート'''
ルート自体は保持しています。
|-
|-
|通常時
| rowspan="3" |OSPF
経路確認
|
CE02#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  '''Known via "ospf 1"''', distance 110, metric 81, candidate default path
  Tag 1, type extern 1
  Last update from 203.0.113.137 on '''Port-channel21''', 00:00:20 ago
  Routing Descriptor Blocks:
  * 203.0.113.137, from 198.51.100.11, 00:00:20 ago, via Port-channel21
      Route metric is 81, traffic share count is 1
      Route tag 1
|
|
  L3SW01(tcl)#tclsh
  CE02#show ip route 0.0.0.0
L3SW01(tcl)#foreach address {
  Routing entry for 0.0.0.0/0, supernet
+> 8.8.8.8
   '''Known via "bgp 64512"''', distance 20, metric 0, candidate default path
  +> 203.0.113.249
   Tag 64496, type external
+> 203.0.113.250
  Last update from 203.0.113.133 00:00:07 ago
+> 198.51.100.253
   Routing Descriptor Blocks:
+> 198.51.100.5
   * '''203.0.113.133''', from 203.0.113.133, 00:00:07 ago
+> 198.51.100.6
      opaque_ptr 0x7477AABBBCC0
+> 198.51.100.9
      Route metric is 0, traffic share count is 1
+> 198.51.100.10
      AS Hops 1
+> 198.51.100.13
      Route tag 64496
+> 198.51.100.14
      MPLS label: none
+> 198.51.100.17
|'''上り : CE02'''
+> 198.51.100.18
通常時は CE01 宛わたり Po21 を向いていますが、CE01 GIR 中は PE01 宛 '''203.0.113.133''' を向いています。
+> 198.51.100.21
|-
+> 198.51.100.22
+> 198.51.100.252
+>} { traceroute $address source Lo1 }
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
   1 198.51.100.21 3 msec 2 msec 3 msec
   2 203.0.113.249 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 203.0.113.249
VRF info: (vrf in name/id, vrf out name/id)
   1 198.51.100.21 3 msec 3 msec 2 msec
   *
    203.0.113.249 3 msec *
Type escape sequence to abort.
Tracing the route to 203.0.113.250
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.253
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 4 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.5
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 4 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.6
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.6 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.9
VRF info: (vrf in name/id, vrf out name/id)
  1 *
    198.51.100.21 4 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.10
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.10 2 msec 2 msec 1 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.13
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  4 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.14
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 2 msec
  2 198.51.100.14 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.17
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.18
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 4 msec 2 msec 3 msec
  2 198.51.100.18 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.21
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.22
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.22 3 msec *  2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.252
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.252 2 msec *  2 msec
L3SW01(tcl)#
|
|
  L3SW01(tcl)#tclsh
  CORE01#show ip route 0.0.0.0
  L3SW01(tcl)#foreach address {
  Routing entry for 0.0.0.0/0, supernet
+> 8.8.8.8
  Known via "ospf 1", distance 110, metric 2, candidate default path
+> 203.0.113.249
  Tag 1, type extern 1
+> 203.0.113.250
  Last update from 203.0.113.141 on GigabitEthernet1/0/23, 00:07:11 ago
+> 198.51.100.253
  Routing Descriptor Blocks:
  +> 198.51.100.5
  * '''203.0.113.141''', from 198.51.100.11, 00:07:11 ago, via '''GigabitEthernet1/0/23'''
  +> 198.51.100.6
      Route metric is 2, traffic share count is 1
  +> 198.51.100.9
      Route tag 1
  +> 198.51.100.10
   
  +> 198.51.100.13
  +> 198.51.100.14
CORE01#show ip ospf 1 rib
+> 198.51.100.17
  +> 198.51.100.18
            OSPF Router with ID (198.51.100.21) (Process ID 1)
  +> 198.51.100.21
+> 198.51.100.22
  +> 198.51.100.252
                Base Topology (MTID 0)
  +>} { traceroute $address source Lo2 }
   
  Type escape sequence to abort.
  OSPF local RIB
  Tracing the route to 8.8.8.8
  Codes: * - Best, > - Installed in global RIB
  VRF info: (vrf in name/id, vrf out name/id)
   
  1 198.51.100.21 3 msec 3 msec 2 msec
  *> 198.51.100.11/32, Intra, cost '''65536''', area 0.0.0.0
  2 198.51.100.10 1 msec 2 msec 2 msec
  <nowiki> </nowiki>    via 203.0.113.141, GigabitEthernet1/0/23
  3 198.51.100.5 3 msec 3 msec 3 msec
  <nowiki>*</nowiki>198.51.100.12/32, Intra, cost 91, area 0.0.0.0
  4 203.0.113.249 3 msec *  4 msec
  <nowiki> </nowiki>     via 203.0.113.150, Port-channel21
  <snip>
   
   
  CORE01#ping 198.51.100.11
  Type escape sequence to abort.
  Type escape sequence to abort.
  Tracing the route to 203.0.113.249
  Sending 5, 100-byte ICMP Echos to 198.51.100.11, timeout is 2 seconds:
VRF info: (vrf in name/id, vrf out name/id)
  <nowiki>!!!!!
  1 198.51.100.21 3 msec 3 msec 2 msec
  Success rate is 100 percent (5/5), round-trip min/avg/max = 19/25/35 ms</nowiki>
  2 198.51.100.10 1 msec 2 msec 2 msec
  3 198.51.100.5 3 msec 3 msec 3 msec
  4  *
    203.0.113.249 4 msec *
Type escape sequence to abort.
Tracing the route to 203.0.113.250
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.10 2 msec 3 msec 1 msec
  3 198.51.100.5 3 msec *  4 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.253
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.5
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.6
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 4 msec
  2 198.51.100.6 2 msec 3 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.9
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
  Type escape sequence to abort.
Tracing the route to 198.51.100.10
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.10 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.13
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.14
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.14 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.17
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.18
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 13 msec 3 msec 2 msec
  2 198.51.100.18 1 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.21
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.22
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.22 3 msec *  2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.252
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.252 2 msec *  2 msec
L3SW01(tcl)#
|
|
CORE01#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "ospf 1", distance 110, metric 190, candidate default path
  Tag 1, type extern 1
  Last update from 203.0.113.150 on Port-channel21, 00:00:06 ago
  Routing Descriptor Blocks:
  * '''203.0.113.150''', from 198.51.100.12, 00:00:06 ago, via '''Port-channel21'''
      Route metric is 190, traffic share count is 1
      Route tag 1
|'''上り : CORE01'''
CE01 Lo0 ルートの OSPF コスト メトリックが 65536 になっており、重くなっていますが、疎通自体は可能です。
|-
|-
|PBR next-hop 1 つめ
障害時 経路確認
|
|
  L3SW01(tcl)#foreach address {
  CPE01#traceroute 198.51.100.1
+> 8.8.8.8
+> 203.0.113.249
+> 203.0.113.250
+> 198.51.100.253
+> 198.51.100.5
+> 198.51.100.6
+> 198.51.100.9
+> 198.51.100.10
+> 198.51.100.13
+> 198.51.100.14
+> 198.51.100.17
+> 198.51.100.18
+> 198.51.100.21
+> 198.51.100.22
+> 198.51.100.252
+>} { traceroute $address source Lo1 }
  Type escape sequence to abort.
  Type escape sequence to abort.
  Tracing the route to 8.8.8.8
  Tracing the route to 198.51.100.1
  VRF info: (vrf in name/id, vrf out name/id)
  VRF info: (vrf in name/id, vrf out name/id)
   1 198.51.100.21 3 msec 2 msec 2 msec
   1 203.0.113.2 71 msec 73 msec 65 msec
  2 203.0.113.249 3 msec *  2 msec
   2 203.0.113.141 82 msec 53 msec 55 msec
Type escape sequence to abort.
   3 203.0.113.129 66 msec *  80 msec
Tracing the route to 203.0.113.249
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 2 msec 3 msec
   2 *
    203.0.113.249 3 msec *
Type escape sequence to abort.
Tracing the route to 203.0.113.250
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  5 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.253
VRF info: (vrf in name/id, vrf out name/id)
   1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.5
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *  *
  2  *  *
Type escape sequence to abort.
Tracing the route to 198.51.100.6
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *  *
  2
Type escape sequence to abort.
Tracing the route to 198.51.100.9
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *  *
  2
Type escape sequence to abort.
Tracing the route to 198.51.100.10
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *
Type escape sequence to abort.
Tracing the route to 198.51.100.13
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 4 msec *  4 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.14
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 3 msec
  2 198.51.100.14 2 msec 2 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.17
VRF info: (vrf in name/id, vrf out name/id)
  1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.18
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 2 msec
  2 198.51.100.18 1 msec 3 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.21
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.22
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.22 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.252
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.252 2 msec *  2 msec
L3SW01(tcl)#
|
|
  L3SW01(tcl)#tclsh
  CPE01#traceroute 198.51.100.1
L3SW01(tcl)#foreach address {
+> 8.8.8.8
+> 203.0.113.249
+> 203.0.113.250
+> 198.51.100.253
+> 198.51.100.5
+> 198.51.100.6
+> 198.51.100.9
+> 198.51.100.10
+> 198.51.100.13
+> 198.51.100.14
+> 198.51.100.17
+> 198.51.100.18
+> 198.51.100.21
+> 198.51.100.22
+> 198.51.100.252
+>} { traceroute $address source Lo2 }
  Type escape sequence to abort.
  Type escape sequence to abort.
  Tracing the route to 8.8.8.8
  Tracing the route to 198.51.100.1
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 2 msec
  2 198.51.100.18 2 msec 2 msec 2 msec
  3 198.51.100.13 2 msec 2 msec 2 msec
  4 203.0.113.249 3 msec *  4 msec
Type escape sequence to abort.
Tracing the route to 203.0.113.249
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 2 msec 2 msec
  2 198.51.100.18 2 msec 2 msec 2 msec
  3 198.51.100.13 2 msec 3 msec 4 msec
  4  *
    203.0.113.249 4 msec *
Type escape sequence to abort.
Tracing the route to 203.0.113.250
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 3 msec 6 msec
  2 198.51.100.18 2 msec 3 msec 2 msec
  3 198.51.100.13 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.253
  VRF info: (vrf in name/id, vrf out name/id)
  VRF info: (vrf in name/id, vrf out name/id)
   1 198.51.100.21 2 msec *  3 msec
   1 203.0.113.2 37 msec 69 msec 38 msec
Type escape sequence to abort.
   2 203.0.113.150 93 msec 86 msec 88 msec
Tracing the route to 198.51.100.5
   3 203.0.113.145 109 msec 110 msec 111 msec
VRF info: (vrf in name/id, vrf out name/id)
   4 203.0.113.133 213 msec *  154 msec
  1  *  *  *
|'''上り : CPE01'''
  2
CORE01 のわたりを経由するようになりました。
Type escape sequence to abort.
Tracing the route to 198.51.100.6
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *
Type escape sequence to abort.
Tracing the route to 198.51.100.9
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *
Type escape sequence to abort.
Tracing the route to 198.51.100.10
VRF info: (vrf in name/id, vrf out name/id)
  1  *  *  *
  2
Type escape sequence to abort.
Tracing the route to 198.51.100.13
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 4 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.14
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec 2 msec 3 msec
   2 198.51.100.14 2 msec 1 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.17
VRF info: (vrf in name/id, vrf out name/id)
   1  *
    198.51.100.21 3 msec *
Type escape sequence to abort.
Tracing the route to 198.51.100.18
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 4 msec 3 msec 2 msec
   2 198.51.100.18 2 msec 3 msec 2 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.21
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.21 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.22
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.22 3 msec *  3 msec
Type escape sequence to abort.
Tracing the route to 198.51.100.252
VRF info: (vrf in name/id, vrf out name/id)
  1 198.51.100.252 2 msec *  2 msec
L3SW01(tcl)#
|
|}
|}
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
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
|+エントリ確認
|+CORE01 OSPF + HSRP GIR 動作確認
!プロトコル
!確認
!CE01 通常時
!通常時
!CE01 Gi1/0/13 障害時`
!CORE01 メンテナンス時
!備考
!備考
|-
|-
|PBR
|OSPF
|
|
  CE01(config-if)#do sh run | s route-map
  CE01#show ip route 198.51.100.21
  ip policy route-map RM_NAT_PBR
  Routing entry for 198.51.100.21/32
route-map RM_NAT_PBR deny 10
   Known via "ospf 1", distance 110, metric 2, type intra area
  match ip address ACL_NO_NAT
  Last update from 203.0.113.142 on GigabitEthernet1/0/1, 00:00:07 ago
route-map RM_NAT_PBR permit 20
  match ip address ACL_NAT
  set ip next-hop '''198.51.100.10''' 198.51.100.18
CE01(config-if)#do sh ip route 198.51.100.10 255.255.255.252
Load for five secs: 5%/0%; one minute: 5%; five minutes: 5%
Time source is NTP, 15:54:08.189 JST Wed Sep 25 2024
  Routing entry for 198.51.100.8/30
   Known via "'''connected'''", distance 0, metric 0 (connected, via interface)
   Routing Descriptor Blocks:
   Routing Descriptor Blocks:
   * directly connected, via Vlan20
   * 203.0.113.142, from 198.51.100.21, 00:00:07 ago, via GigabitEthernet1/0/1
       Route metric is 0, traffic share count is 1
       Route metric is 2, traffic share count is 1
|
  CE01#show ip route 198.51.100.21
  CE01(config-if)#do sh ip route 198.51.100.18
  Routing entry for 198.51.100.21/32
Load for five secs: 7%/0%; one minute: 5%; five minutes: 6%
   Known via "ospf 1", distance 110, metric 65536, type intra area
Time source is NTP, 15:38:42.872 JST Wed Sep 25 2024
  Last update from 203.0.113.142 on GigabitEthernet1/0/1, 00:02:42 ago
  Routing entry for 198.51.100.16/30
   Known via "connected", distance 0, metric 0 (connected, via interface)
   Routing Descriptor Blocks:
   Routing Descriptor Blocks:
   * directly connected, via Vlan21
   * 203.0.113.142, from 198.51.100.21, 00:02:42 ago, via GigabitEthernet1/0/1
       Route metric is 0, traffic share count is 1
       Route metric is 65536, traffic share count is 1
  CE01(config-if)#
|'''OSPF ルートメトリック'''
65536 になっており、全く優先されないルートになりました。
上述の結果と同じく疎通は可能です。
|-
| rowspan="3" |HSRP
|
  CORE01#show standby brief
<nowiki> </nowiki>                    P indicates configured to preempt.
<nowiki> </nowiki>                    <nowiki>|</nowiki>
Interface  Grp  Pri P State  Active          Standby        Virtual IP
Vl1        1    110 P Active  local          203.0.113.3    203.0.113.1
|
|
  CE01(config-if)#do sh run | s route-map
  CORE01(maint-mode)#show standby brief
  ip policy route-map RM_NAT_PBR
<nowiki> </nowiki>                    P indicates configured to preempt.
  route-map RM_NAT_PBR deny 10
  <nowiki> </nowiki>                    <nowiki>|</nowiki>
   match ip address ACL_NO_NAT
Interface   Grp Pri P State   Active          Standby        Virtual IP
  route-map RM_NAT_PBR permit 20
Vl1        1    110 P Init    203.0.113.3    unknown        203.0.113.1
   match ip address ACL_NAT
  set ip next-hop 198.51.100.10 '''198.51.100.18'''
   
   
  CE01(config-if)#do sh ip route 198.51.100.10 255.255.255.252
  Nov  4 2024 00:04:55 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for router ospf 1
  Load for five secs: 4%/0%; one minute: 6%; five minutes: 5%
Nov  4 2024 00:04:55 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for hsrp Vlan1 1
Time source is NTP, 15:52:51.641 JST Wed Sep 25 2024
Nov  4 2024 00:04:55 UTC: HSRP: Vl1 Grp 1 Resign out 203.0.113.2 Active  pri 110 vIP 203.0.113.1
  Nov  4 2024 00:04:55 UTC: %HSRP-5-STATECHANGE: Vlan1 Grp 1 state Active -> Init
'''% Subnet not in table'''
|'''HSRP'''
CE01(config-if)#
Resign メッセージを送信し、降格しました。
State が Init となっており、HSRP Hello を送信しなくなりました。
   
|-
  CE01(config-if)#do sh ip route 198.51.100.18
|
  Load for five secs: 5%/0%; one minute: 5%; five minutes: 6%
  CORE02#show standby brief
  Time source is NTP, 15:39:33.129 JST Wed Sep 25 2024
  <nowiki> </nowiki>                    P indicates configured to preempt.
   
  <nowiki> </nowiki>                    <nowiki>|</nowiki>
  Routing entry for 198.51.100.16/30
  Interface  Grp Pri P State  Active          Standby        Virtual IP
  Known via "connected", distance 0, metric 0 (connected, via interface)
  Vl1        1    105 P Standby 203.0.113.2    local          203.0.113.1
  Routing Descriptor Blocks:
|
   * directly connected, via Vlan21
CORE02#show standby brief
      Route metric is 0, traffic share count is 1
<nowiki> </nowiki>                    P indicates configured to preempt.
|PBR の next-hop 切替時は、障害が発生した direct connect の L3 インターフェースがダウンしており、該当のコネクテッド ルートが存在しなくなる必要がある
<nowiki> </nowiki>                    <nowiki>|</nowiki>
Interface  Grp  Pri P State  Active          Standby        Virtual IP
Vl1        1   105 P Active  local          unknown        203.0.113.1
|'''上り : CORE02'''
CORE01 が HSRP Hello を送信しなくなったため、Standby が unknown になりました。
|-
|-
|スタティック ルーティング
|
|
  CE01(config-if)#do sh run | in ip route [0-9].*6 name
  CPE01#traceroute 198.51.100.1
  ip route 198.51.100.240 255.255.255.248 Vlan10 198.51.100'''.6''' name NAT-RT01_NAT_Pool
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 48 msec 43 msec 83 msec
  2 203.0.113.141 72 msec 78 msec 58 msec
  3 203.0.113.129 82 msec *  78 msec
|
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)
<nowiki> </nowiki> 1 203.0.113.3 47 msec 38 msec 48 msec
<nowiki> </nowiki> 2 203.0.113.145 63 msec 63 msec 55 msec
<nowiki> </nowiki> 3 203.0.113.137 79 msec 98 msec 90 msec
<nowiki> </nowiki> 4 203.0.113.129 111 msec * 113 msec
  CPE01#ping 198.51.100.1 rep 1000000 tim 1
Type escape sequence to abort.
Sending 1000000, 100-byte ICMP Echos to 198.51.100.1, timeout is 1 seconds:
<nowiki>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!
<snip>
CPE01#ping 198.51.100.1 rep 1000000 tim 1
Type escape sequence to abort.
Sending 1000000, 100-byte ICMP Echos to 198.51.100.1, timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!</nowiki>
 
|'''上り : CPE01'''
CE01 のわたりを経由するようになりました。
 
Remove / Insert 時の断時間は OSPF / HSRP でそれぞれ 1 秒でした。


CE01(config-if)#do sh ip route 198.51.100.240 255.255.255.248
断時間が計測できないケースもありました。
Load for five secs: 5%/0%; one minute: 7%; five minutes: 6%
Time source is NTP, 15:37:27.052 JST Wed Sep 25 2024
Routing entry for 198.51.100.240/29
  Known via "static", distance 1, metric 0
  Routing Descriptor Blocks:
  '''* 198.51.100.6, via Vlan10'''
      Route metric is 0, traffic share count is 1
|
CE01(config-if)#do sh run | in ip route [0-9].*5 name
ip route 198.51.100.240 255.255.255.248 Vlan11 198.51.100'''.14 5''' name NAT-RT01_NAT_Pool


CE01(config-if)#do sh ip route 198.51.100.240 255.255.255.248
* 左の例では OSPF 切り戻りが断なし
Load for five secs: 7%/0%; one minute: 6%; five minutes: 6%
Time source is NTP, 15:37:48.825 JST Wed Sep 25 2024
Routing entry for 198.51.100.240/29
  Known via "static", distance 5, metric 0
  Routing Descriptor Blocks:
  '''* 198.51.100.14, via Vlan11'''
      Route metric is 0, traffic share count is 1
|NAT-RT01 グローバル アドレス プール宛スタティックルートが障害切り替えされている
|}
|}


== 動作確認 - ホスト別コマンドリスト ==
== 動作確認 - ホスト別コマンドリスト ==
Catalyst の PBR は設定した機器で動作確認するコマンドがほぼ存在しない。


* ACL カウンターは動作しない
=== PE01 ===
* show route-map のカウンタもハードウェア転送では動作しない
show ip bgp summary
* 一応 ip local policy route-map で自発トラフィックに PBR がかかるため、これで動作確認することは一応可能
 
** 下手な設定をすると OSPF がダウンしたりするため、少なくとも商用機で未検証のコンフィグを試すのはやらない方が良い
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


このため、下位側の機器で ping / traceroute を実施するのが動作確認としてマストとなる。
show ip route 198.51.100.11


=== CE01 ===
show ip ospf neighbor


* show ip policy
show standby brief


=== L3SW01 ===
=== CPE01 ===
traceroute 198.51.100.1


* ping
ping 198.51.100.1 rep 1000000 timeout 1
* traceroute


== リファレンス ==
== リファレンス ==
[https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-12/configuration_guide/ha/b_1712_ha_9500_cg/configuring_graceful_insertion_and_removal__gir_.html High Availability Configuration Guide, Cisco IOS XE Dublin 17.12.x (Catalyst 9500 Switches)]


=== Cisco ===
Chapter: Configuring Graceful Insertion and Removal
[https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3850/software/release/16-12/configuration_guide/rtng/b_1612_rtng_3850_cg/configuring_protocol_independent_features.html IP Routing Configuration Guide, Cisco IOS XE Gibraltar 16.12.x (Catalyst 3850 Switches)]


== 脚注 ==
== 脚注 ==
{{#seo:|title={{#if: {{{page_title|}}} | {{{page_title}}} | 2024-06-16-vJunos-switch BGP-EVPN-VXLAN 機能検証}}|titlemode={{{title_mode|}}}|keywords={{{keywords|}}}|description={{{description|}}}}}
{{#seo:|title={{#if: {{{page_title|}}} | {{{page_title}}} | 2024-11-03 Cat9000V GIR 機能検証}}|titlemode={{{title_mode|}}}|keywords={{{keywords|}}}|description={{{description|}}}}}
<references />
<references />
[[カテゴリ:Catalyst]]
[[カテゴリ:Catalyst]]
[[カテゴリ:ラボ]]
[[カテゴリ:ラボ]]

2024年11月20日 (水) 14:59時点における最新版

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 を使うのが良さそう
  • メンテナンス停止 (Insert) 中は、コンフィグを変更できない
  • failsafe は今回挙動を確認できなかった
  • snapshot 機能は今回の Version に実装されていない模様
  • 各プロトコルのルート学習にかかる時間に wait などは設定できない
    • フルルートや高スケールの環境でも GIR が考慮してくれるか、追加検証が必要
  • 2024/11 時点の最新長期サポート Version である、17.12.4 では C9500X が非サポート

検証結果概要

プロトコル別の挙動

GIR Remove 実施時
ピア・ネイバー・ステート ルート メトリック 備考
BGP 保持される 広報が停止される - BGP はアトリビュートが非常に多いため、ルートの広報をやめる実装になっていると思われる。

今回のユースケースでは断時間は非常に短かったため、問題にはなりにくいと考えられる。

OSPF 保持される 広報する 65536 になる ネイバーが保持され、ルートも削除されない。

ルートのメトリックは最低値になるため、優先度を低下する実装となっている。 OSPF で学習する Loopback を telnet 用アドレスとして管理する環境も多いため、好ましい実装と言える。

HSRP Resign メッセージを送信する

Active -> Init になる Hello も送信しなくなる

- - HSRP Active から降格する際、Resign メッセージを送信しているため、Standby が素早く Active へ昇格することが可能。

断時間を短く切り替えが可能となっている。

その他

  • start maintenance 中の再起動 : stop maintenance 状態で起動する

検証環境

Cisco Catalyst 9000V Q200 : IOS-XE 17.12.1 x6

構成図

  • Catalyst 3850 : PE01 , CE01 , CE02 , CORE01 , CORE02 , CPE01

PE01 を WAN の機器、CE01 , CE02 , CORE01 , CORE02 , CPE を LAN の機器とする。

20241103 GIR Diagram
20241103 GIR Diagram

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

PE01 コンフィグ
プロトコル PE01 コンフィグ 解説
eBGP
PE01#show run | s back0|net1/0/[1-2]$|router bgp|ip route 0

interface Loopback0
 ip address 198.51.100.1 255.255.255.255

interface GigabitEthernet1/0/1
 description CE01_Gi1/0/23
 no switchport
 ip address 203.0.113.129 255.255.255.252

interface GigabitEthernet1/0/2
 description CE02_Gi1/0/23
 no switchport
 ip address 203.0.113.133 255.255.255.252

router bgp 64496
 bgp router-id 198.51.100.1
 bgp log-neighbor-changes
 bgp deterministic-med
 timers bgp 10 30
 neighbor 203.0.113.130 remote-as 64512
 neighbor 203.0.113.130 description CE01
 neighbor 203.0.113.130 default-originate
 neighbor 203.0.113.130 soft-reconfiguration inbound
 neighbor 203.0.113.134 remote-as 64512
 neighbor 203.0.113.134 description CE02
 neighbor 203.0.113.134 default-originate
 neighbor 203.0.113.134 soft-reconfiguration inbound

ip route 0.0.0.0 0.0.0.0 Null0 254
CE01 , 02 と eBGP ピアを張るための設定

CE01 , 02

CE01 , 02 コンフィグ
プロトコル CE01 コンフィグ CE02 コンフィグ 解説
eBGP
CE01#show run | s back0|net1/0/23$|^router bgp|route-map

interface Loopback0
 ip address 198.51.100.11 255.255.255.255

interface GigabitEthernet1/0/23
 description PE01_Gi1/0/1
 no switchport
 ip address 203.0.113.130 255.255.255.252

router bgp 64512
 bgp router-id 198.51.100.11
 bgp log-neighbor-changes
 bgp deterministic-med
 network 203.0.113.0 mask 255.255.255.128
 timers bgp 10 30
 neighbor 198.51.100.12 remote-as 64512
 neighbor 198.51.100.12 description CE02
 neighbor 198.51.100.12 update-source Loopback0
 neighbor 198.51.100.12 next-hop-self
 neighbor 198.51.100.12 soft-reconfiguration inbound
 neighbor 203.0.113.129 remote-as 64496
 neighbor 203.0.113.129 description PE01
 neighbor 203.0.113.129 soft-reconfiguration inbound
 neighbor 203.0.113.129 route-map LP300 in
 neighbor 203.0.113.129 route-map MED100 out

route-map LP300 permit 10
 set local-preference 300

route-map MED100 permit 10
 set metric 100
CE02#show run | s back0|net1/0/23$|^router bgp|route-map

interface Loopback0
 ip address 198.51.100.12 255.255.255.255

interface GigabitEthernet1/0/23
 description PE01_Gi1/0/2
 no switchport
 ip address 203.0.113.134 255.255.255.252

router bgp 64512
 bgp router-id 198.51.100.12
 bgp log-neighbor-changes
 bgp deterministic-med
 network 203.0.113.0 mask 255.255.255.128
 timers bgp 10 30
 neighbor 198.51.100.11 remote-as 64512
 neighbor 198.51.100.11 description CE01
 neighbor 198.51.100.11 update-source Loopback0
 neighbor 198.51.100.11 next-hop-self
 neighbor 198.51.100.11 soft-reconfiguration inbound
 neighbor 203.0.113.133 remote-as 64496
 neighbor 203.0.113.133 description PE01
 neighbor 203.0.113.133 soft-reconfiguration inbound
 neighbor 203.0.113.133 route-map LP100 in
 neighbor 203.0.113.133 route-map MED300 out

route-map MED300 permit 10
 set metric 300

route-map LP100 permit 10
 set local-preference 100
PE01 と eBGP ピア、

CE01 と CE02 で iBGP ピアを張るコンフィグ


route-map LP300

LP300 で上りトラフィックを優先する

値が高いほうが優先


route-map MED100

MED100 で下りトラフィックを優先する

値が低いほうが優先

OSPF
CE01#show run | s net1/0/1$|net1/0/2[1-2]$|el21|^router ospf

interface Port-channel21
 description CE02_Po21
 no switchport
 ip address 203.0.113.137 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 100

interface GigabitEthernet1/0/1
 description CORE01_Gi1/0/23
 no switchport
 ip address 203.0.113.141 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 1

interface GigabitEthernet1/0/21
 description CE02_Gi1/0/21
 no switchport
 no ip address
 channel-group 21 mode active

interface GigabitEthernet1/0/22
 description CE02_Gi1/0/22
 no switchport
 no ip address
 channel-group 21 mode active

router ospf 1
 router-id 198.51.100.11
 passive-interface default
 no passive-interface GigabitEthernet1/0/1
 no passive-interface Port-channel21
 network 198.51.100.11 0.0.0.0 area 0.0.0.0
 network 203.0.113.136 0.0.0.3 area 0.0.0.0
 network 203.0.113.140 0.0.0.3 area 0.0.0.0
 default-information originate metric 1 metric-type 1
CE02#show run | s net1/0/2$|net1/0/2[1-2]$|el21|^router ospf

interface Port-channel21
 description CE01_Po21
 no switchport
 ip address 203.0.113.138 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 100

interface GigabitEthernet1/0/2
 description CORE02_Gi1/0/24
 no switchport
 ip address 203.0.113.145 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 40

interface GigabitEthernet1/0/21
 description CE01_Gi1/0/21
 no switchport
 no ip address
 channel-group 21 mode active

interface GigabitEthernet1/0/22
 description CE01_Gi1/0/22
 no switchport
 no ip address
 channel-group 21 mode active

router ospf 1
 router-id 198.51.100.12
 passive-interface default
 no passive-interface GigabitEthernet1/0/2
 no passive-interface Port-channel21
 network 198.51.100.12 0.0.0.0 area 0.0.0.0
 network 203.0.113.144 0.0.0.3 area 0.0.0.0
 network 203.0.113.128 0.0.0.127 area 0.0.0.0
 default-information originate metric 100 metric-type 1
CE01 , 02 間

CE01 , 02 <-> CORE01 , 02 間 OSPF


iBGP で使用する Loopback を広報する

GIR
CE01#show run | s mainte
maintenance-template BGP_OSPF
 router bgp 64512
 router ospf 1
system mode maintenance
 timeout 15
 template BGP_OSPF
 failsafe 5
CE02#show run | s mainte
maintenance-template BGP_OSPF
 router bgp 64512
 router ospf 1
system mode maintenance
 timeout 15
 template BGP_OSPF
 failsafe 5
GIR で BGP と OSPF を切り替える

timeout 15 メンテナンス時間を設定します 15 は分を意味しています タイムアウトすると、stop maintenance が実行され、切り戻ります failsafe 5 不明

CORE01 , 02 コンフィグ
種別 CORE01 コンフィグ CORE02 コンフィグ 解説
OSPF
CORE01#show run | s net1/0/2[1-2]$|el21|^router ospf

interface Port-channel21
 description CORE02_Po21
 no switchport
 ip address 203.0.113.149 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 50

interface GigabitEthernet1/0/21
 description CORE02_Gi1/0/21
 no switchport
 no ip address
 channel-group 21 mode active

interface GigabitEthernet1/0/22
 description CORE02_Gi1/0/22
 no switchport
 no ip address
 channel-group 21 mode active

router ospf 1
 router-id 198.51.100.21
 passive-interface default
 no passive-interface GigabitEthernet1/0/23
 no passive-interface Port-channel21
 network 198.51.100.21 0.0.0.0 area 0.0.0.0
 network 203.0.113.0 0.0.0.127 area 0.0.0.0
 network 203.0.113.140 0.0.0.3 area 0.0.0.0
 network 203.0.113.148 0.0.0.3 area 0.0.0.0
CORE02#show run | s net1/0/2[1-2]$|el21|^router ospf

interface Port-channel21
 description CORE01_Po21
 no switchport
 ip address 203.0.113.150 255.255.255.252
 ip ospf network point-to-point
 ip ospf cost 50

interface GigabitEthernet1/0/21
 description CORE01_GI1/0/21
 no switchport
 no ip address
 channel-group 21 mode active

interface GigabitEthernet1/0/22
 description CORE01_GI1/0/22
 no switchport
 no ip address
 channel-group 21 mode active

router ospf 1
 router-id 198.51.100.22
 passive-interface default
 no passive-interface GigabitEthernet1/0/24
 no passive-interface Port-channel21
 network 198.51.100.22 0.0.0.0 area 0.0.0.0
 network 203.0.113.0 0.0.0.127 area 0.0.0.0
 network 203.0.113.144 0.0.0.3 area 0.0.0.0
 network 203.0.113.148 0.0.0.3 area 0.0.0.0
CE01 , 02 から

OSPF デフォルトルートを 受信するための設定

HSRP
CORE01#show run | s net1/0/1$|Vlan1$
interface GigabitEthernet1/0/1
 description CPE01_Gi1/0/23
 switchport mode access
 switchport nonegotiate
 spanning-tree portfast
 spanning-tree bpdufilter enable

interface Vlan1
 ip address 203.0.113.2 255.255.255.128
 standby version 2
 standby 1 ip 203.0.113.1
 standby 1 priority 110
 standby 1 preempt
CORE02#show run | s net1/0/1$|Vlan1$
interface GigabitEthernet1/0/1
 description CPE01_Gi1/0/24
 switchport mode access
 switchport nonegotiate
 spanning-tree portfast
 spanning-tree bpdufilter enable

interface Vlan1
 ip address 203.0.113.3 255.255.255.128
 standby version 2
 standby 1 ip 203.0.113.1
 standby 1 priority 105
 standby 1 preempt
CPE01 を HSRP で

収容するための設定

GIR
CORE01#show run | s mainte
maintenance-template OSPF_HSRP
 router ospf 1
 hsrp Vlan1 1

system mode maintenance
 timeout 15
 template OSPF_HSRP
 failsafe 5
CORE02#show run | s mainte
maintenance-template OSPF_HSRP
 router ospf 1
 hsrp Vlan1 1

system mode maintenance
 timeout 15
 template OSPF_HSRP
 failsafe 5
GIR で OSPF と HSRP を切り替える
CPE01 コンフィグ
種別 CPE01 コンフィグ 解説
ホスト
CPE01#show run | s net1/0/2[3-4]|Vlan1|ip route 0

interface GigabitEthernet1/0/23
 description CORE01_Gi1/0/1
 switchport mode access
 switchport nonegotiate
 spanning-tree portfast
 spanning-tree bpdufilter enable

interface GigabitEthernet1/0/24
 description CORE02_Gi1/0/1
 switchport mode access
 switchport nonegotiate
 spanning-tree portfast
 spanning-tree bpdufilter enable

interface Vlan1
 ip address 203.0.113.101 255.255.255.128

ip route 0.0.0.0 0.0.0.0 203.0.113.1
CORE01 , 02 の HSRP VIP に対してデフォルトルートを設定

正常時の疎通・経路確認

コマンドリスト

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
CE01 BGP + OSPF GIR 動作確認
確認 通常時 CE01 メンテナンス時 備考
BGP
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 39 msec 65 msec 37 msec
  2 203.0.113.142 66 msec 75 msec 67 msec
  3 203.0.113.101 [AS 64512] 94 msec *  94 msec
PE01#show ip bgp
BGP table version is 13, 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
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.134 50 msec 30 msec 35 msec
  2 203.0.113.146 57 msec 67 msec 67 msec
  3 203.0.113.101 [AS 64512] 125 msec *  135 msec
PE01#
PE01#show ip bgp
BGP table version is 8, 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.134          300             0 64512 i
上り : CPE01

CORE01 はわたりを経由するように変更されています。


下り : PE01

PE01 は CE02 を経由するように変更されています。

CE01 の Next Hop がなくなっており、BGP アドレス広報を停止していました。

CE01#show ip bgp summary
BGP router identifier 198.51.100.11, local AS number 64512
BGP table version is 3, main routing table version 3
2 network entries using 496 bytes of memory
4 path entries using 544 bytes of memory
4/2 BGP path/bestpath attribute entries using 1184 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2248 total bytes of memory
1 received paths for inbound soft reconfiguration
BGP activity 2/0 prefixes, 4/0 paths, scan interval 60 secs
2 networks peaked at 08:12:30 Nov 4 2024 JST (00:02:19.633 ago)

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
198.51.100.12   4        64512      24      24        3    0    0 00:03:04        1
203.0.113.129   4        64496      20      19        3    0    0 00:02:19        1

CE01#show ip bgp
BGP table version is 3, local router ID is 198.51.100.11
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          203.0.113.129                 300      0 64496 i

 *>   203.0.113.0/25   203.0.113.142            2         32768 i
 * i                   198.51.100.12           41    100      0 i
CE01(maint-mode)#show ip bgp summary
BGP router identifier 198.51.100.11, local AS number 64512
BGP table version is 20, main routing table version 20
2 network entries using 496 bytes of memory
5 path entries using 680 bytes of memory
5/2 BGP path/bestpath attribute entries using 1480 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 2680 total bytes of memory
1 received paths for inbound soft reconfiguration
BGP activity 5/3 prefixes, 22/17 paths, scan interval 60 secs
2 networks peaked at 08:12:51 Nov 3 2024 JST (03:45:55.560 ago)

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
198.51.100.12   4        64512     153     160       20    0    0 00:22:50        2
203.0.113.129   4        64496     155     159       20    0    0 00:23:14        1

CE01(maint-mode)#show ip bgp
BGP table version is 20, local router ID is 198.51.100.11
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
 * i  0.0.0.0          198.51.100.12            0    100      0 64496 i
 *>                    203.0.113.129                 300      0 64496 i
 * i  203.0.113.0/25   198.51.100.12           41    100      0 i
 *>                    203.0.113.142        65536         32768 i
BGP ピア

ピアは維持されます。 eBGP 受信ルート ルート自体は保持しています。

OSPF
CE02#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "ospf 1", distance 110, metric 81, candidate default path
  Tag 1, type extern 1
  Last update from 203.0.113.137 on Port-channel21, 00:00:20 ago
  Routing Descriptor Blocks:
  * 203.0.113.137, from 198.51.100.11, 00:00:20 ago, via Port-channel21
      Route metric is 81, traffic share count is 1
      Route tag 1
CE02#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "bgp 64512", distance 20, metric 0, candidate default path
  Tag 64496, type external
  Last update from 203.0.113.133 00:00:07 ago
  Routing Descriptor Blocks:
  * 203.0.113.133, from 203.0.113.133, 00:00:07 ago
      opaque_ptr 0x7477AABBBCC0
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 64496
      MPLS label: none
上り : CE02

通常時は CE01 宛わたり Po21 を向いていますが、CE01 GIR 中は PE01 宛 203.0.113.133 を向いています。

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:07:11 ago
  Routing Descriptor Blocks:
  * 203.0.113.141, from 198.51.100.11, 00:07:11 ago, via GigabitEthernet1/0/23
      Route metric is 2, traffic share count is 1
      Route tag 1


CORE01#show ip ospf 1 rib

            OSPF Router with ID (198.51.100.21) (Process ID 1)


                Base Topology (MTID 0)

OSPF local RIB
Codes: * - Best, > - Installed in global RIB

*>  198.51.100.11/32, Intra, cost 65536, area 0.0.0.0
      via 203.0.113.141, GigabitEthernet1/0/23
*>  198.51.100.12/32, Intra, cost 91, area 0.0.0.0
      via 203.0.113.150, Port-channel21
<snip>


CORE01#ping 198.51.100.11
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 198.51.100.11, timeout is 2 seconds:
!!!!!
  Success rate is 100 percent (5/5), round-trip min/avg/max = 19/25/35 ms
CORE01#show ip route 0.0.0.0
Routing entry for 0.0.0.0/0, supernet
  Known via "ospf 1", distance 110, metric 190, candidate default path
  Tag 1, type extern 1
  Last update from 203.0.113.150 on Port-channel21, 00:00:06 ago
  Routing Descriptor Blocks:
  * 203.0.113.150, from 198.51.100.12, 00:00:06 ago, via Port-channel21
      Route metric is 190, traffic share count is 1
      Route tag 1
上り : CORE01

CE01 Lo0 ルートの OSPF コスト メトリックが 65536 になっており、重くなっていますが、疎通自体は可能です。

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 71 msec 73 msec 65 msec
  2 203.0.113.141 82 msec 53 msec 55 msec
  3 203.0.113.129 66 msec *  80 msec
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 37 msec 69 msec 38 msec
  2 203.0.113.150 93 msec 86 msec 88 msec
  3 203.0.113.145 109 msec 110 msec 111 msec
  4 203.0.113.133 213 msec *  154 msec
上り : CPE01

CORE01 のわたりを経由するようになりました。

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
CORE01 OSPF + HSRP GIR 動作確認
確認 通常時 CORE01 メンテナンス時 備考
OSPF
CE01#show ip route 198.51.100.21
Routing entry for 198.51.100.21/32
  Known via "ospf 1", distance 110, metric 2, type intra area
  Last update from 203.0.113.142 on GigabitEthernet1/0/1, 00:00:07 ago
  Routing Descriptor Blocks:
  * 203.0.113.142, from 198.51.100.21, 00:00:07 ago, via GigabitEthernet1/0/1
      Route metric is 2, traffic share count is 1
CE01#show ip route 198.51.100.21
Routing entry for 198.51.100.21/32
  Known via "ospf 1", distance 110, metric 65536, type intra area
  Last update from 203.0.113.142 on GigabitEthernet1/0/1, 00:02:42 ago
  Routing Descriptor Blocks:
  * 203.0.113.142, from 198.51.100.21, 00:02:42 ago, via GigabitEthernet1/0/1
      Route metric is 65536, traffic share count is 1
OSPF ルートメトリック

65536 になっており、全く優先されないルートになりました。 上述の結果と同じく疎通は可能です。

HSRP
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
CORE01(maint-mode)#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State   Active          Standby         Virtual IP
Vl1         1    110 P Init    203.0.113.3     unknown         203.0.113.1

Nov  4 2024 00:04:55 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_COMPLETE: Maintenance Isolate complete for router ospf 1
Nov  4 2024 00:04:55 UTC: %MMODE-6-MMODE_CLIENT_TRANSITION_START: Maintenance Isolate start for hsrp Vlan1 1
Nov  4 2024 00:04:55 UTC: HSRP: Vl1 Grp 1 Resign out 203.0.113.2 Active  pri 110 vIP 203.0.113.1
Nov  4 2024 00:04:55 UTC: %HSRP-5-STATECHANGE: Vlan1 Grp 1 state Active -> Init
HSRP

Resign メッセージを送信し、降格しました。 State が Init となっており、HSRP Hello を送信しなくなりました。

CORE02#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State   Active          Standby         Virtual IP
Vl1         1    105 P Standby 203.0.113.2     local           203.0.113.1
CORE02#show standby brief
                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State   Active          Standby         Virtual IP
Vl1         1    105 P Active  local           unknown         203.0.113.1
上り : CORE02

CORE01 が HSRP Hello を送信しなくなったため、Standby が unknown になりました。

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 48 msec 43 msec 83 msec
  2 203.0.113.141 72 msec 78 msec 58 msec
  3 203.0.113.129 82 msec *  78 msec
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.3 47 msec 38 msec 48 msec
  2 203.0.113.145 63 msec 63 msec 55 msec
  3 203.0.113.137 79 msec 98 msec 90 msec
  4 203.0.113.129 111 msec *  113 msec

CPE01#ping 198.51.100.1 rep 1000000 tim 1
Type escape sequence to abort.
Sending 1000000, 100-byte ICMP Echos to 198.51.100.1, timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!
 <snip>
 CPE01#ping 198.51.100.1 rep 1000000 tim 1
 Type escape sequence to abort.
 Sending 1000000, 100-byte ICMP Echos to 198.51.100.1, timeout is 1 seconds:
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!
上り : CPE01

CE01 のわたりを経由するようになりました。

Remove / Insert 時の断時間は OSPF / HSRP でそれぞれ 1 秒でした。

断時間が計測できないケースもありました。

  • 左の例では OSPF 切り戻りが断なし

動作確認 - ホスト別コマンドリスト

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

脚注