<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-ippm-asymmetrical-pkts-14" number="10052" consensus="true" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" prepTime="2026-09-30T17:14:08" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ippm-asymmetrical-pkts-14" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10052" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Asymmetrical Traffic Using STAMP">Performance Measurement with Asymmetrical Traffic Using the Simple Two-Way Active Measurement Protocol (STAMP)</title>
    <seriesInfo name="RFC" value="10052" stream="IETF"/>
    <author initials="G." surname="Mirsky" fullname="Greg Mirsky">
      <organization showOnFrontPage="true">Ciena Corporation</organization>
      <address>
        <email>gregimirsky@gmail.com</email>
      </address>
    </author>
    <author fullname="Ernesto Ruffini" initials="E." surname="Ruffini">
      <organization showOnFrontPage="true">OutSys</organization>
      <address>
        <email>eruffini@outsys.org</email>
      </address>
    </author>
    <author fullname="Henrik Nydell" initials="H." surname="Nydell">
      <organization showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <email>hnydell@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Foote" fullname="Richard Foote">
      <organization showOnFrontPage="true">Nokia</organization>
      <address>
        <email>footer.foote@nokia.com</email>
      </address>
    </author>
    <author fullname="Will Hawkins" initials="W." surname="Hawkins">
      <organization showOnFrontPage="true">University of Cincinnati</organization>
      <address>
        <email>hawkinsw@obs.cr</email>
      </address>
    </author>
    <date month="09" year="2026"/>
    <area>OPS</area>
    <workgroup>ippm</workgroup>
    <keyword>IPPM</keyword>
    <keyword>Performance Measurement</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
