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

MPLS TEのFRR(auto-tunnel backupとSRLG)

目次

MPLS TEのFRR(auto-tunnel backupとSRLG)

MPLS TEのFRR(Fast Reroute)は、障害の手前のルータ(PLR)がバイパストンネルを用意しておくことで効きます。バイパスを保護するリンクごとに手で設定すると、設定の量はリンクの数だけ増えます。IOS XRのauto-tunnel backupは、保護するインタフェースを指定するだけで、PLRがバイパスを自動で張る機能です。一方、自動で計算したバイパスは、保護するリンクと同じ原因で一緒に落ちる経路を選ぶことがあります。これを避けるのがSRLG(Shared Risk Link Group)です。仕組みを解説し、IOS XR(XRd)のラボで、自動で張られるバイパスと、SRLGを避けたときと避けないときのCEから見た断を確かめます。

PLRとMP、NHOP / NNHOPバイパス、facility backupのラベルの積み方はMPLS TEのFRR(リンク保護とノード保護)で解説しています。

バイパスの経路の決め方

RFC 4090は、PLRがバイパスの経路をCSPFで計算するときの制約を定めています(6.2節)。

制約内容
宛先バイパスの宛先はMP(MUST)
避けるもの保護する下流のリンクやノードを通らない。PLRがtail-endの1つ手前なら、ノード保護はできずリンクだけを避ける
SRLG避けるリンクやノードとSRLGが重ならない経路で計算してもよい
資源保護するLSPの帯域やリンク属性の条件を満たす

SRLG Disjointは、指定したリンクやノードと同じSRLGに属するリンクやノードを使わない経路のことです(2節)。SRLGを避けるかどうかはPLRの計算の選択で、プロトコルが強制するものではありません。 バイパスを張れなかったPLRは、後で張り直しを試みます(6.2節)。

auto-tunnel backup

auto-tunnel backupはIOS XRの機能で、RFC 4090が定めるものではありません。設定は2か所です。

設定場所意味
auto-tunnel backup tunnel-id min 1000 max 1099mpls traffic-eng自動で作るバイパスのトンネル番号の範囲
auto-tunnel backupmpls traffic-eng / interface Xこのインタフェースから出るLSPのバイパスを作る

IOS XRは、保護するインタフェースごとに次の2本を作ります。

バイパス宛先名前(Signalled-Name)
NHOP隣のルータautob_<PLR>_t<番号>_<IF>
NNHOP隣のルータを飛ばした次のルータautob_<PLR>_t<番号>_<IF>_<避けるノード>

両方あるとき、IOS XRはリンク保護しか求めていないLSPにもNNHOPを使います。 NNHOPは隣のノードごと避けるので、リンクの障害も守れるからです。NHOPだけにするには、インタフェースにnhop-onlyを付けます。避けるノードを通らずに宛先へ行く経路が無いバイパスは上がりません。

自動で作ったバイパスには、経路オプションが2つあります。

経路オプションpreference使われる条件
autob_nhop_srlg_te<番号>10SRLGを避ける指定(exclude srlg)があるとき
autob_nhop_te<番号>20SRLGを避けないとき(既定)

SRLG

SRLGは、同じ原因で一緒に落ちるリンク(同じ管路の光ファイバー、同じラインカードなど)に付ける32ビットの番号です。OSPFでは、TE用のOpaque-LSAのLink TLVに、sub-TLV 16(Shared Risk Link Group)としてリンクが属するSRLGの番号の並びが載ります(RFC 4203の1.3節)。IOS XRではsrlg / interface X / value 100で付けます。

SRLGをIGPで配っても、それだけではバイパスは変わりません。PLRのインタフェースにauto-tunnel backup exclude srlgを入れて初めて、SRLGを避けた経路で計算します。

指定動作(IOS XRのヘルプ)
exclude srlgSRLGを避けるのが必須
exclude srlg preferred避けるのを優先するが、必須ではない
exclude srlg weightedSRLGを共有するリンクのコストを上乗せして計算する

SRLGを避けないバイパスは、保護するリンクと一緒に落ちると役に立ちません。 PLRは切り替えますが、バイパスの先が切れているのでパケットは届きません。そこから先は、PLRがバイパスを張り直すか、head-endがLSPを張り直すまで断が続き、どちらが先に終わるかはタイミングで変わります。戻り方向のPLRのバイパスも同じ原因で落ちていれば、そちらはhead-endの張り直しを待つしかありません。

検証構成

