RFC 9570

Deprecating the Use of Router Alert in LSP Ping

πŸ“… published May 2024, from ietf

Deprecating the Use of Router Alert in LSP Ping πŸŽ€

Okay so bestie, this RFC is about cleaning up the Router Alert Option (RAO) in LSP ping πŸ’… It's RFC 9570, and it's giving "we're retiring the RAO for MPLS OAM, no cap" ✨

Title block facts (the tea β˜•):

  • Number: RFC 9570 πŸ¦‹
  • Authors: K. Kompella (Juniper Networks), R. Bonica (Juniper Networks), and G. Mirsky, Ed. (Ericsson) πŸ‘‘
  • Category: Standards Track 🌸
  • Date: May 2024 πŸ“
  • Updates: RFC 8029 🧚
  • Obsoletes: nothing listed here, it just updates 8029 πŸ’œ
  • Reclassifies: RFC 7506 as Historic πŸ™ˆ

Abstract

Okay so the MPLS echo request and MPLS echo response messages from RFC 8029 (aka LSP ping, "Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures") get wrapped in IP packets with headers that include a Router Alert Option (RAO). πŸŽ€ Here's the lowkey awkward part: in real deployments, the RAO was neither required nor used πŸ’€ And RFC 6398 flagged security vulnerabilities with the RAO in non-controlled environments, like when you use the MPLS echo request/reply as inter-area Operations, Administration, and Maintenance (OAM). It recommends against using it outside controlled environments. 😭

So this document retires the RAO for MPLS OAM and updates RFC 8029 to remove the RAO from LSP ping message encapsulations 🫢 It also explains why RFC 7506 got reclassified as Historic πŸ“œ

Bonus: this document recommends using the IPv6 loopback address (::1/128) as the IPv6 destination address for an MPLS echo request message 🌈


Status of This Memo

This is an Internet Standards Track document. ✨

It's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) πŸ‘‘ For more on Internet Standards, check out Section 2 of RFC 7841 πŸ’…

Want the current status, errata, or a way to send feedback? Head to https://www.rfc-editor.org/info/rfc9570 πŸ¦‹


Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. 🌸

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication. Please review these carefully, because they describe your rights and restrictions. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they're provided without warranty as described in the Revised BSD License. πŸ”₯


Table of Contents

  • 1. Introduction
    • 1.1. Requirements Language
  • 2. Router Alert for LSP Ping (RFC 8029)
    • 2.1. MPLS Echo Request
    • 2.2. MPLS Echo Reply
  • 3. Reclassification of RFC 7506 as Historic
  • 4. Update to RFC 8029
  • 5. Backwards Compatibility
  • 6. IANA Considerations
  • 7. Security Considerations
  • 8. References
    • 8.1. Normative References
    • 8.2. Informative References
  • Acknowledgments
  • Authors' Addresses

1. Introduction 🧚

LSP ping ("Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures") is defined in [RFC8029], and it's how you detect data plane failures in MPLS Label Switched Paths (LSPs). πŸ’– It can operate in "ping mode" or "traceroute mode." In ping mode, it checks LSP connectivity. In traceroute mode, it can trace an LSP and localize failures to a particular node along the LSP. πŸ¦‹

The reader is assumed to be familiar with [RFC8029] and its terminology, so bestie, go read that first 🫢

LSP ping defines a probe message called the "MPLS echo request" and a response message called the "MPLS echo reply." 🌸 Both messages are encapsulated in UDP and IP. The MPLS echo request message is also encapsulated in an MPLS label stack, except when all of the Forwarding Equivalency Classes in the stack correspond to Implicit Null labels. ✨

In ping mode, LSP ping sends a single MPLS echo request message with the MPLS TTL set to 255. πŸŽ€ This message is meant to reach the egress Label Switching Router (LSR). In traceroute mode, MPLS ping sends multiple MPLS echo request messages as defined in Section 4.3 of [RFC8029] πŸ’… It manipulates the MPLS TTL so the first message expires on the first LSR along the path, and the next ones expire on subsequent LSRs. πŸ“

According to [RFC8029], the IP header that encapsulates an MPLS echo request message must include a Router Alert Option (RAO). 😭 And [RFC8029] also says the IP header that encapsulates an MPLS echo reply message must include an RAO if the Reply Mode in the corresponding MPLS echo request is "Reply via an IPv4/IPv6 UDP packet with Router Alert." πŸ™ˆ This document explains why an RAO wasn't needed in either case. πŸ’€

