<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yuan-quic-congestion-data-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Congestion Data Frame">Exchanging Congestion Control Data in QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-yuan-quic-congestion-data-03"/>
    <author fullname="袁靖昊" asciiFullname="Jinghao Yuan">
      <organization>Bytedance</organization>
      <address>
        <email>yuanjinghao@bytedance.com</email>
      </address>
    </author>
    <author fullname="肖磊" asciiFullname="Lei Xiao">
      <organization>Bytedance</organization>
      <address>
        <email>xiaolei.shawn@bytedance.com</email>
      </address>
    </author>
    <author fullname="Mike Bishop">
      <organization>Akamai Technologies</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <author fullname="Rich Salz">
      <organization>Akamai Technologiers</organization>
      <address>
        <email>rsalz@akamai.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="27"/>
    <area>Web and Internet Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>QUIC</keyword>
    <keyword>congestion control</keyword>
    <keyword>careful resume</keyword>
    <abstract>
      <?line 72?>

<t>This draft defines a new transport frame which enables consenting endpoints
to share congestion control state about the network connection for various
purposes, including client-side adaptive bitrate selection during an ongoing
connection. It also allows an endpoint's own congestion control state to be echoed
back to it by a peer for consideration at the beginning of a future connection.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-yuan-quic-congestion-data/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/MikeBishop/quic-samsara"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>All Internet transports are required to either use a congestion control
algorithm, or to constrain their rate of transmission <xref target="RFC8085"/>. Most
congestion control algorithms take time to ramp up the sending rate, called the
"Slow-Start phase." This defines a time in which a sender intentionally uses
less capacity than might be available so as to avoid or limit overshoot of the
available capacity for the path. This is because any overshoot can have
detrimental effects both for the current flow and for any other flows with which
it shares network bottlenecks.</t>
      <t>At the same time, using less capacity than is available necessarily limits
performance early in the connection. Careful Resume
<xref target="CAREFUL-RESUME"/> is a mechanism whereby
remembered congestion control parameters can be validated as potentially
applicable to a new connection, probed, and ultimately used to grow the
congestion window more rapidly than slow-start would otherwise permit.</t>
      <t>One optimization approach is to use historical congestion information to
provide the congestion algorithm with
reliable input to help it exit the slow start phase. The most direct and
reliable information can be samples collected during the congestion algorithm,
such as the congestion window size and probe bandwidth.</t>
      <t>While clients often connect to a manageable number of servers and can retain
such state, servers typically service orders of magnitude more clients and
cannot feasibly retain such information. Further, servers are often deployed
with many instances and attempting to coordinate the sharing of this information
between them may prove impractical. Thus, for a server to implement Careful
Resume, some external means of recalling its previous state is useful.</t>
      <t>This document specifies a mechanism which allows a QUIC <xref target="QUIC"/> endpoint to
periodically export its congestion control state, optionally in an
integrity-protected manner. This exported state is sent to the peer in a
CONGESTION_DATA frame.
When establishing a subsequent connection, an endpoint with persistent storage
can include this data in a CONGESTION_DATA_RECALL frame in its 0-RTT or 1-RTT
packets, assisting its peer to recall the information necessary to perform
Careful Resume.</t>
      <t>This mechanism is comparable to HTTP cookies, <xref target="COOKIES"/>, but
for transport information.
This data may also be useful for application-layer purposes, such as
adaptive-bit-rate video. The exported information is readable by the peer and
can be exposed to the application through local interfaces. <xref target="client-abr"/>
describes how a client can consume server-side statistics for bitrate
selection during the current connection, independently of state recall.</t>
      <section anchor="peer-visibility">
        <name>Peer Visibility</name>
        <t>The peer's viewpoint of a connection can be useful for debugging and as
additional information to be considered by on-path entities such
as congestion controllers and
application-layer protocols. Therefore, this extension deliberately does not
encrypt the data reported to the peer. Instead, the data is provided in
cleartext with an optional integrity tag.</t>
        <t>If a server wishes to recall information about past connections without sharing
that data with the client, this information can already be encoded in address
validation tokens without requiring the cooperation of the client; see <xref section="8.1.3" sectionFormat="of" target="QUIC"/>.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document also uses terminology defined in <xref target="QUIC"/> and
<xref target="QUIC-TLS"/>, in particular the frame layout notation from <xref section="1.3" sectionFormat="of" target="QUIC"/>.</t>
      </section>
    </section>
    <section anchor="transport-parameter">
      <name>Transport Parameter</name>
      <t>Desire and willingness to receive the frames defined in this specification is
indicated by means of the following QUIC transport parameter:</t>
      <artwork><![CDATA[
support_congestion_data(i)
]]></artwork>
      <t>The support_congestion_data value is a variable-length integer that
encodes these three one-bit flags:</t>
      <dl>
        <dt>CONSUME (0x01):</dt>
        <dd>
          <t>This indicates that the sender is interested in receiving CONGESTION_DATA
frames for its own uses during the current connection, independent of the
receiver's ability to reuse the data in the future.</t>
        </dd>
        <dt>CACHE (0x02):</dt>
        <dd>
          <t>This indicates that the sender is willing to receive CONGESTION_DATA
frames and potentially return the contents in a CONGESTION_DATA_RECALL
frame on a subsequent connection.</t>
        </dd>
        <dt>CONSIDER (0x04):</dt>
        <dd>
          <t>This indicates that the sender is willing to have values it may have
provided on a previous connection returned to it in a CONGESTION_DATA_RECALL
frame.</t>
        </dd>
      </dl>
      <t>All other bits <bcp14>MUST</bcp14> be set to zero when sending and <bcp14>MUST</bcp14> be ignored on receipt.</t>
      <t>The default for this parameter is 0, which indicates that the endpoint does not
support CONGESTION_DATA or CONGESTION_DATA_RECALL frames. A value other
than 0 indicates that the endpoint supports the indicated frame types and is
willing to receive such frames on this connection.</t>
      <t>An endpoint <bcp14>MUST NOT</bcp14> send CONGESTION_DATA or CONGESTION_DATA_RECALL frames
until it has received the support_congestion_data transport parameter with a
non-zero value during the handshake (or during a previous handshake if 0-RTT is
used).</t>
      <t>An endpoint <bcp14>MUST NOT</bcp14> send CONGESTION_DATA frames to a peer which did not set
