Egress Validation in Label Switched Path Ping and Traceroute Mechanisms
Extracted elements (18)
A single Nil FEC is used in the MPLS echo request message irrespective of the number of segments in the label stack, because the Nil FEC's purpose is to hide transit tunnel information and avoid false negatives when FEC information is unknown. The Egress TLV supplements this by carrying only the destination address, enabling egress validation without exposing intermediate segment details.
The Egress TLV is designed to be silently droppable by transit nodes that do not recognize it, allowing the headend to continue sending echo requests with the TLV until the egress node processes it. This allows egress validation without requiring upgrades to intermediate transit nodes.
When all labels in a label stack are represented using the Nil FEC, there is no definite way for a receiving router to determine whether it is the intended egress, because the Nil FEC carries no information and no validation is performed. A misforwarded packet may still return an MPLS echo reply indicating success, producing a false positive.
The Egress TLV address for an Adj-SID last segment is derived from the node at the remote end of the corresponding adjacency; for a Binding SID last segment, it is derived from the last node of the path represented by the Binding SID.
When a transit node does not support the Egress TLV, it ignores the TLV and sets Best-return-code to 8 ('Label switched at stack-depth <RSC>') per normal Nil FEC processing. The headend continues sending echo requests with the Egress TLV with incremented TTL, allowing the egress to still perform validation if it supports the extension.
When the egress node does not support the Egress TLV extensions, egress validation is skipped and Best-return-code is set to 3 ('Replying router is an egress for the FEC at stack-depth <RSC>') with Best-rtn-subcode set to stack-depth, following the baseline Nil FEC behavior from RFC 8029.
If multiple Nil FECs are sent in traceroute mode, the last Nil FEC MUST correspond to the Egress TLV. The Label value in the last Nil FEC MAY be set to zero.
In ping mode, when the sender constructs an echo request with a Target FEC Stack TLV containing a single Nil FEC for the last segment of the SR Policy path, the sender MUST add an Egress TLV with the address obtained from the SR Policy Endpoint field. If the endpoint is unspecified or zero, the sender MUST use the address of the last segment of the SR Policy.
In traceroute mode, when the sender builds an echo request with a Target FEC Stack TLV containing a Nil FEC for the last segment of the SR Policy, the sender MUST add an Egress TLV with the address from the SR Policy Endpoint field. If the endpoint is zero or unspecified, the sender MUST use the address of the ultimate egress.
On receiving an MPLS echo request, if Label-stack-depth is 0 and the Target FEC Stack sub-TLV at FEC-stack-depth is Nil FEC, the receiver MUST perform an exact-match lookup of the Egress TLV Address field against locally configured interfaces or loopback addresses. On success, Best-return-code is set to 36; on failure, it is set to 10.
The Egress TLV, if present, MUST appear before the Target FEC Stack TLV in the MPLS echo request packet.
When a packet with multiple Nil FEC sub-TLVs reaches the egress (stack-R is empty or bottom-of-stack label is processed), all Nil FEC sub-TLVs MUST be removed and the Egress TLV MUST be validated.
The Egress TLV is an optional TLV added to MPLS echo request messages to carry the destination address of the SR Policy path. It enables egress validation when the entire label stack is represented using Nil FECs. The Address field carries the IPv4 or IPv6 address corresponding to the path egress or SR Policy Endpoint.
IANA has registered Egress TLV (Type 32771) in the 'TLVs' registry within the 'Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters' registry group.
IANA has registered Return Code value 36 with meaning 'Replying router is an egress for the address in the Egress TLV for the FEC at stack depth <RSC>' in the 'Return Codes' registry within the MPLS LSPs Ping Parameters registry group.
This document defines an additional TLV for MPLS LSP ping and conforms to the mechanisms defined in RFC 8029. All security considerations from RFC 8287 apply. No additional security challenges are introduced beyond those already addressed in RFC 8029 and RFC 8287.
Egress TLV processing at receiver: (1) Label-stack-depth > 0 and Nil FEC → return code 8 (transit); (2) Label-stack-depth = 0 and Nil FEC → address lookup: success yields return code 36 (egress confirmed), failure yields return code 10 (label mapping mismatch); (3) Multiple Nil FECs with stack-R empty → strip all Nil FECs and validate Egress TLV.
The Egress TLV (Type=32771) has a variable-length Address field: 4 octets for IPv4 addresses and 16 octets for IPv6 addresses. The Length field excludes the Type and Length fields themselves. The TLV MUST appear before the Target FEC Stack TLV in the MPLS echo request packet.