<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ihlar-poem-quic-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="POEM">A Protocol for Periodic On-path Explicit Measurement</title>
    <seriesInfo name="Internet-Draft" value="draft-ihlar-poem-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="July" day="20"/>
    <area>Web and Internet Transport</area>
    <workgroup>SCONE</workgroup>
    <keyword>measurement</keyword>
    <keyword>loss</keyword>
    <keyword>on-path</keyword>
    <abstract>
      <?line 47?>

<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>
    <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-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 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Packet loss is an important metric for network operations. Detecting,
measuring, and localizing loss helps maintain quality of service and
resolve performance issues.</t>
      <t>QUIC <xref target="QUIC"/> encrypts its transport headers, making passive
observation of loss through protocol fields impossible. Unlike TCP,
where sequence numbers and acknowledgments are visible to on-path
observers, QUIC provides no equivalent signal. As QUIC's share of
Internet traffic grows, this limits the ability of network operators
to measure loss. Explicit measurement techniques
<xref target="EXPLICIT-MEASUREMENTS"/> have been proposed to address this, where
endpoints cooperate by exposing measurement signals in the clear
portion of packets.</t>
      <t>The Explicit Flow Measurement Protocol <xref target="EFMP"/> defines a per-packet
signaling approach based on the Alternate-Marking method <xref target="AltMark"/>,
where a square signal bit (Q) and a loss event bit (L) are set on
every packet. This requires measurement headers on every packet in
the flow.</t>
      <t>This document defines the Periodic On-path Explicit Measurement (POEM)
protocol. Instead of per-packet signals, POEM uses periodic marker
packets that delineate measurement intervals. On-path observers count
packets between markers to estimate upstream loss, while the marker
carries a sender-reported loss count enabling end-to-end and downstream
loss estimation.</t>
      <t>POEM also defines a report mechanism where network elements write
measurement results into dedicated report packets, allowing endpoints
to observe where on the path loss is occurring.</t>
      <t>Like the SCONE protocol <xref target="SCONE"/>, POEM uses QUIC long header packets
coalesced with ordinary QUIC packets and relies on on-path network
elements that can read and modify packet fields. Because POEM only
requires a packet in a small fraction of datagrams, the remaining
datagrams are available for other coalesced signals such as SCONE.</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>The following terms are used in this document:</t>
      <dl>
        <dt>Marker packet:</dt>
        <dd>
          <t>A POEM packet sent by an endpoint at a fixed interval that
delineates measurement periods.</t>
        </dd>
        <dt>Report packet:</dt>
        <dd>
          <t>A POEM packet sent by an endpoint that an on-path network element
can update with measurement information.</t>
        </dd>
        <dt>Observer:</dt>
        <dd>
          <t>An on-path network element that counts packets and/or writes
measurement information into report packets.</t>
        </dd>
        <dt>Upstream loss:</dt>
        <dd>
          <t>Packet loss occurring between the sender and the observer.</t>
        </dd>
        <dt>Downstream loss:</dt>
        <dd>
          <t>Packet loss occurring between the observer and the receiver.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>POEM operates alongside QUIC connections. Endpoints negotiate POEM
support using a QUIC transport parameter (<xref target="tp"/>). Once negotiated,
endpoints periodically send marker packets coalesced with ordinary
QUIC packets.</t>
      <t>Marker packets are sent once every 64 packets. The marker carries:</t>
      <ul spacing="normal">
        <li>
          <t>A 1-bit alternating counter to detect marker loss.</t>
        </li>
        <li>
          <t>A 5-bit loss count reporting lost packets detected by the sender
since the previous marker.</t>
        </li>
      </ul>
      <t>On-path observers detect marker packets by their version field and
count packets transiting the flow (identified by the UDP 4-tuple)
between consecutive markers. A count less than 64 indicates upstream
loss. The observer can estimate downstream loss by subtracting its
upstream loss count from the sender's reported loss count, which
represents total end-to-end loss.</t>
      <t>Endpoints can also send report packets at a lower cadence. An
