Shadow Route Reflector

前回CCIE SP Practice LabにあるTrouble Ticket 6: BGP PICの解説をブログに書きました。問題を解く過程で気になった”Shadow Route Reflector”についてブログに書きます。

1. Shadow Route Reflectorて何?

1.1. CCOのどこに書いてある?

www.cisco.com

1.2. cisco-pressのどこに書いてある?

前回のブログを参考にしてください。
chimay-wh.hatenablog.com 3.2.3 Shadow Route Reflector

1.3. Diverse pathとは?

Shadow Route Reflector(以降、ShadowRRと省略します。)を理解するためには、先ずDiverse pathが何かを知ると良いと思います。
Topologyを見れば分かると思いますが、PE12とPE16ではCE43's loopback0への最短経路が異なります。AS100は、CE43's loopback0のprefixをPE11とPE15から学習することができます。これはdiverse pathsがあると言えます。CE43's loopback0のprefix pathにダイバーシティ(多様性)があると解釈すれば良いです。
f:id:chimay_wh:20220131095820p:plain
このシナリオでは、LOCAL_PREF、MED、weightはdefaultのままです。つまり、Best Path Selection Algorithmの”the lowest IGP metric to the BGP next hop”による経路がbest pathとみなされます。
f:id:chimay_wh:20220131100035p:plain
RR17は2つのPEから学習する経路でbest pathを選択してRR clientsにAdvertiseします。
PE12はPE11経由でAS43に到達する経路とPE15経由の2つを知っています。10.0.0.43/32 のNext Hop に10.0.0.11と10.0.0.15があることから分かります。

PE12#show bgp vpnv4 unicast all 
BGP table version is 1917, local router ID is 10.0.0.12
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
Route Distinguisher: 1:1 (default for vrf cust1)
 *>i  10.0.0.41/32     10.0.0.11                0    100      0 4142 i
 *>   10.0.0.42/32     10.2.42.42               0             0 4142 i
 *>i  10.0.0.43/32     10.0.0.11                0    100      0 43 i
 *bi                   10.0.0.15                0    100      0 43 i
 *>i  10.0.1.16/32     10.0.0.16                0    100      0 ?
 *>   10.2.42.0/24     0.0.0.0                  0         32768 ?
 *>i  10.3.0.22/32     10.0.0.15                0    100      0 200 i
 *>i  21.21.21.21/32   10.0.0.15                0    100      0 200 ?
Route Distinguisher: 1:21
 *>i  21.21.21.21/32   10.0.0.15                0    100      0 200 ?
Route Distinguisher: 1:43
 *>i  10.0.0.43/32     10.0.0.11                0    100      0 43 i
Route Distinguisher: 1:45
 *>i  10.3.0.22/32     10.0.0.15                0    100      0 200 i
Route Distinguisher: 16:43
 *>i  10.0.1.16/32     10.0.0.16                0    100      0 ?
Route Distinguisher: 43:43
 *>i  10.0.0.43/32     10.0.0.15                0    100      0 43 i
PE12#

ちなみにBGP PICのTSHOOTは解決済みなので、”b backup-path”の表示もありますし、cefを見ればPrimary pathとBackup path(repair)も分かります。

PE12#show ip cef vrf cust1 10.0.0.43/32 detail 
10.0.0.43/32, epoch 0, flags [rib defined all labels]
  recursive via 10.0.0.11 label 24006
    nexthop 10.1.5.13 GigabitEthernet5 label 24003-(local:23)
    nexthop 10.1.9.14 GigabitEthernet3 label 19-(local:23)
  recursive via 10.0.0.15 label 35, repair
    nexthop 10.1.5.13 GigabitEthernet5 label 24000-(local:16)
PE12#

ただし、IOS-XEでは選ばれるのは1つだけです。

PE12#show ip route vrf cust1 10.0.0.43         

Routing Table: cust1
Routing entry for 10.0.0.43/32
  Known via "bgp 100", distance 200, metric 0
  Tag 43, type internal
  Last update from 10.0.0.11 00:31:16 ago
  Routing Descriptor Blocks:
  * 10.0.0.11 (default), from 10.0.0.17, 00:31:16 ago, recursive-via-host
      Route metric is 0, traffic share count is 1
      AS Hops 1
      Route tag 43
      MPLS label: 24006
      MPLS Flags: MPLS Required
PE12#

