<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ihlar-poem-delay-quic-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="POEM Delay">Periodic On-path Explicit Measurement of Delay</title>
    <seriesInfo name="Internet-Draft" value="draft-ihlar-poem-delay-quic-00"/>
    <author initials="M." surname="Ihlar" fullname="Marcus Ihlar">
      <organization>Ericsson</organization>
      <address>
        <email>marcus.ihlar@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Kühlewind" fullname="Mirja Kühlewind">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>SCONE</workgroup>
    <keyword>measurement</keyword>
    <keyword>delay</keyword>
    <keyword>RTT</keyword>
    <keyword>on-path</keyword>
    <abstract>
      <?line 48?>

<t>This document defines POEM Delay, a delay measurement companion to
the Periodic On-path Explicit Measurement (POEM) protocol for QUIC. A
delay sample packet, coalesced with ordinary QUIC packets, bounces
between the endpoints. On-path observers timestamp it in each
direction to measure the round-trip time and its components on
either side of the observer. Each sample carries a coarse indication
of how long the sending endpoint held it, so observers can largely
exclude endpoint delay. A report packet lets observers tell endpoints
how network delay is split between the two sides of the observer.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ihlar-poem-delay-quic/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCONE Working Group mailing list (<eref target="mailto:scone@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scone/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scone/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC <xref target="QUIC"/> encrypts the transport header fields that on-path
observers use to measure delay for TCP. This document defines POEM
Delay, an explicit delay signal for QUIC. Like the existing signals,
it trades accuracy against how often a measurement succeeds:</t>
      <ul spacing="normal">
        <li>
          <t>The spin bit (<xref section="17.4" sectionFormat="of" target="QUIC"/>) yields a measurement every
round trip for any traffic, but includes endpoint idle time, which
can be long when the application limits sending. Reordering and
loss cause further errors.</t>
        </li>
        <li>
          <t>The Delay bit <xref target="EXPLICIT-MEASUREMENTS"/> uses a single marked packet,
the delay sample, that bounces between client and server. An
endpoint that cannot reflect the sample within 1 ms drops it, so
measurements are accurate, but many samples are dropped when the
application limits sending or when acknowledgments are delayed by
more than 1 ms.</t>
        </li>
        <li>
          <t>POEM Delay keeps the accuracy of the Delay bit while more
measurements succeed. Endpoints can hold the sample up to 30 ms and
report the coarse response delay, which observers subtract.</t>
        </li>
      </ul>
      <t>POEM Delay carries the delay sample in a QUIC long header packet
coalesced with ordinary QUIC packets, following SCONE <xref target="SCONE"/> and
the loss measurement protocol of <xref target="POEM"/>, called POEM Loss here. As
in those protocols, all information is in the first octet. Compared
with the Delay bit, it adds:</t>
      <ul spacing="normal">
        <li>
          <t>a Sample ID, which keeps observers from pairing unrelated samples,
such as a lost sample and its replacement, and</t>
        </li>
        <li>
          <t>a coarse response delay, which observers subtract to measure
network delay rather than network plus endpoint delay.</t>
        </li>
      </ul>
      <t>A delay report packet, analogous to the POEM Loss report, lets an
observer tell an endpoint how network delay is split between the two
sides of the observer.</t>
      <t>POEM Loss and POEM Delay are independent and can be used together.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the following terms:</t>
      <dl>
        <dt>Delay sample:</dt>
        <dd>
          <t>The packet that bounces between the endpoints (<xref target="sample"/>).</t>
        </dd>
        <dt>Sample chain:</dt>
        <dd>
          <t>A delay sample generated by the client and its reflections, all
carrying the same Sample ID.</t>
        </dd>
        <dt>Generation:</dt>
        <dd>
          <t>Sending a delay sample that starts a new chain. Only the client
generates.</t>
        </dd>
        <dt>Reflection:</dt>
        <dd>
          <t>Sending a delay sample in response to receiving one.</t>
        </dd>
        <dt>Response delay:</dt>
        <dd>
          <t>The time an endpoint holds a delay sample before reflecting it.</t>
        </dd>
        <dt>Observer:</dt>
        <dd>
          <t>An on-path network element that timestamps delay samples or writes
into delay report packets.</t>
        </dd>
        <dt>Component:</dt>
        <dd>
          <t>The round-trip delay between the observer and one endpoint.</t>
        </dd>
        <dt>Network RTT:</dt>
        <dd>
          <t>The round-trip time excluding the response delay of both
endpoints.</t>
        </dd>
      </dl>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>After negotiating support (<xref target="tp"/>), the client generates a delay
sample. Each endpoint reflects a received sample in the next datagram
it sends, so the sample crosses the path once in each direction per
round trip. Each sample carries a 2-bit Sample ID and a 4-bit
Response Delay, which indicates in coarse steps how long the sender
held it.</t>
      <t>An observer timestamps each sample as it passes (<xref target="fig-overview"/>).</t>
      <figure anchor="fig-overview">
        <name>Delay Sample Operation</name>
        <sourcecode type="artwork"><![CDATA[
+--------+           +----------+           +--------+
| Client |           | Observer |           | Server |
+---+----+           +----+-----+           +----+---+
    |                     |                      |
    |---- DS(id,..) ----->| t0                   |
    |                     |--------------------->|
    |                     |                      | D1
    |                     |<----- DS(id,D1) -----|
    |<--------------------| t1                   |
 D2 |                     |                      |
    |---- DS(id,D2) ----->| t2                   |
    |                     |--------------------->|
    |                     |                      |

  Server component (network) = t1 - t0 - D1
  Client component (network) = t2 - t1 - D2
  Network RTT                = t2 - t0 - D1 - D2
]]></sourcecode>
      </figure>
      <t>An observer that sees both directions measures both components and
the network RTT. An observer that sees one direction measures the
RTT, but can only subtract the response delay of one endpoint
(<xref target="unidirectional"/>).</t>
      <t>Endpoints can also send delay reports (<xref target="report"/>), into which an
observer writes the fraction of the network RTT on the report
sender's side.</t>
    </section>
    <section anchor="sample">
      <name>Delay Sample Packets</name>
      <section anchor="delay-sample-packet-format">
        <name>Delay Sample Packet Format</name>
        <t>A delay sample packet is a QUIC long header packet that follows the
QUIC invariants; see <xref section="5.1" sectionFormat="of" target="INVARIANTS"/>.</t>
        <figure anchor="fig-sample">
          <name>Delay Sample Packet Format</name>
          <sourcecode type="artwork"><![CDATA[
Delay Sample Packet {
  Header Form (1) = 1,
  Reserved (1),
  Sample ID (2),
  Response Delay (4),
  Version (32) = 0xTBD3,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
        </figure>
        <dl>
          <dt>Header Form:</dt>
          <dd>
            <t>Set to 1 (0x80), indicating a QUIC long header packet.</t>
          </dd>
          <dt>Reserved:</dt>
          <dd>
            <t>The next bit (0x40) is reserved and can be set according to
<xref target="QUIC-BIT"/>.</t>
          </dd>
          <dt>Sample ID:</dt>
          <dd>
            <t>A 2-bit value (0x30) identifying the chain.</t>
          </dd>
          <dt>Response Delay:</dt>
          <dd>
            <t>A 4-bit code (0x0f) for the response delay of the sender
(<xref target="response-delay"/>).</t>
          </dd>
          <dt>Version:</dt>
          <dd>
            <t>Set to 0xTBD3, identifying a POEM Delay sample packet.</t>
          </dd>
          <dt>Destination Connection ID Length and Destination Connection ID:</dt>
          <dd>
            <t>Set to the same value as other packets in the datagram; see
<xref section="12.2" sectionFormat="of" target="QUIC"/>.</t>
          </dd>
          <dt>Source Connection ID Length and Source Connection ID:</dt>
          <dd>
            <t>Set to match the Source Connection ID of the packet that follows
in the datagram, or empty if that packet has a short header.</t>
          </dd>
        </dl>
        <t>Delay sample packets <bcp14>MUST</bcp14> be coalesced with other QUIC packets and
<bcp14>MUST</bcp14> be the first packet in the UDP datagram.</t>
        <t>As in SCONE <xref target="SCONE"/> and POEM Loss <xref target="POEM"/>, all signals are in the
first octet. This leaves the space after the connection IDs to the
coalesced QUIC packet and lets observers read the signals at a fixed
offset, without parsing the variable-length connection IDs.</t>
        <t>SCONE packets and POEM Loss packets also need to be first, so a
datagram carries at most one of these, a delay sample, or a delay
report. A reflection that cannot go in the next datagram for this
reason is sent in a later one, and the wait counts as response
delay. Endpoints <bcp14>SHOULD NOT</bcp14> add an optional packet of this kind, such
as a delay report, to a datagram while a reflection is pending.</t>
      </section>
      <section anchor="response-delay">
        <name>Response Delay</name>
        <t>The response delay runs from receiving the datagram carrying a delay
sample to sending the datagram carrying its reflection. Typically, an
endpoint records the receive time when it extracts the sample and
computes the response delay when it builds the reflection. A receive
time recorded before the coalesced QUIC packet is processed is
discarded if that packet is not successfully processed.</t>
        <t>The Response Delay field encodes the response delay in 2 ms steps:</t>
        <table anchor="tab-delay">
          <name>Response Delay Codes</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Response delay</th>
              <th align="left">Observer estimate</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0 ms to &lt; 2 ms</td>
              <td align="left">1 ms</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">2 ms to &lt; 4 ms</td>
              <td align="left">3 ms</td>
            </tr>
            <tr>
              <td align="left">n</td>
              <td align="left">2n ms to &lt; 2n+2 ms</td>
              <td align="left">2n+1 ms</td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">28 ms to &lt; 30 ms</td>
              <td align="left">29 ms</td>
            </tr>
            <tr>
              <td align="left">15</td>
              <td align="left">Not reported</td>
              <td align="left">(none)</td>
            </tr>
          </tbody>
        </table>
        <t>The 2 ms granularity balances measurement accuracy against exposure
of endpoint-internal timing, such as cryptographic processing time
(<xref target="privacy-delay"/>).</t>
        <t>An endpoint <bcp14>MUST NOT</bcp14> reflect a sample if the response delay would
reach MAX_RESPONSE_DELAY, which is 30 ms. The sample is dropped and
the chain ends. This value covers the default max_ack_delay of 25 ms
in QUIC versions 1 and 2 (<xref section="18.2" sectionFormat="of" target="QUIC"/>), and a fixed
limit lets the client choose T_Max (<xref target="generation"/>) without knowing
the server's acknowledgment behavior.</t>
        <t>Generated samples carry code 15. An endpoint <bcp14>MAY</bcp14> also send code 15
in a reflection, for example if it does not want to expose its
response delay.</t>
      </section>
      <section anchor="generation">
        <name>Generation</name>
        <t>Only the client generates delay samples. When and whether to
generate is up to the client; the server reflects any chain it
receives. A client that wants continuous measurement starts a new
chain:</t>
        <ul spacing="normal">
          <li>
            <t>in one of its first datagrams after receiving the server's
transport parameter,</t>
          </li>
          <li>
            <t>on a new path, once it is permitted to send on it (<xref target="migration"/>),</t>
          </li>
          <li>
            <t>when T_Max has elapsed since it last sent a sample of the current
chain without accepting a reflection, and</t>
          </li>
          <li>
            <t>when a chain ends because of the response delay limit or the chain
length limit (below).</t>
          </li>
        </ul>
        <t>A generated sample carries the Sample ID of the previous chain on
the path plus one, modulo 4 (any value for the first chain), and
Response Delay 15.</t>
        <t>T_Max needs to exceed the RTT plus the server's response delay, so
that the client does not replace chains still in flight. A suitable
value is twice the smoothed RTT plus MAX_RESPONSE_DELAY, or 1 second
until an RTT estimate is available, such as the smoothed RTT of QUIC
versions 1 and 2 (<xref section="5.3" sectionFormat="of" target="RECOVERY"/>).</t>
        <t>A client <bcp14>MUST NOT</bcp14> reflect a sample after accepting
MAX_CHAIN_REFLECTIONS reflections of the current chain, where
MAX_CHAIN_REFLECTIONS is 8. This ends the chain and bounds the effect
of extra samples that the acceptance rules cannot detect
(<xref target="reflection"/>). If the client starts a new chain in its place,
observers lose about one measurement per 8 round trips, since a
generated sample is never the later sample of a pair.</t>
        <t>A client can stop generating at any time, for example when the
connection is idle. If it also stops reflecting, the chain ends.</t>
      </section>
      <section anchor="reflection">
        <name>Reflection</name>
        <t>Each endpoint keeps, per path, the Sample ID of the current chain and
whether it is awaiting a sample, that is, whether it has sent a
sample of the chain and not yet accepted one in return.</t>
        <t>A server accepts a delay sample when:</t>
        <ul spacing="normal">
          <li>
            <t>its Sample ID differs from the current chain, which starts a new
chain;</t>
          </li>
          <li>
            <t>its Sample ID matches the current chain and the server is awaiting
a sample; or</t>
          </li>
          <li>
            <t>the server has no chain on this path, for example after a NAT
rebinding, which makes the sample's chain current.</t>
          </li>
        </ul>
        <t>A client accepts a delay sample when its Sample ID matches the
current chain and the client is awaiting a sample.</t>
        <t>Other samples are discarded without changing the chain state. An
endpoint can also decline an acceptable sample, for example because
of load, which ends the chain.</t>
        <t>An endpoint reflects an accepted sample in the first datagram it
sends on the same path that can carry it, copying the Sample ID and
setting the Response Delay. It can hold the reflection longer to mask
the RTT (<xref target="privacy-delay"/>), within MAX_RESPONSE_DELAY. If it accepts
a sample of a new chain while holding one, it reflects only the new
one. Endpoints record when they send each sample.</t>
        <t>With QUIC duplicate detection (<xref target="receiving-samples"/>), these rules
normally keep one sample in flight per chain and let the client end
stale chains by not reflecting them. A late sample of an old chain
costs at most one reflection, or the current chain if the server is
holding a sample. The rules cannot detect a second sample with the
current Sample ID, for example one injected on path or a stale sample
after the Sample ID wraps; MAX_CHAIN_REFLECTIONS bounds how long such
a sample circulates.</t>
      </section>
      <section anchor="reflection-opportunities">
        <name>Reflection Opportunities</name>
        <t>An endpoint <bcp14>MUST NOT</bcp14> send a datagram, or send it earlier, solely to
carry a delay sample. Delay samples therefore never generate traffic
or affect idle timeouts. If no datagram is sent within
MAX_RESPONSE_DELAY, the chain ends.</t>
        <t>When they have a choice, endpoints <bcp14>SHOULD</bcp14> carry delay samples in
datagrams that the peer will respond to promptly, giving the peer an
opportunity to reflect. In QUIC versions 1 and 2, these are
datagrams containing ack-eliciting packets, which the peer
acknowledges within its max_ack_delay (<xref section="13.2.1" sectionFormat="of" target="QUIC"/>).</t>
      </section>
      <section anchor="receiving-samples">
        <name>Receiving Delay Samples</name>
        <t>A delay sample <bcp14>MUST</bcp14> be discarded unless another QUIC packet in the
same datagram is successfully processed. QUIC packets discarded as
duplicates are not successfully processed, so endpoints ignore
duplicated samples. This relies on the QUIC version discarding
duplicates, as versions 1 and 2 do (<xref section="12.3" sectionFormat="of" target="QUIC"/>);
delay samples <bcp14>MUST NOT</bcp14> be used with versions that do not.</t>
      </section>
      <section anchor="migration">
        <name>Connection Migration</name>
        <t>Delay sample state is per path. After migrating, the client starts a
new chain once it is permitted to send on the new path. Endpoints
discard chain state for paths no longer in use.</t>
        <t>Endpoints <bcp14>SHOULD NOT</bcp14> send delay samples on a path while the QUIC
version restricts sending on it, such as before path validation in
QUIC versions 1 and 2. Delay samples count toward any
anti-amplification limit, such as that in <xref section="8.1" sectionFormat="of" target="QUIC"/>.</t>
      </section>
    </section>
    <section anchor="observing">
      <name>Observing Delay Samples</name>
      <t>An observer identifies delay sample packets by the long header bit
(0x80) and the version 0xTBD3, and determines their direction from
the UDP 4-tuple. Observers do not modify delay samples.</t>
      <t>Below, D is the observer estimate for the Response Delay of the
later sample of a pair (<xref target="tab-delay"/>). Each subtraction of D has an
error of up to 1 ms.</t>
      <section anchor="bidirectional-observers">
        <name>Bidirectional Observers</name>
        <t>An observer that sees both directions measures a component from two
consecutive samples of the same chain in opposite directions, seen
at t1 and t2:</t>
        <artwork><![CDATA[
component = t2 - t1 - D
]]></artwork>
        <t>This is the network component toward the endpoint the earlier sample
was sent to. Two consecutive components add up to the network RTT.</t>
      </section>
      <section anchor="unidirectional">
        <name>Unidirectional Observers</name>
        <t>Any observer can measure the RTT from two consecutive samples of the
same chain in the same direction, seen at t1 and t2:</t>
        <artwork><![CDATA[
rtt = t2 - t1 - D
]]></artwork>
        <t>This subtracts the response delay of the endpoint sending the
observed samples, but not that of the other endpoint, which is
carried in the direction the observer does not see. The result is the
network RTT plus up to MAX_RESPONSE_DELAY.</t>
      </section>
      <section anchor="validity-of-measurements">
        <name>Validity of Measurements</name>
        <t>Observers <bcp14>MUST</bcp14> only pair samples with the same Sample ID. A sample
with a new Sample ID starts a chain and is never the later sample of
a pair.</t>
        <t>If the later sample has Response Delay 15, D is 0 and the result
includes that endpoint's response delay, which is less than
MAX_RESPONSE_DELAY. Such results are comparable to Delay bit
measurements.</t>
        <t>Samples of a chain alternate in direction. If a bidirectional
observer sees two samples in the same direction with none in
between, one is a duplicate or a sample was missed. It <bcp14>MUST NOT</bcp14> use
either for a component, and resumes with the next sample in the
opposite direction.</t>
        <t>Otherwise, observers cannot detect duplicates or missed samples, and
chains they do not see can bring the Sample ID back to the same
value. Observers therefore discard implausible results, such as
negative values or intervals much shorter or longer than recent
measurements.</t>
      </section>
      <section anchor="observer-state">
        <name>Observer State</name>
        <t>Per flow, an observer keeps the Sample ID of the current chain and,
per direction, the time and Response Delay of the most recent sample,
marked invalid after a repeat in the same direction.</t>
      </section>
    </section>
    <section anchor="report">
      <name>Delay Report Packets</name>
      <section anchor="delay-report-packet-format">
        <name>Delay Report Packet Format</name>
        <t>A delay report packet is a QUIC long header packet into which an
observer writes delay localization information for the receiver.</t>
        <figure anchor="fig-report">
          <name>Delay Report Packet Format</name>
          <sourcecode type="artwork"><![CDATA[
Delay Report Packet {
  Header Form (1) = 1,
  Reserved (1),
  Upstream Delay Ratio (6),
  Version (32) = 0xTBD4,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
        </figure>
        <dl>
          <dt>Header Form, Reserved, and Connection ID fields:</dt>
          <dd>
            <t>As for delay sample packets (<xref target="sample"/>).</t>
          </dd>
          <dt>Upstream Delay Ratio:</dt>
          <dd>
            <t>A 6-bit value (0x3f). Values 0 to 62 represent the fraction
value/62 of the network RTT between the report sender and the
observer. The value 63 means no observer wrote the field; endpoints
<bcp14>MUST</bcp14> send 63.</t>
          </dd>
          <dt>Version:</dt>
          <dd>
            <t>Set to 0xTBD4, identifying a POEM Delay report packet.</t>
          </dd>
        </dl>
        <t>Delay report packets follow the coalescing rules for delay sample
packets (<xref target="sample"/>).</t>
      </section>
      <section anchor="sending-reports">
        <name>Sending Delay Report Packets</name>
        <t>Either endpoint <bcp14>MAY</bcp14> send delay reports. Endpoints <bcp14>SHOULD NOT</bcp14> send
more than one per network round trip; one every 4 to 8 round trips is
<bcp14>RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="observing-reports">
        <name>Observing Delay Report Packets</name>
        <t>An observer identifies delay report packets by the long header bit
(0x80) and the version 0xTBD4.</t>
        <t>The upstream component is the one toward the report sender. An
observer that has not measured both components <bcp14>MUST NOT</bcp14> write the
field. Otherwise, it <bcp14>MAY</bcp14> write:</t>
        <artwork><![CDATA[
ratio = upstream / (upstream + downstream) * 62
]]></artwork>
        <t>rounded and clamped to 0-62, using network components from
consecutive pairs of the same chain. Observers <bcp14>SHOULD</bcp14> average over
multiple round trips to reduce the effect of transient queuing and
response delay quantization; the method is up to the observer.</t>
        <t>Any observer <bcp14>MAY</bcp14> overwrite the field. As in POEM Loss <xref target="POEM"/>, the
receiver sees the value from the last observer on the path.</t>
      </section>
      <section anchor="receiving-reports">
        <name>Receiving Delay Report Packets</name>
        <t>A delay report packet <bcp14>MUST</bcp14> be discarded unless another QUIC packet in
the same datagram is successfully processed.</t>
        <t>A value of 63 means no observer wrote the field. Otherwise, the
receiver can combine the ratio with its own network RTT estimate
over a similar period:</t>
        <ul spacing="normal">
          <li>
            <t>Component toward the report sender = network_rtt * ratio / 62</t>
          </li>
          <li>
            <t>Component toward the receiver = network_rtt * (1 - ratio / 62)</t>
          </li>
        </ul>
        <t>RTT estimates from QUIC loss recovery (<xref section="5" sectionFormat="of" target="RECOVERY"/>)
include endpoint delay and would bias the result.</t>
        <t>Receivers <bcp14>SHOULD</bcp14> average over multiple reports.</t>
      </section>
      <section anchor="application-use">
        <name>Application Use</name>
        <t>Applications can use delay localization, for example, to distinguish
access network delay from delay elsewhere on the path, to inform path
selection when multiple network accesses are available, or for
diagnostics. How applications use this information is out of scope.</t>
      </section>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <section anchor="observer-location">
        <name>Observer Location</name>
        <t>As in POEM Loss <xref target="POEM"/>, reports do not identify the observer or its
location. Endpoints <bcp14>SHOULD NOT</bcp14> assume a particular observer location.</t>
      </section>
      <section anchor="measurement-rate-and-accuracy">
        <name>Measurement Rate and Accuracy</name>
        <t>A bidirectional observer gets at most one component measurement per
one-way trip, and any observer at most one RTT measurement per round
trip. Sample loss and long response delays reduce this rate, and
delay variation within an RTT cannot be measured.</t>
        <t>The coarse Response Delay adds an error of up to 1 ms per subtracted
response delay, which averaging reduces when response delays vary.</t>
      </section>
      <section anchor="bidirectional-requirement">
        <name>Bidirectional Requirement</name>
        <t>Unlike POEM Loss, POEM Delay requires both endpoints to reflect
samples. Components, network RTT, and reports require an observer
that sees both directions. With asymmetric routing, observers measure
an RTT that includes one endpoint's response delay.</t>
      </section>
      <section anchor="per-flow-scope">
        <name>Per-Flow Scope</name>
        <t>Measurements apply to a single flow identified by the UDP 4-tuple.</t>
      </section>
      <section anchor="relationship-to-the-spin-bit">
        <name>Relationship to the Spin Bit</name>
        <t>Delay samples and the spin bit are independent. Observers can prefer
delay sample measurements, which largely exclude endpoint delay and
tolerate reordering, and fall back to the spin bit when none are
recent; see <xref section="2.2.6" sectionFormat="of" target="EXPLICIT-MEASUREMENTS"/>.</t>
      </section>
    </section>
    <section anchor="tp">
      <name>Negotiating POEM Delay</name>
      <t>An endpoint indicates that it can receive and reflect delay samples
by including the poem_delay_supported transport parameter (0xTBD).</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> send delay sample packets unless both endpoints
included the transport parameter. An endpoint <bcp14>MAY</bcp14> send delay report
packets if its peer included it.</t>
      <t>The transport parameter <bcp14>MUST</bcp14> be empty. A non-zero length <bcp14>MUST</bcp14> be
treated as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>This transport parameter is valid for QUIC versions 1 <xref target="QUIC"/> and 2
<xref target="QUICv2"/> and any other version that recognizes the
versions and transport parameters registries established in
Sections <xref target="QUIC" section="22.2" sectionFormat="bare"/> and <xref target="QUIC" section="22.3" sectionFormat="bare"/> of <xref target="QUIC"/>.</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> remember the transport parameter for 0-RTT, so
delay sample and delay report packets cannot be sent until it is
received.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="on-path-modification">
        <name>On-Path Modification</name>
        <t>Delay reports rely on on-path elements modifying packets, the same
trust model as SCONE <xref target="SCONE"/> and POEM Loss <xref target="POEM"/>: an element
that can modify packets can also drop or delay them.</t>
        <t>Delay sample fields are not integrity protected. An on-path element
can change the Response Delay to mislead other observers, change the
Sample ID to end the chain or revive a stale one, or add a second
sample with the current Sample ID. The effect is limited to incorrect
or lost measurements until the chain ends, after at most
MAX_CHAIN_REFLECTIONS client reflections (<xref target="generation"/>).</t>
      </section>
      <section anchor="fake-packets">
        <name>Fake Packets</name>
        <t>Endpoints only accept delay samples and reports from datagrams with
a successfully processed QUIC packet, which off-path attackers cannot
construct.</t>
      </section>
      <section anchor="misleading-reports">
        <name>Misleading Reports</name>
        <t>An observer can write misleading ratios. Endpoints <bcp14>SHOULD</bcp14> treat
reports as advisory and compare them with their own measurements.</t>
      </section>
      <section anchor="falsified-delay-signals">
        <name>Falsified Delay Signals</name>
        <t>Endpoints can falsify delay samples:</t>
        <dl>
          <dt>Inflated response delay:</dt>
          <dd>
            <t>Observers underestimate network delay, possibly producing negative
values, which are discarded.</t>
          </dd>
          <dt>Deflated response delay:</dt>
          <dd>
            <t>Endpoint delay is attributed to the network between the observer
and that endpoint.</t>
          </dd>
          <dt>Extra samples:</dt>
          <dd>
            <t>Generating samples at a high rate or reflecting samples that should
not be accepted puts multiple samples in flight, producing
meaningless measurements.</t>
          </dd>
        </dl>
        <t>Observers cannot verify endpoint claims. Network operators <bcp14>MUST NOT</bcp14>
use POEM Delay signals as the sole input to automated network policy,
assurance, or engineering decisions, and should compare measurements
from untrusted endpoints with other data.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="flow-identification">
        <name>Flow Identification</name>
        <t>Delay sample and report packets add no flow identifiers beyond the
UDP 4-tuple and connection IDs. Chain state is not carried across
paths, and a 2-bit Sample ID cannot meaningfully link paths.</t>
      </section>
      <section anchor="endpoint-roles">
        <name>Endpoint Roles</name>
        <t>An observer that sees a new Sample ID appear can identify the client,
which is the only generator. Observers that see the handshake already
know this, and no measurement here uses it.</t>
      </section>
      <section anchor="privacy-delay">
        <name>Delay Exposure</name>
        <t>Delay samples expose the RTT and, to bidirectional observers, the RTT
to each endpoint. The spin bit already exposes the RTT;
<xref target="EXPLICIT-MEASUREMENTS"/> discusses the privacy implications.</t>
        <t>A precise response delay would directly reveal endpoint-internal
timing, such as cryptographic processing time, scheduling, or load.
The 2 ms steps avoid this, but do not prevent inference: observers
see the total interval between samples, so where network delay is
stable they can infer response delay variation from timing alone, as
with the spin bit and Delay bit. Over many samples, jitter around
step boundaries can reveal finer detail, and the code itself
distinguishes processing paths that differ by more than 2 ms.</t>
        <t><xref section="7.2" sectionFormat="of" target="EXPLICIT-MEASUREMENTS"/> describes masking the RTT
with a random reflection delay kept constant across connections for
some time. A client can do so without including the added delay in
the Response Delay, so that observers attribute it to the network on
the client side. The added delay counts toward MAX_RESPONSE_DELAY.</t>
        <t>Endpoints can send code 15 to withhold their response delay, or omit
the transport parameter to expose no delay information.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the following registrations.</t>
      <section anchor="poem-delay-version-numbers">
        <name>POEM Delay Version Numbers</name>
        <t>This document registers the following entries in the "QUIC Versions"
registry:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD3</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>POEM Delay Sample Packet</t>
          </dd>
        </dl>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD4</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>POEM Delay Report Packet</t>
          </dd>
        </dl>
      </section>
      <section anchor="poemdelaysupported-transport-parameter">
        <name>poem_delay_supported Transport Parameter</name>
        <t>This document registers the following entry in the "QUIC Transport
Parameters" registry:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>poem_delay_supported</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Permanent</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>QUIC Working Group (quic@ietf.org)</t>
          </dd>
          <dt>Notes:</dt>
          <dd>
            <t>(none)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC-BIT">
          <front>
            <title>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
        <reference anchor="QUICv2">
          <front>
            <title>QUIC Version 2</title>
            <author fullname="M. Duke" initials="M." surname="Duke"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies QUIC version 2, which is identical to QUIC version 1 except for some trivial details. Its purpose is to combat various ossification vectors and exercise the version negotiation framework. It also serves as a template for the minimum changes in any future version of QUIC.</t>
              <t>Note that "version 2" is an informal name for this proposal that indicates it is the second version of QUIC to be published as a Standards Track document. The protocol specified here uses a version number other than 2 in the wire image, in order to minimize ossification risks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9369"/>
          <seriesInfo name="DOI" value="10.17487/RFC9369"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RECOVERY">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="POEM">
          <front>
            <title>A Protocol for Periodic On-path Explicit Measurement</title>
            <author fullname="Marcus Ihlar" initials="L. M." surname="Ihlar">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <date day="20" month="July" year="2026"/>
            <abstract>
              <t>   This document defines the Periodic On-path Explicit Measurement
   (POEM) protocol, which enables passive on-path measurement of packet
   loss for QUIC flows.  POEM uses periodic marker packets, coalesced
   with ordinary QUIC packets, that allow on-path network elements to
   measure upstream packet loss by counting packets between markers.
   Marker packets also carry a sender-reported loss count, enabling
   observers to distinguish upstream from downstream loss.
   Additionally, POEM defines a report mechanism through which network
   elements communicate measurement results back to endpoints.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ihlar-poem-quic-01"/>
        </reference>
        <reference anchor="SCONE">
          <front>
            <title>Standard Communication with Network Elements (SCONE) Protocol</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Matt Joras" initials="M." surname="Joras">
              <organization>Meta</organization>
            </author>
            <author fullname="Marcus Ihlar" initials="L. M." surname="Ihlar">
              <organization>Ericsson</organization>
            </author>
            <date day="28" month="October" year="2026"/>
            <abstract>
              <t>   This document describes a protocol where on-path network elements can
   communicate their perspective on the maximum sustainable throughput
   for QUIC flows to endpoints.  This throughput advice suggests an
   upper bound on long-term average throughput, independent of and
   complementary to real-time congestion control signals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scone-protocol-10"/>
        </reference>
        <reference anchor="EXPLICIT-MEASUREMENTS">
          <front>
            <title>Explicit Host-to-Network Flow Measurements Techniques</title>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio"/>
            <author fullname="A. Ferrieux" initials="A." surname="Ferrieux"/>
            <author fullname="G. Fioccola" initials="G." surname="Fioccola"/>
            <author fullname="I. Lubashev" initials="I." surname="Lubashev"/>
            <author fullname="F. Bulgarella" initials="F." surname="Bulgarella"/>
            <author fullname="M. Nilo" initials="M." surname="Nilo"/>
            <author fullname="I. Hamchaoui" initials="I." surname="Hamchaoui"/>
            <author fullname="R. Sisto" initials="R." surname="Sisto"/>
            <date month="October" year="2023"/>
            <abstract>
              <t>This document describes protocol-independent methods called Explicit Host-to-Network Flow Measurement Techniques that can be applicable to transport-layer protocols between the client and server. These methods employ just a few marking bits inside the header of each packet for performance measurements and require the client and server to collaborate. Both endpoints cooperate by marking packets and, possibly, mirroring the markings on the round-trip connection. The techniques are especially valuable when applied to protocols that encrypt transport headers since they enable loss and delay measurements by passive, on-path network devices. This document describes several methods that can be used separately or jointly depending of the availability of marking bits, desired measurements, and properties of the protocol to which the methods are applied.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9506"/>
          <seriesInfo name="DOI" value="10.17487/RFC9506"/>
        </reference>
      </references>
    </references>
    <?line 793?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work builds on the Delay bit defined in
<xref target="EXPLICIT-MEASUREMENTS"/> and the communication model of the SCONE
protocol <xref target="SCONE"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
