<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.13 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-applicability-17" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="QUIC Applicability">Applicability of the QUIC Transport Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-applicability-17"/>
    <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <author initials="B." surname="Trammell" fullname="Brian Trammell">
      <organization>Google</organization>
      <address>
        <postal>
          <street>Gustav-Gull-Platz 1</street>
          <city>8004 Zurich</city>
          <country>Switzerland</country>
        </postal>
        <email>ietf@trammell.ch</email>
      </address>
    </author>
    <date year="2022" month="July" day="11"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document discusses the applicability of the QUIC transport protocol,
focusing on caveats impacting application protocol development and deployment
over QUIC. Its intended audience is designers of application protocol mappings
to QUIC, and implementors of these application protocols.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC <xref target="QUIC"/> is a new transport protocol providing a number of advanced
features. While initially designed for the HTTP use case, it provides
capabilities that can be used with a much wider variety of applications. QUIC is
encapsulated in UDP. QUIC version 1 integrates TLS 1.3 <xref target="TLS13"/> to
encrypt all payload data and most control information. The version of HTTP that
uses QUIC is known as HTTP/3 <xref target="QUIC-HTTP"/>.</t>
      <t>This document provides guidance for application developers that want to use
the QUIC protocol without implementing it on their own. This includes general
guidance for applications operating over HTTP/3 or directly over QUIC.</t>
      <t>In the following sections we discuss specific caveats to QUIC's applicability,
and issues that application developers must consider when using QUIC as a
transport for their application.</t>
    </section>
    <section anchor="fallback">
      <name>The Necessity of Fallback</name>
      <t>QUIC uses UDP as a substrate. This enables userspace implementation and permits
traversal of network middleboxes (including NAT) without requiring updates to
existing network infrastructure.</t>
      <t>While recent measurements have shown no evidence of a widespread, systematic
disadvantage of UDP traffic compared to TCP in the Internet <xref target="Edeline16"/>,
somewhere between three <xref target="Trammell16"/> and five <xref target="Swett16"/> percent of networks
block all UDP traffic. All applications running on top of QUIC must
therefore either be prepared to accept connectivity failure on such networks
or be engineered to fall back to some other transport protocol. In the case of
HTTP, this fallback is TLS over TCP.</t>
      <t>The IETF TAPS specifications <xref target="I-D.ietf-taps-arch"/> describe a system with a
common API for multiple protocols and some of the implications of fallback
between these different protocols, specifically precluding fallback to
insecure protocols or to weaker versions of secure protocols.</t>
      <t>An application that implements fallback needs to consider the security
consequences. A fallback to TCP and TLS exposes control information to
modification and manipulation in the network. Further downgrades to older TLS
versions than used in QUIC, which is 1.3, might result in significantly weaker
cryptographic protection. For example, the results of protocol negotiation
<xref target="RFC7301"/> only have confidentiality protection if TLS 1.3 is used.</t>
      <t>These applications must operate, perhaps with impaired functionality, in the
absence of features provided by QUIC not present in the fallback protocol. For
fallback to TLS over TCP, the most obvious difference is that TCP does not
provide stream multiplexing and therefore stream multiplexing would need to be
implemented in the application layer if needed. Further, TCP implementations
and network paths often do not support the Fast Open option <xref target="RFC7413"/>, which
enables sending of payload data together with the first control packet of a new
connection as also provided by 0-RTT session resumption in QUIC. Note that
there is some evidence of middleboxes blocking SYN data even if TFO was
successfully negotiated (see <xref target="PaaschNanog"/>). And even if Fast Open
successfully operates end-to-end, it is limited to a single packet of TLS
handshake and application data, unlike QUIC 0-RTT.</t>
      <t>Moreover, while encryption (in this case TLS) is inseparably integrated with
QUIC, TLS negotiation over TCP can be blocked. If TLS over TCP cannot be
supported, the connection should be aborted, and the application then ought
to present a suitable prompt to the user that secure communication is
unavailable.</t>
      <t>In summary, any fallback mechanism is likely to impose a degradation of
performance and can degrade security; however, fallback must not silently
violate the application's expectation of confidentiality or integrity of its
payload data.</t>
    </section>
    <section anchor="zero-rtt">
      <name>Zero RTT</name>
      <t>QUIC provides for 0-RTT connection establishment. Though the same facility
exists in TLS 1.3 with TCP, 0-RTT presents opportunities and challenges for
applications using QUIC.</t>
      <t>A transport protocol that provides 0-RTT connection establishment is
qualitatively different than one that does not from the point of view of the
application using it. Relative trade-offs between the cost of closing and
reopening a connection and trying to keep it open are different; see
<xref target="resumption-v-keepalive"/>.</t>
      <t>An application needs to deliberately choose to use 0-RTT, as 0-RTT carries a
risk of replay attack.  Application protocols that use 0-RTT require a profile
that describes the types of information that can be safely sent. For HTTP, this
profile is described in <xref target="HTTP-REPLAY"/>.</t>
      <section anchor="replay-attacks">
        <name>Replay Attacks</name>
        <t>Retransmission or (malicious) replay of data contained in 0-RTT packets could
cause the server side to receive two copies of the same data.</t>
        <t>Application data sent by the client in 0-RTT packets could be processed more
than once if it is replayed. Applications need to be aware of what is safe to
send in 0-RTT. Application protocols that seek to enable the use of 0-RTT need
a careful analysis and a description of what can be sent in 0-RTT; see Section
5.6 of <xref target="QUIC-TLS"/>.</t>
        <t>In some cases, it might be sufficient to limit application data sent in 0-RTT
to that which only causes actions at a server that are known to be free of
lasting effect. Initiating data retrieval or establishing configuration are
examples of actions that could be safe. Idempotent operations - those for which
repetition has the same net effect as a single operation - might be safe.
However, it is also possible to combine individually idempotent operations into
a non-idempotent sequence of operations.</t>
        <t>Once a server accepts 0-RTT data there is no means of selectively discarding
data that is received. However, protocols can define ways to reject individual
actions that might be unsafe if replayed.</t>
        <t>Some TLS implementations and deployments might be able to provide partial or
even complete replay protection, which could be used to manage replay risk.</t>
      </section>
      <section anchor="resumption-v-keepalive">
        <name>Session resumption versus Keep-alive</name>
        <t>Because QUIC is encapsulated in UDP, applications using QUIC must deal with
short network idle timeouts. Deployed stateful middleboxes will generally
establish state for UDP flows on the first packet sent, and keep state for
much shorter idle periods than for TCP. <xref target="RFC5382"/> suggests a TCP idle
period of at least 124 minutes, though there is not evidence of widespread
implementation of this guideline in the literature. Short network timeout for
UDP, however, is well-documented. According to a 2010 study
(<xref target="Hatonen10"/>), UDP applications can assume that any NAT binding or other
state entry can expire after just thirty seconds of inactivity.  <xref section="3.5" sectionFormat="of" target="RFC8085"/> further discusses keep-alive intervals for UDP: it
requires a minimum value of 15 seconds, but recommends larger values, or
omitting keep-alive entirely.</t>
        <t>By using a connection ID, QUIC is designed to be robust to NAT address