PE16も確認します。問題では未定義なのですが、確認するために以下のようにPE16へvrfを追加定義します。
f:id:chimay_wh:20220131102918p:plain

PE16 vrf追加後のconfig

vrf cust43
 rd 16:43
 address-family ipv4 unicast
  import route-target
   1:43
   1:100
  !
  export route-target
   1:43
   1:100
  !
 !
!
interface Loopback1
 description TEST:ShadowRR Client Effect
 vrf cust43
 ipv4 address 10.0.1.16 255.255.255.255
!
router bgp 100
 bgp router-id 10.0.0.16
 address-family ipv4 unicast
  network 172.16.2.0/24
  network 172.16.3.0/24
  network 172.16.4.0/24
  allocate-label all
 !
 address-family vpnv4 unicast
 !
 address-family vpnv6 unicast
 !
 neighbor 10.0.0.17
  remote-as 100
  update-source Loopback0
  address-family ipv4 labeled-unicast
   next-hop-self
  !
  address-family vpnv4 unicast
  !
 !
 neighbor 172.16.3.22
  remote-as 200
  address-family ipv4 labeled-unicast
   route-policy pass-all in
   route-policy pass-all out
  !
 !
 neighbor 172.16.4.31
  remote-as 300
  address-family ipv4 labeled-unicast
   route-policy pass-all in
   route-policy pass-all out
  !
 !
 vrf cust43
  rd 16:43
  address-family ipv4 unicast
   redistribute connected
  !
 !
!


PE16もPE11経由でAS43に到達する経路とPE15経由の2つを知っています。
Route Distinguisher: 16:43において、10.0.0.43/32 のNext Hop に10.0.0.11と10.0.0.15があることから分かります。

RP/0/RP0/CPU0:PE16#show bgp vpnv4 unicast   

BGP router identifier 10.0.0.16, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0x0   RD version: 0
BGP main routing table version 51
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:1
*>i10.0.0.41/32       10.0.0.11                0    100      0 4142 i
*>i10.0.0.42/32       10.0.0.12                0    100      0 4142 i
*>i10.2.42.0/24       10.0.0.12                0    100      0 ?
Route Distinguisher: 1:21
*>i21.21.21.21/32     10.0.0.15                0    100      0 200 ?
Route Distinguisher: 1:43
*>i10.0.0.43/32       10.0.0.11                0    100      0 43 i
Route Distinguisher: 16:43 (default for vrf cust43)
*>i10.0.0.41/32       10.0.0.11                0    100      0 4142 i
*>i10.0.0.42/32       10.0.0.12                0    100      0 4142 i
* i10.0.0.43/32       10.0.0.11                0    100      0 43 i
*>i                   10.0.0.15                0    100      0 43 i
*> 10.0.1.16/32       0.0.0.0                  0         32768 ?
*>i10.2.42.0/24       10.0.0.12                0    100      0 ?
*>i21.21.21.21/32     10.0.0.15                0    100      0 200 ?
Route Distinguisher: 43:43
*>i10.0.0.43/32       10.0.0.15                0    100      0 43 i

Processed 12 prefixes, 13 paths
RP/0/RP0/CPU0:PE16#

PE12と異なりPICの定義をしていないので、Primary pathしかありません。

RP/0/RP0/CPU0:PE16#show cef vrf cust43 10.0.0.43/32

10.0.0.43/32, version 27, internal 0x5000001 0x30 (ptr 0xd7b1188) [1], 0x0 (0xe24a9b0), 0xa08 (0xe84e570)
 Updated Jan 30 04:02:06.018
 Prefix Len 32, traffic index 0, precedence n/a, priority 3
   via 10.0.0.15/32, 5 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0xd911210 0x0]
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 10.0.0.15/32 via 24002/0/21
     next hop 10.1.7.15/32 Gi0/0/0/2    labels imposed {ImplNull 35}
RP/0/RP0/CPU0:PE16#

当然ルーティングテーブルにも1つだけが選ばれています。

RP/0/RP0/CPU0:PE16#show route vrf cust43 10.0.0.43

Routing entry for 10.0.0.43/32
  Known via "bgp 100", distance 200, metric 0
  Tag 43, type internal
  Installed Jan 30 04:02:06.000 for 00:10:30
  Routing Descriptor Blocks
    10.0.0.15, from 10.0.0.17
      Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
      Route metric is 0
  No advertising protos. 
RP/0/RP0/CPU0:PE16#