the CONSUME or CACHE flags. An endpoint <bcp14>MUST NOT</bcp14> send CONGESTION_DATA_RECALL
frames to a peer which did not set the CONSIDER flag. An endpoint that receives
a frame for which it has not indicated support via the transport parameter <bcp14>MUST</bcp14>
terminate the connection with an error of type PROTOCOL_VIOLATION.</t>
    </section>
    <section anchor="net-stats">
      <name>Network Statistics</name>
      <t>Each network statistic is structured as a TLV:</t>
      <artwork><![CDATA[
Network Statistic structure {
  Type (i),
  Length (i),
  Value (..),
}
]]></artwork>
      <t>This structure includes the following fields:</t>
      <dl>
        <dt>Type:</dt>
        <dd>
          <t>Indicates the statistic being offered, encoded as a variable-length integer.</t>
        </dd>
        <dt>Length:</dt>
        <dd>
          <t>The length of the Value field in bytes, encoded as a variable-length integer.</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>A Type-specific value carrying the payload of the indicated statistic.</t>
        </dd>
      </dl>
      <t>This specification defines a number of initial statistics, but additional
statistics can be added by registering a value in the appropriate registry (see
<xref target="iana-considerations"/>). An implementation <bcp14>MUST</bcp14> ignore any statistics it cannot
understand, but <bcp14>MAY</bcp14> decline to return protected statistics to a peer if it
cannot verify that it is willing to share the contained information.</t>
      <t>A receiver may get a message with multiple occurrences of a particular TLV
value. If the values are identical, the reciever <bcp14>SHOULD</bcp14> ignore them.
If they differ, and one of the values is protected by an integrity tag,
the receiver <bcp14>SHOULD</bcp14> treat this as an attack and close the connection.
If none of the instances are integrity-protected, the receiver <bcp14>MAY</bcp14>
ignore them, use only one of the instances, or close the connection
as it determines to be most appropriate.</t>
      <t>In the sub-section below, only the names are used; the numeric value that
appears in the protocol is defined in <xref target="net-stats-registry"/>.</t>
      <t>The Integrity Tag <xref target="integrity-tag"/> uses this statistics structure
to make scanning easier.</t>
      <section anchor="timestamp">
        <name>Timestamp</name>
        <t>The Timestamp statistic indicates the time at which the sender generated
this frame. This can be used on future connections to determine whether the
recalled statistics are recent enough to be useful.</t>
        <artwork><![CDATA[
*Note* Format of the timestamp is TBD.
]]></artwork>
      </section>
      <section anchor="path-tuple">
        <name>Path Tuple</name>
        <t>The Path Tuple statistic encodes an identifier of the path on which these
statistics were generated. Knowing the connection addresses as seen from the
peer's perspective can be useful for a number of scenarios (e.g.,
<xref target="STUN"/>). The reciever <bcp14>MAY</bcp14> use this to to compare similarity of the
previous endpoints to those of a
new connection will when deciding if returned statistics
might be applicable to a new connection.</t>
        <t>The structure of the value is:</t>
        <artwork><![CDATA[
Path Endpoint structure {
  Type (i) = 0x202,
  Length (i) = 12/36,
  Local IP (4/16),
  Local Port (2),
  Remote IP (4/16),
  Remote Port (2),
}
]]></artwork>
        <artwork><![CDATA[
*NOTE* I am confused about this structure.  Is the Type and Length
from the TLV?  If so, should "0x202" be the assigned number "0xca" ?
]]></artwork>
        <t>It contains the following fields:</t>
        <dl>
          <dt>Local IP:</dt>
          <dd>
            <t>The sender's IP address on the associated transport path, encoded as either 4
or 16 bytes depending on IP version.</t>
          </dd>
          <dt>Local Port:</dt>
          <dd>
            <t>The sender's port number on the associate transport path, encoded as a
two-byte integer.</t>
          </dd>
          <dt>Remote IP:</dt>
          <dd>
            <t>The receiver's IP address as observed by the sender on the associated
transport path, encoded as either 4 or 16 bytes depending on IP version.</t>
          </dd>
          <dt>Remote Port:</dt>
          <dd>
            <t>The receiver's port number as observed by the sender on the associated
transport path</t>
          </dd>
        </dl>
        <t>The IP version being used can be inferred from the length of the payload.</t>
      </section>
      <section anchor="slow-start-status">
        <name>Slow Start Status</name>
        <t>The Slow Start Status statistic indicates whether the sender's congestion
controller is in the Slow Start phase. The value is a single byte, set to 0x00
if the sender is not in Slow Start and 0x01 if the sender is in Slow Start.</t>
      </section>
      <section anchor="network-type">
        <name>Network Type</name>
        <t>The Network Type statistic indicates the sender's understanding of its
network access medium, encoded as a single byte value. Note that this is purely
advisory, since applications will only be aware of the local network at best.</t>
        <t>The defined values are at <xref target="net-type-registry"/>.</t>
      </section>
      <section anchor="maximum-congestion-window">
        <name>Maximum Congestion Window</name>
        <t>The Maximum Congestion Window statistic indicates the maximum congestion
window (CWD) sampled within the observation period, measured in bytes.
It is encoded as a variable-lenth integer.
CWD is a
key metric in congestion control algorithms, as it represents the amount of
unacknowledged data that a sender can have in flight on the network. A larger
CWD generally allows for a higher sending rate.</t>
      </section>
      <section anchor="maximum-in-flight-data">
        <name>Maximum In-Flight Data</name>
        <t>The Maximum In-Flight Data statistic indicates the maximum in-flight data
sampled within the observation period, measured in bytes.
It is encoded as a variable-length integer.
This represents the highest number of bytes sent by
the sender that have not yet been acknowledged by the receiver during the
measurement period. This metric provides insight into the actual amount of data
in transit at any given time, which can be useful for diagnosing network
performance issues.</t>
      </section>
      <section anchor="smoothed-rtt">
        <name>Smoothed RTT</name>
        <t>The Smoothed RTT statistic indicates the most recent smoothed Round-Trip
Time (RTT) within the observation period, measured in milliseconds.
It is encoded as a variable-length integer. It is calculated as
defined in <xref target="RFC9002"/>. RTT is a key metric for congestion control, estimating
the time it takes for a packet to travel from the sender to the receiver and
back. The smoothed RTT calculation accounts for both the latest RTT and a
historical average, helping to dampen the effect of short-term network
fluctuations.</t>
      </section>
      <section anchor="minimum-rtt">
        <name>Minimum RTT</name>
        <t>The Minimum RTT statistic indicates the minimum RTT sampled within the
