<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="IETF" docName="draft-ietf-mpls-mna-hdr-21" number="9994" category="std" ipr="trust200902" obsoletes="" updates="9789" xml:lang="en" sortRefs="true" symRefs="true" tocInclude="true" consensus="true" prepTime="2026-06-27T00:53:36" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-mpls-mna-hdr-21" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9994" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="In-Stack MNA Sub-Stack">MPLS Network Action (MNA) Sub-Stack Specification Including In-Stack Network Actions and Data</title>
    <seriesInfo name="RFC" value="9994" stream="IETF"/>
    <author fullname="Jaganbabu Rajamanickam" initials="J." role="editor" surname="Rajamanickam">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>jrajaman@cisco.com</email>
      </address>
    </author>
    <author fullname="Rakesh Gandhi" initials="R." role="editor" surname="Gandhi">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>rgandhi@cisco.com</email>
      </address>
    </author>
    <author fullname="Royi Zigler" initials="R." surname="Zigler">
      <organization showOnFrontPage="true">Broadcom</organization>
      <address>
        <email>royi.zigler@broadcom.com</email>
      </address>
    </author>
    <author fullname="Haoyu Song" initials="H." surname="Song">
      <organization showOnFrontPage="true">Futurewei Technologies</organization>
      <address>
        <email>haoyu.song@futurewei.com</email>
      </address>
    </author>
    <author fullname="Kireeti Kompella" initials="K." surname="Kompella">
      <organization showOnFrontPage="true">Juniper Networks</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>kireeti.ietf@gmail.com</email>
      </address>
    </author>
    <date month="06" year="2026"/>
    <area>RTG</area>
    <workgroup>mpls</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
    This document specifies the MPLS Network Action (MNA) Sub-Stack for carrying 
    network actions and Ancillary Data (AD) in the MPLS label stack.  MNA can 
    be used to influence packet-forwarding  decisions, carry additional 
    Operations, Administration, and Maintenance (OAM) information in the MPLS 
    packet, or perform user-defined operations.
      </t>
      <t indent="0" pn="section-abstract-2">This document updates RFC 9789 to refine the list of pieces of information that must be included in any document that defines an MNA.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9994" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-abbreviations">Abbreviations</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-overview">Overview</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-label-stack-entry-formats">Label Stack Entry Formats</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-lse-format-a-the-mna-sub-st">LSE Format A: The MNA Sub-Stack Indicator</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-lse-format-b-the-initial-op">LSE Format B: The Initial Opcode</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-lse-format-c-subsequent-opc">LSE Format C: Subsequent Opcodes</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.4">
                <t indent="0" pn="section-toc.1-1.4.2.4.1"><xref derivedContent="4.4" format="counter" sectionFormat="of" target="section-4.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-lse-format-d-additional-dat">LSE Format D: Additional Data</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-mna-sub-stack">The MNA Sub-Stack</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-opcodes">Opcodes</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ancillary-data">Ancillary Data</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-scope">Scope</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-unknown-network-action-hand">Unknown Network Action Handling</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ordering">Ordering</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-special-opcodes">Special Opcodes</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bspl-protection">bSPL Protection</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-flag-based-nais-without-ad">Flag-Based NAIs Without AD</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-no-operation-opcode">No-Operation Opcode</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-extension-opcode">Extension Opcode</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-nas-placement-in-the-label-">NAS Placement in the Label Stack</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-actions-when-pushing-labels">Actions When Pushing Labels</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-node-capability-signaling">Node Capability Signaling</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-processing-the-network-acti">Processing the Network Action Sub-Stack</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-encapsulating-node-responsi"> Encapsulating Node Responsibilities </xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-transit-node-responsibiliti"> Transit Node Responsibilities </xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.3">
                <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent="9.3" format="counter" sectionFormat="of" target="section-9.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-penultimate-node-responsibi"> Penultimate Node Responsibilities </xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.4">
                <t indent="0" pn="section-toc.1-1.9.2.4.1"><xref derivedContent="9.4" format="counter" sectionFormat="of" target="section-9.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-egress-node-responsibilitie"> Egress Node Responsibilities </xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-indicator-op">Network Action Indicator Opcode Definition</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manageability-consideration">Manageability Considerations</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-performance-and-scale-consi">Performance and Scale Considerations </xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.3">
                <t indent="0" pn="section-toc.1-1.12.2.3.1"><xref derivedContent="12.3" format="counter" sectionFormat="of" target="section-12.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-backward-compatibility">Backward Compatibility</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.13.2">
              <li pn="section-toc.1-1.13.2.1">
                <t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent="13.1" format="counter" sectionFormat="of" target="section-13.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mna-bspl-label">MNA bSPL Label</xref></t>
              </li>
              <li pn="section-toc.1-1.13.2.2">
                <t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent="13.2" format="counter" sectionFormat="of" target="section-13.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mpls-network-actions-parame">MPLS Network Actions Parameters</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.13.2.2.2">
                  <li pn="section-toc.1-1.13.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.13.2.2.2.1.1"><xref derivedContent="13.2.1" format="counter" sectionFormat="of" target="section-13.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-flags-withou">Network Action Flags Without Ancillary Data</xref></t>
                  </li>
                  <li pn="section-toc.1-1.13.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.13.2.2.2.2.1"><xref derivedContent="13.2.2" format="counter" sectionFormat="of" target="section-13.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-opcodes"> Network Action Opcodes</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" format="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.14.2">
              <li pn="section-toc.1-1.14.2.1">
                <t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent="14.1" format="counter" sectionFormat="of" target="section-14.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.14.2.2">
                <t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent="14.2" format="counter" sectionFormat="of" target="section-14.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples">Examples</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.15.2">
              <li pn="section-toc.1-1.15.2.1">
                <t indent="0" pn="section-toc.1-1.15.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-encoding-exa">Network Action Encoding Examples</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.15.2.1.2">
                  <li pn="section-toc.1-1.15.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.15.2.1.2.1.1"><xref derivedContent="A.1.1" format="counter" sectionFormat="of" target="section-appendix.a.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-flags-without">Network Action Flags Without AD</xref></t>
                  </li>
                  <li pn="section-toc.1-1.15.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.15.2.1.2.2.1"><xref derivedContent="A.1.2" format="counter" sectionFormat="of" target="section-appendix.a.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-opcode-with-">Network Action Opcode with AD </xref></t>
                  </li>
                  <li pn="section-toc.1-1.15.2.1.2.3">
                    <t indent="0" pn="section-toc.1-1.15.2.1.2.3.1"><xref derivedContent="A.1.3" format="counter" sectionFormat="of" target="section-appendix.a.1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-opcode-with-m">Network Action Opcode with More AD with Format B</xref></t>
                  </li>
                  <li pn="section-toc.1-1.15.2.1.2.4">
                    <t indent="0" pn="section-toc.1-1.15.2.1.2.4.1"><xref derivedContent="A.1.4" format="counter" sectionFormat="of" target="section-appendix.a.1.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-opcode-with-mo">Network Action Opcode with More AD with Format C</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.15.2.2">
                <t indent="0" pn="section-toc.1-1.15.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-processing-o">Network Action Processing Order</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.15.2.2.2">
                  <li pn="section-toc.1-1.15.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.15.2.2.2.1.1"><xref derivedContent="A.2.1" format="counter" sectionFormat="of" target="section-appendix.a.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-action-processing-or">Network Action Processing Order</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.17">
            <t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.18">
            <t indent="0" pn="section-toc.1-1.18.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
      <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/> defines the
      encoding of the MPLS label stack, the basic structure used
      to define a forwarding path. There are applications that 
      require MPLS packets to perform special network actions and
      carry optional Ancillary Data (AD) that can affect the
      packet-forwarding decision or trigger Operations, Administration, and Maintenance (OAM) 
      logging, for example, as described in <xref target="RFC9791" format="default" sectionFormat="of" derivedContent="RFC9791"/>.  
      AD can be used to carry additional
      information, for example, for network slice purposes (see <xref target="RFC9791" format="default" sectionFormat="of" derivedContent="RFC9791"/>).
      </t>
      <t indent="0" pn="section-1-2">
      The requirements for in-stack network action and In-Stack Data (ISD) are described in  
      <xref target="RFC9613" format="default" sectionFormat="of" derivedContent="RFC9613"/>.  
      </t>
      <t indent="0" pn="section-1-3">
      This document defines the syntax
      and semantics of network actions and AD encoded in an
      MPLS label stack.  In-stack actions and AD are contained
      in a Network Action Sub-Stack (NAS), which is recognized by a new
      base Special-Purpose Label (bSPL). 
      This document follows the 
      framework specified in <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/>.
      </t>
      <t indent="0" pn="section-1-4"><xref target="RFC9789" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9789#section-5" derivedContent="RFC9789"/> provides details about information that a document defining a network action must contain. <xref target="Allocation" format="default" sectionFormat="of" derivedContent="Section 10"/> of this document updates <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/> by providing a refined list of pieces of information that must be included in any document that defines an MNA.</t>
    </section>
    <section anchor="sect-2" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
      <section anchor="sect-2.1" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-2.1-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
      <section anchor="sect-2.2" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-abbreviations">Abbreviations</name>
        <table anchor="abbreviations" align="center" pn="table-1">
          <name slugifiedName="name-abbreviations-2">Abbreviations</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Abbreviation</th>
              <th align="left" colspan="1" rowspan="1">Meaning</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">AD</td>
              <td align="left" colspan="1" rowspan="1">Ancillary Data</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9613" format="default" sectionFormat="of" derivedContent="RFC9613"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">bSPL</td>
              <td align="left" colspan="1" rowspan="1">base Special-Purpose Label</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9017" format="default" sectionFormat="of" derivedContent="RFC9017"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">BoS</td>
              <td align="left" colspan="1" rowspan="1">Bottom of Stack</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">ECMP</td>
              <td align="left" colspan="1" rowspan="1">Equal-Cost Multipath</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC6790" format="default" sectionFormat="of" derivedContent="RFC6790"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">HbH</td>
              <td align="left" colspan="1" rowspan="1">Hop-by-Hop</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">I2E</td>
              <td align="left" colspan="1" rowspan="1">Ingress to Egress</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">IHS</td>
              <td align="left" colspan="1" rowspan="1">I2E, HbH, or Select</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">ISD</td>
              <td align="left" colspan="1" rowspan="1">In-Stack Data</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9613" format="default" sectionFormat="of" derivedContent="RFC9613"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">LSE</td>
              <td align="left" colspan="1" rowspan="1">Label Stack Entry</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">LSP</td>
              <td align="left" colspan="1" rowspan="1">Label Switched Path</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">MNA</td>
              <td align="left" colspan="1" rowspan="1">MPLS Network Action</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NAI</td>
              <td align="left" colspan="1" rowspan="1">Network Action Indicator</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9613" format="default" sectionFormat="of" derivedContent="RFC9613"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NAL</td>
              <td align="left" colspan="1" rowspan="1">Network Action Length</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NAS</td>
              <td align="left" colspan="1" rowspan="1">Network Action Sub-Stack</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NSI</td>
              <td align="left" colspan="1" rowspan="1">Network Action Sub-Stack Indicator</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NASL</td>
              <td align="left" colspan="1" rowspan="1">Network Action Sub-Stack Length</td>
              <td align="left" colspan="1" rowspan="1">This document</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">OAM</td>
              <td align="left" colspan="1" rowspan="1">Operations, Administration, and Maintenance</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC6291" format="default" sectionFormat="of" derivedContent="RFC6291"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">RLD</td>
              <td align="left" colspan="1" rowspan="1">Readable Label Depth </td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/> </td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">TC</td>
              <td align="left" colspan="1" rowspan="1">Traffic Class</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC5462" format="default" sectionFormat="of" derivedContent="RFC5462"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">TTL</td>
              <td align="left" colspan="1" rowspan="1">Time to Live</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sect-2.3" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-2.3-1">
        The following terms are used in this document.
        </t>
        <dl newline="true" indent="3" spacing="normal" pn="section-2.3-2">
          <dt pn="section-2.3-2.1">MPLS Egress Node:</dt>
          <dd pn="section-2.3-2.2">An MPLS edge node in its role in handling traffic as it leaves an MPLS domain <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.</dd>
          <dt pn="section-2.3-2.3">MPLS Ingress Node:</dt>
          <dd pn="section-2.3-2.4">An MPLS edge node in its role in handling traffic as it enters an MPLS domain <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.</dd>
          <dt pn="section-2.3-2.5">MPLS Domain:</dt>
          <dd pn="section-2.3-2.6"> A contiguous set of nodes that operate MPLS routing and forwarding and that are also in one Routing or Administrative Domain <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.</dd>
          <dt pn="section-2.3-2.7">Encapsulating Node:</dt>
          <dd pn="section-2.3-2.8"> A node that adds a NAS to the label stack.</dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-overview">Overview</name>
      <t indent="0" pn="section-3-1">
      The MPLS NAS is a set of Label Stack
      Entries (LSEs) that appear as part of an MPLS label stack and
      serve to encode information about the network actions that
      should be invoked for the packet. Multiple NASes may
      appear in a label stack and be placed as described in <xref target="sect-3.1" format="default" sectionFormat="of" derivedContent="Section 5"/>.
      </t>
      <t indent="0" pn="section-3-2">
