メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. BGP記事一覧/

BGP PIC(Prefix Independent Convergence)

目次

BGP PICとは

BGPの経路が数十万本あるルータで障害が起きると、BGPは影響を受けた経路を1本ずつベストパス選択にかけ直し、その結果を1本ずつルーティングテーブルと転送テーブル(FIB)へ書き込みます。復旧までの時間は経路の本数に比例し、大きなテーブルでは数十秒から数分になります。

PIC(Prefix Independent Convergence)は、この時間を経路の本数に依らなくする転送プレーンの仕組みです。BGPの再計算を待たず、FIBが持っている情報だけで先に転送先を切り替えます。仕組みはIETFのドラフト draft-ietf-rtgwg-bgp-pic(Informational)に整理されています。

In a network comprising thousands of BGP peers exchanging millions of routes, it is desirable to restore traffic after failure in a time period that does not depend on the number of BGP prefixes.

PICはBGPのプロトコルを変えません。ピアとの間でやりとりされるメッセージも、ベストパス選択の結果も同じです。変わるのは、ルータの中でFIBがどう組まれ、障害のときにどう書き換わるかです。

階層型FIB:PICの土台

BGPの経路は、ネクストホップ(BGPのNEXT_HOP)を経由して届く再帰的な経路です。転送するには「宛先 → BGPネクストホップ → そのネクストホップへのIGP経路 → 出力インタフェース」と段階的に引く必要があります。

PICを支える階層型FIBは、この段階をそのままFIBの構造にしたものです。数万のBGP経路が同じネクストホップを指しているなら、そのネクストホップのエントリは1つだけ持ち、BGP経路はそれを参照します。

階層エントリ障害で変わるもの
BGP経路宛先プレフィックス → ネクストホップへの参照経路の本数だけ変えない
BGPネクストホップネクストホップ → IGP経路への参照(プライマリ / バックアップ)ネクストホップの数だけ(数十〜数百)ここを書き換える
IGP経路 / 隣接出力インタフェースと次のルータリンクの数だけIGPの収束で変わる

障害で書き換えるのは共有されているネクストホップのエントリだけなので、その先を参照している経路が何万本あっても、書き換えは1回で済みます。これが「経路数に依らない」の正体です。

A forwarding plane with shared, hierarchical forwarding chains with maximal object reuse can reroute a large number of destinations by modifying only a small set of shared objects.

PIC CoreとPIC Edge

障害の場所によって、切り替えに使う情報が違います。

種類障害BGPネクストホップFIBがすること
PIC CoreAS内のリンクやルータ(コア)の障害。BGPネクストホップ自体には別の経路で届く変わらないIGPが再収束すると、ネクストホップのエントリが指すIGP経路が差し替わる。BGP経路は触らない
PIC EdgeBGPネクストホップ(境界ルータ)そのもの、または境界ルータの先のリンクの障害届かなくなる事前にFIBへ入れておいたバックアップパス(別のネクストホップ)へ切り替える

PIC Coreは階層型FIBだけで成り立ち、追加の設定はありません。PIC Edgeはバックアップパスを事前にFIBへ入れておく設定が要ります。バックアップパスは、ベストパス選択で2番目だった経路(同じプレフィックスを別のネクストホップから受けた経路)です。

PIC Edgeが切り替えるきっかけは2つあります。

きっかけ検知
自分のリンクの障害境界ルータR1のeBGPリンクが落ちるインタフェースのダウン(即時)
ネクストホップの消失内部ルータR3から見て、境界ルータR1が停止するIGPから10.0.0.1/32が消える(次ホップ追跡。IGPの検知時間がかかる)

どちらの場合も、BGPはそのあとで通常どおり経路を取り消し、ベストパスを選び直します。PICはその間の転送を先に直しているだけで、最終的な経路の状態はBGPの収束が決めます。

IOS XRでの設定と確認

項目内容
route-policy <名前> / set path-selection backup 1 installバックアップパスを1本、FIBへ入れる(install)。advertiseを付けるとADD-PATHでピアへも広告する(ADD-PATHで解説)
additional-paths selection route-policy <名前>address-familyごとに、上のポリシーを適用する
show bgp <プレフィックス>バックアップに選ばれた経路にbackupが付く
show route <プレフィックス>BGP backup pathとして2つ目のネクストホップが並ぶ
show cef <プレフィックス>バックアップのviabackupが付く。FIBに入っていることの根拠

PIC Coreの側は設定がありません。show cef <プレフィックス>via <ネクストホップ>/32, … recursiveと表示されるのが階層型FIBの参照で、ネクストホップのshow cef 10.0.0.1/32を引くとIGP経路と出力インタフェースが出ます。

実機での検証

XRd 26.1.1のルータ5台で確認します。XRdはContainer版のIOS XR(XRd Control Plane)で、転送は本来のハードウェアではなくソフトウェアです。この検証は「XRdのFIBがPICを実装しているか」の確認も兼ねます。

BGP PICの検証トポロジ
  • AS 65001はR1・R2が境界、R3が内部(iBGPフルメッシュ、next-hop-self、OSPF area 0)。R1-R2は直結
  • AS 65002のR4はR1・R2の両方にeBGPで接続し、2,002本の経路を広告する(Lo1 192.168.4.0/24とLo2 100.63.255.0/24に加え、Null0宛てのスタティック2,000本をredistribute static)。経路数に依らないことを見せるための埋め草で、192.168.4.0/24はテーブルの最後、100.63.255.0/24は最初にある
  • AS 65003のR5は通信の発信元。R5 → R4の通信はR3 → R1 → R4を通る(R3はR1経由とR2経由の同点をRouter IDで決める)。戻り(R4 → R5)はR2経由に固定している(R4の入方向でR2からの経路にLOCAL_PREF 200)。障害を入れるR1-R4リンクを戻りが通らないようにして、往路の切り替えだけを測るため
  • 出方向・入方向ポリシーはネイバーごとに別名(中身はpass)、全ネイバーにsoft-reconfiguration inbound always

観測点は2か所です。