上の段を通る2本のトンネル(PE1 → PE2、PE2 → PE1)をstrictの明示経路で張り、fast-rerouteでリンク保護を求めます。CE1とCE2はVRF CUST-AでPEにつながり、PE1 - PE2はVPNv4のiBGPです。全リンクのOSPF costは10です。

ルータLo0役割
PE1 / PE211.11.11.11 / 22.22.22.22head-end / tail-end
P11.1.1.1行きのPLR(P1 - P2を守る)
P22.2.2.2行きのMP、戻りのPLR(P2 - P1を守る)
P55.5.5.5P2 - P5の端。P2 - P5はP1 - P2と同じSRLG 100
P3 / P4 / P63.3.3.3 / 4.4.4.4 / 6.6.6.6バイパスが通る
CE1 / CE2101.101.101.101 / 102.102.102.102192.168.1.0/24 / 192.168.2.0/24

P1 - P2とP2 - P5に同じSRLG 100を付けます。 P1のNHOPバイパスは、SRLGを避けなければP1 → P4 → P5 → P2(コスト30)、避ければP1 → P4 → P5 → P6 → P3 → P2(コスト50)を通ります。PE1のコア側のリンクはP1との1本だけです。

  • LDPのセッションは張らず、トランスポートは両方向のトンネルだけです(IOS XRがVPNの経路をトンネルで解決するよう、PEにはmpls ldpの行だけを入れています)
  • 障害は4つの端を同時にshutdownして作ります。CMLのXRdは片側のshutdownが対向に伝わらないためです
  • 断はCE1からのpingで測ります(count 300 interval 100 timeout 1)。応答が無い間は1発ごとに1秒待つので、落ちた発数が断の秒数の目安です

検証の全体像

STEP操作確かめること
0両方向のトンネル、autoroute、fast-rerouteバイパスは無い。CEの疎通
1P1とP2にauto-tunnel backupNHOPとNNHOPが作られ、P1ではNNHOPが使われる。P2のNNHOPは上がらない
2P1とP2にnhop-onlyNNHOPが消え、NHOPが使われる
3P1 - P2とP2 - P5にSRLG 100LSUにsub-TLV 16。バイパスはP5 - P2を通ったまま
4P1 - P2とP2 - P5を同時にshutdown(SRLGを避けないバイパス)バイパスも一緒に切れる。CEの断と、落ちた方向
5復旧し、P1とP2にexclude srlg、再最適化で上の段へバイパスがP6 - P3経由に変わる
6P1 - P2とP2 - P5を同時にshutdown(SRLGを避けたバイパス)行き・戻りとも迂回できる。CEの断
7撤去(最終状態)

auto-tunnel backup(STEP 1・2)

STEP 1 P1にcommitした設定
RP/0/RP0/CPU0:P1#show configuration commit changes last 1
Tue Sep 15 04:00:19.806 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
mpls traffic-eng
 interface GigabitEthernet0/0/0/1
  auto-tunnel backup
  !
 !
 auto-tunnel backup
  tunnel-id min 1000 max 1099
 !
!
end
STEP 1 P1 show mpls traffic-eng tunnels backup
RP/0/RP0/CPU0:P1#show mpls traffic-eng tunnels backup
Tue Sep 15 04:01:49.597 UTC

tunnel-te1000 (auto-tunnel backup)
 Signalled-Name: autob_P1_t1000_Gi0_0_0_1_2.2.2.2
 Admin: up, Oper: up
 Src: 1.1.1.1, Dest: 3.3.3.3, Instance: 2
 Fast Reroute Backup Provided:
  Protected LSPs: 1 (0 active, 0 soft preempted)
  Protected S2L Sharing Families: 0
  Protected S2Ls: 0
  Backup BW: any-class (no limit specified), Inuse: 0 kbps
             soft preempted: 0 kbps
  Protected i/fs: Gi0/0/0/1
tunnel-te1001 (auto-tunnel backup)
 Signalled-Name: autob_P1_t1001_Gi0_0_0_1
 Admin: up, Oper: up
 Src: 1.1.1.1, Dest: 2.2.2.2, Instance: 2
 Fast Reroute Backup Provided:
  Protected LSPs: 0 (0 active, 0 soft preempted)
  Protected S2L Sharing Families: 0
  Protected S2Ls: 0
  Backup BW: any-class (no limit specified), Inuse: 0 kbps
             soft preempted: 0 kbps
  Protected i/fs: Gi0/0/0/1

tunnel-te1000がNNHOP(P2を避けて3.3.3.3へ)、tunnel-te1001がNHOP(2.2.2.2へ)です。保護しているのはtunnel-te1000の方です。