rebinding after a timeout. However, this only helps if one endpoint maintains
availability at the address its peer uses, and the peer is the one to send
after the timeout occurs.</t>
        <t>Some QUIC connections might not be robust to NAT rebinding because the routing
infrastructure (in particular, load balancers) uses the address/port four-tuple
to direct traffic. Furthermore, middleboxes with functions other than address
translation could still affect the path. In particular, some firewalls do not
admit server traffic for which the firewall has no recent state for a
corresponding packet sent from the client.</t>
        <t>QUIC applications can adjust idle periods to manage the risk of timeout. Idle
periods and the network idle timeout are distinct from the connection idle
timeout, which is defined as the minimum of either endpoint's idle timeout
parameter; see <xref section="10.1" sectionFormat="of" target="QUIC"/>). There are three options:</t>
        <ul spacing="normal">
          <li>Ignore the issue, if the application-layer protocol consists only of
interactions with no or very short idle periods, or the protocol's resistance
to NAT rebinding is sufficient.</li>
          <li>Ensure there are no long idle periods.</li>
          <li>Resume the session after a long idle period, using 0-RTT resumption when
appropriate.</li>
        </ul>
        <t>The first strategy is the easiest, but it only applies to certain applications.</t>
        <t>Either the server or the client in a QUIC application can send PING frames as
keep-alives, to prevent the connection and any on-path state from timing out.
Recommendations for the use of keep-alives are application-specific, mainly
depending on the latency requirements and message frequency of the application.
In this case, the application mapping must specify whether the client or server
is responsible for keeping the application alive.  While <xref target="Hatonen10"/> suggests
that 30 seconds might be a suitable value for the public Internet when a NAT
is on path, larger values are preferable if the deployment can consistently
survive NAT rebinding or is known to be in a controlled environment (e.g.
data centres) in order to lower network and computational load.</t>
        <t>Sending PING frames more frequently than every 30 seconds over long idle
periods may result in excessive unproductive traffic in some situations, and to
unacceptable power usage for power-constrained (mobile) devices. Additionally,
timeouts shorter than 30 seconds can make it harder to handle transient network
interruptions, such as VM migration or coverage loss during mobilty.
See <xref target="RFC8085"/>, especially Section 3.5.</t>
        <t>Alternatively, the client (but not the server) can use session resumption
instead of sending keepalive traffic. In this case, a client that wants to send
data to a server over a connection idle longer than the server's idle timeout
(available from the idle_timeout transport parameter) can simply reconnect. When
possible, this reconnection can use 0-RTT session resumption, reducing the
latency involved with restarting the connection. Of course, this approach is
only valid in cases in which 0-RTT data is safe, when the client is the
restarting peer, and when the data to be sent is idempotent. It is also not
applicable when the application binds external state to the connection, as this
state cannot reliably be transferred to a resumed connection.</t>
        <t>The tradeoffs between resumption and keep-alives need to be evaluated on a
per-application basis. In general, applications should use keep-alives only in
circumstances where continued communication is highly likely; <xref target="QUIC-HTTP"/>, for
instance, recommends using keep-alives only when a request is outstanding.</t>
      </section>
    </section>
    <section anchor="use-of-streams">
      <name>Use of Streams</name>
      <t>QUIC's stream multiplexing feature allows applications to run multiple streams
over a single connection, without head-of-line blocking between streams,
associated at a point in time with a single five-tuple. Stream data is carried
within frames, where one QUIC packet on the wire can carry one or multiple
stream frames.</t>
      <t>Streams can be unidirectional or bidirectional, and a stream may be initiated
either by client or server. Only the initiator of a unidirectional stream can
send data on it.</t>
      <t>Streams and connections can each carry a maximum of
 2<sup>62</sup>-1 bytes in each direction, due to encoding limitations on
stream offsets and connection flow control limits. In the presently unlikely
event that this limit is reached by an application, a new connection would
need to be established.</t>
      <t>Streams can be independently opened and closed, gracefully or abruptly. An
application can gracefully close the egress direction of a stream by instructing
QUIC to send a FIN bit in a STREAM frame. It cannot gracefully close the ingress
direction without a peer-generated FIN, much like in TCP. However, an endpoint
can abruptly close the egress direction or request that its peer abruptly close
the ingress direction; these actions are fully independent of each other.</t>
      <t>QUIC does not provide an interface for exceptional handling of any stream.
If a stream that is critical for an application is closed, the application can
generate error messages on the application layer to inform the other end and/or
the higher layer, which can eventually terminate the QUIC connection.</t>
      <t>Mapping of application data to streams is application-specific and described for
HTTP/3 in <xref target="QUIC-HTTP"/>. There are a few general principles to apply when
designing an application's use of streams:</t>
      <ul spacing="normal">
        <li>A single stream provides ordering. If the application requires certain data to
be received in order, that data should be sent on the same stream. There is
no guarantee of transmission, reception, or delivery order across streams.</li>
        <li>Multiple streams provide concurrency. Data that can be processed
independently, and therefore would suffer from head of line blocking if forced
to be received in order, should be transmitted over separate streams.</li>
        <li>Streams can provide message orientation, and allow messages to be cancelled.
If one message is mapped to a single stream, resetting the stream to expire an
unacknowledged message can be used to emulate partial reliability
for that message.</li>
      </ul>
      <t>If a QUIC receiver has opened the maximum allowed concurrent
streams, and the sender indicates that more streams are needed, it
does not automatically lead to an increase of the maximum number of
streams by the receiver. Therefore, an application can use the maximum
number of allowed, currently open, and currently used streams when
determining how to map data to streams.</t>
      <t>QUIC assigns a numerical identifier to each stream, called the Stream ID.  While
the relationship between these identifiers and stream types is clearly defined
in version 1 of QUIC, future versions might change this relationship for various
reasons. QUIC implementations should expose the properties of each stream
(which endpoint initiated the stream, whether the stream is unidirectional or
bidirectional, the Stream ID used for the stream); applications should query for
these properties rather than attempting to infer them from the Stream ID.</t>
      <t>The method of allocating stream identifiers to streams opened by the application
might vary between transport implementations. Therefore, an application should
not assume a particular stream ID will be assigned to a stream that has not yet
been allocated.  For example, HTTP/3 uses Stream IDs to refer to streams that
have already been opened, but makes no assumptions about future Stream IDs or
the way in which they are assigned <xref section="6" sectionFormat="of" target="QUIC-HTTP"/>).</t>
      <section anchor="stream-versus-flow-multiplexing">
        <name>Stream versus Flow Multiplexing</name>
        <t>Streams are meaningful only to the application; since stream information is