観測点ベストバックアップ確認する種類
R1直結eBGP(R4、10.1.4.4R2からのiBGP(10.0.0.2、R1-R2直結リンク経由)PIC Edge(自分のリンクの障害)
R3R1からのiBGP(10.0.0.1R2からのiBGP(10.0.0.2PIC Edge(ネクストホップの消失)とPIC Core

障害のあいだのロスは、R5から192.168.4.1(テーブルの最後)と100.63.255.1(最初)へ100ミリ秒間隔で流したpingと、R3-R5間のキャプチャーで「最後に応答が返った時刻」と「次に応答が返った時刻」の差から求めます。

検証の全体像

STEP操作確かめること
0初期状態(PICなし)R1は2経路を持つがFIBには1つ。show cefの階層
1R1-R4リンク断(PICなし)R1が2,000本の取り消しを処理し終えるまでのロス(基準)
2復旧
3R1・R3にadditional-paths selectionbackup 1 installbackupの印とFIBのバックアップパス。ピアへの広告は変わらない
4R1-R4リンク断(PICあり)同じ障害でロスが短くなる
5復旧
6R1を停止(PIC Edge、ネクストホップの消失)R3でIGPが10.0.0.1/32を失った瞬間に全経路がR2へ
7R1を起動
8R3-R1リンク断(PIC Core)BGPは変わらず(UPDATEなし)、IGPの収束だけで復旧
9復旧(最終状態)

以降のshowとpcapの時刻はすべてUTCです(ルータのsyslogと揃えています)。

STEP 0:初期状態(PICなし)

R1はR4への経路を2本持っていますが、FIBに入っているのは1本です。 show bgpではR4からのeBGPがbest、R2からのiBGPは候補として並ぶだけで印がありません。

R1 show bgp 192.168.4.0/24(STEP 0)
RP/0/RP0/CPU0:R1#show bgp 192.168.4.0/24
Tue Sep 15 10:52:02.516 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              20032        20032
Last Modified: Sep 15 10:50:35.023 for 00:01:27
Paths: (2 available, best #2)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.0.0.3        10.0.0.2        
  Path #1: Received by speaker 0
  Not advertised to any peer
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal
      Received Path ID 0, Local Path ID 0, version 0
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.0.0.3        10.0.0.2        
  65002, (received & used)
    10.1.4.4 from 10.1.4.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, external, best, group-best
      Received Path ID 0, Local Path ID 1, version 18029
      Origin-AS validity: (disabled)

ルーティングテーブルとFIBにはeBGPの1本だけが入ります。

R1 show route 192.168.4.0/24(STEP 0)
RP/0/RP0/CPU0:R1#show route 192.168.4.0/24
Tue Sep 15 10:52:03.832 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 20, metric 0
  Tag 65002, type external
  Installed Sep 15 10:50:35.697 for 00:01:28
  Routing Descriptor Blocks
    10.1.4.4, from 10.1.4.4, BGP external
      Route metric is 0, Wt is 1
  No advertising protos. 
R1 show cef 192.168.4.0/24(STEP 0)
RP/0/RP0/CPU0:R1#show cef 192.168.4.0/24
Tue Sep 15 10:52:04.970 UTC
192.168.4.0/24, version 42088, internal 0x5000001 0x40 (ptr 0x8851a970) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Sep 15 10:50:35.803 
 local adjacency to GigabitEthernet0/0/0/2

 Prefix Len 24, traffic index 0, precedence n/a, priority 4
  gateway array (0x89726530) reference count 2002, flags 0x2010, source rib (7), 0 backups
                [1 type 3 flags 0x48501 (0x897c9118) ext 0x0 (0x0) (collapsed)]
  LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
  gateway array update type-time 1 Sep 15 10:50:35.600
 LDI Update time Sep 15 10:50:35.601
   via 10.1.4.4/32, 2 dependencies, recursive, bgp-ext [flags 0x6020]
    path-idx 0 NHID 0x0 [0x8851acf0 0x0]
    next hop 10.1.4.4/32 via 10.1.4.4/32

    Load distribution: 0 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/2    10.1.4.4       

R3では階層型FIBの形が見えます。192.168.4.0/24show cefvia 10.0.0.1/32 … recursiveとネクストホップを参照しているだけで、そのネクストホップ10.0.0.1/32show cefを引くと初めてOSPF経路と出力インタフェース(GigabitEthernet0/0/0/0、R1向け)が出ます。2,002本の経路はすべてこの1つのエントリを参照しています。

R3 show cef 192.168.4.0/24(STEP 0)
RP/0/RP0/CPU0:R3#show cef 192.168.4.0/24
Tue Sep 15 10:54:09.733 UTC
192.168.4.0/24, version 42072, internal 0x5000001 0x40 (ptr 0x8852ac10) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Sep 15 10:50:44.004 
 local adjacency to GigabitEthernet0/0/0/0

 Prefix Len 24, traffic index 0, precedence n/a, priority 4
  gateway array (0x89618ae0) reference count 2003, flags 0x2010, source rib (7), 0 backups
                [1 type 3 flags 0x48501 (0x896bbd50) ext 0x0 (0x0) (collapsed)]
  LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
  gateway array update type-time 1 Sep 15 09:46:25.395
 LDI Update time Sep 15 09:46:25.395
   via 10.0.0.1/32, 2 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0x8852b070 0x0]
    next hop 10.0.0.1/32 via 10.0.0.1/32

    Load distribution: 0 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/0    10.1.3.1       
R3 show cef 10.0.0.1/32(STEP 0)
RP/0/RP0/CPU0:R3#show cef 10.0.0.1/32
Tue Sep 15 10:54:10.220 UTC
10.0.0.1/32, version 12, internal 0x1000001 0x10 (ptr 0x8852b070) [2], 0x400 (0x8977fbd8), 0x0 (0x0)
 Updated Sep 15 09:45:20.971 
 local adjacency to GigabitEthernet0/0/0/0

 Prefix Len 32, traffic index 0, precedence n/a, priority 1
  gateway array (0x89618df8) reference count 1, flags 0x0, source rib (7), 0 backups
                [2 type 3 flags 0x8401 (0x896bbeb0) ext 0x0 (0x0)]
  LW-LDI[type=3, refc=1, ptr=0x8977fbd8, sh-ldi=0x896bbeb0]
  gateway array update type-time 1 Sep 15 09:45:20.971
 LDI Update time Sep 15 09:45:20.971
 LW-LDI-TS Sep 15 09:45:20.971
   via 10.1.3.1/32, GigabitEthernet0/0/0/0, 8 dependencies, weight 0, class 0 [flags 0x0]
    path-idx 0 NHID 0x3 [0x8a781460 0x0]
    next hop 10.1.3.1/32
    local adjacency

    Load distribution: 0 (refcount 2)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/0    10.1.3.1       

R1がR4から受けている経路は2,002本です。R5からのtracerouteはR3 → R1 → R4を通ります。

R1 show bgp summary(STEP 0)
RP/0/RP0/CPU0:R1#show bgp summary
Tue Sep 15 10:51:59.520 UTC
BGP router identifier 10.0.0.1, local AS number 65001
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 20032
BGP main routing table version 20032
BGP NSR Initial initsync version 5 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

BGP is operating in STANDALONE mode.


Process    RcvTblVer     bRIB/RIB     LabelVer    ImportVer    SendTblVer   StandbyVer
Speaker        20032         20032         20032         20032         20032             0

Neighbor        Spk    AS MsgRcvd MsgSent       TblVer  InQ OutQ  Up/Down  St/PfxRcd
10.0.0.2          0 65001      76     114        20032    0    0 01:06:46       2003
10.0.0.3          0 65001      71     114        20032    0    0 01:06:34          2
10.1.4.4          0 65002      67      77        20032    0    0 00:03:10       2002
R5 traceroute 192.168.4.1(STEP 0)
RP/0/RP0/CPU0:R5#traceroute 192.168.4.1 source 192.168.5.1 probe 3 timeout 1 maxttl 6
Tue Sep 15 10:56:29.726 UTC

Type escape sequence to abort.
Tracing the route to 192.168.4.1

 1  10.3.5.3 6 msec  5 msec  5 msec 
 2  10.1.3.1 10 msec  8 msec  8 msec 
 3  10.1.4.4 12 msec  *  15 msec 

STEP 1:R1-R4リンク断(PICなし)

PICなしでは、R1がBGPで経路を取り消してR3が切り替えるまで転送が止まります。 R1のGi0/0/0/2をshutdownすると(R4側も落としています)、R1はeBGPセッションのダウンを検知します。

R1 STEP 1 で commit した設定
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Tue Sep 15 10:57:10.630 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface GigabitEthernet0/0/0/2
 shutdown
!
end
R1 show logging(STEP 1)
RP/0/RP0/CPU0:R1#show logging start Sep 15 10:52:36
Tue Sep 15 11:00:53.087 UTC
Time Zone UTC, DST disabled
Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)
    Console logging: Disabled
    Monitor logging: level debugging, 0 messages logged
    Trap logging: level informational, 0 messages logged
    Buffer logging: level debugging, 294 messages logged

Log Buffer (2097152 bytes):

RP/0/RP0/CPU0:Sep 15 10:52:36.327 UTC: logger[68357]: %OS-SYSLOG-6-LOG_INFO : informational STEP1-BEGIN 
RP/0/RP0/CPU0:Sep 15 10:52:36.715 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15051]: Received disconnect from 10.100.3.1 port 64078:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 10:52:36.715 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15051]: Disconnected from user cisco 10.100.3.1 port 64078 
RP/0/RP0/CPU0:Sep 15 10:57:05.629 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15455]: Accepted authentication/pam for cisco from 10.100.3.1 port 64331 ssh2 
RP/0/RP0/CPU0:Sep 15 10:57:09.698 UTC: ifmgr[155]: %PKT_INFRA-LINK-5-CHANGED : Interface GigabitEthernet0/0/0/2, changed state to Administratively Down 
RP/0/RP0/CPU0:Sep 15 10:57:09.700 UTC: bgp[1084]: %ROUTING-BGP-5-ADJCHANGE : neighbor 10.1.4.4 Down - Admin. shutdown (CEASE notification sent - administrative shutdown) (VRF: default) (AS: 65002) 
RP/0/RP0/CPU0:Sep 15 10:57:10.115 UTC: config[68757]: %MGBL-CONFIG-6-DB_COMMIT : Configuration committed by user 'cisco'. Use 'show configuration commit changes 1000000009' to view the changes. 
RP/0/RP0/CPU0:Sep 15 10:57:10.394 UTC: config[68757]: %MGBL-SYS-5-CONFIG_I : Configured from console by cisco on vty0 (10.100.3.1) 
RP/0/RP0/CPU0:Sep 15 10:57:12.214 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15460]: Received disconnect from 10.100.3.1 port 64331:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 10:57:12.214 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15460]: Disconnected from user cisco 10.100.3.1 port 64331 
RP/0/RP0/CPU0:Sep 15 11:00:32.241 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15802]: Accepted authentication/pam for cisco from 10.100.3.1 port 64441 ssh2 
RP/0/RP0/CPU0:Sep 15 11:00:49.893 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15807]: Received disconnect from 10.100.3.1 port 64441:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:00:49.893 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[15807]: Disconnected from user cisco 10.100.3.1 port 64441 
RP/0/RP0/CPU0:Sep 15 11:00:50.697 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[16030]: Accepted authentication/pam for cisco from 10.100.3.1 port 64453 ssh2 

