<?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-01" 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-01"/>
    <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="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 787?>

<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:
H4sIAAAAAAAAA9Vd63LcxpX+30/RoctlMp4Z8SIpMhNlQ4vUmhWRYkgq3lQq
pcJgemYQYYAxGiA1ZuTah9gH2AfZX7tvsk+y59aNbgAjy67UbtZVLpEzQPfp
0+d859rN8Xis6qzOzbHeOdFXVVmXaZnreVnpK1Nl5SxL9etivE7qpT57v86z
NKv1hUlsU5mVKeodlUynlbmD169en13sqFmZFskKhptVybweZ8s8qcbr0qzG
3zVZOt4/UGlSm0VZbY51VsxLpbJ1dazrqrH14f7+V/uHKqlMAuN9a6Y6KWb6
vKhNVZha31ZJYddlBZPel9W7RVU262N98+L15Zl6Zzbw2exY6bFeteThr3lp
Lf5b8jKUsjUM+zbJywLI3Bir7Cqp6rffNWVt7LEuSrXOjvWfgRMjbWG6yswt
/LRZ4Q9/UerOFI2BmbRQsEMk7MAH9WaNjPwWqMuKhf5n/B4/XyVZDp/bFKb8
XWbq+aSsFvhFUqVL+GJZ12t7/OgRPocfZXdm4h57hB88mlblvTWPaIRHO0ol
Tb0sK1wujKKBk0D4xUSfI7vpE96EC3i5scHHMGBSZN8ndVYWx/qsylJry4K+
Mkzlil6Z0Mb9zsgDk7Rcdef6/X/9xzI391kxCyfMqr8m3a8+YVJ8bfKuMfJa
PLEqymoFb98R1//w5vzFsb5++eKr/f19+P388o8n1+cnl7c39Omzr776CoQK
RCt4h3boWJ+PT4mvY+LjeC3iDg+c/cvVq/MX57fji7OTmzfXZxdnbryvnuw/
hQdO8hqY+Y4/Onp8gO+8vLjiMVezmsXbiIqMAxm0So3HY51MbV0laa3U7TKz
GvSkwW/1zMyzwlhdL82nqZzeRU3bU476kb5fZulSmyKZ5jDQOrEWlu3kPVQH
Xc7h6/QdKBNqBaq5QnbqeQ7iNdE4sG4sDuIoAXF4Zyp5C9QgLROYJDUzfZ/B
4KBzWZFUGx7GP1Uvk1onOYzqyQANRq3VJmeu6Lp0pOlmDbwxyUqFxE03MFlT
1KhJMrCewiDGFEIVUHwRkQdT2hIApqo2OtHWFDNTjSuDmAEE06g05IiZhSOX
U2uqOxgL6ZllFqdrMrtUjiY9r8oVbNd9Ib/jMBN9MptlKM+wyM2IGed2MtE8
pVqZdAmCb1fAD4CCxVJ2qscKEPJVU2SIjBF6VcY2OS4blof0wYLWZQZvTFim
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
rPwfepC2nW2X30/U/wCHmdBg9WoAAA==

-->

</rfc>
