<?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-gandhi-mpls-ioam-10" category="std" ipr="trust200902" consensus="true" obsoletes="" xml:lang="en" sortRefs="true" symRefs="true" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.0 -->
  <!-- Generated by id2xml 1.5.0 on 2020-03-09T17:12:10Z -->
    <front>
    <title abbrev="In Situ OAM for MPLS Data plane">MPLS Data Plane Encapsulation for In Situ OAM Data</title>
    <seriesInfo name="Internet-Draft" value="draft-gandhi-mpls-ioam-10"/>
    <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="Frank Brockners" initials="F." surname="Brockners">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Hansaallee 249, 3rd Floor</street>
          <street>DUESSELDORF, NORDRHEIN-WESTFALEN  40549</street>
          <street>Germany</street>
        </postal>
        <email>fbrockne@cisco.com</email>
      </address>
    </author>
    <author fullname="Bin Wen" initials="B." surname="Wen">
      <organization>Comcast</organization>
      <address>
        <email>Bin_Wen@cable.comcast.com</email>
      </address>
    </author>
    <author fullname="Bruno Decraene" initials="B." surname="Decraene">
      <organization>Orange</organization>
      <address>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>
   <author fullname="Haoyu Song" initials="H." surname="Song">
      <organization>Futurewei Technologies</organization>
      <address>
        <postal>
        <street> </street>
          <city></city>
          <country>USA</country>
        </postal>
        <email>haoyu.song@futurewei.com</email>
      </address>
    </author>
    <date day="10" month="March" year="2023"/>
    <workgroup>MPLS Working Group</workgroup>
    <abstract>
      <t>
   In Situ Operations, Administration, and Maintenance (IOAM) is used for recording and collecting 
   operational and telemetry information while the
   packet traverses a path between two points in the network.  This
   document defines how IOAM data fields are transported with 
   MPLS data plane encapsulation using MPLS Network Action (MNA).</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   In Situ Operations, Administration, and Maintenance (IOAM) is used for recording and collecting 
   operational and telemetry information while the
   packet traverses a path between two points in the network. The term "in-situ"
   refers to the fact that the IOAM data fields are added to the data
   packets rather than being sent within the probe packets specifically
   dedicated to OAM. The IOAM data
   fields are defined in <xref target="RFC9197" format="default"/>.  The IOAM data fields are further
   updated in <xref target="RFC9326" format="default"/> for direct export use-cases.</t>
      <t>
   This document defines how IOAM data fields are transported with 
   MPLS data plane encapsulations using MPLS Network Action (MNA).</t>

   <t> <xref target="I-D.ietf-mpls-mna-hdr" format="default"/> defines mechanisms for carrying MNA Sub-Stack (NAS) 
   above the Bottom of the label stack (BOS)
   and <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/> defines mechanisms for carrying Post-Stack Network Actions in MPLS
   packets after the Bottom of the label stack. This document uses these two mechanisms 
   and describes the procedures for carrying IOAM data fields in an MPLS packet.</t>
    </section>

    <section anchor="sect-2" numbered="true" toc="default">
      <name>Conventions</name>
      <section anchor="sect-2.1" numbered="true" toc="default">
        <name>Requirement 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 MPLS Network Action (MNA) terminology defined in <xref target="I-D.ietf-mpls-mna-hdr" format="default"/> are used in this document.</t>

        <t>
   Abbreviations used in this document:</t>
        <dl newline="false" spacing="normal" indent="2">
          <dt>ECMP </dt>
          <dd>
            <t>
    Equal Cost Multi-Path
            </t>
            <t/>
          </dd>
          <dt>E2E  </dt>
          <dd>
            <t>
    Edge-To-Edge
            </t>
            <t/>
          </dd>

          <dt>HBH  </dt>
          <dd>
            <t>
    Hop-By-Hop
            </t>
            <t/>
          </dd>
          <dt>IHS  </dt>
          <dd>
            <t>
    Ingress-To-Egress (I2E), Hop-By-Hop (HBH) or Select Scope
            </t>
            <t/>
          </dd>
          <dt>IOAM </dt>
          <dd>
            <t>
    In Situ Operations, Administration, and Maintenance
            </t>
            <t/>
          </dd>
          <dt>MPLS </dt>
          <dd>
            <t>
    Multiprotocol Label Switching
            </t>
            <t/>
          </dd>

    <dt>MNA </dt>
          <dd>
            <t>
    MPLS Network Action
            </t>
            <t/>
          </dd>

    <dt>NAI </dt>
          <dd>
            <t>
    Network Action Indicator 
            </t>
            <t/>
          </dd>

    <dt>NASL </dt>
          <dd>
            <t>
    Network Action Sub-Stack Length
            </t>
            <t/>
          </dd>

    <dt>OAM  </dt>
          <dd>
            <t>
    Operations, Administration, and Maintenance
            </t>
            <t/>
          </dd>

   <dt>POT  </dt>
          <dd>
            <t>
    Proof-of-Transit
            </t>
            <t/>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>MPLS Extensions for IOAM Data Fields</name>
      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>Post-Stack Network Action for IOAM</name>

    <t>The Post-Stack Network Action for IOAM is defined using the specification from 
    <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/>. </t>
 
    <t>The Post-Stack Network Action encoding contains IOAM Post-Stack Network Action Opcode (value TBA2 allocated by IANA), 
   length in number of 4-Octet units, and IOAM Option-Type with   
   IOAM-Data-Fields in ancillary data as shown in Figure 1.
   The IOAM-Data-Fields MUST follow the definitions corresponding to their  
   IOAM-Option-Types (e.g., see Section 4.4 of <xref target="RFC9197" format="default"/>
   and Section 3 of <xref target="RFC9326" format="default"/>). </t>

        <figure anchor="ure-ioam-network-action-in-mpls-header">
          <name>Post-Stack Network Action with IOAM Data Fields</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|N N N N|Version| PS-MNA-LEN    | TYPE = POST-STACK-MNA         | TH
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|<-+
|PS-NA-OP=IOAM| BLOCK-NUMBER  |IOAM-OPT-TYPE|R|R|R| IOAM-HDR-LEN|  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
|                                                               |  O
|                                                               |  A
~   IOAM Option and Data Space [RFC9197] [RFC9326]              ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
.                                                               .
.                                                               .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|PS-NA-OP=IOAM| BLOCK-NUMBER  |IOAM-OPT-TYPE|R|R|R| IOAM-HDR-LEN|  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  I
|                                                               |  O
|                                                               |  A
~   IOAM Option and Data Space [RFC9197] [RFC9326]              ~  M
|                                                               |  |
|                                                               |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<-+
|                                                               |
|                                                               |
~                 Optional Payload + Padding                    ~
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>

   <t>The 4-Octet Top Header is added with the following fields in the
      the Post-Stack Network Action as defined in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/></t>

    <dl newline="false" spacing="normal" indent="2">
         <dt>NNNN:</dt>
         <dd>
	 The first 4-bit (value TBA3 allocated by IANA) as defined in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/>.
	 As specified in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/>, the NNNN value can be 0001b for Generic Associated Channel (G-ACH) [RFC5586].
         </dd>
         <dt>PS-MNA-LEN:</dt>
         <dd>
         Length of the Post-Stack Network Action Stack in the packet in 4-Octet units including the Top Header.
         </dd>
         <dt>TYPE:</dt>
         <dd>
         TYPE is defined for POST-STACK-MNA (value TBA4 allocated by IANA) in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/>. 
	 As specified in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/>, 
	 the POST-STACK-MNA Type can be a Generic Associated Channel (G-ACH) Type [RFC5586] (value TBA5 allocated by IANA).
         </dd>
    </dl>

    <t>An IOAM-Data-Field is added in the Post-Stack Network Action containing the following fields:</t>
        <dl newline="false" spacing="normal" indent="2">

          <dt>IOAM-OPT-TYPE:</dt>
          <dd>
       7-bit field defining the IOAM Option-Type, as defined in
       the "IOAM Option-Type Registry" specified in <xref target="RFC9197" format="default"/> 
       and <xref target="RFC9326" format="default"/>).
    </dd>
          <dt>IOAM-HDR-LEN:</dt>
          <dd>
       7-bit unsigned integer. Length of the IOAM Data-Fields in 4-Octet units.
    </dd>
          <dt>IOAM Option and Data Space:</dt>
          <dd>
       IOAM-Data-Fields as specified by the
       IOAM-OPT-Type field.  IOAM-Data-Fields are defined corresponding to
       the IOAM-Option-Type (e.g., see Section 4.4 of
       <xref target="RFC9197" format="default"/> and Section 3 of
       <xref target="RFC9326" format="default"/>.
    </dd>
          <dt>BLOCK-NUMBER:</dt>
          <dd>
       The Block Number can be used to aggregate the IOAM data collected
       in data plane, e.g., to compute measurement metrics for each block of
       a data flow.  It is also used to correlate the IOAM data on different nodes.
    </dd>
        </dl>

      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>MNA Sub-Stack for IOAM Post-Stack Network Action</name>
	<t>The P flag defined in <xref target="I-D.jags-mpls-ps-mna-hdr" format="default"/> 
    is used to indicate the presence of Post-Stack Network Action and Ancillary Data.</t>

    <t>
    A Post-Stack Network Action Indicator (P flag) MUST be set to "1" to indicate the presence of 
    the Post-Stack Network Action with IOAM-Data-Fields in the Post-Stack Network Action (after the Bottom of the Stack).
    </t>

    <t>The IHS scope field defined in <xref target="I-D.ietf-mpls-mna-hdr" format="default"/> is used to indicate 
    that E2E or HBH or Select processing is required for the Post-Stack Network Action and Ancillary Data.</t> 

     <t>
    If both edge and intermediate nodes need to process the IOAM data fields  
    then IHS scope MUST be set to "HBH, value 0x1". If only edge nodes need to process 
    the IOAM data fields then IHS scope MUST be set to "I2E, value 0x0".
    The HBH scope allows to skip the IOAM data processing on the intermediate nodes 
    i.e., avoids the need to parse all IOAM-Data-Fields to detect the HBH option type.</t>

    <t>The MNA Label used in this document is a Base Special Purpose Label (bSPL value TBA1 to be allocated by IANA), 
    which is also called Network Action Sub-Stack Indicator <xref target="I-D.ietf-mpls-mna-hdr" format="default"/>.</t>

    <t>Opcode 2 is used to carry the Flag-Based Network Action Indicators (NAIs) in the Ancillary Data field 
    <xref target="I-D.ietf-mpls-mna-hdr" format="default"/>. 
    The Flag-Based Network Action Indicators is set to 0x0 to indicate that no Network Action 
    other than the Post-Stack Network Action(s) is required for the packet.</t> 

    <t>The U Flag for Unknown Action Handling is specified in <xref target="I-D.ietf-mpls-mna-hdr" format="default"/>.</t>

    <t>The Network Action Sub-Stack Length (NASL) is set to 0 if no additional Label 
    Stack Entry (LSE) is added after the LSE carrying the P Flag.</t>

      </section>
    </section>

    <section anchor="sect-4" numbered="true" toc="default">
      <name>Edge-To-Edge IOAM Network Action</name>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>MNA Sub-Stack for Edge-To-Edge IOAM</name>
        <t>
    The IHS scope 
    is set to "I2E, value 0x0" to indicate the scope of E2E IOAM-Data-Fields in the MPLS Sub-Stack as shown in Figure 2.
    Note that there may be additional Network Action (NA) LSEs added in the MNA Sub-Stack and NASL 
    is updated based on the number of LSEs after the LSE with P flag.
    </t>
        
        <figure anchor="ure-ioam-encapsulation-in-mpls-header-e2e">
          <name>Example MNA Sub-Stack for E2E IOAM</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
 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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Label                                | TC  |S|  TTL          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  MNA Label (bSPL value TBA1)          | TC  |S|  TTL          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Opcode=2   | Flag-Based NAIs         |1|E2E|S| Res |U|NASL=0 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Packet as shown in Figure 1                    |
 .                                                               .
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>The E2E IOAM-Data-Fields carry the Option-Type(s) that
    require processing on the encapsulating and decapsulating nodes only.
    The IOAM Option-Type carried can be IOAM Edge-To-Edge
    Option-Type (value 3) defined in <xref target="RFC9197" format="default"/>
    as well as Direct Export (DEX) Option-Type (value 4) defined 
    in <xref target="RFC9326" format="default"/>.
    The E2E IOAM-Data-Fields SHOULD NOT carry any IOAM Option-Type that
    require IOAM processing on the intermediate nodes as it will
    not be processed by them since IHS scope is set to "I2E, value 0x0".</t>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>Procedure for Edge-To-Edge IOAM Network Action</name>
        <t>
    The E2E IOAM Network Action procedure is summarized as following:</t>
        <ul spacing="normal">
          <li>
    The encapsulating node inserts an MNA Sub-Stack with the MNA Label (bSPL value TBA1) with the Post-Stack Network Action Indicator (P flag)
    set to "1" and IHS scope set to "I2E, value 0x0" and one or more IOAM-Data-Fields in the Post-Stack Network Action in the MPLS packet.</li>
          <li>The intermediate nodes do not process IOAM-Data-Fields.</li>
          <li>The penultimate node MUST NOT remove the MNA Sub-Stack from the MPLS header so that the MNA Sub-Stack is received at the decapsulating node. 
          </li>
          <li>The decapsulating node MAY punt the IOAM data from the packet with the receive timestamp  
    to the slow path for IOAM-Data-Fields processing.  
    The receive timestamp is required by the various 
    E2E OAM use-cases, including streaming telemetry. 
    Note that the packet is not necessarily punted to the control-plane.</li>
          <li>The decapsulating node processes the IOAM-Data-Fields using the
    procedures defined in <xref target="RFC9197" format="default"/>.  An example of IOAM
    processing is to export the IOAM-Data-Fields, send IOAM-Data-Fields via streaming
    telemetry, etc.</li>
          <li>The decapsulating node MUST remove the Post-Stack Network Action with IOAM-Data-Fields
    from the received packet. The decapsulated packet is forwarded 
    downstream or terminated locally similar to the regular data packets.</li>
        </ul>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Hop-By-Hop IOAM Network Action</name>
      <section anchor="sect-5.1" numbered="true" toc="default">
        <name>MNA Sub-Stack for Hop-By-Hop IOAM</name>
        <t>
    The IHS scope 
    is set to "HBH, value 0x1" to indicate the scope of HBH IOAM-Data-Fields in the MNA Sub-Stack as shown in Figure 3.
    Note that there may be additional Network Action (NA) LSEs added in the MNA Sub-Stack and NASL 
    is updated based on the number of LSEs after the LSE with P flag. </t>
        <figure anchor="ure-ioam-encapsulation-in-mpls-header-1">
          <name>Example MNA Sub-Stack for HBH IOAM</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
 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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Label                                | TC  |S|  TTL          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  MNA Label (bSPL value TBA1)          | TC  |S|  TTL          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Opcode=2   | Flag-Based NAIs         |1|HBH|S| Res |U|NASL=0 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 .                                                               .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                Packet as shown in Figure 1                    |
 .                                                               .
 +---------------------------------------------------------------+
]]></artwork>
        </figure>
        <t>The HBH IOAM-Data-Fields carry the Option-Type(s) that require
    processing at the intermediate and/or encapsulating and decapsulating nodes.
    The IOAM Option-Type carried can be IOAM
    Pre-allocated Trace Option-Type (value 0), IOAM Incremental Trace Option-Type (value 1) 
    and IOAM Proof of Transit (POT) Option-Type (value 2), and Edge-To-Edge
    Option-Type (value 3) defined in <xref target="RFC9197" format="default"/> as well as 
    Direct Export (DEX) Option-Type (value 4) defined 
    in <xref target="RFC9326" format="default"/>.</t> 
      </section>

      <section anchor="sect-5.2" numbered="true" toc="default">
        <name>Procedure for Hop-By-Hop IOAM Network Action</name>
        <t>
    The Hop-By-Hop IOAM Network Action procedure is summarized as following:</t>
        <ul spacing="normal">
          <li>
    The encapsulating node inserts an MNA Sub-Stack containing MNA Label (bSPL value TBA1) with the Post-Stack Network Action 
    Indicator (P flag) set to "1" and IHS scope set to "HBH, value 0x1" 
    and one or more IOAM-Data-Fields in the Post-Stack Network Action in the MPLS packet.</li>
          <li>The intermediate node enabled with HBH IOAM function
    processes the data packet including the IOAM-Data-Fields as defined in 
    <xref target="RFC9197" format="default"/>  and <xref target="RFC9326" format="default"/>
    when the node recognizes the HBH scope in the MNA Sub-Stack.</li>
          <li>The intermediate node MAY punt the IOAM data from the packet with the receive timestamp  
    to the slow path for IOAM-Data-Fields processing when the node recognizes the HBH scope.  
    The receive timestamp is required by the various 
    HBH OAM use-cases, including streaming telemetry. 
    Note that the packet is not necessarily punted to the control-plane.</li>
          <li>The intermediate node forwards the data packet downstream.</li>
          <li>The processing on the penultimate node is same as E2E case.</li>
          <li>The processing on the decapsulating node is same as E2E case.</li>
        </ul>
      </section>

      <section anchor="sect-5.3" numbered="true" toc="default">
        <name>Hop-By-Hop and Edge-To-Edge IOAM Network Actions </name>
    <t>Both HBH and E2E IOAM NAs may be added in an MNA Sub-Stack.
    In this case, the HBH IOAM NAs MUST be added after the BOS and before the E2E IOAM NAs.
    When an intermediate node that processes the HBH IOAM NAs, 
    encounters the first E2E IOAM NA, it will stop processing of the E2E NA.</t>
    </section>

    </section>
    <section anchor="sect-6.0" numbered="true" toc="default">
        <name>Select IOAM Network Action</name>
        <t>
    The procedure for carrying the IOAM NAs for Select Scope is the same as HBH Scope IOAM except 
    the IHS scope is set to "Select, value 0x2".
    In this case, only the select nodes will process the IOAM-Data-Fields.
        </t>
    </section>

    <section anchor="sect-7" numbered="true" toc="default">
      <name>Considerations for IOAM</name>
      <section anchor="sect-7.1" numbered="true" toc="default">
        <name>Considerations for ECMP</name>
        <t>
    The encapsulating node needs to make sure the IOAM-Data-Fields do
    not start with a well-known IP Version Number (e.g. 0x4 for IPv4 and
    0x6 for IPv6) as that can alter the hashing function for ECMP that uses
    the IP header.  This is achieved by using the first nibble NNNN in the Top Header 
    with a different IP Version Number (value TBA3 to be allocated by IANA or 0001b for G-ACH) after the MPLS label stack.</t>
      </section>
      <section anchor="sect-7.2" numbered="true" toc="default">
        <name>Node Capability</name>
        <t>
    The decapsulating node that has to remove the IOAM-Data-Fields
    and perform the IOAM function may not be capable of
    supporting it.  The encapsulating node needs to know if the
    decapsulating node can support the IOAM function.  The signaling
    extension for this capability exchange is outside the scope of this
    document.</t>
        <t>The intermediate node that is not capable of supporting the IOAM functions
    defined in this document, can simply skip the IOAM processing.</t>
    <t>The node that does not recognize the MNA Label received at the top of the label stack will drop the packet.</t>
      </section>
      <section anchor="sect-7.3" numbered="true" toc="default">
        <name>Nested MPLS Encapsulation</name>
   <t>
   When a packet is received with MPLS Encapsulated IOAM Network Action, the nested MPLS
   encapsulating node that supports a different IOAM Network Action, the node MUST add
   a new MNA Label with Sub-Stack with the supported IOAM Post-Stack Network Action as part of the new MPLS encapsulation.
   </t>

       </section>
    </section>
    <section anchor="sect-8" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
    The security considerations of IOAM in general are discussed in
    <xref target="RFC9197" format="default"/> and apply to the 
    procedure defined in this document.</t>
      <t>IOAM is considered a "per domain" feature, where one or several operators 
    decide on configuring IOAM according to their needs.  
    IOAM is intended for deployment in limited
    domains <xref target="RFC8799" format="default"/>.  As such, it assumes that a node involved in IOAM 
    operation has previously verified the integrity of the path.
    Still, operators need to properly secure the IOAM
    domain to avoid malicious configuration and use, which could include
    injecting malicious IOAM packets into the domain.</t>
    </section>
    <section anchor="sect-9" numbered="true" toc="default">
      <name>IANA Considerations</name>
     <t>
     The PS-NA-OPCODE for IOAM is allocated from the "Post-Stack Network Action" registry.
    </t>


     <table anchor="iana-nh-type-tbl" align="center">
       <name>Post-Stack Network Action Opcode</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="center">Name</th>
            <th align="center">Description</th>
            <th align="center">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
        <td align="left">TBA2</td>
            <td align="center">IOAM</td>
            <td align="center">In Situ OAM</td>
            <td align="center">This document</td>
          </tr>
        </tbody>
     </table>


    </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="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>

        <reference anchor="RFC9326" target="https://www.rfc-editor.org/info/rfc9326" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9326.xml">
          <front>
            <title>In Situ Operations, Administration, and Maintenance OAM Direct Exporting</title>
            <author fullname="Haoyu Song">
              <organization>Futurewei</organization>
            </author>
            <author fullname="Barak Gafni">
              <organization>Nvidia</organization>
            </author>
            <author fullname="Frank Brockners">
              <organization>Cisco</organization>
            </author>
            <author fullname="Shwetha Bhandari">
              <organization>Thoughtspot</organization>
            </author>
            <author fullname="Tal Mizrahi">
              <organization>Huawei</organization>
            </author>
            <date month="November" year="2022"/>
          </front>
          <seriesInfo name="RFC" value="9326"/>
        </reference>

        <reference anchor="RFC9197" target="https://www.rfc-editor.org/info/rfc9197" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml">
          <front>
            <title>Data Fields for In Situ Operations, Administration, and Maintenance</title>
            <author fullname="Frank Brockners">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Shwetha Bhandari">
              <organization>Thoughtspot</organization>
            </author>
            <author fullname="Tal Mizrahi">
              <organization>Huawei</organization>
            </author>
            <date month="May" year="2022"/>
          </front>
          <seriesInfo name="RFC" value="9197"/>
        </reference>

    <reference anchor="I-D.ietf-mpls-mna-hdr" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mpls-mna-hdr.xml" target="https://www.ietf.org/archive/id/draft-ietf-mpls-mna-hdr-01.txt">
          <front>
            <title>MPLS Network Action Sub-Stack Solution</title>
            <author fullname="Jaganbabu Rajamanickam" role="editor" >
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Rakesh Gandhi" role="editor">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Royi Zigler" role="editor" >
              <organization>Broadcom</organization>
            </author>
            <author fullname="Haoyu Song" role="editor">
              <organization>Futurewei Technologies</organization>
            </author>
           <author fullname="Kireeti Kompella" role="editor">
             <organization>Juniper Networks</organization>
           </author>
            <date month="March" year="2023"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mpls-mna-hdr-01"/>
        </reference>

    <reference anchor="I-D.jags-mpls-ps-mna-hdr" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.jags-mpls-ps-mna-hdr.xml" target="https://www.ietf.org/archive/id/draft-jags-mpls-ps-mna-hdr-00.txt">
          <front>
            <title>Post-Stack MPLS Network Action (MNA) Solution</title>
            <author fullname="Jaganbabu Rajamanickam" role="editor" >
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Rakesh Gandhi" role="editor">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Royi Zigler" >
              <organization>Broadcom</organization>
            </author>
            <author fullname="Tony Li">
              <organization>Juniper Networks</organization>
            </author>
           <author fullname="Jie Dong">
             <organization>Juawei Technologies</organization>
           </author>
            <date month="March" year="2023"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jags-mpls-ps-mna-hdr-00"/>
        </reference>

      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="RFC8799" target="https://www.rfc-editor.org/info/rfc8799" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8799.xml">
          <front>
            <title>Limited Domains and Internet Protocols</title>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization/>
            </author>
            <author initials="B." surname="Liu" fullname="B. Liu">
              <organization/>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="RFC" value="8799"/>
          <seriesInfo name="DOI" value="10.17487/RFC8799"/>
      </reference>
      </references>

    </references>

    <section numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>
    The authors would like to thank Patrick Khordoc, Sagar Soni, Shwetha Bhandari, Clarence Filsfils, and Vengada Prasad
    Govindan for the discussions on IOAM.  The authors would also like to
    thank Tarek Saad, Loa Andersson, Greg Mirsky, Stewart Bryant, Xiao Min, Jaganbabu Rajamanickam, and Cheng Li for providing many
    useful comments. The authors would also like to thank Mach Chen, 
    Andrew Malis, Matthew Bocci, and Nick Delregno for the MPLS-RT reviews of the early version of the draft.</t>
    </section>

    <section numbered="false" title="Contributors">
      <t>The following people have substantially contributed to this
      document:</t>

        <artwork><![CDATA[Zafar Ali
Cisco Systems, Inc.
Email: zali@cisco.com


Voitek Kozak
Comcast
Email: Voitek_Kozak@comcast.com

]]></artwork>
    </section>
  </back>
</rfc>
