<?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.6.26 (Ruby 3.0.2) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ippm-explicit-flow-measurements-03" category="info" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="Delay and Loss bits">Explicit Host-to-Network Flow Measurements Techniques</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-explicit-flow-measurements-03"/>
    <author initials="M." surname="Cociglio" fullname="Mauro Cociglio">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>mauro.cociglio@outlook.com</email>
      </address>
    </author>
    <author initials="A." surname="Ferrieux" fullname="Alexandre Ferrieux">
      <organization>Orange Labs</organization>
      <address>
        <email>alexandre.ferrieux@orange.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Riesstrasse, 25</street>
          <city>Munich</city>
          <code>80992</code>
          <country>Germany</country>
        </postal>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <author initials="I." surname="Lubashev" fullname="Igor Lubashev">
      <organization>Akamai Technologies</organization>
      <address>
        <email>ilubashe@akamai.com</email>
      </address>
    </author>
    <author initials="F." surname="Bulgarella" fullname="Fabio Bulgarella">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>fabio.bulgarella@guest.telecomitalia.it</email>
      </address>
    </author>
    <author initials="M." surname="Nilo" fullname="Massimo Nilo">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>massimo.nilo@telecomitalia.it</email>
      </address>
    </author>
    <author initials="I." surname="Hamchaoui" fullname="Isabelle Hamchaoui">
      <organization>Orange Labs</organization>
      <address>
        <email>isabelle.hamchaoui@orange.com</email>
      </address>
    </author>
    <author initials="R." surname="Sisto" fullname="Riccardo Sisto">
      <organization>Politecnico di Torino</organization>
      <address>
        <email>riccardo.sisto@polito.it</email>
      </address>
    </author>
    <date day="13" month="March" year="2023"/>
    <area>Transport</area>
    <workgroup>IPPM</workgroup>
    <keyword>Internet-Draft</keyword>
    <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 client and server. These methods employ just a
few marking bits inside the header of each packet for performance measurements
and require collaborative client and server. Both endpoints cooperate by marking
and, possibly, mirroring information back and forward 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.  Different techniques are considered within this
document.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Packet loss and delay are hard and pervasive problems of day-to-day network
operation. Proactively detecting, measuring, and locating them is crucial to
maintaining high QoS and timely resolution of crippling end-to-end throughput
issues. To this effect, network operators have been heavily relying on
information present in the clear in transport-layer headers (e.g. TCP sequence
and acknowledgment numbers) to allow for quantitative estimation of packet loss
and delay by passive on-path observation. With encrypted protocols, the
transport-layer headers are encrypted and passive packet loss and delay
observations are not possible, as also noted in <xref target="TRANSPORT-ENCRYPT"/>.</t>
      <t>Nevertheless, the accurate measurement of packet loss and delay experienced by
encrypted transport-layer protocols is highly desired. In this regard, the
Alternate-Marking method <xref target="AltMark"/> defines a consolidated method to perform
packet loss, delay, and jitter measurements on live traffic. But, as mentioned in
<xref target="IPv6AltMark"/>, it mainly applies to a network layer controlled domain managed
with a Network Management System (NMS), where the CPE or the PE routers are the
starting or the ending nodes. <xref target="AltMark"/> provides measurement within a
controlled domain in which the packets are marked. Therefore, <xref target="AltMark"/> is not
easy to apply to end-to-end transport-layer connections, because the
identification and the marking of the packets on the fly by the network nodes can
be prevented because of the encrypted transport-layer headers (e.g. QUIC, TCP).</t>
      <t>This document defines Explicit Host-to-Network Flow Measurement Techniques, which
are specifically designed for encrypted transport protocols. These hybrid
measurement methods (see <xref target="IPPM-METHODS"/>) are to be embedded into a
transport-layer protocol and are explicitly intended for exposing delay and loss
rate information to on-path measurement devices. Unlike <xref target="AltMark"/>, most of
these methods require collaborative endpoints. Since these measurement techniques
make performance information directly visible to the path, they do not rely
on an external NMS.</t>
      <t>The Explicit Host-to-Network Flow Measurement Techniques described in this
document are applicable to any transport-layer protocol, and, as an example, this
document describes QUIC and TCP bindings. The different methods can be used alone
or in combination. Each technique uses a small number of bits and exposes a
specific measurement.</t>
      <t>Following the recommendation in <xref target="RFC8558"/> of making path signals explicit,
this document proposes adding a small number of dedicated measurement bits to
the clear portion of the transport protocol headers. These bits can be added to
an unencrypted portion of a transport-layer header, e.g. UDP surplus space (see
<xref target="UDP-OPTIONS"/> and <xref target="UDP-SURPLUS"/>) or reserved bits in a QUIC v1 header, as
already done with the latency Spin bit (see <xref target="QUIC-TRANSPORT"/>).</t>
      <t>The Spin bit, Delay bit and loss bits explained in this document are inspired by
<xref target="AltMark"/>, <xref target="QUIC-MANAGEABILITY"/>, <xref target="QUIC-SPIN"/>, <xref target="I-D.trammell-tsvwg-spin"/>
and <xref target="I-D.trammell-ippm-spin"/>.</t>
      <t>Additional details about the Performance Measurements for QUIC are described in
the paper <xref target="ANRW19-PM-QUIC"/>.</t>
    </section>
    <section anchor="latency-bits">
      <name>Latency Bits</name>
      <t>This section introduces bits that can be used for round trip latency
measurements.  Whenever this section of the specification refers to packets, it
is referring only to packets with protocol headers that include the latency
bits.</t>
      <t><xref target="QUIC-TRANSPORT"/> introduces an explicit per-flow transport-layer signal for
hybrid measurement of RTT.  This signal consists of a Spin bit that toggles once
per RTT. <xref target="QUIC-SPIN"/> discusses an additional two-bit Valid Edge Counter (VEC)
to compensate for loss and reordering of the Spin bit and increase fidelity
of the signal in less than ideal network conditions.</t>
      <t>This document introduces a stand-alone single-bit delay signal that can be used
by passive observers to measure the RTT of a network flow, avoiding the Spin bit
ambiguities that arise as soon as network conditions deteriorate.</t>
      <section anchor="spinbit">
        <name>Spin Bit</name>
        <t>This section is a small recap of the Spin bit working mechanism. For a
comprehensive explanation of the algorithm, please see <xref target="QUIC-MANAGEABILITY"/>.</t>
        <t>The Spin bit is an Alternate-Marking <xref target="AltMark"/> generated signal, where the
size of the alternation changes with the flight size each RTT.</t>
        <t>The latency Spin bit is a single bit signal that toggles once per RTT,
enabling latency monitoring of a connection-oriented communication
from intermediate observation points.</t>
        <t>A "spin period" is a set of packets with the same Spin bit value sent during one
RTT time interval. A "spin period value" is the value of the Spin bit shared by
all packets in a spin period.</t>
        <t>The client and server maintain an internal per-connection spin value (i.e. 0 or
1) used to set the Spin bit on outgoing packets. Both endpoints initialize the
spin value to 0 when a new connection starts. Then:</t>
        <ul spacing="normal">
          <li>when the client receives a packet with the packet number larger than any
 number seen so far, it sets the connection spin value to the opposite value
 contained in the received packet;</li>
          <li>when the server receives a packet with the packet number larger than any
 number seen so far, it sets the connection spin value to the same value
 contained in the received packet.</li>
        </ul>
        <t>The computed spin value is used by the endpoints for setting the spin
bit on outgoing packets.  This mechanism allows the endpoints
to generate a square wave such that, by measuring the distance in time
between pairs of consecutive edges observed in the same direction, a
passive on-path observer can compute the round trip delay of that
network flow.</t>
        <t>Spin bit enables round trip latency measurement by observing a single direction
of the traffic flow.</t>
        <t>Note that packet reordering can cause spurious edges that require heuristics to
correct. The Spin bit performance deteriorates as soon as network impairments
arise as explained in <xref target="delaybit"/>.</t>
      </section>
      <section anchor="delaybit">
        <name>Delay Bit</name>
        <t>The Delay bit has been designed to overcome accuracy limitations experienced by
the Spin bit under difficult network conditions:</t>
        <ul spacing="normal">
          <li>packet reordering leads to generation of spurious edges and errors in delay
estimation;</li>
          <li>loss of edges causes wrong estimation of spin periods and therefore wrong RTT
measurements;</li>
          <li>application-limited senders cause the Spin bit to measure the application
delays instead of network delays.</li>
        </ul>
        <t>Unlike the Spin bit, which is set in every packet transmitted on the network,
the Delay bit is set only once per round trip.</t>
        <t>When the Delay bit is used, a single packet with a marked bit (the Delay bit)
bounces between a client and a server during the entire connection lifetime.
This single packet is called "delay sample".</t>
        <t>An observer placed at an intermediate point, observing a single direction of
traffic, tracking the delay sample and the relative timestamp, can measure the
round trip delay of the connection.</t>
        <t>The delay sample lifetime is comprised of two phases: initialization and
reflection.  The initialization is the generation of the delay sample, while the
reflection realizes the bounce behavior of this single packet between the two
endpoints.</t>
        <t>The next figure describes the elementary Delay bit mechanism.</t>
        <figure>
          <name>Delay bit mechanism</name>
          <artwork><![CDATA[
      +--------+   -   -   -   -   -   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   -   -   +--------+

      (a) No traffic at beginning.

      +--------+   0   0   1   -   -   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   -   -   +--------+

       (b) The Client starts sending data and
        sets the first packet as Delay Sample.

      +--------+   0   0   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   1   0   +--------+

       (c) The Server starts sending data
        and reflects the Delay Sample.

      +--------+   0   1   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   0   0   0   0   0   +--------+

      (d) The Client reflects the Delay Sample.

      +--------+   0   0   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   0   0   0   1   0   +--------+

      (e) The Server reflects the Delay Sample
       and so on.
]]></artwork>
        </figure>
        <section anchor="generation-phase">
          <name>Generation Phase</name>
          <t>Only client is actively involved in the generation phase. It maintains an
internal per-flow timestamp variable (<tt>ds_time</tt>) updated every time a delay
sample is transmitted.</t>
          <t>When connection starts, the client generates a new delay sample initializing the
