Mechanism for Performing Label Switched Path Ping (LSP Ping) over MPLS Tunnels
obsoleted by
- rfc-8029 — Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures
updated by
- rfc-7537 — IANA Registries for LSP Ping Code Points
updates
- rfc-4379 — Detecting Multi-Protocol Label Switched (MPLS) Data Plane Failures
Extracted elements (27)
RFC 4379 traceroute cannot perform complete FEC validation when a traced LSP crosses MPLS tunnels (e.g., LDP over RSVP) because transit nodes receive an echo request with labels for which no FEC is present in the Target FEC stack. Similarly, stitched LSPs change the FEC at stitching points, which RFC 4379 has no mechanism to communicate to the ingress.
The existing Downstream Mapping TLV (DSMAP) from RFC 4379 is not extensible: variable-length and optional fields cannot be added on a per-downstream basis. This made it impossible to convey tunnel or stitched-LSP FEC stack changes to the ingress. The new Downstream Detailed Mapping TLV (DDMAP) converts those fields into sub-TLVs, enabling the required extensibility.
For backward compatibility, if an echo request containing a DDMAP receives a Return Code 2 ('One or more TLVs was not understood'), the sender MAY resend with the deprecated DSMAP instead. When detailed reply is required, the sender may choose to ignore routers that do not support DDMAP.
A router MUST include the FEC Stack Change sub-TLV in the DDMAP when the downstream node in the echo reply has a different FEC stack than the FEC stack received in the echo request.
An intermediate router that forwards echo requests MUST NOT forward an echo request or echo reply containing a DDMAP TLV if it itself does not support that TLV.
If the echo request contains a Downstream Mapping TLV, a Downstream Detailed Mapping TLV MUST NOT be sent in the echo reply, to protect senders that do not support the new TLV.
If the outermost FEC of the Target FEC stack is the Nil FEC, the receiving node MUST skip Target FEC validation completely, on both transit and egress nodes, to support FEC hiding.
The Downstream Mapping TLV and the Downstream Detailed Mapping TLV MUST never be sent together in the same MPLS echo request or in the same MPLS echo reply.
The FEC TLV MUST be included in a FEC Stack Change sub-TLV when the operation type is PUSH; it MAY be included when the operation type is POP. A Nil FEC MAY be associated with a PUSH operation to hide FEC details.
The Return Code 'Label switched with FEC change' (value 15) MUST NOT be used if no FEC stack change sub-TLV is present in the DDMAP TLV(s).
The Return Code 'See DDM TLV for Return Code and Return Subcode' (value 14) MUST be used only in the MPLS echo reply message header and MUST NOT be set in the echo request; if set in an echo request it MUST be ignored.
When the DDMAP TLV is included in an echo reply, the Label Stack sub-TLV MUST be included. The label value MUST be the value used to switch data traffic, and MUST NOT reflect a hidden tunnel if the data-plane trace would not expire inside it.
Within the FEC Stack Change sub-TLVs, a sub-TLV with a PUSH operation MUST NOT be followed by a sub-TLV with a POP operation; only POP(s) followed by PUSH(es) is valid.
At stitching points, a node SHOULD include two FEC Stack Change sub-TLVs (one POP for the outgoing FEC and one PUSH for the incoming FEC) and SHOULD set the Return Code to 'Label switched with FEC change' (15) to signal FEC transition to the ingress.
On receipt of an IS_EGRESS (Return Code 3) reply, the ingress SHOULD check whether the Target FEC stack depth sent matches the depth being traced. If additional FECs were pushed, it pops entries and resends with the same TTL until a non-IS_EGRESS reply is received or all added FECs are exhausted, allowing reconstruction of hierarchical LSP topology.
The Downstream Detailed Mapping TLV (DDMAP, type 20) replaces the DSMAP and MAY be included in MPLS echo requests to request per-downstream detailed information in the echo reply. It carries MTU, Address Type, DS Flags, Downstream Address, Downstream Interface Address, per-downstream Return Code and Return Subcode, and a list of sub-TLVs.
Transit nodes that originate a new tunnel SHOULD add one FEC Stack Change sub-TLV of operation type PUSH per new tunnel to the DDMAP in the echo reply, and SHOULD fill in the remote peer address. If FEC hiding is desired, the Nil FEC is used and the remote peer address type MUST be set to Unspecified.
IANA assigned TLV type 20 to the Downstream Detailed Mapping TLV in the 'MPLS LSP Ping Parameters' registry, 'TLVs and sub-TLVs' sub-registry.
IANA assigned two new Return Code values in the 'MPLS LSP Ping Parameters' registry: value 14 ('See DDM TLV for Return Code and Return Subcode') and value 15 ('Label switched with FEC change').
IANA created a registry for the Sub-Type field of the DDMAP TLV (range 0–65535). Sub-types 1 (Multipath data), 2 (Label stack), and 3 (FEC stack change) were assigned. Ranges 0–16383 and 32768–49161 require Standards Action; 16384–31743 and 49162–64511 require Specification Required; 31744–32767 and 64512–65535 are Vendor Private Use.
The Nil FEC can be used to hide the details of a new outer LSP while still allowing the trace to progress without false negatives; all transit nodes of the hidden tunnel perform minimal validations on received MPLS echo requests. The remote peer address type MUST be set to Unspecified when using Nil FEC for hiding.
To prevent tracing inside a tunnel, operators can use the Pipe Model (RFC 3443) by not propagating the MPLS TTL into the outer tunnel at its start, causing echo request packets to never expire inside the tunnel and thus preventing the outer tunnel from being traced.
The ingress processes FEC Stack Change sub-TLVs sequentially: it POPs entries from the FEC stack for POP operations and PUSHes entries for PUSH operations, tracking push_seen to enforce the no-POP-after-PUSH rule. If the resulting FEC stack depth reaches zero or the ordering rule is violated, the echo reply is dropped and the original FEC stack is restored.
The DDMAP TLV wire format is a 32-bit-aligned structure: 16-bit MTU, 8-bit Address Type, 8-bit DS Flags, variable-length Downstream Address (4 or 16 octets), variable-length Downstream Interface Address (4 or 16 octets), 8-bit Return Code, 8-bit Return Subcode, 16-bit Sub-tlv Length, followed by sub-TLVs.
The FEC Stack Change sub-TLV (sub-type 3) contains an 8-bit Operation Type (1=Push, 2=Pop), 8-bit Address Type, 8-bit FEC-tlv length, 8-bit Reserved (MBZ), variable-length Remote Peer Address (0, 4, or 16 octets), and an optional FEC TLV.
The Label Stack sub-TLV (sub-type 2) carries one or more 24-bit Downstream Label / 8-bit Protocol pairs. The Downstream Label uses MPLS label format minus TTL: label in bits 0–19, TC in bits 20–22, S-bit in bit 23. The number of entries is inferred from the sub-TLV data length.
The Multipath Data sub-TLV (sub-type 1) encodes an 8-bit Multipath Type, 16-bit Multipath Length, 8-bit Reserved (MBZ), and variable-length Multipath Information. Fields and usage are as defined in RFC 4379.