carried inside QUIC's encryption boundary, no information about the stream(s)
whose frames are carried by a given packet is visible to the network.
Therefore stream multiplexing is not intended to be used for differentiating
streams in terms of network treatment. Application traffic requiring different
network treatment should therefore be carried over different five-tuples (i.e.
multiple QUIC connections). Given QUIC's ability to send application data in
the first RTT of a connection (if a previous connection to the same host has
been successfully established to provide the necessary credentials), the cost
of establishing another connection is extremely low.</t>
      </section>
      <section anchor="prioritization">
        <name>Prioritization</name>
        <t>Stream prioritization is not exposed to either the network or the receiver.
Prioritization is managed by the sender, and the QUIC transport should
provide an interface for applications to prioritize streams <xref target="QUIC"/>.
Applications can implement their own prioritization scheme on top of QUIC: an
application protocol that runs on top of QUIC can define explicit messages
for signaling priority, such as those defined in
<xref target="I-D.draft-ietf-httpbis-priority"/> for HTTP; it can define rules
that allow an endpoint to determine priority based on context; or it can
provide a higher level interface and leave the determination to the
application on top.</t>
        <t>Priority handling of retransmissions can be implemented by the sender in the
transport layer. <xref target="QUIC"/> recommends retransmitting lost data before new data,
unless indicated differently by the application. Currently, QUIC only provides
fully reliable stream transmission, which means that prioritization of
retransmissions will be beneficial in most cases, by filling in gaps and freeing
up the flow control window. For partially reliable or unreliable streams,
priority scheduling of retransmissions over data of higher-priority streams
might not be desirable. For such streams, QUIC could either provide an
explicit interface to control prioritization, or derive the prioritization
decision from the reliability level of the stream.</t>
      </section>
      <section anchor="ordered-and-reliable-delivery">
        <name>Ordered and Reliable Delivery</name>
        <t>QUIC streams enable ordered and reliable delivery.  Though it is possible for an
implementation to provide options that use streams for partial reliability
or out-of-order delivery, most implementations will assume that data is
reliably delivered in order.</t>
        <t>Under this assumption, an endpoint that receives stream data might not make
forward progress until data that is contiguous with the start of a stream is
available.  In particular, a receiver might withhold flow control credit until
contiguous data is delivered to the application; see <xref section="2.2" sectionFormat="of" target="QUIC"/>.
To support this receive logic, an endpoint will send stream data until it is
acknowledged, ensuring that data at the start of the stream is sent and
acknowledged first.</t>
        <t>An endpoint that uses a different sending behavior and does not negotiate that
change with its peer might encounter performance issues or deadlocks.</t>
      </section>
      <section anchor="flow-control-deadlocks">
        <name>Flow Control Deadlocks</name>
        <t>QUIC flow control provides a means of managing access to the limited buffers
endpoints have for incoming data.  This mechanism limits the amount of data that
can be in buffers in endpoints or in transit on the network.  However, there are
several ways in which limits can produce conditions that can cause a connection
to either perform suboptimally or deadlock.</t>
        <t>Deadlocks in flow control are possible for any protocol that uses QUIC, though
whether they become a problem depends on how implementations consume data and
provide flow control credit.  Understanding what causes deadlocking might help
implementations avoid deadlocks.</t>
        <t>The size and rate of transport flow control credit updates can affect
performance. Applications that use QUIC often have a data consumer that reads
data from transport buffers. Some implementations might have independent
transport-layer and application-layer receive buffers. Consuming data does not
always imply it is immediately processed. However, a common flow control
implementation technique is to extend credit to the sender, by emitting MAX_DATA
and/or MAX_STREAM_DATA frames, as data is consumed. Delivery of these frames
is affected by the latency of the back channel from the receiver to the data
sender. If credit is not extended in a timely manner, the
sending application can be blocked, effectively throttling the sender.</t>
        <t>Large application messages can produce deadlocking if the recipient does not
read data from the transport incrementally. If the message is larger than the
flow control credit available and the recipient does not release additional flow
control credit until the entire message is received and delivered, a deadlock
can occur. This is possible even where stream flow control limits are not
reached because connection flow control limits can be consumed by other streams.</t>
        <t>A length-prefixed message format makes it easier for a data consumer to leave
data unread in the transport buffer and thereby withhold flow control credit. If
flow control limits prevent the remainder of a message from being sent, a
deadlock will result.  A length prefix might also enable the detection of this
sort of deadlock.  Where application protocols have messages that might be
processed as a single unit, reserving flow control credit for the entire message
atomically makes this style of deadlock less likely.</t>
        <t>A data consumer can eagerly read all data as it becomes available, in order to
make the receiver extend flow control credit and reduce the chances of a
deadlock.  However, such a data consumer might need other means for holding a
peer accountable for the additional state it keeps for partially processed
messages.</t>
        <t>Deadlocking can also occur if data on different streams is interdependent.
Suppose that data on one stream arrives before the data on a second stream on
which it depends.  A deadlock can occur if the first stream is left unread,
preventing the receiver from extending flow control credit for the second
stream.  To reduce the likelihood of deadlock for interdependent data, the
sender should ensure that dependent data is not sent until the data
it depends on has been accounted for in both stream- and connection- level flow
control credit.</t>
        <t>Some deadlocking scenarios might be resolved by cancelling affected streams with
STOP_SENDING or RESET_STREAM.  Cancelling some streams results in the connection
being terminated in some protocols.</t>
      </section>
      <section anchor="stream-limit-commitments">
        <name>Stream Limit Commitments</name>
        <t>QUIC endpoints are responsible for communicating the cumulative limit of streams
they would allow to be opened by their peer. Initial limits are advertised using
the initial_max_streams_bidi and initial_max_streams_uni transport parameters.
As streams are opened and closed they are consumed and the cumulative total is
incremented. Limits can be increased using the MAX_STREAMS frame but there is no
mechanism to reduce limits. Once stream limits are reached, no more streams can
be opened, which prevents applications using QUIC from making further progress.
At this stage connections can be terminated via idle timeout or explicit close;
see <xref target="sec-termination"/>).</t>
        <t>An application that uses QUIC might communicate a cumulative stream limit but
