Internet-Draft | SIG | February 2025 |
Ihle, et al. | Expires 28 August 2025 | [Page] |
This document defines capabilities of nodes supporting MPLS Network Actions (MNA) and how to signal them using IS-IS and OSPF. The capabilities include the Readable Label Depth (RLD), supported network action opcodes, and the maximum sizes of differently scoped Network Action Sub-stacks (NAS). For IS-IS and OSPF signaling, sub-TLV encodings based on existing mechanisms to signal node- and link-specific capabilities are leveraged.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://uni-tue-kn.github.io/draft-ihle-song-mpls-mna-signaling/draft-ihle-song-mpls-mna-signaling.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ihle-song-mpls-mna-signaling/.¶
Discussion of this document takes place on the Multiprotocol Label Switching Working Group mailing list (mailto:mpls@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/mpls/. Subscribe at https://www.ietf.org/mailman/listinfo/mpls/.¶
Source for this draft and an issue tracker can be found at https://github.com/uni-tue-kn/draft-ihle-song-mpls-mna-signaling.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 28 August 2025.¶
Copyright (c) 2025 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 of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
With the MPLS Network Action (MNA) framework, network actions are encoded in the MPLS stack. [I-D.ietf-mpls-mna-hdr] defines the encoding of such network actions and their data in the MPLS stack. These network actions are processed by all nodes on a path (hop-by-hop), by only selected nodes, or on an ingress-to-egress basis. LSRs have different capabilites that result from the available hardware resources. An ingress LER that pushes network actions to an MPLS stack MUST ensure that all nodes on the path can read and support the network actions. For that purpose, the MNA capabilities of an LSR need to be signaled to the ingress LER.¶
This document defines the required parameters of LSRs regarding their MNA capability and proposes a signaling extension using IGP such as IS-IS and OSPF.¶
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.¶
This document makes use of the terms defined in [I-D.ietf-mpls-mna-hdr] and in [I-D.ietf-mpls-mna-fwk].¶
In this section, the parameters an LSR SHOULD signal to the ingress LER to indicate its MNA capabilities are defined.¶
The Readable Label Depth (RLD) is the number of LSEs an LSR can parse without performance impact[I-D.ietf-mpls-mna-fwk]. An LSR is required to search the MPLS stack for Network-Action Substacks (NAS) that have to be processed by this node. The ingress LER that pushes the network actions MUST ensure that a hop-by-hop-scoped network action is readable at each LSR on the path, i.e., that it is placed within the RLD of each node. For this purpose, multiple copies of the hop-by-hop-scoped NAS may be placed in the stack.¶
An example for the RLD parameter is given in Figure 1. With an RLD of 5, an LSR is capable of reading labels A, B, C, D, and E but not D. An RLD of 8 is required in this example to read the entire MPLS stack.¶
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = A | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = B | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = C | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = D | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = E | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = F | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = G | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = H | TC |1| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This section gives a motivation for signaling maximum NAS sizes and then introduces the Maximum Label Depth (MLD).¶
A NAS in the MNA header encoding is at least 2 LSEs and at most 17 LSEs large [I-D.ietf-mpls-mna-hdr]. At an LSR, at least two NAS, a select-scoped and a hop-by-hop-scoped NAS, are possible. With two maximum-sized NAS, an LSR is required to reserve 34 LSEs in hardware to be able to process network actions. This consumes hardware resources that may be needed to encode other LSEs, e.g., forwarding labels for SR-MPLS paths.¶
Many use cases in the MNA framework[I-D.ietf-mpls-mna-usecases] do not require a maximum-sized NAS of 17 LSEs to encode the network action and their ancillary data. Therefore, by signaling the maximum-supported NAS size of an MNA implementation from an LSR to an ingress LER, the allocated resources for NAS can be reduced and more resources are available for other purposes.¶
The Maximum SID Depth (MSD) describes the number of SIDs a node is capable of imposing [rfc8491], [rfc8476]. The concept of MSD is not restricted to Segment Routing (SR). In domains where SR is not enabled, the MSD defines the maximum label depth [rfc8491]. For clarity, we refer to this value as Maximum Label Depth (MLD) in this document. The maximum number of LSEs in a specific NAS is referred to as NAS-MLD. MLD values may be signaled by the forwarding plane or may be provisioned by the control plane.¶
An LSR SHOULD signal the maximum-supported size of a NAS for each scope, i.e., the parameters NAS-MLD^Sel, NAS-MLD^HBH, and NAS-MLD^I2E. Those parameters include the Format A, B, C, and D LSEs from [I-D.ietf-mpls-mna-hdr] in a NAS.¶
For select-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of the node the select-scoped NAS is destined for.¶
For hop-by-hop-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of any node or link on the path.¶
For I2E-scoped NAS, the ingress LER MUST NOT push NAS to the MPLS stack that exceed the MNA capabilities of the egress node or link.¶
Figure 1 illustrates the different NAS-MLD sizes in an MPLS stack that are signaled to the LSR. In this example, a select-scoped NAS has a maximum size of 4 LSEs, a hop-by-hop-scoped NAS of 7 LSEs, and an I2E-scoped NAS of 4 LSEs.¶
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = A | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┑ | MNA-Label=bSPL (TBA) | TC |0| TTL | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |R|SEL|0|U| NASL=2|NAL=0| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ NAS-MLD | Opcode | Data |0|U| Data |NAL=1| ^Sel +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ |1| Data |0| Data | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┚ | MPLS-Label = B | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MPLS-Label = C | TC |0| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ──┑ | MNA-Label=bSPL (TBA) | TC |0| TTL | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |R|HBH|0|U| NASL=5|NAL=0| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |0|U| Data |NAL=0| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |0|U| Data |NAL=0| NAS-MLD +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^HBH | Opcode | Data |0|U| Data |NAL=0| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |0|U| Data |NAL=1| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ |1| Data |0| Data | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ───┨ | MNA-Label=bSPL (TBA) | TC |0| TTL | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ | Opcode | Data |R|I2E|0|U| NASL=2|NAL=0| │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ NAS-MLD | Opcode | Data |0|U| Data |NAL=1| ^I2E +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ │ |1| Data |1| Data | │ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ───┚
An LSR MUST signal the network action opcodes it supports. If a network action opcode is not signaled, it is assumed that this opcode is not supported by the node.¶
This section defines a method for IGP routers to advertise the maximum supportable numbers of LSEs in I2E-scoped NAS, Select-scoped NAS, and HBH-scoped NAS, i.e., the per-scope NAS-MLD, with IS-IS and OSPF.¶
This section defines the signaling of NAS-MLD and RLD that can be supported for specific Network-Action Substacks (NAS) using IS-IS node and link advertisement. [rfc7981] defines the IS-IS Router Capability TLV that supports optional sub-TLVs to signal capabilities. Further, [rfc8491] introduces a sub-TLV for node- and link-specific advertisement based on [rfc7981].¶
To signal the maximum numbers of LSEs for NAS with different scopes, this document introduces new sub-TLVs based on [rfc8491]. The NAS-MLD Sub-TLV is defined node- or link-specific as below:¶
0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAS-MLD Type | NAS-MLD Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // ................... // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAS-MLD Type | NAS-MLD Value | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:¶
Length: variable (multiple of 2 octets); represents the total length of the Value field¶
Value: field consists of one or more pairs of a 1-octet MSD-Type and 1-octet MSD-Value¶
This sub-TLV is optional. The scope of the advertisement is specific to the deployment.¶
For the Readable Label Depth advertisement, a sub-TLV based on [rfc8491] is requested in [I-D.draft-ietf-mpls-mna-fwk].¶
This section defines the signaling of NAS-MLD and RLD that can be supported for specific Network-Action Substacks (NAS) using OSPF node and link advertisement. [rfc7770] defines the OSPF RI Opaque LSA which is used in [rfc8476] to carry the node-specific provisioned SID depth of the router originating the Router Information (RI) LSA in a sub-TLV. Further, [rfc7684] defines link-specific advertisements using the optional sub-TLV of the OSPFv2 Extended Link TLV for OSPFv2, and [rfc8362] defines link-specific advertisements using the optional sub-TLV of the E-Router-LSA TLV.¶
To signal the maximum numbers of LSEs for NAS with different scopes, this document introduces new sub-TLVs based on [rfc7684], [rfc8476], and [rfc8362]. The NAS-MLD Sub-TLV is defined node- or link-specific as below:¶
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +--------------------------------------------------------------+ | Type | Length | +-------------------------------------------------------------+ | NAS-MLD Type | NAS-MLD Value | +-------------------------------------------------------------+ // ................... // +-------------------------------------------------------------+ | NAS-MLD Type | NAS-MLD Value | +-------------------------------------------------------------+
Type:¶
Length: variable (in octets); represents the total length of the Value field¶
Value: field consists of one or more pairs of a 2-octet MSD-Type and 2-octet MSD-Value¶
This sub-TLV is optional. The scope of the advertisement is specific to the deployment.¶
For the Readable Label Depth advertisement, a sub-TLV is requested in [I-D.draft-ietf-mpls-mna-fwk].¶
The security issues discussed in [I-D.ietf-mpls-mna-hdr], [rfc8476], and [rfc8491] apply to this document.¶
This docuement requests the allocation of following codepoints in the "IGP MSD-Types" registry.¶
Value | Name | Data Plane | Reference |
---|---|---|---|
3 | Readable Label Depth | MPLS | [I-D.draft-ietf-mpls-mna-fwk] |
4 | MLD of select-scoped NAS | MPLS | This document |
5 | MLD of I2E-scoped NAS | MPLS | This document |
6 | MLD of HBH-scoped NAS | MPLS | This document |