STEP 1 P1 show mpls traffic-eng tunnels summary(抜粋)
AutoTunnel Backup Summary:
    AutoTunnel Backups:
             2 created, 2 up, 0 down, 1 unused
             1 NHOP, 1 NNHOP, 0 SRLG strict, 0 SRLG preferred, 0 SRLG weighted, 0 BW protected
    Protected LSPs:
             0 NHOP, 0 NHOP+SRLG, 0 NHOP+BW, 0 NHOP+BW+SRLG
             1 NNHOP, 0 NNHOP+SRLG, 0 NNHOP+BW, 0 NNHOP+BW+SRLG
STEP 1 P1 show mpls traffic-eng fast-reroute database
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute database
Tue Sep 15 04:01:49.178 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
11.11.11.11 0 [3]                24002    Gi0/0/0/1:24002    tt1000:24002       Ready  

P1 - P4間のNo.6が、NNHOPバイパスのPathです。

STEP 1 No.6 PATH(P1 → P4、tshark -V 抜粋)
Internet Protocol Version 4, Src: 1.1.1.1, Dst: 3.3.3.3
        Message Type: PATH Message.  (1)
    SESSION: IPv4-LSP, Destination 3.3.3.3, Short Call ID 0, Tunnel ID 1000, Ext ID 1010101. 
    EXPLICIT ROUTE: IPv4 10.1.4.4, IPv4 10.4.5.5, IPv4 10.5.6.6, ...
        IPv4 Subobject - 10.1.4.4, Strict
        IPv4 Subobject - 10.4.5.5, Strict
        IPv4 Subobject - 10.5.6.6, Strict
        IPv4 Subobject - 10.3.6.3, Strict
        IPv4 Subobject - 3.3.3.3, Strict
    SESSION ATTRIBUTE: SetupPrio 7, HoldPrio 7, SE Style,  [autob_P1_t1000_Gi0_0_0_1_2.2.2.2]
        Flags: 0x04
            .... ...0 = Local protection: Not Desired
            .... ..0. = Label recording: Not Desired
            .... .1.. = SE style: Desired
            .... 0... = Bandwidth protection: Not Desired
            ...0 .... = Node protection: Not Desired
        Name: autob_P1_t1000_Gi0_0_0_1_2.2.2.2
上のtshark出力のパケット(No.6 PATH)のpcapをダウンロード

明示経路はP2を通らずにP3へ向かい、名前の最後に避けるノード(2.2.2.2)が入っています。フラグは0x04(SE Style)だけで、バイパス自身は保護を求めません。

P2は戻り方向のPLRです。P2のNNHOPはP1を避けてPE1へ向かう必要がありますが、PE1にはP1を通らない経路がありません。

STEP 1 P2 show mpls traffic-eng tunnels backup
RP/0/RP0/CPU0:P2#show mpls traffic-eng tunnels backup
Tue Sep 15 04:02:11.149 UTC

tunnel-te1000 (auto-tunnel backup)
 Signalled-Name: 
 Admin: up, Oper: down
 Src: 0.0.0.0, Dest: 11.11.11.11
 Fast Reroute Backup Provided:
  Protected LSPs: 0 (0 active, 0 soft preempted)
  Protected S2L Sharing Families: 0
  Protected S2Ls: 0
  Backup BW: any-class (no limit specified), Inuse: 0 kbps
             soft preempted: 0 kbps
  Protected i/fs: Gi0/0/0/0
tunnel-te1001 (auto-tunnel backup)
 Signalled-Name: autob_P2_t1001_Gi0_0_0_0
 Admin: up, Oper: up
 Src: 2.2.2.2, Dest: 1.1.1.1, Instance: 2
 Fast Reroute Backup Provided:
  Protected LSPs: 1 (0 active, 0 soft preempted)
  Protected S2L Sharing Families: 0
  Protected S2Ls: 0
  Backup BW: any-class (no limit specified), Inuse: 0 kbps
             soft preempted: 0 kbps
  Protected i/fs: Gi0/0/0/0

NNHOPのtunnel-te1000は上がらず、NHOPのtunnel-te1001が保護しています。STEP 2でnhop-onlyを付けました。

STEP 2 P1にcommitした設定
RP/0/RP0/CPU0:P1#show configuration commit changes last 1
Tue Sep 15 04:07:52.301 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
mpls traffic-eng
 interface GigabitEthernet0/0/0/1
  auto-tunnel backup
   nhop-only
  !
 !