require the connection to be closed before the limit is reached. For example,
to stop the server to perform scheduled maintenance. Immediate connection close
causes abrupt closure of actively used streams. Depending on how an application
uses QUIC streams, this could be undesirable or detrimental to behavior or
performance. A more graceful closure technique is to stop sending increases to
stream limits and allow the connection to naturally terminate once remaining
streams are consumed. However, the period of time it takes to do so is dependent
on the client and an unpredictable closing period might not fit application or
operational needs. Applications using QUIC can be conservative with open stream
limits in order to reduce the commitment and indeterminism. However, being
overly conservative with stream limits affects stream concurrency. Balancing
these aspects can be specific to applications and their deployments. Instead of
relying on stream limits to avoid abrupt closure, an application-layer graceful
close mechanism can be used to communicate the intention to explicitly close the
connection at some future point.</t>
        <t>HTTP/3 provides such a mechanism using the
GOWAWAY frame. In HTTP/3, when the GOAWAY frame is received by a client, it
stops opening new streams even if the cumulative stream limit would allow.
Instead the client would create a new connection on which to open further
streams.  Once all streams are closed on the old connection, it can be
terminated safely by a connection close or after expiration of the idle time out
(see also <xref target="sec-termination"/>).</t>
      </section>
    </section>
    <section anchor="packetization-and-latency">
      <name>Packetization and Latency</name>
      <t>QUIC exposes an interface that provides multiple streams to the application;
however, the application usually cannot control how data transmitted over those
streams is mapped into frames or how those frames are bundled into packets.</t>
      <t>By default, many implementations will try to maximally pack QUIC packets
DATA frames from one or more streams to minimize bandwidth consumption and
computational costs (see <xref section="13" sectionFormat="of" target="QUIC"/>). If there is not enough data
available to fill a packet, an implementation might wait for a short time, to
optimize bandwidth efficiency instead of latency. This delay can either be
pre-configured or dynamically adjusted based on the observed sending pattern of
the application.</t>
      <t>If the application requires low latency, with only small chunks of data to
send, it may be valuable to indicate to QUIC that all data should be send out
immediately. Alternatively, if the application expects to use a specific
sending pattern, it can also provide a suggested delay to QUIC for how long to
wait before bundle frames into a packet.</t>
      <t>Similarly, an application has usually no control about the length of a QUIC
packet on the wire. QUIC provides the ability to add a PADDING frame to
arbitrarily increase the size of packets. Padding is used by QUIC to ensure that
the path is capable of transferring datagrams of at least a certain size, during
the handshake (see Sections <xref target="QUIC" section="8.1" sectionFormat="bare"/> and <xref target="QUIC" section="14.1" sectionFormat="bare"/> of <xref target="QUIC"/>) and for path validation
after connection migration (see <xref section="8.2" sectionFormat="of" target="QUIC"/>) as well as for Datagram
Packetization Layer PMTU Discovery (DPLMTUD) (see <xref section="14.3" sectionFormat="of" target="QUIC"/>).</t>
      <t>Padding can also be used by an application to reduce leakage of
information about the data that is sent. A QUIC implementation can expose an
interface that allows an application layer to specify how to apply padding.</t>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>QUIC recommends that endpoints signal any detected errors to
the peer. Errors can occur at the transport level and the application level.
Transport errors, such as a protocol violation, affect the entire connection.
Applications that use QUIC can define their own error detection and signaling
(see, for example, <xref section="8" sectionFormat="of" target="QUIC-HTTP"/>). Application errors can affect an
entire connection or a single stream.</t>
      <t>QUIC defines an error code space that is used for error handling at the
transport layer. QUIC encourages endpoints to use the most specific code,
although any applicable code is permitted, including generic ones.</t>
      <t>Applications using QUIC define an error
code space that is independent from QUIC or other applications (see, for
example, <xref section="8.1" sectionFormat="of" target="QUIC-HTTP"/>). The values in an application error code
space can be reused across connection-level and stream-level errors.</t>
      <t>Connection errors lead to connection termination. They are signaled using a
CONNECTION_CLOSE frame, which contains an error code and a reason field that can
be zero length. Different types of CONNECTION_CLOSE frame are used to
signal transport and application errors.</t>
      <t>Stream errors lead to stream termination. The are signaled using STOP_SENDING or
RESET_STREAM frames, which contain only an error code.</t>
    </section>
    <section anchor="ack-only-packets-on-constrained-links">
      <name>ACK-only packets on constrained links</name>
      <t>The cost of sending acknowledgments - in processing cost or link
utilization - could be a significant proportion of available resources if
these resources are constrained. Reducing the rate at which acknowledgments
are generated can preserve these resources and improve overall performance,
for both network processing as well as application-relevant metrics.</t>
    </section>
    <section anchor="ports">
      <name>Port Selection and Application Endpoint Discovery</name>
      <t>In general, port numbers serve two purposes: "first, they provide a
demultiplexing identifier to differentiate transport sessions between the same
pair of endpoints, and second, they may also identify the application protocol
and associated service to which processes connect" <xref target="RFC6335"/>. The assumption
that an application can be identified in the network based on the port number
is less true today due to encapsulation, mechanisms for dynamic port
assignments, and NATs.</t>
      <t>As QUIC is a general-purpose transport protocol, there are no requirements that
servers use a particular UDP port for QUIC. For applications with a fallback to
TCP that do not already have an alternate mapping to UDP, usually the
registration (if necessary) and use of the UDP port number corresponding to the
TCP port already registered for the application is appropriate. For example,
the default port for HTTP/3 <xref target="QUIC-HTTP"/> is UDP port 443, analogous to HTTP/1.1
or HTTP/2 over TLS over TCP.</t>
      <t>Additionally, Application-Layer Version Negotiation <xref target="RFC7301"/> permits the
client and server to negotiate which of several protocols will be used on a
given connection.  Therefore, multiple applications might be supported on a
single UDP port based on the ALPN token offered.  Applications using QUIC
should register an ALPN token for use in the TLS handshake.</t>
      <t>Applications could define an alternate endpoint discovery mechanism to allow
the usage of ports other than the default. For example, HTTP/3 (Sections <xref target="QUIC-HTTP" section="3.2" sectionFormat="bare"/> and <xref target="QUIC-HTTP" section="3.3" sectionFormat="bare"/> of <xref target="QUIC-HTTP"/>) specifies the use of HTTP Alternative Services
for an HTTP origin to advertise the availability of an equivalent HTTP/3
endpoint on a certain UDP port by using the "h3" ALPN token.
Note that HTTP/3's ALPN token ("h3") identifies not only the version of the
application protocol, but also the version of QUIC itself; this approach
allows unambiguous agreement between the endpoints on the protocol stack in use.</t>
      <t>Given the prevalence of the assumption in network management
practice that a port number maps unambiguously to an application, the
use of ports that cannot easily be mapped to a registered service name
might lead to blocking or other changes to the forwarding behavior by network
elements such as firewalls that use the port number for application
identification.</t>
    </section>
    <section anchor="connection-migration">
      <name>Connection Migration</name>
      <t>QUIC supports connection migration by the client. If an IP address
