<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY bom    "&#65279;">
  <!ENTITY wd     "&#x2011;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
     docName="draft-li-ippm-ioam-common-encap-procedures-00"
     category="std" submissionType="IETF" consensus="true" version="3"
     xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="IOAM Common Encap Procedures">Common Procedures for Encapsulating IOAM Data Fields in Transport Protocols</title>
    <seriesInfo name="Internet-Draft" value="draft-li-ippm-ioam-common-encap-procedures-00"/>

    <author fullname="Zhiqiang Li" initials="Z." surname="Li">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>lizhiqiangyjy@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>duzongpeng@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Junjie Wang" initials="J." surname="Wang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>wangjj@centec.com</email>
      </address>
    </author>
    <author fullname="Wei Cheng" initials="W." surname="Cheng">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>chengw@centec.com</email>
      </address>
    </author>
    <author fullname="Guoying Zhang" initials="G." surname="Zhang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>zhanggy@centec.com</email>
      </address>
    </author>
    <author fullname="Xun Sun" initials="X." surname="Sun">
      <organization>Inesa</organization>
      <address>
        <postal><city>Shanghai</city><code>200030</code>
        <country>China</country></postal>
        <email>sunxun@inesa.com</email>
      </address>
    </author>
    <author fullname="Chunhao Zhao" initials="C." surname="Zhao">
      <organization>SAIA</organization>
      <address>
        <postal><city>Shanghai</city><code>200125</code>
        <country>China</country></postal>
        <email>chunhao.zhao@sh-aia.com</email>
      </address>
    </author>

    <date year="2026" month="July" day="4"/>
    <area>TSV</area>
    <workgroup>IPPM</workgroup>
    <keyword>IOAM</keyword>
    <keyword>encapsulation</keyword>
    <keyword>insertion point</keyword>
    <keyword>telemetry</keyword>
    <keyword>IPv6</keyword>
    <keyword>NSH</keyword>
    <abstract>
      <t>In Situ Operations, Administration, and Maintenance (IOAM) enables on-path telemetry by inserting operational metadata into data packets as they traverse a network path. IOAM Data-Fields, as defined in RFC 9197, are designed to be independent of the encapsulating transport protocol. However, the procedures for inserting, updating, and removing IOAM Data-Fields are currently specified separately for each transport protocol (e.g., IPv6, NSH, GRE, Geneve), leading to redundant specification effort and inconsistent implementation behavior.</t>
      <t>This document defines a set of common encapsulation procedures for IOAM Data-Fields that are applicable across multiple transport protocols. The insertion point for IOAM Data-Fields is expressed as a configurable byte offset from a well-defined reference position in the encapsulating header, enabling a uniform insertion procedure that does not require protocol-specific parsing logic. The document specifies the general steps for identifying the insertion point, validating transport-layer constraints, performing the insertion of IOAM Option-Types, and updating affected header fields to maintain protocol compliance.</t>
    </abstract>
  </front>

  <middle>