!
end
STEP 2 P1 show mpls traffic-eng tunnels backup
RP/0/RP0/CPU0:P1#show mpls traffic-eng tunnels backup
Tue Sep 15 04:08:50.929 UTC

tunnel-te1001 (auto-tunnel backup)
 Signalled-Name: autob_P1_t1001_Gi0_0_0_1
 Admin: up, Oper: up
 Src: 1.1.1.1, Dest: 2.2.2.2, Instance: 2
 Fast Reroute Backup Provided:
  Protected LSPs: 1 (0 active, 0 soft preempted)
  Protected S2L Sharing Families: 0
  Protected S2Ls: 0
  Backup BW: any-class (no limit specified), Inuse: 0 kbps
             soft preempted: 0 kbps
  Protected i/fs: Gi0/0/0/1
STEP 2 P1 show mpls traffic-eng fast-reroute database
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute database
Tue Sep 15 04:08:50.441 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
11.11.11.11 0 [3]                24002    Gi0/0/0/1:24002    tt1001:24002       Ready  

NNHOPのバイパスは、PathTear(P1 - P4間のNo.6)で撤去されました。

STEP 2 No.6 PATH TEAR(P1 → P4、tshark -V 抜粋)
Internet Protocol Version 4, Src: 10.1.4.1, Dst: 10.1.4.4
        Message Type: BUNDLE Message.  (12)
            Message Type: PATH TEAR Message.  (5)
        SESSION: IPv4-LSP, Destination 3.3.3.3, Short Call ID 0, Tunnel ID 1000, Ext ID 1010101. 
        SENDER TEMPLATE: IPv4-LSP, Tunnel Source: 1.1.1.1, Short Call ID: 0, LSP ID: 2. 
上のtshark出力のパケット(No.6 PATH TEAR)のpcapをダウンロード

SRLG(STEP 3)

STEP 3 P2にcommitした設定
RP/0/RP0/CPU0:P2#show configuration commit changes last 1
Tue Sep 15 04:14:51.249 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
srlg
 interface GigabitEthernet0/0/0/0
  8 value 100
 !
 interface GigabitEthernet0/0/0/2
  8 value 100
 !
!
end

P1がP1 - P2のLink TLVを載せて送ったLSU(P1 - P2間のNo.7)です。

STEP 3 No.7 LS UPDATE(P1 → 224.0.0.5、tshark -V 抜粋)
Internet Protocol Version 4, Src: 10.1.2.1, Dst: 224.0.0.5
        Message Type: LS Update (4)
            LS Type: Opaque LSA, Area-local scope (10)
            Advertising Router: 1.1.1.1
                Link Information
                    Link Type: 1 - Point-to-point
                    Link ID: 2.2.2.2
                    Local Interface IP Address: 10.1.2.1
                    Remote Interface IP Address: 10.1.2.2
                    Shared Risk Link Group
                        TLV Type: 16: Shared Risk Link Group
                        Shared Risk Link Group: 100
上のtshark出力のパケット(No.7 LS UPDATE)のpcapをダウンロード
STEP 3 P1 show ospf database opaque-area(抜粋)
  Link State ID: 1.0.0.3
  Opaque Type: 1
  Opaque ID: 3
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000003
  Checksum: 0x61bf
  Length: 212

    Link connected to Point-to-Point network
      Link ID : 2.2.2.2
      (all bandwidths in bytes/sec)
      Interface Address : 10.1.2.1
      Neighbor Address : 10.1.2.2
      Admin Metric : 10
      Maximum bandwidth : 125000000
      Maximum reservable bandwidth global: 125000000
      Number of Priority : 8
      Priority 0 :            125000000  Priority 1 :            125000000
      Priority 2 :            125000000  Priority 3 :            125000000
      Priority 4 :            125000000  Priority 5 :            125000000
      Priority 6 :            125000000  Priority 7 :            125000000
      Affinity Bit : 0
      IGP Metric : 10
      GMPLS Shared Risked Link Group : Length: 4
        Number of SRLGs (1)
        [1]: 100

SRLGは配られましたが、バイパスは変わりません。

STEP 3 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
Name: tunnel-te1001  Destination: 2.2.2.2  Ifhandle:0x34 (auto-tunnel backup)
  Signalled-Name: autob_P1_t1001_Gi0_0_0_1
  Status:
    Admin:    up Oper:   up   Path:  valid   Signalling: connected

    path option (autob_nhop_te1001), preference 20,  type explicit (autob_nhop_te1001) (Basis for Setup, path weight 30)
      Accumulative metrics: TE 30 IGP 30 Delay 900000 
      Accumulative biased metrics: TE 30 IGP 30 Delay 900000 
    path option (autob_nhop_srlg_te1001), preference 10,  type explicit (autob_nhop_srlg_te1001) [disabled]