Delay bit of the first outgoing packet to 1.  Then it updates the <tt>ds_time</tt>
variable with the timestamp of its transmission.</t>
          <t>The server initializes the Delay bit to 0 at the beginning of the connection,
and its only task during the connection is described in <xref target="reflection-phase"/>.</t>
          <t>In absence of network impairments, the delay sample should bounce between client
and server continuously, for the entire duration of the connection.  That is
highly unlikely for two reasons:</t>
          <ol spacing="normal" type="1"><li>the packet carrying the Delay bit might be lost;</li>
            <li>an endpoint could stop or delay sending packets because the application is
limiting the amount of traffic transmitted.</li>
          </ol>
          <t>To deal with these problems, the client generates a new delay sample if more
than a predetermined time (<tt>T_Max</tt>) has elapsed since the last delay sample
transmission (including reflections). Note that <tt>T_Max</tt> should be greater than
the max measurable RTT on the network. See <xref target="tmax-selection"/> for details.</t>
        </section>
        <section anchor="reflection-phase">
          <name>Reflection Phase</name>
          <t>Reflection is the process that enables the bouncing of the delay sample between
a client and a server.  The behavior of the two endpoints is almost the same.</t>
          <ul spacing="normal">
            <li>Server side reflection: when a delay sample arrives, the server marks the
first packet in the opposite direction as the delay sample.</li>
            <li>Client side reflection: when a delay sample arrives, the client marks the
first packet in the opposite direction as the delay sample. It also updates
the <tt>ds_time</tt> variable when the outgoing delay sample is actually forwarded.</li>
          </ul>
          <t>In both cases, if the outgoing delay sample is being transmitted with a delay
greater than a predetermined threshold after the reception of the incoming delay
sample (1ms by default), the delay sample is not reflected, and the outgoing
Delay bit is kept at 0.</t>
          <t>By doing so, the algorithm can reject measurements that would overestimate the
delay due to lack of traffic on the endpoints.  Hence, the maximum estimation
error would amount to twice the threshold (e.g. 2ms) per measurement.</t>
        </section>
        <section anchor="tmax-selection">
          <name>T_Max Selection</name>
          <t>The internal <tt>ds_time</tt> variable allows a client to identify delay sample losses.
Considering that a lost delay sample is regenerated at the end of an explicit
time (<tt>T_Max</tt>) since the last generation, this same value can be used by an
observer to reject a measure and start a new one.</t>
          <t>In other words, if the difference in time between two delay samples is greater
or equal than <tt>T_Max</tt>, then these cannot be used to produce a delay measure.
Therefore the value of <tt>T_Max</tt> must also be known to the on-path network probes.</t>
          <t>There are two alternatives to select the <tt>T_Max</tt> value so that both client and
observers know it. The first one requires that <tt>T_Max</tt> is known a priori
(<tt>T_Max_p</tt>) and therefore set within the protocol specifications that implements
the marking mechanism (e.g. 1 second which usually is greater than the max
expectable RTT). The second alternative requires a dynamic mechanism able to
adapt the duration of the <tt>T_Max</tt> to the delay of the connection (<tt>T_Max_c</tt>).</t>
          <t>For instance, client and observers could use the connection RTT as a basis for
calculating an effective <tt>T_Max</tt>. They should use a predetermined initial value
so that <tt>T_Max = T_Max_p</tt> (e.g. 1 second) and then, when a valid RTT is
measured, change <tt>T_Max</tt> accordingly so that <tt>T_Max = T_Max_c</tt>. In any case, the
selected <tt>T_Max</tt> should be large enough to absorb any possible variations in the
connection delay.</t>
          <t><tt>T_Max_c</tt> could be computed as two times the measured <tt>RTT</tt> plus a fixed amount
of time (<tt>100ms</tt>) to prevent low <tt>T_Max</tt> values in case of very small RTTs.
The resulting formula is: <tt>T_Max_c = 2RTT + 100ms</tt>. If <tt>T_Max_c</tt> is greater than
<tt>T_Max_p</tt> then <tt>T_Max_c</tt> is forced to <tt>T_Max_p</tt> value.</t>
          <t>Note that the observer's <tt>T_Max</tt> should always be less than or equal to the
client's <tt>T_Max</tt> to avoid considering as a valid measurement what is actually
the client's <tt>T_Max</tt>. To obtain this result, the client waits for two
consecutive incoming samples and computes the two related RTTs. Then it takes
the largest of them as the basis of the <tt>T_Max_c</tt> formula. At this point,
observers have already measured a valid RTT and then computed their <tt>T_Max_c</tt>.</t>
        </section>
        <section anchor="delay-measurement-using-delay-bit">
          <name>Delay Measurement Using Delay Bit</name>
          <t>When the Delay bit is used, a passive observer can use delay samples directly
and avoid inherent ambiguities in the calculation of the RTT as can be seen in
Spin bit analysis.</t>
          <section anchor="rtt-measurement">
            <name>RTT Measurement</name>
            <t>The delay sample generation process ensures that only one packet marked with the
Delay bit set to 1 runs back and forth between two endpoints per round trip
time.  To determine the RTT measurement of a flow, an on-path passive observer
computes the time difference between two delay samples observed in a single
direction.</t>
            <t>To ensure a valid measurement, the observer must verify that the distance in
time between the two samples taken into account is less than <tt>T_Max</tt>.</t>
            <figure>
              <name>Round-trip time (both direction)</name>
              <artwork><![CDATA[
           =======================|======================>
           = **********     -----Obs---->     ********** =
           = * Client *                       * Server * =
           = **********     <------------     ********** =
           <==============================================

                     (a) client-server RTT

           ==============================================>
           = **********     ------------>     ********** =
           = * Client *                       * Server * =
           = **********     <----Obs-----     ********** =
           <======================|=======================

                     (b) server-client RTT
]]></artwork>
            </figure>
          </section>
          <section anchor="half-rtt-measurement">
            <name>Half-RTT Measurement</name>
            <t>An observer that is able to observe both forward and return traffic directions
can use the delay samples to measure "upstream" and "downstream" RTT components,
also known as the half-RTT measurements. It does this by measuring the time
between a delay sample observed in one direction and the delay sample previously
observed in the opposite direction.</t>
            <t>As with RTT measurement, the observer must verify that the distance in time
between the two samples taken into account is less than <tt>T_Max</tt>.</t>
            <t>Note that upstream and downstream sections of paths between the endpoints and
the observer, i.e. observer-to-client vs client-to-observer and
observer-to-server vs server-to-observer, may have different delay
characteristics due to the difference in network congestion and other factors.</t>
            <figure>
              <name>Half Round-trip time (both direction)</name>
              <artwork><![CDATA[
           =======================>
           = **********     ------|----->     **********
           = * Client *          Obs          * Server *
           = **********     <-----|------     **********
           <=======================

                  (a) client-observer half-RTT

                                  =======================>
             **********     ------|----->     ********** =
             * Client *          Obs          * Server * =
             **********     <-----|------     ********** =
                                  <=======================

                  (b) observer-server half-RTT
]]></artwork>
            </figure>
          </section>
          <section anchor="intra-domain-rtt-measurement">
            <name>Intra-Domain RTT Measurement</name>
            <t>Intra-domain RTT is the portion of the entire RTT used by a flow to traverse the