R1はバックアップを持っていないので、R3から届くパケットを捨てます。R1-R2間のキャプチャーには迂回したパケットが1つもありません(icmp.type==8のフィルタで0件)。

STEP 1 の R1-R2 間(R5 からの Echo request)
$ tshark -r bgp-pic-step1-r1r2.pcap -t ud -Y 'icmp.type==8'

R1はリンク断の約0.5秒後(10:57:10.189)にR3へ2,000本の取り消し(WITHDRAW)を送り始め、7つのUPDATEにまとめて15ミリ秒で送り終えます。R3がこれを処理してR2経由に切り替えた10:57:10.804に応答が戻ります。途切れは1.19秒192.168.4.1宛)と1.11秒(100.63.255.1宛)で、100ミリ秒間隔のpingは900発中1発を失いました。

STEP 1 の R1-R3 間(R1 → R3 の UPDATE)
$ tshark -r bgp-pic-step1-r1r3.pcap -t ud -Y 'bgp.type==2'
  294 2026-09-15 10:57:10.189326Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  295 2026-09-15 10:57:10.189742Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  297 2026-09-15 10:57:10.197593Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  298 2026-09-15 10:57:10.197978Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  299 2026-09-15 10:57:10.198319Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message, UPDATE Message
  300 2026-09-15 10:57:10.198540Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  303 2026-09-15 10:57:10.204688Z     10.0.0.1 → 10.0.0.3     BGP 829 UPDATE Message, UPDATE Message
