<?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-rfc2629 version 1.6.2 (Ruby 2.6.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-version-negotiation-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title abbrev="QUIC Compatible VN">Compatible Version Negotiation for QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-version-negotiation-06"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View, California 94043</city>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>Mozilla</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>General</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <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 offered is
unacceptable. This document describes a version negotiation mechanism that
allows a client and server to select a mutually supported version. Optionally,
if the original and negotiated version share a compatible first flight format,
the negotiation can take place without incurring an extra round trip.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  QUIC Working Group mailing list (quic@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/quicwg/version-negotiation"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The version-invariant properties of QUIC <xref target="INV"/> define a Version
Negotiation packet but do not specify how an endpoint reacts when it receives
one. QUIC version 1 <xref target="QUIC"/> allows the server to use a Version
Negotiation packet to indicate that the version the client offered is
unacceptable, but doesn't allow the client to safely make use of that
information to create a new connection with a mutually supported version.</t>
      <t>With proper safety mechanisms in place, the Version Negotiation packet can be
part of a mechanism to allow two QUIC implementations to negotiate between two
totally disjoint versions of QUIC. This document specifies version negotiation
using Version Negotiation packets, which adds an extra round trip to connection
establishment if needed.</t>
      <t>It is beneficial to avoid additional round trips whenever possible, especially
given that most incremental versions are broadly similar to the the previous
version. This specification also defines a simple version negotiation mechanism
which leverages similarities between versions and can negotiate between the set
of "compatible" versions without additional round trips.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>
        <t>In this document, the Maximum Segment Lifetime (MSL) represents the time a QUIC
packet can exist in the network. Implementations can make this configurable, and
a RECOMMENDED value is one minute.</t>
      </section>
    </section>
    <section anchor="version-negotiation-mechanism">
      <name>Version Negotiation Mechanism</name>
      <t>This document specifies two means of performing version negotiation: one
"incompatible" which requires a round trip and is applicable to all versions,
and one "compatible" that allows saving the round trip but only applies when the
versions are compatible.</t>
      <t>The client initiates a QUIC connection by sending a first flight of QUIC packets
with a long header to the server <xref target="INV"/>. We'll refer to the version of those
packets as the "original version". The client's first flight includes Version
Information (see <xref target="vers-info"/>) which will be used to optionally enable
compatible version negotation (see <xref target="compat-vn"/>), and to prevent version
downgrade attacks (see <xref target="downgrade"/>).</t>
      <t>Upon receiving this first flight, the server verifies whether it knows how to
parse first flights from the original version. If it does not, then it starts
incompatible version negotiation, see <xref target="incompat-vn"/>. If the server can parse
the first flight, it can either establish the connection using the original
version, or it MAY attempt compatible version negotiation, see <xref target="compat-vn"/>.</t>
      <t>Note that it is possible for a server to have the ability to parse the first
flight of a given version without fully supporting it, in the sense that it
implements enough of the version's specification to parse first flight packets
but not enough to fully establish a connection using that version.</t>
      <section anchor="incompat-vn">
        <name>Incompatible Version Negotiation</name>
        <t>The server starts incompatible version negotiation by sending a Version
Negotiation packet. This packet SHALL include each entry from the server's set
of Offered Versions (see <xref target="server-fleet"/>) in a Supported Version field. The
server MAY add reserved versions (as defined in <xref section="6.3" sectionFormat="of" target="QUIC"/>) in
Supported Version fields.</t>
        <t>Clients will ignore a Version Negotiation packet if it contains the original
version attempted by the client. The client also ignores a Version Negotiation
packet that contains incorrect connection ID fields; see <xref section="6" sectionFormat="of" target="INV"/>.</t>
        <t>Upon receiving the Version Negotiation packet, the client will search for a
version it supports in the list provided by the server. If it doesn't find one,
it aborts the connection attempt. Otherwise, it selects a mutually supported
version and sends a new first flight with that version - we refer to this
version as the "negotiated version".</t>
        <t>The new first flight will allow the endpoints to establish a connection using
the negotiated version. The handshake of the negotiated version will exchange
version information (see <xref target="vers-info"/>) required to ensure that version
negotiation was genuine, i.e. that no attacker injected packets in order to
influence the version negotiation process, see <xref target="downgrade"/>.</t>
      </section>
      <section anchor="compatible-versions">
        <name>Compatible Versions</name>
        <t>If A and B are two distinct versions of QUIC, A is said to be "compatible" with
B if it is possible to take a first flight of packets from version A and convert
it into a first flight of packets from version B. As an example, if versions A
and B are absolutely equal in their wire image and behavior during the handshake
but differ after the handshake, then A is compatible with B and B is compatible
with A. Note that the conversion of the first flight can be lossy: some data
such as QUIC version 1 0-RTT packets could be ignored during conversion and
retransmitted later.</t>
        <t>Version compatibility is not symmetric: it is possible for version A to be
compatible with version B and for B not to be compatible with A. This could
happen for example if version B is a strict superset of version A.</t>
        <t>Note that version compatibility does not mean that every single possible
instance of a first flight will succeed in conversion to the other version. A
first flight using version A is said to be "compatible" with version B if two
conditions are met: first that version A is compatible with version B, and
second that the conversion of this first flight to version B is well-defined.
For example, if version B is equal to A in all aspects except it introduced a
new frame in its first flight that version A cannot parse or even ignore, then B
could still be compatible with A as conversions would succeed for connections
where that frame is not used. In this example, first flights using version B
that carry this new frame would not be compatible with version A.</t>
        <t>When a new version of QUIC is defined, it is assumed to not be compatible with
any other version unless otherwise specified. Similarly, no other version is
compatible with the new version unless otherwise specified. Implementations MUST
NOT assume compatibility between versions unless explicitly specified.</t>
        <t>Note that both endpoints might disagree on whether two versions are compatible
or not. For example, two versions could have been defined concurrently and then
specified as compatible in a third document much later - in that scenario one
endpoint might be aware of the compatibility document while the other may not.</t>
        <t>When a client creates a QUIC connection, its goal is to use an application layer
protocol. Therefore, when considering which versions are compatible, clients
will only consider versions that support one of the intended application layer
protocols. For example, if the client's first flight advertises multiple
Application Layer Protocol Negotiation (ALPN) <xref target="ALPN"/> tokens and
multiple compatible versions, the server needs to ensure that the ALPN token
that it selects can run over the QUIC version that it selects.</t>
      </section>
      <section anchor="compat-vn">
        <name>Compatible Version Negotiation</name>
        <t>When the server can parse the client's first flight using the original version,
it can extract the client's Version Information structure (see <xref target="vers-info"/>).
This contains the list of versions that the client knows its first flight is
compatible with.</t>
        <t>If the server supports one of the client's compatible versions, and the server
also knows that the original version is compatible with this version, and the
client's first flight is compatible with this version, then the server converts
the client's first flight to that version and replies to the client as if it had
received the converted first flight. Note that this conversion process cannot
fail by definition of the first flight being compatible. The version used by the
server in its reply is refered to as the "negotiated version". The server MUST
NOT reply with a version that is not present in the client's compatible
versions, unless it is the original version.</t>
        <t>Clients will be made aware of compatible version negotiation by seeing a change
in the QUIC long header Version field. It is possible for the server to
initially send packets with the original version before switching to the
negotiated version (for example, this can happen when the client's Version
Information structured spans multiple packets; in that case the server might
acknowledge the first packet in the original version and later switch to a
different negotiated version).</t>
        <t>Note that, after the first flight is converted to the negotiated version, the
handshake completes in the negotiated version. The entire handshake (including
the converted first flight) needs to conform to the rules of the negotiated
version. For instance, if the negotiated version requires that the 5-tuple
remain stable for the entire handshake (as QUIC version 1 does), then this
applies to the entire handshake, including the first flight.</t>
        <t>Note also that the client can disable compatible version negotiation by
only including the Chosen Version in the Other Versions field of the Version
Information Transport Parameter.</t>
        <t>If the server does not find a compatible version, it will use the original
version if it supports it, and if it doesn't then the server will perform
incompatible version negotiation instead, see <xref target="incompat-vn"/>.</t>
      </section>
      <section anchor="connections-and-version-negotiation">
        <name>Connections and Version Negotiation</name>
        <t>QUIC connections are shared state between a client and a server <xref target="INV"/>. The
compatible version negotiation mechanism defined in this document (see
<xref target="compat-vn"/>) is performed as part of a single QUIC connection; that is, the
packets with the original version are part of the same connection as the packets
with the negotiated version.</t>
        <t>In comparison, the incompatible version negotiation mechanism, which leverages
QUIC Version Negotiation packets (see <xref target="incompat-vn"/>) conceptually operates
across two QUIC connections: the connection attempt prior to receiving the
Version Negotiation packet is distinct from the connection with the incompatible
version that follows.</t>
      </section>
      <section anchor="client-choice-of-original-version">
        <name>Client Choice of Original Version</name>
        <t>The client's first connection attempt SHOULD be made using the version that the
server is most likely to support. The client selects the version most likely to
be supported from the versions that are compatible with the client's most
preferred version. Without additional information this could mean selecting the
oldest version that the client supports.</t>
      </section>
    </section>
    <section anchor="vers-info">
      <name>Version Information</name>
      <t>During the handshake, endpoints will exchange Version Information, which
consists of a chosen version and a list of other versions. Any version of QUIC
that supports this mechanism MUST provide a mechanism to exchange Version
Information in both directions during the handshake, such that this data is
authenticated.</t>
      <t>In QUIC version 1, the Version Information is transmitted using a new transport
parameter, version_information. The contents of Version Information are shown
below (using the notation from the "Notational Conventions" section of <xref target="QUIC"/>):</t>
      <figure anchor="fig-vi-format">
        <name>Version Information Format</name>
        <artwork><![CDATA[
Version Information {
  Chosen Version (32),
  Other Versions (32) ...,
}
]]></artwork>
      </figure>
      <t>The content of each field is described below:</t>
      <dl>
        <dt>Chosen Version:</dt>
        <dd>
          <t>The version that the sender has chosen to use for this connection. In most
cases, this field will be equal to the value of the Version field in the long
header that carries this data.</t>
        </dd>
      </dl>
      <t>The contents of the Other Versions field depends on whether it is sent by the
client or by the server.</t>
      <dl>
        <dt>Client-Sent Other Versions:</dt>
        <dd>
          <t>When sent by a client, the Other Versions field lists all the versions that
this first flight is compatible with, ordered by descending preference. Note
that the version in the Chosen Version field MUST be included in this list to
allow the client to communicate the chosen version's preference. Note that this
preference is only advisory, servers MAY choose to use their own preference
instead.</t>
        </dd>
        <dt>Server-Sent Other Versions:</dt>
        <dd>
          <t>When sent by a server, the Other Versions field lists all the Fully-Deployed
Versions of this server deployment, see <xref target="server-fleet"/>. Note that the version
in the Chosen Version field is not necessarily included in this list, because
the server operator could be in the process of removing support for this
version. For the same reason, the Other Versions field MAY be empty.</t>
        </dd>
      </dl>
      <t>Clients and servers MAY both include versions following the pattern 0x?a?a?a?a
in their Other Versions list. Those versions are reserved to exercise version
negotiation (see the Versions section of <xref target="QUIC"/>), and will never be selected
when choosing a version to use.</t>
    </section>
    <section anchor="downgrade">
      <name>Version Downgrade Prevention</name>
      <t>Clients MUST ignore any received Version Negotiation packets that contain the
version that they initially attempted. A client that makes a connection attempt
based on information received from a Version Negotiation packet MUST ignore any
Version Negotiation packets it receives in response to that connection attempt.</t>
      <t>Both endpoints MUST parse their peer's Version Information during the handshake.
If parsing the Version Information failed (for example, if it is too short or if
its length is not divisible by four), then the endpoint MUST close the
connection; if the connection was using QUIC version 1, that connection closure
MUST use a transport error of type TRANSPORT_PARAMETER_ERROR. If an endpoint
receives a Chosen Version equal to zero, or any Other Version equal to zero, it
MUST treat it as a parsing failure.</t>
      <t>Every QUIC version that supports version negotiation MUST define a method for
closing the connection with a version negotiation error. For QUIC version 1,
version negotiation errors are signaled using a transport error of type
VERSION_NEGOTIATION_ERROR; see <xref target="iana-error"/>.</t>
      <t>If the Version Information was missing, the endpoints MAY complete the
handshake. However, if a client has reacted to a Version Negotiation packet and
the Version Information was missing, the client MUST close the connection with a
version negotiation error.</t>
      <t>If the client received and acted on a Version Negotiation packet, the client
MUST validate the server's Other Versions field. The Other Versions field is
validated by confirming that the client would have attempted the same version
with knowledge of the versions the server supports. That is, the client would
have selected the same version if it received a Version Negotiation packet that
listed the versions in the server's Other Versions field, plus the negotiated
version. If the client would have selected a different version, the client MUST
close the connection with a version negotiation error. In particular, if the
client reacted to a Version Negotiation packet and the server's Other Versions
field is empty, the client MUST close the connection with a version negotiation
error. These connection closures prevent an attacker from being able to use
forged Version Negotiation packets to force a version downgrade.</t>
      <t>This validation of Other Versions is not sufficient to prevent downgrade.
Downgrade prevention also depends on the client ignoring Version Negotiation
packets that contain the original version; see <xref target="incompat-vn"/>.</t>
      <t>After the process of version negotiation in this document completes, the version
in use for the connection is the version that the server sent in the Chosen
Version field of its Version Information. That remains true even if other
versions were used in the Version field of long headers at any point in the
lifetime of the connection. In particular, since during compatible version
negotiation the client is made aware of the negotiated version by the QUIC long
header version (see <xref target="compat-vn"/>), clients MUST validate that the server's
Chosen Version is equal to the negotiated version; if they do not match, the
client MUST close the connection with a version negotiation error. This prevents
an attacker's ability to influence version negotiation by forging the Version
long header field.</t>
    </section>
    <section anchor="server-fleet">
      <name>Server Deployments of QUIC</name>
      <t>While this document mainly discusses a single QUIC server, it is common for
deployments of QUIC servers to include a fleet of multiple server instances. We
therefore define the following terms:</t>
      <dl>
        <dt>Acceptable Versions:</dt>
        <dd>
          <t>This is the set of versions supported by a given server instance. More
specifically, these are the versions that a given server instance will use if a
client sends a first flight using them.</t>
        </dd>
        <dt>Offered Versions:</dt>
        <dd>
          <t>This is the set of versions that a given server instance will send in a
Version Negotiation packet if it receives a first flight from an unknown
version. This set will most often be equal to the Acceptaple Versions set,
except during short transitions while versions are added or removed (see below).</t>
        </dd>
        <dt>Fully-Deployed Versions:</dt>
        <dd>
          <t>This is the set of QUIC versions that is supported and negotiated by every
single QUIC server instance in this deployment. If a deployment only contains a
single server instance, then this set is equal to the Offered Versions set,
except during short transitions while versions are added or removed (see below).</t>
        </dd>
      </dl>
      <t>If a deployment contains multiple server instances, software updates may not
happen at exactly the same time on all server instances. Because of this, a
client might receive a Version Negotiation packet from a server instance that
has already been updated and the client's resulting connection attempt might
reach a different server instance which hasn't been updated yet.</t>
      <t>However, even when there is only a single server instance, it is still possible
to receive a stale Version Negotiation packet if the server performs its
software update while the Version Negotiation packet is in flight.</t>
      <t>This could cause the version downgrade prevention mechanism described in
<xref target="downgrade"/> to falsely detect a downgrade attack. To avoid that, server
operators SHOULD perform a three-step process when they wish to add or remove
support for a version:</t>
      <t>When adding support for a new version:</t>
      <ul spacing="normal">
        <li>The first step is to progressively add support for the new version to all
server instances. This step updates the Acceptable Versions but not the
Offered Versions nor the Fully-Deployed Versions. Once all server instances
have been updated, operators wait for at least one MSL to allow any in-flight
Version Negotiation packets to arrive.</li>
        <li>Then, the second step is to progressively add the new version to Offered
Versions on all server instances. Once complete, operators wait for at least
another MSL.</li>
        <li>Finally, the third step is to progressively add the new version to
Fully-Deployed Versions on all server instances.</li>
      </ul>
      <t>When removing support for a version:</t>
      <ul spacing="normal">
        <li>The first step is to progressively remove the version from Fully-Deployed
Versions on all server instances. Once it has been removed on all server
instances, operators wait for at least one MSL to allow any in-flight Version
Negotiation packets to arrive.</li>
        <li>Then, the second step is to progressively remove the version from Offered
Versions on all server instances. Once complete, operators wait for at least
another MSL.</li>
        <li>Finally, the third step is to progressively remove support for the version
from all server instances. That step updates the Acceptable Versions.</li>
      </ul>
      <t>Note that this opens connections to version downgrades (but only for
partially-deployed versions) during the update window, since those could be due
to clients communicating with both updated and non-updated server instances.</t>
    </section>
    <section anchor="considerations-for-future-versions">
      <name>Considerations for Future Versions</name>
      <t>In order to facilitate the deployment of future versions of QUIC, designers of
future versions SHOULD attempt to design their new version such that commonly
deployed versions are compatible with it.</t>
      <t>QUIC version 1 defines multiple features which are not documented in the QUIC
invariants. Since at the time of writing QUIC version 1 is widely deployed,
this section discusses considerations for future versions to help with
compatibility with QUIC version 1.</t>
      <section anchor="interaction-with-retry">
        <name>Interaction with Retry</name>
        <t>QUIC version 1 features Retry packets, which the server can send to validate the
client's IP address before parsing the client's first flight. A server that
sends a Retry packet can do so before parsing the client's first flight. A
server that sends a Retry packet therefore might not have processed the client's
Version Information before doing so.</t>
        <t>If a future document wishes to define compatibility between two versions that
support retry, that document MUST specify how version negotiation (both
compatible and incompatible) interacts with retry during a handshake that
requires both. For example, that could be accomplished by having the server send
a Retry packet in the original version first and therefore validating the
client's IP address before attempting compatible version negotiation. If both
versions support authenticating Retry packets, the compatibility defition needs
to define how to authenticate the Retry in the negotiated version handshake even
though the Retry itself was sent using the original version.</t>
      </section>
      <section anchor="interaction-with-tls-resumption">
        <name>Interaction with TLS resumption</name>
        <t>QUIC version 1 uses TLS 1.3, which supports session resumption by sending
session tickets in one connection that can be used in a later connection; see
<xref section="2.2" sectionFormat="of" target="TLS"/>. New versions that also use TLS 1.3 SHOULD
mandate that their session tickets are rightly scoped to one version of QUIC;
i.e., require that clients not use them across version and that servers validate
this client requirement.</t>
      </section>
      <section anchor="interaction-with-0-rtt">
        <name>Interaction with 0-RTT</name>
        <t>QUIC version 1 allows sending data from the client to the server during the
handshake, by using 0-RTT packets. If a future document wishes to define
compatibility between two versions that support 0-RTT, that document MUST
address the scenario where there are 0-RTT packets in the client's first flight.
For example, this could be accomplished by defining which transformations are
applied to 0-RTT packets. Alternatively, that document could specify that
compatible version negotiation causes 0-RTT data to be rejected by the server.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security of this version negotiation mechanism relies on the authenticity of
the Version Information exchanged during the handshake. In QUIC version 1,
transport parameters are authenticated ensuring the security of this mechanism.
Negotiation between compatible versions will have the security of the weakest
common version.</t>
      <t>The requirement that versions not be assumed compatible mitigates the
possibility of cross-protocol attacks, but more analysis is still needed here.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter">
        <name>QUIC Transport Parameter</name>
        <t>This document registers a new value in the QUIC Transport Parameter Registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport"/>.</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0xFF73DB</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>version_information</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>provisional</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>When this document is approved, it will request permanent allocation of a
codepoint in the 0-63 range to replace the provisional codepoint described above.</t>
      </section>
      <section anchor="iana-error">
        <name>QUIC Transport Error Code</name>
        <t>This document registers a new value in the QUIC Transport Error Codes Registry
maintained at
<eref target="https://www.iana.org/assignments/quic/quic.xhtml#quic-transport-error-codes"/>.</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x53F8</t>
          </dd>
          <dt>Code:</dt>
          <dd>
            <t>VERSION_NEGOTIATION_ERROR</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Error negotiating version</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>provisional</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>When this document is approved, it will request permanent allocation of a
codepoint in the 0-63 range to replace the provisional codepoint described above.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="INV">
        <front>
          <title>Version-Independent Properties of QUIC</title>
          <author fullname="M. Thomson" initials="M." surname="Thomson">
            <organization/>
          </author>
          <date month="May" 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="RFC" value="8999"/>
        <seriesInfo name="DOI" value="10.17487/RFC8999"/>
      </reference>
      <reference anchor="QUIC">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
            <organization/>
          </author>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
            <organization/>
          </author>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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="ALPN">
        <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="TLS">
        <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>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Nick Banks, Mike Bishop, Ryan Hamilton, Roberto
Peon, Anthony Rossi, and Martin Thomson for their input and contributions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAMidJmIAA91daW8bR5r+Xr+iRv4Qe0EycpzJoSDYoSw7EWBJXslJsBgM
glJ3kaxxs5vT1S2aEZzfvu9RZ7MpOTM7wGIxSEKR3XW85/MeVTOdTkVnukqf
yJfNeqM6c1tp+bNurWlqeamXTWfgS/i8aFr5Xz+dvxTq9rbVdyf0R/bSpSib
olZrGKts1aKbGt0tpv/oTTG94wGndRxwevyVKFQHX7S7E2m7UmyXPKgQZtOe
yK7tbffF8fG3x18I1Wp1In/QtW5VJd7r3bZpyxN5Xne6rXU3PcP5hLCdqstf
VdXUsIadtmJjTuRfu6aYSNu0XasXFj7t1vjhb0Kovls17YmQcgr/SGlqeyKP
zmbypliZWv1mjuhr3tLRmboz5eCnpl2q2vxGG4JHfmiaJVDizZuX/LOFKXUH
Pzz/6vhYzteblelWWsG38q1q32/Vjp8rTAc0OLpo+rpTppY/G72dyJeqMkD1
2ij57ZfHX75wz+JDSLKjn2rTaVhRB1S0slnABLo1heLn9FqZCjhh3YJnyI2/
LPHbWdGs802/mslrbYumrVSy5VcwWv59vt+L5jdTuV/cdPp9+5e2W6xpCiGm
06lUt0AGVQB7SGLKBhZbN53ctA0QVEsFW1pvKt1p6cREJmIi17pYwZx2LW/7
DlfbaVXKpq52wo1gYQggJUkokFda3cJAsmvg6dKgjMHXqqPf/Az4uaiMrjsg
3EK3QEdjRV+rotCbToE8z+S7lbGw3KJf42MwT9GaW5rt4XXiZEJVVbPFZ90s
IJjJwqyudAFfynXf9fDoTtp+swERhXW4wWfyaoMD468TYRa05KY1S+BmRcP5
2eM70q5AUxxFnVouTGs7uajMctUhidaqmwgcK118oYAk6r2Wm0oVWm5BTBui
dtG3ramXMJ/UH4CNsgXxK0E3zWbm+Ls2ZVlpIZ6gOrZN2Rc4pBDvIrmnpr5T
rVE1cX2j286wxJJE3N//6fzy5++vX7/85ttvv/34EUi9MDVuw9khkdqhjSre
646EoWxIkOxGF2axk6tmS+usy01jYCqwGUVn5Xala2nwz0KbOzAKYB1mPLMn
23NcA36Di/j2+PgYFuEYmAtUbx9Z1r8odBO3L23rzzpeQvoWSo5aaBCXNTIL
V9MsWN5MzbyleRpZwOY7XGuttyANda2JK8TZh8VOiF/wGeYTTdftonBb2B4L
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
7DtO5PwPNkFoTtZhAAA=

-->

</rfc>