STEP 3 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
  Path info (OSPF 1 area 0):
  Hop0: 10.1.4.4
  Hop1: 10.4.5.5
  Hop2: 10.2.5.2
  Hop3: 2.2.2.2

使われているのはautob_nhop_te1001(コスト30)で、SRLGを避けるautob_nhop_srlg_te1001[disabled]です。経路はP5 → P2で、保護するP1 - P2と同じSRLG 100のリンクを通っています。

SRLGを避けないバイパスでの同時障害(STEP 4)

STEP 4 CE1 ping 192.168.2.1(同時障害をまたいで300発)
RP/0/RP0/CPU0:CE1#ping 192.168.2.1 source 192.168.1.1 count 300 interval 100 timeout 1

Tue Sep 15 04:22:08.902 UTC
Type escape sequence to abort.
Sending 300, 100-byte ICMP Echos to 192.168.2.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!................!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
Success rate is 94 percent (284/300), round-trip min/avg/max = 18/30/150 ms

16発が落ちました。 キャプチャーを方向ごとに分けると、行きのrequestは300発すべてP1が転送していて、落ちた16発はすべて戻りのreplyでした。

STEP 4 P1 show mpls traffic-eng fast-reroute database(落とした直後)
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute database

Tue Sep 15 04:22:25.417 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
11.11.11.11 0 [3]                24002    tt1001:24002                          Active 
STEP 4 P1 show mpls traffic-eng tunnels protection(落とした直後、抜粋)
PE1_t0 Tunnel Id: 0 
  LSP Midpoint, signaled, connection up
  Src: 11.11.11.11, Dest: 22.22.22.22, Instance: 3
  Fast Reroute Protection: Requested
    Inbound: FRR Inactive
     LSP signalling info:
      Original: in i/f: GigabitEthernet0/0/0/0, label:  24002, phop: 10.1.11.11
    Outbound: FRR Active
     Backup tunnel-te1001 to LSP nhop
      tunnel-te1001: out i/f: GigabitEthernet0/0/0/2
     LSP signalling info:
      Original: out i/f: GigabitEthernet0/0/0/1, label:  24002, nhop: 10.1.2.2
      With FRR: out i/f: tunnel-te1001, label:  24002
     LSP bw: 0 kbps, Backup level: any-class unlimited, type: CT0 

P1は切り替えましたが、tunnel-te1001の先のP5 - P2も切れています。

STEP 4 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
Name: tunnel-te1001  Destination: 2.2.2.2  Ifhandle:0x34 (auto-tunnel backup)
  Signalled-Name: autob_P1_t1001_Gi0_0_0_1
  Status:
    Admin:    up Oper:   up   Path:  valid   Signalling: connected

    path option (autob_nhop_te1001), preference 20,  type explicit (autob_nhop_te1001) (Basis for Setup, path weight 50)
      Accumulative metrics: TE 50 IGP 50 Delay 1500000 
      Accumulative biased metrics: TE 50 IGP 50 Delay 1500000 
    Last Signalled Error : Tue Sep 15 04:22:20 2026
      Info: [2] PathErr(24,5)-(Error: routing (24), Suberror: no route to dest (5)) at 10.2.5.5
    path option (autob_nhop_srlg_te1001), preference 10,  type explicit (autob_nhop_srlg_te1001) [disabled]
STEP 4 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
  History:
    Tunnel has been up for: 00:01:34 (since Tue Sep 15 04:22:20 UTC 2026)
    Current LSP:
      Uptime: 00:01:34 (since Tue Sep 15 04:22:20 UTC 2026)
    Prior LSP:
      ID: 2 Path Option: 20
      Removal Trigger: path error
STEP 4 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
  Path info (OSPF 1 area 0):
  Hop0: 10.1.4.4
  Hop1: 10.4.5.5
  Hop2: 10.5.6.6
  Hop3: 10.3.6.3
  Hop4: 10.2.3.2
  Hop5: 2.2.2.2

P5(10.2.5.5)からPathErr(24,5)を受けて、P1はバイパスを04:22:20にP6 - P3経由で張り直しました。行きのパケットは、この新しいバイパスを通りました(P6 - P3間のNo.21)。