R5 ping 192.168.4.1(STEP 1、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 192.168.4.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 10:56:51.885 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 99 percent (899/900), round-trip min/avg/max = 9/13/93 ms
R5 ping 100.63.255.1(STEP 1、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 100.63.255.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 10:56:56.483 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 100.63.255.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 99 percent (899/900), round-trip min/avg/max = 8/14/85 ms

R3の経路はR2経由の1本になります。

R3 show bgp 192.168.4.0/24(STEP 1)
RP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Tue Sep 15 11:03:27.534 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              22033        22033
Last Modified: Sep 15 10:57:10.023 for 00:06:17
Paths: (1 available, best #1)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 22033

STEP 2:復旧

両端をno shutdownにしてSTEP 0の状態に戻します。

STEP 3:R1・R3にadditional-paths selectionbackup 1 install

バックアップパスがFIBに入ります。設定はルートポリシーとaddress-family配下の1行です。

R1 STEP 3 で commit した設定
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Tue Sep 15 11:13:06.000 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
route-policy PIC
  set path-selection backup 1 install
end-policy
!
router bgp 65001
 address-family ipv4 unicast
  additional-paths selection route-policy PIC
 !
!
end
R3 STEP 3 で commit した設定
RP/0/RP0/CPU0:R3#show configuration commit changes last 1
Tue Sep 15 11:13:13.635 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
route-policy PIC
  set path-selection backup 1 install
end-policy
!
router bgp 65001
 address-family ipv4 unicast
  additional-paths selection route-policy PIC
 !
!
end

R1では、R2からのiBGP経路にbackup(とadd-path)が付きます。ベストパスは変わりません。

R1 show bgp 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R1#show bgp 192.168.4.0/24
Tue Sep 15 11:15:24.103 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              26038        26038
Last Modified: Sep 15 11:13:07.023 for 00:02:17
Paths: (2 available, best #2)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.0.0.3        10.0.0.2        
  Path #1: Received by speaker 0
  Not advertised to any peer
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, backup, add-path
      Received Path ID 0, Local Path ID 4, version 26038
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.0.0.3        10.0.0.2        
  65002, (received & used)
    10.1.4.4 from 10.1.4.4 (10.0.0.4)
      Origin IGP, metric 0, localpref 100, valid, external, best, group-best
      Received Path ID 0, Local Path ID 1, version 24035
      Origin-AS validity: (disabled)

ルーティングテーブルにはNumber of pic paths 1BGP backup path、FIBにはbackup [flags 0x6100]viaが増えます。Load distribution0の1つだけで、転送に使うのは引き続きベストパス1本です。

R1 show route 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R1#show route 192.168.4.0/24
Tue Sep 15 11:15:25.392 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 20, metric 0
  Tag 65002
  Number of pic paths 1 , type internal and external
  Installed Sep 15 11:13:07.487 for 00:02:17
  Routing Descriptor Blocks
    10.0.0.2, from 10.0.0.2, BGP backup path
      Route metric is 0, Wt is 1
    10.1.4.4, from 10.1.4.4, BGP external
      Route metric is 0, Wt is 1
  No advertising protos. 
R1 show cef 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R1#show cef 192.168.4.0/24
Tue Sep 15 11:15:26.445 UTC
192.168.4.0/24, version 56108, internal 0x5000001 0x40 (ptr 0x8851a970) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Sep 15 11:13:07.585 
 local adjacency to GigabitEthernet0/0/0/2

 Prefix Len 24, traffic index 0, precedence n/a, priority 4
  gateway array (0x897252a0) reference count 2002, flags 0x102010, source rib (7), 0 backups
                [1 type 3 flags 0x48501 (0x897c8ae8) ext 0x0 (0x0) (collapsed)]
  LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
  gateway array update type-time 1 Sep 15 11:13:07.294
 LDI Update time Sep 15 11:13:07.391
   via 10.0.0.2/32, 3 dependencies, recursive, backup [flags 0x6100]
    path-idx 0 NHID 0x0 [0x8851b150 0x0]
    next hop 10.0.0.2/32 via 10.0.0.2/32
   via 10.1.4.4/32, 2 dependencies, recursive, bgp-ext [flags 0x6020]
    path-idx 1 NHID 0x0 [0x8851acf0 0x0], Internal 0x8abcb0a0
    next hop 10.1.4.4/32 via 10.1.4.4/32

    Weight distribution:
    slot 0, weight 1, normalized_weight 1, class 0
    Load distribution: 0 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/2    10.1.4.4       

R3も同じで、R2経由のiBGPがバックアップになります。

R3 show bgp 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Tue Sep 15 11:17:31.451 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              26038        26038
Last Modified: Sep 15 11:13:15.023 for 00:04:16
Paths: (2 available, best #1)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  65002, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 24036
  Path #2: Received by speaker 0
  Not advertised to any peer
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, backup, add-path
      Received Path ID 0, Local Path ID 4, version 26038
R3 show route 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R3#show route 192.168.4.0/24
Tue Sep 15 11:17:32.687 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 200, metric 0
  Tag 65002
  Number of pic paths 1 , type internal
  Installed Sep 15 11:13:15.190 for 00:04:17
  Routing Descriptor Blocks
    10.0.0.1, from 10.0.0.1
      Route metric is 0, Wt is 1
    10.0.0.2, from 10.0.0.2, BGP backup path
      Route metric is 0, Wt is 1
  No advertising protos. 
R3 show cef 192.168.4.0/24(STEP 3)
RP/0/RP0/CPU0:R3#show cef 192.168.4.0/24
Tue Sep 15 11:17:33.979 UTC
192.168.4.0/24, version 56086, internal 0x5000001 0x40 (ptr 0x8852ac10) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Sep 15 11:13:15.296 
 local adjacency to GigabitEthernet0/0/0/0

 Prefix Len 24, traffic index 0, precedence n/a, priority 4
  gateway array (0x89619740) reference count 2002, flags 0x102010, source rib (7), 0 backups
                [1 type 3 flags 0x48501 (0x896bc1c8) ext 0x0 (0x0) (collapsed)]
  LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
  gateway array update type-time 1 Sep 15 11:13:14.983
 LDI Update time Sep 15 11:13:15.000
   via 10.0.0.1/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 0 NHID 0x0 [0x8852b070 0x0], Internal 0x8abcb0a0
    next hop 10.0.0.1/32 via 10.0.0.1/32
   via 10.0.0.2/32, 3 dependencies, recursive, backup [flags 0x6100]
    path-idx 1 NHID 0x0 [0x8852af90 0x0]
    next hop 10.0.0.2/32 via 10.0.0.2/32

    Weight distribution:
    slot 0, weight 1, normalized_weight 1, class 0
    Load distribution: 0 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/0    10.1.3.1       

ピアには何も送られません。R1-R3間のキャプチャーはKEEPALIVEだけです。

STEP 3 の R1-R3 間(BGPのみ)
$ tshark -r bgp-pic-step3-r1r3.pcap -t ud -Y 'bgp'
    2 2026-09-15 11:13:05.308445Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
    8 2026-09-15 11:13:25.503555Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   19 2026-09-15 11:14:05.311275Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   25 2026-09-15 11:14:25.503854Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   35 2026-09-15 11:15:05.309177Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   41 2026-09-15 11:15:25.503793Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   51 2026-09-15 11:16:05.309881Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   59 2026-09-15 11:16:25.504323Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   69 2026-09-15 11:17:05.310111Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   75 2026-09-15 11:17:25.504881Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   85 2026-09-15 11:18:05.310320Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   91 2026-09-15 11:18:25.505322Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
  102 2026-09-15 11:19:05.310912Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
  108 2026-09-15 11:19:25.505121Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
  237 2026-09-15 11:20:05.310737Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message

STEP 4:R1-R4リンク断(PICあり)

同じ障害で、今度はロスがありません。 pingは両宛先とも900発すべて応答があり、キャプチャー上の応答の途切れも最大0.17秒(障害と無関係な通常のばらつき)です。

R5 ping 192.168.4.1(STEP 4、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 192.168.4.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 11:20:15.498 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (900/900), round-trip min/avg/max = 9/17/81 ms
R5 ping 100.63.255.1(STEP 4、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 100.63.255.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 11:20:20.013 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 100.63.255.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (900/900), round-trip min/avg/max = 9/16/76 ms

何が起きたかはキャプチャーの時刻で分かります。R1のインタフェースが11:20:33.613にダウンすると、その25ミリ秒後(11:20:33.638)にはR5からのパケットがR1-R2間に現れます。R1のFIBがバックアップパス(R2)へ切り替えたためです。

R1 show logging(STEP 4)
RP/0/RP0/CPU0:R1#show logging start Sep 15 11:15:58
Tue Sep 15 11:24:14.025 UTC
Time Zone UTC, DST disabled
Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)
    Console logging: Disabled
    Monitor logging: level debugging, 0 messages logged
    Trap logging: level informational, 0 messages logged
    Buffer logging: level debugging, 364 messages logged

Log Buffer (2097152 bytes):

RP/0/RP0/CPU0:Sep 15 11:15:58.724 UTC: logger[67665]: %OS-SYSLOG-6-LOG_INFO : informational STEP4-BEGIN 
RP/0/RP0/CPU0:Sep 15 11:15:59.192 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[18466]: Received disconnect from 10.100.3.1 port 65190:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:15:59.192 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[18466]: Disconnected from user cisco 10.100.3.1 port 65190 
RP/0/RP0/CPU0:Sep 15 11:20:29.443 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[18867]: Accepted authentication/pam for cisco from 10.100.3.1 port 65372 ssh2 
RP/0/RP0/CPU0:Sep 15 11:20:33.613 UTC: ifmgr[155]: %PKT_INFRA-LINK-5-CHANGED : Interface GigabitEthernet0/0/0/2, changed state to Administratively Down 
RP/0/RP0/CPU0:Sep 15 11:20:33.614 UTC: bgp[1084]: %ROUTING-BGP-5-ADJCHANGE : neighbor 10.1.4.4 Down - Admin. shutdown (CEASE notification sent - administrative shutdown) (VRF: default) (AS: 65002) 
RP/0/RP0/CPU0:Sep 15 11:20:34.095 UTC: config[68074]: %MGBL-CONFIG-6-DB_COMMIT : Configuration committed by user 'cisco'. Use 'show configuration commit changes 1000000012' to view the changes. 
RP/0/RP0/CPU0:Sep 15 11:20:34.305 UTC: config[68074]: %MGBL-SYS-5-CONFIG_I : Configured from console by cisco on vty0 (10.100.3.1) 
RP/0/RP0/CPU0:Sep 15 11:20:36.138 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[18872]: Received disconnect from 10.100.3.1 port 65372:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:20:36.138 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[18872]: Disconnected from user cisco 10.100.3.1 port 65372 
RP/0/RP0/CPU0:Sep 15 11:23:54.506 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19230]: Accepted authentication/pam for cisco from 10.100.3.1 port 65473 ssh2 
RP/0/RP0/CPU0:Sep 15 11:24:10.995 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19235]: Received disconnect from 10.100.3.1 port 65473:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:24:10.995 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19235]: Disconnected from user cisco 10.100.3.1 port 65473 
RP/0/RP0/CPU0:Sep 15 11:24:11.907 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19418]: Accepted authentication/pam for cisco from 10.100.3.1 port 65482 ssh2 
STEP 4 の R1-R2 間(R5 からの Echo request。R1 が R2 へ迂回させたもの)
$ tshark -r bgp-pic-step4-r1r2.pcap -t ud -Y 'icmp.type==8'
    5 2026-09-15 11:20:33.638052Z  192.168.5.1 → 100.63.255.1 ICMP 114 Echo (ping) request  id=0x483b, seq=124/31744, ttl=253
    6 2026-09-15 11:20:33.686031Z  192.168.5.1 → 192.168.4.1  ICMP 114 Echo (ping) request  id=0x47f7, seq=171/43776, ttl=253
    7 2026-09-15 11:20:33.738905Z  192.168.5.1 → 100.63.255.1 ICMP 114 Echo (ping) request  id=0x483b, seq=125/32000, ttl=253
    8 2026-09-15 11:20:33.786051Z  192.168.5.1 → 192.168.4.1  ICMP 114 Echo (ping) request  id=0x47f7, seq=172/44032, ttl=253
    9 2026-09-15 11:20:33.886000Z  192.168.5.1 → 100.63.255.1 ICMP 114 Echo (ping) request  id=0x483b, seq=126/32256, ttl=253
   10 2026-09-15 11:20:33.886339Z  192.168.5.1 → 192.168.4.1  ICMP 114 Echo (ping) request  id=0x47f7, seq=173/44288, ttl=253
   11 2026-09-15 11:20:33.940047Z  192.168.5.1 → 100.63.255.1 ICMP 114 Echo (ping) request  id=0x483b, seq=127/32512, ttl=253
   12 2026-09-15 11:20:33.986276Z  192.168.5.1 → 192.168.4.1  ICMP 114 Echo (ping) request  id=0x47f7, seq=174/44544, ttl=253
<snip>(以下 7 行)

BGPの取り消しはその後です。R1がR3へWITHDRAWを送り始めるのは11:20:34.194で、リンク断から0.58秒後です。STEP 1ではこの時間のあいだパケットが捨てられていましたが、PICがあるとFIBが先に迂回させているので、BGPが取り消しを終えてR3がR2経由に切り替えても転送は途切れません。

STEP 4 の R1-R3 間(R1 → R3 の UPDATE)
$ tshark -r bgp-pic-step4-r1r3.pcap -t ud -Y 'bgp.type==2'
  314 2026-09-15 11:20:34.193733Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  315 2026-09-15 11:20:34.193943Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  317 2026-09-15 11:20:34.201938Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  318 2026-09-15 11:20:34.202073Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  319 2026-09-15 11:20:34.202178Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message, UPDATE Message
  320 2026-09-15 11:20:34.202658Z     10.0.0.1 → 10.0.0.3     BGP 1294 UPDATE Message
  323 2026-09-15 11:20:34.210916Z     10.0.0.1 → 10.0.0.3     BGP 829 UPDATE Message, UPDATE Message

STEP 5:復旧

両端をno shutdownにしてSTEP 3の状態に戻します。

STEP 6:R1を停止(PIC Edge、ネクストホップの消失)

R3から見たネクストホップ10.0.0.1が消えると、IGPが検知した瞬間にR2へ切り替わります。 R1をCMLで停止すると、R3のOSPFはdead interval(40秒)の満了でR1との隣接を落とします(11:36:27.680)。

R3 show logging(STEP 6)
RP/0/RP0/CPU0:R3#show logging start Sep 15 11:33:25
Tue Sep 15 11:41:08.035 UTC
Time Zone UTC, DST disabled
Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)
    Console logging: Disabled
    Monitor logging: level debugging, 0 messages logged
    Trap logging: level informational, 0 messages logged
    Buffer logging: level debugging, 316 messages logged

Log Buffer (2097152 bytes):

RP/0/RP0/CPU0:Sep 15 11:33:26.088 UTC: logger[69019]: %OS-SYSLOG-6-LOG_INFO : informational STEP6-BEGIN 
RP/0/RP0/CPU0:Sep 15 11:33:26.488 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19820]: Received disconnect from 10.100.3.1 port 49531:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:33:26.488 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[19820]: Disconnected from user cisco 10.100.3.1 port 49531 
RP/0/RP0/CPU0:Sep 15 11:36:27.680 UTC: ospf[1035]: %ROUTING-OSPF-5-ADJCHG : Process 1, Nbr 10.0.0.1 on GigabitEthernet0/0/0/0 in area 0 from FULL to DOWN, Neighbor Down: dead timer expired, vrf default vrfid 0x60000000 
RP/0/RP0/CPU0:Sep 15 11:38:36.759 UTC: bgp[1084]: %ROUTING-BGP-5-ADJCHANGE : neighbor 10.0.0.1 Down - BGP Notification sent, hold time expired (VRF: default) (AS: 65001) 
RP/0/RP0/CPU0:Sep 15 11:40:45.905 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[20428]: Accepted authentication/pam for cisco from 10.100.3.1 port 49861 ssh2 
RP/0/RP0/CPU0:Sep 15 11:41:05.189 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[20433]: Received disconnect from 10.100.3.1 port 49861:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:41:05.189 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[20433]: Disconnected from user cisco 10.100.3.1 port 49861 
RP/0/RP0/CPU0:Sep 15 11:41:06.007 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[20660]: Accepted authentication/pam for cisco from 10.100.3.1 port 49867 ssh2 

