RFC 9613
Requirements for Solutions that Support MPLS Network Actions (MNAs)
RFC 9613: Requirements for Solutions that Support MPLS Network Actions (MNAs) π¦
Okay bestie, let's get the vitals first π . This is RFC 9613, published in August 2024 as an Informational document, so it's published for information and isn't a Standards Track spec π. It was written by M. Bocci (editor) from Nokia, S. Bryant from the University of Surrey ICS, and J. Drake, who's independent πΈ. Its ISSN is 2070-1721. It doesn't list any RFCs that it obsoletes or updates β¨.
Abstract
Heyy so this doc lays out the requirements for building MPLS Network Actions (MNAs), which are the things that change how MPLS packets get forwarded or processed π₯. The ideas came from a bunch of proposals to add extra info to the labeled packet, so that a transit router or a terminating LSR (aka the Label Edge Router, or LER) can actually do these actions π.
Status of This Memo
This doc is not an Internet Standards Track specification. It's published just for informational purposes π§
It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). Not every doc the IESG approves is a candidate for any level of Internet Standard, so check Section 2 of RFC 7841 if you want the details π.
For the latest status, any errata, and how to send feedback, head to https://www.rfc-editor.org/info/rfc9613 β¨.
Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved π.
This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date. Please actually read those, because they spell out your rights and restrictions for this document π. Any Code Components pulled out of this document must include the Revised BSD License text described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Revised BSD License describes π«Ά.
Table of Contents
1. Introduction
1.1. Terminology
2. Requirements Language
3. MPLS Network Action Requirements
3.1. General Requirements
3.2. Requirements on the MNA Alert Mechanism
3.3. Requirements on Network Actions
3.4. Requirements on Network Action Indicators
3.5. Requirements on Ancillary Data
4. IANA Considerations
5. Security Considerations
6. Acknowledgements
7. References
7.1. Normative References
7.2. Informative References
Authors' Addresses
1. Introduction
Okay so MPLS wants to level up its data plane to handle new use cases [MNA-USECASES] π¦. The big idea is a general mechanism called MPLS Network Actions (MNAs). It lets the network make a forwarding or processing decision using info other than the top label and the Traffic Class (TC) bits. It can also use the Network Action Indicator (NAI) and ancillary data (MNA information) β¨. To support all of this, we need extensions to the MPLS architecture and label-stack operations that work across every use case. The goal is less implementation complexity and better interoperability and extensibility π . Any protocol extensions also have to fit the existing MPLS architecture from [RFC3031], [RFC3032], and [RFC6790] π.
Here's the thing to remember π: the MPLS architecture in [RFC3031] lets packets get forwarded through a network without intermediate nodes (Label Switching Routers, or LSRs) having to look at the network layer header of the payload. Formally, inspection can only happen at network ingress (the Label Edge Router, or LER), where the packet gets assigned to a Forwarding Equivalence Class (FEC) πΈ.
This doc sets the requirements for solutions that encode MNAs and the ancillary data needed to process those actions π§. The requirements come from a bunch of proposals to add info to the labeled packet so these actions can happen at either a transit or terminating LSR. We expect two kinds of solution specifications to come out of this π:
- MNA solution specification: A spec that describes a common protocol supporting all forms of MNAs.
- Network Action solution specifications: One or more specs describing the protocol extensions for the MNA solution, each one addressing a use case.
On its own, the term "solutions" refers to both MNA and Network Action solutions π«Ά. The requirements are there to constrain the MNA solution design so implementations can interoperate π.
1.1. Terminology
- Network Action (NA): An operation to be performed on an MPLS packet, or as a consequence of an MPLS packet being processed by a router. An NA may affect router state or MPLS packet forwarding, or it may affect the MPLS packet in some other way π.
- Network Action Indicator (NAI): An indication in the MPLS packet that a certain NA is supposed to be performed π.
- Ancillary Data (AD): Data in an MPLS packet that's tied to a given NA. It can be used as input to process the NA, or it can be the result of processing the NA. Ancillary data may be associated with:
- Both the control or maintenance information and the data traffic carried by the Label Switched Path (LSP).
- Only the control or maintenance information.
- Only the data traffic carried by the LSP.
- In-Stack Data: Ancillary data carried within the MPLS label stack π.
- Post-Stack Data: Ancillary data carried in an MPLS packet between the bottom of the MPLS label stack and the first octet of the user payload. This doc doesn't prescribe whether post-stack data comes before or after any other post-stack header, such as a Control Word or Associated Channel Header (ACH) π¦.
- Scope: The set of nodes that should perform a given action β¨.
2. Requirements Language
Okay, the BCP 14 part π . The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are read as described in BCP 14 [RFC2119] [RFC8174], but only when they show up in all capitals, exactly like this π₯.
Even though this doc isn't a protocol spec, we're using this convention anyway so the requirements are clear to read πΈ.
3. MPLS Network Action Requirements
This section sets the requirements for MNAs and the tech that supports them in MPLS. That includes NAIs, the associated AD, and the alert mechanism that tells an LSR the NAIs are in an MPLS packet π.
The requirements describe how the protocol mechanisms and procedures behave. They're the building blocks you put together to make the indicators for an NA and its ancillary data. They don't spell out the detailed actions and processing an LSR or LER does for any NA or ancillary data π§.
How big the post-stack ancillary data is end to end in an MPLS packet is something the ingress and egress provider edges (PEs) agree on, so it isn't part of these requirements π. Since in-stack ancillary data and per-hop post-stack data have to be parsed and processed by transit LSRs along the Label Switched Path (LSP), the size requirements for that data are written out in the sections below π.
3.1. General Requirements
- Okay rule number one π : any solutions MUST keep the extensibility, flexibility, and efficiency that come from splitting the control plane context from the simple data plane in MPLS, and the specification SHOULD explain how that's achieved.
- Any solutions to these requirements MUST be based on the MPLS architecture [RFC3031] [RFC3032] [RFC5331] and MUST NOT restrict its generality π¦.
- If the MPLS data plane needs extensions, they MUST stay consistent with the MPLS architecture [RFC3031] [RFC3032] [RFC5331] β¨.
- Solutions that meet these requirements MUST be able to coexist with existing MPLS mechanisms πΈ.
- Within these constraints, a Network Action solution MAY carry MNA information in-stack, post-stack, or in both places π§.
- Solution specifications MUST NOT require an implementation to support in-stack ancillary data, unless that implementation chooses to support an NA that uses in-stack ancillary data π.
- Solution specifications MUST NOT require an implementation to support post-stack ancillary data, unless that implementation chooses to support an NA that uses post-stack ancillary data π.
- The design of any MNA solution MUST minimize the processing needed to parse the label stack at an LSR π₯.
- Solutions MUST minimize any additions to the size of the MPLS label stack π.
- Solution specifications that increase the size of the MPLS label stack in a way the ingress LER doesn't control MUST discuss the consequences π.
- Solution specifications MUST discuss the ECMP consequences of the design π.
- A Network Action solution MUST NOT expose information to the LSRs that isn't already exposed to the LER π«Ά.
- The design of any NA MUST NOT expose any information that a user of any service using the LSP considers confidential [RFC6973] [RFC3552] π.
- Solution specifications MUST document any new security considerations they introduce β.
- An MNA solution MUST allow MPLS packets carrying NAI and ancillary data (where it exists) to coexist on the same LSP with MPLS packets that don't carry this info π¦.
3.2. Requirements on the MNA Alert Mechanism
- An MNA solution specification MUST define how a node figures out whether NAIs are present in the MPLS packet β¨.
- Special Purpose Labels (SPLs) are a mechanism of last resort π. So an MNA solution specification that defines their use MUST minimize the number of new SPLs that get allocated π .
3.3. Requirements on Network Actions
- It is RECOMMENDED that an MNA solution include support for NAs for Private Use (see Section 4.1 of [RFC8126]) πΈ.
- Network Action solution specifications MUST define whether the NA needs to be processed as part of the immediate forwarding operation, and whether MPLS packet misordering is allowed to happen because of the time it takes to process the NA π§.
- If a Network Action solution specification allows more than one scope for an NA, it MUST define a mechanism to indicate the precedence of the scopes or any combination of the scopes π.
- If a network action needs an NAI with in-stack ancillary data that has to be imposed at an LSR on an LSP, then the Network Action solution MUST specify how this is achieved in all circumstances π₯.
- If a network action needs an NAI with post-stack ancillary data imposed at an LSR on an LSP, then the Network Action solution specification MUST describe how this is achieved in all circumstances π.
3.4. Requirements on Network Action Indicators π
- Okay so inserting, parsing, processing, and disposing of NAIs SHOULD make use of existing MPLS data plane operations. No reinventing the wheel, bestie π§
- Without constraining the mechanism, an MNA solution MUST enable a node inserting or modifying NAIs to determine if the target of the NAI, or any other LSR that may expose the NAI, can accept and process an MPLS packet containing the NAI. Like, you need to be able to check before you send π
- An NAI MUST NOT be imposed for delivery to a node unless it is known that the node supports processing the NAI. Never send a surprise to a node that can't handle it π ββοΈ
- The NAI design MUST support setting the scope of network actions. π
- A given Network Action solution specification MUST define which scope or scopes are applicable to the associated NAI. Scope has to be spelled out, no vibes-only guessing π
- An MNA solution specification SHOULD define the support of NAIs for both Point-to-Point (P2P) and Point-to-Multipoint (P2MP) paths. The Network Action solution specification MAY limit a specific NAI to only one of these path types, but only if there is a clear reason to do so β¨
- An MNA solution specification defining data plane mechanisms for NAIs MUST be consistent across different control plane protocols. Consistency is everything, periodt π
- An MNA solution MUST allow the deployed MPLS control and management planes to determine the ability of downstream LSRs to accept and/or process a given NAI. π§
- An MNA solution MUST allow indicators for multiple network actions in the same MPLS packet. Multitasking queen π
- An MNA solution specification MUST NOT require an implementation to process all NAIs present in an MPLS packet. You don't have to process everything, and that's totally valid πΈ
- NAIs MUST only be inserted at LSRs that push a label onto the stack, but they can be processed by LSRs along the path of the LSP. Two examples of LSRs that push a label onto the stack are head-end LSRs and points of local repair (PLRs). So the head-end and the PLRs are the ones doing the inserting π¦
- If a network action requires in-stack ancillary data, the NAI that indicates this network action MUST be present in the label stack. No NAI, no in-stack ancillary data, that's the deal π
- All NAIs MUST be encoded in a manner consistent with [RFC3031]. π
- If there is post-stack ancillary data for an NAI that is present in the label stack, it MUST be possible to infer the presence of the ancillary data without having to parse below the bottom of the label stack. Nobody should have to dig past the bottom of the stack just to find out it's there π
- Any processing that removes an NAI from the label stack MUST also remove all associated ancillary data from the MPLS packet, unless the ancillary data is required by any remaining NAIs. Clean up after yourself, but don't delete what someone else still needs π§Ή
- MNA solution specifications MUST request that IANA create registries and make allocations from those registries for NAIs as necessary to ensure unambiguous identification of standardized network actions. An MNA solution specification MAY request that IANA reserve a range of a registry for Private Use. Unambiguous names only, no confusion allowed π
- A Network Action solution specification MUST state where the NAIs are to be placed in the MPLS packet, that is, whether they are placed in-stack or post-stack. Location, location, location π
3.5. Requirements on Ancillary Data π
- Network Action solution specifications MUST state whether ancillary data is required to fulfill the action, and whether it is in-stack and/or post-stack. Spill the tea on what ancillary data is needed and where it lives π«
- Network Action solution specifications MUST state if in-stack or post-stack ancillary data that is already present in the MPLS packet MAY be rewritten by an LSR. Be clear about whether anyone's allowed to rewrite it π
- Solutions for in-stack ancillary data MUST be able to coexist with and MUST NOT obsolete existing MPLS mechanisms. Such solutions MUST be described in a Standards Track RFC. Respect the OG mechanisms and document it properly π
- Network Action solutions MUST take care to limit the quantity of in-stack ancillary data to the minimum amount required. Less is more in the label stack, fr fr πͺΆ
- A Network Action solution SHOULD NOT use post-stack ancillary data unless the size of that ancillary data could prevent the coexistence of the network action with other in-use MPLS network functions if it were inserted into the label stack. Only go post-stack when the in-stack option would actually cause a clash π§
- The structure of the NAI and any associated ancillary data MUST enable skipping of unknown NAIs and any associated AD. If you don't know an NAI, you can skip it along with its AD, no drama π¦
- Any MNA solution specification MUST describe whether the solution can coexist with existing post-stack data mechanisms (e.g., control words and the Generic Associated Channel Header [RFC5586]), and if so, how coexistence operates. Show me how you play nice with the existing post-stack crew π
- An MNA solution MUST allow an LER that inserts ancillary data to determine whether each node that needs to process the ancillary data can read the required distance into the MPLS packet at that node (compare with the mechanism in [RFC9088]). The inserting LER has to know if each node can actually reach the data it needs π
- For scoped in-stack or post-stack ancillary data, any MNA solution MUST allow an LER inserting NAIs whose network actions make use of that ancillary data to determine if the NAI and ancillary data will be processed by LSRs within the scope along the path. Such a solution may need to determine if LSRs along the path can process a specific type of AD implied by the NAI at the depth in the stack that it will be presented to the LSR. Checking the whole route, depth and all, is giving thorough πΊοΈ
- A mechanism MUST exist to notify an egress LER of the presence of ancillary data so that it can dispose of it appropriately. The egress LER needs a heads-up so it can clean up π§Ή
- In-stack ancillary data MUST only be inserted in conjunction with an operation conforming with [RFC3031]. β¨
- Post-stack ancillary data MUST only be inserted in conjunction with an operation conforming with [RFC3031]. β¨
- Processing of ancillary data below a swapped label MAY include rewriting the ancillary data. Swap it and maybe rewrite it, the choice is yours π
- If a Network Action solution needs to change the size of the ancillary data, its specification MUST analyze the implications on MPLS packet forwarding and specify how these are addressed. Changing the size is a big deal, so you gotta explain the forwarding fallout π
- Not more than one Standards Track solution specification SHOULD be defined for encoding in-stack ancillary data. One clear winner, not a pile-up π
- Not more than one Standards Track solution specification SHOULD be defined for encoding post-stack ancillary data. Same energy for the post-stack side π«Ά
4. IANA Considerations π
This document has no IANA actions. Nothing to register here, bestie πΈ
5. Security Considerations π
Okay, this part is serious, so listen up π Solutions designed according to the requirements in this document may introduce new security considerations to MPLS, whose forwarding plane on its own does not provide any built-in security mechanisms [RFC5920].
In particular, such solutions may embed information derived from the MPLS payload in the MPLS headers. This may expose data that a user of the MPLS-based service might otherwise assume is opaque to the MPLS network. Furthermore, an LSR may insert information into the labeled packet such that the forwarding behavior is no longer purely a function of the top label or another label with forwarding context. Instead, the forwarding behavior may be the result of a more complex heuristic. This creates an implicit trust relationship between the LSR whose forwarding behavior is being changed and the upstream LSR inserting the data causing that change. Trust issues are literally the whole vibe here π
Several requirements above address some of these considerations. The MNA framework [MNA-FRAMEWORK] also provides security considerations resulting from any extensions to the MPLS architecture, and these SHOULD be taken together with the security considerations herein. Read the framework's security notes alongside these ones, no skipping!
Individual solution specifications meeting the requirements in this document MUST address any security considerations introduced by the MNA design. Every solution has to own its own security story π₯
6. Acknowledgements π«Ά
The authors gratefully acknowledge the contributions from Joel Halpern, Greg Mirsky, Yingzhen Qu, Haoyu Song, Tarek Saad, Loa Andersson, Tony Li, Adrian Farrel, Jie Dong, Bruno Decraene, and participants in the MPLS Working Group who have provided comments. Thank you all, you're the real MVPs π
The authors also gratefully acknowledge the input of the members of the MPLS Open Design Team. Big thanks to the design team too β¨
7. References π
7.1. Normative References
- [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. - [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol Label Switching Architecture", RFC 3031, DOI 10.17487/RFC3031, January 2001,
https://www.rfc-editor.org/info/rfc3031. - [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. - [RFC5331] Aggarwal, R., Rekhter, Y., and E. Rosen, "MPLS Upstream Label Assignment and Context-Specific Label Space", RFC 5331, DOI 10.17487/RFC5331, August 2008,
https://www.rfc-editor.org/info/rfc5331. - [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.
7.2. Informative References
- [MNA-FRAMEWORK] Andersson, L., Bryant, S., Bocci, M., and T. Li, "MPLS Network Actions (MNA) Framework", Work in Progress, Internet-Draft, draft-ietf-mpls-mna-fwk-10, 6 August 2024,
https://datatracker.ietf.org/doc/html/draft-ietf-mpls-mna-fwk-10. - [MNA-USECASES] Saad, T., Makhijani, K., Song, H., and G. Mirsky, "Use Cases for MPLS Network Action Indicators and MPLS Ancillary Data", Work in Progress, Internet-Draft, draft-ietf-mpls-mna-usecases-10, 20 June 2024,
https://datatracker.ietf.org/doc/html/draft-ietf-mpls-mna-usecases-10. - [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, DOI 10.17487/RFC3552, July 2003,
https://www.rfc-editor.org/info/rfc3552. - [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., "MPLS Generic Associated Channel", RFC 5586, DOI 10.17487/RFC5586, June 2009,
https://www.rfc-editor.org/info/rfc5586. - [RFC5920] Fang, L., Ed., "Security Framework for MPLS and GMPLS Networks", RFC 5920, DOI 10.17487/RFC5920, July 2010,
https://www.rfc-editor.org/info/rfc5920. - [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. - [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., Morris, J., Hansen, M., and R. Smith, "Privacy Considerations for Internet Protocols", RFC 6973, DOI 10.17487/RFC6973, July 2013,
https://www.rfc-editor.org/info/rfc6973. - [RFC9088] Xu, X., Kini, S., Psenak, P., Filsfils, C., Litkowski, S., and M. Bocci, "Signaling Entropy Label Capability and Entropy Readable Label Depth Using IS-IS", RFC 9088, DOI 10.17487/RFC9088, August 2021,
https://www.rfc-editor.org/info/rfc9088.
Authors' Addresses β¨
okay the squad π«Ά here are the people who wrote this one
Matthew Bocci is the editor π and he's at Nokia. You can reach him at matthew.bocci@nokia.com π
Stewart Bryant is at the University of Surrey ICS π and his email is sb@stewartbryant.com π¦
John Drake is independent π with the email je_drake@yahoo.com π
the MPLS brainiacs are literally iconic ππ
π¦ where this page comes from
- ietf: rfc9613 2024-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms