<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" docName="draft-mb-mpls-ioam-dex-04" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.6.0 -->
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<front>
    <title abbrev="IOAM-DEX Over MNA">Supporting In-Situ OAM Direct Export Using MPLS Network Actions</title>
    <seriesInfo name="Internet-Draft" value="draft-mb-mpls-ioam-dex-04"/>
    
    <author initials="G." surname="Mirsky" fullname="Greg Mirsky">
      <organization>Ericsson</organization>
      <address>
        <email>gregimirsky@gmail.com</email>
      </address>
    </author>
    
          <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
      <organization>Orange</organization>
      <address>
        <postal>
          <street>35000 Rennes</street>
    <city/>
          <code/>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    
    <author initials="T." surname="Li" fullname="Tony Li">
      <organization>Juniper Networks</organization>
      <address>
        <email>tony.li@tony.li</email>
      </address>
    </author>
    
    <date year="2023"/>
    
    <area>Routing</area>
    <workgroup>MPLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>IOAM</keyword>
    <keyword>MPLS Network Action</keyword>
    <abstract>
      <t>
In-Situ Operations, Administration, and Maintenance  (IOAM), defined in RFC 9197,
is an on-path telemetry method to collect and transport the operational state
and telemetry information that can be used to calculate various performance metrics.
IOAM Direct Export (IOAM-DEX) is one 
of the IOAM Option types, in which the operational state and telemetry
   information are collected according to the specified profile and exported
   in a manner and format defined by a local policy.
MPLS Network Actions (MNA) techniques are meant to indicate actions to be performed on any combination of
Label Switched Paths (LSPs), MPLS packets, and the node itself, and also to transfer data needed for these actions.
This document explores the on-path operational state, and telemetry information
can be collected using IOAM-DEX Option in combination with MNA.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
In-Situ OAM (IOAM) <xref target="RFC9197"/> is an on-path telemetry method to collect and transport the operational state
and telemetry information that can be used to calculate various performance metrics.
Several IOAM Option types (e.g., Pre-allocated and Incremental) use the user packet to collect the operational state
and telemetry information. Such a mechanism transports the collected information to an IOAM decapsulating
node (typically located at the edge of the IOAM domain within the data packet).
IOAM Direct Export (IOAM-DEX) <xref target="RFC9326"/> is
an IOAM Option type. In IOAM-DEX, the operational state and telemetry
   information are collected according to the specified profile and exported
   in a manner and format defined by a local policy.
MPLS Network Actions (MNA) techniques <xref target="I-D.ietf-mpls-mna-fwk"/>
indicate actions to be performed on any combination of
Label Switched Paths (LSPs), MPLS packets, the node itself,
and also allow for the transfer of data needed for these actions.
</t>
<t>
This document describes how MNA can be used for collecting on-path operational state
and telemetry information using IOAM-DEX Option.
Specifying the mechanism of exporting collected information is outside the scope of this document.  
</t>

      </section>
      
      <section numbered="true" toc="default">
        <name>Conventions Used in this Document</name>
    
         <section title="Acronyms">

          <t>IOAM:          In-Situ OAM</t>
          <t>IOAM-DEX:          IOAM Direct Export</t>
          <t>IOAM-DEX-MNA: IOAM Direct Export in MPLS Network Action</t>
          <t>ISD:                 In-Stack Data</t>
          <t>LSP:               Label Switched Path</t>
          <t>LSE:               Label Stack Element</t>
           <t>MPLS:          Multiprotocol Label Switching</t>
            <t>MNA:          MPLS Network Action</t>
            <t>NAI:             Network Action Indicator</t>
         </section>    
         
        <section numbered="true" toc="default">
          <name>Requirements Language</name>
          <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
   NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
   "MAY", and "OPTIONAL" in this document are to be interpreted as
   described in BCP 14 <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>
    
    <section anchor="ioam-trace-option-application" numbered="true" toc="default">
      <name>Applicability of IOAM Option Types in an MPLS Network</name>
      <t>
Pre-allocated, Incremental, and Edge-to-Edge IOAM Option types <xref target="RFC9197"/> use user packets to collect and transport
the operational state and telemetry information. In some environments, for example, data center networks, this technique
is useful as the available bandwidth and the use of jumbo frames can accommodate the increase of the packet payload. But for
other use cases in which network resources are closely controlled, the use of in-band channels for collecting and transporting
the telemetry information may noticeably decrease the cost-efficiency of network operations. Although the operational state and
telemetry information are essential for network automation (Section 4 of <xref target="RFC8969"/>),
its delivery is not as critical as user packets. As such,
collecting and transporting the operational state and telemetry information out-of-band using the management plane
is a viable option for some environments. IOAM-DEX <xref target="RFC9326"/> is used to collect IOAM data
defined in <xref target="RFC9197"/>. The processing and transport of the collected information are controlled by a local policy which
is outside the scope of this specification. The performance considerations discussed in Section 5 of <xref target="RFC9326"/> are applicable here. 
</t>
</section>