This document specifies how network actions and their optional AD are encoded as part of a NAS as a stack of LSEs. Mechanisms that allow sharing of AD between multiple network actions encoded in the same NAS can be described in other documents and do not rely on any explicit provision in the encodings described in this document.
      
      </t>
      <t indent="0" pn="section-3-3">
    This document defines new LSE formats beyond those in <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/> 
    that define behaviors or are processed in different ways than MPLS labels as 
    defined in <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.
Three new LSE formats are defined to carry 7 bits of network action opcodes and varying 
amounts of opcode-specific AD. Specifically, Format B LSE carries up to 13 bits 
of AD in an LSE.  Format C LSE carries up to 20 bits of AD in an LSE.
Format D LSE is used when additional AD is needed by the opcodes in Format B or Format C LSEs.


      </t>
      <t indent="0" pn="section-3-4">
As shown in <xref target="In-stack-Ext-Hdr-Example" format="default" sectionFormat="of" derivedContent="Figure 1"/>,
the first LSE in an MNA Sub-Stack uses Format A.
The second LSE uses Format B and is followed by a Format D LSE to carry additional data.
Next, there may be a Format C LSE for an additional network action followed by another Format D LSE for additional data.
Additional Format C and Format D LSEs may be added as needed for additional network actions and data.

      </t>
      <figure anchor="In-stack-Ext-Hdr-Example" align="center" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-an-mna-sub-stack-encoding-e">An MNA Sub-Stack Encoding Example</name>
        <artwork name="" type="" align="left" alt="" pn="section-3-5.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|      MNA-Label=bSPL                   | TC  |S|    TTL        |A
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|   Opcode    |        13-bit Data      |R|IHS|S|  NASL |U| NAL |B
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|1|                    22-bit Data            |S|  8-bit Data   |D*
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|   Opcode    |        16-bit Data            |S|4b Data|U| NAL |C
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|1|                    22-bit Data            |S|  8-bit Data   |D*
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|   Opcode    |        16-bit Data            |S|4b Data|U| NAL |C
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--

* Format D LSE presence indicated by NAL greater than one
</artwork>
      </figure>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-label-stack-entry-formats">Label Stack Entry Formats</name>
      <t indent="0" pn="section-4-1">
The NAS uses a variety of different formats of LSEs for
different purposes. This section describes the syntax of the
various formats while the overall structure of the NAS and the
semantics of the various LSEs are described in the sections below.
      </t>
      <section anchor="LSE-A" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-lse-format-a-the-mna-sub-st">LSE Format A: The MNA Sub-Stack Indicator</name>
        <t indent="0" pn="section-4.1-1">
    LSE Format A is an LSE as described in <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/> and <xref target="RFC5462" format="default" sectionFormat="of" derivedContent="RFC5462"/>.