observation period, measured in milliseconds.
It is encoded as a variable-length integer,
This metric provides a baseline for the best-case network latency
observed during the measurement period. A low minimum RTT can indicate a stable
and efficient network path, while a high one might suggest persistent latency
issues.</t>
      </section>
      <section anchor="rtt-variance">
        <name>RTT Variance</name>
        <t>The RTT Variance statistic indicates the most recent RTT deviation within
the observation period, measured in milliseconds.
It is encoded as a variable-length integer.
It is calculated as defined in <xref target="RFC9002"/>. This metric
quantifies the variability of the RTT, providing insight into network jitter and
stability. A low RTT variance suggests a consistent network path, while a high
value indicates significant fluctuations in network latency.</t>
      </section>
      <section anchor="latest-bandwidth">
        <name>Latest Bandwidth</name>
        <t>The Latest Bandwidth statistic indicates the current raw throughput of
the connection, measured in kilobits per second (kbps).
It is encoded as a variable-length integer.
This metric represents the instantaneous sending
capacity as perceived by the sender and is a crucial input for congestion
control algorithms.</t>
      </section>
      <section anchor="maximum-bandwidth">
        <name>Maximum Bandwidth</name>
        <t>The Maximum Bandwidth statistic indicates the maximum raw throughput
sampled within the observation period, measured in kbps.
It is encoded as a variable-length integer.
This metric provides a view of
the peak network capacity observed during the measurement period, which can be
useful for understanding the best possible performance on the current network
path.</t>
      </section>
      <section anchor="throughput">
        <name>Throughput</name>
        <t>The Throughput statistic indicates the useful throughput for data,
excluding retransmissions, within the observation period, measured in kbps.
It is encoded as a variable-length integer. This metric is a
measure of the effective data rate delivered to the receiver's application
layer.
It isolates the useful data rate, providing a more accurate
measure of application-level performance than the raw sending rate, which
includes retransmitted data.</t>
      </section>
      <section anchor="send-rate">
        <name>Send Rate</name>
        <t>The Send Rate statistic indicates the sending rate for all data,
including retransmissions, within the observation period, measured in kbps.
It is encoded as a variable-length integer. This metric
provides a measure of the total data rate at which the sender is transmitting
data.
It is useful for understanding the sender's total load on the network.</t>
      </section>
      <section anchor="receive-rate">
        <name>Receive Rate</name>
        <t>The Receive Rate statistic indicates the receiving rate within the
observation period in kbps.
It is encoded as a variable-length integer.
This metric measures the total rate at which the
receiver is acknowledging data, including both new data and retransmissions.
It is useful for understanding the receiver's perspective on the data
flow and can be used to compare against the sender's rate to identify potential
bottlenecks.</t>
      </section>
      <section anchor="input-rate">
        <name>Input Rate</name>
        <t>The Input Rate statistic indicates the input bitrate from the application
layer within the observation period in kbps.
It is encoded as a variable-length integer.
This metric represents the rate at which
data is being provided to the receiving application.
It gives an end-to-end view of the application data flow.</t>
      </section>
      <section anchor="loss-rate">
        <name>Loss Rate</name>
        <t>The Loss Rate statistic indicates the arithmetic mean of the packet loss
rate samples within the observation period. The value is expressed as a
percentage at 0.1% resolution within a range of 0 to 1000 inclusive.
It is encoded as a variable-length integer.
This metric provides a clear measure of the quality of the network
path, as it quantifies the proportion of packets that are sent but not received.
A high loss rate often indicates network congestion or instability.</t>
      </section>
      <section anchor="buffer-length">
        <name>Buffer Length</name>
        <t>The Buffer Length statistic indicates the current amount of data cached
by the QUIC connection layer buffer when the observation frame is generated
in bytes.
It is encoded as a variable-length integer. This metric reflects
the amount of data the sender is holding in its buffer before transmission,
which can be an important indicator of the sender's ability to keep up with the
application's sending rate and can also be a sign of network congestion.</t>
      </section>
    </section>
    <section anchor="frame-types">
      <name>Frame Types</name>
      <section anchor="congestiondata-frames">
        <name>CONGESTION_DATA Frames</name>
        <t>CONGESTION_DATA frames (type TBD1) provide a list of Network Statistics
values which the sender chooses to share about the state of the network
connection from its viewpoint.</t>
        <artwork><![CDATA[
CONGESTION_DATA Frame {
  Type (i) = TBD1,
  Protected Count (i),
  Protected Network Statistics (..) ...,
  [Integrity Tag (1) ...],
  Unprotected Count (i),
  Unprotected Network Statistics (..) ...,
}
]]></artwork>
        <t>CONGESTION_DATA frames contain the following fields:</t>
        <dl>
          <dt>Protected Count:</dt>
          <dd>
            <t>A variable-length integer representing the number of Network Statistics in the
Protected Network Statistics field.</t>
          </dd>
          <dt>Protected Network Statistics:</dt>
          <dd>
            <t>A sequence of Network Statistics objects whose length is given by the
Protected Count.</t>
          </dd>
          <dt>Integrity Tag:</dt>
          <dd>
            <t>A message integrity check,  as described in <xref target="integrity-tag"/>. This
field is absent if Protected Count is zero.
While this document provides some examples, the format of the check
<bcp14>MUST</bcp14> be treated as opaque by the receiver.</t>
          </dd>
          <dt>Unprotected Count:</dt>
          <dd>
            <t>A variable-length integer representing the number of Network Statistics in the
Unprotected Network Statistics field.</t>
          </dd>
          <dt>Unprotected Network Statistics:</dt>
          <dd>
            <t>A sequence of Network Statistics objects whose length is given by Unprotected
Count.</t>
          </dd>
        </dl>
        <t>CONGESTION_DATA frames are not retransmittable, though a loss event might
trigger the generation of a new CONGESTION_DATA frame; see
<xref target="sending-network-statistics"/>.</t>
        <t>CONGESTION_DATA frames can be sent at any point in the connection after 0-RTT
or 1-RTT keys have been established, though useful data will likely not be
available until at least one round-trip has occurred. If a CONGESTION_DATA
frame is received in an Initial or Handshake packet, it <bcp14>MUST</bcp14> be treated as a
connection error of type PROTOCOL_VIOLATION.</t>
        <section anchor="sending-network-statistics">
          <name>Sending Network Statistics</name>
          <t>If an endpoint wishes to receive CONGESTION_DATA_RECALL frames on
