Node Protection for MPLS TE Tunnels
Link Protection guarantees protection against link-failures. The failure could be due to link itself or failure of the node. This article covers node protection (also called NNHOP or next next-hop FRR) for MPLS TE tunnels which takes care of link failure as well as node failure.
In figure 1, a DiffServ TE is setup between PE1 and PE6 routers with a reservation of 8Mbps for Class Type 0, along the path PE1-P2-P4-P5-PE6. This TE is protected against failure of P4 router by a backup tunnel taking the path P2-P3-P5 that merges back into main TE path at P5 router (Merge Point MP). When P4 router fails, traffic is forwarded onto backup path at P2 router (Point of Local Repair PLR) and merges back to main path at P5 router where it continues on its normal path to PE6 router.
Before Failure
The backup path must be ready before the failure occurs at P4 router. The backup path is configured at P2 router to P5 router along the path P2-P3-P5, avoiding P4 router. This backup path is also configured as a DS-TE tunnel, otherwise traffic will not be forwarded over backup tunnel during failover if the backup path does not meet the requirements like bandwidth and Class Type. The backup tunnel is configured as below:
Backup tunnel at P2 router
interface fastethernet 1/1 ip address 10.24.1.1 255.255.255.0 mpls traffic-eng tunnels mpls traffic-eng backup-path tunnel 100 ip rsvp bandwidth rdm bc0 1000 bc1 1000!interface tunnel 100 ip unnumbered Loopback 0 tunnel mode mpls traffic-eng tunnel destination 5.5.5.5 tunnel mpls traffic-eng bandwidth 10000 class-type 0 tunnel mpls traffic-eng path-option 1 explicit name BACKUP_PATH tunnel mpls traffic-eng record-route!ip explicit-path name BACKUP_PATH next-address 3.3.3.3 next-address 5.5.5.5!At PE1 router, node protection for a TE tunnel is enabled using tunnel mpls traffic-eng fast-reroute node-protect command. The configuration of TE tunnel is as below:
Primary TE tunnel on PE1 router
interface tunnel 10 ip unnumbered Loopback 0 tunnel mode mpls traffic-eng tunnel destination 6.6.6.6 tunnel mpls traffic-eng bandwidth 8000 class-type 0 tunnel mpls traffic-eng path-option 1 explicit name PATH tunnel mpls traffic-eng fast-reroute node-protect tunnel mpls traffic-eng record-route!ip explicit-path name PATH next-address 2.2.2.2 next-address 4.4.4.4 next-address 5.5.5.5 next-address 6.6.6.6!When PE1 router signals RSVP PATH message, it sets the node protection desired flag and the label recording desired flag in the Session_Attribute flag. The label recording flag indicates that the label information should be included in the RRO sub-object called Label sub-object. This way the label information is available to the PLR.
The following output (debug ip rsvp dump-messages path command) shows the PATH message sent by PE1 router along the path to PE6 router.
PATH message from PE1 router
*Aug 27 04:35:24.135: Outgoing Path:*Aug 27 04:35:24.135:   version:1 flags:0000 cksum:F063 ttl:255 reserved:0 length:244*Aug 27 04:35:24.139:  SESSION              type 7 length 16:*Aug 27 04:35:24.139:   Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1*Aug 27 04:35:24.139:  HOP                  type 1 length 12:*Aug 27 04:35:24.139:   Hop Addr: 10.12.1.1 LIH: 0x09000406*Aug 27 04:35:24.143:  TIME_VALUES          type 1 length 8 :*Aug 27 04:35:24.143:   Refresh Period (msec): 30000*Aug 27 04:35:24.143:  EXPLICIT_ROUTE       type 1 length 68:*Aug 27 04:35:24.143:   10.12.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.147:   10.24.1.1 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.147:   10.24.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.147:   10.45.1.1 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.147:   10.45.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.151:   10.56.1.1 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.151:   10.56.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.151:   6.6.6.6 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:24.151:  LABEL_REQUEST        type 1 length 8 :*Aug 27 04:35:24.155:   Layer 3 protocol ID: 2048*Aug 27 04:35:24.155:  SESSION_ATTRIBUTE    type 7 length 16:*Aug 27 04:35:24.155:   Setup Prio: 7, Holding Prio: 7*Aug 27 04:35:24.155:   Flags: (0x17) Local Prot desired, Label Recording, SE Style*Aug 27 04:35:24.159:                 Node Prot desired*Aug 27 04:35:24.159:   Session Name: PE1_t10*Aug 27 04:35:24.159:  SENDER_TEMPLATE      type 7 length 12:*Aug 27 04:35:24.159:   Tun Sender: 1.1.1.1  LSP ID: 30*Aug 27 04:35:24.163:  SENDER_TSPEC         type 2 length 36:*Aug 27 04:35:24.163:   version=0, length in words=7*Aug 27 04:35:24.163:   Token bucket fragment (service_id=1, length=6 words*Aug 27 04:35:24.163:     parameter id=127, flags=0, parameter length=5*Aug 27 04:35:24.163:     average rate=1000000 bytes/sec,burst depth=1000 bytes*Aug 27 04:35:24.167:     peak rate   =1000000 bytes/sec*Aug 27 04:35:24.167:     min unit=0 bytes, max pkt size=2147483647 bytes*Aug 27 04:35:24.167:  ADSPEC               type 2 length 48:*Aug 27 04:35:24.167:  version=0  length in words=10*Aug 27 04:35:24.171:  General Parameters  break bit=0  service length=8*Aug 27 04:35:24.171:                                         IS Hops:1*Aug 27 04:35:24.171:              Minimum Path Bandwidth (bytes/sec):12500000*Aug 27 04:35:24.171:                     Path Latency (microseconds):0*Aug 27 04:35:24.171:                                        Path MTU:1500*Aug 27 04:35:24.175:  Controlled Load Service  break bit=0  service length=0*Aug 27 04:35:24.175:  RECORD_ROUTE         type 1 length 12:*Aug 27 04:35:24.175:   10.12.1.1/32, Flags:0x0 (No Local Protection)When P2 router (also PLR) receives this PATH message from PE1 router, it identifies that node protection is desired. It sets the Local Protection Available flag in the RRO object in the outgoing PATH message, and sends along the path to PE6 router. In this way, all routers along the path are aware that node protection is available at P2 router, except PE1 router, at this stage. The following output shows the PATH message sent by P2 router to P4 router.
PATH message sent by P2 router
*Aug 27 04:35:25.043: Outgoing Path:*Aug 27 04:35:25.043:   version:1 flags:0000 cksum:1B8D ttl:254 reserved:0 length:236*Aug 27 04:35:25.043:  SESSION              type 7 length 16:*Aug 27 04:35:25.043:   Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1*Aug 27 04:35:25.047:  HOP                  type 1 length 12:*Aug 27 04:35:25.047:   Hop Addr: 10.24.1.1 LIH: 0x0A000413*Aug 27 04:35:25.047:  TIME_VALUES          type 1 length 8 :*Aug 27 04:35:25.047:   Refresh Period (msec): 30000*Aug 27 04:35:25.051:  EXPLICIT_ROUTE       type 1 length 52:*Aug 27 04:35:25.051:   10.24.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.051:   10.45.1.1 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.051:   10.45.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.051:   10.56.1.1 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.051:   10.56.1.2 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.051:   6.6.6.6 (Strict IPv4 Prefix, 8 bytes, /32)*Aug 27 04:35:25.057:  LABEL_REQUEST        type 1 length 8 :*Aug 27 04:35:25.057:   Layer 3 protocol ID: 2048*Aug 27 04:35:25.057:  SESSION_ATTRIBUTE    type 7 length 16:*Aug 27 04:35:25.057:   Setup Prio: 7, Holding Prio: 7*Aug 27 04:35:25.057:   Flags: (0x17) Local Prot desired, Label Recording, SE Style*Aug 27 04:35:25.057:                 Node Prot desired*Aug 27 04:35:25.057:   Session Name: PE1_t10*Aug 27 04:35:25.059:  SENDER_TEMPLATE      type 7 length 12:*Aug 27 04:35:25.059:   Tun Sender: 1.1.1.1  LSP ID: 248*Aug 27 04:35:26.001:  SENDER_TSPEC         type 2 length 36:*Aug 27 04:35:26.001:   version=0, length in words=7*Aug 27 04:35:26.001:   Token bucket fragment (service_id=1, length=6 words*Aug 27 04:35:26.001:     parameter id=127, flags=0, parameter length=5*Aug 27 04:35:26.001:     average rate=1000000 bytes/sec, burst depth=1000 bytes*Aug 27 04:35:26.001:     peak rate   =1000000 bytes/sec*Aug 27 04:35:26.001:     min unit=0 bytes, max pkt size=2147483647 bytes*Aug 27 04:35:26.006:  ADSPEC               type 2 length 48:*Aug 27 04:35:26.006:  version=0  length in words=10*Aug 27 04:35:26.006:  General Parameters  break bit=0  service length=8*Aug 27 04:35:26.006:                                         IS Hops:2*Aug 27 04:35:26.006:              Minimum Path Bandwidth (bytes/sec):12500000*Aug 27 04:35:26.006:                     Path Latency (microseconds):0*Aug 27 04:35:26.006:                                        Path MTU:1500*Aug 27 04:35:26.006:  Controlled Load Service  break bit=0  service length=0*Aug 27 04:35:26.009:  RECORD_ROUTE         type 1 length 20:*Aug 27 04:35:26.009:   10.24.1.1/32, Flags:0x9 (Local Prot Avail/to NNHOP)*Aug 27 04:35:26.009:   10.12.1.1/32, Flags:0x0 (No Local Protection)When PE router agrees to setup the path, it sends a RESV message towards PE1 router with a label inside the Label object. When the RESV message arrives at P2 router, it sends out a RESV message to PE1 router with Local Protection Available flag set in the RRO object. It also sets the node-id flag for 2.2.2.2/32 indicating protection is available at this node. The following output shows the RESV message sent to PE1 router:
RESV message sent by P2 to PE1 router
*Aug 27 04:35:28.935: Outgoing Resv:*Aug 27 04:35:28.935:   version:1 flags:0000 cksum:E6A6 ttl:255 reserved:0 length:240*Aug 27 04:35:28.939:  SESSION              type 7 length 16:*Aug 27 04:35:28.939:   Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1*Aug 27 04:35:28.939:  HOP                  type 1 length 12:*Aug 27 04:35:28.943:   Hop Addr: 10.12.1.2 LIH: 0x09000406*Aug 27 04:35:28.943:  TIME_VALUES          type 1 length 8 :*Aug 27 04:35:28.943:   Refresh Period (msec): 30000*Aug 27 04:35:28.943:  STYLE                type 1 length 8 :*Aug 27 04:35:28.943:   Shared-Explicit (SE)*Aug 27 04:35:28.947:  FLOWSPEC             type 2 length 36:*Aug 27 04:35:28.947:     version = 0 length in words = 7*Aug 27 04:35:28.947:     service id = 5, service length = 6*Aug 27 04:35:28.947:     tspec parameter id = 127, flags = 0,length = 5*Aug 27 04:35:28.951:     average rate = 1000000 bytes/sec, burst depth = 1000 bytes*Aug 27 04:35:28.951:     peak rate    = 1000000 bytes/sec*Aug 27 04:35:28.951:     min unit = 0 bytes,max pkt size = 1500 bytes*Aug 27 04:35:28.951:  FILTER_SPEC          type 7 length 12:*Aug 27 04:35:28.951:   Tun Sender: 1.1.1.1, LSP ID: 30*Aug 27 04:35:28.955:  LABEL                type 1 length 8 :*Aug 27 04:35:28.955:   Labels: 17*Aug 27 04:35:28.955:  RECORD_ROUTE         type 1 length 132:*Aug 27 04:35:28.955:   2.2.2.2/32, Flags:0x29 (Local Prot Avail/to NNHOP, Node-id)*Aug 27 04:35:28.959:     Label subobject: Flags 0x1, C-Type 1, Label 17*Aug 27 04:35:28.959:   10.24.1.1/32, Flags:0x9 (Local Prot Avail/to NNHOP)*Aug 27 04:35:28.963:     Label subobject: Flags 0x1, C-Type 1, Label 17*Aug 27 04:35:28.963:   4.4.4.4/32, Flags:0x20 (No Local Protection, Node-id)*Aug 27 04:35:28.967:     Label subobject: Flags 0x1, C-Type 1, Label 23*Aug 27 04:35:28.967:   10.45.1.1/32, Flags:0x0 (No Local Protection)*Aug 27 04:35:28.971:     Label subobject: Flags 0x1, C-Type 1, Label 23*Aug 27 04:35:28.971:   5.5.5.5/32, Flags:0x20 (No Local Protection, Node-id)*Aug 27 04:35:28.975:     Label subobject: Flags 0x1, C-Type 1, Label 24*Aug 27 04:35:28.975:   10.56.1.1/32, Flags:0x0 (No Local Protection)*Aug 27 04:35:28.979:     Label subobject: Flags 0x1, C-Type 1, Label 24*Aug 27 04:35:28.979:   6.6.6.6/32, Flags:0x20 (No Local Protection, Node-id)*Aug 27 04:35:28.983:     Label subobject: Flags 0x1, C-Type 1, Label 0*Aug 27 04:35:28.983:   10.56.1.2/32, Flags:0x0 (No Local Protection)*Aug 27 04:35:28.987:     Label subobject: Flags 0x1, C-Type 1, Label 0Notice that RRO object carries a sub-label object which carries a label value. This RESV message is received by PE1 router and now it knows that node protection is available at P2 router.
The following output shows the reservation information available to PE1 router.
show ip rsvp reservation detail
PE1# show ip rsvp reservation detailReservation:  Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1  Tun Sender: 1.1.1.1  LSP ID: 30  Next Hop: 10.12.1.2 on FastEthernet1/0  Label: 17 (outgoing)  Reservation Style is Shared-Explicit, QoS Service is Controlled-Load  Resv ID handle: 0D00040B.  Created: 04:20:04 UTC Fri Aug 27 2010  Average Bitrate is 8M bits/sec, Maximum Burst is 1K bytes  Min Policed Unit: 0 bytes, Max Pkt Size: 1500 bytes  RRO:    2.2.2.2/32, Flags:0x29 (Local Prot Avail/to NNHOP, Node-id)      Label subobject: Flags 0x1, C-Type 1, Label 17    10.24.1.1/32, Flags:0x9 (Local Prot Avail/to NNHOP)      Label subobject: Flags 0x1, C-Type 1, Label 17    4.4.4.4/32, Flags:0x20 (No Local Protection, Node-id)      Label subobject: Flags 0x1, C-Type 1, Label 23    10.45.1.1/32, Flags:0x0 (No Local Protection)      Label subobject: Flags 0x1, C-Type 1, Label 23    5.5.5.5/32, Flags:0x20 (No Local Protection, Node-id)      Label subobject: Flags 0x1, C-Type 1, Label 24    10.56.1.1/32, Flags:0x0 (No Local Protection)      Label subobject: Flags 0x1, C-Type 1, Label 24    6.6.6.6/32, Flags:0x20 (No Local Protection, Node-id)      Label subobject: Flags 0x1, C-Type 1, Label 0    10.56.1.2/32, Flags:0x0 (No Local Protection)      Label subobject: Flags 0x1, C-Type 1, Label 0  Status:  Policy: Accepted. Policy source(s): MPLS/TEThe following output shows the path information sent by P2 router along the path to PE6 router. Notice that the backup tunnel status is ready.
show ip rsvp sender detail
P2# show ip rsvp sender detailPATH:  Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1  Tun Sender: 1.1.1.1  LSP ID: 30  Path refreshes:    arriving: from PHOP 10.12.1.1 on Fa1/0 every 30000 msecs. Timeout in 201 sec    sent:     to   NHOP 10.24.1.2 on FastEthernet1/1  Session Attr:    Setup Prio: 7, Holding Prio: 7    Flags: (0x17) Local Prot desired, Label Recording, SE Style                  Node Prot desired    Session Name: PE1_t10  ERO: (incoming)    10.12.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    10.24.1.1 (Strict IPv4 Prefix, 8 bytes, /32)    10.24.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    10.45.1.1 (Strict IPv4 Prefix, 8 bytes, /32)    10.45.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    10.56.1.1 (Strict IPv4 Prefix, 8 bytes, /32)    10.56.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    6.6.6.6 (Strict IPv4 Prefix, 8 bytes, /32)  ERO: (outgoing)    10.24.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    10.45.1.1 (Strict IPv4 Prefix, 8 bytes, /32)    10.45.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    10.56.1.1 (Strict IPv4 Prefix, 8 bytes, /32)    10.56.1.2 (Strict IPv4 Prefix, 8 bytes, /32)    6.6.6.6 (Strict IPv4 Prefix, 8 bytes, /32)  RRO:    10.12.1.1/32, Flags:0x0 (No Local Protection)  Class-Type: None  Traffic params - Rate: 8M bits/sec, Max. burst: 1K bytes    Min Policed Unit: 0 bytes, Max Pkt Size 2147483647 bytes  Fast-Reroute Backup info:    Inbound  FRR: Not active    Outbound FRR: Ready -- backup tunnel selected      Backup Tunnel: Tu100      (label 24)      Bkup Sender Template:        Tun Sender: 10.23.1.1  LSP ID: 30      Bkup FilerSpec:        Tun Sender: 10.23.1.1, LSP ID: 30  Path ID handle: 3A00040E.  Incoming policy: Accepted. Policy source(s): MPLS/TE  Status:  Output on FastEthernet1/1. Policy status: Forwarding. Handle: BD00040B    Policy source(s): MPLS/TEThe following traceroute from PE1 router to PE6 router shows the labels imposed along the path.
Traceroute 6.6.6.6
PE1# traceroute 6.6.6.6Type escape sequence to abort.Tracing the route to 6.6.6.6  1 10.12.1.2 [MPLS: Label 17 Exp 0] 216 msec 288 msec 324 msec  2 10.24.1.2 [MPLS: Label 23 Exp 0] 248 msec 256 msec 244 msec  3 10.45.1.2 [MPLS: Label 24 Exp 0] 384 msec 216 msec 244 msec  4 10.56.1.2 236 msec 208 msec *After Failure
Like in link protection mechanism, when P2 router notices the failure of P4 router (or the link connecting P2 to P4), it suppresses any event notification to PE1 router in order to prevent the teardown of the LSP. Instead, P2 router sends a Path Error message to PE1 router with Notify error code and Tunnel locally repaired sub-code, and the node where error is detected. The outbound FRR status changes to Active on P2 router.
P2 sends a Path Error message to PE1 router
*Aug 27 04:41:30.455: Outgoing PathError:*Aug 27 04:41:30.455:   version:1 flags:0000 cksum:5ABF ttl:255 reserved:0 length:132*Aug 27 04:41:30.459:  SESSION              type 7 length 16:*Aug 27 04:41:30.459:   Tun Dest:   6.6.6.6  Tun ID: 10  Ext Tun ID: 1.1.1.1*Aug 27 04:41:30.463:  ERROR_SPEC           type 1 length 12:*Aug 27 04:41:30.463:   Error Node: 10.12.1.2*Aug 27 04:41:30.463:   Error Code: 25 (Notify)*Aug 27 04:41:30.463:   Error Value: 0x3  (Tunnel locally repaired)*Aug 27 04:41:30.467:   Flags: 0x0*Aug 27 04:41:30.467:  SENDER_TEMPLATE      type 7 length 12:*Aug 27 04:41:30.467:   Tun Sender: 1.1.1.1  LSP ID: 30*Aug 27 04:41:30.467:  SENDER_TSPEC         type 2 length 36:*Aug 27 04:41:30.471:   version=0, length in words=7*Aug 27 04:41:30.471:   Token bucket fragment (service_id=1, length=6 words*Aug 27 04:41:30.471:     parameter id=127, flags=0, parameter length=5*Aug 27 04:41:30.471:     average rate=1000000 bytes/sec, burst depth=1000 bytes*Aug 27 04:41:30.475:     peak rate   =1000000 bytes/sec*Aug 27 04:41:30.475:     min unit=0 bytes, max pkt size=2147483647 bytes*Aug 27 04:41:30.475:  ADSPEC               type 2 length 48:*Aug 27 04:41:30.475:  version=0  length in words=10*Aug 27 04:41:30.475:  General Parameters  break bit=0  service length=8*Aug 27 04:41:30.479:                                         IS Hops:1*Aug 27 04:41:30.479:              Minimum Path Bandwidth (bytes/sec):12500000*Aug 27 04:41:30.479:                     Path Latency (microseconds):0*Aug 27 04:41:30.479:                                        Path MTU:1500*Aug 27 04:41:30.483:  Controlled Load Service  break bit=0  service length=0PE1 router realizes change in the resources upon the receipt of Path Error message from P2 router, and sends out a PATH message in order to re-route to alternate path. It receives RESV message with a different path in RRO due to failover to backup path.
Tunnel status on PE1 router
PE1# show mpls traffic-eng tunnels tunnel 10Name: PE1_t10                             (Tunnel10) Destination: 6.6.6.6  Status:    Admin: up         Oper: up     Path: valid       Signalling: connected    path option 1, type explicit PATH (Basis for Setup, path weight 4)        Change in required resources detected: reroute pending        Currently Signalled Parameters:          Bandwidth: 8000     kbps (CT0)  Priority: 7  7   Affinity: 0x0/0xFFFF          Metric Type: TE (default)  Config Parameters:    Bandwidth: 8000     kbps (CT0)  Priority: 7  7   Affinity: 0x0/0xFFFF    Metric Type: TE (default)    AutoRoute announce: enabled  LockDown: disabled Loadshare: 8000     bw-based    auto-bw: disabled  Active Path Option Parameters:    State: explicit path option 1 is active    BandwidthOverride: disabled  LockDown: disabled  Verbatim: disabled  InLabel  :  -  OutLabel : FastEthernet1/0, 17  Next Hop : 10.12.1.2  RSVP Signalling Info:       Src 1.1.1.1, Dst 6.6.6.6, Tun_Id 10, Tun_Instance 30    RSVP Path Info:      My Address: 10.12.1.1      Explicit Route: 10.12.1.2 10.24.1.1 10.24.1.2 10.45.1.1                      10.45.1.2 10.56.1.1 10.56.1.2 6.6.6.6      Record   Route:      Tspec: ave rate=8000 kbits, burst=1000 bytes, peak rate=8000 kbits    RSVP Resv Info:      Record   Route:  2.2.2.2(17) 10.23.1.1(17)                       5.5.5.5(24) 10.56.1.1(24)                       6.6.6.6(0) 10.56.1.2(0)      Fspec: ave rate=8000 kbits, burst=1000 bytes, peak rate=8000 kbits  Shortest Unconstrained Path Info:    Path Weight: 22 (TE)    Explicit Route: 10.12.1.1 10.12.1.2 10.23.1.1 10.23.1.2                    10.35.1.1 10.35.1.2 10.56.1.1 10.56.1.2                    6.6.6.6  History:    Tunnel:      Time since created: 47 minutes, 45 seconds      Time since path change: 45 minutes, 6 seconds      Number of LSP IDs (Tun_Instances) used: 30    Current LSP: [ID: 30]      Uptime: 29 minutes, 24 seconds      Selection: reoptimization    Prior LSP: [ID: 25]      ID: path option unknown      Removal Trigger: re-route path errorThe traceroute after failure shows P2 router pushing an extra label onto the stack. This label is what P5 router (MP) expects for traffic arriving to it.
Traceroute 6.6.6.6
PE1# traceroute 6.6.6.6Type escape sequence to abort.Tracing the route to 6.6.6.6  1 10.12.1.2 [MPLS: Label 17 Exp 0] 212 msec 244 msec 200 msec  2 10.23.1.2 [MPLS: Labels 18/24 Exp 0] 312 msec 256 msec 196 msec  3 10.35.1.2 [MPLS: Label 24 Exp 0] 216 msec 256 msec 324 msec  4 10.56.1.2 312 msec 216 msec *To summarize, node protection provides protection against link failure as well as node failure. Label recording is required because the PLR must know the label MP expects the traffic to arrive with.