<section anchor="ioam-dex-mpls-sec" numbered="true" toc="default">
<name>Realization of IOAM-DEX as an MPLS Network Action</name>

<section anchor="ioam-dex-sec" numbered="true" toc="default">
<name>IOAM-DEX Format for an MPLS Network</name>
<t>
<xref target="I-D.ietf-mpls-mna-usecases"/> recognizes the importance of IOAM in MPLS networks
and lists it as one of the use cases that might be supported using MNA techniques.
<xref target="I-D.ietf-mpls-mna-fwk"/> defines the architectural elements that compose MNA.
This document uses all the elements of the IOAM-DEX Option-Type format
defined in <xref target="RFC9326"/> to support IOAM-DEX in an MPLS network using
MPLS Network Action (MNA) framework <xref target="I-D.ietf-mpls-mna-fwk"/> and architecture as in-stack data (ISD) MNA
<xref target="I-D.ietf-mpls-mna-hdr"/>.
The format of IOAM-DEX in MNA is shown in <xref target="ioam-dex-fig"/>. 
</t>
 <figure anchor="ioam-dex-fig">
   <name>IOAM Direct Export Option Type Format in an MPLS Network Action Framework</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|         Namespace-ID          |    Resv   |S|     Flags     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|            IOAM-Trace-Type-MNA            |S|O|R| Ext-Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~1|  Extended IOAM-Trace-Type-MNA (Optional)  |S|     Resv      ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|           Flow ID MNA (Optional)          |S|     Resv      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|       Sequence Number MNA (Optional)      |S|     Resv      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
</figure>
<t>
Where fields are defined as follows:
</t>
<ul spacing="normal">
<li>Namespace-ID is a 16-bit identifier of the IOAM Namespace, as defined in <xref target="RFC9197"/>.</li>
<li>S is a one-bit the Bottom of Stack <xref target="RFC3032"/>.</li>
<li>Flags is an eight-bit field comprised of eight one-bit subfields. The subfields in the Flags field are
allocated by IANA, as defined in Section 4.2 of <xref target="RFC9326"/>.</li>
<li>IOAM-Trace-Type-MNA is a 22-bit field. The interpretation of bit positions in the IOAM-Trace-Type-MNA is as specified in
IANA's IOAM Trace-Type registry <xref target="IANA-IOAM-Trace-Type"/> from Bit 0 through Bit 21.</li>
<li>O is the one-bit flag that is identical to the interpretation of Bit 22 variable-length Opaque State Snapshot
in IANA's IOAM Trace-Type registry <xref target="IANA-IOAM-Trace-Type"/>.</li>
<!--
<li>E is a one-bit flag identical to the interpretation of Bit 23 Reserved
in IANA's IOAM Trace-Type registry <xref target="IANA-IOAM-Trace-Type"/>. E flag can be used to indicate
the presence of the Extended IOAM-Trace-Type-MNA field in the next Label Stack Element (LSE).</li>
-->
<li>R (Reserved) is a one-bit flag. It MUST be zeroed on the transmission and ignored on receipt.
Similarly to <xref target="RFC9197"/>, it is reserved to allow for future extensions of the IOAM-Trace-Type-MNA bit field.</li>
<li>Ext-Flags is a six-bit field comprised of six one-bit subfields. The allocation of
the subfields in the Ext-Flags field is according to Section 4.3 of <xref target="RFC9326"/>. The allocated flags indicate the presence of
the optional Flow ID and/or Sequence Number fields in the IOAM-DEX-MNA header.
<xref target="ext-flag-fig"/> displays the detailed format of the Ext-Flags field.</li>
<li>Extended IOAM-Trace-Type-MNA is a 22-bit field. The interpretation of bit positions is according to IANA's IOAM Trace-Type registry.
An IOAM-DEX-MNA encoding MAY include none, one, or more LSEs with the Extended IOAM-Trace-Type-MNA field.</li>

<li>Flow ID MNA is an optional 22-bit field. The semantics of the Flow ID MNA field is
as of the Flow ID field defined in Section 3.2 of <xref target="RFC9326"/>.</li>
<li> Sequence Number - is an optional 22-bit field. The semantics of the Sequence Number MNA field is
as of the Sequence Number field defined in Section 3.2 of <xref target="RFC9326"/>.</li>
<li>Resv fields MUST be zeroed on transmit and ignored on receipt.</li>
</ul>