future connections with the peer and the peer has set the CACHE flag, the
endpoint <bcp14>MAY</bcp14> send CONGESTION_DATA frames containing the values it
wishes to recall in future connections in the Protected Network Statistics
field. It <bcp14>MAY</bcp14> send additional CONGESTION_DATA frames when these values have
changed significantly and it wishes to update the stored values, or when a
previous CONGESTION_DATA frame is declared lost.</t>
          <t>If the peer has set the CONSUME flag, an endpoint <bcp14>SHOULD</bcp14> send
CONGESTION_DATA frames periodically throughout the connection's lifetime.
However, an implementation <bcp14>SHOULD NOT</bcp14> send additional CONGESTION_DATA frames
if the connection has been idle since the last such frame was sent.</t>
          <t>In addition to any values the endpoint placed in Protected Network Statistics,
the endpoint includes such other values as it is willing to provide in the
Unprotected Network Statistics field.</t>
          <t>If an endpoint sends multiple CONGESTION_DATA frames, it is not required to
include the same set of network statistics in each frame. For example, some
statistics are more useful sent at a regular frequency, while others only need
to be sent if they have changed significantly from the last value known to have
been received. However, as the server does not control which CONGESTION_DATA
will be cached, it <bcp14>SHOULD</bcp14> include the same Protected Network Statistics fields
in each frame.</t>
        </section>
        <section anchor="integrity-tag">
          <name>Integrity Tag</name>
          <t>The integrity tag is calculated over the Protected Count and Protected Network
Statistics field by the sender.</t>
          <t>This field is identical to the Network Statistics structure, and as such
the value is a
variable-length set of bytes, whose format is known only
to the sender. The purpose of this field is to provide suitable assurance
to the sender that, when the statistics are later sent back to it through
the CONGESTION_DATA_RECALL frame, that they
have not been modified. This is often called a "message authentication
code" (MAC). To emphasize that only a portion of a message is protected,
this document does not use that term.</t>
          <t>The algorithm for generating and verifying an integrity tag <bcp14>MAY</bcp14>
depend on the ordering of the Protected fields although some implementations
may perform a simple canonicalization by sorting the statistics by
type identifier. Because of this, receivers <bcp14>SHOULD NOT</bcp14> modify the
content or ordering of any of the Protected statistics in any way,
unless they have out-of-band knowledge that it is safe to do so.</t>
          <t>If the server has a nonce or other private material, it can hash that
with the incoming Protected fields and use that as the outgoing Integrity
tag. This can be either a simple hash of both parts, or an HMAC keyed
hash <xref target="RFC2104"/> can be used.</t>
          <t>Being able to change algorithms without large-scale protocol modifications
is important. Servers may wish to use a fixed-number of leading bytes to
indicate the algorithm they are using. It is also a best practice to
generate new private data periodically, while still allowing old messages
to be validated. To handle this, it is a good idea to use a fixed
number of secondary bytes to act as a key or nonce identifier.</t>
          <t>If or when an Intgrity Tag algorithm is to be widely used, it can be documented
and assigned a number in the Network Statistic Registry <xref target="net-stats-registry"/>.</t>
          <t>A sample implementation is provided in <xref target="integrity-impl"/>.</t>
        </section>
      </section>
      <section anchor="congestiondatarecall-frames">
        <name>CONGESTION_DATA_RECALL Frames</name>
        <t>CONGESTION_DATA_RECALL frames (type TBD2) contain a list of Network
Statistics values which the sender received from the recipient during a previous
connection.</t>
        <t>This frame <bcp14>SHOULD</bcp14> be sent as early as possible in the connection once 0-RTT or
1-RTT keys are available. While the frame <bcp14>MAY</bcp14> be sent at any point in the
connection, if it arrives after the recipient has exited slow-start the values
it contains will likely not be useful.</t>
        <artwork><![CDATA[
CONGESTION_DATA_RECALL Frame {
  Type (i) = TBD2,
  Protected Count (i),
  Protected Network Statistics (..) ...,
  Integrity Tag (1..),
}
]]></artwork>
        <artwork><![CDATA[
*NOTE* Do we want to allow unprotected statistics here also, with the
caveat that the receiver may reject them, or even the whole message?
]]></artwork>
        <t>CONGESTION_DATA_RECALL frames contain the following fields:</t>
        <dl>
          <dt>Protected Count:</dt>
          <dd>
            <t>A variable-length integer representing the number of Network Statistics in the
Protected Network Statistics field, received in a CONGESTION_DATA frame from
the peer on a previous connection.</t>
          </dd>
          <dt>Protected Network Statistics:</dt>
          <dd>
            <t>A sequence of Network Statistics objects whose length is given by Protected
Count, received in a CONGESTION_DATA frame from the peer on a previous
connection.</t>
          </dd>
          <dt>Integrity Tag:</dt>
          <dd>
            <t>The integrity tag, received in a CONGESTION_DATA frame from
the peer on a previous connection. See <xref target="integrity-tag"/>.</t>
          </dd>
        </dl>
        <t>If a CONGESTION_DATA_RECALL frame is received in an Initial or Handshake
packet, it <bcp14>MUST</bcp14> be treated as a connection error of type PROTOCOL_VIOLATION.</t>
        <section anchor="recalling-network-statistics">
          <name>Recalling Network Statistics</name>
          <t>Upon receipt of a CONGESTION_DATA_RECALL frame, an endpoint computes the
expected Integrity Tag value as in <xref target="integrity-tag"/>. If the Integrity Tag value
does not match, the frame is ignored.</t>
          <t>If the tag is acceptable, the endpoint can consider the network statistics as
inputs to its congestion control strategy, subject to freshness, path, and
reuse checks as illustrated in <xref target="server-state-recall"/>. Successful integrity
verification does not by itself establish that the current path supports the
recalled capacity. The specifics of how a congestion controller consumes
accepted statistics, for example in Careful Resume <xref target="CAREFUL-RESUME"/>, are
outside the scope of this extension.</t>
          <t>Endpoints <bcp14>MUST NOT</bcp14> process more than one CONGESTION_DATA_RECALL frame on a
connection. Subsequent CONGESTION_DATA_RECALL frames <bcp14>MUST</bcp14> be ignored without
processing, regardless of whether the first frame was valid.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Clients choosing to return network statistics to a server provide a potential
tracking mechanism. However, this tracking mechanism provides no additional
capabilities to a server beyond those already enabled by the address validation
tokens defined in <xref section="8.1.3" sectionFormat="of" target="QUIC"/>. While address validation tokens are
opaque and can contain any data the server might wish to recall, the statistics
being transported by this mechanism are visible to the clients. Clients can
inspect the values to ensure that nothing objectionable is being saved;
implementations <bcp14>MAY</bcp14> choose not to send CONGESTION_DATA_RECALL packets which
contain statistics they cannot interpret.</t>
      <t>Clients <bcp14>SHOULD NOT</bcp14> send CONGESTION_DATA_RECALL packets on connections where they