changes, a QUIC endpoint can still associate packets with an existing
transport connection using the destination connection ID field
(see also <xref target="connid"/>) in the QUIC header, unless a zero-length value is used.
This supports cases where address information changes, such as NAT rebinding,
intentional change of the local interface, or based on an indication in the
handshake of the server for a preferred address to be used.</t>
      <t>Use of a non-zero-length connection ID for the server is strongly recommended if
any clients are behind a NAT or could be. A non-zero-length connection ID is
also strongly recommended when migration is supported.</t>
      <t>Currently QUIC only supports failover cases. Only one "path" can be used at a
time; and only when the new path is validated, all traffic can be switched over
to that new path. Path validation means that the remote endpoint is required to
validate the new path before use in order to avoid address spoofing attacks.
Path validation takes at least one RTT and congestion control will also be reset
after path migration. Therefore migration usually has a performance impact.</t>
      <t>QUIC probing packets, which can be sent on multiple paths at once, are used
to perform address validation as well as measure path characteristics as input
for the switching decision. Probing packets cannot carry application data but
may contain padding frames. Endpoints can use information about their receipt
as input to congestion control for that path. Applications could use
information learned from probing to inform a decisions to switch paths.</t>
      <t>Only the client can actively migrate in version 1 of QUIC. However, servers can
indicate during the handshake that they prefer to transfer the connection to a
different address after the handshake. For instance, this could be used to move
from an address that is shared by multiple servers to an address that is unique
to the server instance. The server can provide an IPv4 and an IPv6 address in a
transport parameter during the TLS handshake and the client can select between
the two if both are provided. See also <xref section="9.6" sectionFormat="of" target="QUIC"/>.</t>
    </section>
    <section anchor="sec-termination">
      <name>Connection Termination</name>
      <t>QUIC connections are terminated in one of three ways: implicit idle timeout,
explicit immediate close, or explicit stateless reset.</t>
      <t>QUIC does not provide any mechanism for graceful connection termination;
applications using QUIC can define their own graceful termination process (see,
for example, <xref section="5.2" sectionFormat="of" target="QUIC-HTTP"/>).</t>
      <t>QUIC idle timeout is enabled via transport parameters. Client and server
announce a timeout period and the effective value for the connection is the
minimum of the two values. After the timeout period elapses, the connection is
silently closed. An application therefore should be able to configure its own
maximum value, as well as have access to the computed minimum value for this
connection. An application may adjust the maximum idle timeout for new
connections based on the number of open or expected connections, since shorter
timeout values may free-up resources more quickly.</t>
      <t>Application data exchanged on streams or in datagrams defers the QUIC idle
timeout. Applications that provide their own keep-alive mechanisms will
therefore keep a QUIC connection alive. Applications that do not provide their
own keep-alive can use transport-layer mechanisms (see <xref section="10.1.2" sectionFormat="of" target="QUIC"/>, and <xref target="resumption-v-keepalive"/>). However, QUIC implementation
interfaces for controlling such transport behavior can vary, affecting the
robustness of such approaches.</t>
      <t>An immediate close is signaled by a CONNECTION_CLOSE frame (see
<xref target="error-handling"/>). Immediate close causes all streams to become immediately
closed, which may affect applications; see <xref target="stream-limit-commitments"/>.</t>
      <t>A stateless reset is an option of last resort for an endpoint that does not have
access to connection state. Receiving a stateless reset is an indication of an
unrecoverable error distinct from connection errors in that there is no
application-layer information provided.</t>
    </section>
    <section anchor="connid">
      <name>Information Exposure and the Connection ID</name>
      <t>QUIC exposes some information to the network in the unencrypted part of the
header, either before the encryption context is established or because the
information is intended to be used by the network. QUIC has a long header that
exposes some additional information (the version and the source connection ID),
while the short header exposes only the destination connection ID.
In QUIC version 1, the long header is used during connection establishment,
while the short header is used for data transmission in an established
connection.</t>
      <t>The connection ID can be zero length. Zero length connection IDs can be
chosen on each endpoint individually, on any packet except the first packets
sent by clients during connection establishment.</t>
      <t>An endpoint that selects a zero-length connection ID will receive packets with a
zero-length destination connection ID. The endpoint needs to use other
information, such as the source and destination IP address and port number to
identify which connection is referred to. This could mean that the endpoint is
unable to match datagrams to connections successfully if these values change,
making the connection effectively unable to survive NAT rebinding or migrate to
a new path.</t>
      <section anchor="server-generated-connection-id">
        <name>Server-Generated Connection ID</name>
        <t>QUIC supports a server-generated connection ID, transmitted to the client during
connection establishment (see <xref section="7.2" sectionFormat="of" target="QUIC"/>). Servers behind load
balancers may need to change the connection ID during the handshake, encoding
the identity of the server or information about its load balancing pool, in
order to support stateless load balancing.</t>
        <t>Server deployments with load balancers and other routing infrastructure need to
ensure that this infrastructure consistently routes packets to the server
instance that has the connection state, even if addresses, ports, and/or
connection IDs change. This might require coordination between servers and
infrastructure. One method of achieving this involves encoding routing
information into the connection ID. For an example of this technique, see
<xref target="QUIC-LB"/>.</t>
      </section>
      <section anchor="mitigating-timing-linkability-with-connection-id-migration">
        <name>Mitigating Timing Linkability with Connection ID Migration</name>
        <t>QUIC requires that endpoints generate fresh connection IDs for use on new
network paths. Choosing values that are unlinkable to an outside observer
ensures that activity on different paths cannot be trivially correlated
using the connection ID.</t>
        <t>While sufficiently robust connection ID generation schemes will mitigate
linkability issues, they do not provide full protection. Analysis of
the lifetimes of six-tuples (source and destination addresses as well as the
migrated CID) may expose these links anyway.</t>
        <t>In the limit where connection migration in a server pool is rare, it is trivial
for an observer to associate two connection IDs. Conversely, in the opposite
limit where every server handles multiple simultaneous migrations, even an
exposed server mapping may be insufficient information.</t>
        <t>The most efficient mitigations for these attacks are through network design
and/or operational practice, by using a load balancing architecture that
loads more flows onto a single server-side address, by coordinating the
timing of migrations in an attempt to increase the number of simultaneous
migrations at a given time, or through other means.</t>
      </section>
      <section anchor="using-server-retry-for-redirection">
        <name>Using Server Retry for Redirection</name>
        <t>QUIC provides a Server Retry packet that can be sent by a server in response to