STEP 4 No.21 ICMP Echo request(P6 → P3、tshark -V 抜粋)
MultiProtocol Label Switching Header, Label: 24000, Exp: 0, S: 0, TTL: 250
MultiProtocol Label Switching Header, Label: 24002, Exp: 0, S: 0, TTL: 253
MultiProtocol Label Switching Header, Label: 24015, Exp: 0, S: 1, TTL: 254
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.2.1
    Type: Echo (ping) request (8)
上のtshark出力のパケット(No.21 Echo request)のpcapをダウンロード

真ん中のラベル24002はP2のラベルです。P3からP2へ戻り、P2から上の段に乗ります。一方、戻り方向のPLRのP2には、使えるバイパスがありません。

STEP 4 P2 show mpls traffic-eng fast-reroute database(落とした直後)
RP/0/RP0/CPU0:P2#show mpls traffic-eng fast-reroute database

Tue Sep 15 04:22:28.757 UTC
STEP 4 PE2 show mpls traffic-eng tunnels(抜粋)
  History:
    Tunnel has been up for: 00:04:25 (since Tue Sep 15 04:22:20 UTC 2026)
    Current LSP:
      Uptime: 00:04:25 (since Tue Sep 15 04:22:20 UTC 2026)
    Prior LSP:
      ID: 3 Path Option: 10
      Removal Trigger: path error

PE2のトンネルはTunnel has been up forが04:22:20から数え直され、一度落ちて張り直されました。 戻りのreplyは、この張り直しが終わるまで届きませんでした。

SRLGを避けたバイパス(STEP 5・6)

STEP 5 P1にcommitした設定
RP/0/RP0/CPU0:P1#show configuration commit changes last 1
Tue Sep 15 04:32:24.870 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
mpls traffic-eng
 interface GigabitEthernet0/0/0/1
  auto-tunnel backup
   exclude srlg
  !
 !
!
end
STEP 5 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
Name: tunnel-te1001  Destination: 2.2.2.2  Ifhandle:0x34 (auto-tunnel backup)
  Signalled-Name: autob_P1_t1001_Gi0_0_0_1
  Status:
    Admin:    up Oper:   up   Path:  valid   Signalling: connected

    path option (autob_nhop_srlg_te1001), preference 10,  type explicit (autob_nhop_srlg_te1001) (Basis for Setup, path weight 50)
      Accumulative metrics: TE 50 IGP 50 Delay 1500000 
      Accumulative biased metrics: TE 50 IGP 50 Delay 1500000 
    path option (autob_nhop_te1001), preference 20,  type explicit (autob_nhop_te1001) [disabled]
STEP 5 P1 show mpls traffic-eng tunnels(tunnel-te1001、抜粋)
  Path info (OSPF 1 area 0):
  Hop0: 10.1.4.4
  Hop1: 10.4.5.5
  Hop2: 10.5.6.6
  Hop3: 10.3.6.3
  Hop4: 10.2.3.2
  Hop5: 2.2.2.2
STEP 5 P1 show mpls traffic-eng fast-reroute database
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute database
Tue Sep 15 04:34:44.278 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
11.11.11.11 0 [5]                24002    Gi0/0/0/1:24002    tt1001:24002       Ready  

autob_nhop_srlg_te1001(コスト50)が使われ、経路はP6 → P3 → P2になりました。 P2のバイパスも同じ形でP1へ向かいます。STEP 6で、STEP 4と同じ2本を同時に落としました。

STEP 6 CE1 ping 192.168.2.1(同時障害をまたいで300発)
RP/0/RP0/CPU0:CE1#ping 192.168.2.1 source 192.168.1.1 count 300 interval 100 timeout 1

Tue Sep 15 04:40:53.468 UTC
Type escape sequence to abort.
Sending 300, 100-byte ICMP Echos to 192.168.2.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
Success rate is 99 percent (299/300), round-trip min/avg/max = 18/42/182 ms

落ちたのは1発です。 落ちたのは障害の瞬間に経路上にいた戻りのreplyで、行きのrequestは300発すべてP1が転送していました。

STEP 6 P1 show mpls traffic-eng fast-reroute database(落とした直後)
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute database

Tue Sep 15 04:41:10.683 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
11.11.11.11 0 [5]                24002    tt1001:24002                          Active 
STEP 6 P2 show mpls traffic-eng fast-reroute database(落とした直後)
RP/0/RP0/CPU0:P2#show mpls traffic-eng fast-reroute database

Tue Sep 15 04:41:14.223 UTC
LSP midpoint FRR information:
LSP identifier                   In-label Out Intf : Label   FRR Intf : Label   Status 
-------------------------------- -------- ------------------ ------------------ -------
22.22.22.22 0 [5]                24003    tt1001:24003                          Active 
STEP 6 P1 show mpls traffic-eng fast-reroute log
RP/0/RP0/CPU0:P1#show mpls traffic-eng fast-reroute log
Tue Sep 15 04:42:38.313 UTC