would not have sent an Address Validation token if one were available. A client
<bcp14>MAY</bcp14> also decide not to send the packet if the length of the integrity tag does
not correspond to a digest length and a few additional bytes. This is
admittedly inelegant. and could be avoided if the format of the tag were
publicly defined, and an IANA registry for tag algorithms defined.</t>
      <t>Clients <bcp14>SHOULD</bcp14> discard stored network statistics when other potential tracking
mechanisms (e.g. HTTP Cookies) are cleared by the user.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to take the following actions, replacing
"ThisRFC" with the RFC number when assigned.</t>
      <section anchor="new-quic-transport-parameters-entry">
        <name>New QUIC Transport Parameters Entry</name>
        <t>Add a new entry to the "QUIC Transport Parameters" registry with the
following values:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Value</td>
              <td align="left">TBD</td>
            </tr>
            <tr>
              <td align="left">Parameter Name</td>
              <td align="left">support_congestion_data</td>
            </tr>
            <tr>
              <td align="left">Status</td>
              <td align="left">permanent</td>
            </tr>
            <tr>
              <td align="left">Specification</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">Date</td>
              <td align="left">TBD</td>
            </tr>
            <tr>
              <td align="left">Change Controller</td>
              <td align="left">IETF</td>
            </tr>
            <tr>
              <td align="left">Contact</td>
              <td align="left">quic@ietf.org</td>
            </tr>
            <tr>
              <td align="left">Notes</td>
              <td align="left">None</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="net-type-registry">
        <name>New QUIC Network Type Registry</name>
        <t>A new registry "QUIC Network Type" is created with the following fields:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>Numeric value</t>
          </dd>
          <dt>Meaning:</dt>
          <dd>
            <t>Brief textual description</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>A pointer to the defining document</t>
          </dd>
        </dl>
        <t>The registration policy for this registry is "Specification Required" as
described in <xref section="4.6" sectionFormat="comma" target="RFC8126"/>.</t>
        <t>The initial value of the registry is as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x00</td>
              <td align="left">Reserved</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Wire/Ethernet</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">Reserved</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">WLAN</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">2G Mobile</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">3G Mobile</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">4G Mobile</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">5G Mobile</td>
              <td align="left">ThisRFC</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="net-stats-registry">
        <name>New QUIC Network Statistics Registry</name>
        <t>A new "QUIC Network Statistics" registry is created.
It follows
the registration policies defined in <xref section="22.1" sectionFormat="comma" target="RFC9000"/>.
In addition to the fields described in that section, permanent registrations
<bcp14>MUST</bcp14> include the following fields:</t>
        <dl>
          <dt>Type:</dt>
          <dd>
            <t>The type of statistic, as described in ThisRFC, Section <xref target="net-stats"/>.</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>A short name for the field.</t>
          </dd>
        </dl>
        <t>The initial value of the table is:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0xc8</td>
              <td align="left">Timestamp</td>
            </tr>
            <tr>
              <td align="left">0xca</td>
              <td align="left">Path Tuple</td>
            </tr>
            <tr>
              <td align="left">0xcb</td>
              <td align="left">Slow Start Status</td>
            </tr>
            <tr>
              <td align="left">0xcc</td>
              <td align="left">Network Type</td>
            </tr>
            <tr>
              <td align="left">0xcd</td>
              <td align="left">Maximum Congestion Window</td>
            </tr>
            <tr>
              <td align="left">0xce</td>
              <td align="left">Maximum In-Flight Data</td>
            </tr>
            <tr>
              <td align="left">0xcf</td>
              <td align="left">Smoothed RTT</td>
            </tr>
            <tr>
              <td align="left">0xd0</td>
              <td align="left">Minimum RTT</td>
            </tr>
            <tr>
              <td align="left">0xd1</td>
              <td align="left">RTT Variance</td>
            </tr>
            <tr>
              <td align="left">0xd2</td>
              <td align="left">Latest Bandwidth</td>
            </tr>
            <tr>
              <td align="left">0xd3</td>
              <td align="left">Maximum Bandwidth</td>
            </tr>
            <tr>
              <td align="left">0xd4</td>
              <td align="left">Throughput</td>
            </tr>
            <tr>
              <td align="left">0xd5</td>
              <td align="left">Send Rate</td>
            </tr>
            <tr>
              <td align="left">0xd6</td>
              <td align="left">Receive Rate</td>
            </tr>
            <tr>
              <td align="left">0xd7</td>
              <td align="left">Input Rate</td>
            </tr>
            <tr>
              <td align="left">0xd8</td>
              <td align="left">Loss Rate</td>
            </tr>
            <tr>
              <td align="left">0xd9</td>
              <td align="left">Buffer Length</td>
            </tr>
            <tr>
              <td align="left">0xda</td>
              <td align="left">Integrity Tag</td>
            </tr>
          </tbody>
        </table>
        <t>These fields are permanent, and therefore all have the following values