2つのPEを比較してpathの多様性(Diversity)とは何か、Diverse pathの意味も分かったと思います。

1.4. Diverse-Path route reflector

Diverse-Path route reflector=ShadowRR です。RR17はDiverse pathsを学習していますが、best pathのみしかAdvertiseできません。ShadowRRがあることによって、2番目のbest pathをRR clientsにAdvertiseできます。
ShadowRRは、通常のRRとは物理的に別のルータにする必要があります。
f:id:chimay_wh:20220131104415p:plain

IOS-XE ShadowRR オンラインヘルプ

PE12(config)#router bgp 100
PE12(config-router)#address-family vpnv4 
PE12(config-router-af)#?
Router Address Family configuration commands:
  bgp                      BGP specific commands

PE12(config-router-af)#bgp ?
  additional-paths         Additional paths in the BGP table

PE12(config-router-af)#bgp additional-paths ?
  install  Additional paths to install into RIB
  select   Selection criteria to pick the paths

PE12(config-router-af)#bgp additional-paths select ?
  backup         Select backup path
  best-external  Select best-external path

PE12(config-router-af)#bgp additional-paths select backup 
PE12(config-router-af)#
PE12(config-router-af)#neighbor 10.0.0.16 ?
  route-reflector-client       Configure a neighbor as Route Reflector client

PE12(config-router-af)#
PE12(config-router-af)#neighbor 10.0.0.16 ?
  advertise                    Advertise to this neighbor

PE12(config-router-af)#neighbor 10.0.0.16 advertise ?
  best-external  Advertise best-external (at RRs best-internal) path
  diverse-path   Advertise diverse path

PE12(config-router-af)#neighbor 10.0.0.16 advertise diverse-path ?
  backup  Diverse path can be backup path
  mpath   Diverse path can be multipath

PE12(config-router-af)#neighbor 10.0.0.16 advertise diverse-path backup 
PE12(config-router-af)#

ShadowRR clientであるPE16の定義をすると

RP/0/RP0/CPU0:PE16(config)#router bgp 100
RP/0/RP0/CPU0:PE16(config-bgp)#neighbor 10.0.0.12
RP/0/RP0/CPU0:PE16(config-bgp-nbr)#remote-as 100
RP/0/RP0/CPU0:PE16(config-bgp-nbr)#update-source lo0   
RP/0/RP0/CPU0:PE16(config-bgp-nbr)#address-family vpnv4 unicast
RP/0/RP0/CPU0:PE16(config-bgp-nbr-af)#
RP/0/RP0/CPU0:PE16(config-bgp-nbr-af)#commit 

ShadowRR(PE12)と RR client(PE16)がEstablishedになります。

RP/0/RP0/CPU0:PE16(config-bgp-af)#do sh bgp nei | i BGP

BGP neighbor is 10.0.0.12
  BGP state = Established, up for 00:21:41
  BGP neighbor version 50
BGP neighbor is 10.0.0.17
  BGP state = Established, up for 08:32:28
  BGP neighbor version 24
  BGP neighbor version 50
BGP neighbor is 172.16.3.22
  BGP state = Established, up for 08:32:53
  BGP neighbor version 24
BGP neighbor is 172.16.4.31
  BGP state = Established, up for 08:33:11
  BGP neighbor version 24
RP/0/RP0/CPU0:PE16(config-bgp-af)#

2. 何に使えるの?

第一にPrimary pathとBackup pathがAdvertiseされている状態になるので、Primary pathがダウンしても次のbest pathを再計算してAdvertiseする手間が省けるためconvergenceが速くなります。
第二にPrefix Independent Convergence (BGP-PIC)に使えます。PICは、Primary pathとBackup pathがAdvertiseされている状態で初めて使える機能です。

ところで、このPICはIOS-XRとIOS-XEでは若干定義の仕方が異なります。最初は定義の仕方が全然分かりませんでした。IOS-XEに関しては前回のブログで説明していますので割愛します。今回はIOS-XRで定義します。route-policyの定義が必要になります。

IOS-XR PIC用route-policyオンラインヘルプ

RP/0/RP0/CPU0:PE16(config)#route-policy ? 
  pass-all  Route Policy name
  WORD      Route Policy name
RP/0/RP0/CPU0:PE16(config)#route-policy PIC 
RP/0/RP0/CPU0:PE16(config-rpl)#set ?
  path-selection           BGP path selection