observer writes a 6-bit value into the report packet indicating the
fraction of observed loss that is upstream of its position.</t>
      <t><xref target="fig-overview"/> shows the basic operation of POEM.</t>
      <figure anchor="fig-overview">
        <name>POEM Protocol Operation</name>
        <sourcecode type="artwork"><![CDATA[
+--------+         +----------+           +----------+
|  QUIC  |         |          |           |   QUIC   |
| Sender |         | Observer |           | Receiver |
+---+----+         +----+-----+           +----+-----+
    |                   |                      |
    |--- MARKER(c=0, -->|--- MARKER(c=0, ----->|
    |    L=0) + QUIC    |    L=0) + QUIC       |
    |                   |                      |
    |--- data pkt 1 --->|--- data pkt 1 ------>|
    |--- data pkt 2 --->|    (lost)            |
    |       ...         |       ...            |
    |--- data pkt 63 -->|--- data pkt 62 ----->|
    |                   |                      |
    |--- MARKER(c=1, -->|--- MARKER(c=1, ----->|
    |    L=0) + QUIC    |    L=0) + QUIC       |
    |                   |                      |
    |  Observer counts 63 pkts between markers |
    |  and detects 1 upstream loss             |
    |                   |                      |
    |--- REPORT + QUIC->|--- (writes ratio) -->|
    |                   |                      |
]]></sourcecode>
      </figure>
      <t>Signals flow in the same direction as the data packets. The marker
and report packets travel from sender to receiver, and any measurement
written by the observer is read by the receiver. If the receiver
needs to communicate measurement information to the sender, it does
so via mechanisms outside the scope of this document.</t>
    </section>
    <section anchor="marker">
      <name>Marker Packets</name>
      <section anchor="marker-packet-format">
        <name>Marker Packet Format</name>
        <t>A marker packet is a QUIC long header packet that follows the QUIC