応答は11:36:27.914に戻りました。隣接が落ちてから0.23秒後です。それに対して、BGPがR2経由の経路をルーティングテーブルに入れ直したのは11:36:32(5秒後)、R1とのiBGPセッションがhold timeの満了で落ちたのは11:38:36(2分後)です。転送の復旧はどちらも待っていません。

R3 show route 192.168.4.0/24(STEP 6)
RP/0/RP0/CPU0:R3#show route 192.168.4.0/24
Tue Sep 15 11:40:53.491 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 200, metric 0
  Tag 65002, type internal
  Installed Sep 15 11:36:32.691 for 00:04:20
  Routing Descriptor Blocks
    10.0.0.2, from 10.0.0.2
      Route metric is 0, Wt is 1
  No advertising protos. 
R3 show bgp summary(STEP 6。R1 とのセッションはまだ残っている)
RP/0/RP0/CPU0:R3#show bgp summary
Tue Sep 15 11:40:50.197 UTC
BGP router identifier 10.0.0.3, local AS number 65001
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0xe0000000   RD version: 32045
BGP main routing table version 32045
BGP NSR Initial initsync version 7 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

BGP is operating in STANDALONE mode.


Process    RcvTblVer     bRIB/RIB     LabelVer    ImportVer    SendTblVer   StandbyVer
Speaker        32045         32045         32045         32045         32045             0