RP/0/RP0/CPU0:PE16(config-rpl)#set path-selection ?
  all         BGP all paths
  backup      BGP backup path
  best-path   BGP best path
  group-best  BGP group best path
  multipath   BGP multipath
RP/0/RP0/CPU0:PE16(config-rpl)#set path-selection backup ?
  <1>        decimal number 1
  parameter  Identifier specified in the format: '$' followed by alphanumeric characters
RP/0/RP0/CPU0:PE16(config-rpl)#set path-selection backup 1 ?
  advertise  Advertise the path
  install    Install the path
RP/0/RP0/CPU0:PE16(config-rpl)#set path-selection backup 1 install ?
  advertise          Advertise the path
  multipath-protect  Mutlipath Protect
  <cr>               
RP/0/RP0/CPU0:PE16(config-rpl)#set path-selection backup 1 install 
RP/0/RP0/CPU0:PE16(config-rpl)#end-policy 
RP/0/RP0/CPU0:PE16(config)#

ちなみに最後の”install”と”advertise”の違いについて説明されているCCOがありますので参考になれば幸いです。
www.cisco.com route-policy PICをAS100の網内(vpnv4)で定義します。
IOS-XR PICオンラインヘルプ

RP/0/RP0/CPU0:PE16(config)#router bgp 100
RP/0/RP0/CPU0:PE16(config-bgp)#address-family vpnv4 unicast 
RP/0/RP0/CPU0:PE16(config-bgp-af)#?
  additional-paths       Additional paths configuration

RP/0/RP0/CPU0:PE16(config-bgp-af)#additional-paths ?
  receive    Additional paths Receive capability
  selection  Additional paths selection
  send       Additional paths Send capability
RP/0/RP0/CPU0:PE16(config-bgp-af)#additional-paths selection ?
  route-policy  Route-policy for additional paths selection
RP/0/RP0/CPU0:PE16(config-bgp-af)#additional-paths selection route-policy ?
  PIC       Name of the policy
  pass-all  Name of the policy
  WORD      Name of the policy
