<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-jags-mpls-mna-hdr-03" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" sortRefs="false" symRefs="true" tocInclude="true" version="3" consensus="true">
  <!-- xml2rfc v2v3 conversion 3.12.0 -->
  <!-- Generated by id2xml 1.5.0 on 2020-03-06T17:47:05Z -->
    <front>
    <title abbrev="MPLS Network Action Encodings">MPLS Network Action (MNA) Header Encodings </title>
    <seriesInfo name="Internet-Draft" value="draft-jags-mpls-mna-hdr-03"/>
    <author fullname="Jaganbabu Rajamanickam" initials="J." role="editor" surname="Rajamanickam">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Canada</street>
        </postal>
        <email>jrajaman@cisco.com</email>
      </address>
    </author>
    <author fullname="Rakesh Gandhi" initials="R." role="editor" surname="Gandhi">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Canada</street>
        </postal>
        <email>rgandhi@cisco.com</email>
      </address>
    </author>
    <author fullname="Royi Zigler" initials="R." role="editor" surname="Zigler">
      <organization>Broadcom</organization>
      <address>
        <email>royi.zigler@broadcom.com</email>
      </address>
    </author>

    <author fullname="Haoyu Song" initials="H." role="editor" surname="Song">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>haoyu.song@futurewei.com</email>
      </address>
    </author>

    <author fullname="Kireeti Kompella" initials="K." role="editor" surname="Kompella">
      <organization>Juniper Networks</organization>
      <address>
     <postal>
          <street>United States</street>
        </postal>
        <email>kireeti.ietf@gmail.com</email>
      </address>
    </author>

    <date day="05" month="November" year="2022"/>
    <workgroup>MPLS Working Group</workgroup>
    <abstract>
      <t>