This document defines an optional extension to the Simple Two-way Active Measurement Protocol (STAMP)
that enables a Session-Reflector to send asymmetrical packets, that is, response packets
whose size or quantity differs from those sent by the Session-Sender.
While standard STAMP exchanges are symmetrical, certain measurement scenarios benefit from reflected packets of different lengths
or additional responses to better approximate application traffic conditions. The extension specifies the Reflected Test Packet Control TLV
and associated procedures, analyzes challenges in active performance measurement (including in multicast environments),
and describes STAMP behaviors to improve measurement efficiency and reduce network impact.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc10052" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-acronyms">Acronyms</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reflected-test-packet-contr">Reflected Test Packet Control TLV</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-address-group-sub-tlvs">Address Group Sub-TLVs</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.1.2">
                  <li pn="section-toc.1-1.3.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.1.1"><xref derivedContent="3.1.1" format="counter" sectionFormat="of" target="section-3.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-layer-2-address-group-sub-t">Layer 2 Address Group Sub-TLV</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.2.1"><xref derivedContent="3.1.2" format="counter" sectionFormat="of" target="section-3.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-layer-3-address-group-sub-t">Layer 3 Address Group Sub-TLV</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rate-measurement">Rate Measurement</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2.1.2">
                  <li pn="section-toc.1-1.4.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.4.2.1.2.1.1"><xref derivedContent="4.1.1" format="counter" sectionFormat="of" target="section-4.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations-">Operational Considerations for Performing Rate Measurement</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-active-performance-measurem">Active Performance Measurement in a Multicast Environment</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-reflected-test-packet">Using Reflected Test Packet Control TLV in Combination with Other TLVs</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reflected-test-packet-control">Reflected Test Packet Control TLV Type</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conformant-reflected-packet">Conformant Reflected Packet STAMP TLV Flag</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-layer-2-and-layer-3-address">Layer 2 and Layer 3 Address Group Sub-TLV Types</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
    The Simple Two-way Active Measurement Protocol (STAMP) <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/> defines the base STAMP functionalities.
    STAMP Optional Extensions <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/> introduces a TLV structure that allows
		a Session-Sender to include optional instructions for Session-Reflectors
		to extend the functionality of the base STAMP protocol.
    New STAMP TLVs can be defined to support scenarios like the ones described in <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/>,
    which discusses the coordination of messaging between the source
    and destination to help deliver one of the fundamental principles
    of IP performance metric measurements, minimizing the test traffic effect on user flows.
      </t>
      <t indent="0" pn="section-1-2">
      By default, a STAMP Session-Sender and a Session-Reflector exchange packets symmetrically:
      The number of packets sent by the Session-Reflector and the Session-Sender are the same, and the length of the packets sent by
      the Session-Reflector and the Session-Sender are the same.
		However, in some scenarios, e.g., rate measurements discussed in <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/>,
    it would be beneficial for a Session-Reflector to respond with asymmetrical test packets: packets whose length is not symmetrical
    to the test packet sent by the Session-Sender and/or packets that are not sent in direct response to a packet received from a Session-Sender.
    The optional extension defined in this document gives operators the tools to create such asymmetrical packets between a Session-Sender and a Session-Reflector.
      </t>
      <t indent="0" pn="section-1-3">
    Measurement of performance metrics in a multicast network using an active measurement method
    (<xref target="RFC7799" section="3.4" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7799#section-3.4" derivedContent="RFC7799"/>) has specific challenges compared to what operators experience monitoring in a unicast network.
    This document analyzes these challenges and specifies procedures and STAMP extensions to
    achieve more efficient measurements with a lesser impact on a network.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
      <section anchor="terminology-sec" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-terminology">Terminology</name>
        <t indent="0" pn="section-2.1-1">
          This document uses terms defined in <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/>, specifically Session-Sender, Session-Reflector, and symmetrical packets.
        </t>
        <t indent="0" pn="section-2.1-2">
          This document uses terms defined in <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>, specifically STAMP Session Identifier (SSID),
          STAMP TLV Flags, and Sub-TLVs.
        </t>
        <t indent="0" pn="section-2.1-3">
         This document uses terms defined in <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/>, specifically In-Service and Out-of-Service.
        </t>
        <t indent="0" pn="section-2.1-4">
          In this document, "asymmetrical packets" has two meanings, depending on the context.
          The first aspect is asymmetry in packet size between a packet sent by a Session-Reflector and the packet it received from the Session-Sender.
          The second aspect is asymmetry in the number of packets the Session-Reflector transmits in response to receiving a single STAMP-Test packet.
        </t>
        <t indent="0" pn="section-2.1-5">
          In this document, a multicast network means a communication network model where a sender transmits a single packet
addressed to a multicast group, and the network delivers copies of that packet
to multiple receivers that have joined the group.
        </t>
      </section>
      <section anchor="acronyms-sec" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-acronyms">Acronyms</name>
        <dl spacing="normal" newline="false" indent="3" pn="section-2.2-1">
          <dt pn="section-2.2-1.1">CE:</dt>
          <dd pn="section-2.2-1.2">Congestion Experienced</dd>
          <dt pn="section-2.2-1.3">ECN:</dt>
          <dd pn="section-2.2-1.4">Explicit Congestion Notification</dd>
          <dt pn="section-2.2-1.5">EUI:</dt>
          <dd pn="section-2.2-1.6">Extended Unique Identifier</dd>
          <dt pn="section-2.2-1.7">MAC:</dt>
          <dd pn="section-2.2-1.8">Media Access Control</dd>
          <dt pn="section-2.2-1.9">STAMP:</dt>
          <dd pn="section-2.2-1.10">Simple Two-way Active Measurement Protocol</dd>
          <dt pn="section-2.2-1.11">TLV:</dt>
          <dd pn="section-2.2-1.12">Type-Length-Value</dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-2.3-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="reflected-cntrl-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-reflected-test-packet-contr">Reflected Test Packet Control TLV</name>
      <t indent="0" pn="section-3-1">
      This section defines an additional optional STAMP extension, the Reflected Test Packet Control TLV, and an additional bit flag in the STAMP TLV Flags field.
The format of this TLV is presented in <xref target="reflected-cntrl-tlv-fig" format="default" sectionFormat="of" derivedContent="Figure 1"/>.
      </t>
      <figure anchor="reflected-cntrl-tlv-fig" align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-reflected-test-packet-contro">Reflected Test Packet Control TLV Format</name>
        <artset pn="section-3-2.1">
          <artwork type="svg" align="left" pn="section-3-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="32" y="84">STAMP</text>
                <text x="72" y="84">TLV</text>
                <text x="112" y="84">Flags</text>
                <text x="204" y="84">Type</text>
                <text x="380" y="84">Length</text>
                <text x="36" y="116">Length</text>
                <text x="76" y="116">of</text>
                <text x="104" y="116">the</text>
                <text x="160" y="116">Reflected</text>
                <text x="228" y="116">Packet</text>
                <text x="292" y="116">Number</text>
                <text x="332" y="116">of</text>
                <text x="360" y="116">the</text>
                <text x="416" y="116">Reflected</text>
                <text x="488" y="116">Packets</text>
                <text x="148" y="148">Interval</text>
                <text x="216" y="148">Between</text>
                <text x="264" y="148">the</text>
                <text x="320" y="148">Reflected</text>
                <text x="392" y="148">Packets</text>
                <text x="8" y="180">~</text>
                <text x="268" y="180">Sub-TLVs</text>
                <text x="520" y="180">~</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="left" pn="section-3-2.1.2">
 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              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Length of the Reflected Packet |Number of the Reflected Packets|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Interval Between the Reflected Packets            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                            Sub-TLVs                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
        </artset>
      </figure>
      <t indent="0" pn="section-3-3">
  The descriptions of the fields are as follows:
      </t>
      <dl spacing="normal" newline="false" indent="3" pn="section-3-4">
        <dt pn="section-3-4.1">STAMP TLV Flags:</dt>
        <dd pn="section-3-4.2">A one-octet field <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>.</dd>
        <dt pn="section-3-4.3">Type:</dt>
        <dd pn="section-3-4.4">A one-octet field that identifies the Reflected Test Packet Control TLV.
        This field is set to 12 (<xref target="iana-pkt-cntrl-tlv" format="default" sectionFormat="of" derivedContent="Section 6.1"/>).</dd>
        <dt pn="section-3-4.5">Length:</dt>
        <dd pn="section-3-4.6">A two-octet field. The value is variable and <bcp14>MUST NOT</bcp14> be smaller than 12 octets.</dd>
        <dt pn="section-3-4.7">Length of the Reflected Packet:</dt>
        <dd pn="section-3-4.8">A two-octet field.
        The value is an unsigned integer that is the requested length of a reflected test packet in octets.</dd>
        <dt pn="section-3-4.9">Number of the Reflected Packets:</dt>
        <dd pn="section-3-4.10">A two-octet field. The value is an unsigned integer that is the number of reflected test packets that
        the Session-Reflector is requested to transmit in response to receiving a STAMP-Test packet with
        the Reflected Test Packet Control TLV.</dd>
        <dt pn="section-3-4.11">Interval Between the Reflected Packets:</dt>
        <dd pn="section-3-4.12">A four-octet field. The value is an unsigned integer set to the interval in nanoseconds between
        the transmission of the consecutive reflected test packets in response to receiving
        a STAMP-Test packet with the Reflected Test Packet Control TLV.</dd>
        <dt pn="section-3-4.13">Sub-TLVs:</dt>
        <dd pn="section-3-4.14">An optional field that includes additional information communicated by a Session-Sender.</dd>
      </dl>
      <t indent="0" pn="section-3-5">
      Also, an additional STAMP TLV flag <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>, the Conformant Reflected Packet, has been allocated
      by IANA in the "STAMP TLV Flags" registry (<xref target="iana-tlv-flag-sec" format="default" sectionFormat="of" derivedContent="Section 6.2"/>): the one-bit C flag (3). A Session-Sender <bcp14>MUST</bcp14> zero
      this flag on transmission, and the Session-Reflector <bcp14>MUST</bcp14> ignore its value on the receipt of a STAMP-Test packet with a STAMP TLV.
      </t>
      <t indent="0" pn="section-3-6">
   A Session-Sender <bcp14>MAY</bcp14> include the Reflected Test Packet Control TLV in a STAMP
   test packet. If the received STAMP-Test packet includes the Reflected Test Packet Control TLV,
   the Session-Reflector <bcp14>MUST</bcp14> transmit a sequence of reflected test packets according to the following rules:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-7">
        <li pn="section-3-7.1">
          <t indent="0" pn="section-3-7.1.1">The length of the reflected test packet <bcp14>MUST</bcp14> be the largest of:</t>
          <ol type="a" spacing="compact" indent="adaptive" start="1" pn="section-3-7.1.2">
         <li pn="section-3-7.1.2.1" derivedCounter="a.">
         The length of a base Session-Reflector packet in the mode (unauthenticated
or authenticated) of the received STAMP-Test packet, as defined in
<xref section="4.3" target="RFC8762" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8762#section-4.3" derivedContent="RFC8762"/>, including all STAMP extension TLVs <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>
present in the received STAMP-Test packet but excluding any Extra Padding TLVs.
The rationale to exclude any Extra Padding TLVs present in combination with the 
Reflected Test Packet Control TLV is to support a scenario in which a Session-Reflector
is requested to transmit a sequence of packets shorter than the received STAMP packet.
         </li>
            <li pn="section-3-7.1.2.2" derivedCounter="b.">
The value in the Length of the Reflected Packet
field of the Reflected Test Packet Control TLV aligned at a four-octet
boundary.
         </li>
          </ol>
        </li>
      </ul>
      <t indent="0" pn="section-3-8">In a case where the length of the reflected packet
calculated by this rule is longer than the length of the reflected
packet calculated by the rules in <xref section="4" target="RFC8972" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8972#section-4" derivedContent="RFC8972"/>, the Session-Reflector
<bcp14>MUST</bcp14> use the Extra Padding TLV (<xref section="4.1" target="RFC8972" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8972#section-4.1" derivedContent="RFC8972"/>) to increase
the length of the reflected test packet. If the calculated length of the reflected packet exceeds
the maximum transmission unit (MTU) of the interface to reach the Session-Sender,
the Session-Reflector <bcp14>MUST</bcp14> set the Conformant Reflected Packet STAMP TLV flag (<xref target="iana-tlv-flag-sec" format="default" sectionFormat="of" derivedContent="Section 6.2"/>) to 1 
and <bcp14>MUST</bcp14> transmit a single reflected packet of the length equal to the MTU of the egress interface.
Otherwise, the Session-Reflector <bcp14>MUST</bcp14> set the C flag to 0 in each reflected test packet.
</t>
      <t indent="0" pn="section-3-9">The number of reflected test packets in the sequence <bcp14>MUST</bcp14> equal the value of the Number of the Reflected Packets field.</t>
      <t indent="0" pn="section-3-10">
  If the value of the Number of the Reflected Packets field is greater than 1,
the interval between the transmission of two consecutive reflected packets in the sequence <bcp14>MUST</bcp14> be equal to the value
  in the Interval Between the Reflected Packets field in nanoseconds.
To prevent excessive congestion caused by reflected packets, a Session-Reflector that supports the Reflected Test Packet Control TLV
<bcp14>MUST</bcp14> enforce limits on both the data rate (bytes per second) and the total data volume (bytes)
of the STAMP payload it generates in response to an incoming test packet.
If a test packet is received that would generate traffic that exceeds either of these limits, the Session-Reflector <bcp14>MUST</bcp14>
set the C flag (<xref target="iana-tlv-flag-sec" format="default" sectionFormat="of" derivedContent="Section 6.2"/>) to 1 and <bcp14>MUST</bcp14> transmit a single reflected packet of the length calculated by the rules listed above.
Otherwise, the Session-Reflector <bcp14>MUST</bcp14> set the C flag to 0 in each reflected test packet.
</t>
      <t indent="0" pn="section-3-11">
If the Number of the Reflected Packets field is set to 0, the Session-Reflector <bcp14>MUST NOT</bcp14> send any reflected packets.
Furthermore, in this case, the Session-Reflector <bcp14>SHOULD</bcp14> discard the received STAMP-Test packet.
However, a local policy <bcp14>MAY</bcp14> override this default behavior and specify an alternative handling.
Note that this behavior of the Session-Reflector is demonstrated when the Control Code Flags field
of the Return Path Control Code sub-TLV (<xref section="4.1.1" target="RFC9503" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9503#section-4.1.1" derivedContent="RFC9503"/>)
is set to No Reply Requested. If this is the intended behavior, use of the Return Path TLV is preferable.
</t>
      <t indent="0" pn="section-3-12">Each reflected test packet in the sequence is formed according to <xref target="RFC8762" section="4.3" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8762#section-4.3" derivedContent="RFC8762"/>.</t>
      <t indent="0" pn="section-3-13">
As defined above, there are two cases when a Session-Reflector will set the C flag in the reflected packet. To disambiguate
which case led to the C flag being set to 1, an implementation of a Session-Sender can determine the cause as follows:
</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-14">
        <li pn="section-3-14.1">If the length of the received reflected STAMP packet is less than
the value of the Length of the Reflected Packet field, the requested
length exceeds the MTU of the egress interface of the
Session-Reflector.</li>
        <li pn="section-3-14.2">If the length of the received reflected STAMP packet equals the
value of the Length of the Reflected Packet field, the requested data
rate and/or the data volume exceed the limits set at the
Session-Reflector.</li>
      </ul>
      <section anchor="address-group-sub-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-address-group-sub-tlvs">Address Group Sub-TLVs</name>
        <t indent="0" pn="section-3.1-1">
      A multicast network that uses an active performance measurement method for In-Service rate estimation <bcp14>MUST</bcp14> include a rate control mechanism
      that bounds and regulates the generation of measurement packets. Because multicast replication can amplify probe traffic across the distribution tree,
      uncontrolled probe emission risks introducing congestion, altering traffic asymmetry, or otherwise perturbing the conditions being measured.
      The rate control mechanism <bcp14>MUST</bcp14> ensure that probe traffic remains non-intrusive, predictable, and consistent
      with the operational characteristics of the multicast topology. Aligning probe generation behavior
      with the timing and packet selection semantics of the asymmetric packet measurement method makes it possible for observations collected at receivers to remain valid and comparable.
      To allow for deployment on networks with different characteristics (i.e., latency, throughput, etc.), implementations <bcp14>SHOULD</bcp14> provide operators with the ability to configure rate limits and pacing parameters that prevent excessive
      or uneven probe replication while still enabling statistically meaningful measurement samples.
        </t>
        <section anchor="l2-addr-grp-sub-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-3.1.1">
          <name slugifiedName="name-layer-2-address-group-sub-t">Layer 2 Address Group Sub-TLV</name>
          <t indent="0" pn="section-3.1.1-1">
An optional Layer 2 Address Group sub-TLV is a variable-length sub-TLV that includes a Layer 2 Address Group Mask and Address Group fields
used by the Session-Sender to select the Session-Reflectors for a response.
The Layer 2 Address Group sub-TLV can convey EUI-48 (Extended Unique Identifier), EUI-64 <xref target="IEEE-802.3-2022" format="default" sectionFormat="of" derivedContent="IEEE-802.3-2022"/>,
and a 16-bit short address for local identification within a Personal Area Network <xref target="IEEE-802.15.4-2024" format="default" sectionFormat="of" derivedContent="IEEE-802.15.4-2024"/>.
The format of the Layer 2 Address Group sub-TLV is presented in <xref target="l2-addr-grp-sub-tlv-fig" format="default" sectionFormat="of" derivedContent="Figure 2"/>.
          </t>
          <figure anchor="l2-addr-grp-sub-tlv-fig" align="left" suppress-title="false" pn="figure-2">
            <name slugifiedName="name-layer-2-address-group-sub-tl">Layer 2 Address Group Sub-TLV Format</name>
            <artset pn="section-3.1.1-2.1">
              <artwork type="svg" align="left" pn="section-3.1.1-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,96" fill="none" stroke="black"/>
                  <path d="M 120,64 L 120,96" fill="none" stroke="black"/>
                  <path d="M 248,64 L 248,96" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="40" y="84">Sub-TLV</text>
                    <text x="96" y="84">Flags</text>
                    <text x="160" y="84">Sub-TLV</text>
                    <text x="212" y="84">Type</text>
                    <text x="352" y="84">Sub-TLV</text>
                    <text x="412" y="84">Length</text>
                    <text x="8" y="116">~</text>
                    <text x="120" y="116">Layer</text>
                    <text x="152" y="116">2</text>
                    <text x="192" y="116">Address</text>
                    <text x="248" y="116">Group</text>
                    <text x="292" y="116">Mask</text>
                    <text x="352" y="116">(variable</text>
                    <text x="424" y="116">length)</text>
                    <text x="520" y="116">~</text>
                    <text x="8" y="148">~</text>
                    <text x="120" y="148">Layer</text>
                    <text x="152" y="148">2</text>
                    <text x="192" y="148">Address</text>
                    <text x="248" y="148">Group</text>
                    <text x="316" y="148">(variable</text>
                    <text x="388" y="148">length)</text>
                    <text x="520" y="148">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="left" pn="section-3.1.1-2.1.2">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-TLV Flags| Sub-TLV Type  |         Sub-TLV Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~           Layer 2 Address Group Mask (variable length)        ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~           Layer 2 Address Group (variable length)             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
            </artset>
          </figure>
          <t indent="0" pn="section-3.1.1-3">Where:</t>
          <dl spacing="normal" newline="false" indent="3" pn="section-3.1.1-4">
            <dt pn="section-3.1.1-4.1">Sub-TLV Flags:</dt>
            <dd pn="section-3.1.1-4.2">An eight-bit field. The format, values, and interpretation of flags are as defined for STAMP TLV Flags <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>.  Flag values are taken from the "STAMP TLV Flags" registry <xref target="IANA-STAMP" format="default" sectionFormat="of" derivedContent="IANA-STAMP"/>.</dd>
            <dt pn="section-3.1.1-4.3">Sub-TLV Type:</dt>
            <dd pn="section-3.1.1-4.4">A one-octet field. IANA has assigned value 10 (<xref target="iana-l2-l3-sub-tlv" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).</dd>
            <dt pn="section-3.1.1-4.5">Sub-TLV Length:</dt>
            <dd pn="section-3.1.1-4.6">A two-octet field whose value equals the length of the Value field of the Layer 2 Address Group sub-TLV in octets.
      Because the lengths of the Layer 2 Address Group Mask and Layer 2 Address Group fields <bcp14>MUST</bcp14> be equal, valid values for the Sub-TLV Length
      are 4, 12, and 16. Any other value <bcp14>MUST</bcp14> be considered by the Session-Reflector as a malformed sub-TLV.</dd>
          </dl>
          <t indent="0" pn="section-3.1.1-5">
        The Value field of the Layer 2 Address Group sub-TLV consists of the following fields:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-3.1.1-6">
            <dt pn="section-3.1.1-6.1">Layer 2 Address Group Mask:</dt>
            <dd pn="section-3.1.1-6.2">A field that represents the bitmask to be applied to all MAC addresses associated with the Session-Reflector.
      The length of the field is 1/2 the value of the sub-TLV Length field.</dd>
            <dt pn="section-3.1.1-6.3">Layer 2 Address Group:</dt>
            <dd pn="section-3.1.1-6.4">A field that represents the group to which this TLV is addressed.
      The length of the field is 1/2 the value of the sub-TLV Length field.</dd>
          </dl>
          <t indent="0" pn="section-3.1.1-7">
      If the Session-Reflector applies the value of the Layer 2 Address Group Mask field (using a bitwise AND) to any of its MAC addresses
      with the same length and the result is equal to the value of the Layer 2 Address Group field, then the Session-Reflector
      <bcp14>MUST</bcp14> stop processing the Layer 2 Address Group sub-TLV and continue processing the received test packet.
      If no matches are found, the Session-Reflector <bcp14>MUST</bcp14> stop processing the received packet.
          </t>
        </section>
        <section anchor="l3-addr-grp--sub-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-3.1.2">
          <name slugifiedName="name-layer-3-address-group-sub-t">Layer 3 Address Group Sub-TLV</name>
          <t indent="0" pn="section-3.1.2-1">
      An optional Layer 3 Address Group sub-TLV is a variable-length sub-TLV that includes the
      IP Prefix and IP Prefix Length fields used by the Session-Sender to select the Session-Reflectors for a response.
      The format of the Layer 3 Address Group sub-TLV is presented in <xref target="l3-addr-grp-sub-tlv-fig" format="default" sectionFormat="of" derivedContent="Figure 3"/>.
          </t>
          <figure anchor="l3-addr-grp-sub-tlv-fig" align="left" suppress-title="false" pn="figure-3">
            <name slugifiedName="name-layer-3-address-group-sub-tl">Layer 3 Address Group Sub-TLV Format</name>
            <artset pn="section-3.1.2-2.1">
              <artwork type="svg" align="left" pn="section-3.1.2-2.1.1"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="528" viewBox="0 0 528 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
                  <path d="M 136,64 L 136,128" fill="none" stroke="black"/>
                  <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                  <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                  <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="16" y="36">0</text>
                    <text x="176" y="36">1</text>
                    <text x="336" y="36">2</text>
                    <text x="496" y="36">3</text>
                    <text x="16" y="52">0</text>
                    <text x="32" y="52">1</text>
                    <text x="48" y="52">2</text>
                    <text x="64" y="52">3</text>
                    <text x="80" y="52">4</text>
                    <text x="96" y="52">5</text>
                    <text x="112" y="52">6</text>
                    <text x="128" y="52">7</text>
                    <text x="144" y="52">8</text>
                    <text x="160" y="52">9</text>
                    <text x="176" y="52">0</text>
                    <text x="192" y="52">1</text>
                    <text x="208" y="52">2</text>
                    <text x="224" y="52">3</text>
                    <text x="240" y="52">4</text>
                    <text x="256" y="52">5</text>
                    <text x="272" y="52">6</text>
                    <text x="288" y="52">7</text>
                    <text x="304" y="52">8</text>
                    <text x="320" y="52">9</text>
                    <text x="336" y="52">0</text>
                    <text x="352" y="52">1</text>
                    <text x="368" y="52">2</text>
                    <text x="384" y="52">3</text>
                    <text x="400" y="52">4</text>
                    <text x="416" y="52">5</text>
                    <text x="432" y="52">6</text>
                    <text x="448" y="52">7</text>
                    <text x="464" y="52">8</text>
                    <text x="480" y="52">9</text>
                    <text x="496" y="52">0</text>
                    <text x="512" y="52">1</text>
                    <text x="48" y="84">Sub-TLV</text>
                    <text x="104" y="84">Flags</text>
                    <text x="176" y="84">Sub-TLV</text>
                    <text x="228" y="84">Type</text>
                    <text x="352" y="84">Sub-TLV</text>
                    <text x="412" y="84">Length</text>
                    <text x="44" y="116">Prefix</text>
                    <text x="100" y="116">Length</text>
                    <text x="324" y="116">Reserved</text>
                    <text x="8" y="148">~</text>
                    <text x="204" y="148">IP</text>
                    <text x="244" y="148">Prefix</text>
                    <text x="520" y="148">~</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="left" pn="section-3.1.2-2.1.2">
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sub-TLV Flags | Sub-TLV Type  |       Sub-TLV Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length |                   Reserved                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                       IP Prefix                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
            </artset>
          </figure>
          <t indent="0" pn="section-3.1.2-3">Where:</t>
          <dl spacing="normal" newline="false" indent="3" pn="section-3.1.2-4">
            <dt pn="section-3.1.2-4.1">Sub-TLV Flags:</dt>
            <dd pn="section-3.1.2-4.2">An eight-bit field. The format, values, and interpretation of flags are as defined for STAMP TLV Flags <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>. Flag values are taken from the "STAMP TLV Flags" registry <xref target="IANA-STAMP" format="default" sectionFormat="of" derivedContent="IANA-STAMP"/>.</dd>
            <dt pn="section-3.1.2-4.3">Sub-TLV Type:</dt>
            <dd pn="section-3.1.2-4.4">A one-octet field. IANA has assigned value 11 (<xref target="iana-l2-l3-sub-tlv" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).</dd>
            <dt pn="section-3.1.2-4.5">Sub-TLV Length:</dt>
            <dd pn="section-3.1.2-4.6">A two-octet field whose value equals either 8 (if the IP Prefix is the prefix for an IPv4 address)
or 20 (if the IP Prefix is the prefix for an IPv6 address).
Any other value <bcp14>MUST</bcp14> be considered by the Session-Reflector as a malformed sub-TLV.
      </dd>
          </dl>
          <t indent="0" pn="section-3.1.2-5">
        The Value field of the Layer 3 Address Group sub-TLV consists of the
        following fields:
          </t>
          <dl spacing="normal" newline="false" indent="3" pn="section-3.1.2-6">
            <dt pn="section-3.1.2-6.1">Prefix Length:</dt>
            <dd pn="section-3.1.2-6.2">A one-octet unsigned integer field that contains the length, in bits,
      of the prefix of the value in the IP Prefix field.</dd>
            <dt pn="section-3.1.2-6.3">Reserved:</dt>
            <dd pn="section-3.1.2-6.4">A three-octet field. The field <bcp14>MUST</bcp14> be zeroed on transmission and ignored on receipt.</dd>
            <dt pn="section-3.1.2-6.5">IP Prefix:</dt>
            <dd pn="section-3.1.2-6.6">A variable-length field. The length of the field is four octets if the IP Prefix is the prefix for an IPv4 address
      or 16 if the IP Prefix is the prefix for an IPv6 address.</dd>
          </dl>
          <t indent="0" pn="section-3.1.2-7">
When processing this sub-TLV, the Session-Reflector will construct an IP mask according to the value, n, in the Prefix Length field.
The IP mask will be an IP address (of the family specified by the value of the sub-TLV Length field, according to the semantics above)
where the n most-significant bits are set to 1 and all other bits are set to 0. Once the mask is constructed,
if the Session-Reflector applies it (using a bitwise AND) to any of its IP addresses of the same family and the result is equal to the value in the IP Prefix field,
then the Session-Reflector <bcp14>MUST</bcp14> stop processing the Layer 3 Address Group sub-TLV and continue processing the received test packet.
If no matches are found, the Session-Reflector <bcp14>MUST</bcp14> stop processing the received packet.
          </t>
        </section>
      </section>
    </section>
    <section anchor="theory-of-operation" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <section anchor="rate-measurement" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-rate-measurement">Rate Measurement</name>
        <t indent="0" pn="section-4.1-1">
      <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/> defines the problem of access rate measurement in access
   networks. One of the essential requirements identified for a test protocol is the
   ability to control packet characteristics on the tested path, such as
   asymmetric rate and asymmetric packet size. The Reflected Test
   Packet Control TLV, defined in <xref target="reflected-cntrl-tlv" format="default" sectionFormat="of" derivedContent="Section 3"/>, conforms to the
   requirements for measuring access rate by providing optional controls
   of the number of reflected test packets, the size of the reflected
   packet(s), and the time interval, i.e., rate, in transmitting the sequence of the reflected test packets.
   The access rate metric and method of access rate measurement are out of the scope of this document.
   The UDP Speed Test (see <xref target="RFC9097" format="default" sectionFormat="of" derivedContent="RFC9097"/> and <xref target="RFC9946" format="default" sectionFormat="of" derivedContent="RFC9946"/>)
   also allows for the measurement of access bandwidth.
        </t>
        <section anchor="ops-sec" numbered="true" toc="include" removeInRFC="false" pn="section-4.1.1">
          <name slugifiedName="name-operational-considerations-">Operational Considerations for Performing Rate Measurement</name>
          <t indent="0" pn="section-4.1.1-1">
      General considerations for using a testing protocol for
      rate measurement are documented in <xref section="7" target="RFC7497" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc7497#section-7" derivedContent="RFC7497"/>.
      These considerations are specific for In-Service and
      Out-of-Service rate measurement.
      In the Out-of-Service testing, an operator may use a very high traffic rate and/or volume
      (i.e., high values for the Length of the Reflected Packet and/or
Number of the Reflected Packets fields, and/or low values for the Interval Between the Reflected Packets field of the
Reflected Test Packet Control TLV) to create congestion in the bottleneck. However, when performing In-Service rate testing,
an operator may start with a low rate and/or volume and gradually increase them with each transmitted Reflected Test Packet Control TLV.
          </t>
          <t indent="0" pn="section-4.1.1-2">A service subscriber performing extensive rate measurements on the operational network <bcp14>SHOULD</bcp14> consider
      bullet item 6 in <xref section="11" target="RFC9946" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9946#section-11" derivedContent="RFC9946"/> and be mindful of limits placed on their service by the Service Provider. In particular, active measurement can lead to the generation of data volumes that may cause those performing the test to violate service-level agreements with their Service Provider.
          </t>
        </section>
      </section>
      <section anchor="multicast-measurement" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-active-performance-measurem">Active Performance Measurement in a Multicast Environment</name>
        <t indent="0" pn="section-4.2-1">
For performance measurements using STAMP in a multicast environment, a Session-Sender
is expected to be the root and Session-Reflectors are the leaves of the same multicast distribution tree.
The mechanism of constructing the multicast tree is outside the scope of this document.
</t>
        <t indent="0" pn="section-4.2-2">
      According to <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>, a STAMP Session is demultiplexed by a Session-Reflector by the tuple
      that consists of source and destination IP addresses, source and destination UDP port numbers, or
      the source IP address and STAMP Session Identifier. That is also the case when monitoring the performance of a multicast
flow, despite the fact that the destination IP address is a multicast
address. Therefore, there is no special behavior defined for a Session-Reflector upon receiving
      a STAMP-Test packet over a multicast tree. It processes the packet according to <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/> and <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>.
      The Session-Reflector <bcp14>MUST</bcp14> use the source IP address of the received STAMP-Test packet as the destination IP address of the reflected test packet
      and <bcp14>MUST</bcp14> use one of the IP addresses associated with the node as the source IP address for that packet. As a result, a Session-Sender may receive
      multiple replies from multiple counterpart Session-Reflectors. Such a Session-Sender may include a Reflected Test Packet Control TLV
      and include either a Layer 2 Address Group sub-TLV or a Layer 3 Address Group sub-TLV to limit the Session-Reflectors that respond.
</t>
        <t indent="0" pn="section-4.2-3">
The multicast environment itself could be configured to help alleviate the possibility that
network congestion may occur if a single test packet generates a large number of concurrent replies,
all directed to the same endpoint. Depending on the multicast implementation,
adding the Reflected Test Packet Control TLV could allow the multicast environment to limit the number of replies by modifying the Reflected Test Packet Control TLV sub-TLV values of any STAMP packets it sees, allowing replies only from reflectors that are:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.2-4">
          <li pn="section-4.2-4.1">Randomly selected, by specifying a Layer 2 Address Group sub-TLV: for example,
setting the EUI-48 Address Group Mask to 0xF and the EUI-48 Address Group to 0x1.
As a result, only 1 out of 16 reflectors will reply;</li>
          <li pn="section-4.2-4.2">Hosted on a specific vendor Network Interface Card, by specifying a Layer 2 Address Group sub-TLV
with the EUI-48 Address Group Mask set to 0xFFFFFF000000; and</li>
          <li pn="section-4.2-4.3">Belonging to specific IP networks, for example, a subnet dedicated to IPv6-over-IPv4
encapsulation, by specifying the appropriate Layer 3 Address Group sub-TLV.</li>
        </ul>
        <t indent="0" pn="section-4.2-5">
 Multicast traffic is also intrinsically asymmetrical. The upstream (source-to-receiver) direction typically dominates,
 while the return path receives limited attention because multicast communication is primarily one-to-many and generates comparatively little downstream or receiver-to-source traffic.
 The value of the Length of the Reflected Packet field can be used to ensure that the reflected packet transports
 all the timestamps and requested information, which are crucial for the underlying measurement,
 but is as short as possible so as not to flood the network with useless data.
</t>
      </section>
      <section anchor="existing-extensions" numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-using-reflected-test-packet">Using Reflected Test Packet Control TLV in Combination with Other TLVs</name>
        <t indent="0" pn="section-4.3-1">
<xref target="RFC9503" format="default" sectionFormat="of" derivedContent="RFC9503"/> defines the Return Path TLV that, when used
    in combination with the Return Address Sub-TLV, allows a Session-Sender to request
    the reflected packet be sent to a different address from the
    Session-Sender one.  These STAMP extensions could be used in combination
    with the Reflected Test Packet Control TLV, defined in this document, to direct
    the reflected STAMP-Test packets to a collector of measurement data (according to <xref target="RFC7594" format="default" sectionFormat="of" derivedContent="RFC7594"/>)
    for further processing and network analytics.
    An example of the use case is a multicast scenario
    when, for example, the Session-Sender is close to the actual
    multicast source (such as a camera transmitting live
    video) so that the test packets follow the same path as the
    video stream packets in one direction but the reflected test packets
    follow another to a destination where the data would be analyzed.
        </t>
        <t indent="0" pn="section-4.3-2">
For compatibility with <xref target="RFC9503" format="default" sectionFormat="of" derivedContent="RFC9503"/>, a Session-Sender <bcp14>MUST NOT</bcp14> include a Return Path Control Code sub-TLV
with the Control Code Flags set to No Reply Requested in a test packet that also contains a Reflected Test Packet Control TLV with a non-zero value.
A Session-Reflector that supports both TLVs <bcp14>MUST</bcp14> set the U flag to 1 in both the Return Path
and Reflected Test Packet Control TLVs within the reflected STAMP packet. Furthermore,
the Session-Reflector <bcp14>SHOULD</bcp14> log a notification to inform an operator about the misconstructed STAMP packet.
</t>
        <t indent="0" pn="section-4.3-3">
The Reflected Test Packet Control TLV can be combined with the Class of Service TLV <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>
to augment rate testing or testing in a multicast network that monitors the consistency
of Differentiated Services Code Point and ECN values
in forward and reverse directions of the particular STAMP-Test session.
</t>
      </section>
    </section>
    <section anchor="security" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-5-1">
 Security considerations discussed in <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/>,
 <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/>, <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>, and <xref target="RFC9503" format="default" sectionFormat="of" derivedContent="RFC9503"/>
 apply to this document.  Furthermore,
   spoofed STAMP-Test packets with the Reflected Test Packet Control TLV
   can be exploited to conduct a Denial-of-Service (DoS) attack. Hence,
   implementations <bcp14>MUST</bcp14> use an identity protection mechanism.
   For example, the Session-Reflector may verify the information about
the source of the STAMP packet against a pre-defined list of trusted
nodes. Furthermore, an implementation that supports this specification <bcp14>MUST</bcp14> provide administrative control of support of the
Reflected Test Packet Control TLV on a Session-Reflector with it being disabled by default.
   Also, either the STAMP authentication mode <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/> or the HMAC (Hashed Message Authentication Code) TLV <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/> <bcp14>SHOULD</bcp14> be used
   for a STAMP-Test session containing the Reflected Test Packet Control TLV.
   Note that if integrity protection is enabled, any in-path modification will cause verification to fail
   unless the modifying element is within the trust boundary and can recompute the integrity check.
      </t>
      <t indent="0" pn="section-5-2">
      Furthermore, a DoS attack using the Reflected Test Packet Control TLV might target the STAMP Session-Reflector
      by overloading it with test packet reflection, e.g., minuscule intervals and/or an excessive number of concurrent test sessions.
      To mitigate that, a Session-Reflector implementation that supports the new TLV <bcp14>MUST</bcp14>
      provide a mechanism to limit the reflection rate and volume of STAMP-Test packets
      (see <xref target="reflected-cntrl-tlv" format="default" sectionFormat="of" derivedContent="Section 3"/> for a detailed discussion).
      </t>
      <t indent="0" pn="section-5-3">
  Considering the potential number of reflected packets generated by a single test packet sent to a multicast address,
  parameters in the first STAMP-Test packet with the Reflected Test Packet Control TLV <bcp14>MUST</bcp14> be selected conservatively.
  Consider the Number of the Reflected Packets field value set to one.  As a result, a Session-Sender,
  by counting the packets reflected after originating a first STAMP-Test packet with the Reflected Test Packet Control TLV,
  can evaluate the load caused by using the Reflected Test Packet Control TLV in which more than
  a single reflected packet to the same multicast destination is requested.
  To further mitigate the risk of using the Reflected Test Packet Control TLV in a multicast network,
   a Session-Sender <bcp14>SHOULD</bcp14> sign packets using the HMAC TLV when sending such
   messages in unauthenticated mode <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/>. But even with the HMAC TLV, the Reflected Test Packet Control TLV
could be exploited by a replay attack. To mitigate that risk,
   a STAMP Session-Reflector <bcp14>SHOULD</bcp14> use the value of the Sequence Number field <xref target="RFC8762" format="default" sectionFormat="of" derivedContent="RFC8762"/> of the received STAMP-Test packet.
   If that value compared to the received value in the previous test packet of the same STAMP-Test session is not monotonically increasing,
   then the Session-Reflector <bcp14>MUST</bcp14> respond with a single reflected packet, setting the U flag to 1 <xref target="RFC8972" format="default" sectionFormat="of" derivedContent="RFC8972"/>.
That may not indicate a replay attack, but there is packet re-ordering or packet duplication in the network.
   An operator can use other diagnostic methods to characterize and localize the problem.
   An implementation of the Session-Reflector can use the Serial Number Arithmetic <xref target="RFC1982" format="default" sectionFormat="of" derivedContent="RFC1982"/>
   or any of the other methods to verify the correct ordering of test packets.
      </t>
      <t indent="0" pn="section-5-4">
A Session-Sender <bcp14>SHOULD NOT</bcp14> send the next STAMP-Test packet with the Reflected Test Packet Control TLV
before the Session-Reflector is expected to complete the transmission of all reflected packets in response to the Reflected Test Packet Control TLV
in the previous test packet. In some scenarios, the Reflected Test Packet Control TLV
might induce congestion on the transient bottleneck. <xref section="10" target="RFC9097" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9097#section-10" derivedContent="RFC9097"/>
specifies security requirements for capacity measurements with asymmetric UDP loads.
</t>
      <t indent="0" pn="section-5-5">
When planning In-Service capacity measurement, operators <bcp14>SHOULD</bcp14> follow recommendations formulated in Sections <xref target="RFC7497" sectionFormat="bare" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7497#section-3" derivedContent="RFC7497"/> and <xref target="RFC7497" sectionFormat="bare" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7497#section-7" derivedContent="RFC7497"/> of <xref target="RFC7497" format="default" sectionFormat="of" derivedContent="RFC7497"/>.
If the underlay network is ECN-capable, a Session-Reflector may receive STAMP-Test packets with the ECN field marked as Congestion Experienced (CE).
ECN markings provide an indication of incipient congestion rather than packet loss.
However, the interpretation of what constitutes "significant congestion" and the operational thresholds for reacting to ECN-CE depend on the specific deployment,
service objectives, and operator policy. Operators should be aware that In-Service capacity measurements may influence congestion conditions,
potentially contributing to ECN-CE marking in the network. Implementations and operational procedures <bcp14>SHOULD</bcp14> ensure that
the use of STAMP for In-Service measurement does not unintentionally degrade data traffic or lead to misinterpretation of ECN-related congestion signals.
Appropriate thresholds and mitigation actions remain deployment-specific and <bcp14>SHOULD</bcp14> be guided by operator policy and network performance objectives.
</t>
      <t indent="0" pn="section-5-6">
Furthermore, <xref section="3.1.5" target="RFC8085" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.5" derivedContent="RFC8085"/> determines that a UDP congestion control <bcp14>SHOULD</bcp14>
respond quickly to experienced congestion and account for loss rate and response time when choosing a new rate. And <xref section="8.1" target="RFC9097" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9097#section-8.1" derivedContent="RFC9097"/> specifies the load rate adjustment algorithm with its sample pseudocode offered in <xref section="A" target="RFC9097" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9097#appendix-A" derivedContent="RFC9097"/>.
</t>
    </section>
    <section anchor="iana-consider" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="iana-pkt-cntrl-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-reflected-test-packet-control">Reflected Test Packet Control TLV Type</name>
        <t indent="0" pn="section-6.1-1">
          IANA has assigned a new value for the Reflected Test Packet Control TLV
          in the "STAMP TLV Types" registry under the "Simple Two-way Active Measurement Protocol (STAMP)
          TLV Types" registry group as follows:
        </t>
        <table anchor="refl-cntrl-table" align="center" pn="table-1">
          <name slugifiedName="name-reflected-test-packet-control-">Reflected Test Packet Control TLV Type</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">12</td>
              <td align="left" colspan="1" rowspan="1">Reflected Test Packet Control</td>
              <td align="left" colspan="1" rowspan="1">RFC 10052</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-tlv-flag-sec" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-conformant-reflected-packet">Conformant Reflected Packet STAMP TLV Flag</name>
        <t indent="0" pn="section-6.2-1">
        IANA has allocated a bit position for the Conformant Reflected Packet STAMP TLV flag
        in the "STAMP TLV Flags" registry under the "Simple Two-way Active Measurement Protocol (STAMP)
        TLV Types" registry group as follows:
        </t>
        <table anchor="iana-tlv-flag-tbl" align="center" pn="table-2">
          <name slugifiedName="name-conformant-reflected-packet-">Conformant Reflected Packet STAMP TLV Flag</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Bit position</th>
              <th align="left" colspan="1" rowspan="1">Symbol</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">C</td>
              <td align="left" colspan="1" rowspan="1">Conformant</td>
              <td align="left" colspan="1" rowspan="1">RFC 10052</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-l2-l3-sub-tlv" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-layer-2-and-layer-3-address">Layer 2 and Layer 3 Address Group Sub-TLV Types</name>
        <t indent="0" pn="section-6.3-1">
        IANA has assigned values for the Layer 2 Address Group and Layer 3 Address Group sub-TLV Types
        in the "STAMP Sub-TLV Types" registry under the "Simple Two-way Active Measurement Protocol (STAMP)
        TLV Types" registry group as follows:
        </t>
        <table anchor="sub-tlv-type-tbl" align="center" pn="table-3">
          <name slugifiedName="name-stamp-sub-tlv-types-for-the">STAMP Sub-TLV Types for the Reflected Test Packet Control TLV</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
              <th align="left" colspan="1" rowspan="1">TLV Used</th>
              <th align="left" colspan="1" rowspan="1">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">Layer 2 Address Group</td>
              <td align="left" colspan="1" rowspan="1">Reflected Test Packet Control</td>
              <td align="left" colspan="1" rowspan="1">RFC 10052</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">11</td>
              <td align="left" colspan="1" rowspan="1">Layer 3 Address Group</td>
              <td align="left" colspan="1" rowspan="1">Reflected Test Packet Control</td>
              <td align="left" colspan="1" rowspan="1">RFC 10052</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IANA-STAMP" target="https://www.iana.org/assignments/stamp-tlv-types" quoteTitle="true" derivedAnchor="IANA-STAMP">
          <front>
            <title>STAMP Sub-TLV Types</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC1982" target="https://www.rfc-editor.org/info/rfc1982" quoteTitle="true" derivedAnchor="RFC1982">
          <front>
            <title>Serial Number Arithmetic</title>
            <author fullname="R. Elz" initials="R." surname="Elz"/>
            <author fullname="R. Bush" initials="R." surname="Bush"/>
            <date month="August" year="1996"/>
            <abstract>
              <t indent="0">The DNS has long relied upon serial number arithmetic, a concept which has never really been defined, certainly not in an IETF document, though which has been widely understood. This memo supplies the missing definition. It is intended to update RFC1034 and RFC1035. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1982"/>
          <seriesInfo name="DOI" value="10.17487/RFC1982"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC7497" target="https://www.rfc-editor.org/info/rfc7497" quoteTitle="true" derivedAnchor="RFC7497">
          <front>
            <title>Rate Measurement Test Protocol Problem Statement and Requirements</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="April" year="2015"/>
            <abstract>
              <t indent="0">This memo presents a problem statement for access rate measurement for test protocols to measure IP Performance Metrics (IPPM). Key rate measurement test protocol aspects include the ability to control packet characteristics on the tested path, such as asymmetric rate and asymmetric packet size.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7497"/>
          <seriesInfo name="DOI" value="10.17487/RFC7497"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8762" target="https://www.rfc-editor.org/info/rfc8762" quoteTitle="true" derivedAnchor="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 indent="0">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" target="https://www.rfc-editor.org/info/rfc8972" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC9503" target="https://www.rfc-editor.org/info/rfc9503" quoteTitle="true" derivedAnchor="RFC9503">
          <front>
            <title>Simple Two-Way Active Measurement Protocol (STAMP) Extensions for Segment Routing Networks</title>
            <author fullname="R. Gandhi" initials="R." role="editor" surname="Gandhi"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="M. Chen" initials="M." surname="Chen"/>
            <author fullname="B. Janssens" initials="B." surname="Janssens"/>
            <author fullname="R. Foote" initials="R." surname="Foote"/>
            <date month="October" year="2023"/>
            <abstract>
              <t indent="0">Segment Routing (SR) leverages the source routing paradigm. SR is applicable to both Multiprotocol Label Switching (SR-MPLS) and IPv6 (SRv6) forwarding planes. This document specifies Simple Two-Way Active Measurement Protocol (STAMP) extensions (as described in RFC 8762) for SR networks, for both the SR-MPLS and SRv6 forwarding planes, by augmenting the optional extensions defined in RFC 8972.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9503"/>
          <seriesInfo name="DOI" value="10.17487/RFC9503"/>
        </reference>
        <reference anchor="RFC9946" target="https://www.rfc-editor.org/info/rfc9946" quoteTitle="true" derivedAnchor="RFC9946">
          <front>
            <title>The UDP Speed Test Protocol (UDPSTP) for One-Way IP Capacity Metric Measurement</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <author fullname="L. Ciavattone" initials="L." surname="Ciavattone"/>
            <author fullname="R. Geib" initials="R." role="editor" surname="Geib"/>
            <date month="April" year="2026"/>
            <abstract>
              <t indent="0">This document addresses the problem of protocol support for measuring One-Way IP Capacity metrics specified by RFC 9097. The Method of Measurement discussed in that RFC requires a feedback channel from the receiver to control the sender's transmission rate in near real-time. This document defines the UDP Speed Test Protocol (UDPSTP) for conducting measurements as described in RFC 9097 and other related measurements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9946"/>
          <seriesInfo name="DOI" value="10.17487/RFC9946"/>
        </reference>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="IEEE-802.3-2022" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2022.9844436" derivedAnchor="IEEE-802.3-2022">
          <front>
            <title>IEEE Standard for Ethernet</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="July" year="2022"/>
          </front>
          <seriesInfo name="IEEE" value="Std 802.3-2022"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2022.9844436"/>
        </reference>
        <reference anchor="IEEE-802.15.4-2024" quoteTitle="true" target="https://doi.org/10.1109/IEEESTD.2024.10794632" derivedAnchor="IEEE-802.15.4-2024">
          <front>
            <title>IEEE Standard for Low-Rate Wireless Networks</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="December" year="2024"/>
          </front>
          <seriesInfo name="IEEE" value="Std 802.15.4-2024"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2024.10794632"/>
        </reference>
        <reference anchor="RFC7594" target="https://www.rfc-editor.org/info/rfc7594" quoteTitle="true" derivedAnchor="RFC7594">
          <front>
            <title>A Framework for Large-Scale Measurement of Broadband Performance (LMAP)</title>
            <author fullname="P. Eardley" initials="P." surname="Eardley"/>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="T. Burbridge" initials="T." surname="Burbridge"/>
            <author fullname="P. Aitken" initials="P." surname="Aitken"/>
            <author fullname="A. Akhter" initials="A." surname="Akhter"/>
            <date month="September" year="2015"/>
            <abstract>
              <t indent="0">Measuring broadband service on a large scale requires a description of the logical architecture and standardisation of the key protocols that coordinate interactions between the components. This document presents an overall framework for large-scale measurements. It also defines terminology for LMAP (Large-Scale Measurement of Broadband Performance).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7594"/>
          <seriesInfo name="DOI" value="10.17487/RFC7594"/>
        </reference>
        <reference anchor="RFC7799" target="https://www.rfc-editor.org/info/rfc7799" quoteTitle="true" derivedAnchor="RFC7799">
          <front>
            <title>Active and Passive Metrics and Methods (with Hybrid Types In-Between)</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="May" year="2016"/>
            <abstract>
              <t indent="0">This memo provides clear definitions for Active and Passive performance assessment. The construction of Metrics and Methods can be described as either "Active" or "Passive". Some methods may use a subset of both Active and Passive attributes, and we refer to these as "Hybrid Methods". This memo also describes multiple dimensions to help evaluate new methods as they emerge.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7799"/>
          <seriesInfo name="DOI" value="10.17487/RFC7799"/>
        </reference>
        <reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8085" quoteTitle="true" derivedAnchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t indent="0">The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t indent="0">Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t indent="0">Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t indent="0">This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC9097" target="https://www.rfc-editor.org/info/rfc9097" quoteTitle="true" derivedAnchor="RFC9097">
          <front>
            <title>Metrics and Methods for One-Way IP Capacity</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <author fullname="R. Geib" initials="R." surname="Geib"/>
            <author fullname="L. Ciavattone" initials="L." surname="Ciavattone"/>
            <date month="November" year="2021"/>
            <abstract>
              <t indent="0">This memo revisits the problem of Network Capacity Metrics first examined in RFC 5136. This memo specifies a more practical Maximum IP-Layer Capacity Metric definition catering to measurement and outlines the corresponding Methods of Measurement.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9097"/>
          <seriesInfo name="DOI" value="10.17487/RFC9097"/>
        </reference>
      </references>
    </references>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">
The authors thank <contact fullname="Zhang Li"/>, <contact fullname="Ruediger Geib"/>, <contact fullname="Rakesh Gandhi"/>, <contact fullname="Giuseppe Fioccola"/>, <contact fullname="Xiao Min"/>, <contact fullname="Greg White"/>, and <contact fullname="Rohan Bhosle"/> for their
thorough reviews and helpful suggestions, which improved the document.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="G." surname="Mirsky" fullname="Greg Mirsky">
        <organization showOnFrontPage="true">Ciena Corporation</organization>
        <address>
          <email>gregimirsky@gmail.com</email>
        </address>
      </author>
      <author fullname="Ernesto Ruffini" initials="E." surname="Ruffini">
        <organization showOnFrontPage="true">OutSys</organization>
        <address>
          <email>eruffini@outsys.org</email>
        </address>
      </author>
      <author fullname="Henrik Nydell" initials="H." surname="Nydell">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>hnydell@cisco.com</email>
        </address>
      </author>
      <author initials="R." surname="Foote" fullname="Richard Foote">
        <organization showOnFrontPage="true">Nokia</organization>
        <address>
          <email>footer.foote@nokia.com</email>
        </address>
      </author>
      <author fullname="Will Hawkins" initials="W." surname="Hawkins">
        <organization showOnFrontPage="true">University of Cincinnati</organization>
        <address>
          <email>hawkinsw@obs.cr</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
