Label Switched Path (LSP) Ping and Traceroute Multipath Support for Link Aggregation Group (LAG) Interfaces
updated by
- rfc-9041 — Updating the MPLS Label Switched Paths (LSPs) Ping Parameters IANA Registry
updates
- rfc-8029 — Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures
Extracted elements (28)
Existing MPLS LSP Ping and Traceroute tools were not designed to discover and exercise specific paths of L2 ECMP over LAG interfaces, creating a diagnostic blind spot where label-switching failures on specific LAG member links can go undetected if the echo request happens to load-balance to a working member link.
The LSR Capability TLV was introduced to allow the initiator LSR to deterministically disambiguate whether a responder's echo reply reflects full feature support, partial feature support, or no support for the LAG extensions, rather than guessing based on reply contents alone. This generalized mechanism is intended to be reusable for future MPLS LSP Ping extensions.
The mechanisms defined in this document do not apply when an LSP is pinned to a particular LAG member (i.e., the LAG is not treated as one logical interface by the LSP), and are not reliably applicable when an intermediate L2 switch exists between routers in the LAG path.
Usage of IPv6 Unnumbered in the Detailed Interface and Label Stack TLV has the same known issue as in RFC 8029 described in Section 3.4.2 of RFC 7439; a solution should be considered and applied to both documents.
When a responder LSR does not recognize the LSR Capability TLV, it must send an echo reply with return code 'One or more of the TLVs was not understood', after which the initiator LSR can retry without the LSR Capability TLV.
A responder LSR MUST NOT insert more than one instance of the Detailed Interface and Label Stack TLV into the MPLS echo reply message.
An MPLS echo request or reply message MUST NOT include more than one LSR Capability TLV. The U and D flags in the LSR Capability TLV MUST be cleared when sending the TLV in an echo request and ignored on receipt.
For each downstream LAG interface, the responder LSR MUST include a DDMAP TLV in the echo reply and MUST set the LAG Description Indicator flag (G) in the DS Flags field of that DDMAP TLV.
For each LAG member link, the responder MUST add a Local Interface Index Sub-TLV with the LAG Member Link Indicator flag set, and MUST add a Multipath Data Sub-TLV if multipath information was requested in the received DDMAP TLV.
In the MPLS echo reply, the G flag (LAG Description Indicator) in the DDMAP DS Flags MUST be set if the DDMAP TLV describes a LAG interface and MUST be cleared otherwise.
It is RECOMMENDED that implementations randomly delay echo request and reply messages at both initiator and responder LSRs to avoid potential congestion when exercising all LAG member links in rapid succession.
It is RECOMMENDED that implementations supporting the LAG multipath extensions include the LSR Capability TLV in MPLS echo request messages to enable capability discovery.
The sub-TLV ordering within a DDMAP for a LAG member link MUST be: Local Interface Index Sub-TLV immediately followed by Multipath Data Sub-TLV (with optional Remote Interface Index Sub-TLV between them), and blocks for each member link MUST appear adjacent and in order of increasing local interface index.
When a responder LSR receives an echo request with the LAG Description Indicator flag set and the I flag (Interface and Label Stack Object Request) set, it MUST add the Detailed Interface and Label Stack TLV in the echo reply; if the incoming interface is a LAG, it MUST add the Incoming Interface Index Sub-TLV with the LAG Member Link Indicator flag set.
When a responder LSR receives an MPLS echo request carrying the LSR Capability TLV and knows how to process it, it MUST include the LSR Capability TLV in the MPLS echo reply message describing the features and extensions supported by the local LSR.
When an initiator LSR sends a subsequent DDMAP to a downstream LSR over a particular LAG member link, the Local Interface Index Sub-TLVs MUST be removed and the Multipath Data Sub-TLVs MUST be updated to include just one entry.
When none of the received multipath information maps to a particular LAG member link, the responder MUST still include the Local Interface Index Sub-TLV and Multipath Data Sub-TLV for that member link in the DDMAP, with the Multipath Length field set to zero.
IANA assigned bit number 3 to the G (LAG Description Indicator) flag in the 'DS Flags' subregistry of the MPLS LSP Ping Parameters registry.
IANA assigned value 4 for the Local Interface Index Sub-TLV and value 5 for the Remote Interface Index Sub-TLV in the 'Sub-TLVs for TLV Type 20' subregistry, and created an 'Interface Index Flags' registry with bit 15 (M: LAG Member Link Indicator) assigned; further assignments via Standards Action.
IANA assigned value 4 for the LSR Capability TLV in the MPLS LSP Ping Parameters 'TLVs' registry, and created a new 'LSR Capability Flags' registry with bits 31 (D) and 30 (U) assigned; further assignments via Standards Action.
IANA assigned value 6 for the Detailed Interface and Label Stack TLV in the MPLS LSP Ping Parameters 'TLVs' registry, and created a new 'Sub-TLVs for TLV Type 6' subregistry with sub-types 1 (Incoming Label Stack) and 2 (Incoming Interface Index) initially assigned.
To prevent leakage of diagnostic information to untrusted users, a responder LSR MUST only accept MPLS echo request messages from designated trusted sources by filtering the source IP address field; however, source IP address filtering provides only a weak form of access control.
The Detailed Interface and Label Stack TLV (Type=6) uses an Address Type byte (1=IPv4 Numbered, 2=IPv4 Unnumbered, 3=IPv6 Numbered, 4=IPv6 Unnumbered) determining whether IP Address and Interface fields are 4 or 16 octets, followed by a list of sub-TLVs including Incoming Label Stack (sub-type 1) and Incoming Interface Index (sub-type 2, Length=8).
The G flag (LAG Description Indicator) is assigned bit number 3 in the 8-bit DS Flags field of the DDMAP TLV, alongside existing E, L, I, and N flags.
The Incoming Interface Index Sub-TLV (Type=2, Length=8) contains a 2-octet Interface Index Flags field (bit 15 = M: LAG Member Link Indicator), 2 reserved octets, and a 4-octet Incoming Interface Index in network byte order.
The Local Interface Index Sub-TLV (Type=4, Length=4) contains a 4-octet Local Interface Index field encoding the egress interface index assigned by the local LSR in network byte order.
The LSR Capability TLV (Type=4, Length=4) contains a 4-octet LSR Capability Flags field with bit 31 (D: Downstream LAG Info Accommodation) and bit 30 (U: Upstream LAG Info Accommodation); unallocated bits MUST be zero on send and ignored on receipt.
The Remote Interface Index Sub-TLV (Type=5, Length=4) contains a 4-octet Remote Interface Index field encoding the ingress interface index assigned by the downstream LSR in network byte order.