RP/0/RP0/CPU0:PE16(config-bgp-af)#additional-paths selection route-policy PIC ?
  (     Specify parameter values for the policy
  <cr>  
RP/0/RP0/CPU0:PE16(config-bgp-af)#additional-paths selection route-policy PIC 
RP/0/RP0/CPU0:PE16(config-bgp-af)#

3. config

ShadowRRとするPE12のconfig

router bgp 100
 bgp router-id 10.0.0.12
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 neighbor 10.0.0.16 remote-as 100
 neighbor 10.0.0.16 update-source Loopback0
 neighbor 10.0.0.17 remote-as 100
 neighbor 10.0.0.17 update-source Loopback0
 !
 address-family ipv4
 exit-address-family
 !
 address-family vpnv4
  bgp additional-paths select backup
  bgp additional-paths install
  neighbor 10.0.0.16 activate
  neighbor 10.0.0.16 send-community extended
  neighbor 10.0.0.16 route-reflector-client
  neighbor 10.0.0.16 advertise diverse-path backup
  neighbor 10.0.0.17 activate
  neighbor 10.0.0.17 send-community extended
  neighbor 10.0.0.17 route-reflector-client
  neighbor 10.0.0.17 advertise diverse-path backup
 exit-address-family
 !
 address-family ipv4 vrf cust1
  redistribute connected
  neighbor 10.2.42.42 remote-as 4142
  neighbor 10.2.42.42 fall-over bfd
  neighbor 10.2.42.42 activate
 exit-address-family

ShadowRRのRR clientであるPE16のconfig

router bgp 100
 bgp router-id 10.0.0.16
 address-family ipv4 unicast
  network 172.16.2.0/24
  network 172.16.3.0/24
  network 172.16.4.0/24
  allocate-label all
 !
 address-family vpnv4 unicast
 !
 address-family vpnv6 unicast
 !
 neighbor 10.0.0.12
  remote-as 100
  update-source Loopback0
  address-family vpnv4 unicast
  !
 !
 neighbor 10.0.0.17
  remote-as 100
  update-source Loopback0
  address-family ipv4 labeled-unicast
   next-hop-self
  !
  address-family vpnv4 unicast
  !
 !
 neighbor 172.16.3.22
  remote-as 200
  address-family ipv4 labeled-unicast
   route-policy pass-all in
   route-policy pass-all out
  !
 !
 neighbor 172.16.4.31
  remote-as 300
  address-family ipv4 labeled-unicast
   route-policy pass-all in
   route-policy pass-all out
  !
 !
 vrf cust43
  rd 16:43
  address-family ipv4 unicast
   redistribute connected
  !
 !
!

4. 検証

4.1 事前&事後比較検証

先ずはIOS-XRに対してShadowRR client及びPICの定義をする前に実行したコマンドと比較します。

RP/0/RP0/CPU0:PE16#show bgp vpnv4 unicast

BGP router identifier 10.0.0.16, local AS number 100
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0x0   RD version: 0
BGP main routing table version 55
BGP NSR Initial initsync version 4 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

Status codes: s suppressed, d damped, h history, * valid, > best
              i - internal, r RIB-failure, S stale, N Nexthop-discard
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop            Metric LocPrf Weight Path
Route Distinguisher: 1:1
* i10.0.0.41/32       10.0.0.11                0    100      0 4142 i
*>i                   10.0.0.11                0    100      0 4142 i
*>i10.0.0.42/32       10.0.0.12                0    100      0 4142 i
* i                   10.0.0.12                0    100      0 4142 i
*>i10.2.42.0/24       10.0.0.12                0    100      0 ?
* i                   10.0.0.12                0    100      0 ?
Route Distinguisher: 1:21
* i21.21.21.21/32     10.0.0.15                0    100      0 200 ?
*>i                   10.0.0.15                0    100      0 200 ?
Route Distinguisher: 1:43
* i10.0.0.43/32       10.0.0.11                0    100      0 43 i
*>i                   10.0.0.11                0    100      0 43 i
Route Distinguisher: 16:43 (default for vrf cust43)
*>i10.0.0.41/32       10.0.0.11                0    100      0 4142 i
*>i10.0.0.42/32       10.0.0.12                0    100      0 4142 i
* i10.0.0.43/32       10.0.0.11                0    100      0 43 i
*>i                   10.0.0.15                0    100      0 43 i
*> 10.0.1.16/32       0.0.0.0                  0         32768 ?
*>i10.2.42.0/24       10.0.0.12                0    100      0 ?
*>i21.21.21.21/32     10.0.0.15                0    100      0 200 ?
Route Distinguisher: 43:43
* i10.0.0.43/32       10.0.0.15                0    100      0 43 i
*>i                   10.0.0.15                0    100      0 43 i

Processed 12 prefixes, 19 paths
RP/0/RP0/CPU0:PE16#

Processed 12 prefixes, 13 pathsだったのが、Processed 12 prefixes, 19 pathsになっています。
f:id:chimay_wh:20220131111856p:plain

RP/0/RP0/CPU0:PE16#show cef vrf cust43 10.0.0.43/32

10.0.0.43/32, version 45, internal 0x5000001 0x30 (ptr 0xdda26a8) [1], 0x0 (0xe4ecc80), 0xa08 (0xf5d92d8)
 Updated Jan 30 13:42:11.255
 Prefix Len 32, traffic index 0, precedence n/a, priority 3
   via 10.0.0.11/32, 4 dependencies, recursive, backup [flags 0x6100]
    path-idx 0 NHID 0x0 [0xdeed060 0x0]
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 10.0.0.11/32 via 24003/0/21
     next hop 10.1.8.14/32 Gi0/0/0/0    labels imposed {19 24007}
     next hop 10.1.4.13/32 Gi0/0/0/1    labels imposed {24003 24007}
   via 10.0.0.15/32, 7 dependencies, recursive [flags 0x6000]
    path-idx 1 NHID 0x0 [0xdeed570 0x0], Internal 0xf7650b0
    recursion-via-/32
    next hop VRF - 'default', table - 0xe0000000
    next hop 10.0.0.15/32 via 24000/0/21
     next hop 10.1.7.15/32 Gi0/0/0/2    labels imposed {ImplNull 35}
RP/0/RP0/CPU0:PE16#

backupが増えて表示されます。
f:id:chimay_wh:20220131113019p:plain

RP/0/RP0/CPU0:PE16#show route vrf cust43 10.0.0.43

Routing entry for 10.0.0.43/32
  Known via "bgp 100", distance 200, metric 0
  Tag 43
  Number of pic paths 1 , type internal
  Installed Jan 30 13:42:11.248 for 00:06:25
  Routing Descriptor Blocks
    10.0.0.11, from 10.0.0.17, BGP backup path
      Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
      Route metric is 0
    10.0.0.15, from 10.0.0.17
      Nexthop in Vrf: "default", Table: "default", IPv4 Unicast, Table Id: 0xe0000000
      Route metric is 0
  No advertising protos. 
RP/0/RP0/CPU0:PE16#

ルーティングテーブルにPIC pathが追加されているのが分かります。
なお、両方とも”from 10.0.0.17”という出力結果から、RR17だけがAdvertiseしているように出力されます。ShadowRRは、RR17を影から支えているといった感じになります。名前の通りの活躍になります。
f:id:chimay_wh:20220131113808p:plain

RP/0/RP0/CPU0:PE16#show route vrf cust43

Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
       U - per-user static route, o - ODR, L - local, G  - DAGR, l - LISP
       A - access/subscriber, a - Application route
       M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path

Gateway of last resort is not set

B    10.0.0.41/32 [200/0] via 10.0.0.11 (nexthop in vrf default), 09:08:28
B    10.0.0.42/32 [200/0] via 10.0.0.12 (nexthop in vrf default), 00:58:43
B    10.0.0.43/32 [200/0] via 10.0.0.11 (nexthop in vrf default), 00:07:02 (!)
                  [200/0] via 10.0.0.15 (nexthop in vrf default), 00:07:02
L    10.0.1.16/32 is directly connected, 09:12:00, Loopback1
B    10.2.42.0/24 [200/0] via 10.0.0.12 (nexthop in vrf default), 00:58:43
B    21.21.21.21/32 [200/0] via 10.0.0.15 (nexthop in vrf default), 09:08:28
RP/0/RP0/CPU0:PE16#

(!) - FRR Backup path と表示されます。これはIOS-XEと違ってとても分かりやすいです。
折角なので動作検証をしてみます。

4.2 PIC動作検証(IOS-XR)

pingをPE16から打ち続けて、PE15-CE43のlinkを切断するとどうなるのかを検証しました。パケロス0%でバックアップ経路に切り替わることを期待します。

RP/0/RP0/CPU0:PE16#ping 10.0.0.43 vrf cust43 sou lo1 int 25 rep 10000

Type escape sequence to abort.
Sending 10000, 100-byte ICMP Echos to 10.0.0.43, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.........
............................................................!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

めちゃくちゃ遅い!!BFDを定義しないと折角のPICが台無しになります。 BFDの定義については前回のブログをご確認ください。 https://chimay-wh.hatenablog.com/entry/2022/01/17/174130 4.3 BFD有効化

CE43-PE15でBFDを有効にしました。

PE15#show bfd neighbors details 

IPv4 Sessions
NeighAddr                              LD/RD         RH/RS     State     Int
10.3.43.43                           4097/2          Up        Up        Gi4
Session state is UP and using echo function with 50 ms interval.
Session Host: Software
OurAddr: 10.3.43.15     
Handle: 1
Local Diag: 0, Demand mode: 0, Poll bit: 0
MinTxInt: 1000000, MinRxInt: 1000000, Multiplier: 3
Received MinRxInt: 1000000, Received Multiplier: 3
Holddown (hits): 0(0), Hello (hits): 1000(32)
Rx Count: 34, Rx Interval (ms) min/max/avg: 3/987/848 last: 487 ms ago
Tx Count: 34, Tx Interval (ms) min/max/avg: 3/997/858 last: 150 ms ago
Elapsed time watermarks: 0 0 (last: 0)
Registered protocols: BGP CEF 
Uptime: 00:00:28
Last packet: Version: 1                  - Diagnostic: 0
             State bit: Up               - Demand bit: 0
             Poll bit: 0                 - Final bit: 0
             C bit: 0                                   
             Multiplier: 3               - Length: 24
             My Discr.: 2                - Your Discr.: 4097
             Min tx interval: 1000000    - Min rx interval: 1000000
             Min Echo interval: 50000   
PE15#

これでPICの真価が発揮されます!

RP/0/RP0/CPU0:PE16#ping 10.0.0.43 vrf cust43 sou lo1 int 25 rep 10000

Type escape sequence to abort.
Sending 10000, 100-byte ICMP Echos to 10.0.0.43, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<snip>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 99 percent (9999/10000), round-trip min/avg/max = 2/5/92 ms
RP/0/RP0/CPU0:PE16#

1パケットロスで済みました。時間にして25msecダウンという結果でした。

最後までお読みいただきありがとうございました!