Then there's [RFC6398], which flags security vulnerabilities with the RAO in non-controlled environments, like using the MPLS echo request/reply as inter-domain OAM over the public Internet. It recommends against using it outside controlled environments, e.g., outside a single administrative domain. πŸ”₯

So, therefore, this document updates RFC 8029 [RFC8029] to retire the RAO from both LSP ping message encapsulations, and it explains why RFC 7506 [RFC7506] got reclassified as Historic πŸ‘‘

1.1. Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. πŸ’œ


2. Router Alert for LSP Ping (RFC 8029) 🌈

2.1. MPLS Echo Request

While the MPLS echo request message MUST traverse every node in the LSP under test, it MUST NOT traverse any other nodes. πŸ¦‹ Specifically, the message MUST NOT be forwarded beyond the egress Label Switching Router (LSR). To make this happen, RFC 8029 defined a set of mechanisms that get used concurrently to prevent leaking MPLS echo request messages 🫢

  1. When the MPLS echo request message is encapsulated in IPv4, the IPv4 destination address MUST be chosen from the subnet 127/8. When the MPLS echo request message is encapsulated in IPv6, the IPv6 destination address MUST be chosen from the subnet 0:0:0:0:0:FFFF:7F00:0/104.
  2. When the MPLS echo request message is encapsulated in IPv4, the IPv4 TTL MUST be equal to 1. When the MPLS echo request message is encapsulated in IPv6, the IPv6 Hop Limit MUST be equal to 1. For further info on encoding the TTL / Hop Limit in an MPLS echo request message, see Section 4.3 of [RFC8029] πŸ’…
  3. When the MPLS echo request message is encapsulated in IPv4, the IPv4 header MUST include an RAO with the option value set to "Router shall examine packet" [RFC2113]. When the MPLS echo request message is encapsulated in IPv6, the IPv6 header chain MUST include a hop-by-hop extension header, and that hop-by-hop extension header MUST include an RAO with the option value set to MPLS OAM [RFC7506] 😭

Currently, all of these are required. However, any one of them is sufficient to prevent forwarding the packet beyond the egress LSR ✨

Therefore, this document updates RFC 8029 [RFC8029] in that Requirement 3 is removed πŸŽ€

No implementation that relies on the RAO to prevent packets from being forwarded beyond the egress LSR has been reported to the MPLS Working Group. πŸ™ˆ

2.2. MPLS Echo Reply

An LSP ping replies to the MPLS echo request message with an MPLS echo reply message. RFC 8029 defines four reply modes 🧚

  1. Do not reply
  2. Reply via an IPv4/IPv6 UDP packet
  3. Reply via an IPv4/IPv6 UDP packet with Router Alert
  4. Reply via application-level control channel

The rationale for mode 3 is questionable, if not wholly misguided. πŸ’€ According to RFC 8029 [RFC8029], "If the normal IP return path is deemed unreliable, one may use 3 (Reply via an IPv4/IPv6 UDP packet with Router Alert)."

However, it's not clear that using the RAO increases the reliability of the return path. In fact, one can argue it decreases reliability in many instances, due to the additional burden of processing the RAO 😭 This document updates RFC 8029 [RFC8029] in that mode 3 is removed. πŸ”₯

No implementations of mode 3 have been reported to the MPLS Working Group. 🫢


3. Reclassification of RFC 7506 as Historic πŸ“œ

RFC 7506 [RFC7506] defines the IPv6 Router Alert Option for MPLS Operations, Administration, and Maintenance. 🌸 This document explains why RFC 7506 [RFC7506] got reclassified as Historic πŸ‘‘

(Part 1 of 2. Sections 4 onward, plus IANA, Security, and References, are coming in part 2, bestie πŸ’–)

4. Update to RFC 8029 ✨

Okay bestie, so [RFC8029] requires that the IPv6 Destination Address in the IP/UDP encapsulation of an MPLS echo request packet be picked from the IPv4 loopback range mapped to IPv6. πŸ™ˆ Those packets don't behave the way [RFC1122] says an IPv4 loopback-addressed packet does, which is a whole mood.

[RFC4291] defines ::1/128 as the single IPv6 loopback address, so this specification updates Section 2.1 of [RFC8029] about how you choose the IPv6 destination address for an MPLS echo request message. Here's the old version first:

OLD:

The 127/8 range for IPv4 and that same range embedded in an
IPv4-mapped IPv6 address for IPv6 was chosen for a number of
reasons.