Neighbor        Spk    AS MsgRcvd MsgSent       TblVer  InQ OutQ  Up/Down  St/PfxRcd
10.0.0.1          0 65001     183     119            0    0    0 00:02:13  Idle
10.0.0.2          0 65001     125     120        32045    0    0 01:55:24       2003
10.3.5.5          0 65003     119     143        32045    0    0 01:55:26          1

途切れは35秒ですが、これはOSPFがR1の停止に気づくまでの時間です。pingは900発中35発を失いました。

R5 ping 192.168.4.1(STEP 6、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 192.168.4.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 11:35:38.037 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.
..................................!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 96 percent (865/900), round-trip min/avg/max = 9/14/81 ms

STEP 7:R1を起動

R1が起動して収束すると、R3のベストはR1経由に戻り、R2経由が再びバックアップになります。R1のPICの設定は残っています。

R3 show bgp 192.168.4.0/24(STEP 7)
RP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Tue Sep 15 11:52:12.614 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              34047        34047
Last Modified: Sep 15 11:46:49.023 for 00:05:23
Paths: (2 available, best #1)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  Path #1: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  65002, (received & used)
    10.0.0.1 (metric 2) from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 34047
  Path #2: Received by speaker 0
  Not advertised to any peer
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, backup, add-path
      Received Path ID 0, Local Path ID 6, version 34047

STEP 8:R3-R1リンク断(PIC Core)

BGPのネクストホップは変わらず、IGPの収束だけで復旧します。 R3のGi0/0/0/0(R1向け)を落とすと(R1側も落としています)、OSPFがすぐに隣接を落とし、10.0.0.1/32への経路をR2経由(10.2.3.2)に差し替えます。

R3 STEP 8 で commit した設定
RP/0/RP0/CPU0:R3#show configuration commit changes last 1
Tue Sep 15 11:55:34.788 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
interface GigabitEthernet0/0/0/0
 shutdown
!
end
R3 show logging(STEP 8)
RP/0/RP0/CPU0:R3#show logging start Sep 15 11:52:45
Tue Sep 15 12:01:27.313 UTC
Time Zone UTC, DST disabled
Syslog logging: enabled (0 messages dropped, 0 flushes, 0 overruns)
    Console logging: Disabled
    Monitor logging: level debugging, 0 messages logged
    Trap logging: level informational, 0 messages logged
    Buffer logging: level debugging, 357 messages logged

Log Buffer (2097152 bytes):

RP/0/RP0/CPU0:Sep 15 11:52:45.283 UTC: logger[67286]: %OS-SYSLOG-6-LOG_INFO : informational STEP8-BEGIN 
RP/0/RP0/CPU0:Sep 15 11:52:45.684 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22184]: Received disconnect from 10.100.3.1 port 50302:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:52:45.684 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22184]: Disconnected from user cisco 10.100.3.1 port 50302 
RP/0/RP0/CPU0:Sep 15 11:55:29.338 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22468]: Accepted authentication/pam for cisco from 10.100.3.1 port 50417 ssh2 
RP/0/RP0/CPU0:Sep 15 11:55:33.809 UTC: ifmgr[155]: %PKT_INFRA-LINK-5-CHANGED : Interface GigabitEthernet0/0/0/0, changed state to Administratively Down 
RP/0/RP0/CPU0:Sep 15 11:55:33.884 UTC: ospf[1035]: %ROUTING-OSPF-5-ADJCHG : Process 1, Nbr 10.0.0.1 on GigabitEthernet0/0/0/0 in area 0 from FULL to DOWN, Neighbor Down: interface down or detached, vrf default vrfid 0x60000000 
RP/0/RP0/CPU0:Sep 15 11:55:34.201 UTC: config[67579]: %MGBL-CONFIG-6-DB_COMMIT : Configuration committed by user 'cisco'. Use 'show configuration commit changes 1000000004' to view the changes. 
RP/0/RP0/CPU0:Sep 15 11:55:34.403 UTC: config[67579]: %MGBL-SYS-5-CONFIG_I : Configured from console by cisco on vty0 (10.100.3.1) 
RP/0/RP0/CPU0:Sep 15 11:55:36.521 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22473]: Received disconnect from 10.100.3.1 port 50417:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 11:55:36.521 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22473]: Disconnected from user cisco 10.100.3.1 port 50417 
RP/0/RP0/CPU0:Sep 15 12:01:02.445 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22976]: Accepted authentication/pam for cisco from 10.100.3.1 port 50588 ssh2 
RP/0/RP0/CPU0:Sep 15 12:01:24.094 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22981]: Received disconnect from 10.100.3.1 port 50588:11: disconnected by user 
RP/0/RP0/CPU0:Sep 15 12:01:24.094 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[22981]: Disconnected from user cisco 10.100.3.1 port 50588 
RP/0/RP0/CPU0:Sep 15 12:01:24.920 UTC: ssh_syslog_proxy[1188]: %SECURITY-SSHD_SYSLOG_PRX-6-INFO_GENERAL : sshd[23182]: Accepted authentication/pam for cisco from 10.100.3.1 port 50609 ssh2 