the Client Initial packet. The server may choose a new connection ID in that
packet and the client will retry by sending another Client Initial packet with
the server-selected connection ID. This mechanism can be used to redirect a
connection to a different server, e.g. due to performance reasons or when
servers in a server pool are upgraded gradually, and therefore may support
different versions of QUIC. In this case, it is assumed that all servers
belonging to a certain pool are served in cooperation with load balancers that
forward the traffic based on the connection ID. A server can choose the
connection ID in the Server Retry packet such that the load balancer will
redirect the next Client Initial packet to a different server in that pool.
Alternatively the load balancer can directly offer a Retry service as further
described in <xref target="QUIC-LB"/>.</t>
        <t><xref section="4" sectionFormat="of" target="RFC5077"/> describes an example approach for constructing
TLS resumption tickets that can be also applied for validation tokens,
however, the use of more modern cryptographic algorithms is highly recommended.</t>
      </section>
    </section>
    <section anchor="quality-of-service-qos-and-dscp">
      <name>Quality of Service (QoS) and DSCP</name>
      <t>QUIC assumes that all packets of a QUIC connection, or at least with the
same 5-tuple {dest addr, source addr, protocol, dest port, source port}, will
receive similar network treatment since feedback about loss or delay
of each packet is used as input to the congestion controller. Therefore it is
not recommended to use different DiffServ Code Points (DSCPs) <xref target="RFC2475"/> for
packets belonging to the same connection. If differential network treatment,
e.g. by the use of different DSCPs, is desired, multiple QUIC
connections to the same server may be used. However, in general it is
recommended to minimize the number of QUIC connections to the same server, to
avoid increased overheads and, more importantly, competing congestion control.</t>
    </section>
    <section anchor="use-of-versions-and-cryptographic-handshake">
      <name>Use of Versions and Cryptographic Handshake</name>
      <t>Versioning in QUIC may change the protocol's behavior completely, except
for the meaning of a few header fields that have been declared to be invariant
<xref target="QUIC-INVARIANTS"/>. A version of QUIC
with a higher version number will not necessarily provide a better service,
but might simply provide a different feature set. As such, an application needs
to be able to select which versions of QUIC it wants to use.</t>
      <t>A new version could use an encryption scheme other than TLS 1.3 or higher.
<xref target="QUIC"/> specifies requirements for the cryptographic handshake as currently
realized by TLS 1.3 and described in a separate specification
<xref target="QUIC-TLS"/>. This split is performed to enable
light-weight versioning with different cryptographic handshakes.</t>
    </section>
    <section anchor="enabling-new-versions">
      <name>Enabling New Versions</name>
      <t>QUIC version 1 does not specify a version negotation mechanism in the base spec
but <xref target="I-D.draft-ietf-quic-version-negotiation"/> proposes an extension. This
process assumes that the set of versions that a server supports is fixed.  This
complicates the process for deploying new QUIC versions or disabling old
versions when servers operate in clusters.</t>
      <t>A server that rolls out a new version of QUIC can do so in three stages.  Each
stage is completed across all server instances before moving to the next stage.</t>
      <t>In the first stage of deployment, all server instances start accepting new
connections with the new version.  The new version can be enabled progressively
across a deployment, which allows for selective testing.  This is especially
useful when the new version is compatible with an old version, because the new
version is more likely to be used.</t>
      <t>While enabling the new version, servers do not advertise the new version in any
Version Negotiation packets they send.  This prevents clients that receive a
Version Negotiation packet from attempting to connect to server instances that
might not have the new version enabled.</t>
      <t>During the initial deployment, some clients will have received Version
Negotiation packets that indicate that the server does not support the new
version.  Other clients might have successfully connected with the new version
and so will believe that the server supports the new version.  Therefore,
servers need to allow for this ambiguity when validating the negotiated version.</t>
      <t>The second stage of deployment commences once all server instances are able
accept new connections with the new version.  At this point, all servers can
start sending the new version in Version Negotiation packets.</t>
      <t>During the second stage, the server still allows for the possibility that some
clients believe the new version to be available and some do not.  This state
will persist only for as long as any Version Negotiation packets take to be
transmitted and responded to.  So the third stage can follow after a relatively
short delay.</t>
      <t>The third stage completes the process by enabling authentication of the
negotiated version with the assumption that the new version is fully available.</t>
      <t>The process for disabling an old version or rolling back the introduction of a
new version uses the same process in reverse.  Servers disable validation of the
old version, stop sending the old version in Version Negotiation packets, then
the old version is no longer accepted.</t>
    </section>
    <section anchor="unreliable-datagram-service-over-quic">
      <name>Unreliable Datagram Service over QUIC</name>
      <t><xref target="I-D.ietf-quic-datagram"/> specifies a QUIC extension to enable sending
and receiving unreliable datagrams over QUIC. Unlike operating directly over
UDP, applications that use the QUIC datagram service do not need to implement
their own congestion control, per <xref target="RFC8085"/>, as QUIC datagrams are
congestion controlled.</t>
      <t>QUIC datagrams are not flow-controlled, and as such data chunks may be dropped
if the receiver is overloaded. While the reliable transmission service of QUIC
provides a stream-based interface to send and receive data in order over
multiple QUIC streams, the datagram service has a unordered message-based
interface. If needed, an application layer framing can be used on top to
allow separate flows of unreliable datagrams to be multiplexed on one QUIC
connection.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no actions for IANA; however, note that <xref target="ports"/>
recommends that application bindings to QUIC for applications using
TCP register UDP ports analogous to their existing TCP registrations.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See the security considerations in <xref target="QUIC"/> and <xref target="QUIC-TLS"/>; the security
considerations for the underlying transport protocol are relevant for
applications using QUIC, as well. Considerations on linkability, replay attacks,
and randomness discussed in <xref target="QUIC-TLS"/> should be taken into account when
deploying and using QUIC.</t>
      <t>Application developers should note that any fallback they use when QUIC cannot
be used due to network blocking of UDP should guarantee the same security
properties as QUIC; if this is not possible, the connection should fail to
allow the application to explicitly handle fallback to a less-secure
alternative. See <xref target="fallback"/>.</t>
      <t>Further, <xref target="QUIC-HTTP"/> provides security considerations specific to HTTP.
However, discussions such as on cross-protocol attacks, traffic analysis
and padding, or migration might be relevant for other applications using QUIC
as well.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The following people have contributed text to this document:</t>
      <ul spacing="normal">
        <li>Igor Lubashev</li>
        <li>Mike Bishop</li>
        <li>Martin Thomson</li>
        <li>Lucas Pardue</li>
        <li>Gorry Fairhurst</li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks also to Martin Duke, Sean Turner, and Ian Swett for their reviews.</t>
      <t>This work is partially supported by the European Commission under Horizon 2020