This document defines the MPLS Network Action (MNA) Header encoding formats to carry Network Actions and optionally Ancillary Data in the label stack and post label stack. The MPLS Network Action can be used for example, to influence the forwarding decisions or to carry additional OAM information in the MPLS packet. This document addresses the MNA requirements specified in draft-ietf-mpls-mna-requirements. This document follows the MNA framework specified in draft-ietf-mpls-mna-fwk.

     </t>

    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
    <xref target="RFC3032" format="default"/> defines MPLS Header for carrying a stack of MPLS labels which are used to forward packets in an MPLS network.
    Today's new applications require the MPLS packets to carry network action indicators and optional Ancillary Data (AD) that can be used for example, in MPLS packet forwarding decision or for OAM purpose. 
    Ancillary Data can be used to carry additional information, for example, a network slice identifier, In-Situ OAM (IOAM) data, etc. Several MNA applications are described in <xref target="I-D.ietf-mpls-mna-usecases" format="default"/>. </t>
      <t>
   This document defines a solution to encode MPLS Network Actions (MNA) in an MPLS Label Stack those are efficient to process in hardware. 
   The MPLS Network Actions are encoded in the form of flags and opcodes. These MPLS Network Actions can be encoded without 
   Ancillary Data (AD) or with In-Stack Ancillary Data (ISD) or with Post-Stack Ancillary Data (PSD) (i.e., after the Bottom of the Stack (BOS)). 
   A new base Special Purpose Label (bSPL) (value TBA) is to be assigned to indicate the presence of MPLS Network Action Sub-Stack (MNAS) in the MPLS packet.
   This document addresses the MNA requirements specified in <xref target="I-D.ietf-mpls-mna-requirements" format="default"/>.  
   This document follows the MNA framework specified in <xref target="I-D.ietf-mpls-mna-fwk" format="default"/>.
      </t>

    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Conventions Used in This Document</name>
      <section anchor="sect-2.1" numbered="true" toc="default">
        <name>Requirements Language</name>
        <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
   when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    <section anchor="sect-2.2" numbered="true" toc="default">
      <name>Abbreviations</name>

      <t>The MNA terminology defined in <xref target="I-D.ietf-mpls-mna-fwk" format="default"/> and <xref target="I-D.ietf-mpls-mna-requirements" format="default"/> are used in this document.</t>

      <ul>
        <li> AD: Ancillary Data. </li> 
        <li> BOS: Bottom Of Stack. </li>    
        <li> IHS: I2E, HBH, Select Scope. </li> 
        <li> I2E: Ingress-To-Egress. </li>
        <li> HBH: Hop-By-Hop Scope. </li>
        <li> ISD: In-Stack Data. </li>
        <li> IS-NA: In-Stack Network Action. </li>
        <li> IS-NAI-Opcode: In-Stack Network Action Opcode. </li>
        <li> LSE: 32-bit Label Stack Entry. </li>
        <li> MMSID: Maximum MPLS Stack Inspection Depth. </li>
        <li> MPLS: Multiprotocol Label Switching. </li>
        <li> MNA: MPLS Network Action. </li> 
        <li> NAI: Network Action Indicator. </li>
        <li> NAI-OP: Network Action Indicator Opcode. </li>
        <li> NAL: Length of Network Action in number of LSEs, excluding the LSE for Opcode. </li>
        <li> NASL: Length of Network Action sub-stack in number of LSEs (after the MNA Label and the second LSE). </li>
        <li> NASI: Network Action Sub-Stack Indicator. </li>
        <li> NASS: Network Action Sub-Stack. </li>
        <li> UOH: Unknown Opcode Handling. </li>
        <li> PS-NA: Post-Stack Network Action. </li>
        <li> P: Post-Stack Network Action Presence Indicator. </li>
        <li> PSD: Post-Stack Data. </li>
        <li> bSPL: Base Special Purpose Label in the range of 0-15. </li>
        <li> TC: Traffic Class. </li>
        <li> TTL: Time To Live. </li>
      </ul>
    </section>
  </section>

  <section anchor="sect-3" numbered="true" toc="default">
    <name>Overview</name>

    <figure anchor="SPL-Ext-Hdr-Format-isd">
      <name>Network Action Sub-Stack Header</name>
      <artwork name="" type="" align="left" alt=""><![CDATA[


 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|      TTL      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  | Flag-Based NAIs or AD   |P|IHS|S| NASL  |R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |         Ancillary Data        |S|4bit AD|UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                        
      ]]></artwork>
    </figure>

    <t> MPLS Network Action (MNA) Header Encoding contains two main parts:</t>
    <t> 1. Network Action Sub-Stack Header: </t>

    <ul empty="true" spacing="normal">
      <li> a. MNA Label to indicate the presence of Network Action Sub-Stack (NASS). </li>
      <li> b. NASS Encoding parameters indicating the NASS scope, length, ordering, etc. parameters of the NASS. </li>
    </ul>

    <t> 2. In-Stack Network Action Encoding: </t>
      <t> In-Stack Network Action is encoded in the TLV format as following: </t>

      <ul empty="true" spacing="normal">
        <li> a. Type - Network Action Indicator Opcode </li>
        <li> b. Length - Network Action Length (NAL) </li>
        <li> c. Value - Ancillary Data (Optional) </li>
      </ul>


    <t> The detailed description of the MNA encoding solution is described below sections.</t> 
  </section>

  <section anchor="sect-3.1" numbered="true" toc="default">
    <name>Network Action Sub-Stack Header</name>

    <t> Network Action Sub-Stack Header contains MNA Label and NASS encoding parameters as described below. </t>

    <t> MNA Label: </t>
    <t>A new bSPL value (value TBA) is assigned to indicate the presence of the MPLS Network Action Sub-Stack (NASS).  </t>
    <t>Note: The TC and TTL fields of the new bSPL are not re-purposed for NASS encoding parameters, as the penultimate node on the MPLS packet path may propagate TTL and TC fields from the transport (or forwarding) LSE to the next LSE on the label stack, overwriting the TTL and TC fields of the next LSE, as specified in Section 3.5 of <xref target="RFC3443" format="default"/>.  When the penultimate node is not aware of the MNA bSPL (value TBA) e.g., in case of non-MNA capable network, this can cause NASS parameters in the TTL of the MNA label to be corrupted.</t>

    <t> NASS Encoding Parameters: </t>
    <t> The TTL and TC field of the second LSE is used to encode NASS encoding parameters. The NASS encoding parameters contain the following.</t>

    <ul spacing="normal">
      <li> P-Bit (Post-Stack Network Action Presence Bit) - This bit indicates the presence of Post-Stack Network Actions. </li>
      <li> IHS (I2E, HBH and Select Scope): This 2-bit value indicates the scope of the In-Stack and Post-Stack NAIs encoded in that specific NASS. </li>
    </ul>
    <table anchor="In-Stack-scope-tbl" align="center">
      <name>In-Stack and Post-Stack NAI Scope Table </name>
      <thead>
        <tr>
          <th align="left"> Bits </th>
          <th align="left"> Scope </th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td align="left">00</td>
          <td align="left">I2E</td>
        </tr>
        <tr>
          <td align="left">01</td>
          <td align="left">HBH</td>
        </tr>
        <tr>
          <td align="left">10</td>
          <td align="left">Select</td>
        </tr>
        <tr>
          <td align="left">11</td>
          <td align="left">Reserved</td>
        </tr>
      </tbody>
    </table>

    <ul empty="true" spacing="normal">
      <li> This indicates the scope (HBH / Select / I2E) of NASS for different nodes (e.g., midpoint nodes and egress node) where it needs to be processed. </li>
      <li> HBH (Hop-By-Hop) - This scope indicates that the NASS should be processed by the midpoint nodes as well.</li>
      <li> Select - This scope indicates that the NASS should be processed only on selected set of nodes. </li>
      <li> I2E (Ingress To Egress) - This scope indicates that the NASS Should be processed by the Egress node. </li>
      <li> Separate NASS Per Scope: </li>
      <li> Single NASS carries only one of the three scopes (HBH/SEL/I2E). MNA packet could carry more than one NASS scope, in those cases each scope is encoded as part of a single NASS. While encoding multiple NASS with the different scope, the I2E scope MUST be encoded after the HBH/SEL scope. This will make sure that the I2E scoped NASS is added closer to the BOS whereas HBH/SEL scoped NASS are added closer to the top of the label stack. This makes it easier for the midpoint nodes to process only the NASS with HBH scope in hardware. </li>
    </ul>

    <ul spacing="normal">
      <li> NASL (Network Action Sub-Stack Length):  </li>
    </ul>
 
    <ul empty="true" spacing="normal">
      <li> This is a 4-bit value in the TTL field. This indicates the total length number of additional LSEs (not including the MNA Label and the second LSE) used to encoding the In-Stack NAIs for that specific NASS. This value is used by the node to pop the NASS or skip the processing NASS from the label stack. </li>
    </ul>

    <ul spacing="normal">
      <li> R-Bits: </li>
    </ul>
    <ul empty="true" spacing="normal">
      <li> R bits in the TTL field is Reserved for future use. </li>
    </ul>

    <ul spacing="normal">
      <li> O-Bit (Ordering Bit): </li>
    </ul>

    <ul empty="true" spacing="normal">
      <li> When O-Bit is set then it indicates that the NAIs MUST be processed in the order that is encoded in the NASS. If the Node is not capable of Processing the NAIs in the order then that specific packet MUST be dropped. Processing the NAIs in order is a complex process, some of the ASICs May not be capable of processing the NAIs in order, so this option gives the flexibility for the nodes to drop these packet, just by inspecting the O-Bit. </li>
    </ul>

    <t> The second LSEs First 20-Bit field could be used to encode In-Stack NA that requires maximum of 13 bits of Ancillary data. </t>

  </section>

  <section anchor="sect-3.2" numbered="true" toc="default">
    <name>In-Stack MPLS Network Action Encoding</name>

    <figure anchor="mpls-label-format">
      <name>MPLS Label Stack Entry (LSE) Format</name>
      <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Label                    | TC  |S|      TTL      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                               ~
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL  |R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data           |S|4bit AD|UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ]]></artwork>
    </figure>

    <t>The In-Stack MPLS Network Action are encoded in the TLV format. </t>

    <ul empty="true" spacing="normal">
      <li> a. Type - Network Action Indicator Opcode: This is the 7-Bit value used for indicating the Network Actions. This is also called as NAI-Opcode. </li>
      <li> b. Length - Network Action Length (NAL): This is the 2-Bit valued used of indicating additional number of LSEs used to encode additional Ancillary Data. </li>
      <li> c. Value - Ancillary Data (Optional): This is the optional Data that will be used while processing the NAIs. </li>
    </ul>


    <t>The encoding format defined is flexible (e.g., stackable opcodes in desired order), extensible (by defining new NAI-Opcodes) and ASIC friendly (by using Sub-Stack Length, Opcode and Data in the same LSE). This encoding format also allows to carry the Flag-Based NAIs that do not require AD and the Flag-Based NAIs that require AD in the same packet.</t>

    <t>The opcode method of identifying a specific Network Actions are common in today's hardware ASICs (Similar to any IPv4/IPv6/VxLAN header processing), so this method is easy to be adopted by the existing hardware.  This will allow the hardware ASICs to serially or in-parallel process the Network Actions.</t>

    <t> The Base In-Stack Network Action Encoding formats are described in detail below: </t>

    <t> NAI-Opcode: </t>

    <ul empty="true" spacing="normal">
      <li>This is the first 7-Bit value in the Label Field. This indicates the Network Action that needs to be executed. The Opcode value ranges from 1 to 127. </li>
    </ul>
    <t> Ancillary Data: </t>
    <t> This is the additional Ancillary Data carried to process the Network Action specified by the NAI-Opcode. </t>

    <ul spacing="normal">
      <li> The 16 bits of the Label field is used to carry the Ancillary Data </li>
      <li> Apart from the Label field, part of AD is also carried in the 4-Bit TTL field. </li>    
      <li> Some applications need to change the Ancillary Data for the same flow, in those cases the data is encoded in the the TTL field of the LSE. </li>
    </ul>

    <t> UOH (Unknown Opcode Handling): </t>
    <ul spacing="normal">
      <li> This is a 2-Bit value that defines the action that needs to be taken by a node that does not understands this corresponding opcode value. In a brown field there are possibilities that some of the midpoint nodes may not understand a specific NA opcode, this 2-Bit value will indicate the actions that needs to taken. This action could be different for different NA opcodes. When the Network Action is defined by the application, the application MUST specify the "Unknown Opcode Handling". The different type of Unknown Opcode Handling Actions are defined below. </li>
    </ul>

    <table anchor="UOH-tbl" align="center">
      <name>Unknown Opcode Handling Table </name>
      <thead>
        <tr>
          <th align="left"> Bits </th>
          <th align="left"> Actions </th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td align="left">00</td>
          <td align="left">Skip and Process Next NA </td>
        </tr>
        <tr>
          <td align="left">01</td>
          <td align="left">Drop the packet</td>
        </tr>
        <tr>
          <td align="left">10</td>
          <td align="left">Stop processing MNA and forward the packet</td>
        </tr>
        <tr>
          <td align="left">11</td>
          <td align="left">Reserved</td>
        </tr>
      </tbody>
    </table>

    <t> NOTE: ECMP Hash Using Label Stack: </t>

    <ul empty="true" spacing="normal">
      <li> If the intermediate node changes any label field value for the same flow then it may affect the ECMP Flow. So the intermediate node MUST node change the Label field value for the same flow. </li>
    </ul>

    <section anchor="sect-J5.1a" numbered="true" toc="default">
      <name>In-Stack MPLS Network Opcodes Allocation Procedure</name>
      <t> This section discusses about the procedures and requirement for an applications allocating a new In-Stack MPLS Network Opcode. </t>
      <t> The application May request for a new Network Action Indicator with AD or without AD. More information about the NAI without AD is described in the next section. </t>
      <t> The Network Action Opcode ranges from 0 till 127. There us an IANA registry maintained for allocating the In-Stack MPLS Network Action Opcodes.</t>
      <t> Opcode "0" is considered as an invalid opcode and a Packet received with the Opcode "0" MUST be dropped. </t>
      <t> Some of the opcodes are reserved for building the basic framework for MNA. Those reserved Network Action Opcodes are defined in the next section (This is described as part of the Reserved opcode). </t>
      <t> When an application requires a new MPLS Network Action Opcode, then it MUST provide the following information: </t>
      <t> NA Opcode Value: </t>

      <ul empty="true" spacing="normal">
        <li> The application MUST request for an Opcode value. Based on the request, IANA will allocate a new Opcode value for the application. If the application requested for an opcode without Ancillary data then an offset Bit-Flag position will be allocated by IANA (This is described as part of the Reserved opcode). </li>
      </ul>

      <t> NA Scope: </t>

      <ul empty="true" spacing="normal">
        <li> The application MUST specify at-least one scope (I2E, HBH, Select) for the Network Action. Depending on the applications requirement, they MAY specify more than one scopes for the same Network Action. </li>
      </ul>

      <t> Unknown Opcode Handling: </t>

      <ul empty="true" spacing="normal">
        <li> This is the behaviour, that a node should follow when it does not understand this specific NA opcode (Check the "Unknown Opcode Handling Table" for different options).  This is an optional information that May be provided by the application. By default "Skip and process Next NA".</li>
      </ul>
      <t> Presence of Ancillary Data: </t>

      <ul empty="true" spacing="normal">
        <li> The application MUST specify whether it requires Ancillary Data to process the Network Action. Incase the application does not need any AD, then it would use "Opcode-2" and the Flag-Based NAI offset will be assign by the IANA (This is described as part of the Reserved opcode). </li>
      </ul>

      <t> Ancillary Data Length: </t>

      <ul empty="true" spacing="normal">
        <li> If the applications Network Action requires AD, then it MUST specify the maximum length of the AD. The Maximum length MUST NOT exceed 110 bits. If it is exceeding 110 bits, then those Network Actions MUST be encoded as part of Post-Stack Network Actions. </li>
      </ul>

      <t> Ancillary Data Format: </t>
      <ul empty="true" spacing="normal">
        <li> The application MUST specify the format in which they encode their Ancillary data in detail. All the possible options should be provided. </li>
      </ul>

      <t> Network Action Processing Procedure: </t>
      <ul empty="true" spacing="normal">
        <li> The application MUST specify the detailed procedure for processing their respective Network Action. The known dependencies MUST be clearly listed out in their processing procedures. </li>
      </ul>
 
    </section>

    <section anchor="sect-J5.3a" numbered="true" toc="default">
      <name>Reserved In-Stack MPLS Network Action Opcodes</name>

      <t>Some of the opcodes are reserved as described below for the basic functionality and the rest of the opcodes are assigned by IANA.</t>

      <section anchor="sect-J5.2a" numbered="true" toc="default">
        <name>NAI Opcode Value 1 (PSD Offset)</name>
        <t>Some of the opcodes are reserved as described below for the basic functionality and the rest of the opcodes are assigned by IANA.</t>
      
        <ul>
          <li> IS-NAI-Opcode Value:1 (PSD Offset) - Opcode reserved to indicate the start offset of the Post-Stack Network Actions header after the MPLS BOS in octets.  This allows to carry Generic Control Word (0000b) <xref target="RFC4385" format="default"/> and G-ACh (0001b) [RFC5586] fields immediately after the BOS. In the absence of this opcode, the node should understand that the PSD is encoded right after the MPLS BOS. "PSD Offset" value is encoded in next 13 bits.</li>
        </ul>

        <figure anchor="In-Stack-PSD-Offset-NAI-Opcode">
          <name>In-Stack PSD offset Encoding Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=1|      PSD Offset         |1|IHS|S| NASL  |R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>

        <t> NA Opcode Value: 1 </t>
        <t> NA Scope: Depending on the NASS scope. This could be any one of the three scopes (I2E, HBH and SEL) </t>
        <t> Unknown Opcode Handling: MUST drop (Value = 1) </t>
        <t> Ancillary Data Length: 13 bits </t>
        <t> Ancillary Data Format: The 13-bit value provides the offset to the start of the Post-Stack from the MPLS BOS in octets. </t>

      </section>

      <section anchor="sect-J5.2b" numbered="true" toc="default">
        <name>NAI Opcode Value 2 (Flag-Based NAIs without AD)</name>
        <t> This opcode is reserved to carry the Flag-Based NAIs those do not require Ancillary Data. These NAI flag bits are carried in the Ancillary Data field of the Opcode. </t>

        <figure anchor="In-Stack-Flag-Based-NAI-Opcode">
          <name>In-Stack Flags-Based NA Encoding Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL  |R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S| NAIs  |UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>

        <t> NA Opcode Value: 2 </t>
        <t> NA Scope: Scope depends on the scope of the Flag-Based NAI. This could be any one of the three scopes (I2E, HBH and SEL) </t>
        <t> Unknown Opcode Handling: Depends on the Flag-Bases NAIs that are encoded. If one of the encoded NAIs handling is Drop (Value: 1), then this packet MUST be Dropped. </t>
        <t> Ancillary Data Length: Max 110 bits. To extend this range, a new opcode could be allocated from IANA registry in the future. </t>
        <t> Ancillary Data Format: Each bit position represents a single Flag-Based NAI, that does not require AD. The bit positions are read from left to right. These bit positions will be allocated and maintained by IANA. </t>

      </section>

      <section anchor="sect-J5.2c" numbered="true" toc="default">
        <name>NAI Opcode Value 3 (Combination of multiple NAIs)</name>
        <t> This Opcode reserved to support a combination of multiple IS-Stack NAI with the Ancillary data. The combination of NAIs in this case, are represented as the offset bits in the first 20 bits, the Flag bit position for a specific application will be allocated and maintained by IANA. The next 3 LSE's are used to encode the AD for the specific Flag bits in the first 20 bits. </t>

        <figure anchor="In-Stack-Ext-Hdr-2">
          <name>In-Stack Flag-Based NAs with Ancillary Data</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     MNA-Label=bSPL (TBA)              | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=2|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=3|      Flag-Based NAIs          |S| NAIs  |UOH| 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|             Ancillary Data                |S|Ancillary Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>

        <t> NA Opcode Value: 3 </t>
        <t> NA Scope: Scope depends on the Flag-Based NAI's scope. This could be any one of the three scopes (I2E, HBH and SEL) </t>
        <t> Unknown Opcode Handling: Depends on the Flag-Bases NAIs that are encoded. If one of the encoded NAIs handling is Drop (Value: 1), then this MUST to Drop.  </t>
        <t> Ancillary Data Length: Max 110 bits </t>
      <t> Ancillary Data Format: Each bit position represents a single Flag-Based NAI, that does not require AD. The bit positions are read from left to right. These bit positions will be allocated and maintained by IANA. </t>

      </section>

      <section anchor="sect-J5.2d" numbered="true" toc="default">
        <name>NAI-Opcode Value 4 (PSD-ISD Ordering)</name>
        <t>  This Opcode is reserved to indicate the specific order of execution between Post-Stack and In-Stack NAIs. </t>

        <figure anchor="In-Stack-PSD-Opcode-Indicator">
          <name>In-Stack PSD Opcode Indicator Encoding Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |1|IHS|S| NASL=2|R|R|R|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=4|      Post-Stack-NAI           |S|PS-NAI |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S|4bit AD|UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>

        <t> NA Opcode Value: 4 </t>
        <t> NA Scope: Scope depends on the Scope of NASS that requires ordering. This could be any one of the three scopes (I2E, HBH and SEL) </t>
        <t> Unknown Opcode Handling:  MUST drop (Value = 1)  </t>
        <t> Ancillary Data Length: Max 20 bits </t>
        <t> Ancillary Data Format: When this opcode is present in the NASS then the "O-Bit" in the NASS parameters MUST be set. If not the packet MUST be dropped. Ancillary Data is encoded with the Post-Stack NAIs (8-Bit value) that is required to be processed before processing the next In-Stack NAs encoded. This opcode could hold maximum of two Post-Stack NAIs that could be executed serially.</t>

      </section>

      <section anchor="sect-J5.2f" numbered="true" toc="default">
        <name>NAI-Opcode Value 126 (No Operation)</name>

        <t> This opcode is reserved to fill-in unused 20 bits of 2nd LSE. </t>

        <figure anchor="In-Stack-No-op-Opcode">
          <name>In-Stack No-Operation Opcode Encoding Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-OP=126  |            0x0          |P|IHS|S| NASL=0|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          ]]></artwork>
        </figure>

        <t> NA Opcode Value: 126 </t>
        <t> NA Scope: Follows the scope of NASS </t>
        <t> Unknown Opcode Handling:  MUST Skip and Proceed (Value = 0)  </t>
        <t> Ancillary Data Length: Max 13 bits </t>
        <t> Ancillary Data Format: This could be any value as this opcode is a No-Operation Opcode. This value will be ignored. </t>


      </section>

      <section anchor="sect-J5.2g" numbered="true" toc="default">
        <name>NAI-Opcode Value 127 (Extended Opcode)</name>
        <t> This opcode is reserved to extend the current opcode range beyond 127. The Extended 7-bit opcode value will be encoded next to the base opcode value 127. </t>

        <figure anchor="In-Stack-Extended-Opcode">
          <name>In-Stack Extended Opcode Encoding Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=1|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Op=127  |Ext-NAI-Op=9 |Ancillary Data   |S|4bit AD|UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>
     

        <t> NA Opcode Value: 127 </t>
        <t> NA Scope: Scope depends on the Extended NAI opcode. This could be any one of the three scopes (I2E, HBH and SEL) </t>
        <t> Unknown Opcode Handling:  Depends on the Extended NAI opcode handling  </t>
        <t> Ancillary Data Length: Depends on the Length supported by the extended opcode. The Maximum length of this opcode is 103 bits </t>
        <t> Ancillary Data Format: In the above example, the extended Opcode "9" is encoded in the packet.  In this case only 13 bits of AD could be encoded in the same LSE, if the application requires to encode more than 13 bits then it had to use next LSE to encode the rest of the AD </t>

      </section>

    </section>

  </section>



  <section anchor="sect-J6" numbered="true" toc="default">
    <name>Post-Stack MPLS Network Action Encoding </name>
    <t> The details of the Post-Stack Network Action Extension Header encodings are specified in <xref target="I-D.song-mpls-extension-header" format="default"/>. </t>

    <section anchor="sect-J6.1a" numbered="true" toc="default">
      <name> MNA carrying Only Post-Stack NAs </name>

      <figure anchor="MNA-Carrying-only-PSD">
        <name>MNA Encoding only Post-Stack NAs </name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Label                 | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  NAI-OP=126 |            0            |1|IHS|1| NASL=0|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                                        