RFC 1122 allocates the 127/8 as the "Internal host loopback
address" and states: "Addresses of this form MUST NOT appear
outside a host."  Thus, the default behavior of hosts is to
discard such packets.  This helps to ensure that if a diagnostic
packet is misdirected to a host, it will be silently discarded.

RFC 1812 [RFC1812] states:

   A router SHOULD NOT forward, except over a loopback interface,
   any packet that has a destination address on network 127.  A
   router MAY have a switch that allows the network manager to
   disable these checks.  If such a switch is provided, it MUST
   default to performing the checks.

This helps to ensure that diagnostic packets are never IP
forwarded.

The 127/8 address range provides 16M addresses allowing wide
flexibility in varying addresses to exercise ECMP paths.  Finally,
as an implementation optimization, the 127/8 range provides an
easy means of identifying possible LSP packets.

And here's the new version, where the IPv6 stuff is gone and the IPv4 reasoning stays:

NEW:

The 127/8 range for IPv4 was chosen for a number of reasons.

RFC 1122 [RFC1122] allocates the 127/8 as the "Internal host
loopback address" and states: "Addresses of this form MUST NOT
appear outside a host."  Thus, the default behavior of hosts is to
discard such packets.  This helps to ensure that if a diagnostic
packet is misdirected to a host, it will be silently discarded.

RFC 1812 [RFC1812] states:

   A router SHOULD NOT forward, except over a loopback interface,
   any packet that has a destination address on network 127.  A
   router MAY have a switch that allows the network manager to
   disable these checks.  If such a switch is provided, it MUST
   default to performing the checks.

This helps to ensure that diagnostic packets are never IP
forwarded.

The 127/8 address range provides 16M addresses allowing wide
flexibility in varying addresses to exercise ECMP paths.  Finally,
as an implementation optimization, the 127/8 range provides an
easy means of identifying possible LSP packets.

The new IPv6 rules are the fun part. The IPv6 destination address for an MPLS echo request message is picked like this:

  • The IPv6 loopback address ::1/128 SHOULD be used.
  • The sender of an MPLS echo request MAY select the IPv6 destination address from the 0:0:0:0:0:FFFF:7F00/104 range.
  • To exercise all paths in an ECMP environment, a source of entropy other than the IP destination address SHOULD be used. For example, the MPLS Entropy Label [RFC6790] or IPv6 Flow Label [RFC6438] can be used as the source of entropy.

Additionally, this specification updates Section 2.2 of [RFC8029] by replacing the whole section with this text:

LSP Ping implementations SHOULD ignore RAO options when they
arrive on incoming MPLS echo request and MPLS echo reply messages.

Because Reply mode 3 ("Reply via an IPv4/IPv6 UDP packet with Router Alert") is removed (see Section 2.2), this specification also updates Section 4.5 of [RFC8029] by removing this text:

If the Reply Mode in the echo request is "Reply via an IPv4 UDP
packet with Router Alert", then the IP header MUST contain the
Router Alert IP Option of value 0x0 [RFC2113] for IPv4 or 69
[RFC7506] for IPv6.  If the reply is sent over an LSP, the topmost
label MUST in this case be the Router Alert label (1) (see
[RFC3032]).

Last but not least, this specification updates Section 4.3 of [RFC8029]. Here's the before:

OLD:

The Router Alert IP Option of value 0x0 [RFC2113] for IPv4 or
value 69 [RFC7506] for IPv6 MUST be set in the IP header.

And the after, which flips the whole vibe:

NEW:

The Router Alert IP Option of value 0x0 [RFC2113] for IPv4 or
value 69 [RFC7506] for IPv6 MUST NOT be set in the IP header.

5. Backwards Compatibility πŸŽ€

LSP Ping implementations that conform to this specification SHOULD ignore RAO options when they arrive on incoming MPLS echo request and MPLS echo reply messages. Don't panic though, this won't break backwards compatibility, because all the legacy implementations will also be using other mechanisms in the messages they send and receive. 🫢

Section 6 of this document deprecates the IPv6 RAO value for MPLS OAM (69) in [IANA-IPV6-RAO], and the Reply Mode 3 ("Reply via an IPv4/IPv6 UDP packet with Router Alert") in [IANA-LSP-PING].

[RFC8126] gives a formal description of the word "Deprecated". In this context, "Deprecated" means that the deprecated values SHOULD NOT be used in new implementations, and that deployed implementations already using these values keep working seamlessly. ✨


6. IANA Considerations πŸ“‹

IANA has marked the IPv6 RAO value of MPLS OAM (69) in [IANA-IPV6-RAO] as "DEPRECATED".