invariants; see <xref section="5.1" sectionFormat="of" target="INVARIANTS"/>.</t>
        <t><xref target="fig-marker"/> shows the format of the marker packet.</t>
        <figure anchor="fig-marker">
          <name>Marker Packet Format</name>
          <sourcecode type="artwork"><![CDATA[
Marker Packet {
  Header Form (1) = 1,
  Reserved (1),
  Counter (1),
  Loss Count (5),
  Version (32) = 0xTBD1,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
        </figure>
        <t>The fields are defined as follows:</t>
        <dl>
          <dt>Header Form:</dt>
          <dd>
            <t>The most significant bit (0x80) is set to 1, 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>Counter:</dt>
          <dd>
            <t>A 1-bit alternating counter (0x20). The sender toggles this bit
with each successive marker packet. This allows observers to detect
lost markers and aids synchronization for observers joining mid-flow.</t>
          </dd>
          <dt>Loss Count:</dt>
          <dd>
            <t>A 5-bit unsigned integer (0x1f) indicating the number of packets
that the sender has detected as lost since the previous marker
packet was sent. The value saturates at 31; if more than 31 losses
are detected in a single interval, the sender reports 31.</t>
          </dd>
          <dt>Version:</dt>
          <dd>
            <t>A 32-bit version field set to 0xTBD1, identifying this as a POEM
marker 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 same 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 field of the packet that
follows in the datagram. If the following packet has a short header,
this field is empty and the length is set to 0.</t>
          </dd>
        </dl>
        <t>Marker packets <bcp14>MUST</bcp14> be coalesced with other QUIC packets and <bcp14>MUST</bcp14> be
the first packet in the UDP datagram. A sender <bcp14>MUST NOT</bcp14> include more
than one marker packet in a datagram.</t>
      </section>
      <section anchor="marker-interval">
        <name>Marker Interval</name>
        <t>The marker interval is fixed at 64 packets. After sending a marker,
the sender counts 63 additional packets (including the QUIC packet
coalesced with the marker) and then sends the next marker.</t>
        <t>For the purpose of POEM, a packet is a single UDP datagram.
Observers count UDP datagrams on the 4-tuple regardless of how many
QUIC packets are coalesced within each datagram.</t>
        <t>The value 64 balances measurement granularity against overhead:
markers constitute less than 2% of total packets while individual
intervals yield useful loss counts at typical loss rates.</t>
      </section>
      <section anchor="sender-loss-count-semantics">
        <name>Sender Loss Count Semantics</name>
        <t>The sender maintains an Unreported Loss counter, as defined in
<xref target="EXPLICIT-MEASUREMENTS"/>, that persists across marker intervals.
Unlike <xref target="EXPLICIT-MEASUREMENTS"/>, where the counter state is
signaled as a single bit per packet, POEM reports the counter value
directly in the marker's loss count field.</t>
        <t>The counter is incremented each time QUIC's loss detection declares
a packet lost. If the implementation later determines that a
previously declared loss was spurious (e.g., a late acknowledgment
confirms delivery), the counter is decremented, which may cause it
to become negative.</t>
        <t>When constructing a marker packet, the sender sets the loss count
field to min(Unreported_Loss_counter, 31) if the counter is positive,
or to 0 otherwise. The sender then subtracts the reported value from
the counter.</t>
        <t>Spurious detections that drive the counter negative are compensated
by absorbing subsequent real losses until the counter returns to
positive.</t>
        <t>Observers <bcp14>MUST</bcp14> treat a loss count of 31 as "at least 31 losses."</t>
      </section>
      <section anchor="sending-markers">
        <name>Sending Marker Packets</name>
        <t>POEM packets can only be sent once both endpoints have exchanged
the poem_supported transport parameter (<xref target="tp"/>). This means the
first POEM packet cannot be coalesced with the Initial packets of a
QUIC handshake.</t>
        <t>A sender that has negotiated POEM support proceeds as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Maintain a packet counter, initialized to 0 after each marker.</t>
          </li>
          <li>
            <t>Maintain an Unreported Loss counter (persistent across markers),
initialized to 0 at connection start. Increment on each loss
declaration; decrement on each spurious loss detection. The counter
may become negative.</t>
          </li>
          <li>
            <t>After sending 63 packets following the previous marker, construct
the next marker packet:
            </t>
            <ul spacing="normal">
              <li>
                <t>Toggle the counter bit.</t>
              </li>
              <li>
                <t>Set the loss count field to min(Unreported_Loss_counter, 31)
if positive, or 0 otherwise.</t>
              </li>
              <li>
                <t>Subtract the reported value from the Unreported Loss counter.</t>
              </li>
              <li>
                <t>Reset the packet counter.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Coalesce the marker packet as the first packet in the next UDP
datagram, followed by one or more QUIC packets.</t>
          </li>
        </ol>
        <t>A sender <bcp14>SHOULD</bcp14> include a marker packet in one of the first few
datagrams sent after negotiation completes to allow observers to
begin measurement early.</t>
      </section>
      <section anchor="observing-markers">
        <name>Observing Marker Packets</name>
        <t>An observer identifies marker packets by the long header bit (0x80)
in the first byte and the version field 0xTBD1.</t>
        <t>An observer begins counting packets for a flow upon observing the
first marker on that 4-tuple. No measurement is possible until the
second marker is observed, at which point the first interval count
is available. This applies both to flows observed from the start
and to flows detected mid-way.</t>
        <t>When an observer detects a marker packet, it:</t>
        <ol spacing="normal" type="1"><li>
            <t>Records the current packet count for the flow (identified by
the UDP 4-tuple) since and including the previous marker.</t>
          </li>
          <li>
            <t>Reads the counter bit to detect marker loss. If the counter bit
is the same as the previous marker's counter bit, one marker was
lost (and the observer should treat the interval as spanning two
marker periods).</t>
          </li>
          <li>
            <t>Reads the loss count field, which indicates the sender's observed
end-to-end loss for the preceding interval.</t>
          </li>
          <li>
            <t>Computes upstream loss for the interval as:
upstream_loss = N - observed_packet_count, where N is 64 (or
128 if a lost marker was detected).</t>
          </li>
          <li>
            <t>Forwards the marker packet unmodified.</t>
          </li>
        </ol>
        <t>The observer does not modify marker packets.</t>
      </section>
      <section anchor="receiving-markers">
        <name>Receiving Marker Packets</name>
        <t>The receiver reads the marker packet to obtain:</t>
        <ul spacing="normal">
          <li>
            <t>The counter bit, to detect marker loss.</t>
          </li>
          <li>
            <t>The loss count, indicating the sender's reported losses.</t>
          </li>
        </ul>
        <t>The receiver <bcp14>MAY</bcp14> use this information for its own diagnostics or
relay it to the application layer.</t>
        <t>A marker packet <bcp14>MUST</bcp14> be discarded (its contents ignored) unless
another QUIC packet in the same datagram is successfully processed.</t>
      </section>
      <section anchor="migration">
        <name>Connection Migration</name>
        <t>When a QUIC connection migrates to a new path (new UDP 4-tuple),
the sender <bcp14>MUST</bcp14> reset its packet counter and <bcp14>MUST</bcp14> reset the
Unreported Loss counter. Carrying loss state across paths would
both produce meaningless measurements and risk linking the new path
to the previous one.</t>
        <t>A sender <bcp14>SHOULD</bcp14> send a marker in one of the first datagrams on the
new path.</t>
        <t>Observers track state per 4-tuple and therefore start fresh on the
new path.</t>
      </section>
    </section>
    <section anchor="report">
      <name>Report Packets</name>
      <section anchor="report-packet-format">
        <name>Report Packet Format</name>
        <t>A report packet is a QUIC long header packet that an on-path network
element can update with measurement information for the receiving
endpoint.</t>
        <t><xref target="fig-report"/> shows the format of the report packet.</t>
        <figure anchor="fig-report">
          <name>Report Packet Format</name>
          <sourcecode type="artwork"><![CDATA[
Report Packet {
  Header Form (1) = 1,
  Reserved (1),
  Upstream Ratio (6),
  Version (32) = 0xTBD2,
  Destination Connection ID Length (8),
  Destination Connection ID (0..2040),
  Source Connection ID Length (8),
  Source Connection ID (0..2040),
}
]]></sourcecode>
        </figure>
        <t>The fields are defined as follows:</t>
        <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>Upstream Ratio:</dt>
          <dd>
            <t>A 6-bit unsigned integer (0x3f) representing the fraction of
total observed loss that occurred upstream of the observer.
The value 63 is reserved to indicate that no observer has written
a value. When sent by the endpoint, this field <bcp14>MUST</bcp14> be set to 63.
An observer overwrites the field with a value between 0 and 62,
where 0 means all observed loss is downstream and 62 means all
observed loss is upstream. Intermediate values represent
proportional fractions (value/62).</t>
          </dd>
          <dt>Version:</dt>
          <dd>
            <t>A 32-bit version field set to 0xTBD2, identifying this as a POEM
report packet.</t>
          </dd>
          <dt>Destination Connection ID and Source Connection ID:</dt>
          <dd>
            <t>Same rules as for marker packets (<xref target="marker"/>).</t>
          </dd>
        </dl>
        <t>Report packets <bcp14>MUST</bcp14> be coalesced with other QUIC packets and <bcp14>MUST</bcp14>
be the first packet in the UDP datagram.</t>
      </section>
      <section anchor="upstream-ratio-semantics">
        <name>Upstream Ratio Semantics</name>
        <t>The upstream ratio encodes the observer's estimate of what fraction
of total path loss occurs upstream of its position. The value 63
indicates that no observer wrote a measurement. Values 0 through 62
represent the observer's estimate, where 0 means all loss is
downstream and 62 means all loss is upstream.</t>
        <t>The receiving endpoint combines this with its own end-to-end loss
estimate (from acknowledgment processing) to determine approximate
upstream and downstream loss rates. For example, if the endpoint
measures 3% end-to-end loss and receives an upstream ratio of 21
(approximately 1/3), it can infer roughly 1% upstream loss and 2%
downstream loss relative to the observer.</t>
      </section>
      <section anchor="sending-reports">
        <name>Sending Report Packets</name>
        <t>Report packets <bcp14>SHOULD</bcp14> be sent less frequently than marker packets.
A rate of one report every 4 to 8 marker intervals (every 256 to
512 packets) is <bcp14>RECOMMENDED</bcp14>. The precise cadence is a sender
decision.</t>
        <t>When sending a report packet, the sender sets the upstream ratio
field to 63 and coalesces the report as the first packet in the
UDP datagram.</t>
        <t>A sender <bcp14>MUST NOT</bcp14> send both a marker packet and a report packet in
the same datagram.</t>
      </section>
      <section anchor="observing-reports">
        <name>Observing Report Packets</name>
        <t>An observer identifies report packets by the long header bit (0x80)
in the first byte and the version field 0xTBD2.</t>
        <t>When an observer detects a report packet, it <bcp14>MAY</bcp14> write measurement
information into the upstream ratio field:</t>
        <ol spacing="normal" type="1"><li>
            <t>Compute the upstream loss rate from recent marker intervals.</t>
          </li>
          <li>
            <t>Compute the total loss rate from the sender's reported loss counts
over the same intervals.</t>
          </li>
          <li>
            <t>If total loss is non-zero, compute:
upstream_ratio = (upstream_loss / total_loss) * 62, clamped to
the range 0-62.</t>
          </li>
          <li>
            <t>Write the computed value into the upstream ratio field.</t>
          </li>
        </ol>
        <t>The upstream loss (from packet counting) and the sender's reported
loss count are not perfectly synchronized. The observer's count
reflects real-time loss for each interval, while the sender's count
depends on acknowledgment processing and lags by approximately one
round-trip time.</t>
        <t>To account for this, observers <bcp14>SHOULD</bcp14> compute the upstream ratio
over multiple marker intervals. Aggregating over several intervals
smooths out the timing difference and yields a ratio that converges
to the true loss split.</t>
        <t>Any observer on the path <bcp14>MAY</bcp14> write the upstream ratio field,
regardless of its current value. If no observer writes into the
report, the receiver sees 63 and knows no observer participated.</t>
        <section anchor="multiple-observers">
          <name>Multiple Observers</name>
          <t>If multiple observers exist on the path, each may overwrite the
previous value. The receiver therefore sees the perspective of the
last observer on the path (closest to the receiver).</t>
          <t>This is a trade-off for simplicity. For downlink traffic, the last
writer is typically the access network element closest to the
receiving endpoint, which is often the most relevant viewpoint. For
uplink traffic, the last writer is further from the user, which may
be less useful. A single-observer deployment, which is the common
case, is unaffected by this choice.</t>
          <t>Future extensions could define mechanisms for multiple observers to
report independently.</t>
        </section>
      </section>
      <section anchor="receiving-reports">
        <name>Receiving Report Packets</name>
        <t>The receiver reads the upstream ratio field. A value of 63 indicates
that no observer on the path wrote a measurement. Values 0 through 62
indicate an observer's estimate of the upstream loss fraction.</t>
        <t>Combined with its own end-to-end loss measurement, the receiver can
estimate:</t>
        <ul spacing="normal">
          <li>
            <t>Upstream loss rate = end_to_end_loss * (upstream_ratio / 62)</t>
          </li>
          <li>
            <t>Downstream loss rate = end_to_end_loss * (1 - upstream_ratio / 62)</t>
          </li>
        </ul>
        <t>The receiver can derive end-to-end loss either from its own
acknowledgment processing or by counting packets between markers
(applying the same technique as an observer). The latter provides
an independent measurement that does not depend on ACK processing.</t>
        <t>The upstream ratio is a statistical estimate that converges over
time. Receivers <bcp14>SHOULD</bcp14> average the ratio over multiple reports
before drawing conclusions about loss localization.</t>
        <t>The receiver has no information about which network element wrote
the ratio or where on the path it is positioned; see
<xref target="applicability"/>.</t>
        <t>A report packet <bcp14>MUST</bcp14> be discarded unless another QUIC packet in
the same datagram is successfully processed.</t>
      </section>
      <section anchor="application-use">
        <name>Application Use</name>
        <t>Applications can use the loss localization information, for example,
to:</t>
        <ul spacing="normal">
          <li>
            <t>Distinguish between access network issues and core/peering issues.</t>
          </li>
          <li>
            <t>Inform path migration decisions when an endpoint has multiple
available network accesses (e.g., Wi-Fi and cellular), by
comparing loss characteristics across paths.</t>
          </li>
          <li>
            <t>Provide diagnostic information to users or operators.</t>
          </li>
        </ul>
        <t>How applications use this information is out of scope for this
document.</t>
      </section>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <section anchor="observer-location">
        <name>Observer Location</name>
        <t>The POEM protocol does not carry any identifier or topology
information about the observer that writes a report. The receiving
endpoint knows only that some network element between the sender and
itself provided a loss split — not where on the path that element is
positioned.</t>
        <t>The interpretation of the upstream ratio depends on the observer's
location. A ratio written by an element at the access network edge
(e.g., a cellular UPF or broadband gateway) distinguishes access
from non-access loss. A ratio written by an element in the network
core provides a different, possibly less useful, split.</t>
        <t>A typical deployment involves a single observer in the access
network. The protocol makes no guarantees about observer placement,
however, and endpoints <bcp14>SHOULD NOT</bcp14> assume a particular observer
location.</t>
      </section>
      <section anchor="unidirectional-signal">
        <name>Unidirectional Signal</name>
        <t>POEM signals travel in the same direction as data. The receiver
obtains loss localization information but the sender does not, unless
the receiver communicates it back through other means. This is
analogous to the model used by other on-path signaling protocols
such as SCONE <xref target="SCONE"/>.</t>
      </section>
      <section anchor="per-flow-scope">
        <name>Per-Flow Scope</name>
        <t>POEM measurement applies to a single flow identified by the UDP
4-tuple. Separate flows receive independent measurements, even if
they share the same endpoints or network path.</t>
      </section>
    </section>
    <section anchor="tp">
      <name>Negotiating POEM</name>
      <t>A QUIC endpoint indicates that it is able to receive POEM packets by
including the poem_supported transport parameter (0xTBD) in the
QUIC handshake.</t>
      <t>Each endpoint independently indicates willingness to receive POEM
packets. An endpoint that does not include the poem_supported
transport parameter can send POEM packets if its peer includes the
transport parameter.</t>
      <t>The poem_supported transport parameter <bcp14>MUST</bcp14> be empty. Receiving a
non-zero length value <bcp14>MUST</bcp14> be treated as a connection error of type
TRANSPORT_PARAMETER_ERROR.</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> remember whether the poem_supported transport
parameter was present on the previous connection when using 0-RTT.
That is, POEM packets cannot be sent on a connection until the
transport parameter is received.</t>
    </section>
    <section anchor="relationship-to-congestion-control">
      <name>Relationship to Congestion Control</name>
      <t>POEM is a diagnostic protocol. The information it provides is
strictly informational and <bcp14>MUST NOT</bcp14> be used to directly control
sending rates or congestion responses.</t>
      <t>Applications may use POEM measurements to inform higher-level
decisions (e.g., adaptive bitrate selection), but these are
application-specific and independent of the congestion controller.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="on-path-modification">
        <name>On-Path Modification</name>
        <t>POEM relies on on-path network elements modifying report packets.
The ability to modify packets demonstrates that the element is
positioned to observe and potentially drop traffic, the same trust
model as SCONE <xref target="SCONE"/>.</t>
      </section>
      <section anchor="fake-poem-packets">
        <name>Fake POEM Packets</name>
        <t>An attacker that can inject packets could construct fake POEM
packets. Endpoints mitigate this by only accepting POEM information
from datagrams containing a successfully processed QUIC packet.
Off-path attackers cannot construct valid QUIC packets.</t>
      </section>
      <section anchor="misleading-reports">
        <name>Misleading Reports</name>
        <t>An on-path observer could write misleading upstream ratio values.
However, such an observer already has the ability to drop or delay
packets. Endpoints <bcp14>SHOULD</bcp14> treat POEM reports as advisory and
cross-reference with their own measurements.</t>
      </section>
      <section anchor="interaction-with-loss-detection">
        <name>Interaction with Loss Detection</name>
        <t>The loss count reveals information about the sender's loss detection
state. This is similar to information derivable from timing analysis
and congestion controller behavior, and does not represent significant
new exposure beyond what is available to on-path observers.</t>
      </section>
      <section anchor="falsified-loss-signals">
        <name>Falsified Loss Signals</name>
        <t>An endpoint can falsify POEM signals in two ways:</t>
        <dl>
          <dt>Inflated marker frequency:</dt>
          <dd>
            <t>Sending markers more frequently than the specified interval of 64
packets causes observers to perceive upstream loss that does not
exist. For example, sending markers every 32 packets makes it
appear that 50% of packets are lost upstream.</t>
          </dd>
          <dt>Inflated loss count:</dt>
          <dd>
            <t>Reporting a higher loss count than actually observed causes the
observer to conclude that downstream loss exists. Since downstream
loss typically falls within the operator's domain, this may trigger
investigation or remediation of non-existent faults.</t>
          </dd>
          <dt>Deflated loss count:</dt>
          <dd>
            <t>Reporting a lower loss count than actually observed (including
always reporting 0) causes the observer to attribute all observed
loss to the upstream segment, concealing downstream loss.</t>
          </dd>
        </dl>
        <t>In both cases, the observer has no reliable way to verify the
endpoint's claims. Network operators <bcp14>MUST NOT</bcp14> use POEM signals as
the sole input to automated network policy, assurance, or
engineering decisions. POEM measurements from untrusted endpoints
should be cross-referenced with other data sources before acting
on them.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="flow-identification">
        <name>Flow Identification</name>
        <t>POEM packets do not introduce new flow identifiers beyond what is
already visible in the UDP 4-tuple and QUIC connection IDs.</t>
      </section>
      <section anchor="measurement-exposure">
        <name>Measurement Exposure</name>
        <t>The loss count in marker packets reveals the sender's view of
end-to-end loss. This information is visible to all on-path elements
between the sender and receiver. The upstream ratio in report packets
(once written by an observer) reveals loss localization to downstream
observers and the receiver.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the following registrations.</t>
      <section anchor="poem-version-numbers">
        <name>POEM Version Numbers</name>
        <t>This document registers the following entries in the "QUIC Versions"
registry:</t>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD1</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 Marker Packet</t>
          </dd>
        </dl>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>0xTBD2</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 Report Packet</t>
          </dd>
        </dl>
      </section>
      <section anchor="poemsupported-transport-parameter">
        <name>poem_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_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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="6" month="July" 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-05"/>
        </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>
        <reference anchor="AltMark">
          <front>
            <title>Alternate-Marking Method</title>
            <author fullname="G. Fioccola" initials="G." role="editor" surname="Fioccola"/>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio"/>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <author fullname="T. Mizrahi" initials="T." surname="Mizrahi"/>
            <author fullname="T. Zhou" initials="T." surname="Zhou"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>This document describes the Alternate-Marking technique to perform packet loss, delay, and jitter measurements on live traffic. This technology can be applied in various situations and for different protocols. According to the classification defined in RFC 7799, it could be considered Passive or Hybrid depending on the application. This document obsoletes RFC 8321.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9341"/>
          <seriesInfo name="DOI" value="10.17487/RFC9341"/>
        </reference>
        <reference anchor="EFMP">
          <front>
            <title>Application of Explicit Measurement Techniques for QUIC Troubleshooting</title>
            <author fullname="Alexandre Ferrieux" initials="A." surname="Ferrieux">
              <organization>Orange Labs</organization>
            </author>
            <author fullname="Igor Lubashev" initials="I." surname="Lubashev">
              <organization>Akamai Technologies</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Marcus Ihlar" initials="L. M." surname="Ihlar">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Ike Kunze" initials="I." surname="Kunze">
              <organization>CUJO AI</organization>
            </author>
            <author fullname="Fabio Bulgarella" initials="F." surname="Bulgarella">
         </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
         </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document defines a protocol that can be used by QUIC endpoints
   to signal packet loss in a way that can be used by network devices to
   measure and locate the source of the loss.

   Discussion of this work is encouraged to happen on the QUIC IETF
   mailing list quic@ietf.org (mailto:quic@ietf.org) or on the GitHub
   repository which contains the draft: https://github.com/igorlord/
   draft-mdt-quic-explicit-measurements (https://github.com/igorlord/
   draft-mdt-quic-explicit-measurements).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mdt-quic-explicit-measurements-05"/>
        </reference>
      </references>
    </references>
    <?line 799?>

<section anchor="design-considerations">
      <name>Design Considerations</name>
      <section anchor="marker-interval-selection">
        <name>Marker Interval Selection</name>
        <t>The fixed interval of 64 packets is a trade-off. Shorter intervals
provide more frequent measurements at the cost of higher overhead.
Longer intervals reduce overhead but yield fewer samples and slower
detection of changes in loss patterns.</t>
        <t>Future versions of this protocol may allow endpoints to select from
a set of predefined intervals, with observers inferring the interval
from packet counting and the alternating counter bit.</t>
      </section>
      <section anchor="comparison-with-per-packet-approaches">
        <name>Comparison with Per-Packet Approaches</name>
        <t>Per-packet signals such as those in <xref target="EFMP"/> provide finer-grained
measurements from every packet. POEM trades granularity for lower
overhead: only ~1.5% of packets carry POEM headers, and observers
use simple packet counting rather than per-packet bit tracking.</t>
        <t>POEM is suited to deployments where statistical loss estimates over
multiple intervals are sufficient.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work is inspired by the explicit measurement techniques defined
in <xref target="EXPLICIT-MEASUREMENTS"/> and the architectural approach of the
SCONE protocol <xref target="SCONE"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Vd63Ibx5X+30/RoctlMgYgkrpEZqJsaJFasyJKDEnFm0ql
VINBA5xoMANPz5CCGbn2IfYB9kH21+6b7JPsufVtMJBlV2o3m6qUKWCm+/Tp
c75z7cZ4PFZt0ZbmSO8c64umbuu8LvW8bvSFaYp6VuT6dTVeZe2NPn2/Kou8
aPW5yWzXmKWp2h2VTaeNuYXXL16fnu+oWZ1X2RKGmzXZvB0XN2XWjFe1WY6/
64p8vL+v8qw1i7pZH+mimtdKFavmSLdNZ9vD/f2v9g9V1pgMxvvWTHVWzfRZ
1ZqmMq2+brLKruoGJr2rm3eLpu5WR/rq+etXp+qdWcNnsyOlx3oZyMN/lrW1
+N+al6GUbWHYt1lZV0Dm2lhll1nTvv2uq1tjj3RVq1VxpP8MnBhpC9M1Zm7h
r/US//iLUrem6gzMpIWCHSJhBz5o1ytk5LdAXVEt9D/j9/j5MitK+NzmMOXv
CtPOJ3WzwC+yJr+BL27admWPHjzA5/Cj4tZM3GMP8IMH06a+s+YBjfBgR6ms
a2/qBpcLo2jgJBB+PtFnyG76hDfhHF7ubPQxDJhVxfdZW9TVkT5titzauqKv
DFO5pFcmtHG/M/LAJK+X/bl+/1//cVOau6KaxRMWzV+z/lefMCm+NnnXGXkt
nVhVdbOEt2+J6394c/b8SF++eP7VPkiT1mev/nh8eXb86vqKPn361VdfgVCB
aEXv0A4d6bPxCfF1THwcr0Tc4YHTf7l4efb87Hp8fnp89eby9PzUjffV4/0n
8MBx2QIz3/FHDx8d4Dsvzi94zOWsZfE2oiLjSAatUuPxWGdT2zZZ3ip1fVNY
DXrS4bd6ZuZFZaxub8ynqZzeRU3bU476kb67KfIbbapsWsJAq8xaWLaT91gd
dD2Hr/N3oEyoFajmCtmp5yWI10TjwLqzOIijBMThnWnkLVCDvM5gktzM9F0B
g4POFVXWrHkY/1R7k7U6K2FUTwZoMGqtNiVzRbe1I013K+CNyZYqJm66hsm6
qkVNkoH1FAYxphKqgOLzhDyY0tYAME2z1pm2ppqZZtwYxAwgmEalIUfMLBy5
nlrT3MJYSM+ssDhdV9gb5WjS86ZewnbdVfJvHGaij2ezAuUZFrkeMePcTmaa
p1RLk9+A4Nsl8AOgYHEjO7XBChDyZVcViIwJejXGdiUuG5aH9MGCVnUBb0xY
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
teiw583/6Ia0UG37IYKJ+h+5OBrfgWwAAA==

-->

</rfc>