<section anchor="introduction" numbered="true" toc="include"><name>Introduction</name>
<t>In Situ Operations, Administration, and Maintenance (IOAM) <xref target="RFC9197"/> collects telemetry information by embedding IOAM Data-Fields into live data packets while they traverse a network path. The IOAM Data-Fields themselves are defined independently of any specific transport protocol. This design allows IOAM to be carried within various encapsulations such as IPv6 <xref target="RFC9486"/>, NSH <xref target="RFC9452"/>, GRE, and Geneve.</t>
<t>Each transport protocol that carries IOAM defines its own encapsulation specification, describing how IOAM Option-Types map into that protocol's extension mechanisms. While the data field definitions remain the same across protocols, the encapsulation documents each independently describe similar operational steps: how to identify where in the packet IOAM data should be placed, how to expand the packet to accommodate the additional data, and how to update the enclosing headers to reflect the modified packet structure.</t>
<t>This redundancy creates practical challenges. First, implementations supporting multiple transport protocols must encode logically equivalent procedures in protocol-specific code paths, increasing development and verification effort. Second, the absence of a shared procedural framework can lead to inconsistent behavior across encapsulations, particularly in areas such as Maximum Transmission Unit (MTU) handling, header field updates, and error handling. Third, as new transport protocols emerge, the effort required to specify IOAM encapsulation for each protocol remains unnecessarily high.</t>
<t>This document addresses these challenges by defining a set of common encapsulation procedures for IOAM Data-Fields. The central concept is that the insertion point for IOAM data within a packet is expressed as a configurable byte offset from a well-defined reference position in the encapsulating header. This approach enables a single encapsulation procedure to handle multiple transport protocols: the protocol-specific knowledge is confined to the provisioning of the correct offset value, while the insertion operation itself is uniform across all protocols.</t>
<section anchor="requirements-language" numbered="true" toc="include"><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"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
</section></section>
<section anchor="terminology" numbered="true" toc="include"><name>Terminology</name>
<t>This document uses the IOAM terminology defined in <xref target="RFC9197"/> and <xref target="RFC9378"/>. The following additional terms are used:</t>
<dl><dt>Insertion Point:</dt><dd>The byte position within a packet at which IOAM Data-Fields are to be placed. The insertion point is determined by adding a configured insertion offset to the reference position.</dd>
<dt>Reference Position:</dt><dd>A well-defined, unambiguous byte position within the encapsulating protocol header from which the insertion offset is measured. Typical reference positions include the start of the network-layer (Layer 3) header or the start of a specific extension header.</dd>
<dt>Insertion Offset:</dt><dd>A non-negative integer value, expressed in octets, that specifies the displacement from the reference position to the insertion point. The insertion offset is provisioned per IOAM Encapsulation Profile and depends on the transport protocol in use.</dd>
<dt>Base Header:</dt><dd>The fixed-length portion of the encapsulating protocol header that precedes the area where IOAM Data-Fields can be inserted.</dd>
<dt>Header Consistency Update:</dt><dd>The process of modifying header fields in the encapsulating protocol and any outer encapsulations to accurately reflect the change in packet size and structure resulting from the insertion or removal of IOAM Data-Fields.</dd>
<dt>Transport Constraints:</dt><dd>Protocol-specific limitations that restrict the size, alignment, or placement of IOAM Data-Fields within a given transport protocol.</dd>
<dt>IOAM Encapsulation Profile:</dt><dd>A configuration object that associates a set of flow-matching criteria with the IOAM encapsulation parameters to be applied, including the IOAM Option-Types to insert, the insertion offset, and protocol-specific constraint parameters.</dd></dl>
</section>
<section anchor="scope" numbered="true" toc="include"><name>Scope and Relationship to Existing Specifications</name>
<t>This document is intended to complement, not replace, the existing IOAM encapsulation specifications. <xref target="RFC9197"/> defines the IOAM Data-Fields and their formats. This document does not modify or extend those definitions. <xref target="RFC9378"/> provides deployment guidance for IOAM. This document focuses on encapsulation procedures rather than deployment considerations. <xref target="RFC9617"/> defines a YANG data model for IOAM configuration. The IOAM Encapsulation Profile concept defined in this document is compatible with the configuration structures in <xref target="RFC9617"/>.</t>
<t>Protocol-specific encapsulation documents (e.g., <xref target="RFC9486"/> for IPv6, <xref target="RFC9452"/> for NSH) define how IOAM Option-Types are mapped into specific protocol header structures. This document abstracts the common operational steps shared across those specifications and provides a framework for specifying IOAM encapsulation in future transport protocols.</t>
<t>The common procedures defined in this document are informational for existing encapsulations and normative for future transport protocol encapsulations that choose to reference this document.</t>
</section>
<section anchor="overview" numbered="true" toc="include"><name>Overview of Common Encapsulation Procedures</name>
<t>The process of encapsulating IOAM Data-Fields into a transit packet can be decomposed into the following general steps, regardless of the specific transport protocol:</t>
<ul><li>Step 1 - Flow Matching and Profile Selection: Match the incoming packet against the configured flow-matching criteria and select the associated IOAM Encapsulation Profile, which provides the insertion offset and IOAM Option-Type parameters.</li><li>Step 2 - Insertion Point Calculation: Compute the insertion point as the sum of the reference position and the provisioned insertion offset.</li><li>Step 3 - Constraint Validation: Verify that the IOAM Data-Fields to be inserted satisfy the transport-specific constraints (e.g., maximum option size, alignment requirements, MTU limits).</li><li>Step 4 - Data-Field Insertion: Expand the packet at the computed insertion point and write the IOAM Option-Type header and associated IOAM Data-Fields.</li><li>Step 5 - Header Consistency Update: Update all affected header fields in the encapsulating protocol and any outer encapsulations to reflect the new packet size and structure.</li><li>Step 6 - Integrity Verification: Recompute any checksums or integrity fields that cover the modified portions of the packet.</li></ul>
</section>
<section anchor="insertion-point-provisioning" numbered="true" toc="include"><name>Insertion Point Provisioning</name>
<t>The insertion point for IOAM Data-Fields is not determined through runtime parsing of the transport protocol header. Instead, it is provisioned as part of the IOAM Encapsulation Profile, which is configured on the IOAM encapsulating node. This approach confines all protocol-specific knowledge to the configuration plane, enabling the data plane insertion procedure to operate uniformly across different transport protocols.</t>
<section anchor="ioam-encapsulation-profile" numbered="true" toc="include"><name>IOAM Encapsulation Profile</name>
<t>An IOAM Encapsulation Profile binds the following parameters together: (a) Flow-matching criteria compatible with the ACL-based flow identification defined in <xref target="RFC9617"/>; (b) IOAM Option-Type parameters as defined in <xref target="RFC9197"/> and <xref target="RFC9326"/>; (c) Insertion offset; (d) Transport constraint parameters.</t>
<t>The IOAM encapsulating node MUST be provisioned with at least one IOAM Encapsulation Profile for each combination of transport protocol type and IOAM Option-Type that it is configured to support.</t>
</section>
<section anchor="insertion-offset-provisioning" numbered="true" toc="include"><name>Insertion Offset Provisioning</name>
<t>The insertion offset value is determined by the network operator based on the structure of the encapsulating transport protocol. The operator MUST ensure that the provisioned insertion offset points to a location within the legitimate extension area of the transport protocol. Mechanisms for validating the correctness of provisioned offset values are described in the Security Considerations.</t>
</section></section>
<section anchor="insertion-point-calculation" numbered="true" toc="include"><name>Insertion Point Calculation</name>
<t>At runtime, when a packet matches the flow-matching criteria of an IOAM Encapsulation Profile, the encapsulating node computes the insertion point: Insertion_Point = Reference_Position + Insertion_Offset. The reference position is typically the byte position of the start of the Layer 3 (network layer) header. For tunneled packets, the reference position corresponds to the start of the outermost encapsulating header that is relevant to the IOAM-Domain.</t>
<t>The insertion offset MUST satisfy the following requirements: (a) it MUST point to a location within the legitimate extension area of the transport protocol; (b) it MUST account for any alignment requirements imposed by the transport protocol (e.g., IPv6 IOAM options require 4-octet alignment as specified in <xref target="RFC9486"/>); (c) it MUST NOT point into the immutable fixed-length portion of the transport header or into the packet payload beyond the transport header's extension area. If the computed insertion point does not satisfy these requirements, the encapsulating node MUST NOT insert IOAM Data-Fields and SHOULD increment an error counter.</t>
</section>
<section anchor="constraint-validation" numbered="true" toc="include"><name>Constraint Validation</name>
<t>Before inserting IOAM Data-Fields, the encapsulating node MUST verify that the insertion will not violate any transport-specific constraints.</t>
<section anchor="size-constraints" numbered="true" toc="include"><name>Size Constraints</name>
<t>The encapsulating node MUST verify that the total size of the IOAM Option-Type header plus the IOAM Data-Fields does not exceed the maximum extension size permitted by the transport protocol. Additionally, the encapsulating node MUST verify that the resulting packet size does not exceed the Path MTU (PMTU) within the IOAM-Domain. If the addition of IOAM Data-Fields would cause the packet to exceed the PMTU, the node MUST NOT insert IOAM and SHOULD maintain counters for packets not instrumented due to MTU constraints.</t>
</section>
<section anchor="alignment-constraints" numbered="true" toc="include"><name>Alignment Constraints</name>
<t>Some transport protocols require optional data fields to be aligned to specific byte boundaries. The encapsulating node MUST insert any necessary padding to satisfy alignment requirements. The padding MUST conform to the padding conventions defined by the transport protocol (e.g., PadN options in IPv6).</t>
</section>
<section anchor="ordering-constraints" numbered="true" toc="include"><name>Ordering Constraints</name>
<t>Some transport protocols impose ordering requirements on optional headers. The encapsulating node MUST ensure that IOAM Data-Fields respect any such requirements. For example, in IPv6, the Hop-by-Hop Options header must be the first extension header following the IPv6 header <xref target="RFC8200"/>.</t>
</section></section>
<section anchor="ioam-data-field-insertion" numbered="true" toc="include"><name>IOAM Data-Field Insertion</name>
<t>Once the insertion point has been computed and constraints have been validated, the encapsulating node performs the actual insertion.</t>
<section anchor="insertion-operation" numbered="true" toc="include"><name>Insertion Operation</name>
<t>(a) Packet Expansion: The packet is expanded at the computed insertion point by the required number of octets. All octets at and following the insertion point are shifted toward the end of the packet. (b) Option-Type Header Write: The IOAM Option-Type header is written at the insertion point, in the format specified by the corresponding encapsulation specification. For EtherType-based encapsulations, a shim header containing the IOAM-Type and Next Protocol fields is written. (c) Data-Field Write: The IOAM Data-Fields are written immediately following the Option-Type header, formatted according to <xref target="RFC9197"/>. For Pre-allocated Trace, the data area is initialized with placeholder values. For Incremental Trace, only the fixed trace header is written; node data is appended by transit nodes. For Direct Export <xref target="RFC9326"/>, the option header triggers export at transit nodes without embedding trace data.</t>
</section>
<section anchor="atomicity" numbered="true" toc="include"><name>Atomicity of Insertion</name>
<t>The insertion operation, together with the header consistency update, MUST be performed atomically from the perspective of packet forwarding. A partially modified packet MUST NOT be forwarded. If the insertion fails, the original unmodified packet MUST be forwarded without IOAM Data-Fields, and the failure SHOULD be logged or counted.</t>
</section></section>
<section anchor="header-consistency-update" numbered="true" toc="include"><name>Header Consistency Update</name>
<t>After IOAM Data-Fields have been inserted, the enclosing protocol headers must be updated to reflect the modified packet structure. The encapsulating node MUST update all length fields affected by the insertion (IPv6 Payload Length and Hdr Ext Len for IPv6; NSH Length field for NSH; outer IP Total Length for GRE; UDP Length plus tunnel-specific length for UDP-encapsulated protocols). Length fields in any outer encapsulation layers MUST also be updated.</t>
<t>The encapsulating node MUST recompute checksums covering modified packet portions. If IOAM is within a UDP-encapsulated protocol and the UDP checksum is non-zero, it MUST be recomputed. If the IOAM Data-Fields include a Checksum Complement field <xref target="RFC9197"/>, the node MAY perform a checksum-neutral update. If an outer IPv4 header Total Length was updated, the IPv4 header checksum MUST be recomputed.</t>
<t>When IOAM Data-Fields are inserted using a shim header or new extension header, the encapsulating node MUST update the relevant next-header or next-protocol pointers. For IPv6, the Next Header field of the preceding header MUST point to the new extension header. For NSH, the Next Protocol field MUST indicate IOAM. For EtherType-based shim headers (GRE, Geneve), the Protocol Type or EtherType field MUST be set to the IOAM shim value, and the IOAM shim's Next Protocol field MUST indicate the original inner protocol.</t>
</section>
<section anchor="ioam-data-field-removal" numbered="true" toc="include"><name>IOAM Data-Field Removal</name>
<t>The IOAM decapsulating node reverses the encapsulation process: (1) identify the IOAM Data-Fields based on protocol-specific indicators; (2) extract and process the IOAM Data-Fields; (3) remove the IOAM Option-Type header, Data-Fields, and associated padding, shifting subsequent octets toward the beginning of the packet; (4) perform the header consistency update in reverse: decrement length fields, recompute checksums, and restore next-header/protocol pointers. The removal MUST be performed atomically. IOAM-Domain boundary nodes MUST remove IOAM Data-Fields before forwarding packets outside the IOAM-Domain <xref target="RFC9378"/>.</t>
</section>
<section anchor="applicability-to-protocols" numbered="true" toc="include"><name>Applicability to Existing and Future Protocols</name>
<t>For IPv6 <xref target="RFC9486"/>: reference position is the start of the IPv6 header; insertion offset points to the options area within the Hop-by-Hop or Destination Options header; alignment requirement is 4 octets; maximum option size is 255 octets; header consistency update covers IPv6 Payload Length and Hdr Ext Len.</t>
<t>For NSH <xref target="RFC9452"/>: reference position is the start of the NSH Base Header; insertion offset points past the Service Path Header; IOAM is indicated through the Next Protocol field; header consistency update covers the NSH Length field.</t>
<t>For EtherType-Based Encapsulations (GRE, Geneve): reference position is the start of the outer IP header; insertion offset spans the outer IP header, any UDP header, and the tunnel header; IOAM is indicated through the Protocol Type or EtherType value; header consistency update covers outer IP length fields and any applicable UDP checksum.</t>
<t>When specifying IOAM encapsulation for a new transport protocol, the specification SHOULD reference this document and provide: (a) the reference position for IOAM insertion, (b) the method for indicating IOAM presence in the header chain, (c) protocol-specific size, alignment, or ordering constraints, and (d) the header fields requiring update. This approach enables new encapsulation specifications to be concise.</t>
</section>
<section anchor="security-considerations" numbered="true" toc="include"><name>Security Considerations</name>
<t>The common procedures inherit all security considerations from <xref target="RFC9197"/> and <xref target="RFC9378"/>.</t>
<t>An incorrectly configured insertion offset could cause IOAM data to overwrite critical header fields or payload data, leading to packet corruption, forwarding failures, or information leakage. Implementations MUST validate that the computed insertion point falls within the legitimate extension area before performing insertion. Implementations MUST reject offset configurations that would place IOAM data outside protocol-defined boundaries. Operators SHOULD validate offset configurations in a controlled environment before production deployment.</t>
<t>The procedures in this document MUST only be performed within an IOAM-Domain <xref target="RFC9197"/>. Domain boundary nodes MUST ensure IOAM packets do not leak outside the domain. The filtering requirements in <xref target="RFC9486"/> and <xref target="RFC9378"/> apply to all transport protocols using these procedures.</t>
<t>An attacker influencing IOAM configuration might configure excessively large IOAM Data-Fields or incorrect offsets, causing packet drops or malformed packets. The constraint validation step mitigates this by requiring pre-insertion checks. Because the insertion offset is provisioned through the configuration plane, unauthorized modification could cause widespread packet corruption. Operators MUST protect the configuration channel using authentication and access control. The YANG module security considerations in <xref target="RFC9617"/> apply to IOAM Encapsulation Profile configuration.</t>
</section>
<section anchor="iana-considerations" numbered="true" toc="include"><name>IANA Considerations</name>
<t>This document has no IANA actions. It defines common operational procedures for existing IOAM Data-Fields and Option-Types defined in <xref target="RFC9197"/> and introduces no new protocol identifiers or registry entries.</t>
</section>
  </middle>

  <back>
      <references title="Normative References">
    <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
      <front>
        <title>Key words for use in RFCs to Indicate Requirement Levels</title>
        <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
        <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">
      <front>
        <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
        <author initials="B." surname="Leiba" fullname="Barry Leiba"/>
        <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="RFC9197" target="https://www.rfc-editor.org/info/rfc9197">
      <front>
        <title>Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)</title>
        <author initials="F." surname="Brockners" fullname="Frank Brockners, Ed."/>
        <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari, Ed."/>
        <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi, Ed."/>
        <date year="2022" month="May"/>
      </front>
      <seriesInfo name="RFC" value="9197"/>
      <seriesInfo name="DOI" value="10.17487/RFC9197"/>
    </reference>
    <reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200">
      <front>
        <title>Internet Protocol, Version 6 (IPv6) Specification</title>
        <author initials="S." surname="Deering" fullname="Stephen Deering"/>
        <author initials="R." surname="Hinden" fullname="Robert Hinden"/>
        <date year="2017" month="July"/>
      </front>
      <seriesInfo name="STD" value="86"/>
      <seriesInfo name="RFC" value="8200"/>
      <seriesInfo name="DOI" value="10.17487/RFC8200"/>
    </reference>
    <reference anchor="RFC8300" target="https://www.rfc-editor.org/info/rfc8300">
      <front>
        <title>Network Service Header (NSH)</title>
        <author initials="P." surname="Quinn" fullname="Paul Quinn, Ed."/>
        <author initials="U." surname="Elzur" fullname="Uri Elzur, Ed."/>
        <author initials="C." surname="Pignataro" fullname="Carlos Pignataro, Ed."/>
        <date year="2018" month="January"/>
      </front>
      <seriesInfo name="RFC" value="8300"/>
      <seriesInfo name="DOI" value="10.17487/RFC8300"/>
    </reference>
    <reference anchor="RFC9326" target="https://www.rfc-editor.org/info/rfc9326">
      <front>
        <title>In Situ Operations, Administration, and Maintenance (IOAM) Direct Exporting</title>
        <author initials="H." surname="Song" fullname="Haoyu Song"/>
        <author initials="B." surname="Gafni" fullname="Barak Gafni"/>
        <author initials="F." surname="Brockners" fullname="Frank Brockners"/>
        <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari"/>
        <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi"/>
        <author initials="R." surname="Sivakolundu" fullname="Ramesh Sivakolundu"/>
        <author initials="Z." surname="Li" fullname="Zhiqiang Li"/>
        <author initials="T." surname="Zhou" fullname="Tianran Zhou"/>
        <date year="2022" month="November"/>
      </front>
      <seriesInfo name="RFC" value="9326"/>
      <seriesInfo name="DOI" value="10.17487/RFC9326"/>
    </reference>
    <reference anchor="RFC9378" target="https://www.rfc-editor.org/info/rfc9378">
      <front>
        <title>In Situ Operations, Administration, and Maintenance (IOAM) Deployment</title>
        <author initials="F." surname="Brockners" fullname="Frank Brockners, Ed."/>
        <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari, Ed."/>
        <author initials="D." surname="Bernier" fullname="David Bernier"/>
        <author initials="T." surname="Mizrahi" fullname="Tal Mizrahi, Ed."/>
        <date year="2023" month="April"/>
      </front>
      <seriesInfo name="RFC" value="9378"/>
      <seriesInfo name="DOI" value="10.17487/RFC9378"/>
    </reference>
    <reference anchor="RFC9452" target="https://www.rfc-editor.org/info/rfc9452">
      <front>
        <title>Network Service Header (NSH) Encapsulation for In Situ OAM (IOAM) Data</title>
        <author initials="F." surname="Brockners" fullname="Frank Brockners, Ed."/>
        <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari, Ed."/>
        <date year="2023" month="August"/>
      </front>
      <seriesInfo name="RFC" value="9452"/>
      <seriesInfo name="DOI" value="10.17487/RFC9452"/>
    </reference>
    <reference anchor="RFC9486" target="https://www.rfc-editor.org/info/rfc9486">
      <front>
        <title>IPv6 Options for In Situ Operations, Administration, and Maintenance (IOAM)</title>
        <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari, Ed."/>
        <author initials="F." surname="Brockners" fullname="Frank Brockners, Ed."/>
        <date year="2023" month="September"/>
      </front>
      <seriesInfo name="RFC" value="9486"/>
      <seriesInfo name="DOI" value="10.17487/RFC9486"/>
    </reference>
    <reference anchor="RFC9617" target="https://www.rfc-editor.org/info/rfc9617">
      <front>
        <title>A YANG Data Model for In Situ Operations, Administration, and Maintenance (IOAM)</title>
        <author initials="T." surname="Zhou" fullname="Tianran Zhou, Ed."/>
        <author initials="J." surname="Guichard" fullname="Jeremy Guichard"/>
        <author initials="F." surname="Brockners" fullname="Frank Brockners"/>
        <author initials="S." surname="Raghavan" fullname="Sriram Raghavan"/>
        <date year="2024" month="August"/>
      </front>
      <seriesInfo name="RFC" value="9617"/>
      <seriesInfo name="DOI" value="10.17487/RFC9617"/>
    </reference>
      </references>
      <section anchor="acknowledgements" numbered="false" toc="include">
        <name>Acknowledgements</name>
        <t>The authors would like to thank the members of the IPPM Working Group for their review and feedback. The existing body of IOAM encapsulation specifications, particularly the work by Frank Brockners, Shwetha Bhandari, Tal Mizrahi, and their collaborators, provided the foundation upon which these common procedures are defined.</t>
      </section>
  </back>
</rfc>
