<?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.17 (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-02" category="info" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="Delay and Loss bits">Explicit Flow Measurements Techniques</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-explicit-flow-measurements-02"/>
    <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/>
    <area>Transport</area>
    <workgroup>IPPM</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes protocol independent methods called Explicit
Flow Measurement Techniques that employ few marking bits, inside the
header of each packet, for loss and delay measurement. The endpoints,
marking the traffic, signal these metrics to intermediate observers
allowing them to measure connection performance, and to locate the
network segment where impairments happen. Different alternatives are
considered within this document. These signaling methods apply to all
protocols but they are especially valuable when applied to protocols
that encrypt transport header and do not allow traditional methods for
delay and loss detection.</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, in a TCP-dominated world, network operators have been
heavily relying on information present in the clear in TCP headers: sequence and
acknowledgement numbers and SACKs when enabled (see <xref target="RFC8517"/>). These allow
for quantitative estimation of packet loss and delay by passive on-path
observation. Additionally, the problem can be quickly identified in the network
path by moving the passive observer around.</t>
      <t>With encrypted protocols, the equivalent transport headers are encrypted and
passive packet loss and delay observations are not possible, as described in
<xref target="RFC9065"/>.</t>
      <t>Measuring TCP loss and delay between similar endpoints cannot be relied upon to
evaluate encrypted protocol loss and delay. Different protocols could be routed
by the network differently, and the fraction of Internet traffic delivered using
protocols other than TCP is increasing every year. It is imperative to measure
packet loss and delay experienced by encrypted protocol users directly.</t>
      <t>This document defines Explicit Flow Measurement Techniques. These hybrid
measurement path signals (see <xref target="IPM-Methods"/>) are to be embedded into a
transport layer protocol and are explicitly intended for exposing RTT and loss
rate information to on-path measurement devices. They are designed to facilitate
network operations and management and are "beneficial" for maintaining the
quality of service (see <xref target="RFC9065"/>). These measurement mechanisms are
applicable to any transport-layer protocol, and, as an example, the document
describes QUIC and TCP bindings.</t>
      <t>The Explicit Flow Measurement Techniques described in this document can be used
alone or in combination with other Explicit Flow Measurement Techniques. 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 protocol headers. These bits can be added to an
unencrypted portion of a header belonging to any protocol layer, e.g. IP (see
<xref target="IP"/>) and IPv6 (see <xref target="IPv6"/>) headers or extensions, such as <xref target="IPv6AltMark"/>,
UDP surplus space (see <xref target="UDP-OPTIONS"/> and <xref target="UDP-SURPLUS"/>), reserved bits in a
QUIC v1 header, as already done with the latency Spin bit (see
<xref target="QUIC-TRANSPORT"/>).</t>
      <t>The measurements are not designed for use in automated control of the network in
environments where signal bits are set by untrusted hosts. Instead, the signal
is to be used for troubleshooting individual flows as well as for monitoring the
network by aggregating information from multiple flows and raising operator
alarms if aggregate statistics indicate a potential problem.</t>
      <t>The Spin bit, Delay bit and loss bits explained in this document are inspired by
<xref target="AltMark"/>, <xref target="SPIN-BIT"/>, <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="SPIN-BIT"/> 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="SPIN-BIT"/>.</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="rtlossbit"/>.</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.</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>
        </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.</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"/>.</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>
    <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>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="SPIN-RTT"/>, 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>
    </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="IP" target="https://www.rfc-editor.org/info/rfc791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="IPv6" target="https://www.rfc-editor.org/info/rfc8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="R. Hinden" initials="R." surname="Hinden">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="TCP" target="https://www.rfc-editor.org/info/rfc793">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel">
              <organization/>
            </author>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="ECN" target="https://www.rfc-editor.org/info/rfc3168">
          <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="ConEx" target="https://www.rfc-editor.org/info/rfc7713">
          <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" target="https://www.rfc-editor.org/info/rfc7786">
          <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="IPM-Methods" target="https://www.rfc-editor.org/info/rfc7799">
          <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="RFC8558" target="https://www.rfc-editor.org/info/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-TRANSPORT" target="https://www.rfc-editor.org/info/rfc9000">
          <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="QUIC-TLS" target="https://www.rfc-editor.org/info/rfc9001">
          <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="RFC9065" target="https://www.rfc-editor.org/info/rfc9065">
          <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="SPIN-BIT" target="https://www.rfc-editor.org/info/rfc9312">
          <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="SPIN-RTT">
          <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" target="https://www.ietf.org/archive/id/draft-ietf-tsvwg-udp-options-18.txt">
          <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="26" month="March" 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-18"/>
        </reference>
        <reference anchor="UDP-SURPLUS" target="https://www.ietf.org/archive/id/draft-herbert-udp-space-hdr-01.txt">
          <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" target="https://www.ietf.org/archive/id/draft-ietf-tcpm-accurate-ecn-20.txt">
          <front>
            <title>More Accurate 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="25" month="July" year="2022"/>
            <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 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 to specify a scheme to provide 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-20"/>
        </reference>
        <reference anchor="IPv6AltMark" target="https://www.ietf.org/archive/id/draft-ietf-6man-ipv6-alt-mark-17.txt">
          <front>
            <title>IPv6 Application of the Alternate Marking Method</title>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei</organization>
            </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Fengwei Qin" initials="F." surname="Qin">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Ran Pang" initials="R." surname="Pang">
              <organization>China Unicom</organization>
            </author>
            <date day="27" month="September" 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="Internet-Draft" value="draft-ietf-6man-ipv6-alt-mark-17"/>
        </reference>
        <reference anchor="AltMark" target="https://www.ietf.org/archive/id/draft-ietf-ippm-rfc8321bis-03.txt">
          <front>
            <title>Alternate-Marking Method</title>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Greg Mirsky" initials="G." surname="Mirsky">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="25" month="July" 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="Internet-Draft" value="draft-ietf-ippm-rfc8321bis-03"/>
        </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="RFC8517" target="https://www.rfc-editor.org/info/rfc8517">
          <front>
            <title>An Inventory of Transport-Centric Functions Provided by Middleboxes: An Operator Perspective</title>
            <author fullname="D. Dolson" initials="D." role="editor" surname="Dolson">
              <organization/>
            </author>
            <author fullname="J. Snellman" initials="J." surname="Snellman">
              <organization/>
            </author>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair">
              <organization/>
            </author>
            <author fullname="C. Jacquenet" initials="C." surname="Jacquenet">
              <organization/>
            </author>
            <date month="February" year="2019"/>
            <abstract>
              <t>This document summarizes an operator's perception of the benefits that may be provided by intermediary devices that execute functions beyond normal IP forwarding.  Such intermediary devices are often called "middleboxes".</t>
              <t>RFC 3234 defines a taxonomy of middleboxes and issues in the Internet.  Most of those middleboxes utilize or modify application- layer data.  This document primarily focuses on devices that observe and act on information carried in the transport layer, and especially information carried in TCP packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8517"/>
          <seriesInfo name="DOI" value="10.17487/RFC8517"/>
        </reference>
        <reference anchor="I-D.trammell-tsvwg-spin" target="https://www.ietf.org/archive/id/draft-trammell-tsvwg-spin-00.txt">
          <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" target="https://www.ietf.org/archive/id/draft-trammell-ippm-spin-00.txt">
          <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" target="https://www.rfc-editor.org/info/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:
H4sIAAAAAAAAA+19a3fbVpLg9/sr0PLsthiTimQ7TqKMe6LITrc3fsiyPD3n
7NljgSQook0CbACUzLbdv33reW9dAJRkJzM9szvqTiKRwH3Urapb7xqNRq7J
m0V2mDx5v1rkk7xJfl6UV8nzLK3XVbbMiqZOzrLJvMj/us5ql47HVXZ5mDzO
FukmSYtp8qys62ScN7WblpMiXcJQ0yqdNaM8a2ajfLVajjIZejSDoUdLM/Ro
/56bpg288+Hx0dmTT24Cf1yU1eYwyYtZ6Vy+qg6TplrXzb39/e/h6bTK0sPk
rEqLelVWjbsqq3cXVbleHSZPT06eu3fZBj6awl9Fk1VF1owe42pcvR4v87rO
y+Jss4L5nj45+9m5uoEtvE0XZQEfbWB/q/zQJUk1m2TTutks5NMkacqJ+XWa
rZr5YfKQ/8qLKexFv65hVVU2q/3fm2X0Z1PlE//wpFwSHMzfqzR8nReLvAhr
yN43o0VeNyMYc1wu4K1R+dVd59J1My8rXPgI/sHX4Kvne8kxrO1ikZf0IR/N
83RdlfEXZXUBAM0WGUyePG3SRZ4mo+Ts6XP6FtabZbCgf4VPTzOAYHJaLstF
PkzuffuAnoCDheM6K6u84AEn5RRmOtg/ePCd/L0uGjxSHHxDH2XLNF8cJktc
zd5EVvNjuW4WZfkOPljGeznaS37OqirP1u/NXo4W2Xs4viqLv6T9vAQEuciS
Z+m4thOm+sreTF75saQnu3P+EebMy8mkXKRmzj/m6zpbrbL4O5ryT+v0KsuZ
WMpFeZFndQTBU/gAfk/rOgPgfWNg93xd5JO5gd13+99/fy+G3R+zapkWEfQu
ZC17M1nLj3NaQncvT/eSZ+txWs+zS7OXp0Bo8ee0j6N3KYzf3YfMmi/4jR9T
eq472c97yU/rxQUQ6iIC3c/pOC/bX/0DkW+G69kb+/X8eAEMrtlreDE5rWUv
bzpU9SJfxBQFXGVZho//ofREa9krYC0/Xr8RQIk/pcvJPC3XucWJOh0DMLLW
l9fRVC6v7M31la00dbr3GtiXhd5pPpmk1bRMwhc01wmApMkmQBdlMs0tNGTW
Sl7cq/HFH1f4fIm7dK4ogVSa/DJDjvj0BCb5+Xj/2+8P6K/Lh/T3d3CdwN9n
x/7r+/Dnk+MX9Of9g4cI6uOyePKePvj224P7+sFIX/r22+8e0pjPR88z4MDT
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

-->

</rfc>
