<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zhang-ippm-stamp-mp-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title>Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Multi-path</title>
    <seriesInfo name="Internet-Draft" value="draft-zhang-ippm-stamp-mp-00"/>
    <author initials="L." surname="Zhang" fullname="Li Zhang">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhangli344@huawei.com</email>
      </address>
    </author>
    <author initials="T." surname="Zhou" fullname="Tianran Zhou">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>zhoutianran@huawei.com</email>
      </address>
    </author>
    <author initials="" surname="Gyan Mishra" fullname="Gyan Mishra">
      <organization>Verizon Inc.</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="07"/>
    <area>OPS Area</area>
    <workgroup>IPPM Working Group</workgroup>
    <keyword>STAMP</keyword>
    <keyword>Multi-Path</keyword>
    <abstract>
      <?line 44?>

<t>STAMP is typically used to perform the measurement of one-way and round-trip performance metrics. However, when using active measurement mechanisms in a multi-path topology, the default forwarding behavior is to go through one path. So, it cannot collect the information of all the paths at one time.</t>
      <t>This document extends STAM with a Multi-path TLV to implement the multi-path performance measurement, which can help the operators to know the performance of network comprehensively and efficiently.</t>
    </abstract>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Simple Two-way Active Measurement Protocol (STAMP) <xref target="RFC8762"/> is an active performance measurement test protocol, which enables measurement of both one-way and round-trip performance metrics, like delay, delay variation, and packet loss.
Based on that, <xref target="RFC8972"/> specifies the use of optional extensions that use Type-Length-Value (TLV) encoding，these extensions enhance the STAMP base functions.
<xref target="I-D.gandhi-ippm-stamp-ext-hdr"/> extends STAMP<xref target="RFC8762"/> to reflect any IPv6 options and MPLS Network Action Sub-Stacks for hop-by-hop and edge-to-edge active measurements. In section 4 of <xref target="I-D.gandhi-ippm-stamp-ext-hdr"/>, it provides an example of reflecting IOAM data fields, in which the IPv6 options with IOAM option-types is carried in the STAMP Session-Sender and Session-Reflector test packets.</t>
      <t>However, currently the STAMP is typically used to collect the information of a specific path, when using it in a multi-path topology (there are multiple paths form the source node to the destination node and ECMP, UCMP or other multi-path routing strategy is used.), the default forwarding behavior is to go through one path. 