Location Protected              When                   Switching Time
         Interface                                         (usec)    
-------- ---------------------- ---------------------- --------------
0/RP0/CPU0 Gi0/0/0/1              Sep 15 03:06:40.201019        0
0/RP0/CPU0 Gi0/0/0/1              Sep 15 03:32:03.823695    41000
0/RP0/CPU0 Gi0/0/0/1              Sep 15 04:22:20.522406        0
0/RP0/CPU0 Gi0/0/0/1              Sep 15 04:41:05.166629     1000
STEP 6 P2 show mpls traffic-eng fast-reroute log
RP/0/RP0/CPU0:P2#show mpls traffic-eng fast-reroute log
Tue Sep 15 04:42:59.482 UTC

Location Protected              When                   Switching Time
         Interface                                         (usec)    
-------- ---------------------- ---------------------- --------------
0/RP0/CPU0 Gi0/0/0/0              Sep 15 03:06:40.087167        0
0/RP0/CPU0 Gi0/0/0/0              Sep 15 03:32:03.260112        0
0/RP0/CPU0 Gi0/0/0/0              Sep 15 04:22:20.357922        0
0/RP0/CPU0 Gi0/0/0/0              Sep 15 04:41:05.054282        0

行き・戻りのPLRは04:41:05に切り替えました(04:22:20の行はSTEP 4、それより前の2行はSTEP 0より前に同じインタフェースで起きた切り替えです)。バイパス上の行きのrequest(P1 - P4間のNo.18)と、戻りのreply(P3 - P6間のNo.18)です。

STEP 6 No.18 ICMP Echo request(P1 → P4、tshark -V 抜粋)
MultiProtocol Label Switching Header, Label: 24006, Exp: 0, S: 0, TTL: 253
MultiProtocol Label Switching Header, Label: 24002, Exp: 0, S: 0, TTL: 253
MultiProtocol Label Switching Header, Label: 24015, Exp: 0, S: 1, TTL: 254
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.2.1
    Type: Echo (ping) request (8)
上のtshark出力のパケット(No.18 Echo request)のpcapをダウンロード
STEP 6 No.18 ICMP Echo reply(P3 → P6、tshark -V 抜粋)
MultiProtocol Label Switching Header, Label: 24001, Exp: 0, S: 0, TTL: 251
MultiProtocol Label Switching Header, Label: 24003, Exp: 0, S: 0, TTL: 252
MultiProtocol Label Switching Header, Label: 24015, Exp: 0, S: 1, TTL: 254
Internet Protocol Version 4, Src: 192.168.2.1, Dst: 192.168.1.1
    Type: Echo (ping) reply (0)
上のtshark出力のパケット(No.18 Echo reply)のpcapをダウンロード

どちらも3段で、真ん中はMPのラベル(行きはP2の24002、戻りはP1の24003)です。

STEP 6 PE2 show mpls traffic-eng tunnels(抜粋)
  History:
    Tunnel has been up for: 00:23:07 (since Tue Sep 15 04:22:20 UTC 2026)
    Current LSP:
      Uptime: 00:04:22 (since Tue Sep 15 04:41:05 UTC 2026)
    Reopt. LSP:
      Last Failure:
        LSP not signalled, identical to the [CURRENT] LSP
        Date/Time: Tue Sep 15 04:28:39 UTC 2026 [00:16:48 ago]
    Prior LSP:
      ID: 5 Path Option: 10
      Removal Trigger: reoptimization completed

PE2のトンネルは04:22:20から続いたまま、reoptimization completedで新しいLSPに入れ替わりました。

STEPごとの結果

STEPP1のバイパスCE1 → CE2落ちたパケットトンネル
4SRLGを避けない(P5 - P2経由)284/300戻りのreply 16発(行きは張り直したバイパスで守られた)行きは落ちない、戻り(PE2)は落ちて張り直し
6SRLGを避ける(P6 - P3経由)299/300障害の瞬間の戻りのreply 1発行き・戻りとも落ちない

XRdはソフトウェアで転送するので、断の長さは参考値です。STEP 4の行きがPLRの張り直しで守られたのはこのラボのタイミングによるもので、張り直しが遅れれば行きもhead-endの張り直しまで止まります。