for the common fields:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Status</td>
              <td align="left">permanent</td>
            </tr>
            <tr>
              <td align="left">Specification</td>
              <td align="left">ThisRFC</td>
            </tr>
            <tr>
              <td align="left">Date</td>
              <td align="left">TBD</td>
            </tr>
            <tr>
              <td align="left">Change Controller</td>
              <td align="left">IETF</td>
            </tr>
            <tr>
              <td align="left">Contact</td>
              <td align="left">quic@ietf.org</td>
            </tr>
            <tr>
              <td align="left">Notes</td>
              <td align="left">None</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms. This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP. Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t>Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic. They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t>Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t>This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <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="RFC9002">
          <front>
            <title>QUIC Loss Detection and Congestion Control</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="I. Swett" initials="I." role="editor" surname="Swett"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes loss detection and congestion control mechanisms for QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9002"/>
          <seriesInfo name="DOI" value="10.17487/RFC9002"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="HTTP-FLV-ABR" target="https://doi.org/10.1145/3789240.3829169">
          <front>
            <title>Adaptive Bitrate Live Streaming over HTTP-FLV: A Practical System Perspective</title>
            <author initials="L." surname="Zhang" fullname="Le Zhang">
              <organization/>
            </author>
            <author initials="T." surname="Meng" fullname="Tong Meng">
              <organization/>
            </author>
            <author initials="B." surname="Lu" fullname="Bingcong Lu">
              <organization/>
            </author>
            <author initials="J." surname="Yuan" fullname="Jinghao Yuan">
              <organization/>
            </author>
            <author initials="L." surname="Chen" fullname="Lu Chen">
              <organization/>
            </author>
            <author initials="H." surname="Liu" fullname="Huanting Liu">
              <organization/>
            </author>
            <author initials="L." surname="Xiao" fullname="Lei Xiao">
              <organization/>
            </author>
            <author initials="N." surname="Wu" fullname="Nailiang Wu">
              <organization/>
            </author>
            <author initials="Z." surname="Sha" fullname="Zhou Sha">
              <organization/>
            </author>
            <author initials="C." surname="Yan" fullname="Changqing Yan">
              <organization/>
            </author>
            <author initials="J." surname="Zhang" fullname="Jianrong Zhang">
              <organization/>
            </author>
            <author initials="J." surname="Kuang" fullname="Jianxin Kuang">
              <organization/>
            </author>
            <author initials="L." surname="Song" fullname="Li Song">
              <organization/>
            </author>
            <date year="2026" month="August"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/3789240.3829169"/>
          <annotation>ACM SIGCOMM 2026 Conference.</annotation>
        </reference>
        <reference anchor="CAREFUL-RESUME">
          <front>
            <title>Careful Resume: Convergence of Congestion Control from Retained State</title>
            <author fullname="N. Kuhn" initials="N." surname="Kuhn"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="R. Secchi" initials="R." surname="Secchi"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies a cautious method for Internet transports that enables fast startup of Congestion Control (CC) for a wide range of connections, known as "Careful Resume". It reuses a set of computed CC parameters that are based on previously observed path characteristics between the same pair of transport endpoints. These parameters are saved, allowing them to be later used to modify the CC behaviour of a subsequent connection.</t>
              <t>This document describes the assumptions and defines the requirements for how a sender utilises these parameters to provide opportunities for a connection to more rapidly get up to speed and utilise available capacity. It discusses how the use of this method impacts the capacity at a shared network bottleneck and the safe response that is needed after any indication that the new rate is inappropriate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9959"/>
          <seriesInfo name="DOI" value="10.17487/RFC9959"/>
        </reference>
        <reference anchor="COOKIES">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
        <reference anchor="STUN">
          <front>
            <title>Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="R. Mahy" initials="R." surname="Mahy"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with NAT traversal. It can be used by an endpoint to determine the IP address and port allocated to it by a NAT. It can also be used to check connectivity between two endpoints and as a keep-alive protocol to maintain NAT bindings. STUN works with many existing NATs and does not require any special behavior from them.</t>
              <t>STUN is not a NAT traversal solution by itself. Rather, it is a tool to be used in the context of a NAT traversal solution.</t>
              <t>This document obsoletes RFC 5389.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8489"/>
          <seriesInfo name="DOI" value="10.17487/RFC8489"/>
        </reference>
        <reference anchor="RFC2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="M. Bellare" initials="M." surname="Bellare"/>
            <author fullname="R. Canetti" initials="R." surname="Canetti"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key. The cryptographic strength of HMAC depends on the properties of the underlying hash function. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2104"/>
          <seriesInfo name="DOI" value="10.17487/RFC2104"/>
        </reference>
      </references>
    </references>
    <?line 786?>

<section anchor="integrity-impl">
      <name>Sample Integrity Tag implementation</name>
      <t>This section is not normative.</t>
      <t>We define an Integrity Tag format that consists of a one-byte algorithm
identifier, two
bytes of private nonce, and a digest. Based on the choice of
algorithm, this is a 32-byte SHA256 digest. The entire tag is therefore
35 bytes long.</t>
      <artwork><![CDATA[
*NOTE* Do we need ASCII art for that layout?
]]></artwork>
      <t>The digest will be computed over the nonce, five bytes of 0x01, and the
wire-format of the protected fields.</t>
      <t>In this example, we will use our third nonce, which is the
ASCII values of "quic-new-frame":</t>
      <artwork><![CDATA[
algid = 1
keyid = 3
nonces[] = [
    [ None ], [ None ],
    [113, 117, 105, 99, 45, 110, 101, 119, 45, 102, 114, 97, 109, 101]
    ]
padding = [ 0x01, 0x01, 0x01, 0x01, 0x01 ]
]]></artwork>
      <t>The Network Statistics values are:</t>
      <artwork><![CDATA[
*NOTE* TBD; need a sample network statistics
]]></artwork>
      <t>Which have the following wire representation:</t>
      <artwork><![CDATA[
*NOTE* Calculate them
]]></artwork>
      <t>The <tt>value</tt> for the Integrity tag is represented by the
following psuedo-code:</t>
      <artwork><![CDATA[
digest = sha56.new()
digest.add(14, nonce[2])
digest.add(5, padding)
digest.add(??, network_statistics)
value = digest.finish()
]]></artwork>
    </section>
    <section anchor="application-use-cases">
      <name>Application Use Cases</name>
      <t>The following examples illustrate the use of exported statistics for
server-side state recovery and client-side application decisions. They do not
prescribe a congestion control algorithm, an adaptation algorithm, or an
application API.</t>
      <section anchor="server-state-recall">
        <name>Server-Side Congestion State Recovery</name>
        <t>A server can use CONGESTION_DATA_RECALL to recover its own observations from
an earlier connection, providing historical inputs for mechanisms such as
Careful Resume <xref target="CAREFUL-RESUME"/>. The client acts as a storage and return
mechanism for server-generated information. The objective is to return a
self-contained, integrity-protected record that the server can assess without
retaining the full measurement history for every client.</t>
        <t>During the earlier connection, the client advertises CACHE. The server selects
a set of observations and sends them together in the Protected Network
Statistics of a CONGESTION_DATA frame, with an Integrity Tag covering the
Protected Count and the complete protected sequence. The client saves that
sequence and tag together. On a subsequent connection, after determining that
the server permits recall through CONSIDER, the client returns the saved
record in a CONGESTION_DATA_RECALL frame. With remembered permission this can
occur in 0-RTT; otherwise the client waits for permission on the new connection.</t>
        <t>The client associates each cached record with the authenticated identity of