<figure anchor="ext-flag-fig">
   <name>Ext-Flags Field Format</name>
  <artwork name="" type="" align="left" alt=""><![CDATA[    
 0 1 2 3 4 5
+-+-+-+-+-+-+
|F|S|U|U|U|U|
+-+-+-+-+-+-+
]]></artwork>
</figure>
<t>Where fields are defined as follows:</t>
<ul spacing="normal">
<li>F - one-bit flag. When the flag is set to 1, it indicates the presence of the Flow ID field in the IOAM-DEX-MNA header.</li>
<li>S - one-bit flag. When the flag is set to 1, it indicates the presence of the Sequence Number field in the IOAM-DEX-MNA header.</li>
<li>U - unassigned one-bit flag. It MUST be zeroed on transmission and the value MUST be ignored upon receipt.</li>
</ul>
</section>

<section anchor="ioam-mpls-dex-isd-sec" numbered="true" toc="default">
<name>IOAM-DEX-MNA Encoding as In-Stack Data MPLS Network Action</name>
      <t>
      To support the direct export of the operational state and telemetry information,
      the IOAM-DEX-MNA blob (binary large object), as shown in <xref target="ioam-dex-fig"/>
      can be placed as part of the ISD block in an MPLS label stack according to the MNA encoding principles
      defined in <xref target="I-D.ietf-mpls-mna-hdr"/>. 
    Using the IHS field, the IOAM-DEX-MNA can be performed in Hop-by-Hop,
      Ingress-to-Egress, or Select modes <xref target="I-D.ietf-mpls-mna-fwk"/> of collecting
      the operational state and telemetry information, as MNA Opcode (<xref target="ioam-dex-mna-option-fig"/>).
     Policies controlling the processing of the collected operational state and telemetry information,
     and its transport are outside the scope of this document.
      </t>

   <figure anchor="ioam-dex-mna-option-fig">
   <name>An Example of IOAM-DEX Encapsulation as an MNA Opcode</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               MNA bSPL                | TC  |S|    TTL        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opcode = TBA1 |        Data           |P|IHS|S| Res |U|  NASL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                         IOAM-DEX-MNA                          ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>

<t>Where the enclosed elements are defined as follows:</t>
<ul spacing="normal">
<li>MNA bSPL is a base Special Purpose Label assigned by IANA per the request in <xref target="I-D.ietf-mpls-mna-hdr"/>.</li>
<li>S - the Bottom of Stack field <xref target="RFC3032"/>.</li>
<li>P, IHS, Res, U, and NASL fields are as specified in Section 4.2 of <xref target="I-D.ietf-mpls-mna-hdr"/>.</li>
<li>NASL - number of LSEs that compose the IOAM-DEX-MNA blob.</li>
<li>Opcode is MNA-IOAM-DEX opcode (TBA1) assigned by IANA <xref target="iana-option-consider"/>.</li>
<li>IOAM-DEX-MNA - IOAM Direct Export in MPLS Network Action encoding</li>
      </ul>
</section>
</section>
    
    <section anchor="iana-consider" numbered="true" toc="default">
    <name>IANA Considerations</name>
      <section anchor="iana-option-consider" numbered="true" toc="default">
      <name>IOAM-DEX-MNA as an MPLS Network Action Opcode</name>
      <t>IANA is requested to assign an IOAM-DEX-MNA codepoint (TBA1) from its Network Action Opcodes registry
    (creation requested in <xref target="I-D.ietf-mpls-mna-hdr"/>)
      as specified in <xref target="iana-ioam-dex-mna-option-tbl"/>.</t>
      
          <table anchor="iana-ioam-dex-mna-option-tbl" align="center">
          <name>IOAM-DEX as MPLS Network Action Opcode</name>
          <thead>
            <tr>
              <th align="left">Opcode</th>
              <th align="center">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBA1</td>
              <td align="center">IOAM-DEX as MPLS Network Action Indicator</td>
              <td align="left">This&nbsp;document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
 Security considerations discussed in <xref target="RFC9197"/>, <xref target="RFC9326"/>, and
 <xref target="I-D.ietf-mpls-mna-fwk"/> apply to this document. 
      </t>
    </section>
    
        <section numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>
 TBD
      </t>
    </section>
    
  </middle>
  <back>
  <references>
  <name>References</name>
  <references>
        <name>Normative References</name>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml"/>
      

<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-mpls-mna-fwk.xml"/>

<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9326.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml"/>
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-mpls-mna-hdr.xml"/>

    </references>
    
    <references>
    <name>Informational References</name>
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-mpls-mna-usecases.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8969.xml"/>
<reference anchor="IANA-IOAM-Trace-Type" target="https://www.iana.org/assignments/ioam/ioam.xhtml#trace-type">
        <front>
            <title>IOAM Trace-Type</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        
          </references>
    
    </references>

  </back>
</rfc>