So, it can’t collect all the path’s information form source node to destination node. An example of active measurement in a multi-path topology is shown as follow:</t>
      <figure anchor="ref-to-fig1">
        <name>A multi-path topology</name>
        <artwork><![CDATA[
                       +------+         +------+
                      /|  N3  |---------|  N5  |\
                     / +------+         +------+ \
+------+    +------+/                             \+------+     +------+
|  N1  |--->|  N2  |                               |  N7  |---->|  N8  |
+------+    +------+\                             /+------+     +------+
  SRC                \ +------+         +------+ /                 DST
                      \|  N4  |-------> |  N6  |/               
                       +------+         +------+
]]></artwork>
      </figure>
      <t>In <xref target="ref-to-fig1"/>, node N1 is the source node, node N8 is the destination node, N2-7 are transit node. Equal-Cost Multiple Path (ECMP) is applied in this topology. So, there are two paths form N1 to N8, one is N1-N2-N3-N5-N7-N8, and the other is N1-N2-N4-N6-N7-N8. When N1 use STAMP to measure the path performance, the test packet is forwarded along one of the paths (for example N1-N2-N4-N6-N7-N8), then the source node just can get one path’s information, however the traffic packets are forwarded in all paths.</t>
      <t>Although the IPv6 flow label and MPLS entropy label can be constructed variously to try to make packets go through all paths, but the hash algorithm cannot ensure that packets can go through all available paths.</t>
      <t>This document extends STAM with a Multi-path TLV to implement the multi-path performance measurement, which can help the operators to know the performance of network comprehensively and efficiently.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The abbreviations used in this document are:</t>
        <t>ECMP: Equal-Cost Multiple Path</t>
        <t>UCMP: Unequal-Cost Multiple Path</t>
        <t>STAMP: Simple Two-Way Active Measurement Protocol</t>
        <t>IOAM: In-band Operation, Administration, and Maintenance</t>
      </section>
    </section>
    <section anchor="multi-path-tlv">
      <name>Multi-path TLV</name>
      <t>This document defines a new TLV in the STAMP test packets:</t>
      <figure anchor="ref-to-fig2">
        <name>Multi-path TLV</name>
        <artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|STAMP TLV Flags|     Type      |           Length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|M|                          Reserved                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>The fields are defined as follows:</t>
      <t>STAMP TLV Flags: An eight-bit field. Its format is specified in <xref target="RFC8972"/>.</t>
      <t>Type: A one-octet field. Need to be allocated by IANA.</t>
      <t>Length: A two-octet field, set equal to the value 4.</t>
      <t>M: A one-bit field, A Session-Sender <bcp14>MUST</bcp14> set the value of M filed to 1 When need to perform measurement on all paths.</t>
    </section>
    <section anchor="multi-path-measurement-procedures">
      <name>Multi-path Measurement Procedures</name>
      <t>This section describes the procedures of session sender, transit node, and reflector.</t>
      <section anchor="session-sender-procedures">
        <name>Session-Sender procedures</name>
        <t>The Session-Sender procedures includes two steps, one is the test packet generation and another is the test packet validation.</t>
        <section anchor="test-packet-generation">
          <name>Test Packet Generation</name>
          <t>The test packet generation procedures could be referred from section 4.2 of <xref target="RFC8762"/>. The session-sender should generate a Multi-path TLV with the M bit set and encapsulate it into the test packet. An example of the format of STAMP Session-Sender test packet with Multi-path TLV in unauthenticated mode is shown in <xref target="ref-to-fig3"/>.</t>
          <figure anchor="ref-to-fig3">
            <name>Format of a STAMP Session-Sender Test Packet with Multi-path TLV in Unauthenticated Mode</name>
            <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Sequence Number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Timestamp                            |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Error Estimate        |             SSID              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                                                               |
   |                         MBZ (28 octets)                       |
   |                                                               |
   |                                                               |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |STAMP TLV Flags|    Type=TBD   |           Length=4            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |1|                          Reserved                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>In order to identify different paths, the Test packet is required to collect the paths’ information. Therefore, the IOAM should be used in combination with STAMP. The Session-sender should insert a an IOAM IPv6 HBH option to the test packet to collect the HBH node information. According to <xref target="I-D.gandhi-ippm-stamp-ext-hdr"/>, the Session-sender also need to add “Reflected IPv6 Option Data” TLV in the test packet with the size of the IOAM data field’s length and the value field in the TLV initialized to zeros.</t>
          <t>In order to perform a round trip for a specific path, the Co-routed Bidirectional Path flag <xref target="I-D.zhang-ippm-stamp-co-routed-path"/> in the Return Path Control Code Sub-TLV of Return Path TLV should be set to 1.</t>
        </section>
        <section anchor="test-packet-analysis">
          <name>Test Packet Analysis</name>
          <t>The test packet analysis node could be a Session-Sender or a Controller.</t>
          <t>According to <xref target="I-D.gandhi-ippm-stamp-ext-hdr"/>, the Session-Sender will receive a Session-Reflector test packet with an Reflected IPv6 Option Data TLV. The content of this TLV is copied from the IPv6 option of Session-Sender test packet.</t>
          <t><xref target="RFC8762"/> defines two kind of Session-Reflector behavior, one is stateless and another is stateful.</t>
          <t>When using stateless mode, the Session-Sender will receive a test packet and the values in the Sequence Number and Session-Sender Sequence Number fields are the same. The test packet analysis node will analysis the test packet in the following procedures:</t>
          <ul spacing="normal">
            <li>
              <t>The analysis node determines which test packet the reflected packet belongs to base on the sequence number. The analysis node will receive many reflected test packets with the same Sequence Number.</t>
            </li>
            <li>
              <t>For the reflected test packets with same Sequence Number, the analysis node needs to distinguish the different paths by the node information recorded in the IOAM trace Option in Reflected IPv6 Option Data TLV.</t>
            </li>
            <li>
              <t>The analysis node needs to generate a table for all the paths and record the sequence number for each path.</t>
            </li>
            <li>
              <t>The analysis node gets all the available paths and their packet loss rate by comparing the sequence number and reflected test packets number for each path.</t>
            </li>
            <li>
              <t>The analysis node gets the forward and backward transit delay of each path by comparing the Session-Sender Timestamp and Receive Timestamp or Timestamp of each Session-Reflect test packet.</t>
            </li>
          </ul>
          <t>When using stateful mode, the Session-Sender will receive a test packet and the values of the Sequence Number and Session-Sender Sequence Number fields are independent. The test packet analysis node will analysis the test packet in the following procedures:</t>
          <ul spacing="normal">
            <li>
              <t>The analysis node determines which test packet the reflected packet belongs to base on the Session-Sender sequence number. The analysis node will receive many reflected test packets with the same Session-Sender sequence number.</t>
            </li>
            <li>
              <t>For the reflected test packets with same Session-Sender sequence number, the analysis node needs to distinguish the different paths by the node information recorded in the IOAM trace Option in Reflected IPv6 Option Data TLV.</t>
            </li>
            <li>
              <t>The analysis node needs to generate a table for all the paths and record the sequence number and Session-Sender sequence number for each path.</t>
            </li>
            <li>
              <t>The analysis node gets all the available paths and their round-trip packet loss rate by counting the sequence number for each path.</t>
            </li>
            <li>
              <t>The analysis node gets the round-trip packet loss rate by comparing the reflected test packets number and Session-Sender sequence number for each path (the forward and backward packet loss can’t be measured because it requires the Session-Reflector maintains different counter for each path).</t>
            </li>
            <li>
              <t>The analysis node gets the forward and backward transit delay of each path by comparing the Session-Sender Timestamp and Receive Timestamp and Timestamp of each Session-Reflect test packet.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="transit-node-procedures">
        <name>Transit node procedures</name>
        <section anchor="packet-operation">
          <name>Packet Operation</name>
          <t>When the transit node receives a test packet with the IOAM trace option, it needs to add its node ID, ingress interface ID, and egress interface ID to the IOAM trace option of the test packet. For details about the content format, see section 4.4.2 of <xref target="RFC9197"/>.</t>
        </section>
        <section anchor="packet-forwarding">
          <name>Packet Forwarding</name>
          <t>When a transit node with multiple paths to the destination node receives a packet with Multi-path bit = 1, it must copy the packet to each egress interface that can reach the destination node.</t>
          <t>When the transit node has only one path to the destination node, it just needs to forward the packet it received to the egress interface.</t>
        </section>
      </section>
      <section anchor="session-reflector-procedures">
        <name>Session-Reflector procedures</name>
        <t>When a Session-Reflector receives a test packet with Multi-path TLV, it <bcp14>MUST</bcp14> copy the entire IPv6 option including the header into the STAMP "Reflected IPv6 Option Data" TLV in Session-Reflector payload, and reset the M bit of Multi-path TLV to prevent the replication in the backward path.</t>
        <t>The Session-Reflector also need to check whether there is a Return Path Control Code Sub-TLV with Co-routed Bidirectional Path flag set.</t>
        <t>If the Co-routed Bidirectional Path flag is set, the Session-Reflector Must send the reflect test packet along the path indicated in the IOAM IPv6 HBH option as described in <xref target="I-D.zhang-ippm-stamp-co-routed-path"/>.</t>
        <t>If the there is no Return Path Control Code Sub-TLV or the Co-routed Bidirectional Path flag is not set, it <bcp14>MUST</bcp14> drop this Multi-path test packet.</t>
      </section>
    </section>
    <section anchor="example-of-multi-path-measurement">
      <name>Example of Multi-path Measurement</name>
      <t>An example of a Multi-path measurement scenario is illustrated in <xref target="ref-to-fig4"/>. The figure depicts two endpoints: A STAMP Session-Sender and A Session-Reflector. The “STAMP session” is the bidirectional packet flow between the Session-Sender and Session-Reflector. There are four transit nodes and two routing paths between the Session-Sender and Session-Reflector.</t>
      <figure anchor="ref-to-fig4">
        <name>Multi-path measurement topology</name>
        <artwork><![CDATA[
                            +--------+
                           /|   N3   |\
                          / +--------+ \
+--------+     +--------+/   Transit    \+--------+     +--------+
|   N1   |-----|   N2   |    Node        |   N5   |-----|   N6   |
+--------+     +--------+\              /+--------+     +--------+
STAMP         Transit   \ +--------+ /  Transit         STAMP
Session-Sender   Node       \|   N4   |/     Node     Session-Reflector
                             +--------+
]]></artwork>
      </figure>
      <t>In <xref target="ref-to-fig4"/>, the Session-Sender generate a set of test packet with the IOAM Trace Option, Multi-path TLV (M bit = 1) and Co-routed Bidirectional Path flag set, indicating that these packets are used for multi-path measurement.</t>
      <t>When the packets arrive at N2, N2 find that there are two paths to the destination node, then it will copy the packet to each outgoing interface of the two paths and add its information (including the node id, ingress interface id and egress interface id) to the IOAM Trace Option. It should be noted that Node Identification, ingoing and outgoing interface Identification of N2 are mandatory for path recovering, other node data defined in section 4.1.1 of <xref target="RFC9197"/> are optional.</t>
      <t>The following transit nodes just add its node data to the IOAM Trace Option as described in section 4 of <xref target="RFC9197"/>.</t>
      <t>When the test packets arrive at Session-Reflector, it will copy the entire IPv6 option including the header into the STAMP "Reflected IPv6 Option Data" TLV in Session-Reflector payload. The Session-Reflector will also reset the Multi-path flag of Multi-path TLV. In addition, the Session-Reflector <bcp14>SHOULD</bcp14> exact all the route path information from the IOAM IPv6 option and encapsulate it in the SRH of reflected test packet, to perform a strict path forwarding.</t>
      <t>The transit node will forward the reflected test packets along the path indicated in SRH.</t>
      <t>When the reflected test packets arrive at the Session-Sender, it will analysis these reflected test packets as the procedures illustrated in section 3.1.2. Therefore, it can get the topology with all paths, the round-trip packet loss and the unidirectional path delay.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document defines a new bit in the registry "IOAM Trace-Flags" registry as follows:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Bit X</td>
            <td align="left">Multipath Flag</td>
            <td align="left">This</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8762">
          <front>
            <title>Simple Two-Way Active Measurement Protocol</title>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <author fullname="G. Jun" initials="G." surname="Jun"/>
            <author fullname="H. Nydell" initials="H." surname="Nydell"/>
            <author fullname="R. Foote" initials="R." surname="Foote"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This document describes the Simple Two-way Active Measurement Protocol (STAMP), which enables the measurement of both one-way and round-trip performance metrics, like delay, delay variation, and packet loss.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8762"/>
          <seriesInfo name="DOI" value="10.17487/RFC8762"/>
        </reference>
        <reference anchor="RFC8972">
          <front>
            <title>Simple Two-Way Active Measurement Protocol Optional Extensions</title>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <author fullname="X. Min" initials="X." surname="Min"/>
            <author fullname="H. Nydell" initials="H." surname="Nydell"/>
            <author fullname="R. Foote" initials="R." surname="Foote"/>
            <author fullname="A. Masputra" initials="A." surname="Masputra"/>
            <author fullname="E. Ruffini" initials="E." surname="Ruffini"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document describes optional extensions to Simple Two-way Active Measurement Protocol (STAMP) that enable measurement of performance metrics. The document also defines a STAMP Test Session Identifier and thus updates RFC 8762.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8972"/>
          <seriesInfo name="DOI" value="10.17487/RFC8972"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9197">
          <front>
            <title>Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)</title>
            <author fullname="F. Brockners" initials="F." role="editor" surname="Brockners"/>
            <author fullname="S. Bhandari" initials="S." role="editor" surname="Bhandari"/>
            <author fullname="T. Mizrahi" initials="T." role="editor" surname="Mizrahi"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>In situ Operations, Administration, and Maintenance (IOAM) collects operational and telemetry information in the packet while the packet traverses a path between two points in the network. This document discusses the data fields and associated data types for IOAM. IOAM-Data-Fields can be encapsulated into a variety of protocols, such as Network Service Header (NSH), Segment Routing, Generic Network Virtualization Encapsulation (Geneve), or IPv6. IOAM can be used to complement OAM mechanisms based on, e.g., ICMP or other types of probe packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9197"/>
          <seriesInfo name="DOI" value="10.17487/RFC9197"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.gandhi-ippm-stamp-ext-hdr">
          <front>
            <title>Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Reflecting STAMP Packet Headers</title>
            <author fullname="Rakesh Gandhi" initials="R." surname="Gandhi">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <abstract>
              <t>   Simple Two-Way Active Measurement Protocol (STAMP) defined in RFC
   8762 and its optional extensions defined in RFC 8972 can be used for
   Edge-To-Edge (E2E) active measurement.  In Situ Operations,
   Administration, and Maintenance (IOAM) data fields defined in RFC
   9197 can be used for recording and collecting Hop-By-Hop (HBH) and
   E2E operational and telemetry information.  This document extends
   STAMP to reflect any IPv6 options and MPLS Network Action Sub-Stacks
   for hop-by-hop and edge-to-edge active measurements, including IOAM
   data fields.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gandhi-ippm-stamp-ext-hdr-00"/>
        </reference>
        <reference anchor="I-D.zhang-ippm-stamp-co-routed-path">
          <front>
            <title>Simple Two-Way Active Measurement Protocol (STAMP) Extension for Co-routed Bidirectional Path</title>
            <author fullname="Li Zhang" initials="L." surname="Zhang">
              <organization>Huawei</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei</organization>
            </author>
            <date day="29" month="June" year="2024"/>
            <abstract>
              <t>   This document extends STAM Return Path TLV with a Co-routed
   Bidirectional Path flag to implement the round-trip performance
   measurement for specific path.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-zhang-ippm-stamp-co-routed-path-00"/>
        </reference>
      </references>
    </references>
    <?line 274?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank Ernesto Ruffini, Thomas Graf, Greg Mirsky for the valuable comments to this work.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AlJjq2NBAAA=

-->

</rfc>
