summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9506.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9506.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9506.txt')
-rw-r--r--doc/rfc/rfc9506.txt1972
1 files changed, 1972 insertions, 0 deletions
diff --git a/doc/rfc/rfc9506.txt b/doc/rfc/rfc9506.txt
new file mode 100644
index 0000000..4a3c534
--- /dev/null
+++ b/doc/rfc/rfc9506.txt
@@ -0,0 +1,1972 @@
+
+
+
+
+Internet Engineering Task Force (IETF) M. Cociglio
+Request for Comments: 9506 Telecom Italia - TIM
+Category: Informational A. Ferrieux
+ISSN: 2070-1721 Orange Labs
+ G. Fioccola
+ Huawei Technologies
+ I. Lubashev
+ Akamai Technologies
+ F. Bulgarella
+ M. Nilo
+ Telecom Italia - TIM
+ I. Hamchaoui
+ Orange Labs
+ R. Sisto
+ Politecnico di Torino
+ October 2023
+
+
+ Explicit Host-to-Network Flow Measurements Techniques
+
+Abstract
+
+ This document describes protocol-independent methods called Explicit
+ Host-to-Network Flow Measurement Techniques that can be applicable to
+ transport-layer protocols between the client and server. These
+ methods employ just a few marking bits inside the header of each
+ packet for performance measurements and require the client and server
+ to collaborate. Both endpoints cooperate by marking packets and,
+ possibly, mirroring the markings on the round-trip connection. The
+ techniques are especially valuable when applied to protocols that
+ encrypt transport headers since they enable loss and delay
+ measurements by passive, on-path network devices. This document
+ describes several methods that can be used separately or jointly
+ depending of the availability of marking bits, desired measurements,
+ and properties of the protocol to which the methods are applied.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Not all documents
+ approved by the IESG are candidates for any level of Internet
+ Standard; see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9506.
+
+Copyright Notice
+
+ Copyright (c) 2023 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Latency Bits
+ 2.1. Spin Bit
+ 2.2. Delay Bit
+ 2.2.1. Generation Phase
+ 2.2.2. Reflection Phase
+ 2.2.3. T_Max Selection
+ 2.2.4. Delay Measurement Using the Delay Bit
+ 2.2.4.1. RTT Measurement
+ 2.2.4.2. Half-RTT Measurement
+ 2.2.4.3. Intra-domain RTT Measurement
+ 2.2.5. Observer's Algorithm
+ 2.2.6. Two Bits Delay Measurement: Spin Bit + Delay Bit
+ 3. Loss Bits
+ 3.1. T Bit -- Round-Trip Loss Bit
+ 3.1.1. Round-Trip Loss
+ 3.1.2. Setting the Round-Trip Loss Bit on Outgoing Packets
+ 3.1.3. Observer's Logic for Round-Trip Loss Signal
+ 3.1.4. Loss Coverage and Signal Timing
+ 3.2. Q Bit -- sQuare Bit
+ 3.2.1. Q Block Length Selection
+ 3.2.2. Upstream Loss
+ 3.2.3. Identifying Q Block Boundaries
+ 3.2.3.1. Improved Resilience to Burst Losses
+ 3.3. L Bit -- Loss Event Bit
+ 3.3.1. End-To-End Loss
+ 3.3.1.1. Loss Profile Characterization
+ 3.3.2. L+Q Bits -- Loss Measurement Using L and Q Bits
+ 3.3.2.1. Correlating End-to-End and Upstream Loss
+ 3.3.2.2. Downstream Loss
+ 3.3.2.3. Observer Loss
+ 3.4. R Bit -- Reflection Square Bit
+ 3.4.1. Enhancement of Reflection Block Length Computation
+ 3.4.2. Improved Resilience to Packet Reordering
+ 3.4.2.1. Improved Resilience to Burst Losses
+ 3.4.3. R+Q Bits -- Loss Measurement Using R and Q Bits
+ 3.4.3.1. Three-Quarters Connection Loss
+ 3.4.3.2. End-To-End Loss in the Opposite Direction
+ 3.4.3.3. Half Round-Trip Loss
+ 3.4.3.4. Downstream Loss
+ 3.5. E Bit -- ECN-Echo Event Bit
+ 3.5.1. Setting the ECN-Echo Event Bit on Outgoing Packets
+ 3.5.2. Using E Bit for Passive ECN-Reported Congestion
+ Measurement
+ 3.5.3. Multiple E Bits
+ 4. Summary of Delay and Loss Marking Methods
+ 4.1. Implementation Considerations
+ 5. Examples of Application
+ 6. Protocol Ossification Considerations
+ 7. Security Considerations
+ 7.1. Optimistic ACK Attack
+ 7.2. Delay Bit with RTT Obfuscation
+ 8. Privacy Considerations
+ 9. IANA Considerations
+ 10. References
+ 10.1. Normative References
+ 10.2. Informative References
+ Acknowledgments
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ 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 end-
+ to-end throughput issues.
+
+ Detecting and measuring packet loss and delay allows network
+ operators to independently confirm trouble reports and, ideally, be
+ proactively notified of developing problems on the network. Locating
+ the cause of packet loss or excessive delay is the first step to
+ resolving problems and restoring QoS.
+
+ Network operators wishing to perform quantitative measurement of
+ packet loss and delay have been heavily relying on information
+ present in the clear in transport-layer headers (e.g., TCP sequence
+ and acknowledgment numbers). By passively observing a network path
+ at multiple points within one's network, operators have been able to
+ either quickly locate the source the problem within their network or
+ reliably attribute it to an upstream or downstream network.
+
+ With encrypted protocols, the transport-layer headers are encrypted
+ and passive packet loss and delay observations are not possible, as
+ also noted in [TRANSPORT-ENCRYPT]. Nevertheless, accurate
+ measurement of packet loss and delay experienced by encrypted
+ transport-layer protocols is highly desired, especially by network
+ operators who own or control the infrastructure between the client
+ and server.
+
+ The measurement of loss and delay experienced by connections using an
+ encrypted protocol cannot be based on a measurement of loss and delay
+ experienced by connections between the same or similar endpoints that
+ use an unencrypted protocol because different protocols may utilize
+ the network differently and be routed differently by the network.
+ Therefore, it is necessary to directly measure the packet loss and
+ delay experienced by users of encrypted protocols.
+
+ The Alternate-Marking method [AltMark] defines a consolidated method
+ to perform packet loss, delay, and jitter measurements on live
+ traffic. However, as mentioned in [IPv6AltMark], [AltMark] mainly
+ applies to a network-layer-controlled domain managed with a Network
+ Management System (NMS), where the Customer Premises Equipment (CPE)
+ or the Provider Edge (PE) routers are the starting or the ending
+ nodes. [AltMark] provides measurement within a controlled domain in
+ which the packets are marked. Therefore, applying [AltMark] to end-
+ to-end transport-layer connections is not easy because packet
+ identification and marking by network nodes is prevented when
+ encrypted transport-layer headers (e.g., QUIC, TCP with TLS) are
+ being used.
+
+ This document defines Explicit Host-to-Network Flow Measurement
+ Techniques that are specifically designed for encrypted transport
+ protocols. According to the definitions of [IPPM-METHODS], these
+ measurement methods can be classified as Hybrid. They are to be
+ embedded into a transport-layer protocol and are explicitly intended
+ for exposing delay and loss rate information to on-path measurement
+ devices. Unlike [AltMark], most of these methods require
+ collaborative endpoint nodes. Since these measurement techniques
+ make performance information directly visible to the path, they do
+ not rely on an external NMS.
+
+ The Explicit Host-to-Network Flow Measurement Techniques described in
+ this document are applicable to any transport-layer protocol
+ connecting a client and a server. In this document, the client and
+ the server are also referred to as the endpoints of the transport-
+ layer protocol.
+
+ The different methods described in this document can be used alone or
+ in combination. Each technique uses few bits and exposes a specific
+ measurement. It is assumed that the endpoints are collaborative in
+ the sense of the measurements, indeed both the client and server need
+ to cooperate.
+
+ Following the recommendation in [RFC8558] of making path signals
+ explicit, this document proposes adding some dedicated measurement
+ bits to the clear portion of the transport protocol headers. These
+ bits can be added to an unencrypted portion of a transport-layer
+ header, e.g., UDP surplus space (see [UDP-OPTIONS] and [UDP-SURPLUS])
+ or reserved bits in a QUIC v1 header, as already done with the
+ latency Spin bit (see Section 17.4 of [QUIC-TRANSPORT]). Note that
+ this document does not recommend the use of any specific bits, as
+ these would need to be chosen by the specific protocol
+ implementations (see Section 5).
+
+ The Spin bit, Delay bit, and loss bits explained in this document are
+ inspired by [AltMark], [QUIC-MANAGEABILITY], [QUIC-SPIN],
+ [TSVWG-SPIN], and [IPPM-SPIN].
+
+ Additional details about the performance measurements for QUIC are
+ described in the paper [ANRW19-PM-QUIC].
+
+2. Latency Bits
+
+ 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.
+
+ In [QUIC-TRANSPORT], Section 17.4 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. Section 4 of
+ [QUIC-SPIN] discusses an additional two-bit Valid Edge Counter (VEC)
+ to compensate for loss and reordering of the Spin bit and to increase
+ fidelity of the signal in less than ideal network conditions.
+
+ This document introduces a standalone 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.
+
+2.1. Spin Bit
+
+ This section is a small recap of the Spin bit working mechanism. For
+ a comprehensive explanation of the algorithm, see Section 3.8.2 of
+ [QUIC-MANAGEABILITY].
+
+ The Spin bit is a signal generated by Alternate-Marking [AltMark],
+ where the size of the alternation changes with the flight size each
+ RTT.
+
+ 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.
+
+ A "Spin bit period" is a set of packets with the same Spin bit value
+ sent during one RTT time interval. A "Spin bit period value" is the
+ value of the Spin bit shared by all packets in a Spin bit period.
+
+ 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:
+
+ * 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; and
+
+ * 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.
+
+ 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 network delay of
+ that network flow.
+
+ Spin bit enables round-trip latency measurement by observing a single
+ direction of the traffic flow.
+
+ 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 Section 2.2.
+
+2.2. Delay Bit
+
+ The Delay bit has been designed to overcome accuracy limitations
+ experienced by the Spin bit under difficult network conditions:
+
+ * packet reordering leads to generation of spurious edges and errors
+ in delay estimation;
+
+ * loss of edges causes wrong estimation of Spin bit periods and
+ therefore wrong RTT measurements; and
+
+ * application-limited senders cause the Spin bit to measure the
+ application delays instead of network delays.
+
+ Unlike the Spin bit, which is set in every packet transmitted on the
+ network, the Delay bit is set only once per round trip.
+
+ 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 the "delay
+ sample".
+
+ An observer placed at an intermediate point, observing a single
+ direction of traffic and tracking the delay sample and the relative
+ timestamp, can measure the round-trip delay of the connection.
+
+ The delay sample lifetime comprises 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.
+
+ The next figure describes the elementary Delay bit mechanism.
+
+ +--------+ - - - - - +--------+
+ | | -----------> | |
+ | Client | | Server |
+ | | <----------- | |
+ +--------+ - - - - - +--------+
+
+ (a) No traffic at beginning.
+
+ +--------+ 0 0 1 - - +--------+
+ | | -----------> | |
+ | Client | | Server |
+ | | <----------- | |
+ +--------+ - - - - - +--------+
+
+ (b) The Client starts sending data and sets
+ the first packet as the 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.
+
+ Figure 1: Delay Bit Mechanism
+
+2.2.1. Generation Phase
+
+ Only the client is actively involved in the Generation Phase. It
+ maintains an internal per-flow timestamp variable (ds_time) updated
+ every time a delay sample is transmitted.
+
+ 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 ds_time variable with the timestamp of its
+ transmission.
+
+ The server initializes the Delay bit to 0 at the beginning of the
+ connection, and its only task during the connection is described in
+ Section 2.2.2.
+
+ In absence of network impairments, the delay sample should bounce
+ between the client and server continuously for the entire duration of
+ the connection. However, that is highly unlikely for two reasons:
+
+ 1. The packet carrying the Delay bit might be lost.
+
+ 2. An endpoint could stop or delay sending packets because the
+ application is limiting the amount of traffic transmitted.
+
+ To deal with these problems, the client generates a new delay sample
+ if more than a predetermined time (T_Max) has elapsed since the last
+ delay sample transmission (including reflections). Note that T_Max
+ should be greater than the max measurable RTT on the network. See
+ Section 2.2.3 for details.
+
+2.2.2. Reflection Phase
+
+ 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.
+
+ * Server-side reflection: When a delay sample arrives, the server
+ marks the first packet in the opposite direction as the delay
+ sample.
+
+ * 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 ds_time variable when the outgoing
+ delay sample is actually forwarded.
+
+ 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 (1 ms by default), the delay sample is not
+ reflected, and the outgoing Delay bit is kept at 0.
+
+ By doing so, the algorithm can reject measurements that would
+ overestimate the delay due to lack of traffic at the endpoints.
+ Hence, the maximum estimation error would amount to twice the
+ threshold (e.g., 2 ms) per measurement.
+
+2.2.3. T_Max Selection
+
+ The internal ds_time variable allows a client to identify delay
+ sample losses. Considering that a lost delay sample is regenerated
+ at the end of an explicit time (T_Max) since the last generation,
+ this same value can be used by an observer to reject a measure and
+ start a new one.
+
+ In other words, if the difference in time between two delay samples
+ is greater or equal than T_Max, then these cannot be used to produce
+ a delay measure. Therefore, the value of T_Max must also be known to
+ the on-path network probes.
+
+ There are two alternatives to selecting the T_Max value so that both
+ the client and observers know it. The first one requires that T_Max
+ is known a priori (T_Max_p) and therefore set within the protocol
+ specifications that implements the marking mechanism (e.g., 1 second,
+ which usually is greater than the max expected RTT). The second
+ alternative requires a dynamic mechanism able to adapt the duration
+ of the T_Max to the delay of the connection (T_Max_c).
+
+ For instance, the client and observers could use the connection RTT
+ as a basis for calculating an effective T_Max. They should use a
+ predetermined initial value so that T_Max = T_Max_p (e.g., 1 second)
+ and then, when a valid RTT is measured, change T_Max accordingly so
+ that T_Max = T_Max_c. In any case, the selected T_Max should be
+ large enough to absorb any possible variations in the connection
+ delay. This also helps to prevent the mechanism from failing when
+ the observer cannot recognize sudden changes in RTT exceeding T_Max.
+
+ T_Max_c could be computed as two times the measured RTT plus a fixed
+ amount of time (100 ms) to prevent low T_Max values in the case of
+ very small RTTs. The resulting formula is: T_Max_c = 2RTT + 100 ms.
+ If T_Max_c is greater than T_Max_p, then T_Max_c is forced to the
+ T_Max_p value. Note that the value of 100 ms is provided as an
+ example, and it may be chosen differently depending on the specific
+ scenarios. For instance, an implementer may consider using existing
+ protocol-specific values if appropriate.
+
+ Note that the observer's T_Max should always be less than or equal to
+ the client's T_Max to avoid considering as a valid measurement what
+ is actually the client's T_Max. 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
+ T_Max_c formula. At this point, observers have already measured a
+ valid RTT and then computed their T_Max_c.
+
+2.2.4. Delay Measurement Using the Delay Bit
+
+ 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.
+
+2.2.4.1. RTT Measurement
+
+ 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.
+
+ To ensure a valid measurement, the observer must verify that the
+ distance in time between the two samples taken into account is less
+ than T_Max.
+
+ =======================|======================>
+ = ********** -----Obs----> ********** =
+ = * Client * * Server * =
+ = ********** <------------ ********** =
+ <==============================================
+
+ (a) client-server RTT
+
+ ==============================================>
+ = ********** ------------> ********** =
+ = * Client * * Server * =
+ = ********** <----Obs----- ********** =
+ <======================|=======================
+
+ (b) server-client RTT
+
+ Figure 2: Round-Trip Time (Both Directions)
+
+2.2.4.2. Half-RTT Measurement
+
+ 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.
+
+ As with RTT measurement, the observer must verify that the distance
+ in time between the two samples taken into account is less than
+ T_Max.
+
+ 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.
+
+ =======================>
+ = ********** ------|-----> **********
+ = * Client * Obs * Server *
+ = ********** <-----|------ **********
+ <=======================
+
+ (a) client-observer half-RTT
+
+ =======================>
+ ********** ------|-----> ********** =
+ * Client * Obs * Server * =
+ ********** <-----|------ ********** =
+ <=======================
+
+ (b) observer-server half-RTT
+
+ Figure 3: Half Round-Trip Time (Both Directions)
+
+2.2.4.3. Intra-domain RTT Measurement
+
+ 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 the ingress and egress of the network to
+ be measured. Intra-domain RTT is the difference between the two
+ computed upstream (or downstream) RTT components.
+
+ =========================================>
+ = =====================>
+ = = ********** ---|--> ---|--> **********
+ = = * 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
+
+ Figure 4: Intra-domain Round-Trip Time (Client-Observer: Upstream)
+
+2.2.5. Observer's Algorithm
+
+ An on-path observer maintains an internal per-flow variable to keep
+ track of the time at which the last delay sample has been observed.
+ The flow characterization should be part of the protocol.
+
+ If the observer is unidirectional or in case of asymmetric routing,
+ then upon detecting a delay sample:
+
+ * if a delay sample was also detected previously in the same
+ direction and the distance in time between them is less than T_Max
+ - K, then the two delay samples can be used to calculate RTT
+ measurement. K is a protection threshold to absorb differences in
+ T_Max computation and delay variations between two consecutive
+ delay samples (e.g., K = 10% T_Max).
+
+ 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), then upon
+ detecting a delay sample:
+
+ * if a delay sample was also detected in the opposite direction and
+ the distance in time between them is less than T_Max - K, 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.
+
+ Note that the accuracy can be influenced by what the observer is
+ capable of observing. Additionally, the type of measurement differs,
+ as described in the previous sections.
+
+2.2.6. Two Bits Delay Measurement: Spin Bit + Delay Bit
+
+ The 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:
+
+ * when a precise measurement can be produced using the Delay bit,
+ observers choose it; and
+
+ * when a Delay bit measurement is not available, observers choose
+ the approximate Spin bit one.
+
+3. Loss Bits
+
+ 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: The "round-Trip loss" bit is used in combination with the Spin
+ bit to measure round-trip loss. See Section 3.1.
+
+ Q: The "sQuare" bit is used to measure upstream loss. See
+ Section 3.2.
+
+ L: The "Loss Event" bit is used to measure end-to-end loss. See
+ Section 3.3.
+
+ R: The "Reflection square" bit is used in combination with the Q
+ bit to measure end-to-end loss. See Section 3.4.
+
+ 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.
+
+ Each endpoint maintains appropriate counters independently and
+ separately for each identifiable flow (or each sub-flow for multipath
+ connections).
+
+ Since loss is reported independently for each flow, all bits (except
+ for the 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.
+
+3.1. T Bit -- Round-Trip Loss Bit
+
+ 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:
+
+ * the client selects and consequently sets the T bit to 1 in order
+ to identify a first train of packets;
+
+ * upon receiving each packet included in the first train, the server
+ sets the T bit to 1 and reflects to the client a respective second
+ train of packets of the same size as the first train received;
+
+ * upon receiving each packet included in the second train, the
+ client sets the T bit to 1 and reflects to the server a respective
+ third train of packets of the same size as the second train
+ received; and
+
+ * upon receiving each packet included in the third train, the server
+ sets the T bit to 1 and finally reflects to the client a
+ respective fourth train of packets of the same size as the third
+ train received.
+
+ 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.
+
+ 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.
+
+ Since the 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 Section 3.1.2 for details on packet
+ generation.
+
+3.1.1. Round-Trip Loss
+
+ 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.
+
+ =======================|======================>
+ = ********** -----Obs----> ********** =
+ = * Client * * Server * =
+ = ********** <------------ ********** =
+ <==============================================
+
+ (a) client-server RTPL
+
+ ==============================================>
+ = ********** ------------> ********** =
+ = * Client * * Server * =
+ = ********** <----Obs----- ********** =
+ <======================|=======================
+
+ (b) server-client RTPL
+
+ Figure 5: Round-Trip Packet Loss (Both Directions)
+
+ This methodology also allows the half-RTPL measurement and the Intra-
+ domain RTPL measurement in a way similar to RTT measurement.
+
+ =======================>
+ = ********** ------|-----> **********
+ = * Client * Obs * Server *
+ = ********** <-----|------ **********
+ <=======================
+
+ (a) client-observer half-RTPL
+
+ =======================>
+ ********** ------|-----> ********** =
+ * Client * Obs * Server * =
+ ********** <-----|------ ********** =
+ <=======================
+
+ (b) observer-server half-RTPL
+
+ Figure 6: Half Round-Trip Packet Loss (Both Directions)
+
+ =========================================>
+ =====================> =
+ ********** ---|--> ---|--> ********** = =
+ * 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
+
+ Figure 7: Intra-domain Round-Trip Packet Loss (Observer-Server)
+
+3.1.2. Setting the Round-Trip Loss Bit on Outgoing Packets
+
+ 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 a separator for the on-path observer.
+ The connection between T bit and Spin bit helps the observer
+ correlate packet trains.
+
+ 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.
+
+ The client is in charge of launching trains of marked packets and
+ does so according to the algorithm:
+
+ 1. 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.
+
+ 2. 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.
+
+ 3. Reflection Phase. The client starts transmitting marked packets,
+ decrementing the reflection counter for each transmitted marked
+ packet until the reflection counter has reached zero. The
+ "generation token" method from the Generation Phase is used
+ during this phase as well. At the end of the first Spin bit
+ period spent in reflection, the reflection counter is locked to
+ avoid incoming reflected packets incrementing it.
+
+ 4. 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.
+
+ 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.
+ A cap value of 1 is recommended.
+
+ 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.
+
+ Note that a choice of 2 RTT (two Spin bit periods) for the Generation
+ Phase is a trade-off 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 (2 generations, ~2 reflections, 2 pauses), marking ~1/3
+ of packets exchanged in the slower direction (see Section 3.1.4).
+ Choosing a Generation Phase of 1 RTT, we would produce measurements
+ every 4 RTT, monitoring ~1/4 of packets in the slower direction.
+
+ It is worth mentioning that problems can happen in some cases,
+ especially if the rate suddenly changes, but the mechanism described
+ here worked well with normal traffic conditions in the
+ implementation.
+
+3.1.3. Observer's Logic for Round-Trip Loss Signal
+
+ 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.
+
+ In the following example, packets are represented by two bits (first
+ one is the Spin bit, second one is the round-Trip loss bit):
+
+ 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
+
+ Figure 8: Round-Trip Loss Signal Example
+
+ Note that 5 marked packets have been generated, of which 4 have been
+ reflected.
+
+3.1.4. Loss Coverage and Signal Timing
+
+ A cycle of the round-Trip loss signaling algorithm contains 2 RTTs of
+ Generation phase, 2 RTTs of Reflection Phase, and 2 Pause Phases at
+ least 1 RTT in duration each. Hence, the loss signal is delayed by
+ about 6 RTTs since the loss events.
+
+ The observer can only detect the 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), 2/6 (1/3) of the packets will be
+ sampled for loss detection.
+
+ If the loss occurs on the path that sends packets at a higher rate,
+ lowPacketRate/(3*highPacketRate) 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 1/(3*packetsPerAck), where the value of
+ packetsPerAck can vary by protocol, by implementation, and by network
+ conditions.
+
+3.2. Q Bit -- sQuare Bit
+
+ 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
+ [AltMark], and the Q bit represents the "packet color" that can be
+ switched between 0 and 1 in order to mark consecutive blocks of
+ packets with different colors. This method does not require
+ cooperation from both endpoints.
+
+ [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. Cooperating and synchronized
+ observers on either end of a network segment can use the fixed-timer
+ method to measure packet loss on the segment by comparing packet
+ 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.
+
+ 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 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.
+
+ 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.
+
+ 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 Section 3.2.2.
+
+3.2.1. Q Block Length Selection
+
+ 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 implement the marking
+ mechanism. The second requires the sender to select it.
+
+ 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 Section 3.2.2).
+
+ 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 Section 6).
+
+ 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.
+
+ The sender must keep the value of N constant for a given flow.
+
+3.2.2. Upstream Loss
+
+ 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 (uloss) is one
+ minus the average number of packets in a block of packets with the
+ same Q value (p) divided by N (uloss=1-avg(p)/N).
+
+ The observer needs to be able to tolerate packet reordering that can
+ blur the edges of the square signal, as explained in Section 3.2.3.
+
+ =====================>
+ ********** -----Obs----> **********
+ * Client * * Server *
+ ********** <------------ **********
+
+ (a) in client-server channel (uloss_up)
+
+ ********** ------------> **********
+ * Client * * Server *
+ ********** <----Obs----- **********
+ <=====================
+
+ (b) in server-client channel (uloss_down)
+
+ Figure 9: Upstream Loss
+
+3.2.3. Identifying Q Block Boundaries
+
+ 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 N/2.
+
+ 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.
+
+3.2.3.1. Improved Resilience to Burst Losses
+
+ Burst losses can affect the accuracy of Q measurements. Generally,
+ burst losses can be absorbed and correctly measured if smaller than
+ the established Q Block length. If the entire Q Block length of
+ packets is lost in a burst, however, the observer may be left
+ completely unaware of the loss.
+
+ 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 the 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 a 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).
+
+3.3. L Bit -- Loss Event Bit
+
+ 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 Stream Control Transmission Protocol (SCTP) (losses of pure
+ ACKs are not detected), and is not true of protocols such as UDP and
+ IPv4/IPv6.
+
+ The Unreported Loss counter is initialized to 0, and the 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).
+
+ The value of the Unreported Loss counter is decremented every time a
+ packet with L=1 is sent.
+
+ 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. In general, it should not
+ become negative due to the rescission, but it can happen in few
+ cases.
+
+ This loss signaling is similar to loss signaling in [ConEx], except
+ that the Loss Event bit is reporting the exact number of lost
+ packets, whereas the signal mechanism in [ConEx] is reporting an
+ approximate number of lost bytes.
+
+ For protocols, such as TCP [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 the
+ Unreported Loss counter by the fraction of the packet data lost (so
+ the Unreported Loss counter may become negative when a packet with
+ L=1 is sent after a partial packet has been lost).
+
+ 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 Section 3.3.1.
+
+3.3.1. End-To-End Loss
+
+ The Loss Event bit allows an observer to estimate the end-to-end loss
+ rate by counting packets with L bit values of 0 and 1 for a given
+ flow. The end-to-end loss ratio is the fraction of packets with L=1.
+
+ 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.
+
+3.3.1.1. Loss Profile Characterization
+
+ The Loss Event bit allows an observer to characterize the loss
+ profile, since the distribution of observed packets with the L bit
+ set to 1 roughly corresponds to the distribution of packets lost
+ between 1 RTT and 1 retransmission timeout (RTO) before (see
+ Section 3.3.2.1). Hence, observing random single instances of the L
+ bit set to 1 indicates random single packet loss, while observing
+ blocks of packets with the L bit set to 1 indicates loss affecting
+ entire blocks of packets.
+
+3.3.2. L+Q Bits -- Loss Measurement Using L and Q Bits
+
+ Combining L and Q bits allows a passive observer watching a single
+ direction of traffic to accurately measure:
+
+ upstream loss: sender-to-observer loss (see Section 3.2.2)
+
+ downstream loss: observer-to-receiver loss (see Section 3.3.2.2)
+
+ end-to-end loss: sender-to-receiver loss on the observed path (see
+ Section 3.3.1) with loss profile characterization (see
+ Section 3.3.1.1)
+
+3.3.2.1. Correlating End-to-End and Upstream Loss
+
+ Upstream loss is calculated by observing packets that did not suffer
+ the upstream loss (Section 3.2.2). 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 acknowledgments) and 1 RTO (loss declared due to a timeout)
+ relative to the upstream loss.
+
+ The flow RTT can sometimes be estimated by timing the 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 Section 2.1) or Delay bit (see
+ Section 2.2).
+
+ Whenever the observer needs to perform a computation that uses both
+ upstream and end-to-end loss rate measurements, it should consider
+ the 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.
+
+ If the calculated upstream loss rate exceeds the end-to-end loss rate
+ calculated in Section 3.3.1, then either the Q Period is too short
+ for the amount of packet reordering or there is observer loss,
+ described in Section 3.3.2.3. If this happens, the observer should
+ adjust the calculated upstream loss rate to match end-to-end loss
+ rate, unless the following applies.
+
+ 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.
+
+3.3.2.2. Downstream Loss
+
+ Because downstream loss affects only those packets that did not
+ suffer upstream loss, the end-to-end loss rate (eloss) relates to the
+ upstream loss rate (uloss) and downstream loss rate (dloss) as
+ (1-uloss)(1-dloss)=1-eloss. Hence, dloss=(eloss-uloss)/(1-uloss).
+
+3.3.2.3. Observer Loss
+
+ 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.
+
+ Observer loss affects the upstream loss rate measurement since it
+ causes the observer to account for fewer packets in a block of
+ identical Q bit values (see Section 3.2.2). 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
+ Section 3.3.1).
+
+ The need to adjust the upstream loss rate down to match the end-to-
+ end loss rate as described in Section 3.3.2.1 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
+ Section 3.2.2. 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.
+
+3.4. R Bit -- Reflection Square Bit
+
+ 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 blocks (also an Alternate-
+ Marking signal) varies according to these rules:
+
+ * 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; and
+
+ * if the reception of at least one further Q Block is completed
+ before transmission of the block is terminated, the size of the
+ block is updated to be the average size of the further received Q
+ Blocks.
+
+ 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 (p), is used to generate a reflection square
+ signal that toggles every M=p packets (at first). This new signal
+ produces blocks of M packets (marked using the R bit) and each of
+ them is called "Reflection Block" (Reflection Block).
+
+ The M value is then updated every time a completed Q Block in the
+ incoming square signal is received, following this formula:
+ M=round(avg(p)).
+
+ The parameter avg(p), the average number of packets in a marking
+ period, is computed based on all the Q Blocks received since the
+ beginning of the current Reflection Block.
+
+ The transmission of a Reflection 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.
+
+ 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 Section 3.2.3 should be used.
+
+ By 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.
+
+ 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 Reflection 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.
+
+3.4.1. Enhancement of Reflection Block Length Computation
+
+ 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 Reflection Block.
+
+ This can be achieved by introducing the new r_avg parameter in the
+ computation of M. The new formula is Mr=avg(p)+r_avg; M=round(Mr);
+ r_avg=Mr-M where the initial value of r_avg is equal to 0.
+
+3.4.2. Improved Resilience to Packet Reordering
+
+ 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 by using methods described
+ in Section 3.2.3.
+
+ This can be achieved by updating the size of the current Reflection
+ 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.
+
+3.4.2.1. Improved Resilience to Burst Losses
+
+ Burst losses can affect the accuracy of R measurements similar to how
+ they affect accuracy of Q measurements. Therefore, recommendations
+ in Section 3.2.3.1 apply equally to improving burst loss resilience
+ for R measurements.
+
+3.4.3. R+Q Bits -- Loss Measurement Using R and Q Bits
+
+ 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.
+
+ Single directional observer:
+ upstream loss in the observed direction: the loss between the
+ sender and the observation point (see Section 3.2.2)
+
+ "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
+
+ end-to-end loss in the unobserved direction: the loss between the
+ receiver and the sender in the opposite direction
+
+ Two directions observer (same metrics seen previously applied to
+ both direction, plus):
+ client-observer half round-trip loss: the loss between the client
+ and the observation point in both directions
+
+ observer-server half round-trip loss: the loss between the
+ observation point and the server in both directions
+
+ downstream loss: the loss between the observation point and the
+ receiver (applicable to both directions)
+
+3.4.3.1. Three-Quarters Connection Loss
+
+ 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. By knowing the value of N, an on-path observer can
+ estimate the amount of loss that has 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 three-quarters connection
+ loss rate (tqloss) is one minus the average number of packets in a
+ block of packets with the same R value (t) divided by N
+ (tqloss=1-avg(t)/N).
+
+ =======================>
+ = ********** -----Obs----> **********
+ = * Client * * Server *
+ = ********** <------------ **********
+ <============================================
+
+ (a) in client-server channel (tqloss_up)
+
+ ============================================>
+ ********** ------------> ********** =
+ * Client * * Server * =
+ ********** <----Obs----- ********** =
+ <=======================
+
+ (b) in server-client channel (tqloss_down)
+
+ Figure 10: Three-Quarters Connection Loss
+
+ The following metrics derive from this last metric and the upstream
+ loss produced by the Q bit.
+
+3.4.3.2. End-To-End Loss in the Opposite Direction
+
+ End-to-end loss in the unobserved direction (eloss_unobserved)
+ relates to the "three-quarters" connection loss (tqloss) and upstream
+ loss in the observed direction (uloss) as
+ (1-eloss_unobserved)(1-uloss)=1-tqloss. Hence,
+ eloss_unobserved=(tqloss-uloss)/(1-uloss).
+
+ ********** -----Obs----> **********
+ * Client * * Server *
+ ********** <------------ **********
+ <==========================================
+
+ (a) in client-server channel (eloss_down)
+
+ ==========================================>
+ ********** ------------> **********
+ * Client * * Server *
+ ********** <----Obs----- **********
+
+ (b) in server-client channel (eloss_up)
+
+ Figure 11: End-To-End Loss in the Opposite Direction
+
+3.4.3.3. Half Round-Trip Loss
+
+ 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 (hrtloss) relates to "three-quarters"
+ connection loss (tqloss_opposite) measured in the opposite direction
+ and the upstream loss (uloss) measured in the given direction as
+ (1-uloss)(1-hrtloss)=1-tqloss_opposite. Hence,
+ hrtloss=(tqloss_opposite-uloss)/(1-uloss).
+
+ =======================>
+ = ********** ------|-----> **********
+ = * Client * Obs * Server *
+ = ********** <-----|------ **********
+ <=======================
+
+ (a) client-observer half round-trip loss (hrtloss_co)
+
+ =======================>
+ ********** ------|-----> ********** =
+ * Client * Obs * Server * =
+ ********** <-----|------ ********** =
+ <=======================
+
+ (b) observer-server half round-trip loss (hrtloss_os)
+
+ Figure 12: Half Round-Trip Loss (Both Directions)
+
+3.4.3.4. Downstream Loss
+
+ 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
+ Section 3.3.2.2, or "half round-trip" loss and upstream loss in the
+ opposite direction.
+
+ For the latter, dloss=(hrtloss-uloss_opposite)/(1-uloss_opposite).
+
+ =====================>
+ ********** ------|-----> **********
+ * Client * Obs * Server *
+ ********** <-----|------ **********
+
+ (a) in client-server channel (dloss_up)
+
+ ********** ------|-----> **********
+ * Client * Obs * Server *
+ ********** <-----|------ **********
+ <=====================
+
+ (b) in server-client channel (dloss_down)
+
+ Figure 13: Downstream Loss
+
+3.5. E Bit -- ECN-Echo Event Bit
+
+ While the primary focus of this document is on exposing packet loss
+ and delay, modern networks can report congestion before they are
+ forced to drop packets, as described in [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.
+
+ If downstream congestion information is desired, this information can
+ be signaled with an additional bit.
+
+ E: The "ECN-Echo Event" bit is set to 0 or 1 according to the
+ Unreported ECN-Echo counter, as explained below in Section 3.5.1.
+
+3.5.1. Setting the ECN-Echo Event Bit on Outgoing Packets
+
+ The Unreported ECN-Echo counter operates identically to Unreported
+ Loss counter (Section 3.3), except it counts packets delivered by the
+ network with Congestion Experienced (CE) markings, according to the
+ ECN-Echo feedback from the receiver.
+
+ This ECN-Echo signaling is similar to ECN signaling in [ConEx]. The
+ ECN-Echo mechanism in QUIC provides the number of packets received
+ with CE marks. For protocols like TCP, the method described in
+ [ConEx-TCP] can be employed. As stated in [ConEx-TCP], such feedback
+ can be further improved using a method described in [ACCURATE-ECN].
+
+3.5.2. Using E Bit for Passive ECN-Reported Congestion Measurement
+
+ A network observer can count packets with the CE codepoint and
+ determine the upstream CE-marking rate directly.
+
+ Observation points can also estimate ECN-reported end-to-end
+ congestion by counting packets in this direction with an E bit equal
+ to 1.
+
+ The upstream CE-marking rate and end-to-end ECN-reported congestion
+ can provide information about the downstream CE-marking rate. The
+ presence of E bits along with L bits, however, can somewhat confound
+ precise estimates of upstream and downstream CE markings if the flow
+ contains packets that are not ECN capable.
+
+3.5.3. Multiple E Bits
+
+ Some protocols, such as QUIC, support separate ECN-Echo counters.
+ For example, Section 13.4.1 of [QUIC-TRANSPORT] describes separate
+ counters for ECT(0), ECT(1), and ECN-CE. To better support such
+ protocols, multiple E bits can be used, one per a corresponding ECN-
+ Echo counter.
+
+4. Summary of Delay and Loss Marking Methods
+
+ This section summarizes the marking methods described in this
+ document, which proposes a toolkit of techniques that can be used
+ separately, partly, or all together depending on the need.
+
+ 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.
+
+ +===============+======+=====================+=============+========+
+ | Method | # of | Available Delay | Impairments | # of |
+ | | bits | Metrics | Resiliency | meas. |
+ | | +==========+==========+ | |
+ | | | UniDir | BiDir | | |
+ | | | Observer | Observer | | |
+ +===============+======+==========+==========+=============+========+
+ | S: Spin Bit | 1 | RTT | x2, Half | low | very |
+ | | | | RTT | | high |
+ +---------------+------+----------+----------+-------------+--------+
+ | D: Delay | 1 | RTT | x2, Half | high | medium |
+ | Bit | | | RTT | | |
+ +---------------+------+----------+----------+-------------+--------+
+ | SD: Spin | 2 | RTT | x2, Half | high | very |
+ | Bit & Delay | | | RTT | | high |
+ | Bit * | | | | | |
+ +---------------+------+----------+----------+-------------+--------+
+
+ Table 1: Delay Comparison
+
+ 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.
+
+ For the Loss measurement, each row in Table 2 represents a loss-
+ marking method. For each method, the table specifies the number of
+ bits required in the header, the available metrics using a
+ unidirectional or bidirectional observer, applicable protocols,
+ measurement fidelity, and delay.
+
+ +============+====+==========================+====+=================+
+ | Method |Bits| Available Loss Metrics |Prto| Measurement |
+ | | | | | Aspects |
+ | | +============+=============+ +==========+======+
+ | | | UniDir | BiDir | | Fidelity |Delay |
+ | | | Observer | Observer | | | |
+ +============+====+============+=============+====+==========+======+
+ | T: Round- | $1 | RT | x2, Half RT | * |Rate by |~6 RTT|
+ | Trip Loss | | | | |sampling | |
+ | Bit | | | | |1/3 to | |
+ | | | | | |1/(3*ppa) | |
+ | | | | | |of pkts | |
+ | | | | | |over 2 | |
+ | | | | | |RTT | |
+ +------------+----+------------+-------------+----+----------+------+
+ | Q: sQuare | 1 | Upstream | x2 | * |Rate over |N pkts|
+ | Bit | | | | |N pkts |(e.g.,|
+ | | | | | |(e.g., |64) |
+ | | | | | |64) | |
+ +------------+----+------------+-------------+----+----------+------+
+ | L: Loss | 1 | E2E | x2 | # |Loss |Min: |
+ | Event Bit | | | | |shape |RTT, |
+ | | | | | |(and |Max: |
+ | | | | | |rate) |RTO |
+ +------------+----+------------+-------------+----+----------+------+
+ | QL: sQuare | 2 | Upstream | x2 | # |see Q |see Q |
+ | + Loss Ev. | +------------+-------------+----+----------+------+
+ | Bits | | Downstream | x2 | # |see Q|L |see L |
+ | | +------------+-------------+----+----------+------+
+ | | | E2E | x2 | # |see L |see L |
+ +------------+----+------------+-------------+----+----------+------+
+ | QR: sQuare | 2 | Upstream | x2 | * |Rate over |see Q |
+ | + Ref. Sq. | +------------+-------------+----+N*ppa +------+
+ | Bits | | 3/4 RT | x2 | * |pkts (see |N*ppa |
+ | | +------------+-------------+----+Q bit for |pkts |
+ | | | !E2E | E2E, | * |N) |(see Q|
+ | | | | Downstream, | | |bit |
+ | | | | Half RT | | |for N)|
+ +------------+----+------------+-------------+----+----------+------+
+
+ Table 2: Loss Comparison
+
+ * 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
+
+ E2E End to end
+
+4.1. Implementation Considerations
+
+ By combining the information of the two tables above, it can be
+ deduced that the solutions with 3 bits (i.e., QL or QR + S or D) or 4
+ bits (i.e., QL or QR + SD) allow having more complete and resilient
+ measurements.
+
+ The methodologies described in the previous sections are transport
+ agnostic and can be applied in various situations. The choice of the
+ methods also depends on the specific protocol. For example, QL is a
+ good combination; however, if a protocol does not support, or cannot
+ set, the L bit, QR is the only viable solution.
+
+5. Examples of Application
+
+ This document describes several measurement methods, but it is not
+ expected that all methods will be implemented together. For example,
+ only some of the methods described in this document (i.e., sQuare bit
+ and Spin bit) are utilized in [CORE-COAP-PM]. Also, the binding of a
+ delay signal to QUIC is partially described in Section 17.4 of
+ [QUIC-TRANSPORT], which adds only the Spin bit to the first byte of
+ the short packet header, leaving two reserved bits for future use
+ (see Section 17.2.2 of [QUIC-TRANSPORT]).
+
+ All signals discussed in this document have been implemented in
+ successful experiments for both QUIC and TCP. The application
+ scenarios considered allow the monitoring of the interconnections
+ inside a data center (Intra-DC), between data centers (Inter-DC), as
+ well as end-to-end large-scale data transfers. For the application
+ of the methods described in this document, it is assumed that the
+ monitored flows follow stable paths and traverse the same measurement
+ points.
+
+ The specific implementation details and the choice of the bits used
+ for the experiments with QUIC and TCP are out of scope for this
+ document. A specification defining the specific protocol application
+ is expected to discuss the implementation details depending on which
+ bits will be implemented in the protocol, e.g., [CORE-COAP-PM]. If
+ bits used for specific measurements can also be used for other
+ purposes by a protocol, the specification is expected to address ways
+ for on-path observers to disambiguate the signals or to discuss
+ limitations on the conditions under which the observers can expect a
+ valid signal.
+
+6. Protocol Ossification Considerations
+
+ Accurate loss and delay information is not required for the operation
+ of any protocol, though its presence for a sufficient number of flows
+ is important for the operation of networks.
+
+ The delay and loss bits are amenable to "greasing" described in
+ [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
+ Section 17.4 of [QUIC-TRANSPORT]. For example, the protocol
+ designers could decide that a fraction of flows should not encode
+ loss and delay information, and instead, the bits would be set to
+ arbitrary values. Setting any of the bits described in this document
+ to arbitrary values would make the corresponding delay and loss
+ information resemble noise rather than the expected signal for the
+ flow, and the observers would need to be ready to ignore such flows.
+
+7. Security Considerations
+
+ The methods described in this document are transport agnostic and
+ potentially applicable to any transport-layer protocol, and
+ especially valuable for encrypted protocols. These methods can be
+ applied to both limited domains and the Internet, depending on the
+ specific protocol application.
+
+ 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.
+
+ 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 gleaned by timing packets and observing the
+ congestion controller response.
+
+ The measurements described in this document do not imply that new
+ packets injected into the network can cause potential harm to the
+ network itself and to data traffic. The measurements could be harmed
+ by an attacker altering the marking of the packets or injecting
+ artificial traffic. Authentication techniques may be used where
+ appropriate to guard against these traffic attacks.
+
+ Hence, loss bits do not provide a viable new mechanism to attack data
+ integrity and secrecy.
+
+ The measurement fields introduced in this document are intended to be
+ included in the packets. However, it is worth mentioning that it may
+ be possible to use this information as a covert channel.
+
+ This document does not define a specific application, and the
+ described techniques can generally apply to different communication
+ protocols operating in different security environments. A
+ specification defining a specific protocol application is expected to
+ address the respective security considerations and must consider
+ specifics of the protocol and its expected operating environment.
+ For example, security considerations for QUIC, discussed in
+ Section 21 of [QUIC-TRANSPORT] and Section 9 of [QUIC-TLS], consider
+ a possibility of active and passive attackers in the network as well
+ as attacks on specific QUIC mechanisms.
+
+7.1. Optimistic ACK Attack
+
+ A defense against an optimistic ACK attack, described in Section 21.4
+ of [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.
+
+ A protocol that is more susceptible to an optimistic ACK attack with
+ the loss signal provided by the Q bit and that 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.
+
+ Similar considerations apply to the R bit, although a shortened
+ Reflection 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.
+
+7.2. Delay Bit with RTT Obfuscation
+
+ 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 [RTT-PRIVACY], connection RTT measurements for
+ geolocating endpoints are usually inferior to even the most basic IP
+ geolocation databases. It is the variability within RTT measurements
+ (the jitter) that is most informative, as it can provide insight into
+ the operating environment of the endpoints as well as the state of
+ the networks (queuing delays) used by the connection.
+
+ 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.
+
+ 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.
+
+ 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
+ (1 ms by default). Removing this threshold may lead to increasing
+ the number of valid measurements produced by the algorithm.
+
+ Note that the 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.
+
+8. Privacy Considerations
+
+ To minimize unintentional exposure of information, loss bits provide
+ an explicit loss signal -- a preferred way to share information per
+ [RFC8558].
+
+ New protocols commonly have specific privacy goals, and loss
+ reporting must ensure that loss information does not compromise those
+ privacy goals. For example, [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 (see Section 5.1 of [QUIC-TRANSPORT]). 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 the Unreported Loss counter
+ for loss of packets sent to a different destination or with a
+ different Connection ID.
+
+ It is also worth highlighting that, if these techniques are not
+ widely deployed, an endpoint that uses them may be fingerprinted
+ based on their usage. However, since there is no release of user
+ data, the techniques seem unlikely to substantially increase the
+ existing privacy risks.
+
+ Furthermore, if there is experimental traffic with these bits set on
+ the network, a network operator could potentially prioritize this
+ marked traffic by placing it in a priority queue. This may result in
+ the delivery of better service, which could potentially mislead an
+ experiment intended to benchmark the network.
+
+9. IANA Considerations
+
+ This document has no IANA actions.
+
+10. References
+
+10.1. Normative References
+
+ [ECN] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
+ of Explicit Congestion Notification (ECN) to IP",
+ RFC 3168, DOI 10.17487/RFC3168, September 2001,
+ <https://www.rfc-editor.org/info/rfc3168>.
+
+ [IPPM-METHODS]
+ Morton, A., "Active and Passive Metrics and Methods (with
+ Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799,
+ May 2016, <https://www.rfc-editor.org/info/rfc7799>.
+
+ [QUIC-TRANSPORT]
+ Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
+ Multiplexed and Secure Transport", RFC 9000,
+ DOI 10.17487/RFC9000, May 2021,
+ <https://www.rfc-editor.org/info/rfc9000>.
+
+ [RFC8558] Hardie, T., Ed., "Transport Protocol Path Signals",
+ RFC 8558, DOI 10.17487/RFC8558, April 2019,
+ <https://www.rfc-editor.org/info/rfc8558>.
+
+ [TCP] Eddy, W., Ed., "Transmission Control Protocol (TCP)",
+ STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022,
+ <https://www.rfc-editor.org/info/rfc9293>.
+
+10.2. Informative References
+
+ [ACCURATE-ECN]
+ Briscoe, B., Kühlewind, M., and R. Scheffenegger, "More
+ Accurate Explicit Congestion Notification (ECN) Feedback
+ in TCP", Work in Progress, Internet-Draft, draft-ietf-
+ tcpm-accurate-ecn-26, 24 July 2023,
+ <https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-
+ accurate-ecn-26>.
+
+ [AltMark] Fioccola, G., Ed., Cociglio, M., Mirsky, G., Mizrahi, T.,
+ and T. Zhou, "Alternate-Marking Method", RFC 9341,
+ DOI 10.17487/RFC9341, December 2022,
+ <https://www.rfc-editor.org/info/rfc9341>.
+
+ [ANRW19-PM-QUIC]
+ Bulgarella, F., Cociglio, M., Fioccola, G., Marchetto, G.,
+ and R. Sisto, "Performance measurements of QUIC
+ communications", Proceedings of the Applied Networking
+ Research Workshop (ANRW '19), Association for Computing
+ Machinery, DOI 10.1145/3340301.3341127, July 2019,
+ <https://doi.org/10.1145/3340301.3341127>.
+
+ [ConEx] Mathis, M. and B. Briscoe, "Congestion Exposure (ConEx)
+ Concepts, Abstract Mechanism, and Requirements", RFC 7713,
+ DOI 10.17487/RFC7713, December 2015,
+ <https://www.rfc-editor.org/info/rfc7713>.
+
+ [ConEx-TCP]
+ Kuehlewind, M., Ed. and R. Scheffenegger, "TCP
+ Modifications for Congestion Exposure (ConEx)", RFC 7786,
+ DOI 10.17487/RFC7786, May 2016,
+ <https://www.rfc-editor.org/info/rfc7786>.
+
+ [CORE-COAP-PM]
+ Fioccola, G., Zhou, T., Nilo, M., Milan, F., and F.
+ Bulgarella, "Constrained Application Protocol (CoAP)
+ Performance Measurement Option", Work in Progress,
+ Internet-Draft, draft-ietf-core-coap-pm-01, 19 October
+ 2023, <https://datatracker.ietf.org/doc/html/draft-ietf-
+ core-coap-pm-01>.
+
+ [IPPM-SPIN]
+ Trammell, B., Ed., "An Explicit Transport-Layer Signal for
+ Hybrid RTT Measurement", Work in Progress, Internet-Draft,
+ draft-trammell-ippm-spin-00, 9 January 2019,
+ <https://datatracker.ietf.org/doc/html/draft-trammell-
+ ippm-spin-00>.
+
+ [IPv6AltMark]
+ Fioccola, G., Zhou, T., Cociglio, M., Qin, F., and R.
+ Pang, "IPv6 Application of the Alternate-Marking Method",
+ RFC 9343, DOI 10.17487/RFC9343, December 2022,
+ <https://www.rfc-editor.org/info/rfc9343>.
+
+ [QUIC-MANAGEABILITY]
+ Kühlewind, M. and B. Trammell, "Manageability of the QUIC
+ Transport Protocol", RFC 9312, DOI 10.17487/RFC9312,
+ September 2022, <https://www.rfc-editor.org/info/rfc9312>.
+
+ [QUIC-SPIN]
+ Trammell, B., Ed., De Vaere, P., Even, R., Fioccola, G.,
+ Fossati, T., Ihlar, M., Morton, A., and S. Emile, "Adding
+ Explicit Passive Measurability of Two-Way Latency to the
+ QUIC Transport Protocol", Work in Progress, Internet-
+ Draft, draft-trammell-quic-spin-03, 14 May 2018,
+ <https://datatracker.ietf.org/doc/html/draft-trammell-
+ quic-spin-03>.
+
+ [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure
+ QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021,
+ <https://www.rfc-editor.org/info/rfc9001>.
+
+ [RFC8701] Benjamin, D., "Applying Generate Random Extensions And
+ Sustain Extensibility (GREASE) to TLS Extensibility",
+ RFC 8701, DOI 10.17487/RFC8701, January 2020,
+ <https://www.rfc-editor.org/info/rfc8701>.
+
+ [RTT-PRIVACY]
+ Trammell, B. and M. Kühlewind, "Revisiting the Privacy
+ Implications of Two-Way Internet Latency Data", Passive
+ and Active Measurement, pp. 73-84, Springer International
+ Publishing, DOI 10.1007/978-3-319-76481-8_6,
+ ISBN 9783319764801, March 2018,
+ <https://doi.org/10.1007/978-3-319-76481-8_6>.
+
+ [TRANSPORT-ENCRYPT]
+ Fairhurst, G. and C. Perkins, "Considerations around
+ Transport Header Confidentiality, Network Operations, and
+ the Evolution of Internet Transport Protocols", RFC 9065,
+ DOI 10.17487/RFC9065, July 2021,
+ <https://www.rfc-editor.org/info/rfc9065>.
+
+ [TSVWG-SPIN]
+ Trammell, B., Ed., "A Transport-Independent Explicit
+ Signal for Hybrid RTT Measurement", Work in Progress,
+ Internet-Draft, draft-trammell-tsvwg-spin-00, 2 July 2018,
+ <https://datatracker.ietf.org/doc/html/draft-trammell-
+ tsvwg-spin-00>.
+
+ [UDP-OPTIONS]
+ Touch, J., "Transport Options for UDP", Work in Progress,
+ Internet-Draft, draft-ietf-tsvwg-udp-options-23, 15
+ September 2023, <https://datatracker.ietf.org/doc/html/
+ draft-ietf-tsvwg-udp-options-23>.
+
+ [UDP-SURPLUS]
+ Herbert, T., "UDP Surplus Header", Work in Progress,
+ Internet-Draft, draft-herbert-udp-space-hdr-01, 8 July
+ 2019, <https://datatracker.ietf.org/doc/html/draft-
+ herbert-udp-space-hdr-01>.
+
+Acknowledgments
+
+ 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.
+
+Contributors
+
+ The following people provided valuable contributions to this
+ document:
+
+ Marcus Ihlar
+ Ericsson
+ Email: marcus.ihlar@ericsson.com
+
+
+ Jari Arkko
+ Ericsson
+ Email: jari.arkko@ericsson.com
+
+
+ Emile Stephan
+ Orange
+ Email: emile.stephan@orange.com
+
+
+ Dmitri Tikhonov
+ LiteSpeed Technologies
+ Email: dtikhonov@litespeedtech.com
+
+
+Authors' Addresses
+
+ Mauro Cociglio
+ Telecom Italia - TIM
+ Via Reiss Romoli, 274
+ 10148 Torino
+ Italy
+ Email: mauro.cociglio@outlook.com
+
+
+ Alexandre Ferrieux
+ Orange Labs
+ Email: alexandre.ferrieux@orange.com
+
+
+ Giuseppe Fioccola
+ Huawei Technologies
+ Riesstrasse, 25
+ 80992 Munich
+ Germany
+ Email: giuseppe.fioccola@huawei.com
+
+
+ Igor Lubashev
+ Akamai Technologies
+ Email: ilubashe@akamai.com
+
+
+ Fabio Bulgarella
+ Telecom Italia - TIM
+ Via Reiss Romoli, 274
+ 10148 Torino
+ Italy
+ Email: fabio.bulgarella@guest.telecomitalia.it
+
+
+ Massimo Nilo
+ Telecom Italia - TIM
+ Via Reiss Romoli, 274
+ 10148 Torino
+ Italy
+ Email: massimo.nilo@telecomitalia.it
+
+
+ Isabelle Hamchaoui
+ Orange Labs
+ Email: isabelle.hamchaoui@orange.com
+
+
+ Riccardo Sisto
+ Politecnico di Torino
+ Email: riccardo.sisto@polito.it