FIBで書き換わったのはネクストホップ10.0.0.1/32のエントリだけです(Updated 11:55:34.001、リンク断の0.2秒後)。192.168.4.0/24のエントリは相変わらずvia 10.0.0.1/32を参照しており、2,002本のBGP経路は1本も触られていません。

R3 show cef 10.0.0.1/32(STEP 8)
RP/0/RP0/CPU0:R3#show cef 10.0.0.1/32
Tue Sep 15 12:01:13.134 UTC
10.0.0.1/32, version 76120, internal 0x1000001 0x11 (ptr 0x8852b070) [3], 0x400 (0x8977fd58), 0x0 (0x0)
 Updated Sep 15 11:55:34.001 
 local adjacency to GigabitEthernet0/0/0/1

 Prefix Len 32, traffic index 0, precedence n/a, priority 1
  gateway array (0x89619110) reference count 3, flags 0x0, source rib (7), 0 backups
                [4 type 3 flags 0x8401 (0x896bbfb8) ext 0x0 (0x0)]
  LW-LDI[type=3, refc=1, ptr=0x8977fd58, sh-ldi=0x896bbfb8]
  gateway array update type-time 1 Sep 15 09:45:22.015
 LDI Update time Sep 15 09:45:22.016
 LW-LDI-TS Sep 15 11:55:34.001
   via 10.2.3.2/32, GigabitEthernet0/0/0/1, 10 dependencies, weight 0, class 0 [flags 0x0]
    path-idx 0 NHID 0x4 [0x8a781640 0x0]
    next hop 10.2.3.2/32
    local adjacency

    Load distribution: 0 (refcount 4)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/1    10.2.3.2       
R3 show cef 192.168.4.0/24(STEP 8)
RP/0/RP0/CPU0:R3#show cef 192.168.4.0/24
Tue Sep 15 12:01:12.394 UTC
192.168.4.0/24, version 82129, internal 0x5000001 0x40 (ptr 0x8852ac10) [1], 0x0 (0x0), 0x0 (0x0)
 Updated Sep 15 11:55:44.203 
 local adjacency to GigabitEthernet0/0/0/1

 Prefix Len 24, traffic index 0, precedence n/a, priority 4
  gateway array (0x89619218) reference count 2002, flags 0x102010, source rib (7), 0 backups
                [1 type 3 flags 0x48501 (0x896bc010) ext 0x0 (0x0) (collapsed)]
  LW-LDI[type=0, refc=0, ptr=0x0, sh-ldi=0x0]
  gateway array update type-time 1 Sep 15 11:55:44.047
 LDI Update time Sep 15 11:55:44.047
   via 10.0.0.1/32, 3 dependencies, recursive, backup [flags 0x6100]
    path-idx 0 NHID 0x0 [0x8852b070 0x0]
    next hop 10.0.0.1/32 via 10.0.0.1/32
   via 10.0.0.2/32, 3 dependencies, recursive [flags 0x6000]
    path-idx 1 NHID 0x0 [0x8852af90 0x0], Internal 0x8abcb190
    next hop 10.0.0.2/32 via 10.0.0.2/32

    Weight distribution:
    slot 0, weight 1, normalized_weight 1, class 0
    Load distribution: 0 (refcount 1)

    Hash  OK  Interface                 Address
    0     Y   GigabitEthernet0/0/0/1    10.2.3.2       

BGPも変わりません。show bgpのベストはR1経由のままで、R1-R2間のキャプチャーにUPDATEはありません(R1-R3間のiBGPセッションはLoopback同士なので、R2経由で張られたまま続いています)。pingは900発すべて応答があり、途切れは最大0.17秒です。

R3 show bgp 192.168.4.0/24(STEP 8)
RP/0/RP0/CPU0:R3#show bgp 192.168.4.0/24
Tue Sep 15 12:01:09.800 UTC
BGP routing table entry for 192.168.4.0/24
Versions:
  Process           bRIB/RIB   SendTblVer
  Speaker              36050        36050