the server that issued it and the server endpoint on that connection. When
selecting a record for recall, the client <bcp14>MUST</bcp14> select one issued by the same
server; records from another server <bcp14>MUST NOT</bcp14> be returned, even if that server
also advertises CONSIDER. For example, the cache can be scoped by the
application service identity (such as an HTTPS origin) and the server IP
address and port. An IP address alone is not an authenticated server identity.
If the client cannot establish the required association, it omits RECALL.
For 0-RTT, selection uses the server identity associated with the resumption
context and the remembered permission, rather than a new handshake result.</t>
        <artwork><![CDATA[
Client A                                    Server A
   |                                            |
   |          Connection 1                      |
   |-- CACHE ---------------------------------->|
   |<------------------------------- CONSIDER --|
   |<-- CONGESTION_DATA ------------------------|
   |    protected statistics + integrity tag    |
   |                                            |
   | Save the complete record, scoped to A      |
   |                                            |
   |          Connection 2 to A                 |
   |                                            |
   | Select A's record; check permission        |
   |-- CONGESTION_DATA_RECALL ----------------->|
   |    same protected statistics + tag         |
   |                                            | Verify record,
   |                                            | age, path, reuse
   |                                            | before recovery

Client A                                    Server B
   |                                            |
   |          New connection to B               |
   |<------------------------------- CONSIDER --|
   |                                            |
   | Cached record belongs to Server A         |
   | No cached record for Server B             |
   | Cannot construct RECALL from A's record   |
   |                                            |
   |-- CONGESTION_DATA_RECALL --X                |
   |    Not sent: server identity mismatch      |
   |                                            |
   |<---------- Normal data transfer ---------->|
]]></artwork>
        <t>Here, the same server means the authenticated service at the selected server
endpoint, not a QUIC Connection ID or a particular worker process. Behind a
load balancer, the client cannot identify which process will receive the new
connection. Such a deployment is responsible for consistent record validation
and reuse control across accepting instances, or for declining recovery when
the receiving instance cannot validate the record. Matching the server on the
client does not replace the server's checks on the current network path.</t>
        <t>The record provides three categories of information: previously observed
capacity, the context in which it was observed, and its age. The following
statistics can supply these inputs:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Information</th>
              <th align="left">Network Statistics</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Capacity observations</td>
              <td align="left">Maximum Congestion Window, Maximum In-Flight Data, Maximum Bandwidth, or Throughput</td>
              <td align="left">Provide historical window, flight-size, or rate measurements appropriate to the sender's controller</td>
            </tr>
            <tr>
              <td align="left">Timing context</td>
              <td align="left">Minimum RTT</td>
              <td align="left">Retain the minimum RTT associated with the capacity observation</td>
            </tr>
            <tr>
              <td align="left">Path context</td>
              <td align="left">Path Tuple</td>
              <td align="left">Identify the server-side view of the endpoints associated with the observation</td>
            </tr>
            <tr>
              <td align="left">Freshness</td>
              <td align="left">Timestamp</td>
              <td align="left">Bound the age of the exported record under the server's lifetime policy</td>
            </tr>
            <tr>
              <td align="left">Optional context</td>
              <td align="left">Slow Start Status, Loss Rate</td>
              <td align="left">Help interpret observations that may have been affected by startup or congestion</td>
            </tr>
          </tbody>
        </table>
        <t>The server selects an observation period and a combination of statistics that
are sufficient for its intended recovery method. Capacity and timing values
refer to the same path and a consistent observation context. A maximum
congestion window or maximum flight size is not automatically a validated
capacity estimate: startup overshoot and application-limited transmission need
to be accounted for when selecting and interpreting the record. In particular,
these maxima are not defined as Careful Resume's saved_cwnd. If a controller
requires an additional derived value or context that the existing statistics
cannot express, it can be specified as an additional Network Statistic without
changing the RECALL frame structure.</t>
        <t>Timestamp currently describes frame generation time, and its encoding remains
to be specified. For a complete recovery record, the server also needs to
bound the age of the underlying observations. For example, it can issue the
record when collecting the observations, or enforce a known maximum delay
between observation and issuance. Reissuing old measurements with a new
Timestamp does not make those measurements fresh. The server applies its
lifetime policy and rejects expired records. These rules allow the record to
provide the necessary historical inputs; they do not assert that any arbitrary
selection of statistics is sufficient for recovery.</t>
        <t>All values used to make a recovery decision, including the path and time
information, are carried in the protected sequence. For this use case, the
server uses a cryptographic authentication mechanism such as HMAC with a
server-held secret, as discussed in <xref target="integrity-tag"/>. Verifying the tag then
establishes that the returned record was issued within the server's trusted
key domain and has not been altered by the client. It prevents a client from
inflating the recorded capacity, replacing the path or timestamp, or combining
fields from different authenticated records. The client returns the protected
sequence and its tag intact; unprotected statistics are not promoted into
authenticated recovery inputs.</t>
        <t>Authenticity, freshness, and applicability are separate checks. The server
compares the protected path context with the new connection using its path
matching policy and any local indication of a path change. A valid tag does
not prove that the network conditions are unchanged. Missing required values,
unsupported encodings, a failed tag check, an expired record, or incompatible
path context cause the server to decline recovery and use normal congestion
control. QUIC packet protection secures the exchange on the current connection;
the Integrity Tag additionally binds the historical record across connections.
Neither mechanism guarantees confidentiality of the statistics from the client.</t>
        <t>A valid record can also be replayed without being modified. Limiting RECALL
processing to one frame per connection does not prevent the same record from
being returned on several connections, including through 0-RTT replay. A server
using a recovery method that disallows concurrent reuse therefore maintains
appropriate usage and invalidation state, coordinated across instances that
accept the same records. Record identity can be derived from the authenticated
record, with related records grouped under the server's endpoint policy.
Client-side storage reduces retained measurement state, but does not remove
these reuse-control requirements.</t>
        <t>Once these checks succeed, the recovered record supplies authenticated,
contextualized historical inputs to the server's congestion controller. The
controller remains responsible for validating their use on the current path.
This separation allows RECALL to support different recovery algorithms while
preserving QUIC's address-validation, anti-amplification, and flow-control
requirements.</t>
      </section>
      <section anchor="client-abr">
        <name>Client-Side Adaptive Bitrate Streaming</name>
        <t>In adaptive bitrate (ABR) streaming, a client selects among media variants
according to network conditions and playback state. Client-side observations
of media download speed provide one input to that decision. The server's
congestion controller has additional observations, including bandwidth
samples, RTT, and loss rate, which can be shared with the client through
CONGESTION_DATA frames.</t>
        <t>Section 5.1 of <xref target="HTTP-FLV-ABR"/> describes a deployed example in TikTok Live,