~              Post-Stack Network Actions Encoding              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                               ~
~                           Data                                ~
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        ]]></artwork>  
      </figure>

      <t> In some cases the MNA header may encode only the Post-Stack NAs. In this case, the P-Bit is set to indicate the presence of Post-Stack NAs. The IHS field indicates the scope of the Post-Stack NAs (I2E, HBH, SEL). </t>

    </section>


    <section anchor="sect-J6.1b" numbered="true" toc="default">
      <name> MNA carrying both In-Stack and Post-Stack NAs </name>

      <figure anchor="MNA-Carrying-ISD-PSD">
        <name>MNA Encoding In-Stack and Post-Stack NAs </name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Label                 | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  NAI-OP=126 |            0            |1|IHS|S| NASL=1|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| NAI-Opcode=2|        Flag-Based NAIs        |1| NAIs  |UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                                            
~              Post-Stack Network Actions Encoding              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                               ~
~                           Data                                ~
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        ]]></artwork>  
      </figure>

      <t> In some cases the MNA header may encode both In-Stack and Post-Stack NAs. In this case, P-Bit is set to indicate the presence of Post-Stack NAs. The NASL is set to "1", indicates the presence of an In-Stack NA LSE.  The IHS field indicates the scope of both the In-Stack Post-Stack NAs (I2E, HBH, SEL).</t>

    </section>

    <section anchor="sect-J6.1c" numbered="true" toc="default">
      <name> MNA carrying In-Stack and Post-Stack NA with different scope </name>

      <figure anchor="MNA-Carrying-ISD-PSD-Diff-Scope">
        <name>MNA Encoding In-Stack and Post-Stack NAs with diff scope </name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Label                 | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  NAI-OP=126 |            0            |0| 1 |S| NASL=1|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
