<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yuan-quic-congestion-data-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="Congestion Data Frame">Exchanging Congestion Control Data in QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-yuan-quic-congestion-data-01"/>
    <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="April" day="10"/>
    <area>Web and Internet Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>QUIC</keyword>
    <keyword>congestion control</keyword>
    <keyword>careful resume</keyword>
    <abstract>
      <?line 51?>

<t>This draft defines a new transport frame which enables consenting endpoints
to share congestion control state about the network connection for various
purposes. 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 58?>

<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.</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 takes the network statistics contained in
the frame and incorporates them into its congestion control strategy. For
example, it might exit the Reconnaissance Phase of Careful Resume
<xref target="CAREFUL-RESUME"/>. The specifics of how this is done 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="CAREFUL-RESUME">
          <front>
            <title>Convergence of Congestion Control from Retained State</title>
            <author fullname="Nicolas Kuhn" initials="N." surname="Kuhn">
              <organization>Thales Alenia Space</organization>
            </author>
            <author fullname="Emile Stephan" initials="E." surname="Stephan">
              <organization>Orange</organization>
            </author>
            <author fullname="Gorry Fairhurst" initials="G." surname="Fairhurst">
              <organization>University of Aberdeen</organization>
            </author>
            <author fullname="Raffaello Secchi" initials="R." surname="Secchi">
              <organization>University of Aberdeen</organization>
            </author>
            <author fullname="Christian Huitema" initials="C." surname="Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="1" month="October" year="2025"/>
            <abstract>
              <t>   This document specifies a cautious method for Internet transports
   that enables fast startup of congestion control for a wide range of
   connections, known as "Careful Resume".  It reuses a set of computed
   congestion control 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 congestion control behaviour of a subsequent connection.

   It describes assumptions and defines requirements for how a sender
   utilises these parameters to provide opportunities for a connection
   to more rapidly get up to speed and rapidly utilise available
   capacity.  It discusses how 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="Internet-Draft" value="draft-ietf-tsvwg-careful-resume-24"/>
        </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="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="R. Mahy" initials="R." surname="Mahy"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with Network Address Translator (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. This is an important change from the previous version of this specification (RFC 3489), which presented STUN as a complete solution.</t>
              <t>This document obsoletes RFC 3489. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5389"/>
          <seriesInfo name="DOI" value="10.17487/RFC5389"/>
        </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 760?>

<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 numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