grant agreement no. 688421 Measurement and Architecture for a Middleboxed
Internet (MAMI), and by the Swiss State Secretariat for Education, Research, and
Innovation under contract no. 15.0268. This support does not imply endorsement.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="Jana Iyengar">
              <organization>Fastly</organization>
            </author>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="14" month="January" 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="Internet-Draft" value="draft-ietf-quic-transport-34"/>
        </reference>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Sean Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="14" month="January" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-tls-34"/>
        </reference>
        <reference anchor="RFC6335">
          <front>
            <title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="L. Eggert" initials="L." surname="Eggert">
              <organization/>
            </author>
            <author fullname="J. Touch" initials="J." surname="Touch">
              <organization/>
            </author>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund">
              <organization/>
            </author>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire">
              <organization/>
            </author>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document defines the procedures that the Internet Assigned Numbers Authority (IANA) uses when handling assignment and other requests related to the Service Name and Transport Protocol Port Number registry.  It also discusses the rationale and principles behind these procedures and how they facilitate the long-term sustainability of the registry.</t>
              <t>This document updates IANA's procedures by obsoleting the previous UDP and TCP port assignment procedures defined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates the IANA service name and port assignment procedures for UDP-Lite, the Datagram Congestion Control Protocol (DCCP), and the Stream Control Transmission Protocol (SCTP).  It also updates the DNS SRV specification to clarify what a service name is and how it is registered.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="165"/>
          <seriesInfo name="RFC" value="6335"/>
          <seriesInfo name="DOI" value="10.17487/RFC6335"/>
        </reference>
        <reference anchor="QUIC-INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="14" month="January" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-invariants-13"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="Trammell16" target="https://ripe72.ripe.net/wp-content/uploads/presentations/86-atlas-udpdiff.pdf">
          <front>
            <title>Internet Path Transparency Measurements using RIPE Atlas (RIPE72 MAT presentation)</title>
            <author initials="B." surname="Trammell">
              <organization/>
            </author>
            <author initials="M." surname="Kuehlewind">
              <organization/>
            </author>
            <date year="2016" month="May" day="25"/>
          </front>
        </reference>
        <reference anchor="Edeline16" target="https://arxiv.org/abs/1612.07816">
          <front>
            <title>Using UDP for Internet Transport Evolution (arXiv preprint 1612.07816)</title>
            <author initials="K." surname="Edeline">
              <organization/>
            </author>
            <author initials="M." surname="Kuehlewind">
              <organization/>
            </author>
            <author initials="B." surname="Trammell">
              <organization/>
            </author>
            <author initials="E." surname="Aben">
              <organization/>
            </author>
            <author initials="B." surname="Donnet">
              <organization/>
            </author>
            <date year="2016" month="December" day="22"/>
          </front>
        </reference>
        <reference anchor="Swett16" target="https://www.ietf.org/proceedings/96/slides/slides-96-quic-3.pdf">
          <front>
            <title>QUIC Deployment Experience at Google (IETF96 QUIC BoF presentation)</title>
            <author initials="I." surname="Swett">
              <organization/>
            </author>
            <date year="2016" month="July" day="20"/>
          </front>
        </reference>
        <reference anchor="PaaschNanog" target="https://www.nanog.org/sites/default/files/Paasch_Network_Support.pdf">
          <front>
            <title>Network Support for TCP Fast Open (NANOG 67 presentation)</title>
            <author initials="C." surname="Paasch">
              <organization/>
            </author>
            <date year="2016" month="June" day="13"/>
          </front>
        </reference>
        <reference anchor="Hatonen10">
          <front>
            <title>An experimental study of home gateway characteristics (Proc. ACM IMC 2010)</title>
            <author initials="S." surname="Hatonen">
              <organization/>
            </author>
            <author initials="A." surname="Nyrhinen">
              <organization/>
            </author>
            <author initials="L." surname="Eggert">
              <organization/>
            </author>
            <author initials="S." surname="Strowes">
              <organization/>
            </author>
            <author initials="P." surname="Sarolahti">
              <organization/>
            </author>
            <author initials="M." surname="Kojo">
              <organization/>
            </author>
            <date year="2010" month="October"/>
          </front>
        </reference>
        <reference anchor="RFC5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="H. Zhou" initials="H." surname="Zhou">
              <organization/>
            </author>
            <author fullname="P. Eronen" initials="P." surname="Eronen">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state.  The TLS server encapsulates the session state into a ticket and forwards it to the client.  The client can subsequently resume a session using the obtained ticket.  This document obsoletes RFC 4507.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="QUIC-HTTP">
          <front>
            <title>HTTP/3</title>
            <author fullname="Mike Bishop">
              <organization>Akamai</organization>
            </author>
            <date day="2" month="February" year="2021"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
        </reference>
        <reference anchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author fullname="L. Eggert" initials="L." surname="Eggert">
              <organization/>
            </author>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst">
              <organization/>
            </author>
            <author fullname="G. Shepherd" initials="G." surname="Shepherd">
              <organization/>
            </author>
            <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="I-D.ietf-taps-arch">
          <front>
            <title>An Architecture for Transport Services</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Brian Trammell">
              <organization>Google Switzerland GmbH</organization>
            </author>
            <author fullname="Anna Brunstrom">
              <organization>Karlstad University</organization>
            </author>
            <author fullname="Godred Fairhurst">
              <organization>University of Aberdeen</organization>
            </author>
            <author fullname="Colin Perkins">
              <organization>University of Glasgow</organization>
            </author>
            <date day="27" month="June" year="2022"/>
            <abstract>
              <t>   This document describes an architecture for exposing transport
   protocol features to applications for network communication, a
   Transport Services system.  The Transport Services Application
   Programming Interface (API) is based on an asynchronous, event-driven
   interaction pattern.  This API uses messages for representing data
   transfer to applications, and describes how implementations can use
   multiple IP addresses, multiple protocols, and multiple paths, and
   provide multiple application streams.  This document further defines
   common terminology and concepts to be used in definitions of a
   Transport Service API and a Transport Services implementation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-taps-arch-13"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC7413">
          <front>
            <title>TCP Fast Open</title>
            <author fullname="Y. Cheng" initials="Y." surname="Cheng">
              <organization/>
            </author>
            <author fullname="J. Chu" initials="J." surname="Chu">
              <organization/>
            </author>
            <author fullname="S. Radhakrishnan" initials="S." surname="Radhakrishnan">
              <organization/>
            </author>
            <author fullname="A. Jain" initials="A." surname="Jain">
              <organization/>
            </author>
            <date month="December" year="2014"/>
            <abstract>
              <t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7413"/>
          <seriesInfo name="DOI" value="10.17487/RFC7413"/>
        </reference>
        <reference anchor="HTTP-REPLAY">
          <front>
            <title>Using Early Data in HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <author fullname="W. Tarreau" initials="W." surname="Tarreau">
              <organization/>
            </author>
            <date month="September" year="2018"/>
            <abstract>
              <t>Using TLS early data creates an exposure to the possibility of a replay attack.  This document defines mechanisms that allow clients to communicate with servers about HTTP requests that are sent in early data.  Techniques are described that use these mechanisms to mitigate the risk of replay.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8470"/>
          <seriesInfo name="DOI" value="10.17487/RFC8470"/>
        </reference>
        <reference anchor="RFC5382">
          <front>
            <title>NAT Behavioral Requirements for TCP</title>
            <author fullname="S. Guha" initials="S." role="editor" surname="Guha">
              <organization/>
            </author>
            <author fullname="K. Biswas" initials="K." surname="Biswas">
              <organization/>
            </author>
            <author fullname="B. Ford" initials="B." surname="Ford">
              <organization/>
            </author>
            <author fullname="S. Sivakumar" initials="S." surname="Sivakumar">
              <organization/>
            </author>
            <author fullname="P. Srisuresh" initials="P." surname="Srisuresh">
              <organization/>
            </author>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document defines a set of requirements for NATs that handle TCP that would allow many applications, such as peer-to-peer applications and online games to work consistently.  Developing NATs that meet this set of requirements will greatly increase the likelihood that these applications will function properly.  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="142"/>
          <seriesInfo name="RFC" value="5382"/>
          <seriesInfo name="DOI" value="10.17487/RFC5382"/>
        </reference>
        <reference anchor="I-D.draft-ietf-httpbis-priority">
          <front>
            <title>Extensible Prioritization Scheme for HTTP</title>
            <author fullname="Kazuho Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Lucas Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="17" month="January" year="2022"/>
            <abstract>
              <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded.  This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses.  These share a common format structure that is designed to provide future extensibility.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-priority-12"/>
        </reference>
        <reference anchor="QUIC-LB">
          <front>
            <title>QUIC-LB: Generating Routable QUIC Connection IDs</title>
            <author fullname="Martin Duke">
              <organization>Google</organization>
            </author>
            <author fullname="Nick Banks">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Christian Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date day="28" month="March" year="2022"/>
            <abstract>
              <t>   QUIC address migration allows clients to change their IP address
   while maintaining connection state.  To reduce the ability of an
   observer to link two IP addresses, clients and servers use new
   connection IDs when they communicate via different client addresses.
   This poses a problem for traditional "layer-4" load balancers that
   route packets via the IP address and port 4-tuple.  This
   specification provides a standardized means of securely encoding
   routing information in the server's connection IDs so that a properly
   configured load balancer can route packets with migrated addresses
   correctly.  As it proposes a structured connection ID format, it also
   provides a means of connection IDs self-encoding their length to aid
   some hardware offloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-load-balancers-13"/>
        </reference>
        <reference anchor="RFC2475">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake">
              <organization/>
            </author>
            <author fullname="D. Black" initials="D." surname="Black">
              <organization/>
            </author>
            <author fullname="M. Carlson" initials="M." surname="Carlson">
              <organization/>
            </author>
            <author fullname="E. Davies" initials="E." surname="Davies">
              <organization/>
            </author>
            <author fullname="Z. Wang" initials="Z." surname="Wang">
              <organization/>
            </author>
            <author fullname="W. Weiss" initials="W." surname="Weiss">
              <organization/>
            </author>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
        <reference anchor="I-D.draft-ietf-quic-version-negotiation">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Eric Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="8" month="June" year="2022"/>
            <abstract>
              <t>   QUIC does not provide a complete version negotiation mechanism but
   instead only provides a way for the server to indicate that the
   version the client chose is unacceptable.  This document describes a
   version negotiation mechanism that allows a client and server to
   select a mutually supported version.  Optionally, if the client's
   chosen version and the negotiated version share a compatible first
   flight format, the negotiation can take place without incurring an
   extra round trip.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negotiation-08"/>
        </reference>
        <reference anchor="I-D.ietf-quic-datagram">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="Tommy Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Eric Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="David Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="4" month="February" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-datagram-10"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5V9a5MbR3Lt9/oV7dUHkw4A4kOktKR97RFJaRkrUrRm5LV9