| NAI-Opcode=2|        Flag-Based NAIs        |S| NAIs  |UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  NAI-OP=126 |            0            |1| 0 |1| NASL=0|R|R|R|O|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                                           
~              Post-Stack Network Actions Encoding              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                                                               ~
~                           Data                                ~
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        ]]></artwork>  
      </figure>

      <t> In some cases the MNA may carry In-Stack NAs with Hop-By-Hop scope and Post-Stack NAs with I2E scope. In this case, there will be two NASS will be encoded. In this case, the First NASS will encode the In-Stack NA with the Hop-By-Hop scope and the second NASS will encode the presence of I2E scoped Post-Stack NAs. </t>

    </section>

    <section anchor="sect-J5.1b" numbered="true" toc="default">
      <name>Post-Stack MPLS Network Opcodes Allocation Procedure</name>
      <t> The Post-Stack MPLS Network Action opcode specific informations are provided in the draft <xref target="I-D.song-mpls-extension-header" format="default"/>.</t>

    </section>

  </section>


  <section anchor="sect-J6.a" numbered="true" toc="default">
    <name>Network Action Processing Order</name>
    <t> Depending on the application, each NA will be processed at different stages of the ASICs pipeline. But in some cases, there may be contention between processing two NAs at the same stage of ASICs, in those cases the processing order should be maintained, so that the result of the packet forwarding and OAM data collection will be predictable.  </t>
      
    <section anchor="sect-J6.a1" numbered="true" toc="default">
      <name>In-Stack NA Processing Order</name>
        <t> This section talks about maintaining the ordering between the In-Stack NA processing. </t>
        <t> The order of processing the NA should follow the order of NAs encoded in the NASS. </t>
      <figure anchor="In-Stack-NA-Ordering-1">
        <name>Example In-Stack NA Processing Order</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=2|R|R|R|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=7|      Ancillary Data7          |S|  AD7  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S|  NAI  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ]]></artwork>
      </figure>

      <t> In the above example, a node will process the Flags-Based-NAIs first and then the NAI-Opcode "7". </t> 
      <t> In some cases, some Flag-Based NAIs may need to be processed before the NAI-Opcode "7" and some Flag-Based NAIs may need to be process after the NAI-Opcode "7". </t>

      <figure anchor="In-Stack-NA-Ordering-2">
        <name>Example In-Stack NA Processing Order</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=3|R|R|R|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|        0x01                   |S|  NAI  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=7|      Ancillary Data7          |S|  AD7  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|        0x02                   |S|  NAI  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        ]]></artwork>
      </figure>
      <t> In the above example, the Flag-Based NAI "0x1" is processed before the NAI-Opcode "7" and the Flags-Based NAI "0x2" is processed after the NAI-Opcode "7". </t>

    </section>

    <section anchor="sect-J6.a2" numbered="true" toc="default">
      <name>Post-Stack NA Processing Order</name>
      <t> Post-Stack NAs follow ordering specified in <xref target="I-D.song-mpls-extension-header" format="default"/>.</t>
    </section>

    <section anchor="sect-J6.a3" numbered="true" toc="default">
      <name>Mix of In-Stack and Post-Stack NA Processing Order</name>
      <t> In some cases, Post-Stack NA needs to be processed before In-Stack NA. This section describes how to prioritize the Post-Stack NAs over the In-Stack NAs. </t>
      <figure anchor="In-Stack-NA-Ordering-3">
        <name>Example Post-Stack and In-Stack NA Processing Order</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=3|R|R|R|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S| NAIs  |UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=4|      Post-Stack-NAI6          |S|PS-NAI |UOH|NAL|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=7|      Ancillary Data7          |S|  AD7  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

        ]]></artwork>
      </figure>

      <t> In the above example, the Flag-Based NAIs required to be processed first, followed by the Post-Stack NA "6" and then In-Stack NAI-Opcode "7". The NAI-Opcode "4" is a reserved opcode which can be used for ordering between the In-Stack and Post-Stack. In this example, the AD field of the NAI-Opcode "4" carries the Post-Stack NA that is processed before processing the NAI-Opcode "7".</t>

    </section>
  </section>



  <section anchor="sect-J99" numbered="true" toc="default">
    <name>Multiple MNA Copies in Label Stack</name>

    <t> When adding a large size MPLS label stack, a copy of NASS with HBH and Select scope may be placed at regular stack depth throughout the MPLS label stack, with the understanding that the current copy of the NASS will eventually rise to the top of the label stack. </t>
    <t> For HBH scope, every node processes the current copy of the NASS and the node that pops the forwarding label that exposes the NASS will also remove the NASS after processing the NASS assuming it supports the MNA label, and it will not forward the NASS at the top to the next node. </t>
    <t> For HBH scope, the node that receives the NASS at the top of the label stack MUST remove the NASS, assuming that it supports the MNA label. </t>
    <t> For I2E scope, only one copy of NASS needs to be added and it is added just before the bottom of the stack. </t>
  </section>


  <section anchor="sect-J10" numbered="true" toc="default">
    <name>Node Capability Signaling</name>
    <t> The headend Node which is encapsulating the MNA header MUST make sure that the egress Nodes removes the MNA header. The headend Node May make sure that the MNA encoded in the packet could be able to process my midpoint and egress nodes. </t>
    <t> The following are the Node capabilities that are required for the headend Node to decide the encoding patten: </t> 

    <ul>
      <li> Each participating Node MUST signal their capabilities of NASS processing like ordering, maximum NASL, etc. </li>
      <li> Each Participating Node MUST signal their capabilities of supporting each In-Stack and Post-Stack NAs and its parameters. </li> 
      <li> Each Participating Node MUST signal their Maximum MPLS Stack Inspection Depth (MMSID). This will indicate the headend node to encode the MNA at a specific stack depth. </li>
    </ul>

    <t> The above capability signaling will be added in LDP, RSVP-TE, BGP, IS-IS, OSPF, BGP-LS, etc. This is outside the scope of this document. </t>

  </section>

  <section anchor="sect-J11" numbered="true" toc="default">
    <name>Security Considerations</name>
    <t> The security considerations in <xref target="RFC3032" format="default"/> also apply to the procedures defined in this document. </t>
    <t> The following are the security considerations that May inherit from this MNA architecture </t>

    <ul>
      <li> If the untrusted source encode the MNA's NASL/NAL with incorrect length, then this may affect the MNA processing and the packet could be router in an illegitimate manner. </li>
    </ul>
    
  </section>

  <section anchor="sect-J12" numbered="true" toc="default">
    <name>Backward Compatibility</name>

    <ul spacing="normal">
      <li> For the non-MNA capable node that does not advertise the MPLS Network Action capability, the Encapsulating node MUST make sure that the MPLS Network Action Sub-Stack indicator is not at the top of the MPLS Label Stack to avoid dropping the packets. Based on the signalling, if the MPLS egress node is not capable of the processing MPLS Network Actions then it should not add MNA in the packet. In the worst case, if the non-MNA capable nodes that does not understand the new bSPL allocated then those routers will drop the packets.</li> 
      <li> The MPLS Network Action Encoding format is designed to make sure that it does not alias with any Special Purpose Label. </li> 
      <li> The MPLS Network Actions can co-exist with the existing GAL / G-ACh based encoding of data. </li>
      <li> The TC and TTL fields of the MNA bSPL are not re-purposed 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.  When the penultimate node is not aware of the MNA bSPL (value TBA), this can cause encoding format flags in the TTL of the NASI (label TBA) label to be corrupted.</li>
    </ul>

  </section>

  <section anchor="sect-J12.1a" numbered="true" toc="default">
    <name>Processing In-Stack MPLS Network Actions</name>
    <t> Encapsulating Node: </t>

    <ul spacing="normal">
      <li> MUST NOT add In-Stack MPLS Network Action Sub-Stack if the decapsulation node is not capable of In-Stack MPLS Network Action.</li>
      <li> SHOULD NOT change the IS-NAI-Opcode and the first 12 bits of the In-Stack Ancillary Data for the same packet flow to avoid ECMP path change. </li>
      <li> MAY change In-Stack Ancillary Data part present only in the TTL field for the same packet flow. </li>
      <li> MUST ensure that the penultimate node does not remove the NASS.</li>
    </ul>

    <t> Transit Node: </t>
    <ul spacing="normal">
      <li> MUST ignore the IS-NAI-Opcode that are not supported.  </li>
      <li> MUST NOT add In-Stack NASS if the decapsulation node is not capable of In-Stack MPLS Network Actions.</li>
      <li> SHOULD NOT change the IS-NAI-Opcode and the first 12 bits of the In-Stack Ancillary Data for the same packet flow. </li>
      <li> MAY change In-Stack Ancillary Data part present only in the TTL field for the same packet flow. </li>
      <li> MAY remove the IS-NAI-Opcode and its Ancillary Data for all matching packet flow. </li>
    </ul>

    <t> Penultimate Node: </t>
    <ul spacing="normal">
      <li> MUST remove the NASS when it is exposed after removing the forwarding (transport) label. </li>
    </ul>

    <t> Decapsulating Node: </t>
    <ul spacing="normal">
      <li> MUST remove the MPLS Network Action Sub-Stack. </li>
    </ul>
  </section>

  <section anchor="sect-J13" numbered="true" toc="default">
    <name>IANA Considerations</name>
    <t>Below are the IANA actions which this document is requesting.</t>

    <t>The registries created by this document will be collected in a new registry grouping called “MPLS Network Action,” which will be located at https://www.iana.org/assignments/mpls-network-action.</t>
      
    <section anchor="sect-J13.10" numbered="true" toc="default">
      <name>IANA Considerations for MNA NASS Encoding Parameters</name>
      <t>IANA is requested to create a new registry with name "MNA NASS Encoding Parameters" to assign the bit position and the meaning to the Parameters that re-purpose TTL and TC fields in the Label Stack Entry (LSE).</t>

      <table anchor="iana-fif-tbl" align="center">
        <name>MNA NASS Encoding Parameters Registry</name>
        <thead>
          <tr>
            <th align="left"> Bit Position</th>
            <th align="left"> Description</th>
            <th align="left"> Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">20-31</td>
            <td align="left">IETF Review</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>

      <t>Following NASS Encoding Parameter values are assigned from this registry. </t>
      <table anchor="iana-is-fiflag-tbl" align="center">
        <name>MNA NASS Encoding Parameter Values</name>
        <thead>
          <tr>
            <th align="left"> Value</th>
            <th align="left"> Description</th>
            <th align="left"> Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">20</td>
            <td align="left">Post-Stack Network Action Presence Indicator</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">21-22</td>
            <td align="left">In-Stack Scope value E2H/HBH/SEL(IHS)</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">23</td>
            <td align="left">End of Stack (S)</td>
            <td align="left">RFC 3032</td>
          </tr>
          <tr>
            <td align="left">24-27</td>
            <td align="left">In-Stack Network Action Sub-Stack Length (NASL)</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">28-30</td>
            <td align="left">Reserved Bit - May be used in future</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">31</td>
            <td align="left">O-Bit - MUST process NAs in the Order of encoding, Else drop the packet</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>

    </section>

    <section anchor="sect-J13.1" numbered="true" toc="default">
      <name>IANA Considerations Flag-Based Network Actions</name>
      <t>IANA is requested to create a new registry with name "In-Stack MPLS Network Action Indicator Flags" to assign a bit position and the meaning to the Flag-Based Network Action upon the application request.
    	      Based on the need this registry can be extended beyond 20 bit positions (MAX: 110 bits) using additional LSEs. The bit positions are read and processed from Left to Right. 
  All code-points in the range 0 through 109 in this registry shall be allocated according to the "IETF Review" procedure as specified in <xref target="RFC8126" format="default"/>. 
  </t>

      <table anchor="iana-nafif-tbl-1" align="center">
        <name>In-Stack MPLS Network Action Indicator Flags Registry</name>
        <thead>
          <tr>
            <th align="left"> Bit Position</th>
            <th align="left"> Description</th>
            <th align="left"> Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0-109</td>
            <td align="left">Unassigned</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>

    </section>

    <section anchor="sect-J13.2" numbered="true" toc="default">
      <name>IANA Considerations for IS-NAI-Opcode</name>

      <t>IANA is requested to create a new registry with name "In-Stack MPLS Network Action Indicator Opcodes" to assign IS-NAI-Opcode values and the meaning to the Network Action upon the application request.
   All code-points in the range 1 through 110 in this registry shall be allocated according to the "IETF Review" procedure as specified in <xref target="RFC8126" format="default"/>.  Code points in the range 111 through 125 in this registry shall be allocated according to the "First Come First Served" procedure as specified in <xref target="RFC8126" format="default"/>. Remaining code-points are allocated according to <xref target="iana-is-fioc-reg-tbl" format="default"/>: </t>
   
      <table anchor="iana-is-fioc-reg-tbl" align="center">
        <name> In-Stack MPLS Network Action Indicator Opcodes Registry</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="center">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0 - 110</td>
            <td align="center">IETF Review</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">111 - 125</td>
            <td align="center">Experimental Use</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>

      <t>Following IS-NAI-Opcode Indicator values are assigned from this registry. </t>
      <table anchor="iana-is-fioc-tbl" align="center">
        <name> In-Stack Network Action Indicator Opcode Values</name>
          <thead>
            <tr>
              <th align="left"> Value</th>
              <th align="left"> Description</th>
              <th align="left"> Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Invalid opcode, Packet MUST be dropped</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Offset of start of Post-Stack Network Action Header</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Flag-Based Network Action Indicators with No AD</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Flag-Based Network Action Indicators with AD</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Post-Stack Network Action Indicator</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">126</td>
              <td align="left">No Operation</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">127</td>
              <td align="left">Opcode Range Extension Beyond 255</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>

    </section>

    <section anchor="sect-J13.6" numbered="true" toc="default">
      <name>IANA Considerations for MNA bSPL Label</name>
      <t>IANA is requested to allocate a value TBA for the MNA bSPL label from the "Base Special-Purpose MPLS Label Values" registry to indicate the presence of MNA Sub-Stack in MPLS header.</t>
    </section>

  </section>

  <section anchor="sect-J14" numbered="true" toc="default">
    <name>Appendix</name>

    <section anchor="sect-J7" numbered="true" toc="default">
      <name>Network Action Encoding Examples</name>
      <section anchor="sect-J7.1" numbered="true" toc="default">
        <name>Example-1 - Flag-Based In-Stack NA without AD</name>

        <figure anchor="In-Stack-Ext-Hdr-1-a">
          <name>Example NASS with In-Stack Network Action Encoding Carrying Flag-Based NA</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=1|R|R|R|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S| NAIs  |UOH| 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          ]]></artwork>
        </figure>
 
        <t> This is the example of MNA carrying Flag-Based NAIs that does not require Ancillary Data. </t>
      
        <t> Third LSE: </t>
        <ul empty="true" spacing="normal">
          <li> NAI-Opcode=2: This is 7 bits reserved opcode to carry Flag-Based NAIs with out any AD. </li>
          <li> Flag-Based NAIs: This is the Flag-Based NAIs. </li>
          <li> S: This is the LSEs stack-bit. </li>
          <li> NAIs: Continuation of Flags-Based NAIs. </li>
          <li> UOH: Action that is required to take by a node if one of the NAIs are not recognized by the processing node.</li>
          <li> NAL: The last two bits NAL field is set to "0", as there are no additional LSE is used to encode. </li>
      </ul>


      <figure anchor="In-Stack-Ext-Hdr-1-a-ext">
        <name>Example NASS carrying Flag-Based NA with more than 20 Flags</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode  |      Ancillary Data     |P|IHS|S| NASL=2|R|R|R|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=2|      Flag-Based NAIs          |S| NAIs  |UOH| 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1| Additional Flag-Based NAIs                |S|Flag-Based-NAIs|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ]]></artwork>
      </figure>
      <t>In this example, let us assume that an application-C has been allocated a Flag position of "21" by IANA, If the application-C needs to execute its Network Action on the MPLS packet then the MSB 2nd bit in the fourth LSE field will be set to indicate the Flags position "21".</t>
      <t> NAL is set to "1" and indicates the Flag-Based NAIs are also encoded in the next LSE.</t>
      <t> NASL is set to "2" and indicates the additional 2 In-Stack LSE are encoded. </t>
      <t> While encoding the Additional Ancillary Data in the 4th LSEs Most Significant bit MUST be set to "1" to prevent from aliasing with the reserved bSPLs.</t>
    </section>

    <section anchor="sect-J7.2" numbered="true" toc="default">
      <name>Example-2 - In-Stack NA with 13-bit AD </name>

      <figure anchor="In-Stack-Ext-Hdr-2a">
        <name>Example NASS carrying In-Stack Network Action that requires Ancillary Data</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=8|      Ancillary Data     |P|IHS|S| NASL=0|R|R|R|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ]]></artwork>
      </figure>
      <t> In this example, the NASS is carrying only the In-Stack Network Action that requires 13-bit Ancillary Data. The Opcode that are encoded MUST be optional and the processing node could skip this opcode if it does not understand. </t>
      <t> Second LSE: </t>
      <ul empty="true" spacing="normal">
          <li> NAI-Opcode=8: In-Stack Network Action opcode "8". </li>
          <li> Ancillary Data: 13 bit ancillary data that is required to process the opcode 8. </li>
      </ul>
   
    </section>


    <section anchor="sect-J7.4" numbered="true" toc="default">
      <name>Example-3 - In-Stack NA with more than 20-bit AD</name>
      <t> An In-Stack Network Action may require more than 20 bits of Ancillary Data. In this example, the following Ancillary Data encoding is used. </t>

      <figure anchor="In-Stack-Ext-Hdr-Format-4-with-more-AD">
        <name>Example In-Stack Network Action With Additional Ancillary Data Encoding Format</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[

 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      MNA-Label=bSPL (TBA)             | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=1|            0            |P|IHS|S| NASL=2|R|R|R|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| NAI-Opcode=9|        Ancillary Data9        |S|  AD9  |UOH| 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|            Ancillary Data9                |S|Ancillary Data9|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        ]]></artwork>
      </figure>

      <t> In this example, the In-Stack NAI-Opcode "9" requires more than 20 bits of Ancillary Data to be encoded. The NA and AD are encoded in the 3rd and 4th LSEs. </t>

      <t> Third LSE: </t>
      <ul empty="true" spacing="normal">
        <li> NAI-Opcode=9: In-Stack Network Action opcode "9". </li>
        <li> Ancillary Data9: 16 bits of Ancillary Data encoded to process opcode "9"</li>
        <li> AD9: 4 bits of additional Ancillary Data.</li>
      </ul>

      <t> Fourth LSE: </t>
      <ul empty="true" spacing="normal">
        <li> 0th Bit: This bit is set to "1" to prevent aliasing with the bSPLs. </li>
        <li> Ancillary Data9: 22 bits of additional Ancillary data.</li>
        <li> Ancillary Data9: 8 bits of additional Ancillary Data.</li>
      </ul>
    
    </section>

  </section>

 </section>
 </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
          </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" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml">
          <front>
            <title>MPLS Label Stack Encoding</title>
            <author initials="E." surname="Rosen" fullname="E. Rosen">
              <organization/>
            </author>
            <author initials="D." surname="Tappan" fullname="D. Tappan">
              <organization/>
            </author>
            <author initials="G." surname="Fedorkow" fullname="G. Fedorkow">
              <organization/>
            </author>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter">
              <organization/>
            </author>
            <author initials="D." surname="Farinacci" fullname="D. Farinacci">
              <organization/>
            </author>
            <author initials="T." surname="Li" fullname="T. Li">
              <organization/>
            </author>
            <author initials="A." surname="Conta" fullname="A. Conta">
              <organization/>
            </author>
            <date year="2001" month="January"/>
          </front>
          <seriesInfo name="RFC" value="3032"/>
          <seriesInfo name="DOI" value="10.17487/RFC3032"/>
        </reference>

         <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
         <reference anchor="RFC3443" target="https://www.rfc-editor.org/info/rfc3443" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3443.xml">
          <front>
            <title>Time To Live (TTL) Processing in Multi-Protocol Label Switching (MPLS) Networks </title>
            <author initials="P." surname="Agarwal" fullname="P. Agarwal">
              <organization/>
            </author>
            <author initials="B." surname="Akyol" fullname="B. Akyol">
              <organization/>
            </author>
            <date year="2003" month="January"/>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
                    </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
       </references>
      <references>
        <name>Informative References</name>

        <reference anchor="I-D.song-mpls-extension-header" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.song-mpls-extension-header.xml" target="https://www.ietf.org/archive/id/draft-song-mpls-extension-header-11.txt">
          <front>
            <title>MPLS Network Actions using Post-Stack Extension Headers</title>
            <author fullname="Haoyu Song">
              <organization>Futurewei Technologies</organization>
            </author>
            <author fullname="Zhenbin Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Tianran Zhou">
              <organization>Huawei</organization>
            </author>
            <author fullname="Loa Andersson">
              <organization>Bronze Dragon Consulting</organization>
            </author>
            <author fullname="Zhaohui Zhang">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Rakesh Gandhi">
              <organization>Cisco Systems</organization>
            </author>
            <date month="October" day="15" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-song-mpls-extension-header-11"/>
        </reference>

       <reference anchor="I-D.ietf-mpls-mna-fwk" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mpls-mna-fwk.xml" target="https://www.ietf.org/archive/id/draft-ietf-mpls-mna-fwk-02.txt">
          <front>
            <title>MPLS Network Actions Framework</title>
            <author fullname="Loa Andersson">
            </author>
            <author fullname="Stewart Bryant">
            </author>
            <author fullname="Matthew Bocci">
            </author>
            <author fullname="Tony Li">
            </author>
            <date month="October" day="21" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mpls-mna-fwk-02.txt"/>
        </reference>

        <reference anchor="I-D.ietf-mpls-mna-requirements" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mpls-mna-requirements.xml" target="https://www.ietf.org/archive/id/draft-ietf-mpls-mna-requirements-04.txt">
          <front>
            <title>Requirements for MPLS Network Action Indicators and MPLS Ancillary Data</title>
            <author fullname="Matthew Bocci">
              <organization>Nokia</organization>
            </author>
            <author fullname="Stewart Bryant">
              <organization>University of Surrey 5GIC</organization>
            </author>
            <author fullname="John Drake">
              <organization>Juniper Networks</organization>
            </author>
         
            <date month="October" day="13" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mpls-mna-requirements-04.txt"/>
        </reference>

        <reference anchor="I-D.ietf-mpls-mna-usecases" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mpls-mna-usecases.xml" target="https://www.ietf.org/archive/id/draft-ietf-mpls-mna-usecases-01.txt">
          <front>
            <title>Usecases for MPLS Indicators and Ancillary Data</title>
            <author fullname="Tarek Saad">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Kiran Makhijani">
              <organization>Futurewei Technologies</organization>
            </author>
            <author fullname="Haoyu Song">
              <organization>Futurewei Technologies</organization>
            </author>
            <date month="October" day="24" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mpls-mna-usecases-01"/>
        </reference>

        <reference anchor="RFC5586" target="https://www.rfc-editor.org/info/rfc5586" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5586.xml">
          <front>
            <title>MPLS Generic Associated Channel</title>
            <author initials="M." surname="Bocci" fullname="M. Bocci" role="editor">
              <organization/>
            </author>
            <author initials="M." surname="Vigoureux" fullname="M. Vigoureux" role="editor">
              <organization/>
            </author>
            <author initials="S." surname="Bryant" fullname="S. Bryant" role="editor">
              <organization/>
            </author>
            <date year="2009" month="June"/>
          </front>
          <seriesInfo name="RFC" value="5586"/>
          <seriesInfo name="DOI" value="10.17487/RFC5586"/>
        </reference>

        <reference anchor="RFC4385" target="https://www.rfc-editor.org/info/rfc4385" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4385.xml">
          <front>
            <title>Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN</title>
            <author initials="S." surname="Bryant" fullname="S. Bryant">
              <organization/>
            </author>
            <author initials="G." surname="Swallow" fullname="G. Swallow">
              <organization/>
            </author>
            <author initials="L." surname="Martini" fullname="L. Martini">
              <organization/>
            </author>
            <author initials="D." surname="McPherson" fullname="D. McPherson">
              <organization/>
            </author>
            <date year="2006" month="February"/>
          </front>
          <seriesInfo name="RFC" value="4385"/>
          <seriesInfo name="DOI" value="10.17487/RFC4385"/>
        </reference>

      </references>
    </references>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>
      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 Amanda Baber for reviewing the IANA Considerations and providing many useful suggestions. The authors would like to thank Darren Dukes, Loa Andersson, Stewart Bryant and Greg Mirsky for reviewing our draft and providing many useful suggestions.
      </t>

    </section>
    <section numbered="false" anchor="contributors" toc="default">
      <name>Contributors</name>
      <t>The following people have substantially contributed to this document:</t>

          <figure anchor="contrib">
     <artwork name="" type="" align="left" alt=""><![CDATA[

Jisu Bhattacharya
Cisco Systems, Inc.
Email: jisu@cisco.com


Bruno Decraene
Orange
Email: bruno.decraene@orange.com


Weiqiang Cheng
China Mobile
Email: chengweiqiang@chinamobile.com


Xiao Min
ZTE Corp.
Email: xiao.min2@zte.com.cn


Luay Jalil
Verizon
Email: luay.jalil@verizon.com


Jie Dong
Huawei Technologies
Huawei Campus, No. 156 Beiqing Rd.
Beijing  100095
China
Email: jie.dong@huawei.com


Tianran Zhou
Huawei Technologies
China
Email: zhoutianran@huawei.com


Bin Wen
Comcast
Email: Bin_Wen@cable.comcast.com


Sami Boutros
Ciena
Email: sboutros@ciena.com


Tony Li 
Juniper Networks 
United States 
Email: tony.li@tony.li 


John Drake 
Juniper Networks 
United States 
Email: jdrake@juniper.net 


    ]]></artwork>
      </figure>

    </section>
  </back>
</rfc>