IANA has marked Reply Mode 3 ("Reply via an IPv4/IPv6 UDP packet with Router Alert") in "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" [IANA-LSP-PING] as "DEPRECATED".


7. Security Considerations πŸ”

Okay, this is the serious part, so listen up πŸ’€. The recommendations this document makes do not compromise security. Using the IPv6 loopback address ::1/128 actually strengthens security for LSP ping, because it's standardized and has well-defined behavior. Iconic, ngl. πŸ‘‘


8. References πŸ“š

8.1. Normative References

[RFC1122]  Braden, R., Ed., "Requirements for Internet Hosts -
           Communication Layers", STD 3, RFC 1122,
           DOI 10.17487/RFC1122, October 1989,
           <https://www.rfc-editor.org/info/rfc1122>.

[RFC1812]  Baker, F., Ed., "Requirements for IP Version 4 Routers",
           RFC 1812, DOI 10.17487/RFC1812, June 1995,
           <https://www.rfc-editor.org/info/rfc1812>.

[RFC2113]  Katz, D., "IP Router Alert Option", RFC 2113,
           DOI 10.17487/RFC2113, February 1997,
           <https://www.rfc-editor.org/info/rfc2113>.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119,
           DOI 10.17487/RFC2119, March 1997,
           <https://www.rfc-editor.org/info/rfc2119>.

[RFC4291]  Hinden, R. and S. Deering, "IP Version 6 Addressing
           Architecture", RFC 4291, DOI 10.17487/RFC4291, February
           2006, <https://www.rfc-editor.org/info/rfc4291>.

[RFC6398]  Le Faucheur, F., Ed., "IP Router Alert Considerations and
           Usage", BCP 168, RFC 6398, DOI 10.17487/RFC6398, October
           2011, <https://www.rfc-editor.org/info/rfc6398>.

[RFC7506]  Raza, K., Akiya, N., and C. Pignataro, "IPv6 Router Alert
           Option for MPLS Operations, Administration, and
           Maintenance (OAM)", RFC 7506, DOI 10.17487/RFC7506, April
           2015, <https://www.rfc-editor.org/info/rfc7506>.

[RFC8029]  Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N.,
           Aldrin, S., and M. Chen, "Detecting Multiprotocol Label
           Switched (MPLS) Data-Plane Failures", RFC 8029,
           DOI 10.17487/RFC8029, March 2017,
           <https://www.rfc-editor.org/info/rfc8029>.

[RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
           Writing an IANA Considerations Section in RFCs", BCP 26,
           RFC 8126, DOI 10.17487/RFC8126, June 2017,
           <https://www.rfc-editor.org/info/rfc8126>.

[RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
           2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
           May 2017, <https://www.rfc-editor.org/info/rfc8174>.

8.2. Informative References

[IANA-IPV6-RAO]
           IANA, "IPv6 Router Alert Option Values",
           <https://www.iana.org/assignments/ipv6-routeralert-
           values>.

[IANA-LSP-PING]
           IANA, "Multiprotocol Label Switching (MPLS) Label Switched
           Paths (LSPs) Ping Parameters",
           <https://www.iana.org/assignments/mpls-lsp-ping-
           parameters>.

[RFC3032]  Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y.,
           Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack
           Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001,
           <https://www.rfc-editor.org/info/rfc3032>.

[RFC6438]  Carpenter, B. and S. Amante, "Using the IPv6 Flow Label
           for Equal Cost Multipath Routing and Link Aggregation in
           Tunnels", RFC 6438, DOI 10.17487/RFC6438, November 2011,
           <https://www.rfc-editor.org/info/rfc6438>.

[RFC6790]  Kompella, K., Drake, J., Amante, S., Henderickx, W., and
           L. Yong, "The Use of Entropy Labels in MPLS Forwarding",
           RFC 6790, DOI 10.17487/RFC6790, November 2012,
           <https://www.rfc-editor.org/info/rfc6790>.

Acknowledgments 🌸

The authors want to give a big shoutout to Adrian Farrel and Gyan Mishra for their suggestions, which made the document way more readable. πŸ₯Ή

Authors' Addresses πŸ¦‹

Kireeti Kompella
Juniper Networks
1133 Innovation Way
Sunnyvale, CA 94089
United States of America
Email: kireeti.ietf@gmail.com


Ron Bonica
Juniper Networks
1133 Innovation Way
Sunnyvale, CA 94089
United States of America
Email: rbonica@juniper.net


Greg Mirsky (editor)
Ericsson
Email: gregimirsky@gmail.com
πŸ“¦ where this page comes from