44aiB2gMeolBw92NGc4y+N9vnpOZ9WhgZNsRXg1nuruqsrLyeTJrPp+HsR23
zYvqbL/ftsv6st22413Vratx01T/+uvbV9VFX++GfdeP1Ye+G7tltw315WXf
3LzQvxdvhlW33NXX8sFVX6/HeduM6/l/HdrlvM4fmz/+NqzqsXkRlvK/V11/
96Jqd+suhHbfv6jG/jCMTx49+uOjJ+Fjc3fb9asX1dvd2PS7Zpy/xpdDGMZ6
t/qt3nY7Ge2uGcK+fVH9X5ngrBpktn2zHuSnu2v88P9CqA/jputfhKqay/9X
Mtzwonq3qP58aDbb5rbdrfhrnfy7tv9rPf1T11+9qN707XIYuh1/01zX7fZF
dY2nFx/j0//S2EOLZXddDvj9AvS8vm6222y47/u23pV/4GA/dt3VtsmHAj3/
ZbQHF8sN/zbIYptRHheq1TfzHw/b7fzDth7/Vj3m35dC8RfVd48efVP950Gm
pm8tu8NuBOHPb9vxb02/FXKGsOv663psbxpQCvsrhJ+/XqR9HJ0dZK9kx7Kn
ff6Pn7/gAMZZvm/Vh3rcGDfVfbNb3lXvmno49M11sxuH6jC0u6vql7cf3lRn
47Yeqgf4+dsn1buzi2rfN4M8JWN1u4f8etpP/N/c/nsPmY8eON74se6vQMTN
OO6HF19/3bf75tsnC/xnIbP/+nY/X3aylN349WG/7erV8HU+qeHr757Pa8x7
fljtV+16vdiv1vwyGb168ujx8/mjZ/Mnz+SXb1bNtt01E0r9Sgr8+vpDJXRN
dEsH8M1Ntz1gtOpB3f97ewOy7Pt2N1aPnz9+snj07XePn/8PqPPnhU/gf0qc
/z2B3yyqs8tmd+/br7udrO0k5ev+U3uzkAPwdX05fJ1WNiXm4yfzJ0/kl+e3
zThOSEnJ9LqRjboDd1VvPu3lUArTNVU92rmqHrx9c/HDH5/rw993P/xvuezt
Qsc+uYrb21ueGi5k33fLplnJ9g5f//H518O2XTWD/Wf+x+d6sp6e5Jhv508e
yS8/1PWw3Lyvd91VsdD3zSji8WN1ftiTRcA5F68+VD/Uw1j9vG+EVd6fvf/5
x+r5t//b5b1a2Kj3rm+H6XCBQzvKglbNuj5sx6/X7Vb+pS//ZjP8zWZ4cpGy
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
v/MYoPml0VHVmKzoEeGQRjGN/x9rlpOsS7cAAA==

-->

</rfc>