network of a provider.  To measure intra-domain RTT, two observers capable of
observing traffic in both directions must be employed simultaneously at ingress
and egress of the network to be measured.  Intra-domain RTT is difference
between the two computed upstream (or downstream) RTT components.</t>
            <figure>
              <name>Intra-domain Round-trip time (client-observer: upstream)</name>
              <artwork><![CDATA[
        =========================================>
        = =====================>
        = = **********      ---|-->           ---|-->      **********
        = = * Client *         Obs               Obs       * Server *
        = = **********      <--|---           <--|---      **********
        = <=====================
        <=========================================

                 (a) client-observer RTT components (half-RTTs)

                               ==================>
            **********      ---|-->           ---|-->      **********
            * Client *         Obs               Obs       * Server *
            **********      <--|---           <--|---      **********
                               <==================

                 (b) the intra-domain RTT resulting from the
                 subtraction of the above RTT components
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="observers-algorithm">
          <name>Observer's Algorithm</name>
          <t>An on-path observer maintains an internal per-flow variable to keep track of
time at which the last delay sample has been observed.</t>
          <t>A unidirectional observer, upon detecting a delay sample:</t>
          <ul spacing="normal">
            <li>if a delay sample was also detected previously in the same direction and the
distance in time between them is less than <tt>T_Max - K</tt>, then the two delay
samples can be used to calculate RTT measurement. <tt>K</tt> is a protection
threshold to absorb differences in <tt>T_Max</tt> computation and delay variations
between two consecutive delay samples (e.g. <tt>K = 10% T_Max</tt>).</li>
          </ul>
          <t>If the observer can observe both forward and return traffic flows, and it is
able to determine which direction contains the client and the server (e.g. by
observing the connection handshake), upon detecting a delay sample:</t>
          <ul spacing="normal">
            <li>if a delay sample was also detected in the opposite direction and the distance
in time between them is less than <tt>T_Max - K</tt>, then the two delay samples can
be used to measure the observer-client half-RTT or the observer-server
half-RTT, according to the direction of the last delay sample observed.</li>
          </ul>
        </section>
        <section anchor="two-bits-delay-measurement-spin-bit-delay-bit">
          <name>Two Bits Delay Measurement: Spin Bit + Delay Bit</name>
          <t>Spin and Delay bit algorithms work independently. If both marking methods are
used in the same connection, observers can choose the best measurement between
the two available:</t>
          <ul spacing="normal">
            <li>when a precise measurement can be produced using the Delay bit, observers
choose it;</li>
            <li>when a Delay bit measurement is not available, observers choose the
approximate Spin bit one.</li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="loss-bits">
      <name>Loss Bits</name>
      <t>This section introduces bits that can be used for loss measurements.
Whenever this section of the specification refers to packets, it is
referring only to packets with protocol headers that include the loss
bits -- the only packets whose loss can be measured.</t>
      <ul spacing="normal">
        <li>T: the "round Trip loss" bit is used in combination with the Spin bit to
measure round-trip loss. See <xref target="rtlossbit"/>.</li>
        <li>Q: the "sQuare signal" bit is used to measure upstream loss. See
<xref target="squarebit"/>.</li>
        <li>L: the "Loss event" bit is used to measure end-to-end loss. See <xref target="lossbit"/>.</li>
        <li>R: the "Reflection square signal" bit is used in combination with Q bit to
measure end-to-end loss. See <xref target="refsquarebit"/>.</li>
      </ul>
      <t>Loss measurements enabled by T, Q, and L bits can be implemented by those loss
bits alone (T bit requires a working Spin bit). Two-bit combinations Q+L and Q+R
enable additional measurement opportunities discussed below.</t>
      <t>Each endpoint maintains appropriate counters independently and separately for
each separately identifiable flow (each sub-flow for multipath connections).</t>
      <t>Since loss is reported independently for each flow, all bits (except for L bit)
require a certain minimum number of packets to be exchanged per flow before any
signal can be measured. Therefore, loss measurements work best for flows that
transfer more than a minimal amount of data.</t>
      <section anchor="rtlossbit">
        <name>T Bit -- Round Trip Loss Bit</name>
        <t>The round Trip loss bit is used to mark a variable number of packets exchanged
twice between the endpoints realizing a two round-trip reflection. A passive
on-path observer, observing either direction, can count and compare the number
of marked packets seen during the two reflections, estimating the loss rate
experienced by the connection. The overall exchange comprises:</t>
        <ul spacing="normal">
          <li>the client selects, generates and consequently transmits
a first train of packets, by setting the T bit to 1;</li>
          <li>the server, upon receiving each packet included in the first train, reflects
to the client a respective second train of packets of the same size as the
first train received, by setting the T bit to 1;</li>
          <li>the client, upon receiving each packet included in the second train, reflects
to the server a respective third train of packets of the same size as the
second train received, by setting the T bit to 1;</li>
          <li>the server, upon receiving each packet included in the third train, finally
reflects to the client a respective fourth train of packets of the same size
as the third train received, by setting the T bit to 1.</li>
        </ul>
        <t>Packets belonging to the first round trip (first and second train)
represent the Generation Phase, while those belonging to the second
round trip (third and fourth train) represent the Reflection Phase.</t>
        <t>A passive on-path observer can count and compare the number of marked
packets seen during the two round trips (i.e. the first and third
or the second and the fourth trains of packets, depending on which
direction is observed) and estimate the loss rate experienced by the
connection. This process is repeated continuously to obtain more
measurements as long as the endpoints exchange traffic.  These
measurements can be called Round Trip losses.</t>
        <t>Since packet rates in two directions may be different, the number of marked
packets in the train is determined by the direction with the lowest packet rate.
See <xref target="tbit-details"/> for details on packet generation.</t>
        <section anchor="round-trip-loss">
          <name>Round Trip Loss</name>
          <t>Since the measurements are performed on a portion of the traffic exchanged
between the client and the server, the observer calculates the end-to-end Round
Trip Packet Loss (RTPL) that, statistically, will correspond to the loss rate
experienced by the connection along the entire network path.</t>
          <figure>
            <name>Round-trip packet loss (both direction)</name>
            <artwork><![CDATA[
           =======================|======================>
           = **********     -----Obs---->     ********** =
           = * Client *                       * Server * =
           = **********     <------------     ********** =
           <==============================================

                     (a) client-server RTPL

           ==============================================>
           = **********     ------------>     ********** =
           = * Client *                       * Server * =
           = **********     <----Obs-----     ********** =
           <======================|=======================

                     (b) server-client RTPL
]]></artwork>
          </figure>
          <t>This methodology also allows the Half-RTPL measurement and
the Intra-domain RTPL measurement in a way similar to RTT measurement.</t>
          <figure>
            <name>Half Round-trip packet loss (both direction)</name>
            <artwork><![CDATA[
           =======================>
           = **********     ------|----->     **********
           = * Client *          Obs          * Server *
           = **********     <-----|------     **********
           <=======================

                  (a) client-observer half-RTPL

                                  =======================>
             **********     ------|----->     ********** =
             * Client *          Obs          * Server * =
             **********     <-----|------     ********** =
                                  <=======================

                  (b) observer-server half-RTPL
]]></artwork>
          </figure>
          <figure>
            <name>Intra-domain Round-trip packet loss (observer-server)</name>
            <artwork><![CDATA[
                           =========================================>
                                             =====================> =
        **********      ---|-->           ---|-->      ********** = =
        * Client *         Obs               Obs       * Server * = =
        **********      <--|---           <--|---      ********** = =
                                             <===================== =
                           <=========================================

             (a) observer-server RTPL components (half-RTPLs)

                           ==================>
        **********      ---|-->           ---|-->      **********
        * Client *         Obs               Obs       * Server *
        **********      <--|---           <--|---      **********
                           <==================

             (b) the intra-domain RTPL resulting from the
             subtraction of the above RTPL components
]]></artwork>
          </figure>
        </section>
        <section anchor="tbit-details">
          <name>Setting the Round Trip Loss Bit on Outgoing Packets</name>
          <t>The round Trip loss signal requires a working Spin-bit signal to separate trains
of marked packets (packets with T bit set to 1).  A "pause" of at least one
empty spin-bit period between each phase of the algorithm serves as such
separator for the on-path observer. The connection between T Bit and Spin-bit
helps the correlations on the observer.</t>
          <t>The client maintains a "generation token" count that is set to zero at the
beginning of the session and is incremented every time a packet is received
(marked or unmarked). The client also maintains a "reflection counter" that
starts at zero at the beginning of the session.</t>
          <t>The client is in charge of launching trains of marked packets and does so
according to the algorithm:</t>
          <ol spacing="normal" type="1"><li>Generation Phase. The client starts generating marked packets for two
consecutive spin-bit periods; when the client transmits a packet and a
"generation token" is available, the client marks the packet and retires a
"generation token". If no token is available, the outgoing packet is
transmitted unmarked.  At the end of the first spin-bit period spent in
generation, the reflection counter is unlocked to start counting incoming
marked packets that will be reflected later;</li>
            <li>Pause Phase. When the generation is completed, the client pauses till it has
observed one entire Spin bit period with no marked packets.  That Spin bit
period is used by the observer as a separator between generated and
reflected packets.  During this marking pause, all the outgoing packets are
transmitted with T bit set to 0.  The reflection counter is still
incremented every time a marked packet arrives;</li>
            <li>Reflection Phase. The client starts transmitting marked packets,
decrementing the reflection counter for each transmitted marked packet until
the reflection counter reached zero. The "generation token" method from the
generation phase is used during this phase as well.  At the end of the first
spin-period spent in reflection, the reflection counter is locked to avoid
incoming reflected packets incrementing it;</li>
            <li>Pause Phase 2. The pause phase is repeated after the reflection phase and
serves as a separator between the reflected packet train and a new packet
train.</li>
          </ol>
          <t>The generation token counter should be capped to limit the effects of a
subsequent sudden reduction in the other endpoint's packet rate that could
prevent that endpoint from reflecting collected packets. The most conservative
cap value is <tt>1</tt>.</t>
          <t>A server maintains a "marking counter" that starts at zero and is incremented
every time a marked packet arrives. When the server transmits a packet and the
"marking counter" is positive, the server marks the packet and decrements the
"marking counter". If the "marking counter" is zero, the outgoing packet is
transmitted unmarked.</t>
          <t>Note that a choice of 2-RTT (two spin periods) for the generation phase is a
tradeoff between the percentage of marked packets (i.e. the percentage of
traffic monitored) and the measurement delay. Using this value the algorithm
produces a measurement approximately every 6-RTT (<tt>2</tt> generation, <tt>~2</tt>
reflection, <tt>2</tt> pauses), marking <tt>~1/3</tt> of packets exchanged in the slower
direction (see <xref target="tbit-losscov"/>). Choosing a generation phase of 1-RTT, we would
produce measurements every 4-RTT, monitoring just <tt>~1/4</tt> of packets in the
slower direction.</t>
          <t>It is worth mentioning that problems can happen in some cases especially if the
rate suddenly changes, but in the implementation, the mechanism here described
worked well with normal traffic conditions.</t>
        </section>
        <section anchor="observers-logic-for-round-trip-loss-signal">
          <name>Observer's Logic for Round Trip Loss Signal</name>
          <t>The on-path observer counts marked packets and separates different trains by
detecting spin-bit periods (at least one) with no marked packets.  The Round
Trip Packet Loss (RTPL) is the difference between the size of the Generation
train and the Reflection train.</t>
          <t>In the following example, packets are represented by two bits (first one
is the Spin bit, second one is the round Trip loss bit):</t>
          <figure>
            <name>Round Trip Loss signal example</name>
            <artwork><![CDATA[
        Generation          Pause           Reflection       Pause
   ____________________ ______________ ____________________ ________
  |                    |              |                    |        |
   01 01 00 01 11 10 11 00 00 10 10 10 01 00 01 01 10 11 10 00 00 10

]]></artwork>
          </figure>
          <t>Note that 5 marked packets have been generated of which 4 have been reflected.</t>
        </section>
        <section anchor="tbit-losscov">
          <name>Loss Coverage and Signal Timing</name>
          <t>A cycle of the round Trip loss signaling algorithm contains 2 RTTs of Generation
phase, 2 RTTs of Reflection phase, and two Pause phases at least 1 RTT in
duration each.  Hence, the loss signal is delayed by about 6 RTTs since the loss
events.</t>
          <t>The observer can only detect loss of marked packets that occurs after its
initial observation of the Generation phase and before its subsequent
observation of the Reflection phase. Hence, if the loss occurs on the path that
sends packets at a lower rate (typically ACKs in such asymmetric scenarios),
<tt>2/6</tt> (<tt>1/3</tt>) of the packets will be sampled for loss detection.</t>
          <t>If the loss occurs on the path that sends packets at a higher rate,
<tt>lowPacketRate/(3*highPacketRate)</tt> of the packets will be sampled for loss
detection. For protocols that use ACKs, the portion of packets sampled for loss
in the higher rate direction during unidirectional data transfer is
<tt>1/(3*packetsPerAck)</tt>, where the value of <tt>packetsPerAck</tt> can vary by protocol,
by implementation, and by network conditions.</t>
        </section>
      </section>
      <section anchor="squarebit">
        <name>Q Bit -- sQuare Bit</name>
        <t>The sQuare bit (Q bit) takes its name from the square wave generated by its
signal. This method is based on the Alternate-Marking method <xref target="AltMark"/> and
the Q bit represents the "packet color" that allows to mark consecutive blocks
of packets with different colors. This method does not require cooperation from
both endpoints.</t>
        <t><xref target="AltMark"/> introduces two variations of the Alternate-Marking method depending
on whether the color is switched according to a fixed timer or after a fixed
number of packets. The method based on fixed timer can measure packet loss on a
network segment by cooperating and synchronized observers on both ends of the
segment comparing packets counters for the same packet blocks. The time length of
the blocks can be chosen depending on the desired measurement frequency, but it
must be long enough to guarantee the proper operation with respect to clock errors
and network delay issues.</t>
        <t>The Q bit method described in this document chooses the color-switching method
based on a fixed number of packets for each block. This approach has the
advantage that it does not require cooperating or synchronized observers or
network elements. Each probe can measure packet loss autonomously without
relying on an external Network Management System (NMS). For the purpose of the
packet loss measurement, all blocks have the same number of packets, and it is
necessary to detect only the loss event and not to identify the exact block with
losses.</t>
        <t>Following the method based on fixed number of packets, the square wave signal is
generated by the switching of the Q bit: every outgoing packet contains the Q
bit value, which is initialized to 0 and inverted after sending N packets (a
sQuare Block or simply Q Block). Hence, Q Period is 2*N.</t>
        <t>Observation points can estimate upstream losses by watching a single direction
of the traffic flow and counting the number of packets in each observed Q Block,
as described in <xref target="upstreamloss"/>.</t>
        <section anchor="q-block-length-selection">
          <name>Q Block Length Selection</name>
          <t>The length of the block must be known to the on-path network probes.  There are
two alternatives to selecting the Q Block length. The first one requires that
the length is known a priori and therefore set within the protocol
specifications that implements the marking mechanism. The second requires the
sender to select it.</t>
          <t>In this latter scenario, the sender is expected to choose N (Q Block
length) based on the expected amount of loss and reordering on the
path.  The choice of N strikes a compromise -- the observation could
become too unreliable in case of packet reordering and/or severe loss
if N is too small, while short flows may not yield a useful upstream
loss measurement if N is too large (see <xref target="upstreamloss"/>).</t>
          <t>The value of N should be at least 64 and be a power of 2. This requirement allows
an Observer to infer the Q Block length by observing one period of the square
signal. It also allows the Observer to identify flows that set the loss bits to
arbitrary values (see <xref target="ossification"/>).</t>
          <t>If the sender does not have sufficient information to make an informed decision
about Q Block length, the sender should use N=64, since this value has been
extensively tried in large-scale field tests and yielded good results.
Alternatively, the sender may also choose a random power-of-2 N for each flow,
increasing the chances of using a Q Block length that gives the best signal for
some flows.</t>
          <t>The sender must keep the value of N constant for a given flow.</t>
        </section>
        <section anchor="upstreamloss">
          <name>Upstream Loss</name>
          <t>Blocks of N (Q Block length) consecutive packets are sent with the same
value of the Q bit, followed by another block of N packets with an
inverted value of the Q bit.  Hence, knowing the value of N, an
on-path observer can estimate the amount of upstream loss after
observing at least N packets.  The upstream loss rate (<tt>uloss</tt>) is one
minus the average number of packets in a block of packets with the
same Q value (<tt>p</tt>) divided by N (<tt>uloss=1-avg(p)/N</tt>).</t>
          <t>The observer needs to be able to tolerate packet reordering that can
blur the edges of the square signal, as explained in <xref target="endmarkingblock"/>.</t>
          <figure>
            <name>Upstream loss</name>
            <artwork><![CDATA[
          =====================>
          **********     -----Obs---->     **********
          * Client *                       * Server *
          **********     <------------     **********

            (a) in client-server channel (uloss_up)

          **********     ------------>     **********
          * Client *                       * Server *
          **********     <----Obs-----     **********
                               <=====================

            (b) in server-client channel (uloss_down)
]]></artwork>
          </figure>
        </section>
        <section anchor="endmarkingblock">
          <name>Identifying Q Block Boundaries</name>
          <t>Packet reordering can produce spurious edges in the square signal. To address
this, the observer should look for packets with the current Q bit value up to X
packets past the first packet with a reverse Q bit value. The value of X, a
"Marking Block Threshold", should be less than <tt>N/2</tt>.</t>
          <t>The choice of X represents a trade-off between resiliency to reordering and
resiliency to loss. A very large Marking Block Threshold will be able to
reconstruct Q Blocks despite a significant amount of reordering, but it may
erroneously coalesce packets from multiple Q Blocks into fewer Q Blocks, if loss
exceeds 50% for some Q Blocks.</t>
          <section anchor="Qburst">
            <name>Improved Resilience to Burst Losses</name>
            <t>Burst losses can affect Q measurements accuracy. Generally, burst losses can be
absorbed and correctly measured if smaller than the established Q Block
length. If entire Q Block length of packets get lost in a burst, however, the
observer may be left completely unaware of the loss.</t>
            <t>To improve burst loss resilience, an observer may consider a received Q Block
larger than the selected Q Block length as an indication of a burst loss
event. The observer would then compute the loss as three times Q Block length
minus the measured block length. By doing so, the observer can detect burst
losses of less than two blocks (e.g., less than 128 packets for Q Block length
of 64 packets). A burst loss of two or more consecutive periods would still
remain unnoticed by the observer (or underestimated if a period longer than Q
Block length were formed).</t>
          </section>
        </section>
      </section>
      <section anchor="lossbit">
        <name>L Bit -- Loss Event Bit</name>
        <t>The Loss Event bit uses an Unreported Loss counter maintained by the protocol
that implements the marking mechanism. To use the Loss Event bit, the protocol
must allow the sender to identify lost packets. This is true of protocols such
as QUIC, partially true for TCP and SCTP (losses of pure ACKs are not detected)
and is not true of protocols such as UDP and IP/IPv6.</t>
        <t>The Unreported Loss counter is initialized to 0, and L bit of every outgoing
packet indicates whether the Unreported Loss counter is positive (L=1 if the
counter is positive, and L=0 otherwise).</t>
        <t>The value of the Unreported Loss counter is decremented every time a packet
with L=1 is sent.</t>
        <t>The value of the Unreported Loss counter is incremented for every packet that
the protocol declares lost, using whatever loss detection machinery the protocol
employs. If the protocol is able to rescind the loss determination later, a
positive Unreported Loss counter may be decremented due to the rescission, but
it should not become negative due to the rescission.</t>
        <t>This loss signaling is similar to loss signaling in <xref target="ConEx"/>, except the Loss
Event bit is reporting the exact number of lost packets, whereas Echo Loss bit
in <xref target="ConEx"/> is reporting an approximate number of lost bytes.</t>
        <t>For protocols, such as TCP (<xref target="TCP"/>), that allow network devices to change data
segmentation, it is possible that only a part of the packet is lost. In these
cases, the sender must increment Unreported Loss counter by the fraction of the
packet data lost (so Unreported Loss counter may become negative when a packet
with L=1 is sent after a partial packet has been lost).</t>
        <t>Observation points can estimate the end-to-end loss, as determined by the
upstream endpoint, by counting packets in this direction with the L bit equal to
1, as described in <xref target="endtoendloss"/>.</t>
        <section anchor="endtoendloss">
          <name>End-To-End Loss</name>
          <t>The Loss Event bit allows an observer to estimate the end-to-end loss rate by
counting packets with L bit value of 0 and 1 for a given flow. The end-to-end
loss rate is the fraction of packets with L=1.</t>
          <t>The assumption here is that upstream loss affects packets with L=0 and L=1
equally. If some loss is caused by tail-drop in a network device, this may be a
simplification.  If the sender's congestion controller reduces the packet send
rate after loss, there may be a sufficient delay before sending packets with L=1
that they have a greater chance of arriving at the observer.</t>
          <section anchor="loss-profile">
            <name>Loss Profile Characterization</name>
            <t>The Loss Event bit allows an observer to characterize loss profile, since the
distribution of observed packets with L bit set to 1 roughly corresponds to the
distribution of packets lost between 1 RTT and 1 RTO before (see
<xref target="loss-correlation"/>).  Hence, observing random single instances of L bit set
to 1 indicates random single packet loss, while observing blocks of packets
with L bit set to 1 indicates loss affecting entire blocks of packets.</t>
          </section>
        </section>
        <section anchor="lq-bits-loss-measurement-using-l-and-q-bits">
          <name>L+Q Bits -- Loss Measurement Using L and Q Bits</name>
          <t>Combining L and Q bits allows a passive observer watching a single direction of
traffic to accurately measure:</t>
          <ul spacing="normal">
            <li>upstream loss: sender-to-observer loss (see <xref target="upstreamloss"/>)</li>
            <li>downstream loss: observer-to-receiver loss (see <xref target="downstreamloss"/>)</li>
            <li>end-to-end loss: sender-to-receiver loss on the observed path (see
<xref target="endtoendloss"/>) with loss profile characterization (see <xref target="loss-profile"/>)</li>
          </ul>
          <section anchor="loss-correlation">
            <name>Correlating End-to-End and Upstream Loss</name>
            <t>Upstream loss is calculated by observing packets that did not suffer the
upstream loss (<xref target="upstreamloss"/>). End-to-end loss, however, is calculated by
observing subsequent packets after the sender's protocol detected the loss.
Hence, end-to-end loss is generally observed with a delay of between 1 RTT (loss
declared due to multiple duplicate acknowledgements) and 1 RTO (loss declared
due to a timeout) relative to the upstream loss.</t>
            <t>The flow RTT can sometimes be estimated by timing protocol handshake
messages. This RTT estimate can be greatly improved by observing a dedicated
protocol mechanism for conveying RTT information, such as the Spin bit (see
<xref target="spinbit"/>) or Delay bit (see <xref target="delaybit"/>).</t>
            <t>Whenever the observer needs to perform a computation that uses both upstream and
end-to-end loss rate measurements, it should use upstream loss rate leading the
end-to-end loss rate by approximately 1 RTT. If the observer is unable to
estimate RTT of the flow, it should accumulate loss measurements over time
periods of at least 4 times the typical RTT for the observed flows.</t>
            <t>If the calculated upstream loss rate exceeds the end-to-end loss rate calculated
in <xref target="endtoendloss"/>, then either the Q Period is too short for the amount of
packet reordering or there is observer loss, described in <xref target="observerloss"/>. If
this happens, the observer should adjust the calculated upstream loss rate to
match end-to-end loss rate, unless the following applies.</t>
            <t>In case of a protocol, such as TCP or SCTP, that does not track losses of pure
ACK packets, observing a direction of traffic dominated by pure ACK packets
could result in measured upstream loss that is higher than measured end-to-end
loss, if said pure ACK packets are lost upstream. Hence, if the measurement is
applied to such protocols, and the observer can confirm that pure ACK packets
dominate the observed traffic direction, the observer should adjust the
calculated end-to-end loss rate to match upstream loss rate.</t>
          </section>
          <section anchor="downstreamloss">
            <name>Downstream Loss</name>
            <t>Because downstream loss affects only those packets that did not suffer upstream
loss, the end-to-end loss rate (<tt>eloss</tt>) relates to the upstream loss rate
(<tt>uloss</tt>) and downstream loss rate (<tt>dloss</tt>) as <tt>(1-uloss)(1-dloss)=1-eloss</tt>.
Hence, <tt>dloss=(eloss-uloss)/(1-uloss)</tt>.</t>
          </section>
          <section anchor="observerloss">
            <name>Observer Loss</name>
            <t>A typical deployment of a passive observation system includes a network tap
device that mirrors network packets of interest to a device that performs
analysis and measurement on the mirrored packets. The observer loss is the loss
that occurs on the mirror path.</t>
            <t>Observer loss affects upstream loss rate measurement, since it causes the
observer to account for fewer packets in a block of identical Q bit values (see
<xref target="upstreamloss"/>). The end-to-end loss rate measurement, however, is unaffected
by the observer loss, since it is a measurement of the fraction of packets with
the L bit value of 1, and the observer loss would affect all packets equally
(see <xref target="endtoendloss"/>).</t>
            <t>The need to adjust the upstream loss rate down to match end-to-end loss rate as
described in <xref target="loss-correlation"/> is an indication of the observer loss, whose
magnitude is between the amount of such adjustment and the entirety of the
upstream loss measured in <xref target="upstreamloss"/>. Alternatively, a high apparent
upstream loss rate could be an indication of significant packet reordering,
possibly due to packets belonging to a single flow being multiplexed over
several upstream paths with different latency characteristics.</t>
          </section>
        </section>
      </section>
      <section anchor="refsquarebit">
        <name>R Bit -- Reflection Square Bit</name>
        <t>R bit requires a deployment alongside Q bit. Unlike the square signal for which
packets are transmitted in blocks of fixed size, the number of packets in
Reflection square signal blocks (also an Alternate-Marking signal) varies
according to these rules:</t>
        <ul spacing="normal">
          <li>when the transmission of a new block starts, its size is set equal
to the size of the last Q Block whose reception has been completed;</li>
          <li>if, before transmission of the block is terminated, the reception
of at least one further Q Block is completed, the size of the block
is updated to be the average size of the further received Q Blocks.</li>
        </ul>
        <t>The Reflection square value is initialized to 0 and is applied to the R bit of
every outgoing packet.  The Reflection square value is toggled for the first
time when the completion of a Q Block is detected in the incoming square signal
(produced by the other endpoint using the Q bit). The number of packets
detected within this first Q Block (<tt>p</tt>), is used to generate a reflection
square signal that toggles every <tt>M=p</tt> packets (at first). This new signal
produces blocks of M packets (marked using the R bit) and each of them is
called "Reflection Block" (R Block).</t>
        <t>The M value is then updated every time a completed Q Block in the
incoming square signal is received, following this formula:
<tt>M=round(avg(p))</tt>.</t>
        <t>The parameter <tt>avg(p)</tt>, the average number of packets in a marking
period, is computed based on all the Q Blocks received since the
beginning of the current R Block.</t>
        <t>The transmission of an R Block is considered complete (and the signal toggled)
when the number of packets transmitted in that block is at least the latest
computed M value.</t>
        <t>To ensure a proper computation of the M value, endpoints implementing the R bit
must identify the boundaries of incoming Q Blocks. The same approach described
in <xref target="endmarkingblock"/> should be used.</t>
        <t>Looking at the R bit, unidirectional observation points have an indication of
loss experienced by the entire unobserved channel plus the loss on the path
from the sender to them.</t>
        <t>Since the Q Block is sent in one direction, and the corresponding reflected R
Block is sent in the opposite direction, the reflected R signal is transmitted
with the packet rate of the slowest direction. Namely, if the observed direction
is the slowest, there can be multiple Q Blocks transmitted in the unobserved
direction before a complete R Block is transmitted in the observed direction. If
the unobserved direction is the slowest, the observed direction can be sending R
Blocks of the same size repeatedly before it can update the signal to account
for a newly-completed Q Block.</t>
        <section anchor="enhancement-of-r-block-length-computation">
          <name>Enhancement of R Block Length Computation</name>
          <t>The use of the rounding function used in the M computation introduces errors
that can be minimized by storing the rounding applied each time M is computed,
and using it during the computation of the M value in the following R Block.</t>
          <t>This can be achieved introducing the new <tt>r_avg</tt> parameter in the computation of
M.  The new formula is <tt>Mr=avg(p)+r_avg; M=round(Mr); r_avg=Mr-M</tt> where the
initial value of <tt>r_avg</tt> is equal to 0.</t>
        </section>
        <section anchor="improved-resilience-to-packet-reordering">
          <name>Improved Resilience to Packet Reordering</name>
          <t>When a protocol implementing the marking mechanism is able to detect when
packets are received out of order, it can improve resilience to packet
reordering beyond what is possible using methods described in
<xref target="endmarkingblock"/>.</t>
          <t>This can be achieved by updating the size of the current R Block while it is
being transmitted.  The reflection block size is then updated every time an
incoming reordered packet of the previous Q Block is detected.  This can be
done if and only if the transmission of the current reflection block is in
progress and no packets of the following Q Block have been received.</t>
          <section anchor="Rburst">
            <name>Improved Resilience to Burst Losses</name>
            <t>Burst losses can affect R measurements accuracy similarly to how they affect Q
measurements accuracy. Therefore, recommendations in section <xref target="Qburst"/> apply
equally to improving burst loss resilience for R measurements.</t>
          </section>
        </section>
        <section anchor="rq-bits-loss-measurement-using-r-and-q-bits">
          <name>R+Q Bits -- Loss Measurement Using R and Q Bits</name>
          <t>Since both sQuare and Reflection square bits are toggled at most every N packets
(except for the first transition of the R bit as explained before), an on-path
observer can count the number of packets of each marking block and, knowing the
value of N, can estimate the amount of loss experienced by the connection.  An
observer can calculate different measurements depending on whether it is able to
observe a single direction of the traffic or both directions.</t>
          <t>Single directional observer:</t>
          <ul spacing="normal">
            <li>upstream loss in the observed direction: the loss between the sender and the
observation point (see <xref target="upstreamloss"/>)</li>
            <li>"three-quarters" connection loss: the loss between the receiver and
the sender in the unobserved direction plus the loss between the
sender and the observation point in the observed direction</li>
            <li>end-to-end loss in the unobserved direction: the loss between the
receiver and the sender in the opposite direction</li>
          </ul>
          <t>Two directions observer (same metrics seen previously applied to both
direction, plus):</t>
          <ul spacing="normal">
            <li>client-observer half round-trip loss: the loss between the client
and the observation point in both directions</li>
            <li>observer-server half round-trip loss: the loss between the
observation point and the server in both directions</li>
            <li>downstream loss: the loss between the observation point and the
receiver (applicable to both directions)</li>
          </ul>
          <section anchor="tqloss">
            <name>Three-Quarters Connection Loss</name>
            <t>Except for the very first block in which there is nothing to reflect
(a complete Q Block has not been yet received), packets are
continuously R-bit marked into alternate blocks of size lower or equal
than N.  Knowing the value of N, an on-path observer can estimate the
amount of loss occurred in the whole opposite channel plus the loss
from the sender up to it in the observation channel. As for the
previous metric, the <tt>three-quarters</tt> connection loss rate (<tt>tqloss</tt>) is
one minus the average number of packets in a block of packets with the
same R value (<tt>t</tt>) divided by <tt>N</tt> (<tt>tqloss=1-avg(t)/N</tt>).</t>
            <figure>
              <name>Three-quarters connection loss</name>
              <artwork><![CDATA[
        =======================>
        = **********     -----Obs---->     **********
        = * Client *                       * Server *
        = **********     <------------     **********
        <============================================

            (a) in client-server channel (tqloss_up)

          ============================================>
          **********     ------------>     ********** =
          * Client *                       * Server * =
          **********     <----Obs-----     ********** =
                               <=======================

            (b) in server-client channel (tqloss_down)
]]></artwork>
            </figure>
            <t>The following metrics derive from this last metric and the upstream
loss produced by the Q bit.</t>
          </section>
          <section anchor="end-to-end-loss-in-the-opposite-direction">
            <name>End-To-End Loss in the Opposite Direction</name>
            <t>End-to-end loss in the unobserved direction (<tt>eloss_unobserved</tt>) relates to the
"three-quarters" connection loss (<tt>tqloss</tt>) and upstream loss in the observed
direction (<tt>uloss</tt>) as <tt>(1-eloss_unobserved)(1-uloss)=1-tqloss</tt>.  Hence,
<tt>eloss_unobserved=(tqloss-uloss)/(1-uloss)</tt>.</t>
            <figure>
              <name>End-To-End loss in the opposite direction</name>
              <artwork><![CDATA[
          **********     -----Obs---->     **********
          * Client *                       * Server *
          **********     <------------     **********
          <==========================================

            (a) in client-server channel (eloss_down)

          ==========================================>
          **********     ------------>     **********
          * Client *                       * Server *
          **********     <----Obs-----     **********

            (b) in server-client channel (eloss_up)
]]></artwork>
            </figure>
          </section>
          <section anchor="half-round-trip-loss">
            <name>Half Round-Trip Loss</name>
            <t>If the observer is able to observe both directions of traffic, it is able to
calculate two "half round-trip" loss measurements -- loss from the observer to
the receiver (in a given direction) and then back to the observer in the
opposite direction.  For both directions, "half round-trip" loss (<tt>hrtloss</tt>)
relates to "three-quarters" connection loss (<tt>tqloss_opposite</tt>) measured in the
opposite direction and the upstream loss (<tt>uloss</tt>) measured in the given
direction as <tt>(1-uloss)(1-hrtloss)=1-tqloss_opposite</tt>.  Hence,
<tt>hrtloss=(tqloss_opposite-uloss)/(1-uloss)</tt>.</t>
            <figure>
              <name>Half Round-trip loss (both direction)</name>
              <artwork><![CDATA[
        =======================>
        = **********     ------|----->     **********
        = * Client *          Obs          * Server *
        = **********     <-----|------     **********
        <=======================

      (a) client-observer half round-trip loss (hrtloss_co)

                               =======================>
          **********     ------|----->     ********** =
          * Client *          Obs          * Server * =
          **********     <-----|------     ********** =
                               <=======================

      (b) observer-server half round-trip loss (hrtloss_os)
]]></artwork>
            </figure>
          </section>
          <section anchor="downstream-loss">
            <name>Downstream Loss</name>
            <t>If the observer is able to observe both directions of traffic, it is able to
calculate two downstream loss measurements using either end-to-end loss and
upstream loss, similar to the calculation in <xref target="downstreamloss"/> or using "half
round-trip" loss and upstream loss in the opposite direction.</t>
            <t>For the latter, <tt>dloss=(hrtloss-uloss_opposite)/(1-uloss_opposite)</tt>.</t>
            <figure>
              <name>Downstream loss</name>
              <artwork><![CDATA[
                               =====================>
          **********     ------|----->     **********
          * Client *          Obs          * Server *
          **********     <-----|------     **********

             (a) in client-server channel (dloss_up)

          **********     ------|----->     **********
          * Client *          Obs          * Server *
          **********     <-----|------     **********
          <=====================

             (b) in server-client channel (dloss_down)
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="e-bit-ecn-echo-event-bit">
        <name>E Bit -- ECN-Echo Event Bit</name>
        <t>While the primary focus of this draft is on exposing packet loss and
delay, modern networks can report congestion before they are forced to
drop packets, as described in <xref target="ECN"/>.  When transport protocols keep
ECN-Echo feedback under encryption, this signal cannot be observed by
the network operators.  When tasked with diagnosing network
performance problems, knowledge of a congestion downstream of an
observation point can be instrumental.</t>
        <t>If downstream congestion information is desired, this information can be
signaled with an additional bit.</t>
        <ul spacing="normal">
          <li>E: The "ECN-Echo Event" bit is set to 0 or 1 according to the Unreported ECN
Echo counter, as explained below in <xref target="ecnbit"/>.</li>
        </ul>
        <section anchor="ecnbit">
          <name>Setting the ECN-Echo Event Bit on Outgoing Packets</name>
          <t>The Unreported ECN-Echo counter operates identically to Unreported Loss counter
(<xref target="lossbit"/>), except it counts packets delivered by the network with CE
markings, according to the ECN-Echo feedback from the receiver.</t>
          <t>This ECN-Echo signaling is similar to ECN signaling in <xref target="ConEx"/>. ECN-Echo
mechanism in QUIC provides the number of packets received with CE marks. For
protocols like TCP, the method described in <xref target="ConEx-TCP"/> can be employed. As
stated in <xref target="ConEx-TCP"/>, such feedback can be further improved using a method
described in <xref target="ACCURATE-ECN"/>.</t>
        </section>
        <section anchor="ech-usage">
          <name>Using E Bit for Passive ECN-Reported Congestion Measurement</name>
          <t>A network observer can count packets with CE codepoint and determine the
upstream CE-marking rate directly.</t>
          <t>Observation points can also estimate ECN-reported end-to-end congestion by
counting packets in this direction with a E bit equal to 1.</t>
          <t>The upstream CE-marking rate and end-to-end ECN-reported congestion can provide
information about downstream CE-marking rate. Presence of E bits along with L
bits, however, can somewhat confound precise estimates of upstream and
downstream CE-markings in case the flow contains packets that are not
ECN-capable.</t>
        </section>
      </section>
    </section>
    <section anchor="summary-of-delay-and-loss-marking-methods">
      <name>Summary of Delay and Loss Marking Methods</name>
      <t>This section summarizes the marking methods described in this draft.</t>
      <t>For the Delay measurement, it is possible to use the Spin bit and/or the delay
bit. A unidirectional or bidirectional observer can be used.</t>
      <figure anchor="fig_summary_D">
        <name>Delay Comparison</name>
        <artwork><![CDATA[
 +---------------+----+------------------------+--------------------+
 | Method        |# of|        Available       |             | # of |
 |               |bits|      Delay Metrics     | Impairments | meas.|
 |               |    +------------+-----------+ Resiliency  |      |
 |               |    |   UniDir   |   BiDir   |             |      |
 |               |    |  Observer  |  Observer |             |      |
 +---------------+----+------------+-----------+-------------+------+
 |S: Spin Bit    | 1  | RTT        | x2        | low         | very |
 |               |    |            | Half RTT  |             | high |
 +---------------+----+------------+-----------+-------------+------+
 |D: Delay Bit   | 1  | RTT        | x2        | high        |medium|
 |               |    |            | Half RTT  |             |      |
 +---------------+----+------------+-----------+-------------+------+
 |SD: Spin Bit & | 2  | RTT        | x2        | high        | very |
 |    Delay Bit *|    |            | Half RTT  |             | high |
 +---------------+----+------------+-----------+-------------+------+

 x2 Same metric for both directions
 *  Both bits work independently; an observer could use less accurate
    Spin bit measurements when Delay bit ones are unavailable
]]></artwork>
      </figure>
      <t>For the Loss measurement, each row in the table of <xref target="fig_summary_L"/>
represents a loss marking method. For each method the table specifies
the number of bits required in the header, the available metrics using
an unidirectional or bidirectional observer, applicable protocols,
measurement fidelity and delay.</t>
      <figure anchor="fig_summary_L">
        <name>Loss Comparison</name>
        <artwork><![CDATA[
 +-------------+-+-----------------------+-+------------------------+
 | Method      |B|        Available      |P|  Measurement Aspects   |
 |             |i|      Loss Metrics     |r+------------+-----------+
 |             |t|   UniDir  |   BiDir   |t|  Fidelity  |   Delay   |
 |             |s|  Observer |  Observer |o|            |           |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |T: Round Trip|$| RT        | x2        | | Rate by    | ~6 RTT    |
 |   Loss Bit  |1|           | Half RT   |*| sampling   +-----------+
 |             | |           |           | | 1/3 to 1/(3*ppa) of    |
 |             | |           |           | | pkts over 2 RTT        |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |Q: sQuare Bit|1| Upstream  | x2        |*| Rate over  | N pkts    |
 |             | |           |           | | N pkts     | (e.g. 64) |
 |             | |           |           | | (e.g. 64)  |           |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |L: Loss Event|1| E2E       | x2        |#| Loss shape | Min: RTT  |
 |   Bit       | |           |           | | (and rate) | Max: RTO  |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |QL: sQuare + |2| Upstream  | x2        | | -> see Q   | Up: see Q |
 |    Loss Ev. | | Downstream| x2        |#| -> see Q|L | Others:   |
 |    Bits     | | E2E       | x2        | | -> see L   |     see L |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |QR: sQuare + |2| Upstream  | x2        | | Rate over  | Up: see Q |
 |    Ref. Sq. | | 3/4 RT    | x2        | | N*ppa pkts | Others:   |
 |    Bits     | | !E2E      | E2E       |*| (see Q bit |  N*ppa pk |
 |             | |           | Downstream| |   for N)   |   (see Q  |
 |             | |           | Half RT   | |            |    for N) |
 +-------------+-+-----------+-----------+-+------------+-----------+

 *   All protocols
 #   Protocols employing loss detection
     (with or without pure ACK loss detection)
 $   Require a working Spin bit
 !   Metric relative to the opposite channel
 x2  Same metric for both directions
 ppa Packets-Per-Ack
 Q|L See Q if Upstream loss is significant; L otherwise
]]></artwork>
      </figure>
      <section anchor="implementation-considerations">
        <name>Implementation Considerations</name>
        <t>By combining the information of the two tables above, it can be deduced that the
solutions with 3 bits, i.e. QL or QR + S or D, or 4 bits, i.e. QL or QR + SD,
allow to have more complete and resilient measurements.</t>
        <t>The methodologies described in the previous sections are transport agnostic and
can be applied in various situations. The choice of the the methods also depends
on the specific protocol, for example QL is a good combination but, in the case
of a protocol which does not support or cannot set the L bit, QR is the only
viable solution.</t>
      </section>
    </section>
    <section anchor="ossification">
      <name>Protocol Ossification Considerations</name>
      <t>Accurate loss and delay information is not critical to the operation of any protocol,
though its presence for a sufficient number of flows is important for the
operation of networks.</t>
      <t>The delay and loss bits are amenable to "greasing" described in <xref target="RFC8701"/>, if
the protocol designers are not ready to dedicate (and ossify) bits used for loss
reporting to this function. The greasing could be accomplished similarly to the
Latency Spin bit greasing in <xref target="QUIC-TRANSPORT"/>. Namely, implementations could
decide that a fraction of flows should not encode loss and delay information and,
instead, the bits would be set to arbitrary values. The observers would need to be
ready to ignore flows with delay and loss information more resembling noise
than the expected signal.</t>
    </section>
    <section anchor="examples-of-application">
      <name>Examples of Application</name>
      <section anchor="quic">
        <name>QUIC</name>
        <t>The binding of a delay signal to QUIC is partially described in
<xref target="QUIC-TRANSPORT"/>, which adds the Spin bit to the first byte of the short
packet header, leaving two reserved bits for future use.</t>
        <t>To implement the additional signals discussed in this document, the
first byte of the short packet header can be modified as follows:</t>
        <ul spacing="normal">
          <li>the Delay bit (D) can be placed in the first reserved bit (i.e. the fourth
most significant bit <em>0x10</em>) while the round trip loss bit (T) in the second
reserved bit (i.e. the fifth most significant bit <em>0x08</em>); the proposed
scheme is:</li>
        </ul>
        <figure>
          <name>Scheme 1</name>
          <artwork><![CDATA[
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |0|1|S|D|T|K|P|P|
         +-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>alternatively, a two bits loss signal (QL or QR) can be placed in both
reserved bits; the proposed schemes, in this case, are:</li>
        </ul>
        <figure>
          <name>Scheme 2A</name>
          <artwork><![CDATA[
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |0|1|S|Q|L|K|P|P|
         +-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <figure>
          <name>Scheme 2B</name>
          <artwork><![CDATA[
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |0|1|S|Q|R|K|P|P|
         +-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>A further option would be to substitute the Spin bit with the Delay bit,
leaving the two reserved bits for loss detection. The proposed schemes
are:</t>
        <figure>
          <name>Scheme 3A</name>
          <artwork><![CDATA[
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |0|1|D|Q|L|K|P|P|
         +-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <figure>
          <name>Scheme 3B</name>
          <artwork><![CDATA[
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |0|1|D|Q|R|K|P|P|
         +-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
      </section>
      <section anchor="tcp">
        <name>TCP</name>
        <t>The signals can be added to TCP by defining bit 4 of byte 13 of the TCP header
to carry the Spin bit or the Delay bit, and possibly bits 5 and 6 to carry
additional information, like the Delay bit and the round-trip loss bit (DT), or
a two bits loss signal (QL or QR).</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Passive loss and delay observations have been a part of the network operations
for a long time, so exposing loss and delay information to the network does not
add new security concerns for protocols that are currently observable.</t>
      <t>In the absence of packet loss, Q and R bits signals do not provide any
information that cannot be observed by simply counting packets transiting a
network path. In the presence of packet loss, Q and R bits will disclose
the loss, but this is information about the environment and not the endpoint
state. The L bit signal discloses internal state of the protocol's loss
detection machinery, but this state can often be gleamed by timing packets and
observing congestion controller response.</t>
      <t>The measurements described in this document do not imply new packets injected
into the network causing potential harm to the network itself and to data
traffic. The measurements could be harmed by an attacker altering the marking
of the packets or injecting artificial traffic. Authentication techniques may be
used where appropriate to guard against these traffic attacks.</t>
      <t>Hence, loss bits do not provide a viable new mechanism to attack data integrity
and secrecy.</t>
      <t>The described techniques can generally apply to different communication
protocols operating in different security environments. An implementation of
these techniques for a particular protocol must consider specifics of the
protocol and its expected operating environment. For example, security
considerations for QUIC, discussed in <xref target="QUIC-TRANSPORT"/> and <xref target="QUIC-TLS"/>,
consider a possibility of active and passive attackers in the network as well
as attacks on specific QUIC mechanisms.</t>
      <section anchor="optimistic-ack-attack">
        <name>Optimistic ACK Attack</name>
        <t>A defense against an Optimistic ACK Attack, described in <xref target="QUIC-TRANSPORT"/>,
involves a sender randomly skipping packet numbers to detect a receiver
acknowledging packet numbers that have never been received. The Q bit signal may
inform the attacker which packet numbers were skipped on purpose and which had
been actually lost (and are, therefore, safe for the attacker to
acknowledge). To use the Q bit for this purpose, the attacker must first receive
at least an entire Q Block of packets, which renders the attack ineffective
against a delay-sensitive congestion controller.</t>
        <t>A protocol that is more susceptible to an Optimistic ACK Attack with the loss
signal provided by Q bit and uses a loss-based congestion controller, should
shorten the current Q Block by the number of skipped packets numbers. For example,
skipping a single packet number will invert the square signal one outgoing
packet sooner.</t>
        <t>Similar considerations apply to the R bit, although a shortened R Block along
with a matching skip in packet numbers does not necessarily imply a lost
packet, since it could be due to a lost packet on the reverse path along with a
deliberately skipped packet by the sender.</t>
      </section>
      <section anchor="delay-bit-with-rtt-obfuscation">
        <name>Delay Bit with RTT Obfuscation</name>
        <t>Theoretically, delay measurements can be used to roughly evaluate the distance
of the client from the server (using the RTT) or from any intermediate observer
(using the client-observer half-RTT). As described in <xref target="RTT-PRIVACY"/>, connection
RTT measurements for geolocating endpoints are usually inferior to even the
most basic IP geolocation databases. It is the variability within RTT
measurements (the jitter) that is most informative, as it can provide insight
into the operating environment of the endpoints as well as the state of the
networks (queuing delays) used by the connection.</t>
        <t>Nevertheless, to further mask the actual RTT of the connection, the Delay bit
algorithm can be slightly modified by, for example, delaying the client-side
reflection of the delay sample by a fixed randomly chosen time value. This
would lead an intermediate observer to measure a delay greater than the real
one.</t>
        <t>This Additional Delay should be randomly selected by the client and kept
constant for a certain amount of time across multiple connections. This ensures
that the client-server jitter remains the same as if no Additional Delay had
been inserted. For example, a new Additional Delay value could be generated
whenever the client's IP address changes.</t>
        <t>Despite the Additional Delay, this Hidden Delay technique still allows an
accurate measurement of the RTT components (observer-server) and all the
intra-domain measurements used to distribute the delay in the network.
Furthermore, unlike the Delay bit, the Hidden Delay bit does not require the
use of the client reflection threshold (1ms by default). Removing this
threshold may lead to increasing the number of valid measurements produced by
the algorithm.</t>
        <t>Note that Hidden Delay bit does not affect an observer's ability to measure
accurate RTT using other means, such as timing packets exchanged during the
connection establishment.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>To minimize unintentional exposure of information, loss bits provide an explicit
loss signal -- a preferred way to share information per <xref target="RFC8558"/>.</t>
      <t>New protocols commonly have specific privacy goals, and loss reporting must
ensure that loss information does not compromise those privacy goals. For
example, <xref target="QUIC-TRANSPORT"/> allows changing Connection IDs in the middle of a
connection to reduce the likelihood of a passive observer linking old and new
sub-flows to the same device. A QUIC implementation would need to reset all
counters when it changes the destination (IP address or UDP port) or the
Connection ID used for outgoing packets. It would also need to avoid
incrementing Unreported Loss counter for loss of packets sent to a different
destination or with a different Connection ID.</t>
      <t>It is also worth highlighting that, if these techniques are not widely deployed,
an endpoint that uses them may be fingerprinted based on their usage.
But, since there is no release of user data, the techniques seem unlikely to
substantially increase the existing privacy risks.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no request of IANA.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The following people provided valuable contributions to this document:</t>
      <ul spacing="normal">
        <li>Marcus Ihlar, Ericsson, marcus.ihlar@ericsson.com</li>
        <li>Jari Arkko, Ericsson, jari.arkko@ericsson.com</li>
        <li>Emile Stephan, Orange, emile.stephan@orange.com</li>
        <li>Dmitri Tikhonov, LiteSpeed Technologies, dtikhonov@litespeedtech.com</li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank the QUIC WG for their contributions, Christian
Huitema for implementing Q and L bits in his picoquic stack, and Ike Kunze for
providing constructive reviews and helpful suggestions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="TCP">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy">
              <organization/>
            </author>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP).  TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet.  Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion.  This document collects and brings those changes together with the protocol specification from RFC 793.  This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793.  It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements.  It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state.  The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="ECN">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan">
              <organization/>
            </author>
            <author fullname="S. Floyd" initials="S." surname="Floyd">
              <organization/>
            </author>
            <author fullname="D. Black" initials="D." surname="Black">
              <organization/>
            </author>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="IPPM-METHODS">
          <front>
            <title>Active and Passive Metrics and Methods (with Hybrid Types In-Between)</title>
            <author fullname="A. Morton" initials="A." surname="Morton">
              <organization/>
            </author>
            <date month="May" year="2016"/>
            <abstract>
              <t>This memo provides clear definitions for Active and Passive performance assessment.  The construction of Metrics and Methods can be described as either "Active" or "Passive".  Some methods may use a subset of both Active and Passive attributes, and we refer to these as "Hybrid Methods".  This memo also describes multiple dimensions to help evaluate new methods as they emerge.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7799"/>
          <seriesInfo name="DOI" value="10.17487/RFC7799"/>
        </reference>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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="RFC8558">
          <front>
            <title>Transport Protocol Path Signals</title>
            <author fullname="T. Hardie" initials="T." role="editor" surname="Hardie">
              <organization/>
            </author>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document discusses the nature of signals seen by on-path elements examining transport protocols, contrasting implicit and explicit signals.  For example, TCP's state machine uses a series of well-known messages that are exchanged in the clear.  Because these are visible to network elements on the path between the two nodes setting up the transport connection, they are often used as signals by those network elements.  In transports that do not exchange these messages in the clear, on-path network elements lack those signals. Often, the removal of those signals is intended by those moving the messages to confidential channels.  Where the endpoints desire that network elements along the path receive these signals, this document recommends explicit signals be used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8558"/>
          <seriesInfo name="DOI" value="10.17487/RFC8558"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="TRANSPORT-ENCRYPT">
          <front>
            <title>Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="C. Perkins" initials="C." surname="Perkins">
              <organization/>
            </author>
            <date month="July" year="2021"/>
            <abstract>
              <t>To protect user data and privacy, Internet transport protocols have supported payload encryption and authentication for some time. Such encryption and authentication are now also starting to be applied to the transport protocol headers. This helps avoid transport protocol ossification by middleboxes, mitigate attacks against the transport protocol, and protect metadata about the communication. Current operational practice in some networks inspect transport header information within the network, but this is no longer possible when those transport headers are encrypted.</t>
              <t>This document discusses the possible impact when network traffic uses a protocol with an encrypted transport header. It suggests issues to consider when designing new transport protocols or features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9065"/>
          <seriesInfo name="DOI" value="10.17487/RFC9065"/>
        </reference>
        <reference anchor="QUIC-MANAGEABILITY">
          <front>
            <title>Manageability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind">
              <organization/>
            </author>
            <author fullname="B. Trammell" initials="B." surname="Trammell">
              <organization/>
            </author>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses manageability of the QUIC transport protocol and focuses on the implications of QUIC's design and wire image on network operations involving QUIC traffic. It is intended as a "user's manual" for the wire image to provide guidance for network operators and equipment vendors who rely on the use of transport-aware network functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9312"/>
          <seriesInfo name="DOI" value="10.17487/RFC9312"/>
        </reference>
        <reference anchor="QUIC-SPIN">
          <front>
            <title>Adding Explicit Passive Measurability of Two-Way Latency to the QUIC Transport Protocol</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Piet De Vaere" initials="P." surname="De Vaere">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Roni Even" initials="R." surname="Even">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Nokia</organization>
            </author>
            <author fullname="Marcus Ihlar" initials="M." surname="Ihlar">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Al Morton" initials="A. C." surname="Morton">
              <organization>AT&amp;T Labs</organization>
            </author>
            <author fullname="Stephan Emile" initials="S." surname="Emile">
              <organization>Orange</organization>
            </author>
            <date day="14" month="May" year="2018"/>
            <abstract>
              <t>   This document describes the addition of a "spin bit", intended for
   explicit measurability of end-to-end RTT, to the QUIC transport
   protocol.  It proposes a detailed mechanism for the spin bit, as well
   as an additional mechanism, called the valid edge counter, to
   increase the fidelity of the latency signal in less than ideal
   network conditions.  It describes how to use the latency spin signal
   to measure end-to-end latency, discusses corner cases and their
   workarounds in the measurement, describes experimental evaluation of
   the mechanism done to date, and examines the utility and privacy
   implications of the spin bit.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-quic-spin-03"/>
        </reference>
        <reference anchor="RTT-PRIVACY">
          <front>
            <title>Revisiting the Privacy Implications of Two-Way Internet Latency Data</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization/>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Passive and Active Measurement" value="pp. 73-84"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-76481-8_6"/>
        </reference>
        <reference anchor="UDP-OPTIONS">
          <front>
            <title>Transport Options for UDP</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <date day="27" month="December" year="2022"/>
            <abstract>
              <t>   Transport protocols are extended through the use of transport header
   options. This document extends UDP by indicating the location,
   syntax, and semantics for UDP transport layer options.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-options-19"/>
        </reference>
        <reference anchor="UDP-SURPLUS">
          <front>
            <title>UDP Surplus Header</title>
            <author fullname="Tom Herbert" initials="T." surname="Herbert">
              <organization>Intel</organization>
            </author>
            <date day="8" month="July" year="2019"/>
            <abstract>
              <t>   This specification defines the UDP Surplus Header that is an
   extensible and generic format applied to the UDP surplus space. The
   UDP surplus space comprises the bytes between the end of the UDP
   datagram, as indicated by the UDP Length field, and the end of the IP
   packet, as indicated by IP packet or payload length. The UDP Surplus
   Header can be either a protocol trailer of the UDP datagram, or a
   protocol header which effectively serves as an extended UDP header.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-herbert-udp-space-hdr-01"/>
        </reference>
        <reference anchor="ACCURATE-ECN">
          <front>
            <title>More Accurate Explicit Congestion Notification (ECN) Feedback in TCP</title>
            <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
              <organization>Independent</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Richard Scheffenegger" initials="R." surname="Scheffenegger">
              <organization>NetApp</organization>
            </author>
            <date day="23" month="February" year="2023"/>
            <abstract>
              <t>   Explicit Congestion Notification (ECN) is a mechanism where network
   nodes can mark IP packets instead of dropping them to indicate
   incipient congestion to the end-points.  Receivers with an ECN-
   capable transport protocol feed back this information to the sender.
   ECN was originally specified for TCP in such a way that only one
   feedback signal can be transmitted per Round-Trip Time (RTT).  Recent
   new TCP mechanisms like Congestion Exposure (ConEx), Data Center TCP
   (DCTCP) or Low Latency, Low Loss, and Scalable Throughput (L4S) need
   more accurate ECN feedback information whenever more than one marking
   is received in one RTT.  This document updates the original ECN
   specification in RFC 3168 to specify a scheme that provides more than
   one feedback signal per RTT in the TCP header.  Given TCP header
   space is scarce, it allocates a reserved header bit previously
   assigned to the ECN-Nonce.  It also overloads the two existing ECN
   flags in the TCP header.  The resulting extra space is exploited to
   feed back the IP-ECN field received during the 3-way handshake as
   well.  Supplementary feedback information can optionally be provided
   in a new TCP option, which is never used on the TCP SYN.  The
   document also specifies the treatment of this updated TCP wire
   protocol by middleboxes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-accurate-ecn-23"/>
        </reference>
        <reference anchor="AltMark">
          <front>
            <title>Alternate-Marking Method</title>
            <author fullname="G. Fioccola" initials="G." role="editor" surname="Fioccola">
              <organization/>
            </author>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio">
              <organization/>
            </author>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky">
              <organization/>
            </author>
            <author fullname="T. Mizrahi" initials="T." surname="Mizrahi">
              <organization/>
            </author>
            <author fullname="T. Zhou" initials="T." surname="Zhou">
              <organization/>
            </author>
            <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="IPv6AltMark">
          <front>
            <title>IPv6 Application of the Alternate-Marking Method</title>
            <author fullname="G. Fioccola" initials="G." surname="Fioccola">
              <organization/>
            </author>
            <author fullname="T. Zhou" initials="T." surname="Zhou">
              <organization/>
            </author>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio">
              <organization/>
            </author>
            <author fullname="F. Qin" initials="F." surname="Qin">
              <organization/>
            </author>
            <author fullname="R. Pang" initials="R." surname="Pang">
              <organization/>
            </author>
            <date month="December" year="2022"/>
            <abstract>
              <t>This document describes how the Alternate-Marking Method can be used as a passive performance measurement tool in an IPv6 domain. It defines an Extension Header Option to encode Alternate-Marking information in both the Hop-by-Hop Options Header and Destination Options Header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9343"/>
          <seriesInfo name="DOI" value="10.17487/RFC9343"/>
        </reference>
        <reference anchor="ANRW19-PM-QUIC">
          <front>
            <title>Performance measurements of QUIC communications</title>
            <author fullname="Fabio Bulgarella" initials="F." surname="Bulgarella">
              <organization>Politecnico di Torino</organization>
            </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Guido Marchetto" initials="G." surname="Marchetto">
              <organization>Politecnico di Torino</organization>
            </author>
            <author fullname="Riccardo Sisto" initials="R." surname="Sisto">
              <organization>Politecnico di Torino</organization>
            </author>
            <date month="July" year="2019"/>
          </front>
          <seriesInfo name="Proceedings of the Applied Networking Research" value="Workshop"/>
          <seriesInfo name="DOI" value="10.1145/3340301.3341127"/>
        </reference>
        <reference anchor="ConEx">
          <front>
            <title>Congestion Exposure (ConEx) Concepts, Abstract Mechanism, and Requirements</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis">
              <organization/>
            </author>
            <author fullname="B. Briscoe" initials="B." surname="Briscoe">
              <organization/>
            </author>
            <date month="December" year="2015"/>
            <abstract>
              <t>This document describes an abstract mechanism by which senders inform the network about the congestion recently encountered by packets in the same flow.  Today, network elements at any layer may signal congestion to the receiver by dropping packets or by Explicit Congestion Notification (ECN) markings, and the receiver passes this information back to the sender in transport-layer feedback.  The mechanism described here enables the sender to also relay this congestion information back into the network in-band at the IP layer, such that the total amount of congestion from all elements on the path is revealed to all IP elements along the path, where it could, for example, be used to provide input to traffic management.  This mechanism is called Congestion Exposure, or ConEx.  The companion document, "Congestion Exposure (ConEx) Concepts and Use Cases" (RFC 6789), provides the entry point to the set of ConEx documentation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7713"/>
          <seriesInfo name="DOI" value="10.17487/RFC7713"/>
        </reference>
        <reference anchor="ConEx-TCP">
          <front>
            <title>TCP Modifications for Congestion Exposure (ConEx)</title>
            <author fullname="M. Kuehlewind" initials="M." role="editor" surname="Kuehlewind">
              <organization/>
            </author>
            <author fullname="R. Scheffenegger" initials="R." surname="Scheffenegger">
              <organization/>
            </author>
            <date month="May" year="2016"/>
            <abstract>
              <t>Congestion Exposure (ConEx) is a mechanism by which senders inform the network about expected congestion based on congestion feedback from previous packets in the same flow.  This document describes the necessary modifications to use ConEx with the Transmission Control Protocol (TCP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7786"/>
          <seriesInfo name="DOI" value="10.17487/RFC7786"/>
        </reference>
        <reference anchor="I-D.trammell-tsvwg-spin">
          <front>
            <title>A Transport-Independent Explicit Signal for Hybrid RTT Measurement</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <date day="2" month="July" year="2018"/>
            <abstract>
              <t>   This document defines an explicit per-flow transport-layer signal for
   hybrid measurement of end-to-end RTT.  This signal consists of three
   bits: a spin bit, which oscillates once per end-to-end RTT, and a
   two-bit Valid Edge Counter (VEC), which compensates for loss and
   reordering of the spin bit to increase fidelity of the signal in less
   than ideal network conditions.  It describes the algorithm for
   generating the signal, approaches for observing it to passively
   measure end-to-end latency, and proposes methods for adding it to a
   variety of IETF transport protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-tsvwg-spin-00"/>
        </reference>
        <reference anchor="I-D.trammell-ippm-spin">
          <front>
            <title>An Explicit Transport-Layer Signal for Hybrid RTT Measurement</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <date day="9" month="January" year="2019"/>
            <abstract>
              <t>   This document defines an explicit per-flow transport-layer signal for
   hybrid measurement of end-to-end RTT.  This signal consists of three
   bits: a spin bit, which oscillates once per end-to-end RTT, and a
   two-bit Valid Edge Counter (VEC), which compensates for loss and
   reordering of the spin bit to increase fidelity of the signal in less
   than ideal network conditions.  It describes the algorithm for
   generating the signal, approaches for observing it to passively
   measure end-to-end latency, and proposes methods for adding it to a
   variety of IETF transport protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-ippm-spin-00"/>
        </reference>
        <reference anchor="RFC8701">
          <front>
            <title>Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin">
              <organization/>
            </author>
            <date month="January" year="2020"/>
            <abstract>
              <t>This document describes GREASE (Generate Random Extensions And Sustain Extensibility), a mechanism to prevent extensibility failures in the TLS ecosystem. It reserves a set of TLS protocol values that may be advertised to ensure peers correctly handle unknown values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8701"/>
          <seriesInfo name="DOI" value="10.17487/RFC8701"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
AQA=

-->

</rfc>