設計上の注意

  • SRLGはIGPで配るだけでは効きません。バイパスを計算するPLRにexclude srlgが要ります
  • キーワードなしのexclude srlgは必須、preferredは必須ではありません(IOS XRのヘルプ)。SRLGを避けた経路が取れない区間がある構成では、この違いを踏まえて選びます
  • SRLGの番号は、実際に一緒に落ちるもの(同じ管路、同じ伝送装置、同じラインカード)に合わせて付けます。付けていないリンクは、計算で避けられません
  • auto-tunnel backupは既定でNNHOPも作ります。リンク保護だけで良いなら、nhop-onlyで本数を減らせます

検証Configおよびshow結果

各STEPで10台すべてから、次の種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態は最後のSTEPのもの)。

ファイル内容
..._show.txtshow version / show route / show ospf database opaque-area / show mpls traffic-eng tunnels系 / show mpls traffic-eng fast-reroute databaselog / show mpls traffic-eng tunnels backupprotection / show mpls forwarding detail / show rsvp系 / VPNのshowほか
..._log.txtそのSTEPの範囲だけに絞ったshow logging
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._ping.txtそのSTEPのping(50発、timeout 1秒)とtraceroute
..._oam.txtping / traceroute mpls traffic-eng tunnel-te 0(PE1・PE2)
..._trace.txtshow mpls traffic-eng trace head-end / link / bselectshow rsvp trace signalling(コア8台)
..._commit.cfgそのSTEPで実際にcommitした設定だけ。 設定を変えたルータの分のみ。STEP 5のP1・P2と、STEP 7のP1・P2・P5は2回commitしたので、2回目の分だけが残っています
..._failping.txtSTEP 4・6で障害をまたいで流したCE1のping
..._debug.txt障害の直後と再最適化の前後に取ったshow
.pcapそのSTEPのキャプチャー(PE1 - P1 / P1 - P2 / P1 - P4 / P2 - P5 / P3 - P6)

STEP 0:両方向のトンネル、autoroute、fast-reroute

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtracecfg
P1showlogrun--trace-
P2showlogrun--trace-
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--trace-
P6showlogrun--trace-
PE2showlogrunpingoamtracecfg
CE2showlogrunping---

STEP 1:P1とP2にauto-tunnel backup

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--trace-
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

STEP 2:P1とP2にnhop-only

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--trace-
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

STEP 3:P1 - P2とP2 - P5にSRLG 100

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--tracecfg
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

STEP 4:P1 - P2とP2 - P5を同時にshutdown(SRLGを避けないバイパス)

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--tracecfg
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

追加の記録: CE1 failping / PE1 debug / P1 debug / P2 debug

STEP 5:復旧し、P1とP2にexclude srlg、再最適化で上の段へ

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--tracecfg
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

追加の記録: PE1 debug / PE2 debug

STEP 6:P1 - P2とP2 - P5を同時にshutdown(SRLGを避けたバイパス)

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtrace-
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--tracecfg
P6showlogrun--trace-
PE2showlogrunpingoamtrace-
CE2showlogrunping---

追加の記録: CE1 failping / PE1 debug / P1 debug / P2 debug

STEP 7:撤去(最終状態)

ルータshow出力syslogrunning-configpingOAMtracecommit
CE1showlogrunping---
PE1showlogrunpingoamtracecfg
P1showlogrun--tracecfg
P2showlogrun--tracecfg
P3showlogrun--trace-
P4showlogrun--trace-
P5showlogrun--tracecfg
P6showlogrun--trace-
PE2showlogrunpingoamtracecfg
CE2showlogrunping---

パケットキャプチャーはSTEPごとに、次の5本のリンクで取得しています。

STEPPE1 - P1間P1 - P2間P1 - P4間P2 - P5間P3 - P6間
0pcappcappcappcappcap
1pcappcappcappcappcap
2pcappcappcappcappcap
3pcappcappcappcappcap
4pcappcappcappcappcap
5pcappcappcappcappcap
6pcappcappcappcappcap
7pcappcappcappcappcap

参考

出典参照した箇所
RFC 4090 Fast Reroute Extensions to RSVP-TE for LSP Tunnels2節(SRLG Disjoint)、6.2節(バイパスの経路の計算、tail-endの1つ手前ではノード保護できない、SRLGを避けてもよい)
RFC 4203 OSPF Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)1.3節(Link TLVのsub-TLV 16 Shared Risk Link Group)

auto-tunnel backupの動き(作るバイパスの種類、NNHOPを使うこと、経路オプションの名前)とexclude srlgの選択肢は、検証機(XRd 26.1.1)での観測とヘルプの表示です。