Last Modified: Sep 15 11:55:44.023 for 00:05:25
Paths: (2 available, best #2)
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  Path #1: Received by speaker 0
  Not advertised to any peer
  65002, (received & used)
    10.0.0.1 (metric 3) from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, backup, add-path
      Received Path ID 0, Local Path ID 6, version 36050
  Path #2: Received by speaker 0
  Advertised IPv4 Unicast paths to peers (in unique update groups):
    10.3.5.5        
  65002, (received & used)
    10.0.0.2 (metric 2) from 10.0.0.2 (10.0.0.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best, group-best
      Received Path ID 0, Local Path ID 1, version 36050
STEP 8 の R1-R2 間(BGPのみ)
$ tshark -r bgp-pic-step8-r1r2.pcap -t ud -Y 'bgp'
   13 2026-09-15 11:55:46.411919Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
   15 2026-09-15 11:55:46.616703Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   17 2026-09-15 11:55:48.411131Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
   19 2026-09-15 11:55:48.614275Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   33 2026-09-15 11:56:46.411704Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
   35 2026-09-15 11:56:46.616677Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   38 2026-09-15 11:56:48.411278Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
   39 2026-09-15 11:56:48.614087Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   54 2026-09-15 11:57:46.412896Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
   56 2026-09-15 11:57:46.618245Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   58 2026-09-15 11:57:48.411705Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
   59 2026-09-15 11:57:48.614340Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   74 2026-09-15 11:58:46.413118Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
   76 2026-09-15 11:58:46.618728Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   79 2026-09-15 11:58:48.412295Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
   80 2026-09-15 11:58:48.614606Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
   95 2026-09-15 11:59:46.413603Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
   97 2026-09-15 11:59:46.618137Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
   99 2026-09-15 11:59:48.412508Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
  100 2026-09-15 11:59:48.615230Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
  116 2026-09-15 12:00:46.413448Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
  118 2026-09-15 12:00:46.618769Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
  120 2026-09-15 12:00:48.413002Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
  121 2026-09-15 12:00:48.615528Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
  136 2026-09-15 12:01:46.413924Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
  138 2026-09-15 12:01:46.619187Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
  141 2026-09-15 12:01:48.413550Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
  142 2026-09-15 12:01:48.615974Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
  157 2026-09-15 12:02:46.414214Z     10.0.0.2 → 10.0.0.1     BGP 73 KEEPALIVE Message
  159 2026-09-15 12:02:46.619105Z     10.0.0.3 → 10.0.0.1     BGP 73 KEEPALIVE Message
  162 2026-09-15 12:02:48.413863Z     10.0.0.1 → 10.0.0.2     BGP 73 KEEPALIVE Message
  163 2026-09-15 12:02:48.616112Z     10.0.0.1 → 10.0.0.3     BGP 73 KEEPALIVE Message
R5 ping 192.168.4.1(STEP 8、100ミリ秒間隔)
RP/0/RP0/CPU0:R5#ping 192.168.4.1 source 192.168.5.1 count 900 interval 100 timeout 1
Tue Sep 15 11:55:15.404 UTC
Type escape sequence to abort.
Sending 900, 100-byte ICMP Echos to 192.168.4.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (900/900), round-trip min/avg/max = 8/16/86 ms

STEP 9:復旧(最終状態)

両端をno shutdownにすると、R1・R3ともSTEP 3の状態(ベスト1本とバックアップ1本)に戻ります。

R1 show route 192.168.4.0/24(STEP 9)
RP/0/RP0/CPU0:R1#show route 192.168.4.0/24
Tue Sep 15 12:06:06.749 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 20, metric 0
  Tag 65002
  Number of pic paths 1 , type internal and external
  Installed Sep 15 11:46:46.961 for 00:19:19
  Routing Descriptor Blocks
    10.0.0.2, from 10.0.0.2, BGP backup path
      Route metric is 0, Wt is 1
    10.1.4.4, from 10.1.4.4, BGP external
      Route metric is 0, Wt is 1
  No advertising protos. 
R3 show route 192.168.4.0/24(STEP 9)
RP/0/RP0/CPU0:R3#show route 192.168.4.0/24
Tue Sep 15 12:08:11.546 UTC

Routing entry for 192.168.4.0/24
  Known via "bgp 65001", distance 200, metric 0
  Tag 65002
  Number of pic paths 1 , type internal
  Installed Sep 15 12:04:06.535 for 00:04:05
  Routing Descriptor Blocks
    10.0.0.1, from 10.0.0.1
      Route metric is 0, Wt is 1
    10.0.0.2, from 10.0.0.2, BGP backup path
      Route metric is 0, Wt is 1
  No advertising protos. 

検証Configおよびshow結果

各STEPで5台すべてから、次のファイルをルータごとに分けて取得しています(STEP 6はR1が停止中のため4台)。検証Configは..._run.txtです(最終状態はSTEP 9のもの)。

ファイル内容
..._show.txtshow bgp summary / show bgp・ピアごとのadvertised-routes / routes / received routes(2,000本の埋め草を除くためinclude "192.168|100.63.255|Processed"で絞ったもの)/ show bgp <プレフィックス>192.168.4.0/24100.63.255.0/24100.64.0.0/24192.168.5.0/24)/ show route summary / show routeshow cef(上のプレフィックスと10.0.0.1/3210.0.0.2/32)/ show bgp neighbors / show bgp process / show rpl route-policy。R1〜R3はshow ospf neighbor / show route ospf
..._log.txtそのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._ping.txt / ..._ping2.txtR5から192.168.4.1100.63.255.1へのpingtraceroute。障害を入れるSTEP(1・4・6・8)は障害の前から100ミリ秒間隔で900発を宛先ごとに流したもの(_ping.txt192.168.4.1_ping2.txt100.63.255.1)。それ以外は50発
..._trace.txtshow bgp trace neighbor / show bgp trace error
..._commit.cfgそのSTEPで実際にcommitした設定だけ。 設定を変えたルータの分のみ。R1の停止・起動(STEP 6・7)はCMLの操作なので無い

STEP 0:初期状態(PICなし)

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-trace-
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-trace-
R5showlogrunpingtrace-

STEP 1:R1-R4リンク断(PICなし)

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-tracecfg
R5showlogrunping / ping2trace-

STEP 2:復旧

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-tracecfg
R5showlogrunpingtrace-

STEP 3:R1・R3にadditional-paths selectionbackup 1 install

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-tracecfg
R4showlogrun-trace-
R5showlogrunpingtrace-

STEP 4:R1-R4リンク断(PICあり)

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-tracecfg
R5showlogrunping / ping2trace-

STEP 5:復旧

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-tracecfg
R5showlogrunpingtrace-

STEP 6:R1を停止(PIC Edge、ネクストホップの消失)

ルータshow出力syslogrunning-configpingtracecommit
R1------
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-trace-
R5showlogrunping / ping2trace-

STEP 7:R1を起動

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-trace-
R2showlogrun-trace-
R3showlogrun-trace-
R4showlogrun-trace-
R5showlogrunpingtrace-

STEP 8:R3-R1リンク断(PIC Core)

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-tracecfg
R4showlogrun-trace-
R5showlogrunping / ping2trace-

STEP 9:復旧(最終状態)

ルータshow出力syslogrunning-configpingtracecommit
R1showlogrun-tracecfg
R2showlogrun-trace-
R3showlogrun-tracecfg
R4showlogrun-trace-
R5showlogrunpingtrace-

パケットキャプチャーはSTEPごとに、R3-R5間(R5のping。応答の途切れの計測に使ったもの)・R1-R2間・R1-R3間で取得しています。R1を停止していたSTEP 6と、その起動直後のSTEP 7はR1側の2区間を取れていません(「—」)。

STEPR3-R5間R1-R2間R1-R3間
0pcappcappcap
1pcappcappcap
2pcappcappcap
3pcappcappcap
4pcappcappcap
5pcappcappcap
6pcap
7pcap
8pcappcappcap
9pcappcappcap

参考

資料タイトル概要
draft-ietf-rtgwg-bgp-pic-23BGP Prefix Independent Convergence階層型FIBとPIC Core / Edgeの仕組み(Informational)
RFC 4271A Border Gateway Protocol 4 (BGP-4)PICが変えないBGPの手続き

関連記事