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 1099 | mpls traffic-eng | 自動で作るバイパスのトンネル番号の範囲 |
auto-tunnel backup | mpls 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<番号> | 10 | SRLGを避ける指定(exclude srlg)があるとき |
autob_nhop_te<番号> | 20 | SRLGを避けないとき(既定) |
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 srlg | SRLGを避けるのが必須 |
exclude srlg preferred | 避けるのを優先するが、必須ではない |
exclude srlg weighted | SRLGを共有するリンクのコストを上乗せして計算する |
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 / PE2 | 11.11.11.11 / 22.22.22.22 | head-end / tail-end |
| P1 | 1.1.1.1 | 行きのPLR(P1 - P2を守る) |
| P2 | 2.2.2.2 | 行きのMP、戻りのPLR(P2 - P1を守る) |
| P5 | 5.5.5.5 | P2 - P5の端。P2 - P5はP1 - P2と同じSRLG 100 |
| P3 / P4 / P6 | 3.3.3.3 / 4.4.4.4 / 6.6.6.6 | バイパスが通る |
| CE1 / CE2 | 101.101.101.101 / 102.102.102.102 | 192.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の疎通 |
| 1 | P1とP2にauto-tunnel backup | NHOPとNNHOPが作られ、P1ではNNHOPが使われる。P2のNNHOPは上がらない |
| 2 | P1とP2にnhop-only | NNHOPが消え、NHOPが使われる |
| 3 | P1 - P2とP2 - P5にSRLG 100 | LSUにsub-TLV 16。バイパスはP5 - P2を通ったまま |
| 4 | P1 - P2とP2 - P5を同時にshutdown(SRLGを避けないバイパス) | バイパスも一緒に切れる。CEの断と、落ちた方向 |
| 5 | 復旧し、P1とP2にexclude srlg、再最適化で上の段へ | バイパスがP6 - P3経由に変わる |
| 6 | P1 - P2とP2 - P5を同時にshutdown(SRLGを避けたバイパス) | 行き・戻りとも迂回できる。CEの断 |
| 7 | 撤去(最終状態) |
auto-tunnel backup(STEP 1・2)
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
!
!
endRP/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/1tunnel-te1000がNNHOP(P2を避けて3.3.3.3へ)、tunnel-te1001がNHOP(2.2.2.2へ)です。保護しているのはtunnel-te1000の方です。
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+SRLGRP/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です。
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明示経路はP2を通らずにP3へ向かい、名前の最後に避けるノード(2.2.2.2)が入っています。フラグは0x04(SE Style)だけで、バイパス自身は保護を求めません。
P2は戻り方向のPLRです。P2のNNHOPはP1を避けてPE1へ向かう必要がありますが、PE1にはP1を通らない経路がありません。
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/0NNHOPのtunnel-te1000は上がらず、NHOPのtunnel-te1001が保護しています。STEP 2でnhop-onlyを付けました。
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
!
!
!
endRP/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/1RP/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)で撤去されました。
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. SRLG(STEP 3)
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
!
!
endP1がP1 - P2のLink TLVを載せて送ったLSU(P1 - P2間のNo.7)です。
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 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]: 100SRLGは配られましたが、バイパスは変わりません。
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] 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)
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 ms16発が落ちました。 キャプチャーを方向ごとに分けると、行きのrequestは300発すべてP1が転送していて、落ちた16発はすべて戻りのreplyでした。
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 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も切れています。
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] 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 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.2P5(10.2.5.5)からPathErr(24,5)を受けて、P1はバイパスを04:22:20にP6 - P3経由で張り直しました。行きのパケットは、この新しいバイパスを通りました(P6 - P3間のNo.21)。
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)真ん中のラベル24002はP2のラベルです。P3からP2へ戻り、P2から上の段に乗ります。一方、戻り方向のPLRのP2には、使えるバイパスがありません。
RP/0/RP0/CPU0:P2#show mpls traffic-eng fast-reroute database
Tue Sep 15 04:22:28.757 UTC 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 errorPE2のトンネルはTunnel has been up forが04:22:20から数え直され、一度落ちて張り直されました。 戻りのreplyは、この張り直しが終わるまで届きませんでした。
SRLGを避けたバイパス(STEP 5・6)
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
!
!
!
endName: 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] 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.2RP/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本を同時に落としました。
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が転送していました。
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 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 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 1000RP/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)です。
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)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)どちらも3段で、真ん中はMPのラベル(行きはP2の24002、戻りはP1の24003)です。
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 completedPE2のトンネルは04:22:20から続いたまま、reoptimization completedで新しいLSPに入れ替わりました。
STEPごとの結果
| STEP | P1のバイパス | CE1 → CE2 | 落ちたパケット | トンネル |
|---|---|---|---|---|
| 4 | SRLGを避けない(P5 - P2経由) | 284/300 | 戻りのreply 16発(行きは張り直したバイパスで守られた) | 行きは落ちない、戻り(PE2)は落ちて張り直し |
| 6 | SRLGを避ける(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.txt | show version / show route / show ospf database opaque-area / show mpls traffic-eng tunnels系 / show mpls traffic-eng fast-reroute database・log / show mpls traffic-eng tunnels backup・protection / 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.txt | ping / traceroute mpls traffic-eng tunnel-te 0(PE1・PE2) |
..._trace.txt | show mpls traffic-eng trace head-end / link / bselectとshow rsvp trace signalling(コア8台) |
..._commit.cfg | そのSTEPで実際にcommitした設定だけ。 設定を変えたルータの分のみ。STEP 5のP1・P2と、STEP 7のP1・P2・P5は2回commitしたので、2回目の分だけが残っています |
..._failping.txt | STEP 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出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | - | - | trace | - |
| P2 | show | log | run | - | - | trace | - |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | cfg |
| CE2 | show | log | run | ping | - | - | - |
STEP 1:P1とP2にauto-tunnel backup
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 2:P1とP2にnhop-only
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | - |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 3:P1 - P2とP2 - P5にSRLG 100
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | cfg |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 4:P1 - P2とP2 - P5を同時にshutdown(SRLGを避けないバイパス)
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | cfg |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
追加の記録: CE1 failping / PE1 debug / P1 debug / P2 debug
STEP 5:復旧し、P1とP2にexclude srlg、再最適化で上の段へ
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | cfg |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
STEP 6:P1 - P2とP2 - P5を同時にshutdown(SRLGを避けたバイパス)
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | - |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | cfg |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | - |
| CE2 | show | log | run | ping | - | - | - |
追加の記録: CE1 failping / PE1 debug / P1 debug / P2 debug
STEP 7:撤去(最終状態)
| ルータ | show出力 | syslog | running-config | ping | OAM | trace | commit |
|---|---|---|---|---|---|---|---|
| CE1 | show | log | run | ping | - | - | - |
| PE1 | show | log | run | ping | oam | trace | cfg |
| P1 | show | log | run | - | - | trace | cfg |
| P2 | show | log | run | - | - | trace | cfg |
| P3 | show | log | run | - | - | trace | - |
| P4 | show | log | run | - | - | trace | - |
| P5 | show | log | run | - | - | trace | cfg |
| P6 | show | log | run | - | - | trace | - |
| PE2 | show | log | run | ping | oam | trace | cfg |
| CE2 | show | log | run | ping | - | - | - |
パケットキャプチャーはSTEPごとに、次の5本のリンクで取得しています。
| STEP | PE1 - P1間 | P1 - P2間 | P1 - P4間 | P2 - P5間 | P3 - P6間 |
|---|---|---|---|---|---|
| 0 | pcap | pcap | pcap | pcap | pcap |
| 1 | pcap | pcap | pcap | pcap | pcap |
| 2 | pcap | pcap | pcap | pcap | pcap |
| 3 | pcap | pcap | pcap | pcap | pcap |
| 4 | pcap | pcap | pcap | pcap | pcap |
| 5 | pcap | pcap | pcap | pcap | pcap |
| 6 | pcap | pcap | pcap | pcap | pcap |
| 7 | pcap | pcap | pcap | pcap | pcap |
参考
| 出典 | 参照した箇所 |
|---|---|
| RFC 4090 Fast Reroute Extensions to RSVP-TE for LSP Tunnels | 2節(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)での観測とヘルプの表示です。
- MPLSとは
- MPLSラベルとラベルスタック
- MPLSのラベル操作(push / swap / pop)とPHP
- MPLSのTTL処理とMTU
- LDPとは
- LDPのラベル配布モードとラベルスペース
- LDP-IGPシンクロナイゼーションとLDPセッション保護
- LDPのラベル広告制御(フィルタリング)
- LDPのセッション認証(TCP MD5)
- MPLSのOAM(LSP Ping / LSP Traceroute)
- MPLS TE(RSVP-TE)とは
- MPLS TEのCSPFと経路の制約(帯域 / affinity / TEメトリック)
- MPLS TEトンネルへのトラフィック誘導
- MPLS TEのFRR(リンク保護とノード保護)
- MPLS TEのFRR(auto-tunnel backupとSRLG)