| rfc9994.original | rfc9994.txt | |||
|---|---|---|---|---|
| MPLS Working Group J. Rajamanickam, Ed. | Internet Engineering Task Force (IETF) J. Rajamanickam, Ed. | |||
| Internet-Draft R. Gandhi, Ed. | Request for Comments: 9994 R. Gandhi, Ed. | |||
| Intended status: Standards Track Cisco Systems, Inc. | Category: Standards Track Cisco Systems, Inc. | |||
| Expires: 28 August 2026 R. Zigler | ISSN: 2070-1721 R. Zigler | |||
| Broadcom | Broadcom | |||
| H. Song | H. Song | |||
| Futurewei Technologies | Futurewei Technologies | |||
| K. Kompella | K. Kompella | |||
| Juniper Networks | Juniper Networks | |||
| 24 February 2026 | May 2026 | |||
| MPLS Network Action (MNA) Sub-Stack Specification including In-Stack | MPLS Network Action (MNA) Sub-Stack Specification Including In-Stack | |||
| Network Actions and Data | Network Actions and Data | |||
| draft-ietf-mpls-mna-hdr-21 | ||||
| Abstract | Abstract | |||
| This document specifies the MPLS Network Actions (MNA) sub-stack for | This document specifies the MPLS Network Action (MNA) sub-stack for | |||
| carrying Network Actions and Ancillary Data in the MPLS label stack. | carrying Network Actions and Ancillary Data (AD) in the MPLS label | |||
| MNA can be used to influence packet forwarding decisions, carry | stack. MNA can be used to influence packet-forwarding decisions, | |||
| additional Operations, Administration, and Maintenance information in | carry additional Operations, Administration, and Maintenance (OAM) | |||
| the MPLS packet or perform user-defined operations. | information in the MPLS packet, or perform user-defined operations. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 28 August 2026. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9994. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2026 IETF Trust and the persons identified as the | Copyright (c) 2026 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
| 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 2.1. Requirements Language | |||
| 2.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Abbreviations | |||
| 2.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. Terminology | |||
| 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Overview | |||
| 4. Label Stack Entry Formats . . . . . . . . . . . . . . . . . . 7 | 4. Label Stack Entry Formats | |||
| 4.1. LSE Format A: The MNA Sub-Stack Indicator . . . . . . . . 7 | 4.1. LSE Format A: The MNA Sub-Stack Indicator | |||
| 4.2. LSE Format B: The initial opcode . . . . . . . . . . . . 7 | 4.2. LSE Format B: The Initial Opcode | |||
| 4.3. LSE Format C: Subsequent opcodes . . . . . . . . . . . . 8 | 4.3. LSE Format C: Subsequent Opcodes | |||
| 4.4. LSE Format D: Additional Data . . . . . . . . . . . . . . 9 | 4.4. LSE Format D: Additional Data | |||
| 5. The MNA Sub-Stack . . . . . . . . . . . . . . . . . . . . . . 9 | 5. The MNA Sub-Stack | |||
| 5.1. Opcodes . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. Opcodes | |||
| 5.2. Ancillary Data . . . . . . . . . . . . . . . . . . . . . 10 | 5.2. Ancillary Data | |||
| 5.3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.3. Scope | |||
| 5.4. Unknown Network Action Handling . . . . . . . . . . . . . 12 | 5.4. Unknown Network Action Handling | |||
| 5.5. Ordering . . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.5. Ordering | |||
| 6. Special Opcodes . . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Special Opcodes | |||
| 6.1. bSPL Protection . . . . . . . . . . . . . . . . . . . . . 13 | 6.1. bSPL Protection | |||
| 6.2. Flag-Based NAIs without AD . . . . . . . . . . . . . . . 13 | 6.2. Flag-Based NAIs Without AD | |||
| 6.3. No-Operation Opcode . . . . . . . . . . . . . . . . . . . 14 | 6.3. No-Operation Opcode | |||
| 6.4. Extension Opcode . . . . . . . . . . . . . . . . . . . . 14 | 6.4. Extension Opcode | |||
| 7. NAS placement in the Label Stack . . . . . . . . . . . . . . 14 | 7. NAS Placement in the Label Stack | |||
| 7.1. Actions when Pushing Labels . . . . . . . . . . . . . . . 15 | 7.1. Actions When Pushing Labels | |||
| 8. Node Capability Signaling . . . . . . . . . . . . . . . . . . 16 | 8. Node Capability Signaling | |||
| 9. Processing the Network Action Sub-Stack . . . . . . . . . . . 16 | 9. Processing the Network Action Sub-Stack | |||
| 9.1. Encapsulating Node Responsibilities . . . . . . . . . . . 16 | 9.1. Encapsulating Node Responsibilities | |||
| 9.2. Transit Node Responsibilities . . . . . . . . . . . . . . 17 | 9.2. Transit Node Responsibilities | |||
| 9.3. Penultimate Node Responsibilities . . . . . . . . . . . . 17 | 9.3. Penultimate Node Responsibilities | |||
| 9.4. Egress Node Responsibilities . . . . . . . . . . . . . . 17 | 9.4. Egress Node Responsibilities | |||
| 10. Network Action Indicator Opcode Definition . . . . . . . . . 17 | 10. Network Action Indicator Opcode Definition | |||
| 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 18 | 11. Security Considerations | |||
| 11.1. University of Tuebingen Implementation . . . . . . . . . 18 | 12. Operational Considerations | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 12.1. Manageability Considerations | |||
| 13. Operational Considerations . . . . . . . . . . . . . . . . . 20 | 12.2. Performance and Scale Considerations | |||
| 13.1. Manageability Considerations . . . . . . . . . . . . . . 20 | 12.3. Backward Compatibility | |||
| 13.2. Performance and Scale Considerations . . . . . . . . . . 20 | 13. IANA Considerations | |||
| 13.3. Backward Compatibility . . . . . . . . . . . . . . . . . 20 | 13.1. MNA bSPL Label | |||
| 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 13.2. MPLS Network Actions Parameters | |||
| 14.1. MNA bSPL Label . . . . . . . . . . . . . . . . . . . . . 22 | 13.2.1. Network Action Flags Without Ancillary Data | |||
| 14.2. MPLS Network Actions Parameters . . . . . . . . . . . . 22 | 13.2.2. Network Action Opcodes | |||
| 14.3. Network Action Flags Without Ancillary Data . . . . . . 22 | 14. References | |||
| 14.4. Network Action Opcodes . . . . . . . . . . . . . . . . . 23 | 14.1. Normative References | |||
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 14.2. Informative References | |||
| 15.1. Normative References . . . . . . . . . . . . . . . . . . 24 | Appendix A. Examples | |||
| 15.2. Informative References . . . . . . . . . . . . . . . . . 25 | A.1. Network Action Encoding Examples | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 26 | A.1.1. Network Action Flags Without AD | |||
| A.1. Network Action Encoding Examples . . . . . . . . . . . . 26 | A.1.2. Network Action Opcode with AD | |||
| A.1.1. Network Action Flags without AD . . . . . . . . . . . 26 | A.1.3. Network Action Opcode with More AD with Format-B | |||
| A.1.2. Network Action Opcode with AD . . . . . . . . . . . . 27 | A.1.4. Network Action Opcode with More AD with Format C | |||
| A.1.3. Network Action Opcode with more AD with Format-B . . 28 | A.2. Network Action Processing Order | |||
| A.1.4. Network Action Opcode with more AD with Format C . . 29 | A.2.1. Network Action Processing Order | |||
| A.2. Network Action Processing Order . . . . . . . . . . . . . 29 | Acknowledgments | |||
| A.2.1. Network Action Processing Order . . . . . . . . . . . 29 | Contributors | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 31 | Authors' Addresses | |||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| 1. Introduction | 1. Introduction | |||
| [RFC3032] defines the encoding of the MPLS label stack, the basic | [RFC3032] defines the encoding of the MPLS label stack, the basic | |||
| structure used to define a forwarding path. There are applications | structure used to define a forwarding path. There are applications | |||
| that require MPLS packets to perform special network actions and | that require MPLS packets to perform special network actions and | |||
| carry optional Ancillary Data (AD) that can affect the packet | carry optional Ancillary Data (AD) that can affect the packet- | |||
| forwarding decision or trigger Operations, Administration, and | forwarding decision or trigger Operations, Administration, and | |||
| Maintenance (OAM) logging, for example as described in [RFC9791]. | Maintenance (OAM) logging, for example, as described in [RFC9791]. | |||
| Ancillary Data can be used to carry additional information, for | AD can be used to carry additional information, for example, for | |||
| network slice purpose, as an example [RFC9791]. | network slice purposes (see [RFC9791]). | |||
| The requirements for In-stack network action and In-stack data (ISD) | The requirements for In-stack network action and In-Stack Data (ISD) | |||
| are described in [RFC9613]. | are described in [RFC9613]. | |||
| This document defines the syntax and semantics of network actions and | This document defines the syntax and semantics of network actions and | |||
| ancillary data encoded in an MPLS label stack. In-stack actions and | AD encoded in an MPLS label stack. In-stack actions and AD are | |||
| ancillary data are contained in a Network Action Sub-Stack (NAS), | contained in a Network Action Sub-Stack (NAS), which is recognized by | |||
| which is recognized by a new base Special Purpose Label (bSPL). This | a new base Special-Purpose Label (bSPL). This document follows the | |||
| document follows the framework specified in [RFC9789]. | framework specified in [RFC9789]. | |||
| 2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
| 2.1. Requirements Language | 2.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in BCP 14, [RFC2119] | "OPTIONAL" in this document are to be interpreted as described in | |||
| [RFC8174] when, and only when, they appear in all capitals, as shown | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| here. | capitals, as shown here. | |||
| 2.2. Abbreviations | 2.2. Abbreviations | |||
| The abbrevations defined in [RFC9789] and [RFC9613] are used in this | The abbreviations defined in [RFC9789] and [RFC9613] are used in this | |||
| document. | document. | |||
| +==============+=============================+===============+ | +==============+=============================+===============+ | |||
| | Abbreviation | Meaning | Reference | | | Abbreviation | Meaning | Reference | | |||
| +==============+=============================+===============+ | +==============+=============================+===============+ | |||
| | AD | Ancillary Data | [RFC9613] | | | AD | Ancillary Data | [RFC9613] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | bSPL | Base Special Purpose Label | [RFC9017] | | | bSPL | base Special Purpose Label | [RFC9017] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | BOS | Bottom Of Stack | [RFC9789] | | | BoS | Bottom of Stack | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | ECMP | Equal Cost Multi-Path | [RFC6790] | | | ECMP | Equal-Cost Multipath | [RFC6790] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | HBH | Hop-By-Hop Scope | [RFC9789] | | | HbH | Hop-by-Hop | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | I2E | Ingress-To-Egress Scope | [RFC9789] | | | I2E | Ingress to Egress | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | IHS | I2E, HBH, or Select Scope | [RFC9789], | | | IHS | I2E, HbH, or Select | [RFC9789], | | |||
| | | | This document | | | | | This document | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | ISD | In-stack Data | [RFC9613] | | | ISD | In-Stack Data | [RFC9613] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | LSE | Label Stack Entry | [RFC9789] | | | LSE | Label Stack Entry | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | LSP | Label Switched Path | [RFC3031] | | | LSP | Label Switched Path | [RFC3031] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | MNA | MPLS Network Actions | [RFC9789] | | | MNA | MPLS Network Action | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | NAI | Network Action Indicator | [RFC9613] | | | NAI | Network Action Indicator | [RFC9613] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | NAL | Network Action Length | This document | | | NAL | Network Action Length | This document | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | NAS | Network Action Sub-Stack | [RFC9789] | | | NAS | Network Action Sub-Stack | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | NASI | Network Action Sub-Stack | This document | | | NASI | Network Action Sub-Stack | This document | | |||
| | | Indicator | | | | | Indicator | | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | NASL | Network Action Sub-Stack | This document | | | NASL | Network Action Sub-Stack | This document | | |||
| | | Length | | | | | Length | | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | OAM | Operations, Administration, | [RFC6291] | | | OAM | Operations, Administration, | [RFC6291] | | |||
| | | and Maintenance | | | | | and Maintenance | | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | RLD | Readable Label Depth | [RFC9789] | | | RLD | Readable Label Depth | [RFC9789] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | TC | Traffic Class | [RFC5462] | | | TC | Traffic Class | [RFC5462] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| | TTL | Time To Live | [RFC3032] | | | TTL | Time to Live | [RFC3032] | | |||
| +--------------+-----------------------------+---------------+ | +--------------+-----------------------------+---------------+ | |||
| Table 1: Abbreviations | Table 1: Abbreviations | |||
| 2.3. Terminology | 2.3. Terminology | |||
| The following terms are used in this document. | The following terms are used in this document. | |||
| MPLS egress node: | MPLS Egress Node: | |||
| An MPLS edge node in its role in handling traffic as it leaves an | An MPLS edge node in its role in handling traffic as it leaves an | |||
| MPLS domain [RFC3031]. | MPLS domain [RFC3031]. | |||
| MPLS ingress node: | MPLS Ingress Node: | |||
| An MPLS edge node in its role in handling traffic as it enters an | An MPLS edge node in its role in handling traffic as it enters an | |||
| MPLS domain [RFC3031]. | MPLS domain [RFC3031]. | |||
| MPLS domain: | MPLS Domain: | |||
| A contiguous set of nodes which operate MPLS routing and | A contiguous set of nodes that operate MPLS routing and forwarding | |||
| forwarding and which are also in one Routing or Administrative | and that are also in one Routing or Administrative Domain | |||
| Domain [RFC3031]. | [RFC3031]. | |||
| Encapsulating Node: | Encapsulating Node: | |||
| An encapsulating node is a node that adds an NAS to the label | A node that adds a NAS to the label stack. | |||
| stack. | ||||
| 3. Overview | 3. Overview | |||
| The MPLS Network Action Sub-Stack is a set of Label Stack Entries | The MPLS NAS is a set of Label Stack Entries (LSEs) that appear as | |||
| (LSEs) that appear as part of an MPLS label stack and serve to encode | part of an MPLS label stack and serve to encode information about the | |||
| information about the network actions that should be invoked for the | network actions that should be invoked for the packet. Multiple | |||
| packet. Multiple NASes may appear in a label stack and be placed as | NASes may appear in a label stack and be placed as described in | |||
| described in Section 5. | Section 5. | |||
| This document specifies how network actions and their optional | This document specifies how network actions and their optional AD are | |||
| ancillary data are encoded as part of a NAS as a stack of LSEs. | encoded as part of a NAS as a stack of LSEs. Mechanisms that allow | |||
| Mechanisms that allow sharing of ancillary data (AD) between multiple | sharing of AD between multiple network actions encoded in the same | |||
| network actions encoded in the same NAS can be described in other | NAS can be described in other documents and do not rely on any | |||
| documents and do not rely on any explicit provision in the encodings | explicit provision in the encodings described in this document. | |||
| described in this document. | ||||
| This document defines new LSE formats beyond [RFC3032] that define | This document defines new LSE formats beyond those in [RFC3032] that | |||
| behaviors or are processed in different ways to MPLS labels as | define behaviors or are processed in different ways than MPLS labels | |||
| defined in [RFC3031]. Three new LSE formats are defined to carry 7 | as defined in [RFC3031]. Three new LSE formats are defined to carry | |||
| bits of network action opcodes and varying amounts of opcode-specific | 7 bits of network action opcodes and varying amounts of opcode- | |||
| ancillary data. Specifically, Format-B LSE carries up to 13 bits of | specific AD. Specifically, Format-B LSE carries up to 13 bits of AD | |||
| ancillary data in an LSE and Format-C LSE carries up to 20 bits of | in an LSE. Format-C LSE carries up to 20 bits of AD in an LSE. | |||
| ancillary data in an LSE. Format-D LSE is used when additional | Format-D LSE is used when additional AD is needed by the opcodes in | |||
| ancillary data is needed by the opcodes in Format-B or Format-C LSEs. | Format-B or Format-C LSEs. | |||
| As shown in an example in the Figure 1, the first LSE in an MNA Sub- | As shown in Figure 1, the first LSE in an MNA Sub-Stack uses Format- | |||
| Stack uses Format-A. The second LSE uses Format-B and is followed by | A. The second LSE uses Format-B and is followed by a Format-D LSE to | |||
| a Format-D LSE to carry additional data. Next, there may be a | carry additional data. Next, there may be a Format-C LSE for an | |||
| Format-C LSE for an additional network action followed by another | additional network action followed by another Format-D LSE for | |||
| Format-D LSE for additional data. You can add more Format-C and | additional data. Additional Format-C and Format-D LSEs may be added | |||
| Format-D LSEs as needed for additional network actions and data. | as needed for additional network actions and data. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| | MNA-Label=bSPL | TC |S| TTL |A | | MNA-Label=bSPL | TC |S| TTL |A | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| | Opcode | 13-bit Data |R|IHS|S| NASL |U| NAL |B | | Opcode | 13-bit Data |R|IHS|S| NASL |U| NAL |B | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| |1| 22-bit Data |S| 8-bit Data |D* | |1| 22-bit Data |S| 8-bit Data |D* | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| | Opcode | 16-bit Data |S|4b Data|U| NAL |C | | Opcode | 16-bit Data |S|4b Data|U| NAL |C | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| |1| 22-bit Data |S| 8-bit Data |D* | |1| 22-bit Data |S| 8-bit Data |D* | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| | Opcode | 16-bit Data |S|4b Data|U| NAL |C | | Opcode | 16-bit Data |S|4b Data|U| NAL |C | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| ~ ~ | ~ ~ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-- | |||
| Legend: * Format-D LSE presence indicated by NAL greater than one | * Format-D LSE presence indicated by NAL greater than one | |||
| Figure 1: An MNA Sub-Stack Encoding Example | Figure 1: An MNA Sub-Stack Encoding Example | |||
| 4. Label Stack Entry Formats | 4. Label Stack Entry Formats | |||
| The NAS uses a variety of different formats of LSEs for different | The NAS uses a variety of different formats of LSEs for different | |||
| purposes. This section describes the syntax of the various formats | purposes. This section describes the syntax of the various formats | |||
| while the overall structure of the NAS and the semantics of the | while the overall structure of the NAS and the semantics of the | |||
| various LSEs are described in the sections below. | various LSEs are described in the sections below. | |||
| 4.1. LSE Format A: The MNA Sub-Stack Indicator | 4.1. LSE Format A: The MNA Sub-Stack Indicator | |||
| LSE Format A is an LSE as described in [RFC3032] and [RFC5462]. The | LSE Format A is an LSE as described in [RFC3032] and [RFC5462]. The | |||
| label value is an IANA-assigned value (TBA) for the MNA bSPL label | label value is 4 for the MNA bSPL label from the "Base Special- | |||
| from the "Base Special-Purpose MPLS Label Values" registry to | Purpose MPLS Label Values" IANA registry (see Section 13.1) to | |||
| indicate the presence of MNA in the packet and the beginning of an | indicate the presence of an MNA in the packet and the beginning of an | |||
| MNA Sub-Stack in the label stack. | MNA Sub-Stack in the label stack. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: LSE Format A: The MNA Sub-Stack Indicator | Figure 2: LSE Format A: The MNA Sub-Stack Indicator | |||
| * S (1 bit): The Bottom of Stack [RFC3032]. MUST be set to 0 on | S (1 bit): The BoS [RFC3032]. MUST be set to 0 on transmitted | |||
| transmitted packets. If a packet is received with an LSE | packets. If a packet is received with an LSE containing the bSPL | |||
| containing the bSPL (value TBA) and with S bit set to 1, then the | (4) and with S bit set to 1, then the packet MUST be dropped. | |||
| packet MUST be dropped. | ||||
| 4.2. LSE Format B: The initial opcode | 4.2. LSE Format B: The Initial Opcode | |||
| LSE Format B is used to encode the first opcode in the NAS, plus a | LSE Format B is used to encode the first opcode in the NAS, plus a | |||
| number of other fields about the NAS. This LSE can carry up to 13 | number of other fields about the NAS. This LSE can carry up to 13 | |||
| bits of ancillary data. | bits of AD. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode | 13-bit Data |R|IHS|S| NASL |U| NAL | | | Opcode | 13-bit Data |R|IHS|S| NASL |U| NAL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: LSE Format B: The initial opcode | Figure 3: LSE Format B: The Initial Opcode | |||
| * Opcode (7 bits): The operation code for this LSE. See | Opcode (7 bits): The operation code for this LSE. See Section 5.1. | |||
| Section 5.1. | ||||
| * Data (13 bits): Opcode-specific ancillary data. | Data (13 bits): Opcode-specific AD. | |||
| * R (1 bit): Reserved. This bit MUST be set to zero on transmission | R (1 bit): Reserved. This bit MUST be set to zero on transmission | |||
| and ignored upon receipt. | and ignored upon receipt. | |||
| * IHS (2 bits): The scope of all the network actions in this NAS. | IHS (2 bits): The scope of all the network actions in this NAS. See | |||
| See Section 5.3. | Section 5.3. | |||
| * S (1 bit): The Bottom of Stack [RFC3032]. If NASL value is non- | S (1 bit): The BoS [RFC3032]. If the NASL value is non-zero, then | |||
| zero, then S bit MUST be 0. If a packet is received with S bit | the S bit MUST be 0. If a packet is received with the S bit set | |||
| set to 1 and a non-zero NASL value, then the packet MUST be | to 1 and a non-zero NASL value, then the packet MUST be dropped. | |||
| dropped. The encapsulating node MUST ensure that the S bit is set | The encapsulating node MUST ensure that the S bit is set to 1 only | |||
| to 1 only in the Last LSE in the MPLS header. | in the Last LSE in the MPLS header. | |||
| * NASL (4 bits): The Network Action Sub-Stack Length (NASL). The | NASL (4 bits): The Network Action Sub-Stack Length. The number of | |||
| number of Format C and Format D LSEs in the NAS, i.e., not | Format C and Format D LSEs in the NAS, i.e., not including the | |||
| including the leading Format A LSE and the Format B LSE. | leading Format A LSE and the Format B LSE. | |||
| * U (1 bit): Unknown Network Action Handling. See Section 5.4. | U (1 bit): Unknown Network Action Handling. See Section 5.4. | |||
| * NAL (3 bits): Network Action Length. The number of LSEs of | NAL (3 bits): Network Action Length. The number of LSEs of | |||
| additional data, encoded in Format D LSEs (Section 4.4) following | additional data, encoded in Format D LSEs (Section 4.4), following | |||
| this Format B LSE. The NAL value MUST be less than or equal to | this Format B LSE. The NAL value MUST be less than or equal to | |||
| the NASL value in the Format B LSE, if not the packet MUST be | the NASL value in the Format B LSE. If not, the packet MUST be | |||
| dropped. A Format C LSE would be following when the NAL value is | dropped. A Format C LSE would be following when the NAL value is | |||
| less than the NASL value. | less than the NASL value. | |||
| 4.3. LSE Format C: Subsequent opcodes | 4.3. LSE Format C: Subsequent Opcodes | |||
| LSE Format C is used to encode the subsequent opcodes in the NAS. | LSE Format C is used to encode the subsequent opcodes in the NAS. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode | 16-bit Data |S|4b Data|U| NAL | | | Opcode | 16-bit Data |S|4b Data|U| NAL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: LSE Format C: Subsequent opcodes | Figure 4: LSE Format C: Subsequent Opcodes | |||
| * Opcode (7 bits): The operation code for this LSE. See | Opcode (7 bits): The operation code for this LSE. See Section 5.1. | |||
| Section 5.1. | ||||
| * Data (16 bits + 4 bits): Opcode-specific ancillary data. | Data (16 bits + 4 bits): Opcode-specific AD. | |||
| * S (1 bit): The Bottom of Stack [RFC3032]. If NAL value is non- | S (1 bit): The BoS [RFC3032]. If the NAL value is non-zero and if | |||
| zero and if S bit is set to 1, then the packet MUST be dropped. | the S bit is set to 1, then the packet MUST be dropped. If this | |||
| If this is not the last LSE in the NAS and if S bit is set to 1 | is not the last LSE in the NAS and if the S bit is set to 1, then | |||
| then the packet MUST be dropped. The encapsulating node MUST | the packet MUST be dropped. The encapsulating node MUST ensure | |||
| ensure that the S bit is set to 1 only in the Last LSE. | that the S bit is set to 1 only in the Last LSE. | |||
| * U (1 bit): Unknown Network Action Handling. See Section 5.4. | U (1 bit): Unknown Network Action Handling. See Section 5.4. | |||
| * NAL (3 bits): Network Action Length. The number of LSEs of | NAL (3 bits): Network Action Length. The number of LSEs of | |||
| additional data, encoded in Format D LSEs (Section 4.4) following | additional data, encoded in Format D LSEs (Section 4.4) following | |||
| this Format C LSE. The NAL value MUST be less than or equal to | this Format C LSE. The NAL value MUST be less than or equal to | |||
| the NASL value in the Format B LSE, if not the packet MUST be | the NASL value in the Format B LSE. If not, the packet MUST be | |||
| dropped. | dropped. | |||
| A Format A and a Format B LSE MUST be present when a Format C LSE is | A Format A and a Format B LSE MUST be present when a Format C LSE is | |||
| carried in the NAS. | carried in the NAS. | |||
| 4.4. LSE Format D: Additional Data | 4.4. LSE Format D: Additional Data | |||
| LSE Format D is used to encode additional data that did not fit in | LSE Format D is used to encode additional data that did not fit in | |||
| the LSE with the preceding opcode. | the LSE with the preceding opcode. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1| 22-bit Data |S| 8-bit Data | | |1| 22-bit Data |S| 8-bit Data | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: LSE Format D: Additional Data | Figure 5: LSE Format D: Additional Data | |||
| * 1 (1 bit): The most significant bit MUST be set. This prevents | 1 (1 bit): The most significant bit MUST be set. This prevents | |||
| legacy implementations from misinterpreting this LSE as containing | legacy implementations from misinterpreting this LSE as containing | |||
| a special purpose label if the data begins with zeros. | a special purpose label if the data begins with zeros. | |||
| * S (1 bit): The Bottom of Stack [RFC3032]. If this is not the last | S (1 bit): The BoS [RFC3032]. If this is not the last LSE for the | |||
| LSE for the Network Action based on the NAL value and if S bit is | Network Action based on the NAL value and if the S bit is set to | |||
| set to 1 then the packet MUST be dropped. If this is not the last | 1, then the packet MUST be dropped. If this is not the last LSE | |||
| LSE in the NAS and if S bit is set to 1 then the packet MUST be | in the NAS and if the S bit is set to 1, then the packet MUST be | |||
| dropped. The encapsulating node MUST ensure that the S bit is set | dropped. The encapsulating node MUST ensure that the S bit is set | |||
| to 1 only in the Last LSE. | to 1 only in the Last LSE. | |||
| * Data (22 bits + 8 bits): Opcode-specific ancillary data. | Data (22 bits + 8 bits): Opcode-specific AD. | |||
| A Format A and a Format B LSE MUST be present when a Format D LSE is | A Format A and a Format B LSE MUST be present when a Format D LSE is | |||
| carried in the NAS. | carried in the NAS. | |||
| 5. The MNA Sub-Stack | 5. The MNA Sub-Stack | |||
| The MNA Sub-Stack MUST begin with a Format A LSE (Section 4.1). The | The MNA Sub-Stack MUST begin with a Format A LSE (Section 4.1). The | |||
| label value of the LSE contains the MNA bSPL (value TBA) to indicate | label value of the LSE contains the MNA bSPL (4) to indicate the | |||
| the presence of the MNA Sub-Stack. | presence of the MNA Sub-Stack. | |||
| The TC and TTL values of the Format A LSE retain their semantics as | The TC and TTL values of the Format A LSE retain their semantics as | |||
| defined in [RFC3032] and [RFC5462]. The TTL and TC values in the | defined in [RFC3032] and [RFC5462]. The TTL and TC values in the | |||
| Format A LSE are copied from the forwarding label at the top of the | Format A LSE are copied from the forwarding label at the top of the | |||
| label stack. The penultimate node on the path copies the TTL and TC | label stack. The penultimate node on the path copies the TTL and TC | |||
| values from the preceding LSE to the next LSE on the label stack, | values from the preceding LSE to the next LSE on the label stack, | |||
| overwriting the TTL and TC values of the next LSE, as specified in | overwriting the TTL and TC values of the next LSE, as specified in | |||
| Section 3.5 of [RFC3443] and Section 2.6.3 of [RFC3270] in the | Section 3.5 of [RFC3443] and Section 2.6.3 of [RFC3270] in the | |||
| Uniform Mode LSPs. If the node performing this copy is not aware of | Uniform Mode LSPs. If the node performing this copy is not aware of | |||
| MNA, this could overwrite the values in the Format-A LSE of the NAS. | MNA, this could overwrite the values in the Format-A LSE of the NAS. | |||
| skipping to change at page 10, line 25 ¶ | skipping to change at line 426 ¶ | |||
| The second LSE in a NAS MUST be a Format B LSE (Section 4.2). This | The second LSE in a NAS MUST be a Format B LSE (Section 4.2). This | |||
| LSE contains an initial opcode plus additional fields that describe | LSE contains an initial opcode plus additional fields that describe | |||
| the NAS. | the NAS. | |||
| The Format B LSE (Section 4.2) could optionally carry additional data | The Format B LSE (Section 4.2) could optionally carry additional data | |||
| in Format D (Section 4.4) LSEs, up to the length encoded in the LSE's | in Format D (Section 4.4) LSEs, up to the length encoded in the LSE's | |||
| NAL value. | NAL value. | |||
| A NAS MAY contain more Format C (Section 4.3) and Format D | A NAS MAY contain more Format C (Section 4.3) and Format D | |||
| (Section 4.4) LSEs, up to the length encoded in the NASL value. All | (Section 4.4) LSEs, up to the length encoded in the NASL value. All | |||
| Format D LSEs MUST follow a Format C or B LSE and be included in that | Format D LSEs MUST follow a Format C or Format B LSE and be included | |||
| LSE's NAL value. | in that LSE's NAL value. | |||
| 5.1. Opcodes | 5.1. Opcodes | |||
| The opcode is a 7-bit field that indicates the semantics of its LSE. | The opcode is a 7-bit field that indicates the semantics of its LSE. | |||
| Several opcodes are assigned special semantics (Section 6), others | Several opcodes are assigned special semantics (Section 6). Other | |||
| act as Network Action Indicators and are assigned through IANA | opcodes act as NAIs and are assigned through IANA (see Sections 10 | |||
| (Section 10 and Section 14.4). | and 13.2.2). | |||
| 5.2. Ancillary Data | 5.2. Ancillary Data | |||
| The data field carries opcode-specific data that is ancillary data | The data field carries opcode-specific data that is AD for a network | |||
| for a network action. In the case of opcode 1, the data field | action. In the case of opcode 1, the data field carries Flag-Based | |||
| carries Flag-Based Network Action Indicators without ancillary data. | Network Action Indicators without AD. | |||
| The label value (most significant 20 bits) in one or more consecutive | The label value (most significant 20 bits) in one or more consecutive | |||
| LSEs is commonly used for load balancing data flows in an ECMP | LSEs is commonly used for load-balancing data flows in an ECMP | |||
| environment. Modifying the first 20 bits in an LSE might alter a | environment. Modifying the first 20 bits in an LSE might alter a | |||
| packet's path and result in out-of-order delivery of packets | packet's path and result in out-of-order delivery of packets | |||
| belonging to a given flow. To maintain the stability of deployed | belonging to a given flow. To maintain the stability of deployed | |||
| services in ECMP environments that rely on label value information | services in ECMP environments that rely on label value information | |||
| for load-balancing, care must be taken when encoding network action | for load-balancing, care must be taken when encoding network action | |||
| data in the given LSE. If the network action data may differ among | data in the given LSE. If the network action data may differ among | |||
| packets in the same flow or change during forwarding across the MPLS | packets in the same flow or change during forwarding across the MPLS | |||
| network, it MUST NOT be placed in the most significant 20 bits of a | network, it MUST NOT be placed in the most significant 20 bits of a | |||
| Format B LSE (Section 4.2), a Format C LSE (Section 4.3), or a Format | Format B LSE (Section 4.2), a Format C LSE (Section 4.3), or a Format | |||
| D LSE (Section 4.4). Thus, the available bits for data that can | D LSE (Section 4.4). Thus, the available bits for data that can | |||
| change by a transit node or differ among packets of the same flow in | change by a transit node or differ among packets of the same flow in | |||
| Format A and Format B LSEs are 0, Format C LSE is 7 (bits 20-22 and | Format A and Format B LSEs is 0, in a Format C LSE 7 (bits 20-22 and | |||
| 25-28) and Format D LSE is 11 (bits 20-22 and 24-31). | 25-28), and in a Format D LSE 11 (bits 20-22 and 24-31). | |||
| Similarly, to preserve service stability, such data also MUST NOT be | Similarly, to preserve service stability, such data also MUST NOT be | |||
| carried in the most significant 23 bits of these LSEs when the legacy | carried in the most significant 23 bits of these LSEs when the legacy | |||
| implementation also uses the TC value, in addition to the label | implementation also uses the TC value, in addition to the label | |||
| value, in all LSEs when computing ECMP decisions. | value, in all LSEs when computing ECMP decisions. | |||
| The available mitigations for these problems are to use additional | The available mitigations for these problems are to use additional | |||
| Format D LSEs to carry the data, or to place the data in Post-Stack | Format D LSEs to carry the data or to place the data in Post-Stack | |||
| Data as described in [RFC9789]. | Data as described in [RFC9789]. | |||
| In network deployments where it is known that a load-balancing of | In network deployments where it is known that a load-balancing of | |||
| data flows is not used, or, otherwise, if only the explicitly | data flows is not used, or if only the explicitly signaled entropy | |||
| signaled entropy value is used, and it is certain that the load- | value is used, and it is certain that the load-balancing path | |||
| balancing path selection will not be based on the label value of the | selection will not be based on the label value of the LSEs, then the | |||
| LSEs, then the data in the label value of the LSEs in ISD MAY be | data in the label value of the LSEs in the ISD MAY be mutable within | |||
| mutable within the data flow without causing the out-of-order | the data flow without causing the out-of-order delivery of packets. | |||
| delivery of packets. | ||||
| 5.3. Scope | 5.3. Scope | |||
| The IHS field in the Format B LSE indicates the scope of all the NAIs | The IHS field in the Format B LSE indicates the scope of all the NAIs | |||
| encoded in the NAS. Scope defines which nodes along the MPLS path | encoded in the NAS. Scope defines which nodes along the MPLS path | |||
| should perform the network actions found within the NAS. The | should perform the network actions found within the NAS. The | |||
| specific values of the IHS field are as follows: | specific values of the IHS field are as follows: | |||
| +======+=========================+ | +======+=========================+ | |||
| | Bits | Scope | | | Bits | Scope | | |||
| +======+=========================+ | +======+=========================+ | |||
| | 00 | I2E | | | 00 | I2E | | |||
| +------+-------------------------+ | +------+-------------------------+ | |||
| | 01 | HBH | | | 01 | HbH | | |||
| +------+-------------------------+ | +------+-------------------------+ | |||
| | 10 | Select | | | 10 | Select | | |||
| +------+-------------------------+ | +------+-------------------------+ | |||
| | 11 | Reserved for future use | | | 11 | Reserved for future use | | |||
| +------+-------------------------+ | +------+-------------------------+ | |||
| Table 2: IHS Scope Values | Table 2: IHS Scope Values | |||
| Ingress To Egress (I2E) - The Network Actions in this NAS MUST NOT | Ingress to Egress (I2E): The Network Actions in this NAS MUST NOT be | |||
| be processed by any node except the egress node. | processed by any node except the egress node. | |||
| Hop-By-Hop (HBH) - All nodes along the path MUST process the NAS. | Hop-by-Hop (HbH): All nodes along the path MUST process the NAS. | |||
| Select - Only specific nodes along the path that brings NAS to top | Select: Only specific nodes along the path that bring NAS to the top | |||
| of the stack will perform the action. | of the stack will perform the action. | |||
| A given NAS can only carry NAIs with the same scope (I2E/HBH/Select). | A given NAS can only carry NAIs with the same scope (I2E/HbH/Select). | |||
| To support multiple scopes for a single packet, multiple NASes MAY be | To support multiple scopes for a single packet, multiple NASes MAY be | |||
| included in a single label stack. | included in a single label stack. | |||
| The egress node is included in the HBH scope. This implies that the | The egress node is included in the HbH scope. This implies that the | |||
| penultimate node MUST NOT remove a HBH NAS. The egress node may | penultimate node MUST NOT remove an HbH NAS. The egress node may | |||
| receive a NAS at the top of the label stack as discussed in | receive a NAS at the top of the label stack as discussed in | |||
| Section 9. | Section 9. | |||
| An I2E scope NAS, if present, MUST be encoded after any HBH or | An I2E scope NAS, if present, MUST be encoded after any HbH or | |||
| Select-scope NASes. This makes it easier for the transit nodes to | Select-scope NASes. This makes it easier for the transit nodes to | |||
| process a NAS with HBH or Select scope. | process a NAS with HbH or Select scope. | |||
| If a packet is received with the IHS scope set to "Reserved for | If a packet is received with the IHS scope set to "Reserved for | |||
| future use", the packet is processed based on the U bit in the Format | future use", the packet is processed based on the U bit in the Format | |||
| B LSE in the NAS. | B LSE in the NAS. | |||
| 5.4. Unknown Network Action Handling | 5.4. Unknown Network Action Handling | |||
| The Unknown Network Action Handling (U) field in a Format B LSE | The Unknown Network Action Handling (U) field in a Format B LSE | |||
| (Section 4.2) and Format C LSE (Section 4.3) is a 1-bit value that | (Section 4.2) and Format C LSE (Section 4.3) is a 1-bit value that | |||
| defines the action to be taken by a node that does not understand an | defines the action to be taken by a node that does not understand an | |||
| skipping to change at page 12, line 44 ¶ | skipping to change at line 539 ¶ | |||
| | Bit | Action | | | Bit | Action | | |||
| +=====+=====================+ | +=====+=====================+ | |||
| | 0 | Skip to the next NA | | | 0 | Skip to the next NA | | |||
| +-----+---------------------+ | +-----+---------------------+ | |||
| | 1 | Drop the packet | | | 1 | Drop the packet | | |||
| +-----+---------------------+ | +-----+---------------------+ | |||
| Table 3: Unknown Network | Table 3: Unknown Network | |||
| Action Handling | Action Handling | |||
| When a packet with an unknown Network Action is dropped, the node | When a packet with an Unknown Network Action Handling is dropped, the | |||
| should maintain a local counter for this event, and may send a rate- | node should maintain a local counter for this event and may send a | |||
| limited notification to the operator. | rate-limited notification to the operator. | |||
| 5.5. Ordering | 5.5. Ordering | |||
| The network actions encoded in the NAS MUST be processed in the order | The network actions encoded in the NAS MUST be processed in the order | |||
| that they appear in the NAS, from the top of the NAS to the bottom. | that they appear in the NAS, from the top of the NAS to the bottom. | |||
| NAIs encoded as flags (see Section 6.2) MUST be processed from the | NAIs encoded as flags (see Section 6.2) MUST be processed from the | |||
| most significant bit to the least significant bit. If a label stack | most significant bit to the least significant bit. If a label stack | |||
| contains multiple NASes, they MUST be processed in the order that | contains multiple NASes, they MUST be processed in the order that | |||
| they appear in the label stack, subject to the restrictions in | they appear in the label stack, subject to the restrictions in | |||
| Section 7. | Section 7. | |||
| 6. Special Opcodes | 6. Special Opcodes | |||
| Below are the special opcodes defined to build a basic In-stack MNA | Below are the special opcodes defined to build a basic In-stack MNA | |||
| solution and has been assigned through IANA registry (Section 14.4). | solution and assigned in the "Network Action Opcodes" IANA registry | |||
| In the future, additional special opcodes can be defined and their | (see Section 13.2.2). In the future, additional special opcodes may | |||
| code-points assigned from the "Network Action Opcodes" IANA registry | be defined and their code points assigned from this registry. | |||
| (Section 14.4). | ||||
| 6.1. bSPL Protection | 6.1. bSPL Protection | |||
| Opcode: 0 | Opcode: 0 | |||
| Purpose: Legacy implementations may scan the label stack looking for | Purpose: Legacy implementations may scan the label stack looking for | |||
| bSPL values. As long as the opcode field is non-zero, an LSE cannot | bSPL values. As long as the opcode field is non-zero, an LSE | |||
| be misinterpreted as containing a bSPL. Opcode 0 is therefore | cannot be misinterpreted as containing a bSPL. Therefore, opcode | |||
| reserved and not to be used. | 0 is reserved and not to be used. | |||
| 6.2. Flag-Based NAIs without AD | 6.2. Flag-Based NAIs Without AD | |||
| Opcode: 1 | Opcode: 1 | |||
| Purpose: This opcode is used for Network actions that do not require | Purpose: This opcode is used for Network actions that do not require | |||
| Ancillary Data. A single flag can be used to indicate each of these | AD. A single flag can be used to indicate each of these network | |||
| network actions. | actions. | |||
| LSE Formats: B, C, D | LSE Formats: B, C, D | |||
| Data: The data field carries Network Action Indicators, which should | Data: The data field carries NAIs, which should be evaluated from | |||
| be evaluated from the most significant bit to the least significant | the most significant bit to the least significant bit. If this | |||
| bit. If this opcode is used with LSE Format B only, then up to 13 | opcode is used with LSE Format B only, then up to 13 flags may be | |||
| flags may be carried. If this opcode is used with LSE Format C only, | carried. If this opcode is used with LSE Format C only, then up | |||
| then up to 20 flags may be carried. Format D LSEs can be used with | to 20 flags may be carried. Format D LSEs can be used with format | |||
| format C LSEs to encode more than 20 flags. Flags are assigned from | C LSEs to encode more than 20 flags. Flags are assigned from the | |||
| the "Network Action Flags Without Ancillary Data" registry | "Network Action Flags Without Ancillary Data" registry | |||
| (Section 14.3). If flags need to be evaluated in a different order, | (Section 13.2.1). If flags need to be evaluated in a different | |||
| multiple LSEs using this opcode may be used to specify the requested | order, multiple LSEs using this opcode may be used to specify the | |||
| order. The Flag-Based Network Action Indicators MUST follow the | requested order. The Flag-Based NAIs MUST follow the procedure | |||
| procedure for data specified in Section 5.2. | for data specified in Section 5.2. | |||
| Scope: This opcode can be used with any scope. | Scope: This opcode can be used with any scope. | |||
| 6.3. No-Operation Opcode | 6.3. No-Operation Opcode | |||
| Opcode: 2 | Opcode: 2 | |||
| Purpose: This opcode is used to indicate that this opcode does not | Purpose: This opcode is used to indicate that it does not perform | |||
| perform any Network Action and MUST be skipped. | any Network Action and MUST be skipped. | |||
| LSE Format: B | LSE Format: B | |||
| Scope: Any scope value may be set and MUST be ignored. | Scope: Any scope value may be set and MUST be ignored. | |||
| 6.4. Extension Opcode | 6.4. Extension Opcode | |||
| Opcode: 127 | Opcode: 127 | |||
| Purpose: This opcode is used to extend the current opcode range | Purpose: This opcode is used to extend the current opcode range | |||
| beyond 127 in the future. If this opcode is not supported, then the | beyond 127 in the future. If this opcode is not supported, then | |||
| packet with the opcode 127 MUST be dropped regardless of the setting | the packet with opcode 127 MUST be dropped regardless of the | |||
| of the U bit. Use of this opcode is outside the scope of this | setting of the U bit. Use of this opcode is outside the scope of | |||
| document. | this document. | |||
| 7. NAS placement in the Label Stack | 7. NAS Placement in the Label Stack | |||
| The node adding a NAS to the label stack places a copy of the NAS | The node adding a NAS to the label stack places a copy of the NAS | |||
| where the relevant nodes can read it. Each downstream node along the | where the relevant nodes can read it. Each downstream node along the | |||
| path has a Readable Label Depth (RLD). If the NAS is to be processed | path has a Readable Label Depth (RLD). If the NAS is to be processed | |||
| by a downstream MNA-capable node, then the entire NAS MUST be placed | by a downstream MNA-capable node, then the entire NAS MUST be placed | |||
| so that it is within RLD by the time the packet reaches the | so that it is within RLD by the time the packet reaches the | |||
| downstream MNA-capable node. The RLD of the downstream MNA-capable | downstream MNA-capable node. The RLD of the downstream MNA-capable | |||
| node MUST be learned as described in Section 2.3.1 of [RFC9789]. | node MUST be learned as described in Section 2.3.1 of [RFC9789]. | |||
| If the label stack is deep, several copies of the NAS may need to be | If the label stack is deep, several copies of the NAS may need to be | |||
| encoded in the label stack. | encoded in the label stack. | |||
| For a NAS with HBH scope, every node will process the top copy of the | For a NAS with HbH scope, every node will process the top copy of the | |||
| NAS, but the NAS MUST NOT appear at the top of the stack at any MNA- | NAS. However, the NAS MUST NOT appear at the top of the stack at any | |||
| incapable node on the path, that is ensured by the encapsulating node | MNA-incapable node on the path that is ensured by the encapsulating | |||
| using the node capability, as described in Section 8. | node using the node capability, as described in Section 8. | |||
| A NAS MUST NOT appear at the top of the stack after popping the | A NAS MUST NOT appear at the top of the stack after popping the | |||
| forwarding label on an MNA-incapable node on the path. | forwarding label on an MNA-incapable node on the path. | |||
| The node behaviour, where a NAS with I2E and HBH scopes is also | The behavior of a node where a NAS with I2E and HbH scopes is also | |||
| removed along with popping the forwarding label on a PHP node, is | removed along with popping the forwarding label on a PHP node is | |||
| outside the scope of this document. | outside the scope of this document. | |||
| For a NAS with Select scope, it is processed by the node that brings | For a NAS with Select scope, it is processed by the node that brings | |||
| it to the top of stack (for example, in the case of using MPLS label | it to the top of the stack (for example, in the case of using MPLS | |||
| pop operation in Segment Routing) and then the NAS is removed from | label pop operation in Segment Routing); then, the NAS is removed | |||
| the stack. The select-scoped NAS needs to be inserted after the | from the stack. The select-scoped NAS needs to be inserted after the | |||
| forwarding label and before the next forwarding label. It could be | forwarding label and before the next forwarding label. It could be | |||
| inserted before or after a HBH NAS. Note that the case of a NAS with | inserted before or after an HbH NAS. Note that the case of a NAS | |||
| Select scope with MPLS label swap operation (for example, with RSVP | with Select scope with an MPLS label swap operation (for example, | |||
| Traffic Engineering LSPs) is for future study. | with RSVP-TE LSPs) is for future study. | |||
| For I2E scope, only one copy of the NAS needs to be added at the | For I2E scope, only one copy of the NAS needs to be added at the | |||
| bottom of the stack. | bottom of the stack. | |||
| Transit, non-penultimate nodes that pop a forwarding label and expose | A transit node that is not the penultimate node that pops a | |||
| a copy of a NAS MUST remove it. | forwarding label and exposes a copy of a NAS MUST remove that NAS. | |||
| An MNA-capable node performing Penultimate Hop Popping (PHP) that | An MNA-capable node performing Penultimate Hop Popping (PHP) that | |||
| pops the forwarding label with only the NAS(es) remaining on the | pops the forwarding label with only the NAS(es) remaining on the | |||
| stack MUST NOT remove the NAS(es). Instead, it forwards the packet | stack MUST NOT remove the NAS(es). Instead, it forwards the packet | |||
| with the NAS(es) at the top of stack to the next node. Note that the | with the NAS(es) at the top of the stack to the next node. Note that | |||
| behavior of the PHP node, as defined in [RFC3270] for TC processing, | the behavior of the PHP node, as defined in [RFC3270] for TC | |||
| and as defined in [RFC3443] for TTL processing, is not modified | processing and as defined in [RFC3443] for TTL processing, is not | |||
| regardless of whether the PHP node supports MNA. | modified regardless of whether the PHP node supports MNA. | |||
| The node that receives the NAS at the top of the label stack MUST | The node that receives the NAS at the top of the label stack MUST | |||
| process and remove it. | process and remove it. | |||
| 7.1. Actions when Pushing Labels | 7.1. Actions When Pushing Labels | |||
| An MNA-capable node may need to push additional labels as well as | An MNA-capable node may need to push additional labels as well as | |||
| push new network actions onto a received packet. | push new network actions onto a received packet. | |||
| While pushing additional labels on to the label stack of the received | While pushing additional labels onto the label stack of the received | |||
| packet, the MNA-capable node MUST verify that the entire top-most NAS | packet, the MNA-capable node MUST verify that the entire topmost NAS | |||
| with HBH scope is still within the RLD of the downstream MNA-capable | with HbH scope is still within the RLD of the downstream MNA-capable | |||
| nodes. If required, the MNA-capable node MAY create a copy of the | nodes. If required, the MNA-capable node MAY create a copy of the | |||
| top-most NAS with HBH scope and insert it within the RLD of the | topmost NAS with HbH scope and insert it within the RLD of the | |||
| downstream MNA-capable nodes on the label stack. | downstream MNA-capable nodes on the label stack. | |||
| When an MNA-capable node needs to push a new NAS with HBH scope on to | When an MNA-capable node needs to push a new NAS with HbH scope on to | |||
| a received packet that already has a NAS with HBH scope, it SHOULD | a received packet that already has a NAS with HbH scope, it SHOULD | |||
| copy (and merge) the network actions (including their Ancillary Data) | copy (and merge) the network actions (including their AD) from the | |||
| from the received top-most NAS with HBH scope in the new NAS with HBH | received topmost NAS with HbH scope in the new NAS with HbH scope. | |||
| scope. The new NAS MUST be placed within the RLD of the downstream | The new NAS MUST be placed within the RLD of the downstream MNA- | |||
| MNA-capable nodes. This behavior can be based on local policy. | capable nodes. This behavior can be based on local policy. | |||
| The new network actions added MUST NOT conflict with the network | The new network actions added MUST NOT conflict with the network | |||
| actions in the received NAS with HBH scope. The mechanism to resolve | actions in the received NAS with HbH scope. The mechanism to resolve | |||
| such conflicts depend on the network actions and can be based on | such conflicts depends on the network actions and can be based on | |||
| local policy. The MNA-capable node that pushes entries MUST | local policy. The MNA-capable node that pushes entries MUST | |||
| understand any network actions which it is pushing which may result | understand any network actions that it is pushing that may result in | |||
| in a conflict, and MUST resolve any conflicts between new and | a conflict and MUST resolve any conflicts between new and received | |||
| received network actions. In the usual case of a conflict of | network actions. In the usual case of a conflict of duplicating a | |||
| duplicating a network action, the definition of a network action MUST | network action, the definition of a network action MUST give guidance | |||
| give guidance on conflict resolution. | on conflict resolution. | |||
| 8. Node Capability Signaling | 8. Node Capability Signaling | |||
| The encapsulating node MUST make sure that the NAS can be processed | The encapsulating node MUST make sure that the NAS can be processed | |||
| by the transit and egress nodes. In addition, the encapsulated | by the transit and egress nodes. In addition, the encapsulated | |||
| packet MUST NOT exceed the path MTU as described in [RFC3032]. | packet MUST NOT exceed the path MTU as described in [RFC3032]. | |||
| * The node responsible for selecting a path through the MPLS network | * The node responsible for selecting a path through the MPLS network | |||
| needs to know and consider the MNA-capabilities and RLD of the | needs to know and consider the MNA-capabilities and RLD of the | |||
| transit nodes, and the MNA-capabilities of the egress node as | transit nodes as well as the MNA-capabilities of the egress node | |||
| described in Section 2.3 of [RFC9789]. | as described in Section 2.3 of [RFC9789]. | |||
| * Information about the capabilities of the nodes may be configured, | * Information about the capabilities of the nodes may be configured, | |||
| collected through management protocols, or distributed by control | collected through management protocols, or distributed by control | |||
| protocols (such as advertising by routing protocols). | protocols (such as advertising by routing protocols). | |||
| * The mechanisms by which the capabilities of the nodes are known by | * The mechanisms by which the capabilities of the nodes are known by | |||
| the node responsible for selecting a path through the MPLS network | the node responsible for selecting a path through the MPLS network | |||
| are out of scope for this document. | are out of scope for this document. | |||
| * In the case of MPLS Segment Routing (SR-MPLS), as well as the RLD, | * In the case of Segment Routing over MPLS (SR-MPLS), as well as the | |||
| the path computation system needs to know the MSD [RFC8664] that | RLD, the path computation system needs to know the Maximum SID | |||
| can be imposed at the ingress node of a given SR path. This | Depth (MSD) [RFC8664] that can be imposed at the ingress node of a | |||
| ensures that the label stack depth of a computed path does not | given SR path. This ensures that the label stack depth of a | |||
| exceed the maximum number of labels (i.e., MSD) the node is | computed path does not exceed the maximum number of labels (i.e., | |||
| capable of imposing and the maximum number of labels that can be | MSD) the node is capable of imposing and the maximum number of | |||
| read by the MNA-processing nodes in the path. The MSD MUST | labels that can be read by the MNA-processing nodes in the path. | |||
| include the MNA Sub-Stacks that will be added. | The MSD MUST include the MNA Sub-Stacks that will be added. | |||
| * The encapsulating node MUST learn about the RLD of the nodes in | * The encapsulating node MUST learn about the RLD of the nodes in | |||
| the path as described in Section 2.3.1 of [RFC9789]. | the path as described in Section 2.3.1 of [RFC9789]. | |||
| 9. Processing the Network Action Sub-Stack | 9. Processing the Network Action Sub-Stack | |||
| This section defines the specific responsibilities for nodes along an | This section defines the specific responsibilities for nodes along an | |||
| LSP [RFC3031]. | LSP [RFC3031]. | |||
| 9.1. Encapsulating Node Responsibilities | 9.1. Encapsulating Node Responsibilities | |||
| The encapsulating node MAY add NASes to the label stack in accordance | The encapsulating node MAY add NASes to the label stack in accordance | |||
| with its policies, the placement restrictions in Section 7, and the | with its policies, the placement restrictions in Section 7, and the | |||
| capabilities learned from Section 8. | capabilities learned from Section 8. | |||
| If there is an existing label stack, the encapsulating node MUST NOT | If there is an existing label stack, the encapsulating node MUST NOT | |||
| modify the first 20 bits of any LSE in the label stack when the ECMP | modify the first 20 bits of any LSE in the label stack when the ECMP | |||
| technique in the network is using the hashing of the labels on the | technique in the network uses hashing of the labels on the label | |||
| label stack. | stack. | |||
| 9.2. Transit Node Responsibilities | 9.2. Transit Node Responsibilities | |||
| The transit node is the node that processes a NAS in the Label stack | The transit node is the node that processes a NAS in the Label stack | |||
| but does not push any new NAS. | but does not push any new NAS. | |||
| The transit node MUST follow the procedure for data specified in | The transit node MUST follow the procedure for data specified in | |||
| Section 5.2. | Section 5.2. | |||
| Transit nodes MUST process the NASes in the label stack, according to | Transit nodes MUST process the NASes in the label stack according to | |||
| the rules set out in Section 5.5. | the rules set out in Section 5.5. | |||
| A transit node that processes a NAS and does not recognize the value | A transit node that processes a NAS and does not recognize the value | |||
| of an opcode MUST follow the rules according to the setting of the | of an opcode MUST follow the rules according to the setting of the | |||
| Unknown Action Handling value in the NAS as described in | Unknown Network Action Handling value in the NAS as described in | |||
| (Section 5.4). | Section 5.4. | |||
| 9.3. Penultimate Node Responsibilities | 9.3. Penultimate Node Responsibilities | |||
| In addition to the transit node responsibilities, the penultimate | In addition to the transit node responsibilities, the penultimate | |||
| node and penultimate SR-MPLS segment node MUST NOT remove the last | node and penultimate SR-MPLS segment node MUST NOT remove the last | |||
| copy of an HBH or I2E NAS when it is exposed after removing the | copy of an HbH or I2E NAS when it is exposed after removing the | |||
| forwarding (transport) label. This allows the egress node to process | forwarding (transport) label. This allows the egress node to process | |||
| the NAS. | the NAS. | |||
| 9.4. Egress Node Responsibilities | 9.4. Egress Node Responsibilities | |||
| The egress node MUST remove any NAS it receives. | The egress node MUST remove any NAS it receives. | |||
| 10. Network Action Indicator Opcode Definition | 10. Network Action Indicator Opcode Definition | |||
| The following information MUST be defined for a new Network Action | The following information MUST be defined for a new NAI opcode | |||
| Indicator opcode request in the document that specifies the Network | request in the document that specifies the Network Action. | |||
| Action. | ||||
| A request for a new NAI opcode MUST include the following | ||||
| information: | ||||
| * Format: The definition of the new Network Action MUST specify the | Format: The definition of the new Network Action MUST specify the | |||
| LSE Formats. The opcode can define Network Action in Format B or | LSE formats. The opcode can define Network Action in Format B or | |||
| C or both Format B and C. Both Format B and C LSEs MAY optionally | C or both Formats B and C. Both Format B and C LSEs MAY | |||
| carry Format D LSEs. | optionally carry Format D LSEs. | |||
| * Scope: The definition of the new Network Action MUST specify at | Scope: The definition of the new Network Action MUST specify at | |||
| least one scope (I2E, HBH, Select) for the Network Action, and MAY | least one scope (I2E, HbH, Select) for the Network Action and MAY | |||
| specify more than one scope. | specify more than one scope. | |||
| * Ancillary Data: The definition of the new Network Action MUST | Ancillary Data: The definition of the new Network Action MUST | |||
| specify the quantity, syntax, and semantics of any associated | specify the quantity, syntax, and semantics of any associated AD. | |||
| Ancillary Data. The Ancillary Data MAY be variable length, but | The AD MAY be variable length, but the NAL MUST be computable | |||
| the NAL MUST be computable based on the data added in the NAS. | based on the data added in the NAS. | |||
| * Processing: The definition of the new Network Action MUST specify | Processing: The definition of the new Network Action MUST specify | |||
| the detailed procedure for processing the network action. | the detailed procedure for processing the network action. | |||
| * Interactions: The definition of the new Network Action MUST | Interactions: The definition of the new Network Action MUST specify | |||
| specify its interaction including merging with other currently | its interaction including merging with other currently defined | |||
| defined Network Action if there is any. | Network Action if there is any. | |||
| An assignment for a NAI MAY make requests from any combination of the | An assignment for a NAI MAY make requests from any combination of the | |||
| "Network Action Opcodes" or "Network Action Flags Without Ancillary | "Network Action Opcodes" or "Network Action Flags Without Ancillary | |||
| Data" assignments. This decision should optimize for eventual | Data" assignments (see Section 13). This decision should optimize | |||
| encoding efficiency. If the NAI does not require any ancillary data, | for eventual encoding efficiency. If the NAI does not require any | |||
| then a flag is preferred as only one bit is used in the encoding. | AD, then a flag is preferred as only one bit is used in the encoding. | |||
| 11. Implementation Status | ||||
| [Note to the RFC Editor - remove this section before publication, as | ||||
| well as remove the reference to [RFC7942]] | ||||
| This section records the status of known implementations of the | ||||
| protocol defined by this specification at the time of posting of this | ||||
| Internet-Draft, and is based on a proposal described in [RFC7942]. | ||||
| The description of implementations in this section is intended to | ||||
| assist the IETF in its decision processes in progressing drafts to | ||||
| RFCs. Please note that the listing of any individual implementation | ||||
| here does not imply endorsement by the IETF. Furthermore, no effort | ||||
| has been spent to verify the information presented here that was | ||||
| supplied by IETF contributors. This is not intended as, and must not | ||||
| be construed to be, a catalog of available implementations or their | ||||
| features. Readers are advised to note that other implementations may | ||||
| exist. | ||||
| 11.1. University of Tuebingen Implementation | ||||
| The solution defined in the document draft-ietf-mpls-mna-hdr-08 has | ||||
| been implemented using P4 pipeline. The implementation code can be | ||||
| found at https://github.com/uni-tue-kn/P4-MNA. This implementation | ||||
| uses bSPL value 4 as an MNA label. | ||||
| 12. Security Considerations | 11. Security Considerations | |||
| The security considerations in [RFC3032] and [RFC9789] also apply to | The security considerations in [RFC3032] and [RFC9789] also apply to | |||
| this document. | this document. | |||
| In addition, MNA creates a new dimension in security concerns: | In addition, MNA creates a new dimension in security concerns: | |||
| * The actions of an encapsulating node can affect any or all of the | * The actions of an encapsulating node can affect any or all of the | |||
| nodes along the path. In the most common and benign situations, | nodes along the path. In the most common and benign situations, a | |||
| such as a syntactically incorrect packet could result in packet | syntactically incorrect packet could result in packet loss or | |||
| loss or corruption. | corruption, for example. | |||
| * The semantics of a network action are unbounded and may be | * The semantics of a network action are unbounded and may be | |||
| insecure. A network action could be defined that made arbitrary | insecure. A network action could be defined that makes arbitrary | |||
| changes to the memory of the forwarding router, which could then | changes to the memory of the forwarding router, which could then | |||
| be used by the encapsulating node to compromise every MNA-capable | be used by the encapsulating node to compromise every MNA-capable | |||
| router in the network. | router in the network. | |||
| * The MNA architecture supports locally-defined network actions. | * The MNA architecture supports locally defined network actions. | |||
| For such actions, there will be limited oversight to ensure that | For such actions, there will be limited oversight to ensure that | |||
| the semantics do not create security issues. Implementors and | the semantics do not create security issues. Implementors and | |||
| network operators will need to ensure that even the locally- | network operators will need to ensure that even the locally | |||
| defined network actions do not compromise the security of the | defined network actions do not compromise the security of the | |||
| network by following the security considerations specified in this | network by following the security considerations specified in this | |||
| document. | document. | |||
| * The MPLS domain border nodes MUST ensure that the MPLS packets | * The MPLS domain border nodes MUST ensure that the MPLS packets | |||
| with MNA from any domain with a different administrative control | with MNA from any domain with a different administrative control | |||
| can be filtered to prevent entering the provider MPLS domain. The | can be filtered to prevent entering the provider MPLS domain. The | |||
| filtering capability MAY be enabled on a per network action basis | filtering capability MAY be enabled on a per-network-action basis, | |||
| and it can be based on a local policy. The filtering capability | and it can be based on a local policy. The filtering capability | |||
| MUST be implemented on those nodes before deploying MNA in the | MUST be implemented on those nodes before deploying MNA in the | |||
| provider MPLS domain. The RLD on the filtering node MUST be | provider MPLS domain. The RLD on the filtering node MUST be | |||
| higher than the RLD on all other nodes in the provider MPLS | higher than the RLD on all other nodes in the provider MPLS | |||
| domain. | domain. | |||
| * The MNA architecture supports modifying the AD on the intermediate | * The MNA architecture supports modifying the AD on the intermediate | |||
| nodes, so the critical network functions should either not rely on | nodes so the critical network functions either should not rely on | |||
| the data or should be aware of the risks and use other means to | the data or should be aware of the risks and use other means to | |||
| verify the security of the whole network. | verify the security of the whole network. | |||
| * The "private Use" opcodes in "Network Action Opcodes" Section 14.4 | * The "Private Use" opcodes in the "Network Action Opcodes" registry | |||
| and "Network Action Flags Without Ancillary Data" Section 14.3 | (see Section 13.2.2) and the "Network Action Flags Without | |||
| Registry are subject to the considerations described in [RFC8126]. | Ancillary Data" registry (see Section 13.2.1) are subject to the | |||
| considerations described in [RFC8126]. | ||||
| * System designers must be aware that information included in | * System designers must be aware that information included in AD may | |||
| Ancillary Data may be transmitted "in the clear." Network actions | be transmitted "in the clear". Network actions that require the | |||
| that require the exchange of sensitive data, must be defined in | exchange of sensitive data must be defined in such a way that the | |||
| such a way that the data is encrypted in transit. Otherwise, | data is encrypted in transit. Otherwise, sensitive data MUST NOT | |||
| sensitive data MUST NOT be transmitted using these mechanisms. | be transmitted using these mechanisms. | |||
| * Mis-delivery of a packet due to malformed forwarding action data | * Mis-delivery of a packet due to malformed forwarding action data | |||
| could be considered a security risk. | could be considered a security risk. | |||
| 13. Operational Considerations | 12. Operational Considerations | |||
| 13.1. Manageability Considerations | 12.1. Manageability Considerations | |||
| An MNA implementation MAY collect the following counters: | An MNA implementation MAY collect the following counters: | |||
| * Packets with MNA received | * Packets with MNA received | |||
| * MNA sub-stacks processed | * MNA sub-stacks processed | |||
| * MNA per-network-action counters | * MNA per-network-action counters | |||
| * Packets with MNA dropped due to unknown actions | * Packets with MNA dropped due to unknown actions | |||
| * Packets with MNA skipped due to unknown actions | * Packets with MNA skipped due to unknown actions | |||
| * Packets with MNA dropped due to malformed NAS | * Packets with MNA dropped due to malformed NAS | |||
| Additionally, tracking both successful invocations and failures for | Additionally, tracking both successful invocations and failures for | |||
| each specific Network Action, are RECOMMENDED to provide granular | each specific Network Action is RECOMMENDED to provide granular | |||
| visibility. Nodes MAY generate rate-limited notifications or alarms | visibility. Nodes MAY generate rate-limited notifications or alarms | |||
| for significant operational events, such as sustained high rates of | for significant operational events, such as sustained high rates of | |||
| MNA packet drops, frequent encounters of malformed MNA sub-stacks, to | MNA packet drops or frequent encounters of malformed MNA sub-stacks, | |||
| alert operators to potential issues. Comprehensive logging of MNA | to alert operators to potential issues. Comprehensive logging of MNA | |||
| processing details and outcomes can aid in the network diagnostics | processing details and outcomes can aid in the network diagnostics | |||
| and post-mortem analysis. | and post-mortem analysis. | |||
| 13.2. Performance and Scale Considerations | 12.2. Performance and Scale Considerations | |||
| The considerations for performance and scale assessments are outside | The considerations for performance and scale assessments are outside | |||
| the scope of this document but are encouraged to be addressed in the | the scope of this document but are encouraged to be addressed in the | |||
| MNA application documents. | MNA application documents. | |||
| 13.3. Backward Compatibility | 12.3. Backward Compatibility | |||
| This section discusses interactions between MNA-capable and MNA- | This section discusses interactions between MNA-capable and MNA- | |||
| incapable nodes. | incapable nodes. | |||
| An MNA-encapsulating node MUST ensure that the MPLS Network Action | An MNA encapsulating node MUST ensure that the MPLS Network Action | |||
| Sub-Stack indicator is not at the top of the MPLS label stack when | Sub-Stack indicator is not at the top of the MPLS label stack when | |||
| the packet arrives at an MNA-incapable node. If such a packet did | the packet arrives at an MNA-incapable node. If such a packet did | |||
| arrive at an MNA-incapable node, it will most likely be dropped as | arrive at an MNA-incapable node, it will most likely be dropped as | |||
| described in Section 2.1.1 of [RFC7325]. | described in Section 2.1.1 of [RFC7325]. | |||
| Any node could scan the label stack, potentially looking for a label | Any node could scan the label stack, potentially looking for a label | |||
| value containing a bSPL. To ensure that the LSE formats described | value containing a bSPL. To ensure that the LSE formats described | |||
| herein do not appear to contain a bSPL value, the opcode value of 0 | herein do not appear to contain a bSPL value, the opcode value of 0 | |||
| has been reserved. By ensuring that there is a non-zero value in the | has been reserved. By ensuring that there is a non-zero value in the | |||
| high order 7 bits, we are assured that the high order 20 bits cannot | high-order 7 bits, we are assured that the high-order 20 bits cannot | |||
| be misinterpreted as containing a bSPL value (0-15). | be misinterpreted as containing a bSPL value (0-15). | |||
| The TC and TTL values of the Format A LSE are not re-purposed for | The TC and TTL values of the Format A LSE are not repurposed for | |||
| encoding, as the penultimate node on the MPLS packet path may | encoding, as the penultimate node on the MPLS packet path may | |||
| propagate TTL from the transport (or forwarding) label to the next | propagate TTL from the transport (or forwarding) label to the next | |||
| label on the label stack, overwriting the TTL on the next label. If | label on the label stack, overwriting the TTL on the next label. If | |||
| the penultimate node is a legacy node, it might perform this action, | the penultimate node is a legacy node, it might perform this action, | |||
| potentially corrupting other values stored in the TC and TTL values. | potentially corrupting other values stored in the TC and TTL values. | |||
| To protect against this, we retain the TC and TTL values in the | To protect against this, we retain the TC and TTL values in the | |||
| Format A LSE. | Format A LSE. | |||
| When adding the Entropy Label Indicator (ELI) (bSPL 7) and Entropy | When adding the Entropy Label Indicator (ELI) (bSPL 7) and Entropy | |||
| Label (EL) as defined in [RFC6790], along with an MNA NAS, the RLD | Label (EL) as defined in [RFC6790], along with an MNA NAS, the RLD | |||
| MUST be considered for the placement of both, and they both can be | MUST be considered for the placement of both, and they both can be | |||
| placed in any order. If a transit LSR chooses to use as much of the | placed in any order. If a transit LSR chooses to use as much of the | |||
| whole label stack as feasible as keys for the load-balancing | whole label stack as feasible as a key for the load-balancing | |||
| function, the MNA reserved label MUST NOT be used as a key for the | function, the MNA-reserved label MUST NOT be used as a key for the | |||
| load-balancing function, as specified in Section 4.3 of [RFC6790]. | load-balancing function, as specified in Section 4.3 of [RFC6790]. | |||
| Note that the behavior of an MNA-incapable transit LSR that scans the | Note that the behavior of an MNA-incapable transit LSR that scans the | |||
| label stack for ELI and EL but encounters a different, unrecognized | label stack for ELI and EL but encounters a different, unrecognized | |||
| reserved label first, is not modified by this document. | reserved label first, is not modified by this document. | |||
| Similarly, when adding the Flow-ID Label Indicator (FLI) (including | Similarly, when adding the Flow-ID Label Indicator (FLI) (including | |||
| the extension label 15) and Flow-ID Label (FL) as defined in | the extension label 15) and Flow-ID Label (FL) as defined in | |||
| [RFC9714], along with an MNA NAS, the RLD MUST be considered for the | [RFC9714], along with an MNA NAS, the RLD MUST be considered for the | |||
| placement of both, and they both can be placed in any order. Note | placement of both, and they both can be placed in any order. Note | |||
| that the behavior of an MNA-incapable transit LSR that scans the | that the behavior of an MNA-incapable transit LSR that scans the | |||
| label stack for FLI (including the extension label 15) and FL, but | label stack for FLI (including the extension label 15) and FL, but | |||
| encounters a different, unrecognized reserved label first, is not | encounters a different, unrecognized reserved label first, is not | |||
| modified by this document. | modified by this document. | |||
| However, as the existing behavior is not specified for transit LSRs, | However, as the existing behavior is not specified for transit LSRs, | |||
| upon encountering any unrecognized bSPLs or eSPLs below the top of | upon encountering any unrecognized bSPLs or extended SPLs (eSPLs) | |||
| the label stack, some existing implementations may have chosen to | below the top of the label stack, some existing implementations may | |||
| implement non-standardized actions, such as discarding packets. Any | have chosen to implement non-standardized actions, such as discarding | |||
| uses of a new bSPL or eSPL would cause issues with such existing | packets. Any uses of a new bSPL or eSPL would cause issues with such | |||
| implementations using the non-standardized actions upon encountering | existing implementations using the non-standardized actions upon | |||
| unrecognized bSPLs or eSPLs below the top of the label stack. Since | encountering unrecognized bSPLs or eSPLs below the top of the label | |||
| this is a generic problem, any clarifications for the treatment of | stack. Since this is a generic problem, any clarifications for the | |||
| unrecognized bSPL or eSPL are outside the scope of this document. | treatment of unrecognized bSPL or eSPL are outside the scope of this | |||
| document. | ||||
| 14. IANA Considerations | 13. IANA Considerations | |||
| 14.1. MNA bSPL Label | 13.1. MNA bSPL Label | |||
| This document requests that IANA allocate a value (TBA) for the MNA | IANA has allocated the value 4 for the MNA bSPL label from the "Base | |||
| bSPL label from the "Base Special-Purpose MPLS Label Values" registry | Special-Purpose MPLS Label Values" registry to indicate the presence | |||
| to indicate the presence of an MNA Sub-Stack in the label stack. The | of an MNA Sub-Stack in the label stack. The description of the value | |||
| description of the value should be "MPLS Network Actions". The | is "MPLS Network Actions". | |||
| reference should be this document. | ||||
| 14.2. MPLS Network Actions Parameters | 13.2. MPLS Network Actions Parameters | |||
| This document requests that IANA create a new registry group called | IANA has created a registry group called "MPLS Network Actions" | |||
| "MPLS Network Actions Parameters" within the "Multiprotocol Label | within the "Multiprotocol Label Switching Architecture (MPLS)" | |||
| Switching Architecture (MPLS)" category. The registries described | category. This registry group contains the "Network Action Flags | |||
| below should belong to this new registry group. | Without Ancillary Data" registry (see Section 13.2.1) and the | |||
| "Network Action Opcodes" registry (see Section 13.2.2). | ||||
| 14.3. Network Action Flags Without Ancillary Data | 13.2.1. Network Action Flags Without Ancillary Data | |||
| This document requests that IANA create a new registry with the name | For the "Network Action Flags Without Ancillary Data" registry, | |||
| "Network Action Flags Without Ancillary Data". Registration requests | registration requests should comply with Section 10. Depending on | |||
| should comply with Section 10. The registration procedure for this | the range, the registration procedure for this registry is "IETF | |||
| registry is "IETF Review", "Experimental Use" and "Private Use" as | Review", "Experimental Use", or "Private Use" (as defined in | |||
| defined in [RFC8126]. The fields in this registry are "Bit Position" | [RFC8126]). The fields in this registry are "Bit Position" | |||
| (integer), "Description" (string), and "Reference" (string). | (integer), "Description" (string), and "Reference" (string). | |||
| Bit Position refers to the position relative to the most significant | Bit Position refers to the position relative to the most significant | |||
| bit in LSE Format B or C Data fields and any subsequent Format D | bit in LSE Format B or C Data fields and any subsequent Format D | |||
| LSEs. Bit Position 0 is the most significant bit in an LSE Format B | LSEs. Bit Position 0 is the most significant bit in an LSE Format B | |||
| or C Data field. Bit Position 20 is the most significant bit in the | or C Data field. Bit Position 20 is the most significant bit in the | |||
| first LSE Format D Data field. There are 20 bits available in LSE | first LSE Format D Data field. There are 20 bits available in LSE | |||
| Format C and 30 bits available in LSE Format D. There are at most 14 | Format C and 30 bits available in LSE Format D. There are, at most, | |||
| Format D LSEs per opcode (due to NASL limit of 15 and Format D | 14 Format D LSEs per opcode (due to the NASL limit of 15 and Format D | |||
| requires Format C LSE), so there are at most 20 + 14 * 30 = 440 bit | requires Format C LSE), so there are at most 20 + 14 * 30 = 440 bit | |||
| positions. The Bit Position is an integer with value 0-439. | positions. The value listed in the Bit Position column is an integer | |||
| with value between 0-439. | ||||
| The registration procedures for the code points allocation for this | The registration procedures for code point allocation for this | |||
| registry are defined in Table 4: | registry are defined in Table 4: | |||
| +==============+==================+===============+ | +========+========================+ | |||
| | Bit Position | Description | Reference | | | Range | Registration Procedure | | |||
| +==============+==================+===============+ | +========+========================+ | |||
| | 0-14 | IETF Review | This document | | | 0-14 | IETF Review | | |||
| +--------------+------------------+---------------+ | +--------+------------------------+ | |||
| | 15-16 | Experimental Use | This document | | | 15-16 | Experimental Use | | |||
| +--------------+------------------+---------------+ | +--------+------------------------+ | |||
| | 17-19 | Private Use | This document | | | 17-19 | Private Use | | |||
| +--------------+------------------+---------------+ | +--------+------------------------+ | |||
| | 20-439 | IETF Review | This document | | | 20-439 | IETF Review | | |||
| +--------------+------------------+---------------+ | +--------+------------------------+ | |||
| Table 4: Network Action Flags Without Ancillary | Table 4: Registration | |||
| Data Registry | Procedures for the "Network | |||
| Action Flags Without Ancillary | ||||
| Data" Registry | ||||
| 14.4. Network Action Opcodes | 13.2.2. Network Action Opcodes | |||
| This document requests that IANA create a new registry with the name | For the "Network Action Opcodes" registry, registration requests | |||
| "Network Action Opcodes". Registration requests should comply with | should comply with Section 10 as well as security review. Depending | |||
| Section 10 as well as security review. The registration procedure | on the range, the registration procedure for this registry is "IETF | |||
| for this registry is "IETF Review", "Experimental Use" and "Private | Review", "Experimental Use", or "Private Use" (as defined in | |||
| Use" as defined in [RFC8126]. The fields are "Opcode" (integer), | [RFC8126]). The fields are "Opcode" (integer), "Description" | |||
| "Description" (string), and "Reference" (string). Opcode is an | (string), and "Reference" (string). Opcode is an integer with value | |||
| integer with value 1-126. | 1-126. | |||
| +=========+==================+===============+ | +=========+========================+ | |||
| | Opcode | Description | Reference | | | Range | Registration Procedure | | |||
| +=========+==================+===============+ | +=========+========================+ | |||
| | 1-110 | IETF Review | This document | | | 1-110 | IETF Review | | |||
| +---------+------------------+---------------+ | +---------+------------------------+ | |||
| | 111-114 | Experimental Use | This document | | | 111-114 | Experimental Use | | |||
| +---------+------------------+---------------+ | +---------+------------------------+ | |||
| | 115-126 | Private Use | This document | | | 115-126 | Private Use | | |||
| +---------+------------------+---------------+ | +---------+------------------------+ | |||
| | 127 | IETF Review | This document | | | 127 | IETF Review | | |||
| +---------+------------------+---------------+ | +---------+------------------------+ | |||
| Table 5: Network Action Opcodes Registry | Table 5: Registration Procedures | |||
| for the "Network Action Opcodes" | ||||
| Registry | ||||
| IANA has allocated values for the following Network Action Opcodes | IANA has allocated values for the following Network Action Opcodes | |||
| from the "Network Action Opcodes" registry. | from the "Network Action Opcodes" registry. | |||
| +========+===========================+===============+ | +========+===========================+===========+ | |||
| | Opcode | Description | Reference | | | Opcode | Description | Reference | | |||
| +========+===========================+===============+ | +========+===========================+===========+ | |||
| | 0 | Reserved | This document | | | 0 | Reserved | RFC 9994 | | |||
| +--------+---------------------------+---------------+ | +--------+---------------------------+-----------+ | |||
| | 1 | Flag-Based Network Action | This document | | | 1 | Flag-Based Network Action | RFC 9994 | | |||
| | | Indicators without AD | | | | | Indicators without AD | | | |||
| +--------+---------------------------+---------------+ | +--------+---------------------------+-----------+ | |||
| | 2 | No operation Opcode | This document | | | 2 | No operation Opcode | RFC 9994 | | |||
| +--------+---------------------------+---------------+ | +--------+---------------------------+-----------+ | |||
| | 127 | Opcode Range Extension | This document | | | 127 | Opcode Range Extension | RFC 9994 | | |||
| | | Beyond 127 | | | | | Beyond 127 | | | |||
| +--------+---------------------------+---------------+ | +--------+---------------------------+-----------+ | |||
| Table 6: Network Action Opcodes | Table 6: Initial Contents of the "Network | |||
| Action Opcodes" Registry | ||||
| 15. References | 14. References | |||
| 15.1. Normative References | 14.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
| Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | |||
| Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | |||
| <https://www.rfc-editor.org/info/rfc3032>. | <https://www.rfc-editor.org/info/rfc3032>. | |||
| skipping to change at page 25, line 29 ¶ | skipping to change at line 1104 ¶ | |||
| [RFC9017] Andersson, L., Kompella, K., and A. Farrel, "Special- | [RFC9017] Andersson, L., Kompella, K., and A. Farrel, "Special- | |||
| Purpose Label Terminology", RFC 9017, | Purpose Label Terminology", RFC 9017, | |||
| DOI 10.17487/RFC9017, April 2021, | DOI 10.17487/RFC9017, April 2021, | |||
| <https://www.rfc-editor.org/info/rfc9017>. | <https://www.rfc-editor.org/info/rfc9017>. | |||
| [RFC9789] Andersson, L., Bryant, S., Bocci, M., and T. Li, "MPLS | [RFC9789] Andersson, L., Bryant, S., Bocci, M., and T. Li, "MPLS | |||
| Network Actions (MNAs) Framework", RFC 9789, | Network Actions (MNAs) Framework", RFC 9789, | |||
| DOI 10.17487/RFC9789, July 2025, | DOI 10.17487/RFC9789, July 2025, | |||
| <https://www.rfc-editor.org/info/rfc9789>. | <https://www.rfc-editor.org/info/rfc9789>. | |||
| 15.2. Informative References | 14.2. Informative References | |||
| [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol | [RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol | |||
| Label Switching Architecture", RFC 3031, | Label Switching Architecture", RFC 3031, | |||
| DOI 10.17487/RFC3031, January 2001, | DOI 10.17487/RFC3031, January 2001, | |||
| <https://www.rfc-editor.org/info/rfc3031>. | <https://www.rfc-editor.org/info/rfc3031>. | |||
| [RFC6291] Andersson, L., van Helvoort, H., Bonica, R., Romascanu, | [RFC6291] Andersson, L., van Helvoort, H., Bonica, R., Romascanu, | |||
| D., and S. Mansfield, "Guidelines for the Use of the "OAM" | D., and S. Mansfield, "Guidelines for the Use of the "OAM" | |||
| Acronym in the IETF", BCP 161, RFC 6291, | Acronym in the IETF", BCP 161, RFC 6291, | |||
| DOI 10.17487/RFC6291, June 2011, | DOI 10.17487/RFC6291, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6291>. | <https://www.rfc-editor.org/info/rfc6291>. | |||
| [RFC7325] Villamizar, C., Ed., Kompella, K., Amante, S., Malis, A., | [RFC7325] Villamizar, C., Ed., Kompella, K., Amante, S., Malis, A., | |||
| and C. Pignataro, "MPLS Forwarding Compliance and | and C. Pignataro, "MPLS Forwarding Compliance and | |||
| Performance Requirements", RFC 7325, DOI 10.17487/RFC7325, | Performance Requirements", RFC 7325, DOI 10.17487/RFC7325, | |||
| August 2014, <https://www.rfc-editor.org/info/rfc7325>. | August 2014, <https://www.rfc-editor.org/info/rfc7325>. | |||
| [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
| Code: The Implementation Status Section", BCP 205, | ||||
| RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7942>. | ||||
| [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., | [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., | |||
| and J. Hardwick, "Path Computation Element Communication | and J. Hardwick, "Path Computation Element Communication | |||
| Protocol (PCEP) Extensions for Segment Routing", RFC 8664, | Protocol (PCEP) Extensions for Segment Routing", RFC 8664, | |||
| DOI 10.17487/RFC8664, December 2019, | DOI 10.17487/RFC8664, December 2019, | |||
| <https://www.rfc-editor.org/info/rfc8664>. | <https://www.rfc-editor.org/info/rfc8664>. | |||
| [RFC9613] Bocci, M., Ed., Bryant, S., and J. Drake, "Requirements | [RFC9613] Bocci, M., Ed., Bryant, S., and J. Drake, "Requirements | |||
| for Solutions that Support MPLS Network Actions (MNAs)", | for Solutions that Support MPLS Network Actions (MNAs)", | |||
| RFC 9613, DOI 10.17487/RFC9613, August 2024, | RFC 9613, DOI 10.17487/RFC9613, August 2024, | |||
| <https://www.rfc-editor.org/info/rfc9613>. | <https://www.rfc-editor.org/info/rfc9613>. | |||
| skipping to change at page 26, line 31 ¶ | skipping to change at line 1148 ¶ | |||
| [RFC9791] Saad, T., Makhijani, K., Song, H., and G. Mirsky, "Use | [RFC9791] Saad, T., Makhijani, K., Song, H., and G. Mirsky, "Use | |||
| Cases for MPLS Network Action Indicators and Ancillary | Cases for MPLS Network Action Indicators and Ancillary | |||
| Data", RFC 9791, DOI 10.17487/RFC9791, July 2025, | Data", RFC 9791, DOI 10.17487/RFC9791, July 2025, | |||
| <https://www.rfc-editor.org/info/rfc9791>. | <https://www.rfc-editor.org/info/rfc9791>. | |||
| Appendix A. Examples | Appendix A. Examples | |||
| A.1. Network Action Encoding Examples | A.1. Network Action Encoding Examples | |||
| A.1.1. Network Action Flags without AD | A.1.1. Network Action Flags Without AD | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=1 | 13-bit Flags |R|IHS|S|NASL=0 |U|NAL=0| | | Opcode=1 | 13-bit Flags |R|IHS|S|NASL=0 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6: NAS with Network Action Flags | Figure 6: NAS with Network Action Flags | |||
| This is an example of a NAS with Flag-Based NAIs without Ancillary | This is an example of a NAS with Flag-Based NAIs without AD. | |||
| Data. | ||||
| Details: | Details: | |||
| Opcode=1: This opcode to indicates that the LSE carries Flag-Based | Opcode=1: This opcode indicates that the LSE carries Flag-Based NAIs | |||
| NAIs without AD. | without AD. | |||
| Data: The data field carries the Flag-Based NAIs. | Data: The data field carries the Flag-Based NAIs. | |||
| S: This is the bottom of stack bit. Set if and only if this LSE | S: This is the bottom of the stack bit. Set if and only if this LSE | |||
| is the bottom of the stack. | is the bottom of the stack. | |||
| U: Action to be taken if one of the NAIs are not recognized by the | U: Action to be taken if one of the NAIs is not recognized by the | |||
| processing node. | processing node. | |||
| NASL: The NASL value is set to 0, as there are no additional LSEs. | NASL: The NASL value is set to 0, as there are no additional LSEs. | |||
| NAL: The NAL value is set to 0, as there are no additional AD | NAL: The NAL value is set to 0, as there are no additional AD | |||
| encoded using Format D. | encoded using Format D. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=2 | Data=0 |R|IHS|S|NASL=2 |U|NAL=0| | | Opcode=2 | Data=0 |R|IHS|S|NASL=2 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=1 | Flag-Based NAIs |S| NAIs |U|NAL=1| | | Opcode=1 | Flag-Based NAIs |S| NAIs |U|NAL=1| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1| Additional Flag-Based NAIs |S|Flag-Based-NAIs| | |1| Additional Flag-Based NAIs |S|Flag-Based-NAIs| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 7: Network Action Flags without AD using LSE Format D | Figure 7: Network Action Flags Without AD Using LSE Format D | |||
| In this example, the NAS contains a Format B LSE with No-Operation | In this example, the NAS contains a Format B LSE with a No-Operation | |||
| Opcode value 2. The next LSE uses Format C, but the Network Action | Opcode value 2. The next LSE uses Format C, but the Network Action | |||
| Flag is not in a bit position contained within the Format C LSE, so a | Flag is not in a bit position contained within the Format C LSE, so a | |||
| single Format D LSE has been added to the NAS to carry the flag. | single Format D LSE has been added to the NAS to carry the flag. | |||
| NAL is set to 1 to indicate that Flag-Based NAIs are also encoded in | NAL is set to 1 to indicate that Flag-Based NAIs are also encoded in | |||
| the next LSE. | the next LSE. | |||
| NASL is set to 2 to indicate that 2 additional LSEs are used. | NASL is set to 2 to indicate that two additional LSEs are used. | |||
| A.1.2. Network Action Opcode with AD | A.1.2. Network Action Opcode with AD | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=8 | Ancillary Data |R|IHS|S|NASL=0 |U|NAL=0| | | Opcode=8 | Ancillary Data |R|IHS|S|NASL=0 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 8: Network action opcode with Ancillary Data | Figure 8: Network Action Opcode with Ancillary Data | |||
| In this example, the NAS is carrying only one Network Action that | In this example, the NAS is carrying only one Network Action that | |||
| requires 13 bits of Ancillary Data. | requires 13 bits of AD. | |||
| Details on the Second LSE | Details on the Second LSE: | |||
| Opcode=8: A network action allocation is outside of this document. | Opcode=8: A network action allocation is outside of this document. | |||
| Data: The data field contains 13 bits of ancillary data. | Data: The data field contains 13 bits of AD. | |||
| A.1.3. Network Action Opcode with more AD with Format-B | A.1.3. Network Action Opcode with More AD with Format-B | |||
| A network action may require more Ancillary Data than can fit in a | A network action may require more AD than can fit in a single LSE. | |||
| single LSE. In this example, a Format D LSE is added to carry | In this example, a Format D LSE is added to carry additional AD. | |||
| additional Ancillary Data. | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=10 | Ancillary Data |R|IHS|S|NASL=1 |U|NAL=1| | | Opcode=10 | Ancillary Data |R|IHS|S|NASL=1 |U|NAL=1| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1| Ancillary Data |S|Ancillary Data | | |1| Ancillary Data |S|Ancillary Data | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 9: Network Action With Additional Ancillary Data | Figure 9: Network Action with Additional Ancillary Data | |||
| In this example, opcode 10 is encoded in Format B and it requires | In this example, opcode 10 is encoded in Format B, and it requires | |||
| more than one LSE's worth of Ancillary Data, so a Format D LSE is | more than one LSE's worth of AD, so a Format D LSE is added. | |||
| added. | ||||
| Details on the second LSE: | Details on the second LSE: | |||
| Opcode=10: An opcode allocation is outside of this document. | Opcode=10: An opcode allocation is outside of this document. | |||
| Ancillary Data: Ancillary data required to process the Network | Ancillary Data: AD required to process the Network Action opcode 10. | |||
| Action opcode 10. | ||||
| NAL: Length of additional LSEs used to encode its Ancillary data. | NAL: Length of additional LSEs used to encode its AD. | |||
| Details on the third LSE: | Details on the third LSE: | |||
| Ancillary Data: 22 bits of additional Ancillary data. | Ancillary Data: 22 bits of additional AD. | |||
| Ancillary Data: 8 bits of additional Ancillary Data. | Ancillary Data: 8 bits of additional AD. | |||
| A.1.4. Network Action Opcode with more AD with Format C | A.1.4. Network Action Opcode with More AD with Format C | |||
| A network action may require more Ancillary Data than can fit in a | A network action may require more AD than can fit in a single LSE. | |||
| single LSE. In this example, a Format D LSE is added to carry | In this example, a Format D LSE is added to carry additional AD. | |||
| additional Ancillary Data. | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=2 | Data=0 |R|IHS|S|NASL=2 |U|NAL=0| | | Opcode=2 | Data=0 |R|IHS|S|NASL=2 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=9 | Ancillary Data |S| AD |U|NAL=1| | | Opcode=9 | Ancillary Data |S| AD |U|NAL=1| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |1| Ancillary Data |S|Ancillary Data | | |1| Ancillary Data |S|Ancillary Data | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 10: Network Action With Additional Ancillary Data | Figure 10: Network Action with Additional Ancillary Data | |||
| In this example, opcode 9 requires more than one LSE's worth of | In this example, opcode 9 requires more than one LSE's worth of AD, | |||
| Ancillary Data, so a Format D LSE is added. | so a Format D LSE is added. | |||
| Details on the third LSE: | Details on the third LSE: | |||
| Opcode=9: An opcode allocation is outside of this document | Opcode=9: An opcode allocation is outside of this document | |||
| Ancillary Data: Most significant bits of Ancillary data | Ancillary Data: Most significant bits of AD | |||
| AD: 4 bits of additional Ancillary Data | AD: 4 bits of additional AD | |||
| Details on the fourth LSE: | Details on the fourth LSE: | |||
| Ancillary Data: 22 bits of additional Ancillary data. | Ancillary Data: 22 bits of additional AD. | |||
| Ancillary Data: 8 bits of additional Ancillary Data. | Ancillary Data: 8 bits of additional AD. | |||
| A.2. Network Action Processing Order | A.2. Network Action Processing Order | |||
| The semantics of a network action can vary widely and the results of | The semantics of a network action can vary widely and the results of | |||
| processing one network action may affect the processing of a | processing one network action may affect the processing of a | |||
| subsequent network action. See Section 5.5. | subsequent network action. See Section 5.5. | |||
| A.2.1. Network Action Processing Order | A.2.1. Network Action Processing Order | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=8 | Ancillary Data |R|IHS|S|NASL=2 |U|NAL=0| | | Opcode=8 | Ancillary Data |R|IHS|S|NASL=2 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=7 | Ancillary Data7 |S| AD7 |U|NAL=0| | | Opcode=7 | Ancillary Data7 |S| AD7 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=1 | Flag-Based NAIs |S| NAI |U|NAL=0| | | Opcode=1 | Flag-Based NAIs |S| NAI |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 11: In-stack NA processing order | Figure 11: In-Stack NA Processing Order | |||
| In this example, opcode 8 is processed first, then opcode 7, and then | In this example, opcode 8 is processed first, then opcode 7, and then | |||
| the network action flags are processed from most significant to least | the network action flags are processed from most significant to least | |||
| significant. | significant. | |||
| In a different case, some Flag-Based NAIs may need to be processed | In a different case, some Flag-Based NAIs may need to be processed | |||
| before opcode 7 and some Flag-Based NAIs may need to be processed | before opcode 7, and some Flag-Based NAIs may need to be processed | |||
| after Opcode 7. This can be done by causing some NAIs to appear | after opcode 7. This can be done by causing some NAIs to appear | |||
| earlier in the NAS. | earlier in the NAS. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MNA-Label=bSPL | TC |S| TTL | | | MNA-Label=bSPL | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=8 | Ancillary Data |R|IHS|S|NASL=3 |U|NAL=0| | | Opcode=8 | Ancillary Data |R|IHS|S|NASL=3 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=1 | 0x01 |S| NAI |U|NAL=0| | | Opcode=1 | 0x01 |S| NAI |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=7 | Ancillary Data7 |S| AD7 |U|NAL=0| | | Opcode=7 | Ancillary Data7 |S| AD7 |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Opcode=1 | 0x02 |S| NAI |U|NAL=0| | | Opcode=1 | 0x02 |S| NAI |U|NAL=0| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 12: Interleaving network actions | Figure 12: Interleaving Network Actions | |||
| In the above example, opcode 8 is processed first, then Flag-Based | In the above example, opcode 8 is processed first, then Flag-Based | |||
| NAI 0x01 is processed, then opcode 7 is processed, and finally NAI | NAI 0x01 is processed, then opcode 7 is processed, and finally NAI | |||
| 0x02 is processed. | 0x02 is processed. | |||
| Acknowledgments | Acknowledgments | |||
| The authors of this document would like to thank the MPLS Working | The authors of this document would like to thank the MPLS Working | |||
| Group Open Design Team for the discussions and comments on this | Group Open Design Team for the discussions and comments on this | |||
| document. The authors would also like to thank Amanda Baber for | document. The authors would also like to thank Amanda Baber for | |||
| reviewing the IANA Considerations and providing many useful | reviewing the IANA Considerations and providing many useful | |||
| suggestions. The authors would like to thank Loa Andersson, Stewart | suggestions. The authors would like to thank Loa Andersson, Stewart | |||
| Bryant, Greg Mirsky, Joel M. Halpern and Adrian Farrel for reviewing | Bryant, Greg Mirsky, Joel M. Halpern, and Adrian Farrel for reviewing | |||
| this document and providing many useful suggestions. The authors | this document and providing many useful suggestions. The authors | |||
| would like to thank Fabian Ihle and Michael Menth, both from | would like to thank Fabian Ihle and Michael Menth, both from the | |||
| University of Tuebingen, for reviewing and implementing the solution | University of Tuebingen, for reviewing and implementing the solution | |||
| defined in this document in P4 pipeline. Also, thank you, Tarek Saad | defined in this document in P4 pipeline. Also, thank you to Tarek | |||
| for the Shepherd's review, Joe Clarke for OpsDir review, Matthew | Saad for the Shepherd's review, Joe Clarke for the OpsDir review, | |||
| Bocci for Rtgdir review, Derrell Piper for Secdir review, and James | Matthew Bocci for the Rtgdir review, Derrell Piper for the Secdir | |||
| Guichard for the AD review, Mohamed Boucadair, Eric Vyncke, Deb | review, and James Guichard for the AD review, Mohamed Boucadair, Éric | |||
| Cooley, Ketan Talaulikar, Mahesh Jethanandani for IESG review, which | Vyncke, Deb Cooley, Ketan Talaulikar, and Mahesh Jethanandani for the | |||
| helped improve this document. | IESG review, which helped improve this document. | |||
| Contributors | Contributors | |||
| The following people have substantially contributed to this document: | The following people have substantially contributed to this document: | |||
| Jisu Bhattacharya | Jisu Bhattacharya | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Email: jisu@cisco.com | Email: jisu@cisco.com | |||
| Bruno Decraene | Bruno Decraene | |||
| skipping to change at page 32, line 6 ¶ | skipping to change at line 1391 ¶ | |||
| ZTE Corp. | ZTE Corp. | |||
| Email: xiao.min2@zte.com.cn | Email: xiao.min2@zte.com.cn | |||
| Luay Jalil | Luay Jalil | |||
| Verizon | Verizon | |||
| Email: luay.jalil@verizon.com | Email: luay.jalil@verizon.com | |||
| Jie Dong | Jie Dong | |||
| Huawei Technologies | Huawei Technologies | |||
| Huawei Campus, No. 156 Beiqing Rd. | Huawei Campus, No. 156 Beiqing Rd. | |||
| Beijing 100095 | Beijing | |||
| 100095 | ||||
| China | China | |||
| Email: jie.dong@huawei.com | Email: jie.dong@huawei.com | |||
| Tianran Zhou | Tianran Zhou | |||
| Huawei Technologies | Huawei Technologies | |||
| China | China | |||
| Email: zhoutianran@huawei.com | Email: zhoutianran@huawei.com | |||
| Bin Wen | Bin Wen | |||
| Comcast | Comcast | |||
| Email: Bin_Wen@cable.comcast.com | Email: Bin_Wen@cable.comcast.com | |||
| Sami Boutros | Sami Boutros | |||
| Ciena | Ciena | |||
| Email: sboutros@ciena.com | Email: sboutros@ciena.com | |||
| Tony Li | Tony Li | |||
| Juniper Networks | Juniper Networks | |||
| United States | United States of America | |||
| Email: tony.li@tony.li | Email: tony.li@tony.li | |||
| John Drake | John Drake | |||
| Juniper Networks | Juniper Networks | |||
| United States | United States of America | |||
| Email: jdrake@juniper.net | Email: jdrake@juniper.net | |||
| Figure 13 | ||||
| Authors' Addresses | Authors' Addresses | |||
| Jaganbabu Rajamanickam (editor) | Jaganbabu Rajamanickam (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Canada | Canada | |||
| Email: jrajaman@cisco.com | Email: jrajaman@cisco.com | |||
| Rakesh Gandhi (editor) | Rakesh Gandhi (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Canada | Canada | |||
| Email: rgandhi@cisco.com | Email: rgandhi@cisco.com | |||
| Royi Zigler | Royi Zigler | |||
| Broadcom | Broadcom | |||
| Email: royi.zigler@broadcom.com | Email: royi.zigler@broadcom.com | |||
| Haoyu Song | Haoyu Song | |||
| End of changes. 206 change blocks. | ||||
| 539 lines changed or deleted | 498 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||