The label value is 4 for the MNA bSPL label
from the "Base Special-Purpose MPLS Label Values" IANA registry (see <xref target="sect-J13.6" format="default" sectionFormat="of" derivedContent="Section 13.1"/>) to
indicate the presence of an MNA in the packet and the beginning of an MNA
Sub-Stack in the label stack.
        </t>
        <figure align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-lse-format-a-the-mna-sub-sta">LSE Format A: The MNA Sub-Stack Indicator</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.1-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL                   | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.1-3">
          <dt pn="section-4.1-3.1">S (1 bit):</dt>
          <dd pn="section-4.1-3.2">The BoS <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/>.
      <bcp14>MUST</bcp14> be set to 0 on transmitted packets. 
      If a packet is received with an LSE containing the bSPL (4) and
      with S bit set to 1, then the packet <bcp14>MUST</bcp14> be dropped.
    </dd>
        </dl>
      </section>
      <section anchor="LSE-B" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-lse-format-b-the-initial-op">LSE Format B: The Initial Opcode</name>
        <t indent="0" pn="section-4.2-1">LSE Format B is used to encode the first opcode in the NAS,
    plus a number of other fields about the NAS. 
    The Data field of this LSE can carry up to 13 bits of AD.
        </t>
        <figure align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-lse-format-b-the-initial-opc">LSE Format B: The Initial Opcode</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.2-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Opcode    |        13-bit Data      |R|IHS|S|  NASL |U| NAL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.2-3">
          <dt pn="section-4.2-3.1">
      Opcode (7 bits):</dt>
          <dd pn="section-4.2-3.2">The operation code for this LSE. See
      <xref target="Opcodes" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.
    </dd>
          <dt pn="section-4.2-3.3">
      Data (13 bits):</dt>
          <dd pn="section-4.2-3.4">Opcode-specific AD. 
    </dd>
          <dt pn="section-4.2-3.5"> 
       R (1 bit): Reserved.</dt>
          <dd pn="section-4.2-3.6">This bit <bcp14>MUST</bcp14> be set to zero on transmission and ignored upon receipt. 
    </dd>
          <dt pn="section-4.2-3.7">
      IHS (2 bits):</dt>
          <dd pn="section-4.2-3.8">The scope of all the network actions in this NAS. See <xref target="Scope" format="default" sectionFormat="of" derivedContent="Section 5.3"/>.
    </dd>
          <dt pn="section-4.2-3.9">
      S (1 bit):</dt>
          <dd pn="section-4.2-3.10">The BoS <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/>. 
      If the NASL value is non-zero, then the S bit <bcp14>MUST</bcp14> be 0. 
      If a packet is received with the S bit set to 1 and a non-zero NASL value, 
      then the packet <bcp14>MUST</bcp14> be dropped. The encapsulating node <bcp14>MUST</bcp14> ensure that the S bit is set to 1 only in the last LSE in the MPLS header.
    </dd>
          <dt pn="section-4.2-3.11">
      NASL (4 bits):</dt>
          <dd pn="section-4.2-3.12">The Network Action Sub-Stack Length. The number of Format C and Format D LSEs in the NAS, i.e., not
      including the leading Format A LSE and the Format B LSE.

    </dd>
          <dt pn="section-4.2-3.13">
      U (1 bit):</dt>
          <dd pn="section-4.2-3.14">Unknown Network Action Handling. See <xref target="UOH" format="default" sectionFormat="of" derivedContent="Section 5.4"/>.
    </dd>
          <dt pn="section-4.2-3.15">
      NAL (3 bits):</dt>
          <dd pn="section-4.2-3.16">Network Action Length. The number of LSEs of
      additional data, encoded in Format D LSEs (<xref target="LSE-D" format="default" sectionFormat="of" derivedContent="Section 4.4"/>), 
      following this Format B LSE. The NAL value <bcp14>MUST</bcp14> be less than or equal to the NASL value in the Format B LSE.  If not, the packet <bcp14>MUST</bcp14> be dropped.
      A Format C LSE would be following when the NAL value is less than the NASL value.
    </dd>
        </dl>
      </section>
      <section anchor="LSE-C" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-lse-format-c-subsequent-opc">LSE Format C: Subsequent Opcodes</name>
        <t indent="0" pn="section-4.3-1">
    LSE Format C is used to encode the subsequent opcodes in the NAS.
        </t>
        <figure align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-lse-format-c-subsequent-opco">LSE Format C: Subsequent Opcodes</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.3-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Opcode    |        16-bit Data            |S|4b Data|U| NAL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.3-3">
          <dt pn="section-4.3-3.1">Opcode (7 bits):</dt>
          <dd pn="section-4.3-3.2">The operation code for this LSE. See
    <xref target="Opcodes" format="default" sectionFormat="of" derivedContent="Section 5.1"/>.</dd>
          <dt pn="section-4.3-3.3">Data (16 bits + 4 bits):</dt>
          <dd pn="section-4.3-3.4">Opcode-specific AD.</dd>
          <dt pn="section-4.3-3.5">
    S (1 bit):</dt>
          <dd pn="section-4.3-3.6">The BoS <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/>. 
    If the NAL value is non-zero and if the S bit is set to 1, then the packet <bcp14>MUST</bcp14> be dropped. 
    If this is not the last LSE in the NAS and if the S bit is set to 1, then the packet <bcp14>MUST</bcp14> be dropped. 
    The encapsulating node <bcp14>MUST</bcp14> ensure that the S bit is set to 1 only in the last LSE.
    </dd>
          <dt pn="section-4.3-3.7">
      U (1 bit):</dt>
          <dd pn="section-4.3-3.8">Unknown Network Action Handling. See <xref target="UOH" format="default" sectionFormat="of" derivedContent="Section 5.4"/>.
    </dd>
          <dt pn="section-4.3-3.9">
    NAL (3 bits):</dt>
          <dd pn="section-4.3-3.10">Network Action Length. The number of LSEs of
    additional data, encoded in Format D LSEs (<xref target="LSE-D" format="default" sectionFormat="of" derivedContent="Section 4.4"/>) following this Format C LSE. 
    The NAL value <bcp14>MUST</bcp14> be less than or equal to the NASL value in the Format B LSE.  If not, the packet <bcp14>MUST</bcp14> be dropped.
    </dd>
        </dl>
        <t indent="0" pn="section-4.3-4">
        A Format A and a Format B LSE <bcp14>MUST</bcp14> be present when a Format C LSE is carried in the NAS. 
        </t>
      </section>
      <section anchor="LSE-D" numbered="true" removeInRFC="false" toc="include" pn="section-4.4">
        <name slugifiedName="name-lse-format-d-additional-dat">LSE Format D: Additional Data</name>
        <t indent="0" pn="section-4.4-1">
    LSE Format D is used to encode additional data that
    did not fit in the LSE with the preceding opcode.
        </t>
        <figure align="left" suppress-title="false" pn="figure-5">
          <name slugifiedName="name-lse-format-d-additional-data">LSE Format D: Additional Data</name>
          <artwork name="" type="" align="left" alt="" pn="section-4.4-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|                    22-bit Data            |S|  8-bit Data   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
        </figure>
        <dl spacing="normal" newline="false" indent="3" pn="section-4.4-3">
          <dt pn="section-4.4-3.1">
      1 (1 bit):</dt>
          <dd pn="section-4.4-3.2">The most significant bit <bcp14>MUST</bcp14> be set. This
      prevents legacy implementations from misinterpreting this
      LSE as containing a special purpose label if the data begins with zeros.
    </dd>
          <dt pn="section-4.4-3.3">
    S (1 bit):</dt>
          <dd pn="section-4.4-3.4">The BoS <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/>. 
    If this is not the last LSE for the network action based on the NAL value and if the S bit is 
    set to 1, then the packet <bcp14>MUST</bcp14> be dropped. If this is not the last LSE in the NAS and 
    if the S bit is set to 1, then the packet <bcp14>MUST</bcp14> be dropped. The encapsulating node <bcp14>MUST</bcp14> ensure that the S bit is set to 1 only in the last LSE.

    </dd>
          <dt pn="section-4.4-3.5">Data (22 bits + 8 bits):</dt>
          <dd pn="section-4.4-3.6">Opcode-specific AD.</dd>
        </dl>
        <t indent="0" pn="section-4.4-4">
        A Format A and a Format B LSE <bcp14>MUST</bcp14> be present when a Format D LSE is carried in the NAS. 
        </t>
      </section>
    </section>
    <section anchor="sect-3.1" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-the-mna-sub-stack">The MNA Sub-Stack</name>
      <t indent="0" pn="section-5-1">
    The MNA Sub-Stack <bcp14>MUST</bcp14> begin with a Format A LSE (<xref target="LSE-A" format="default" sectionFormat="of" derivedContent="Section 4.1"/>). 
    The label value of the LSE contains the MNA bSPL
    (4) to indicate the presence of the MNA Sub-Stack.
      </t>
      <t indent="0" pn="section-5-2">
      The TC and TTL values of the Format A LSE retain their semantics as 
      defined in <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/> and 
      <xref target="RFC5462" format="default" sectionFormat="of" derivedContent="RFC5462"/>. The TTL and TC values in 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 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 <xref target="RFC3443" section="3.5" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc3443#section-3.5" derivedContent="RFC3443"/> and <xref target="RFC3270" section="2.6.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc3270#section-2.6.3" derivedContent="RFC3270"/> 
      in the 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.
      </t>
      <t indent="0" pn="section-5-3">
      The second LSE in a NAS <bcp14>MUST</bcp14> be a Format B LSE (<xref target="LSE-B" format="default" sectionFormat="of" derivedContent="Section 4.2"/>). This LSE contains an initial opcode plus
      additional fields that describe the NAS.
      </t>
      <t indent="0" pn="section-5-4">
      The Format B LSE (<xref target="LSE-B" format="default" sectionFormat="of" derivedContent="Section 4.2"/>) could optionally carry additional data in 
      Format D (<xref target="LSE-D" format="default" sectionFormat="of" derivedContent="Section 4.4"/>) LSEs, up to the length encoded
      in the LSE's NAL value. 
      </t>
      <t indent="0" pn="section-5-5">
      A NAS <bcp14>MAY</bcp14> contain more Format C (<xref target="LSE-C" format="default" sectionFormat="of" derivedContent="Section 4.3"/>) and
      Format D (<xref target="LSE-D" format="default" sectionFormat="of" derivedContent="Section 4.4"/>) LSEs, up to the length encoded
      in the NASL value. All Format D LSEs <bcp14>MUST</bcp14> follow a Format C or Format B LSE
      and be included in that LSE's NAL value.
      </t>
      <section anchor="Opcodes" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-opcodes">Opcodes</name>
        <t indent="0" pn="section-5.1-1">
    The opcode is a 7-bit field that indicates the semantics of
    its LSE. Several opcodes are assigned special semantics (<xref target="SpecialOpcodes" format="default" sectionFormat="of" derivedContent="Section 6"/>).  Other opcodes act as NAIs and are assigned through IANA (see Sections <xref target="Allocation" format="counter" sectionFormat="of" derivedContent="10"/> and <xref target="IANAOpcodes" format="counter" sectionFormat="of" derivedContent="13.2.2"/>).
        </t>
      </section>
      <section anchor="Data" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-ancillary-data">Ancillary Data</name>
        <t indent="0" pn="section-5.2-1">
   The data field carries opcode-specific data that is AD
   for a network action.
   In the case of opcode 1, the data field carries
   Flag-Based NAIs without AD.
        </t>
        <t indent="0" pn="section-5.2-2">
   The label value (most significant 20 bits) in one or more consecutive LSEs is commonly used 
   for load-balancing data flows in an ECMP environment. Modifying the first 20 bits in an LSE might alter a
   packet's path and result in out-of-order delivery of packets belonging to a given flow.

   To maintain the stability of deployed services in ECMP environments 
   that rely on label value information for load-balancing, care must be taken when 
   encoding network action 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 network, it <bcp14>MUST NOT</bcp14> be placed in the most significant 20 bits
   of a Format B LSE
   (<xref target="LSE-B" format="default" sectionFormat="of" derivedContent="Section 4.2"/>), a Format C LSE (<xref target="LSE-C" format="default" sectionFormat="of" derivedContent="Section 4.3"/>), or a Format D LSE
   (<xref target="LSE-D" format="default" sectionFormat="of" derivedContent="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 Format A and Format B LSEs is 0, in a Format C LSE 7
   (bits 20-22 and 25-28), and in a Format D LSE 11 (bits 20-22 and 24-31).
        </t>
        <t indent="0" pn="section-5.2-3">
   Similarly, to preserve service stability,
   such data also <bcp14>MUST NOT</bcp14> be carried in 
   the most significant 23 bits of these LSEs when the 
   legacy implementation also uses the TC value, in addition to the label value, in all LSEs 
   when computing ECMP decisions. 
        </t>
        <t indent="0" pn="section-5.2-4">
   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 Data as
   described in <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/>.
        </t>
        <t indent="0" pn="section-5.2-5">
   In network deployments where it is known that a load-balancing of data flows is not used,
   or if only the explicitly signaled entropy value is used, and it is certain
   that the load-balancing path selection will not be based on the label value of
   the LSEs, then the data in the label value of the LSEs in the ISD <bcp14>MAY</bcp14> be
   mutable within the data flow without causing the out-of-order delivery of packets.
        </t>
      </section>
      <section anchor="Scope" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-scope">Scope</name>
        <t indent="0" pn="section-5.3-1">
    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 should perform the network
    actions found within the NAS.  The specific values of the IHS
    field are as follows:
        </t>
        <table anchor="In-stack-scope-tbl" align="center" pn="table-2">
          <name slugifiedName="name-ihs-scope-values">IHS Scope Values</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1"> Bits </th>
              <th align="left" colspan="1" rowspan="1"> Scope </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">00</td>
              <td align="left" colspan="1" rowspan="1">I2E</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">01</td>
              <td align="left" colspan="1" rowspan="1">HbH</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">Select</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">11</td>
              <td align="left" colspan="1" rowspan="1">Reserved for future use</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-5.3-3">
        </t>
        <dl spacing="normal" newline="false" indent="3" pn="section-5.3-4">
          <dt pn="section-5.3-4.1">Ingress to Egress (I2E):</dt>
          <dd pn="section-5.3-4.2">The network actions in this NAS <bcp14>MUST NOT</bcp14> be processed by any node except the egress node.</dd>
          <dt pn="section-5.3-4.3">Hop-by-Hop (HbH):</dt>
          <dd pn="section-5.3-4.4">All nodes along the path <bcp14>MUST</bcp14> process the NAS.</dd>
          <dt pn="section-5.3-4.5">Select:</dt>
          <dd pn="section-5.3-4.6">Only specific nodes along the path that bring NAS to the top of the stack will perform the action.</dd>
        </dl>
        <t indent="0" pn="section-5.3-5">
    A given NAS can only carry NAIs with the same scope (I2E/HbH/Select). To support multiple scopes for a single
    packet, multiple NASes <bcp14>MAY</bcp14> be included in a single label stack.
        </t>
        <t indent="0" pn="section-5.3-6">	
    The egress node is included in the HbH scope. This implies
    that the penultimate node <bcp14>MUST NOT</bcp14> remove a NAS with HbH scope. The
    egress node may receive a NAS at the top of the label stack as discussed in <xref target="ENRs" format="default" sectionFormat="of" derivedContent="Section 9.4"/>.
        </t>
        <t indent="0" pn="section-5.3-7">
    A NAS with I2E scope, if present, <bcp14>MUST</bcp14> be encoded after any HbH or Select scope
    NASes. This makes it easier for the transit nodes to process a
    NAS with HbH or Select scope.
        </t>
        <t indent="0" pn="section-5.3-8">
    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 B LSE in the NAS.
        </t>
      </section>
      <section anchor="UOH" numbered="true" removeInRFC="false" toc="include" pn="section-5.4">
        <name slugifiedName="name-unknown-network-action-hand">Unknown Network Action Handling</name>
        <t indent="0" pn="section-5.4-1">
    The Unknown Network Action Handling (U) field in a Format B LSE
    (<xref target="LSE-B" format="default" sectionFormat="of" derivedContent="Section 4.2"/>) and Format C LSE (<xref target="LSE-C" format="default" sectionFormat="of" derivedContent="Section 4.3"/>) is a 1-bit value that defines the action to
    be taken by a node that does not understand an action within
    the NAS. The different types of Unknown Network Action
    Handling actions are defined below. 
        </t>
        <table anchor="UOH-tbl" align="center" pn="table-3">
          <name slugifiedName="name-unknown-network-action-handl">Unknown Network Action Handling</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1"> Bit </th>
              <th align="left" colspan="1" rowspan="1"> Action </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">0</td>
              <td align="left" colspan="1" rowspan="1">Skip to the next NA </td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">Drop the packet</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-5.4-3">
   When a packet with an Unknown Network Action Handling is dropped, the node should maintain a local counter for this event and may send a rate-limited notification to the operator.
        </t>
      </section>
      <section anchor="Ordering" numbered="true" removeInRFC="false" toc="include" pn="section-5.5">
        <name slugifiedName="name-ordering">Ordering</name>
        <t indent="0" pn="section-5.5-1">
   The network actions encoded in the NAS <bcp14>MUST</bcp14> be processed in the order
   that they appear in the NAS, from the top of the NAS to the bottom. 
   NAIs encoded as flags (see <xref target="sect-J5.2b" format="default" sectionFormat="of" derivedContent="Section 6.2"/>) <bcp14>MUST</bcp14> be processed from the
   most significant bit to the least significant bit.  If a label stack
   contains multiple NASes, they <bcp14>MUST</bcp14> be processed in the order that
   they appear in the label stack, subject to the restrictions in
   <xref target="Placement" format="default" sectionFormat="of" derivedContent="Section 7"/>.
        </t>
      </section>
    </section>
    <section anchor="SpecialOpcodes" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-special-opcodes">Special Opcodes</name>
      <t indent="0" pn="section-6-1">      
    Below are the special opcodes defined to build a basic in-stack MNA solution and assigned in the "Network Action Opcodes" IANA registry (see <xref target="IANAOpcodes" format="default" sectionFormat="of" derivedContent="Section 13.2.2"/>). 
    In the future, additional special opcodes may be defined and their code points assigned from this registry.
      </t>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-bspl-protection">bSPL Protection</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-6.1-1">
          <dt pn="section-6.1-1.1">Opcode:</dt>
          <dd pn="section-6.1-1.2">0</dd>
          <dt pn="section-6.1-1.3">Purpose:</dt>
          <dd pn="section-6.1-1.4">Legacy implementations may scan the label stack
	looking for bSPL values. As long as the opcode field is non-zero, an
	LSE cannot be misinterpreted as containing a bSPL. Therefore, opcode 0 is
	reserved and not to be used.</dd>
        </dl>
      </section>
      <section anchor="sect-J5.2b" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-flag-based-nais-without-ad">Flag-Based NAIs Without AD</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-6.2-1">
          <dt pn="section-6.2-1.1">Opcode:</dt>
          <dd pn="section-6.2-1.2">1</dd>
          <dt pn="section-6.2-1.3">Purpose:</dt>
          <dd pn="section-6.2-1.4">This opcode is used for network actions that do
	not require AD. A single flag can be used to indicate each
	of these network actions.</dd>
          <dt pn="section-6.2-1.5">LSE Formats:</dt>
          <dd pn="section-6.2-1.6">B, C, D</dd>
          <dt pn="section-6.2-1.7">Data:</dt>
          <dd pn="section-6.2-1.8">The data field carries NAIs, which
    should be evaluated from the most significant bit to the least
    significant bit. 
    If this opcode is used with LSE Format B only, then up to 13 flags may be carried.
    If this opcode is used with LSE Format C only, then up to 20 flags may be carried.
    Format D LSEs can be used with Format C LSEs to encode more than 20 flags.
    Flags are assigned from the "Network Action Flags
    Without Ancillary Data" registry (<xref target="IANAFlags" format="default" sectionFormat="of" derivedContent="Section 13.2.1"/>). If flags need to be evaluated in a
    different order, multiple LSEs using this opcode may be used
    to specify the requested order.
    The Flag-Based NAIs <bcp14>MUST</bcp14> follow the procedure for data specified in <xref target="Data" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.</dd>
          <dt pn="section-6.2-1.9">Scope:</dt>
          <dd pn="section-6.2-1.10">This opcode can be used with any scope.</dd>
        </dl>
      </section>
      <section anchor="sect-J5.2c" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-no-operation-opcode">No-Operation Opcode</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-6.3-1">
          <dt pn="section-6.3-1.1">Opcode:</dt>
          <dd pn="section-6.3-1.2">2</dd>
          <dt pn="section-6.3-1.3">Purpose:</dt>
          <dd pn="section-6.3-1.4">This opcode is used to indicate that it
	does not perform any network action and <bcp14>MUST</bcp14> be
	skipped.</dd>
          <dt pn="section-6.3-1.5">LSE Format:</dt>
          <dd pn="section-6.3-1.6">B</dd>
          <dt pn="section-6.3-1.7">Scope:</dt>
          <dd pn="section-6.3-1.8">Any scope value may be set and <bcp14>MUST</bcp14> be ignored.</dd>
        </dl>
      </section>
      <section anchor="sect-J5.2g" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-extension-opcode">Extension Opcode</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-6.4-1">
          <dt pn="section-6.4-1.1">Opcode:</dt>
          <dd pn="section-6.4-1.2">127</dd>
          <dt pn="section-6.4-1.3">Purpose:</dt>
          <dd pn="section-6.4-1.4">This opcode is used to extend the current opcode
	range beyond 127 in the future. If this opcode is not supported, then
	the packet with opcode 127 <bcp14>MUST</bcp14> be dropped
	regardless of the setting of the U bit.  Use of this opcode is outside
	the scope of this document.</dd>
        </dl>
      </section>
    </section>
    <section anchor="Placement" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-nas-placement-in-the-label-">NAS Placement in the Label Stack</name>
      <t indent="0" pn="section-7-1">
   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
   path has a Readable Label Depth (RLD). If the NAS is to be processed
   by a downstream MNA-capable node, then the entire NAS <bcp14>MUST</bcp14> be placed
   so that it is within RLD by the time the packet reaches the 
   downstream MNA-capable node.
   The RLD of the downstream MNA-capable node <bcp14>MUST</bcp14> be learned as described in <xref target="RFC9789" section="2.3.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9789#section-2.3.1" derivedContent="RFC9789"/>.

      </t>
      <t indent="0" pn="section-7-2">
   If the label stack is deep, several copies of the NAS may need to be
   encoded in the label stack.
      </t>
      <t indent="0" pn="section-7-3">
   For a NAS with HbH scope, every node will process the top copy of
   the NAS.  However, the NAS <bcp14>MUST NOT</bcp14> appear at the top of the stack at any
   MNA-incapable node on the path that is ensured by the encapsulating node using the node capability, as described in <xref target="Signaling" format="default" sectionFormat="of" derivedContent="Section 8"/>.  
      </t>
      <t indent="0" pn="section-7-4">
   A NAS <bcp14>MUST NOT</bcp14> appear at the top of the stack after popping the forwarding label on an MNA-incapable node on the path.
      </t>
      <t indent="0" pn="section-7-5">
   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 outside the scope of this document.
      </t>
      <t indent="0" pn="section-7-6">
   A NAS with Select scope is processed by the node that
   brings the NAS to the top of the stack (for example, in the case of using 
   the MPLS label pop operation in Segment Routing); then, the NAS is removed from
   the stack. The Select scope NAS needs to be inserted after the forwarding label 
   and before the next forwarding label. It could be inserted before or after a NAS with HbH scope.
   Note that the case of a NAS with Select scope with an MPLS label swap operation (for example, with RSVP-TE LSPs) is for future study.
      </t>
      <t indent="0" pn="section-7-7">
   For a NAS with I2E scope, only one copy of the NAS needs to be added at the bottom of the stack.
      </t>
      <t indent="0" pn="section-7-8">
   A transit node that is not the penultimate node that pops a forwarding label and exposes a copy of a NAS <bcp14>MUST</bcp14> remove that NAS.  
      </t>
      <t indent="0" pn="section-7-9">
   An MNA-capable node performing Penultimate Hop Popping (PHP) that pops the forwarding label with only
   the NAS(es) remaining on the stack <bcp14>MUST NOT</bcp14> remove the NAS(es). Instead, it forwards the packet with the NAS(es) at
   the top of the stack to the next node.
   Note that the behavior of the PHP node, as defined in <xref target="RFC3270" format="default" sectionFormat="of" derivedContent="RFC3270"/> for TC processing and as defined in 
   <xref target="RFC3443" format="default" sectionFormat="of" derivedContent="RFC3443"/> for TTL processing, is not modified regardless of whether the PHP node supports MNA.
      </t>
      <t indent="0" pn="section-7-10">
   The node that receives the NAS at the top of the label stack <bcp14>MUST</bcp14> process and remove it.
      </t>
      <section anchor="ActionsWhenPushingLabels" numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-actions-when-pushing-labels">Actions When Pushing Labels</name>
        <t indent="0" pn="section-7.1-1">
    An MNA-capable node may need to push additional labels as well as push new network actions onto a received packet.
        </t>
        <t indent="0" pn="section-7.1-2">
    While pushing additional labels onto the label stack of the received packet, the MNA-capable node <bcp14>MUST</bcp14> 
    verify that the entire topmost NAS with HbH scope is still within the RLD of the downstream MNA-capable nodes. 
    If required, the MNA-capable node <bcp14>MAY</bcp14> create a copy of the topmost NAS with HbH scope and insert it within the RLD of the downstream MNA-capable nodes on the label stack.
        </t>
        <t indent="0" pn="section-7.1-3">
    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 <bcp14>SHOULD</bcp14> copy (and merge) the network actions (including their AD) from the received topmost NAS with HbH 
    scope in the new NAS with HbH scope. The new NAS <bcp14>MUST</bcp14> be placed within the RLD of the downstream MNA-capable nodes. 
    This behavior can be based on local policy.
        </t>
        <t indent="0" pn="section-7.1-4">
    The new network actions added <bcp14>MUST NOT</bcp14> conflict with the network actions in the received NAS with HbH scope. 
    The mechanism to resolve such conflicts depends on the network actions and can be based on local policy. 
    The MNA-capable node that pushes entries <bcp14>MUST</bcp14> understand
    any network actions that it is pushing that may result in a conflict and
    <bcp14>MUST</bcp14> resolve any conflicts between new and received network actions.  In the
    usual case of a conflict of duplicating a network action, the definition of
    a network action <bcp14>MUST</bcp14> give guidance on conflict resolution.  
        </t>
      </section>
    </section>
    <section anchor="Signaling" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-node-capability-signaling">Node Capability Signaling</name>
      <t indent="0" pn="section-8-1">
    The encapsulating node <bcp14>MUST</bcp14> make sure that the NAS can be processed by the transit and egress nodes. 
    In addition, the encapsulated packet <bcp14>MUST NOT</bcp14> exceed the path MTU as described in <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/>.
      </t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-8-2">
        <li pn="section-8-2.1">
    The node responsible for selecting a path through the MPLS network needs to know and consider the 
    MNA-capabilities and RLD of the transit nodes as well as the MNA-capabilities of the egress node as 
    described in <xref target="RFC9789" section="2.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9789#section-2.3" derivedContent="RFC9789"/>.
      </li>
        <li pn="section-8-2.2">
    Information about the capabilities of the nodes may be configured, collected through management protocols, or distributed by control protocols (such as advertising by routing protocols). 
      </li>
        <li pn="section-8-2.3">
    The node responsible for selecting a path through the MPLS network learns about the capabilities of nodes using mechanisms that are out of scope for this document.
      </li>
        <li pn="section-8-2.4">
    In the case of Segment Routing over MPLS (SR-MPLS), as well as the
    RLD, the path computation system needs to know the Maximum SID Depth (MSD) <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>
    that can be imposed at the ingress node of a given SR path.
    This
    ensures that the label stack depth of a computed path does not
    exceed the maximum number of labels (i.e., MSD) the node is
    capable of imposing and the maximum number of labels that can be
    read by the MNA-processing nodes in the path.  The MSD <bcp14>MUST</bcp14> include the MNA Sub-Stacks that will be added.
     </li>
        <li pn="section-8-2.5">
   The encapsulating node <bcp14>MUST</bcp14> learn about the RLD of the nodes in the path as described in <xref target="RFC9789" section="2.3.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9789#section-2.3.1" derivedContent="RFC9789"/>.
     
  
     </li>
      </ul>
    </section>
    <section anchor="sect-J12.1a" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-processing-the-network-acti">Processing the Network Action Sub-Stack</name>
      <t indent="0" pn="section-9-1">
      This section defines the specific responsibilities for nodes
      along an LSP <xref target="RFC3031" format="default" sectionFormat="of" derivedContent="RFC3031"/>.
      </t>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-9.1">
        <name slugifiedName="name-encapsulating-node-responsi"> Encapsulating Node Responsibilities </name>
        <t indent="0" pn="section-9.1-1">
    The encapsulating node <bcp14>MAY</bcp14> add NASes to the label stack in
    accordance with its policies, the placement restrictions in
    <xref target="Placement" format="default" sectionFormat="of" derivedContent="Section 7"/>, and the capabilities learned
    from <xref target="Signaling" format="default" sectionFormat="of" derivedContent="Section 8"/>.
        </t>
        <t indent="0" pn="section-9.1-2">
      If there is an existing label stack, the encapsulating node <bcp14>MUST NOT</bcp14> modify the first 20 bits of 
      any LSE in the label stack when the ECMP technique in the network uses hashing of the labels on the label stack.
        </t>
      </section>
      <section anchor="Transit-Node-Responsibilities" numbered="true" toc="include" removeInRFC="false" pn="section-9.2">
        <name slugifiedName="name-transit-node-responsibiliti"> Transit Node Responsibilities </name>
        <t indent="0" pn="section-9.2-1">
      The transit node is the node that processes a NAS in the label stack but does not push any new NAS.
        </t>
        <t indent="0" pn="section-9.2-2">
      The transit node <bcp14>MUST</bcp14> follow the procedure for data specified in <xref target="Data" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.
        </t>
        <t indent="0" pn="section-9.2-3">
      Transit nodes <bcp14>MUST</bcp14> process the NASes in the label stack
      according to the rules set out in <xref target="Ordering" format="default" sectionFormat="of" derivedContent="Section 5.5"/>.
        </t>
        <t indent="0" pn="section-9.2-4">
      A transit node that processes a NAS and does not recognize the value of an opcode <bcp14>MUST</bcp14> follow the rules 
      according to the setting of the Unknown Network Action Handling value in the NAS as described in <xref target="UOH" format="default" sectionFormat="of" derivedContent="Section 5.4"/>.
        </t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-9.3">
        <name slugifiedName="name-penultimate-node-responsibi"> Penultimate Node Responsibilities </name>
        <t indent="0" pn="section-9.3-1">
    In addition to the transit node responsibilities, the
    penultimate node and penultimate SR-MPLS segment node <bcp14>MUST NOT</bcp14> remove the last copy of an HbH or I2E
    NAS when it is exposed after removing the forwarding
    (transport) label. This allows the egress node to process the
    NAS.
        </t>
      </section>
      <section anchor="ENRs" numbered="true" removeInRFC="false" toc="include" pn="section-9.4">
        <name slugifiedName="name-egress-node-responsibilitie"> Egress Node Responsibilities </name>
        <t indent="0" pn="section-9.4-1">
    The egress node <bcp14>MUST</bcp14> remove any NAS it receives.
        </t>
      </section>
    </section>
    <section anchor="Allocation" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-network-action-indicator-op">Network Action Indicator Opcode Definition</name>
      <t indent="0" pn="section-10-1">The following information <bcp14>MUST</bcp14> be defined for a new NAI opcode request in the document that specifies the network action.  This updates the list found in <xref target="RFC9789" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9789#section-5" derivedContent="RFC9789"/> and should be used instead of that list.
      </t>
      <dl indent="3" newline="false" spacing="normal" pn="section-10-2">
        <dt pn="section-10-2.1">Format:</dt>
        <dd pn="section-10-2.2">The definition of the new network action <bcp14>MUST</bcp14>
        specify the LSE formats. The opcode can define the network action in Format B or C or both Formats B and C. 
        Both Format B and C LSEs <bcp14>MAY</bcp14> optionally carry Format D LSEs.
    </dd>
        <dt pn="section-10-2.3">Scope:</dt>
        <dd pn="section-10-2.4">The definition of the new network action <bcp14>MUST</bcp14> specify at 
      least one scope (I2E, HbH, Select) for the network action and <bcp14>MAY</bcp14>
      specify more than one scope.
    </dd>
        <dt pn="section-10-2.5">Ancillary Data:</dt>
        <dd pn="section-10-2.6">The definition of the new network action <bcp14>MUST</bcp14> 
      specify the quantity, syntax, and semantics of any associated 
      AD.  The AD <bcp14>MAY</bcp14> be variable length, but
      the NAL <bcp14>MUST</bcp14> be computable based on the data added in the 
      NAS.
    </dd>
        <dt pn="section-10-2.7">Processing:</dt>
        <dd pn="section-10-2.8">The definition of the new network action <bcp14>MUST</bcp14> specify
      the detailed procedure for processing the network action.
    </dd>
        <dt pn="section-10-2.9">Interactions:</dt>
        <dd pn="section-10-2.10">The definition of the new network action <bcp14>MUST</bcp14> specify its 
    interaction including merging with other currently defined network action if there is any.
    </dd>
      </dl>
      <t indent="0" pn="section-10-3">
    An assignment for a NAI <bcp14>MAY</bcp14> make
    requests from any combination of the "Network Action Opcodes"
    or "Network Action Flags Without Ancillary Data" assignments (see <xref target="sect-J13" format="default" sectionFormat="of" derivedContent="Section 13"/>).
    This decision should optimize for eventual
    encoding efficiency. If the NAI does not require any AD, then a flag is preferred as only one bit is used in the
    encoding. 
      </t>
    </section>
    <section anchor="sect-J11" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-11-1">
      The security considerations in <xref target="RFC3032" format="default" sectionFormat="of" derivedContent="RFC3032"/> and <xref target="RFC9789" format="default" sectionFormat="of" derivedContent="RFC9789"/> also apply to this document.
      </t>
      <t indent="0" pn="section-11-2"> 
      In addition, MNA creates a new dimension in security
      concerns:
      </t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-11-3">
        <li pn="section-11-3.1">
      The actions of an encapsulating node can affect any or all
      of the nodes along the path. In the most common and benign
      situations, a syntactically incorrect packet
      could result in packet loss or corruption, for example.
    </li>
        <li pn="section-11-3.2">
      The semantics of a network action are unbounded and may be
      insecure. A network action could be defined that makes
      arbitrary changes to the memory of the forwarding router,
      which could then be used by the encapsulating node to
      compromise every MNA-capable router in the network.
    </li>
        <li pn="section-11-3.3">
      The MNA architecture supports locally defined network
      actions. For such actions, there will be limited oversight
      to ensure that the semantics do not create security
      issues. Implementors and network operators will need to
      ensure that even the locally defined network actions do not
      compromise the security of the network by following the security considerations specified in this document.
    </li>
        <li pn="section-11-3.4">
    The MPLS domain border nodes <bcp14>MUST</bcp14> ensure that the MPLS packets with MNA from 
    any domain with a different administrative control can be
    filtered to prevent entering the provider MPLS domain. The filtering capability <bcp14>MAY</bcp14> be enabled on a per-network-action basis, and it can be based on a local policy.
    The filtering capability <bcp14>MUST</bcp14> be implemented on those nodes before deploying MNA in the provider MPLS domain. 
    The RLD on the filtering node <bcp14>MUST</bcp14> be higher than the RLD on all other nodes in the provider MPLS domain.
    </li>
        <li pn="section-11-3.5">
    The MNA architecture supports modifying the AD on the intermediate 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 verify the security of the whole network. 
    </li>
        <li pn="section-11-3.6">
   System designers must be aware that information included in AD may be transmitted "in the clear".  Network actions that require
   the exchange of sensitive data <bcp14>MUST</bcp14> be defined in such a way that 
   the data is encrypted in transit. Otherwise, sensitive data <bcp14>MUST NOT</bcp14> be transmitted using these mechanisms.
   </li>
        <li pn="section-11-3.7">
   Mis-delivery of a packet due to malformed forwarding action data could be considered a security risk.
   </li>
      </ul>
    </section>
    <section anchor="sect-J11b" numbered="true" toc="include" removeInRFC="false" pn="section-12">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <section anchor="sect-Manag-J11b" numbered="true" toc="include" removeInRFC="false" pn="section-12.1">
        <name slugifiedName="name-manageability-consideration">Manageability Considerations</name>
        <t indent="0" pn="section-12.1-1"> 
    An MNA implementation <bcp14>MAY</bcp14> collect the following counters:
        </t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-12.1-2">
          <li pn="section-12.1-2.1">
      Packets with MNA received
      </li>
          <li pn="section-12.1-2.2">
      MNA Sub-Stacks processed
      </li>
          <li pn="section-12.1-2.3">
      MNA per-network-action counters
      </li>
          <li pn="section-12.1-2.4">
      Packets with MNA dropped due to unknown actions
      </li>
          <li pn="section-12.1-2.5">
      Packets with MNA skipped due to unknown actions
      </li>
          <li pn="section-12.1-2.6">
      Packets with MNA dropped due to malformed NAS
      </li>
        </ul>
        <t indent="0" pn="section-12.1-3">
    Additionally, tracking both successful invocations and failures for each specific network action is <bcp14>RECOMMENDED</bcp14> to provide granular visibility. 
    Nodes <bcp14>MAY</bcp14> generate rate-limited notifications or alarms for significant operational events, such as sustained high rates of MNA packet drops or
    frequent encounters of malformed MNA Sub-Stacks, to alert operators to potential issues. 
    Comprehensive logging of MNA processing details and outcomes can aid in the network diagnostics and post-mortem analysis. 
        </t>
      </section>
      <section anchor="sect-Perf-J11b" numbered="true" toc="include" removeInRFC="false" pn="section-12.2">
        <name slugifiedName="name-performance-and-scale-consi">Performance and Scale Considerations </name>
        <t indent="0" pn="section-12.2-1">
      Performance and scale assessments are outside the scope of this document; the authors of any future MNA application documents are encouraged to address them.
        </t>
      </section>
      <section anchor="sect-J12" numbered="true" toc="include" removeInRFC="false" pn="section-12.3">
        <name slugifiedName="name-backward-compatibility">Backward Compatibility</name>
        <t indent="0" pn="section-12.3-1">
      This section discusses interactions between MNA-capable and
      MNA-incapable nodes.
        </t>
        <t indent="0" pn="section-12.3-2">
      An MNA encapsulating node <bcp14>MUST</bcp14> ensure that the MPLS
      NAS is not at the top of the MPLS label
      stack when 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 described in <xref target="RFC7325" section="2.1.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7325#section-2.1.1" derivedContent="RFC7325"/>.
        </t>
        <t indent="0" pn="section-12.3-3">
      Any node could scan the label stack, potentially looking for a label 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 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 be misinterpreted as containing a bSPL
      value (0-15).
        </t>
        <t indent="0" pn="section-12.3-4">
      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 propagate TTL from the transport (or forwarding) label to
      the next 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, potentially corrupting other values stored
      in the TC and TTL values. To protect against this, we retain the
      TC and TTL values in the Format A LSE.
        </t>
        <t indent="0" pn="section-12.3-5">
      When adding the Entropy Label Indicator (ELI) (bSPL 7) and Entropy 
      Label (EL) as defined in <xref target="RFC6790" format="default" sectionFormat="of" derivedContent="RFC6790"/>, along with an MNA NAS, the RLD <bcp14>MUST</bcp14> 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 whole label stack as feasible as a key for the load-balancing function, 
      the MNA-reserved label <bcp14>MUST NOT</bcp14> be used as a key for the load-balancing function, as specified in <xref target="RFC6790" section="4.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc6790#section-4.3" derivedContent="RFC6790"/>.

      Note that the behavior of an MNA-incapable transit LSR that scans the label stack for 
      ELI and EL but encounters a different, unrecognized reserved label first, is not modified 
      by this document. 
        </t>
        <t indent="0" pn="section-12.3-6">
      Similarly, when adding the Flow-ID Label Indicator (FLI) (including the extension label 15) and 
      Flow-ID Label (FL) as defined in <xref target="RFC9714" format="default" sectionFormat="of" derivedContent="RFC9714"/>, along with an MNA NAS, the RLD <bcp14>MUST</bcp14> be 
      considered for the 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 label stack for 
      FLI (including the extension label 15) and FL, but encounters a different, unrecognized reserved label first, is not modified 
      by this document. 
        </t>
        <t indent="0" pn="section-12.3-7">
      However, as the existing behavior is not specified for transit LSRs, upon encountering any unrecognized bSPLs 
      or extended SPLs (eSPLs) below the top of the label stack, 
      some existing implementations may have chosen to implement non-standardized actions, such as discarding packets.
      Any uses of a new bSPL or eSPL would cause issues with such existing
      implementations using the non-standardized actions upon encountering
      unrecognized bSPLs or eSPLs below the top of the label stack. Since this is a generic problem, any
      clarifications for the treatment of unrecognized bSPL or
      eSPL are outside the scope of this document.
        </t>
      </section>
    </section>
    <section anchor="sect-J13" numbered="true" toc="include" removeInRFC="false" pn="section-13">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="sect-J13.6" numbered="true" toc="include" removeInRFC="false" pn="section-13.1">
        <name slugifiedName="name-mna-bspl-label">MNA bSPL Label</name>
        <t indent="0" pn="section-13.1-1">
    IANA has allocated the value 4 for
    the MNA bSPL label from the "Base Special-Purpose MPLS Label
    Values" registry to indicate the presence of an MNA Sub-Stack in
    the label stack. The description of the value is "MPLS
    Network Actions". 
        </t>
      </section>
      <section numbered="true" removeInRFC="false" toc="include" pn="section-13.2">
        <name slugifiedName="name-mpls-network-actions-parame">MPLS Network Actions Parameters</name>
        <t indent="0" pn="section-13.2-1">
    IANA has created a registry group
    called "MPLS Network Actions".
    This registry group contains the "Network Action Flags Without Ancillary Data" registry (see <xref target="IANAFlags" format="default" sectionFormat="of" derivedContent="Section 13.2.1"/>) and the "Network Action Opcodes" registry (see <xref target="IANAOpcodes" format="default" sectionFormat="of" derivedContent="Section 13.2.2"/>).
        </t>
        <section anchor="IANAFlags" numbered="true" removeInRFC="false" toc="include" pn="section-13.2.1">
          <name slugifiedName="name-network-action-flags-withou">Network Action Flags Without Ancillary Data</name>
          <t indent="0" pn="section-13.2.1-1">
    For the "Network Action Flags Without Ancillary
    Data" registry, registration requests should comply with <xref target="Allocation" format="default" sectionFormat="of" derivedContent="Section 10"/>.  Depending on the range, the registration procedure for this
    registry is "IETF Review", "Experimental Use", or "Private Use" (as defined in <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>).  The fields in this registry are
    "Bit Position" (integer), "Description" (string), and
    "Reference" (string).  
          </t>
          <t indent="0" pn="section-13.2.1-2">	
    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 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 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 D LSEs
    per opcode (due to the NASL limit of 15 and the constraint of Format D requiring a Format C LSE), so there are at most 20 + 14 * 30 = 440 bit
    positions. The value listed in the Bit Position column is an integer with value between 0-439.  The initial registry has no entries.
          </t>
          <t indent="0" pn="section-13.2.1-3">
    The registration procedures for code point allocation for this registry are defined in <xref target="iana-nafif-tbl-1" format="default" sectionFormat="of" derivedContent="Table 4"/>:
          </t>
          <table anchor="iana-nafif-tbl-1" align="center" pn="table-4">
            <name slugifiedName="name-registration-procedures-for">Registration Procedures for the "Network Action Flags Without Ancillary Data" Registry</name>
            <thead>
              <tr>
                <th align="left" colspan="1" rowspan="1">Range</th>
                <th align="left" colspan="1" rowspan="1">Registration Procedure</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left" colspan="1" rowspan="1">0-14</td>
                <td align="left" colspan="1" rowspan="1">IETF Review </td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">15-16</td>
                <td align="left" colspan="1" rowspan="1">Experimental Use</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">17-19</td>
                <td align="left" colspan="1" rowspan="1">Private Use</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">20-439</td>
                <td align="left" colspan="1" rowspan="1">IETF Review</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="IANAOpcodes" numbered="true" toc="include" removeInRFC="false" pn="section-13.2.2">
          <name slugifiedName="name-network-action-opcodes"> Network Action Opcodes</name>
          <t indent="0" pn="section-13.2.2-1">
    For the "Network Action Opcodes" registry, registration requests
    should comply with <xref target="Allocation" format="default" sectionFormat="of" derivedContent="Section 10"/> as well as the Security Considerations section (<xref target="sect-J11" format="default" sectionFormat="of" derivedContent="Section 11"/>). Depending on the range, the registration procedure for this registry is "IETF Review", "Experimental Use", or "Private Use" (as defined in <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>). The
    fields are "Opcode" (integer), "Description" (string), and
    "Reference" (string). Opcode is an integer with value 1-126.
          </t>
          <table anchor="iana-is-fioc-reg-tbl" align="center" pn="table-5">
            <name slugifiedName="name-registration-procedures-for-">Registration Procedures for the "Network Action Opcodes" Registry</name>
            <thead>
              <tr>
                <th align="left" colspan="1" rowspan="1">Range</th>
                <th align="center" colspan="1" rowspan="1">Registration Procedure</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left" colspan="1" rowspan="1">1-110</td>
                <td align="left" colspan="1" rowspan="1">IETF Review </td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">111-114</td>
                <td align="left" colspan="1" rowspan="1">Experimental Use</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">115-126</td>
                <td align="left" colspan="1" rowspan="1">Private Use</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">127</td>
                <td align="left" colspan="1" rowspan="1">IETF Review </td>
              </tr>
            </tbody>
          </table>
          <t indent="0" pn="section-13.2.2-3">
IANA has allocated values for the following network action opcodes from the "Network Action Opcodes" registry.
</t>
          <table anchor="iana-is-fioc-reg-tbl-values" align="center" pn="table-6">
            <name slugifiedName="name-initial-contents-of-the-net">Initial Contents of the "Network Action Opcodes" Registry</name>
            <thead>
              <tr>
                <th align="left" colspan="1" rowspan="1">Opcode</th>
                <th align="center" colspan="1" rowspan="1">Description</th>
                <th align="left" colspan="1" rowspan="1">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left" colspan="1" rowspan="1">0</td>
                <td align="left" colspan="1" rowspan="1">Reserved</td>
                <td align="left" colspan="1" rowspan="1">RFC 9994</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">1</td>
                <td align="left" colspan="1" rowspan="1">Flag-Based Network Action Indicators without AD</td>
                <td align="left" colspan="1" rowspan="1">RFC 9994</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">2</td>
                <td align="left" colspan="1" rowspan="1">No operation Opcode</td>
                <td align="left" colspan="1" rowspan="1">RFC 9994</td>
              </tr>
              <tr>
                <td align="left" colspan="1" rowspan="1">127</td>
                <td align="left" colspan="1" rowspan="1">Opcode Range Extension Beyond 127</td>
                <td align="left" colspan="1" rowspan="1">RFC 9994</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-14">
      <name slugifiedName="name-references">References</name>
      <references pn="section-14.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3032" target="https://www.rfc-editor.org/info/rfc3032" quoteTitle="true" derivedAnchor="RFC3032">
          <front>
            <title>MPLS Label Stack Encoding</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="D. Tappan" initials="D." surname="Tappan"/>
            <author fullname="G. Fedorkow" initials="G." surname="Fedorkow"/>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <date month="January" year="2001"/>
            <abstract>
              <t indent="0">This document specifies the encoding to be used by an LSR in order to transmit labeled packets on Point-to-Point Protocol (PPP) data links, on LAN data links, and possibly on other data links as well. This document also specifies rules and procedures for processing the various fields of the label stack encoding. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3032"/>
          <seriesInfo name="DOI" value="10.17487/RFC3032"/>
        </reference>
        <reference anchor="RFC3270" target="https://www.rfc-editor.org/info/rfc3270" quoteTitle="true" derivedAnchor="RFC3270">
          <front>
            <title>Multi-Protocol Label Switching (MPLS) Support of Differentiated Services</title>
            <author fullname="F. Le Faucheur" initials="F." role="editor" surname="Le Faucheur"/>
            <author fullname="L. Wu" initials="L." surname="Wu"/>
            <author fullname="B. Davie" initials="B." surname="Davie"/>
            <author fullname="S. Davari" initials="S." surname="Davari"/>
            <author fullname="P. Vaananen" initials="P." surname="Vaananen"/>
            <author fullname="R. Krishnan" initials="R." surname="Krishnan"/>
            <author fullname="P. Cheval" initials="P." surname="Cheval"/>
            <author fullname="J. Heinanen" initials="J." surname="Heinanen"/>
            <date month="May" year="2002"/>
            <abstract>
              <t indent="0">This document defines a flexible solution for support of Differentiated Services (Diff-Serv) over Multi-Protocol Label Switching (MPLS) networks. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3270"/>
          <seriesInfo name="DOI" value="10.17487/RFC3270"/>
        </reference>
        <reference anchor="RFC3443" target="https://www.rfc-editor.org/info/rfc3443" quoteTitle="true" derivedAnchor="RFC3443">
          <front>
            <title>Time To Live (TTL) Processing in Multi-Protocol Label Switching (MPLS) Networks</title>
            <author fullname="P. Agarwal" initials="P." surname="Agarwal"/>
            <author fullname="B. Akyol" initials="B." surname="Akyol"/>
            <date month="January" year="2003"/>
            <abstract>
              <t indent="0">This document describes Time To Live (TTL) processing in hierarchical Multi-Protocol Label Switching (MPLS) networks and is motivated by the need to formalize a TTL-transparent mode of operation for an MPLS label-switched path. It updates RFC 3032, "MPLS Label Stack Encoding". TTL processing in both Pipe and Uniform Model hierarchical tunnels are specified with examples for both "push" and "pop" cases. The document also complements RFC 3270, "MPLS Support of Differentiated Services" and ties together the terminology introduced in that document with TTL processing in hierarchical MPLS networks. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3443"/>
          <seriesInfo name="DOI" value="10.17487/RFC3443"/>
        </reference>
        <reference anchor="RFC5462" target="https://www.rfc-editor.org/info/rfc5462" quoteTitle="true" derivedAnchor="RFC5462">
          <front>
            <title>Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field</title>
            <author fullname="L. Andersson" initials="L." surname="Andersson"/>
            <author fullname="R. Asati" initials="R." surname="Asati"/>
            <date month="February" year="2009"/>
            <abstract>
              <t indent="0">The early Multiprotocol Label Switching (MPLS) documents defined the form of the MPLS label stack entry. This includes a three-bit field called the "EXP field". The exact use of this field was not defined by these documents, except to state that it was to be "reserved for experimental use".</t>
              <t indent="0">Although the intended use of the EXP field was as a "Class of Service" (CoS) field, it was not named a CoS field by these early documents because the use of such a CoS field was not considered to be sufficiently defined. Today a number of standards documents define its usage as a CoS field.</t>
              <t indent="0">To avoid misunderstanding about how this field may be used, it has become increasingly necessary to rename this field. This document changes the name of the field to the "Traffic Class field" ("TC field"). In doing so, it also updates documents that define the current use of the EXP field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5462"/>
          <seriesInfo name="DOI" value="10.17487/RFC5462"/>
        </reference>
        <reference anchor="RFC6790" target="https://www.rfc-editor.org/info/rfc6790" quoteTitle="true" derivedAnchor="RFC6790">
          <front>
            <title>The Use of Entropy Labels in MPLS Forwarding</title>
            <author fullname="K. Kompella" initials="K." surname="Kompella"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="S. Amante" initials="S." surname="Amante"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="L. Yong" initials="L." surname="Yong"/>
            <date month="November" year="2012"/>
            <abstract>
              <t indent="0">Load balancing is a powerful tool for engineering traffic across a network. This memo suggests ways of improving load balancing across MPLS networks using the concept of "entropy labels". It defines the concept, describes why entropy labels are useful, enumerates properties of entropy labels that allow maximal benefit, and shows how they can be signaled and used for various applications. This document updates RFCs 3031, 3107, 3209, and 5036. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6790"/>
          <seriesInfo name="DOI" value="10.17487/RFC6790"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9017" target="https://www.rfc-editor.org/info/rfc9017" quoteTitle="true" derivedAnchor="RFC9017">
          <front>
            <title>Special-Purpose Label Terminology</title>
            <author fullname="L. Andersson" initials="L." surname="Andersson"/>
            <author fullname="K. Kompella" initials="K." surname="Kompella"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="April" year="2021"/>
            <abstract>
              <t indent="0">This document discusses and recommends terminology that may be used when MPLS Special-Purpose Labels (SPLs) are specified and documented.</t>
              <t indent="0">This document applies that terminology change to the relevant IANA registry and also clarifies the use of the Entropy Label Indicator (7) when immediately preceded by the Extension Label (15).</t>
              <t indent="0">This document updates RFCs 3032 and 7274.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9017"/>
          <seriesInfo name="DOI" value="10.17487/RFC9017"/>
        </reference>
        <reference anchor="RFC9789" target="https://www.rfc-editor.org/info/rfc9789" quoteTitle="true" derivedAnchor="RFC9789">
          <front>
            <title>MPLS Network Actions (MNAs) Framework</title>
            <author fullname="L. Andersson" initials="L." surname="Andersson"/>
            <author fullname="S. Bryant" initials="S." surname="Bryant"/>
            <author fullname="M. Bocci" initials="M." surname="Bocci"/>
            <author fullname="T. Li" initials="T." surname="Li"/>
            <date month="July" year="2025"/>
            <abstract>
              <t indent="0">This document describes an architectural framework for MPLS Network Action (MNA) technologies. MNA technologies are used to indicate actions that impact the forwarding or other processing (such as monitoring) of the packet along the Label Switched Path (LSP) of the packet and to transfer any additional data needed for these actions.</t>
              <t indent="0">This document provides the foundation for the development of a common set of network actions and information elements supporting additional operational models and capabilities of MPLS networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9789"/>
          <seriesInfo name="DOI" value="10.17487/RFC9789"/>
        </reference>
      </references>
      <references pn="section-14.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC3031" target="https://www.rfc-editor.org/info/rfc3031" quoteTitle="true" derivedAnchor="RFC3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="A. Viswanathan" initials="A." surname="Viswanathan"/>
            <author fullname="R. Callon" initials="R." surname="Callon"/>
            <date month="January" year="2001"/>
            <abstract>
              <t indent="0">This document specifies the architecture for Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </reference>
        <reference anchor="RFC6291" target="https://www.rfc-editor.org/info/rfc6291" quoteTitle="true" derivedAnchor="RFC6291">
          <front>
            <title>Guidelines for the Use of the "OAM" Acronym in the IETF</title>
            <author fullname="L. Andersson" initials="L." surname="Andersson"/>
            <author fullname="H. van Helvoort" initials="H." surname="van Helvoort"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <author fullname="S. Mansfield" initials="S." surname="Mansfield"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">At first glance, the acronym "OAM" seems to be well-known and well-understood. Looking at the acronym a bit more closely reveals a set of recurring problems that are revisited time and again.</t>
              <t indent="0">This document provides a definition of the acronym "OAM" (Operations, Administration, and Maintenance) for use in all future IETF documents that refer to OAM. There are other definitions and acronyms that will be discussed while exploring the definition of the constituent parts of the "OAM" term. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="161"/>
          <seriesInfo name="RFC" value="6291"/>
          <seriesInfo name="DOI" value="10.17487/RFC6291"/>
        </reference>
        <reference anchor="RFC7325" target="https://www.rfc-editor.org/info/rfc7325" quoteTitle="true" derivedAnchor="RFC7325">
          <front>
            <title>MPLS Forwarding Compliance and Performance Requirements</title>
            <author fullname="C. Villamizar" initials="C." role="editor" surname="Villamizar"/>
            <author fullname="K. Kompella" initials="K." surname="Kompella"/>
            <author fullname="S. Amante" initials="S." surname="Amante"/>
            <author fullname="A. Malis" initials="A." surname="Malis"/>
            <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
            <date month="August" year="2014"/>
            <abstract>
              <t indent="0">This document provides guidelines for implementers regarding MPLS forwarding and a basis for evaluations of forwarding implementations. Guidelines cover many aspects of MPLS forwarding. Topics are highlighted where implementers might otherwise overlook practical requirements which are unstated or under emphasized or are optional for conformance to RFCs but are often considered mandatory by providers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7325"/>
          <seriesInfo name="DOI" value="10.17487/RFC7325"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t indent="0">Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t indent="0">To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t indent="0">This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8664" target="https://www.rfc-editor.org/info/rfc8664" quoteTitle="true" derivedAnchor="RFC8664">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <date month="December" year="2019"/>
            <abstract>
              <t indent="0">Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks.</t>
              <t indent="0">This document updates RFC 8408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8664"/>
          <seriesInfo name="DOI" value="10.17487/RFC8664"/>
        </reference>
        <reference anchor="RFC9613" target="https://www.rfc-editor.org/info/rfc9613" quoteTitle="true" derivedAnchor="RFC9613">
          <front>
            <title>Requirements for Solutions that Support MPLS Network Actions (MNAs)</title>
            <author fullname="M. Bocci" initials="M." role="editor" surname="Bocci"/>
            <author fullname="S. Bryant" initials="S." surname="Bryant"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <date month="August" year="2024"/>
            <abstract>
              <t indent="0">This document specifies requirements for the development of MPLS Network Actions (MNAs) that affect the forwarding or other processing of MPLS packets. These requirements are informed by a number of proposals for additions to the MPLS information in the labeled packet to allow such actions to be performed, either by a transit or terminating Label Switching Router (i.e., the Label Edge Router - LER).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9613"/>
          <seriesInfo name="DOI" value="10.17487/RFC9613"/>
        </reference>
        <reference anchor="RFC9714" target="https://www.rfc-editor.org/info/rfc9714" quoteTitle="true" derivedAnchor="RFC9714">
          <front>
            <title>Encapsulation for MPLS Performance Measurement with the Alternate-Marking Method</title>
            <author fullname="W. Cheng" initials="W." role="editor" surname="Cheng"/>
            <author fullname="X. Min" initials="X." role="editor" surname="Min"/>
            <author fullname="T. Zhou" initials="T." surname="Zhou"/>
            <author fullname="J. Dai" initials="J." surname="Dai"/>
            <author fullname="Y. Peleg" initials="Y." surname="Peleg"/>
            <date month="February" year="2025"/>
            <abstract>
              <t indent="0">This document defines the encapsulation for MPLS performance
measurement with the Alternate-Marking Method, which performs
flow-based packet loss, delay, and jitter measurements on MPLS
traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9714"/>
          <seriesInfo name="DOI" value="10.17487/RFC9714"/>
        </reference>
        <reference anchor="RFC9791" target="https://www.rfc-editor.org/info/rfc9791" quoteTitle="true" derivedAnchor="RFC9791">
          <front>
            <title>Use Cases for MPLS Network Action Indicators and Ancillary Data</title>
            <author fullname="T. Saad" initials="T." surname="Saad"/>
            <author fullname="K. Makhijani" initials="K." surname="Makhijani"/>
            <author fullname="H. Song" initials="H." surname="Song"/>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <date month="July" year="2025"/>
            <abstract>
              <t indent="0">This document presents use cases that have a common feature that may be addressed by encoding network action indicators and associated ancillary data within MPLS packets. There is community interest in extending the MPLS data plane to carry such indicators and ancillary data to address these use cases.</t>
              <t indent="0">The use cases described in this document are not an exhaustive set but rather the ones that have been actively discussed by members of the IETF MPLS, PALS, and DetNet Working Groups from the beginning of work on MPLS Network Action (MNA) until the publication of this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9791"/>
          <seriesInfo name="DOI" value="10.17487/RFC9791"/>
        </reference>
      </references>
    </references>
    <section anchor="sect-J14" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-examples">Examples</name>
      <section anchor="sect-J7" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.1">
        <name slugifiedName="name-network-action-encoding-exa">Network Action Encoding Examples</name>
        <section anchor="sect-J7.1" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.1.1">
          <name slugifiedName="name-network-action-flags-without">Network Action Flags Without AD</name>
          <figure anchor="In-stack-Ext-Hdr-1-a" align="left" suppress-title="false" pn="figure-6">
            <name slugifiedName="name-nas-with-network-action-fla">NAS with Network Action Flags</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.1.1-1.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          MNA-Label=bSPL               | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=1   |        13-bit Flags     |R|IHS|S|NASL=0 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.1.1-2">
      This is an example of a NAS with Flag-Based NAIs without
      AD.
          </t>
          <t indent="0" pn="section-appendix.a.1.1-3">
      Details:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.1-4">
            <dt pn="section-appendix.a.1.1-4.1">Opcode=1:</dt>
            <dd pn="section-appendix.a.1.1-4.2">This opcode indicates that the LSE carries Flag-Based NAIs without AD. </dd>
            <dt pn="section-appendix.a.1.1-4.3">Data:</dt>
            <dd pn="section-appendix.a.1.1-4.4">The data field carries the Flag-Based NAIs. </dd>
            <dt pn="section-appendix.a.1.1-4.5">S:</dt>
            <dd pn="section-appendix.a.1.1-4.6">This is the bottom of the stack bit. Set if and only if this LSE is the bottom of the stack.</dd>
            <dt pn="section-appendix.a.1.1-4.7">U:</dt>
            <dd pn="section-appendix.a.1.1-4.8">Action to be taken if one of the NAIs is not recognized by the processing node.</dd>
            <dt pn="section-appendix.a.1.1-4.9">NASL:</dt>
            <dd pn="section-appendix.a.1.1-4.10">The NASL value is set to 0, as there are no additional LSEs. </dd>
            <dt pn="section-appendix.a.1.1-4.11">NAL:</dt>
            <dd pn="section-appendix.a.1.1-4.12">The NAL value is set to 0, as there are no additional AD encoded using Format D. </dd>
          </dl>
          <figure anchor="In-stack-Ext-Hdr-1-a-ext" align="left" suppress-title="false" pn="figure-7">
            <name slugifiedName="name-network-action-flags-without-">Network Action Flags Without AD Using LSE Format D</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.1.1-5.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL                   | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=2   |        Data=0           |R|IHS|S|NASL=2 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=1   |        Flag-Based NAIs        |S| NAIs  |U|NAL=1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1| Additional Flag-Based NAIs                |S|Flag-Based-NAIs|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.1.1-6">
    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 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.
          </t>
          <t indent="0" pn="section-appendix.a.1.1-7">
    NAL is set to 1 to indicate that Flag-Based NAIs are also
    encoded in the next LSE.
          </t>
          <t indent="0" pn="section-appendix.a.1.1-8">
    NASL is set to 2 to indicate that two additional LSEs are
    used.
          </t>
        </section>
        <section anchor="sect-J7.2" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.1.2">
          <name slugifiedName="name-network-action-opcode-with-">Network Action Opcode with AD </name>
          <figure anchor="In-stack-Ext-Hdr-2a" align="left" suppress-title="false" pn="figure-8">
            <name slugifiedName="name-network-action-opcode-with-a">Network Action Opcode with Ancillary Data</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.1.2-1.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL                   | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=8   |      Ancillary Data     |R|IHS|S|NASL=0 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.1.2-2">
    In this example, the NAS is carrying only one Network
    Action that requires 13 bits of AD. 
          </t>
          <t indent="0" pn="section-appendix.a.1.2-3">
    Details on the second LSE:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.2-4">
            <dt pn="section-appendix.a.1.2-4.1">Opcode=8:</dt>
            <dd pn="section-appendix.a.1.2-4.2">A network action allocation is outside of this document.</dd>
            <dt pn="section-appendix.a.1.2-4.3">Data:</dt>
            <dd pn="section-appendix.a.1.2-4.4">The data field contains 13 bits of AD.</dd>
          </dl>
        </section>
        <section anchor="sect-J7.4.a" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.1.3">
          <name slugifiedName="name-network-action-opcode-with-m">Network Action Opcode with More AD with Format B</name>
          <t indent="0" pn="section-appendix.a.1.3-1">
    A network action may require more AD than can fit
    in a single LSE. In this example, a Format D LSE is added to
    carry additional AD.
          </t>
          <figure anchor="In-stack-Ext-Hdr-Format-4-with-more-AD.a" align="left" suppress-title="false" pn="figure-9">
            <name slugifiedName="name-network-action-with-additio">Network Action with Additional Ancillary Data</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.1.3-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          MNA-Label=bSPL               | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=10  |      Ancillary Data     |R|IHS|S|NASL=1 |U|NAL=1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|            Ancillary Data                 |S|Ancillary Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.1.3-3">
    In this example, opcode 10 is encoded in Format B, and it requires more than one LSE's worth of
    AD, so a Format D LSE is added.
          </t>
          <t indent="0" pn="section-appendix.a.1.3-4">
    Details on the second LSE:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.3-5">
            <dt pn="section-appendix.a.1.3-5.1">Opcode=10:</dt>
            <dd pn="section-appendix.a.1.3-5.2">An opcode allocation is outside of this document.</dd>
            <dt pn="section-appendix.a.1.3-5.3">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.3-5.4">AD required to process the network action opcode 10.</dd>
            <dt pn="section-appendix.a.1.3-5.5">NAL:</dt>
            <dd pn="section-appendix.a.1.3-5.6">Length of additional LSEs used to encode its AD.</dd>
          </dl>
          <t indent="0" pn="section-appendix.a.1.3-6"> Details on the third LSE: </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.3-7">
            <dt pn="section-appendix.a.1.3-7.1">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.3-7.2">22 bits of additional AD.</dd>
            <dt pn="section-appendix.a.1.3-7.3">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.3-7.4">8 bits of additional AD.</dd>
          </dl>
        </section>
        <section anchor="sect-J7.4.b" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.1.4">
          <name slugifiedName="name-network-action-opcode-with-mo">Network Action Opcode with More AD with Format C</name>
          <t indent="0" pn="section-appendix.a.1.4-1">
    A network action may require more AD than can fit
    in a single LSE. In this example, a Format D LSE is added to
    carry additional AD.
          </t>
          <figure anchor="In-stack-Ext-Hdr-Format-4-with-more-AD.b" align="left" suppress-title="false" pn="figure-10">
            <name slugifiedName="name-network-action-with-addition">Network Action with Additional Ancillary Data</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.1.4-2.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          MNA-Label=bSPL               | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=2   |      Data=0             |R|IHS|S|NASL=2 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Opcode=9   |      Ancillary Data           |S|   AD  |U|NAL=1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|            Ancillary Data                 |S|Ancillary Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.1.4-3">
    In this example, opcode 9 requires more than one LSE's worth of
    AD, so a Format D LSE is added.
          </t>
          <t indent="0" pn="section-appendix.a.1.4-4">
    Details on the third LSE:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.4-5">
            <dt pn="section-appendix.a.1.4-5.1">Opcode=9:</dt>
            <dd pn="section-appendix.a.1.4-5.2">An opcode allocation is outside of this document.</dd>
            <dt pn="section-appendix.a.1.4-5.3">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.4-5.4">Most significant bits of AD.</dd>
            <dt pn="section-appendix.a.1.4-5.5">AD:</dt>
            <dd pn="section-appendix.a.1.4-5.6">4 bits of additional AD.</dd>
          </dl>
          <t indent="0" pn="section-appendix.a.1.4-6"> Details on the fourth LSE: </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-appendix.a.1.4-7">
            <dt pn="section-appendix.a.1.4-7.1">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.4-7.2">22 bits of additional AD.</dd>
            <dt pn="section-appendix.a.1.4-7.3">Ancillary Data:</dt>
            <dd pn="section-appendix.a.1.4-7.4">8 bits of additional AD.</dd>
          </dl>
        </section>
      </section>
      <section anchor="sect-J6.a" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.2">
        <name slugifiedName="name-network-action-processing-o">Network Action Processing Order</name>
        <t indent="0" pn="section-appendix.a.2-1">
      The semantics of a network action can vary widely and the
      results of processing one network action may affect the
      processing of a subsequent network action. See <xref target="Ordering" format="default" sectionFormat="of" derivedContent="Section 5.5"/>.
        </t>
        <section anchor="sect-J6.a1" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a.2.1">
          <name slugifiedName="name-network-action-processing-or">Network Action Processing Order</name>
          <figure anchor="In-stack-NA-Ordering-1" align="left" suppress-title="false" pn="figure-11">
            <name slugifiedName="name-in-stack-na-processing-orde">In-Stack NA Processing Order</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.2.1-1.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           MNA-Label=bSPL              | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=8    |      Ancillary Data     |R|IHS|S|NASL=2 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=7    |      Ancillary Data7          |S|  AD7  |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=1    |      Flag-Based NAIs          |S|  NAI  |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.2.1-2">
    In this example, opcode 8 is processed first, then opcode 7,
    and then the network action flags are processed from most
    significant to least significant.
          </t>
          <t indent="0" pn="section-appendix.a.2.1-3">
    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 after opcode 7. This can be done
    by causing some NAIs to appear earlier in the NAS.
          </t>
          <figure anchor="In-stack-NA-Ordering-2" align="left" suppress-title="false" pn="figure-12">
            <name slugifiedName="name-interleaving-network-action">Interleaving Network Actions</name>
            <artwork name="" type="" align="left" alt="" pn="section-appendix.a.2.1-4.1">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              MNA-Label=bSPL           | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=8    |      Ancillary Data     |R|IHS|S|NASL=3 |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=1    |        0x01                   |S|  NAI  |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=7    |      Ancillary Data7          |S|  AD7  |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode=1    |        0x02                   |S|  NAI  |U|NAL=0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork>
          </figure>
          <t indent="0" pn="section-appendix.a.2.1-5"> 
    In the above example, opcode 8 is processed first, then
    Flag-Based NAI 0x01 is processed, then opcode 7 is processed, and
    finally NAI 0x02 is processed.
          </t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">
      The authors of this document would like to thank the MPLS Working Group
      Open Design Team for the discussions and comments on this document. The
      authors would also like to thank <contact fullname="Amanda Baber"/> for
      reviewing the IANA Considerations and providing many useful
      suggestions. The authors would like to thank <contact fullname="Loa       Andersson"/>, <contact fullname="Stewart Bryant"/>, <contact fullname="Greg Mirsky"/>, <contact fullname="Joel M. Halpern"/>, and
      <contact fullname="Adrian Farrel"/> for reviewing this document and
      providing many useful suggestions. The authors would like to thank
      <contact fullname="Fabian Ihle"/> and <contact fullname="Michael       Menth"/>, both from the University of Tuebingen, for reviewing and
      implementing the solution defined in this document in P4 pipeline.
      Also, thank you to <contact fullname="Tarek Saad"/> for the Shepherd's
      review, <contact fullname="Joe Clarke"/> for the OpsDir review, <contact fullname="Matthew Bocci"/> for the Rtgdir review, <contact fullname="Derrell       Piper"/> for the Secdir review, and <contact fullname="James Guichard"/> for
      the AD review, <contact fullname="Mohamed Boucadair"/>, <contact fullname="Éric Vyncke"/>, <contact fullname="Deb Cooley"/>, <contact fullname="Ketan Talaulikar"/>, and <contact fullname="Mahesh Jethanandani"/>
      for the IESG review, which helped improve this document.
      </t>
    </section>
    <section numbered="false" anchor="contributors" toc="include" removeInRFC="false" pn="section-appendix.c">
      <name slugifiedName="name-contributors">Contributors</name>
      <t indent="0" pn="section-appendix.c-1">The following people have substantially contributed to this document:</t>
      <contact fullname="Jisu Bhattacharya">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <email>jisu@cisco.com</email>
        </address>
      </contact>
      <contact fullname="Bruno Decraene">
        <organization showOnFrontPage="true">Orange</organization>
        <address>
          <email>bruno.decraene@orange.com</email>
        </address>
      </contact>
      <contact fullname="Weiqiang Cheng">
        <organization showOnFrontPage="true">China Mobile</organization>
        <address>
          <email>chengweiqiang@chinamobile.com</email>
        </address>
      </contact>
      <contact fullname="Xiao Min">
        <organization showOnFrontPage="true">ZTE Corp.</organization>
        <address>
          <email>xiao.min2@zte.com.cn</email>
        </address>
      </contact>
      <contact fullname="Luay Jalil">
        <organization showOnFrontPage="true">Verizon</organization>
        <address>
          <email>luay.jalil@verizon.com</email>
        </address>
      </contact>
      <contact fullname="Jie Dong">
        <organization showOnFrontPage="true">Huawei Technologies</organization>
        <address>
          <postal>
            <street>Huawei Campus, No. 156 Beiqing Rd.</street>
            <city>Beijing</city>
            <code>100095</code>
            <country>China</country>
          </postal>
          <email>jie.dong@huawei.com</email>
        </address>
      </contact>
      <contact fullname="Tianran Zhou">
        <organization showOnFrontPage="true">Huawei Technologies</organization>
        <address>
          <postal>
            <country>China</country>
          </postal>
          <email>zhoutianran@huawei.com</email>
        </address>
      </contact>
      <contact fullname="Bin Wen">
        <organization showOnFrontPage="true">Comcast</organization>
        <address>
          <email>Bin_Wen@cable.comcast.com</email>
        </address>
      </contact>
      <contact fullname="Sami Boutros">
        <organization showOnFrontPage="true">Ciena</organization>
        <address>
          <email>sboutros@ciena.com</email>
        </address>
      </contact>
      <contact fullname="Tony Li">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <country>United States of America</country>
          </postal>
          <email>tony.li@tony.li</email>
        </address>
      </contact>
      <contact fullname="John Drake">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <country>United States of America</country>
          </postal>
          <email>jdrake@juniper.net</email>
        </address>
      </contact>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Jaganbabu Rajamanickam" initials="J." role="editor" surname="Rajamanickam">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <country>Canada</country>
          </postal>
          <email>jrajaman@cisco.com</email>
        </address>
      </author>
      <author fullname="Rakesh Gandhi" initials="R." role="editor" surname="Gandhi">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <country>Canada</country>
          </postal>
          <email>rgandhi@cisco.com</email>
        </address>
      </author>
      <author fullname="Royi Zigler" initials="R." surname="Zigler">
        <organization showOnFrontPage="true">Broadcom</organization>
        <address>
          <email>royi.zigler@broadcom.com</email>
        </address>
      </author>
      <author fullname="Haoyu Song" initials="H." surname="Song">
        <organization showOnFrontPage="true">Futurewei Technologies</organization>
        <address>
          <email>haoyu.song@futurewei.com</email>
        </address>
      </author>
      <author fullname="Kireeti Kompella" initials="K." surname="Kompella">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <country>United States of America</country>
          </postal>
          <email>kireeti.ietf@gmail.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