where a QUIC frame named CCTK (Congestion Control ToKen) periodically carries
server-side congestion control statistics to the client. The paper reports
that this feedback is the default bandwidth-estimation input to its ABR
algorithm and is supported by its major CDN providers. That deployment
motivates the use case here; CCTK is not a wire-format definition of the
CONGESTION_DATA frame specified in this document.</t>
        <t>Using this extension, the client sets the CONSUME flag in its
support_congestion_data transport parameter. After receiving this indication,
the server sends CONGESTION_DATA frames during active media delivery, as
described in <xref target="sending-network-statistics"/>. The client exposes the received
statistics to its media application through a local interface. This use case
does not require CACHE or CONSIDER, or a CONGESTION_DATA_RECALL exchange.
For feedback used only on the current connection, the server can place the
statistics in Unprotected Network Statistics with Protected Count set to
zero. These statistics remain protected by QUIC packet protection; they
simply lack the additional integrity tag used for later recall.</t>
        <artwork><![CDATA[
Client / media application                  Media server
          |                                      |
          |-- support_congestion_data: CONSUME ->|
          |                                      |
          |<----------- Media data --------------|
          |<--------- CONGESTION_DATA -----------|
          |     bandwidth, RTT, loss, ...        |
          |                                      |
     Select bitrate using                        |
     feedback and playback state                 |
          |                                      |
          |-- Application request for variant -->|
          |<----------- Media data --------------|
]]></artwork>
        <t>The application can combine Latest Bandwidth or Throughput with Smoothed RTT
and Loss Rate, together with its local playback buffer and available bitrate
ladder, to select a media variant. Recent feedback on an existing connection
can also inform initial bitrate selection for a newly requested media stream
on that connection. Without suitable feedback, the application falls back to
local observations and a conservative initial selection.</t>
        <t>Connection-level feedback provides a common input when several media streams
share a QUIC connection, reducing the need to infer network conditions
independently from each viewing session. It does not specify a per-stream
bandwidth allocation: the application still accounts for competing streams
and their combined demand. The choice of a variant and the mechanism for
switching to it remain application-layer decisions, independent of whether
the client or server executes the media switch.</t>
        <t>Feedback requires interpretation rather than direct conversion into a target
media bitrate. Section 6.3 of <xref target="HTTP-FLV-ABR"/> reports that using an aggressive
initial sending rate as a bandwidth sample led clients to select high-bitrate
variants more often and increased rebuffering. A configured sending rate is
not necessarily a measurement of sustainable delivery capacity. Applications
can use Slow Start Status and local delivery observations to qualify early
samples, and account for missing or stale feedback and path changes.
CONGESTION_DATA frames are not retransmitted, so adaptation cannot depend on
receiving every report.</t>
        <t>Section 7.2 of <xref target="HTTP-FLV-ABR"/> also discusses an extension beyond its deployed
ABR inputs: using send-buffer information to help distinguish limited media
supply from last-mile congestion. Buffer Length can provide such additional
context here, although an empty server buffer alone does not establish the
cause of reduced throughput. This is a possible application of the statistics,
not an evaluated ABR benefit in that paper.</t>
        <t>The CCTK deployment described in the paper allows a client to request a
feedback interval. This extension defines the CONSUME indication but does not
negotiate an interval. The sender chooses its reporting schedule under
<xref target="sending-network-statistics"/>, balancing freshness and overhead. No new
frame type or statistic is required for the basic use case described here.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+196XIcybXe/3yKvGA4RMrdPQC4aIiR7ggESRESNxOYmStN
TMyt7s7urmF3VauqGiBEUhH2Tz/ADf9xhMN+Ez+Ml7fw+c45uVR1NbhIcx2O
MEOhAQpVuZw8+5bD4dA0ebN0R3bv0ZvJIivmeTG3J2Uxd3WTlwV+bKpyaR9m
TWbzwv67b05P9kw2Hlfugj5K3uQ3HlfZyu2ZSda4eVldHdm6mRozLScFPT+y
0yqbNcOrTVYM/7zJJ8NJ+Hw4pc+H+7dNvRmv8rqmR83Vmj45fXT+2NobNlvW
JU2YF1O3dvR/RbM3sHtumjdllWdL/HJ6/ID+U1b006vzx3um2KzGrjoyNLQ7
MjRX7Yp6Ux/Zpto4Q8u/bbLKZTTqd25ss2JqT4vGVYVr7HmVFfW6rJo9c1lW
r+dVuVnTe7L71+6KHk6PjB0yPPDfuBP8CJDxUxp/tlnaytWbFU3pig2txNr2
eNbKVve+o6kA/9/hz3i+yvIlPQesfpu7ZjYqqzmeZ9VkQc8XTbOuj774Aq/h
UX7hRv61L/Dgi3FVXtbuCwzwBT6c581iM6ZPn+Wv3YO8XpRr/uOwzlZ1VmV4
Z0ngqpsjY7JNsygrbJOeWksbWcox/q//+u//93/+l//xn/4jP8/qSZ4/Dn/8
Pe1gkZX2j3TK/HdaTFbkf8kAnCP74Kpx06yYOP6bkx0CI36S73479i+MJuWq
Z+7/8C//87/1TvzU5faf8qz82Enf0LtLl4/qRXZZfGhawMsKwHrGP36d0Zj2
3E0WRbks57mr05lWY/7wt+7C/XnjZuVmNHbbU7zKJwt7li3/8lETVK0Zqpq+
+23Gb/EGTFFWK/r4gvENeEYTPD65v7+/b0xezNK/Pjk/fzl8/PTb4fGDV0c8
qucJx9Nsjbdo501FaGGf4pezhqhmBUQtL1wVPqdV2pdVNmnySba0Z1d141b2
JS107SYYZE+Gzqq5a46sx91pmTO6HuyPDg7u3P3i9q++vH94Z390+8vD+wf3
7stBe0Tkf0P7ljgRkfHTkf0TWNbAegSQ3+377pvnI/vMxRfPiVj5wfabD0b2
6ca/94D2CMKmR9tv/n7EKO7fTdF++2Va6snChZdpPPy6/d4Tmj4P8z+hsRrA
mZ71jgl0j7sX9N9+8fnIfhfGfE74kgNI3/UM+aeRPVtk/tU/LcoNft9+74T2
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
9Dd7JO5rt4ey0hcPX6T3qI/M/wHNvV/45a4AAA==

-->

</rfc>
