<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-http-29" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.45.2 -->
  <front>
    <title abbrev="HTTP/3">Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-29"/>
    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Akamai</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <date year="2020" month="June" day="09"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <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>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this draft takes place on the QUIC working group mailing list
(<eref target="mailto:quic@ietf.org">quic@ietf.org</eref>), which is archived at
<eref target="https://mailarchive.ietf.org/arch/search/?email_list=quic"/>.</t>
      <t>Working Group information can be found at <eref target="https://github.com/quicwg"/>; source
code and issues list for this draft can be found at
<eref target="https://github.com/quicwg/base-drafts/labels/-http"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>HTTP semantics <xref target="SEMANTICS" format="default"/> are used for a broad
range of services on the Internet. These semantics have most commonly been used
with two different TCP mappings, HTTP/1.1 and HTTP/2.  HTTP/3 supports the same
semantics over a new transport protocol, QUIC.</t>
      <section anchor="prior-versions-of-http" numbered="true" toc="default">
        <name>Prior versions of HTTP</name>
        <t>HTTP/1.1 <xref target="HTTP11" format="default"/> is a TCP mapping which uses
whitespace-delimited text fields to convey HTTP messages.  While these exchanges
are human-readable, using whitespace for message formatting leads to parsing
complexity and motivates tolerance of variant behavior. Because each
connection can transfer only a single HTTP request or response at a time in each
direction, multiple parallel TCP connections are often used, reducing the
ability of the congestion controller to effectively manage traffic between
endpoints.</t>
        <t>HTTP/2 <xref target="HTTP2" format="default"/> introduced a binary framing and multiplexing layer to
improve latency without modifying the transport layer.  However, because the
parallel nature of HTTP/2's multiplexing is not visible to TCP's loss recovery
mechanisms, a lost or reordered packet causes all active transactions to
experience a stall regardless of whether that transaction was directly impacted
by the lost packet.</t>
      </section>
      <section anchor="delegation-to-quic" numbered="true" toc="default">
        <name>Delegation to QUIC</name>
        <t>The QUIC transport protocol incorporates stream multiplexing and per-stream flow
control, similar to that provided by the HTTP/2 framing layer. By providing
reliability at the stream level and congestion control across the entire
connection, it has the capability to improve the performance of HTTP compared to
a TCP mapping.  QUIC also incorporates TLS 1.3 <xref target="TLS13" format="default"/> at the
transport layer, offering comparable security to running TLS over TCP, with
the improved connection setup latency of TCP Fast Open <xref target="TFO" format="default"/>.</t>
        <t>This document defines a mapping of HTTP semantics over the QUIC transport
protocol, drawing heavily on the design of HTTP/2.  While delegating stream
lifetime and flow control issues to QUIC, a similar binary framing is used on
each stream. Some HTTP/2 features are subsumed by QUIC, while other features are
implemented atop QUIC.</t>
        <t>QUIC is described in <xref target="QUIC-TRANSPORT" format="default"/>.  For a full description of HTTP/2, see
<xref target="HTTP2" format="default"/>.</t>
      </section>
    </section>
    <section anchor="http3-protocol-overview" numbered="true" toc="default">
      <name>HTTP/3 Protocol Overview</name>
      <t>HTTP/3 provides a transport for HTTP semantics using the QUIC transport protocol
and an internal framing layer similar to HTTP/2.</t>
      <t>Once a client knows that an HTTP/3 server exists at a certain endpoint, it opens
a QUIC connection. QUIC provides protocol negotiation, stream-based
multiplexing, and flow control.  Discovery of an HTTP/3 endpoint is described in
<xref target="discovery" format="default"/>.</t>
      <t>Within each stream, the basic unit of HTTP/3 communication is a frame
(<xref target="frames" format="default"/>).  Each frame type serves a different purpose.  For example, HEADERS
and DATA frames form the basis of HTTP requests and responses
(<xref target="request-response" format="default"/>).</t>
      <t>Multiplexing of requests is performed using the QUIC stream abstraction,
described in Section 2 of <xref target="QUIC-TRANSPORT" format="default"/>.  Each request-response pair
consumes a single QUIC stream.  Streams are independent of each other, so one
stream that is blocked or suffers packet loss does not prevent progress on other
streams.</t>
      <t>Server push is an interaction mode introduced in HTTP/2 <xref target="HTTP2" format="default"/> which permits
a server to push a request-response exchange to a client in anticipation of the
client making the indicated request.  This trades off network usage against a
potential latency gain.  Several HTTP/3 frames are used to manage server push,
such as PUSH_PROMISE, MAX_PUSH_ID, and CANCEL_PUSH.</t>
      <t>As in HTTP/2, request and response fields are compressed for transmission.
Because HPACK <xref target="HPACK" format="default"/> relies on in-order transmission of compressed
field sections (a guarantee not provided by QUIC), HTTP/3 replaces HPACK with
QPACK <xref target="QPACK" format="default"/>.  QPACK uses separate unidirectional streams to modify and track
field table state, while encoded field sections refer to the state of the table
without modifying it.</t>
      <section anchor="document-organization" numbered="true" toc="default">
        <name>Document Organization</name>
        <t>The following sections provide a detailed overview of the connection lifecycle
and key concepts:</t>
        <ul spacing="normal">
          <li>Connection Setup and Management (<xref target="connection-setup" format="default"/>) covers how an HTTP/3
endpoint is discovered and a connection is established.</li>
          <li>HTTP Request Lifecycle (<xref target="http-request-lifecycle" format="default"/>) describes how HTTP
semantics are expressed using frames.</li>
          <li>Connection Closure (<xref target="connection-closure" format="default"/>) describes how connections are
terminated, either gracefully or abruptly.</li>
        </ul>
        <t>The details of the wire protocol and interactions with the transport are
described in subsequent sections:</t>
        <ul spacing="normal">
          <li>Stream Mapping and Usage (<xref target="stream-mapping" format="default"/>) describes the way QUIC streams
are used.</li>
          <li>HTTP Framing Layer (<xref target="http-framing-layer" format="default"/>) describes the frames used on
most streams.</li>
          <li>Error Handling (<xref target="errors" format="default"/>) describes how error conditions are handled and
expressed, either on a particular stream or for the connection as a whole.</li>
        </ul>
        <t>Additional resources are provided in the final sections:</t>
        <ul spacing="normal">
          <li>Extensions to HTTP/3 (<xref target="extensions" format="default"/>) describes how new capabilities can be
added in future documents.</li>
          <li>A more detailed comparison between HTTP/2 and HTTP/3 can be found in
<xref target="h2-considerations" format="default"/>.</li>
        </ul>
      </section>
      <section anchor="conventions-and-terminology" numbered="true" toc="default">
        <name>Conventions and Terminology</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&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>Field definitions are given in Augmented Backus-Naur Form (ABNF), as defined in
<xref target="RFC5234" format="default"/>.</t>
        <t>This document uses the variable-length integer encoding from
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
        <t>The following terms are used:</t>
        <dl newline="false" spacing="normal">
          <dt>abort:</dt>
          <dd>
  An abrupt termination of a connection or stream, possibly due to an error
condition.</dd>
          <dt>client:</dt>
          <dd>
  The endpoint that initiates an HTTP/3 connection.  Clients send HTTP requests
and receive HTTP responses.</dd>
          <dt>connection:</dt>
          <dd>
  A transport-layer connection between two endpoints, using QUIC as the
transport protocol.</dd>
          <dt>connection error:</dt>
          <dd>
  An error that affects the entire HTTP/3 connection.</dd>
          <dt>endpoint:</dt>
          <dd>
  Either the client or server of the connection.</dd>
          <dt>frame:</dt>
          <dd>
  The smallest unit of communication on a stream in HTTP/3, consisting of a
header and a variable-length sequence of bytes structured according to the
frame type.

Protocol elements called "frames" exist in both this document and
<xref target="QUIC-TRANSPORT" format="default"/>. Where frames from <xref target="QUIC-TRANSPORT" format="default"/> are referenced, the
frame name will be prefaced with "QUIC."  For example, "QUIC CONNECTION_CLOSE
frames."  References without this preface refer to frames defined in
<xref target="frames" format="default"/>.</dd>
          <dt>peer:</dt>
          <dd>
  An endpoint.  When discussing a particular endpoint, "peer" refers to the
endpoint that is remote to the primary subject of discussion.</dd>
          <dt>receiver:</dt>
          <dd>
  An endpoint that is receiving frames.</dd>
          <dt>sender:</dt>
          <dd>
  An endpoint that is transmitting frames.</dd>
          <dt>server:</dt>
          <dd>
  The endpoint that accepts an HTTP/3 connection.  Servers receive HTTP requests
and send HTTP responses.</dd>
          <dt>stream:</dt>
          <dd>
  A bidirectional or unidirectional bytestream provided by the QUIC transport.</dd>
          <dt>stream error:</dt>
          <dd>
  An error on the individual HTTP/3 stream.</dd>
        </dl>
        <t>The term "payload body" is defined in Section 6.3.3 of <xref target="SEMANTICS" format="default"/>.</t>
        <t>Finally, the terms "gateway", "intermediary", "proxy", and "tunnel" are defined
in Section 2.2 of <xref target="SEMANTICS" format="default"/>.  Intermediaries act as both client and server
at different times.</t>
      </section>
    </section>
    <section anchor="connection-setup" numbered="true" toc="default">
      <name>Connection Setup and Management</name>
      <section anchor="draft-version-identification" numbered="true" toc="default">
        <name>Draft Version Identification</name>
        <ul empty="true" spacing="normal">
          <li>
            <strong>RFC Editor's Note:</strong>  Please remove this section prior to publication of a
final version of this document.</li>
        </ul>
        <t>HTTP/3 uses the token "h3" to identify itself in ALPN and Alt-Svc.  Only
implementations of the final, published RFC can identify themselves as "h3".
Until such an RFC exists, implementations MUST NOT identify themselves using
this string.</t>
        <t>Implementations of draft versions of the protocol MUST add the string "-" and
the corresponding draft number to the identifier. For example,
draft-ietf-quic-http-01 is identified using the string "h3-01".</t>
        <t>Draft versions MUST use the corresponding draft transport version as their
transport. For example, the application protocol defined in
draft-ietf-quic-http-25 uses the transport defined in
draft-ietf-quic-transport-25.</t>
        <t>Non-compatible experiments that are based on these draft versions MUST append
the string "-" and an experiment name to the identifier. For example, an
experimental implementation based on draft-ietf-quic-http-09 which reserves an
extra stream for unsolicited transmission of 1980s pop music might identify
itself as "h3-09-rickroll". Note that any label MUST conform to the "token"
syntax defined in Section 4.4.1.1 of <xref target="SEMANTICS" format="default"/>. Experimenters are
encouraged to coordinate their experiments on the
<eref target="mailto:quic@ietf.org">quic@ietf.org</eref> mailing list.</t>
      </section>
      <section anchor="discovery" numbered="true" toc="default">
        <name>Discovering an HTTP/3 Endpoint</name>
        <t>HTTP relies on the notion of an authoritative response: a response that has been
determined to be the most appropriate response for that request given the state
of the target resource at the time of response message origination by (or at the
direction of) the origin server identified within the target URI.  Locating an
authoritative server for an HTTP URL is discussed in Section 5.4 of
<xref target="SEMANTICS" format="default"/>.</t>
        <t>The "https" scheme associates authority with possession of a certificate that
the client considers to be trustworthy for the host identified by the authority
component of the URL. If a server presents a certificate and proof that it
controls the corresponding private key, then a client will accept a secured
connection to that server as being authoritative for all origins with the
"https" scheme and a host identified in the certificate.</t>
        <t>A client MAY attempt access to a resource with an "https" URI by resolving the
host identifier to an IP address, establishing a QUIC connection to that address
on the indicated port, and sending an HTTP/3 request message targeting the URI
to the server over that secured connection.</t>
        <t>Connectivity problems (e.g., blocking UDP) can result in QUIC connection
establishment failure; clients SHOULD attempt to use TCP-based versions of HTTP
in this case.</t>
        <t>Servers MAY serve HTTP/3 on any UDP port; an alternative service advertisement
always includes an explicit port, and URLs contain either an explicit port or a
default port associated with the scheme.</t>
        <section anchor="alt-svc" numbered="true" toc="default">
          <name>HTTP Alternative Services</name>
          <t>An HTTP origin advertises the availability of an equivalent HTTP/3 endpoint via
the Alt-Svc HTTP response header field or the HTTP/2 ALTSVC frame (<xref target="ALTSVC" format="default"/>),
using the ALPN token defined in <xref target="connection-establishment" format="default"/>.</t>
          <t>For example, an origin could indicate in an HTTP response that HTTP/3 was
available on UDP port 50781 at the same hostname by including the following
header field:</t>
          <artwork type="example" name="" align="left" alt=""><![CDATA[
Alt-Svc: h3=":50781"
]]></artwork>
          <t>On receipt of an Alt-Svc record indicating HTTP/3 support, a client MAY attempt
to establish a QUIC connection to the indicated host and port and, if
successful, send HTTP requests using the mapping described in this document.</t>
        </section>
        <section anchor="other-schemes" numbered="true" toc="default">
          <name>Other Schemes</name>
          <t>Although HTTP is independent of the transport protocol, the "http" scheme
associates authority with the ability to receive TCP connections on the
indicated port of whatever host is identified within the authority component.
Because HTTP/3 does not use TCP, HTTP/3 cannot be used for direct access to the
authoritative server for a resource identified by an "http" URI.  However,
protocol extensions such as <xref target="ALTSVC" format="default"/> permit the authoritative server
to identify other services which are also authoritative and which might be
reachable over HTTP/3.</t>
          <t>Prior to making requests for an origin whose scheme is not "https", the client
MUST ensure the server is willing to serve that scheme.  If the client intends
to make requests for an origin whose scheme is "http", this means that it MUST
obtain a valid <tt>http-opportunistic</tt> response for the origin as described in
<xref target="RFC8164" format="default"/> prior to making any such requests.  Other schemes might define
other mechanisms.</t>
        </section>
      </section>
      <section anchor="connection-establishment" numbered="true" toc="default">
        <name>Connection Establishment</name>
        <t>HTTP/3 relies on QUIC version 1 as the underlying transport.  The use of other
QUIC transport versions with HTTP/3 MAY be defined by future specifications.</t>
        <t>QUIC version 1 uses TLS version 1.3 or greater as its handshake protocol.
HTTP/3 clients MUST support a mechanism to indicate the target host to the
server during the TLS handshake.  If the server is identified by a DNS name,
clients MUST send the Server Name Indication (SNI) <xref target="RFC6066" format="default"/> TLS extension
unless an alternative mechanism to indicate the target host is used.</t>
        <t>QUIC connections are established as described in <xref target="QUIC-TRANSPORT" format="default"/>. During
connection establishment, HTTP/3 support is indicated by selecting the ALPN
token "h3" in the TLS handshake.  Support for other application-layer protocols
MAY be offered in the same handshake.</t>
        <t>While connection-level options pertaining to the core QUIC protocol are set in
the initial crypto handshake, HTTP/3-specific settings are conveyed in the
SETTINGS frame. After the QUIC connection is established, a SETTINGS frame
(<xref target="frame-settings" format="default"/>) MUST be sent by each endpoint as the initial frame of their
respective HTTP control stream; see <xref target="control-streams" format="default"/>.</t>
      </section>
      <section anchor="connection-reuse" numbered="true" toc="default">
        <name>Connection Reuse</name>
        <t>HTTP/3 connections are persistent across multiple requests.  For best
performance, it is expected that clients will not close connections until it is
determined that no further communication with a server is necessary (for
example, when a user navigates away from a particular web page) or until the
server closes the connection.</t>
        <t>Once a connection exists to a server endpoint, this connection MAY be reused for
requests with multiple different URI authority components.  In general, a server
is considered authoritative for all URIs with the "https" scheme for which the
hostname in the URI is present in the authenticated certificate provided by the
server, either as the CN field of the certificate subject or as a dNSName in the
subjectAltName field of the certificate; see <xref target="RFC6125" format="default"/>.  For a host that is
an IP address, the client MUST verify that the address appears as an iPAddress
in the subjectAltName field of the certificate.  If the hostname or address is
not present in the certificate, the client MUST NOT consider the server
authoritative for origins containing that hostname or address.  See Section 5.4
of <xref target="SEMANTICS" format="default"/> for more detail on authoritative access.</t>
        <t>Clients SHOULD NOT open more than one HTTP/3 connection to a given host and port
pair, where the host is derived from a URI, a selected alternative service
<xref target="ALTSVC" format="default"/>, or a configured proxy.  A client MAY open multiple connections to
the same IP address and UDP port using different transport or TLS configurations
but SHOULD avoid creating multiple connections with the same configuration.</t>
        <t>Servers are encouraged to maintain open connections for as long as possible but
are permitted to terminate idle connections if necessary.  When either endpoint
chooses to close the HTTP/3 session, the terminating endpoint SHOULD first send
a GOAWAY frame (<xref target="connection-shutdown" format="default"/>) so that both endpoints can reliably
determine whether previously sent frames have been processed and gracefully
complete or terminate any necessary remaining tasks.</t>
        <t>A server that does not wish clients to reuse connections for a particular origin
can indicate that it is not authoritative for a request by sending a 421
(Misdirected Request) status code in response to the request; see Section 9.1.2
of <xref target="HTTP2" format="default"/>.</t>
      </section>
    </section>
    <section anchor="http-request-lifecycle" numbered="true" toc="default">
      <name>HTTP Request Lifecycle</name>
      <section anchor="request-response" numbered="true" toc="default">
        <name>HTTP Message Exchanges</name>
        <t>A client sends an HTTP request on a client-initiated bidirectional QUIC stream.
A client MUST send only a single request on a given stream. A server sends zero
or more interim HTTP responses on the same stream as the request, followed by a
single final HTTP response, as detailed below.</t>
        <t>Pushed responses are sent on a server-initiated unidirectional QUIC stream; see
<xref target="push-streams" format="default"/>.  A server sends zero or more interim HTTP responses, followed
by a single final HTTP response, in the same manner as a standard response.
Push is described in more detail in <xref target="server-push" format="default"/>.</t>
        <t>On a given stream, receipt of multiple requests or receipt of an additional HTTP
response following a final HTTP response MUST be treated as malformed
(<xref target="malformed" format="default"/>).</t>
        <t>An HTTP message (request or response) consists of:</t>
        <ol spacing="normal" type="1">
          <li>the header field section (see Section 4 of <xref target="SEMANTICS" format="default"/>), sent as a single
HEADERS frame (see <xref target="frame-headers" format="default"/>),</li>
          <li>optionally, the payload body, if present (see Section 6.3.3 of
<xref target="SEMANTICS" format="default"/>), sent as a series of DATA frames (see <xref target="frame-data" format="default"/>),</li>
          <li>optionally, the trailer field section, if present (see Section 4.6 of
<xref target="SEMANTICS" format="default"/>), sent as a single HEADERS frame.</li>
        </ol>
        <t>Receipt of an invalid sequence of frames MUST be treated as a connection error
of type H3_FRAME_UNEXPECTED (<xref target="errors" format="default"/>).  In particular, a DATA frame before
any HEADERS frame, or a HEADERS or DATA frame after the trailing HEADERS frame
is considered invalid.</t>
        <t>A server MAY send one or more PUSH_PROMISE frames (see <xref target="frame-push-promise" format="default"/>)
before, after, or interleaved with the frames of a response message. These
PUSH_PROMISE frames are not part of the response; see <xref target="server-push" format="default"/> for more
details.  These frames are not permitted in pushed responses; a pushed response
which includes PUSH_PROMISE frames MUST be treated as a connection error of type
H3_FRAME_UNEXPECTED.</t>
        <t>Frames of unknown types (<xref target="extensions" format="default"/>), including reserved frames
(<xref target="frame-reserved" format="default"/>) MAY be sent on a request or push stream before, after, or
interleaved with other frames described in this section.</t>
        <t>The HEADERS and PUSH_PROMISE frames might reference updates to the QPACK dynamic
table. While these updates are not directly part of the message exchange, they
must be received and processed before the message can be consumed.  See
<xref target="header-formatting" format="default"/> for more details.</t>
        <t>The "chunked" transfer encoding defined in Section 7.1 of <xref target="HTTP11" format="default"/> MUST NOT
be used.</t>
        <t>A response MAY consist of multiple messages when and only when one or more
informational responses (1xx; see Section 9.2 of <xref target="SEMANTICS" format="default"/>) precede a final
response to the same request.  Interim responses do not contain a payload body
or trailers.</t>
        <t>An HTTP request/response exchange fully consumes a client-initiated
bidirectional QUIC stream. After sending a request, a client MUST close the
stream for sending.  Unless using the CONNECT method (see <xref target="connect" format="default"/>), clients
MUST NOT make stream closure dependent on receiving a response to their request.
After sending a final response, the server MUST close the stream for sending. At
this point, the QUIC stream is fully closed.</t>
        <t>When a stream is closed, this indicates the end of an HTTP message. Because some
messages are large or unbounded, endpoints SHOULD begin processing partial HTTP
messages once enough of the message has been received to make progress.  If a
client stream terminates without enough of the HTTP message to provide a
complete response, the server SHOULD abort its response with the error code
H3_REQUEST_INCOMPLETE.</t>
        <t>A server can send a complete response prior to the client sending an entire
request if the response does not depend on any portion of the request that has
not been sent and received. When the server does not need to receive the
remainder of the request, it MAY abort reading the request stream, send a
complete response, and cleanly close the sending part of the stream.  The error
code H3_NO_ERROR SHOULD be used when requesting that the client stop sending on
the request stream.  Clients MUST NOT discard complete responses as a result of
having their request terminated abruptly, though clients can always discard
responses at their discretion for other reasons.  If the server sends a partial
or complete response but does not abort reading, clients SHOULD continue sending
the body of the request and close the stream normally.</t>
        <section anchor="header-formatting" numbered="true" toc="default">
          <name>Field Formatting and Compression</name>
          <t>HTTP messages carry metadata as a series of key-value pairs, called HTTP fields.
For a listing of registered HTTP fields, see the "Hypertext Transfer Protocol
(HTTP) Field Name Registry" maintained at
<eref target="https://www.iana.org/assignments/http-fields/"/>.</t>
          <t>As in previous versions of HTTP, field names are strings containing a subset of
ASCII characters that are compared in a case-insensitive fashion.  Properties of
HTTP field names and values are discussed in more detail in Section 4.3 of
<xref target="SEMANTICS" format="default"/>.  As in HTTP/2, characters in field names MUST be converted to
lowercase prior to their encoding.  A request or response containing uppercase
characters in field names MUST be treated as malformed (<xref target="malformed" format="default"/>).</t>
          <t>Like HTTP/2, HTTP/3 does not use the Connection header field to indicate
connection-specific fields; in this protocol, connection-specific metadata is
conveyed by other means.  An endpoint MUST NOT generate an HTTP/3 field section
containing connection-specific fields; any message containing
connection-specific fields MUST be treated as malformed (<xref target="malformed" format="default"/>).</t>
          <t>The only exception to this is the TE header field, which MAY be present in an
HTTP/3 request header; when it is, it MUST NOT contain any value other than
"trailers".</t>
          <t>This means that an intermediary transforming an HTTP/1.x message to HTTP/3 will
need to remove any fields nominated by the Connection field, along with the
Connection field itself.  Such intermediaries SHOULD also remove other
connection-specific fields, such as Keep-Alive, Proxy-Connection,
Transfer-Encoding, and Upgrade, even if they are not nominated by the Connection
field.</t>
          <section anchor="pseudo-header-fields" numbered="true" toc="default">
            <name>Pseudo-Header Fields</name>
            <t>Like HTTP/2, HTTP/3 employs a series of pseudo-header fields where the field
name begins with the ':' character (ASCII 0x3a).  These pseudo-header fields
convey the target URI, the method of the request, and the status code for the
response.</t>
            <t>Pseudo-header fields are not HTTP fields.  Endpoints MUST NOT generate
pseudo-header fields other than those defined in this document, except as
negotiated via an extension; see <xref target="extensions" format="default"/>.</t>
            <t>Pseudo-header fields are only valid in the context in which they are defined.
Pseudo-header fields defined for requests MUST NOT appear in responses;
pseudo-header fields defined for responses MUST NOT appear in requests.
Pseudo-header fields MUST NOT appear in trailers.  Endpoints MUST treat a
request or response that contains undefined or invalid pseudo-header fields as
malformed (<xref target="malformed" format="default"/>).</t>
            <t>All pseudo-header fields MUST appear in the header field section before regular
header fields.  Any request or response that contains a pseudo-header field that
appears in a header field section after a regular header field MUST be treated
as malformed (<xref target="malformed" format="default"/>).</t>
            <t>The following pseudo-header fields are defined for requests:</t>
            <dl newline="false" spacing="normal">
              <dt>":method":</dt>
              <dd>
  Contains the HTTP method (Section 7 of <xref target="SEMANTICS" format="default"/>)</dd>
              <dt>":scheme":</dt>
              <dd>
  Contains the scheme portion of the target URI (Section 3.1 of <xref target="RFC3986" format="default"/>)</dd>
              <dt/>
              <dd>":scheme" is not restricted to "http" and "https" schemed URIs.  A proxy or
gateway can translate requests for non-HTTP schemes, enabling the use of
HTTP to interact with non-HTTP services.</dd>
              <dt>":authority":</dt>
              <dd>
  Contains the authority portion of the target URI (Section 3.2 of
<xref target="RFC3986" format="default"/>). The authority MUST NOT include the deprecated "userinfo"
subcomponent for "http" or "https" schemed URIs.</dd>
              <dt/>
              <dd>To ensure that the HTTP/1.1 request line can be reproduced accurately, this
pseudo-header field MUST be omitted when translating from an HTTP/1.1
request that has a request target in origin or asterisk form; see Section
3.2 of <xref target="HTTP11" format="default"/>.  Clients that generate HTTP/3 requests directly SHOULD
use the ":authority" pseudo-header field instead of the Host field. An
intermediary that converts an HTTP/3 request to HTTP/1.1 MUST create a Host
field if one is not present in a request by copying the value of the
":authority" pseudo-header field.</dd>
              <dt>":path":</dt>
              <dd>
  Contains the path and query parts of the target URI (the "path-absolute"
production and optionally a '?' character followed by the "query"
production; see Sections 3.3 and 3.4 of <xref target="URI" format="default"/>.  A request in
asterisk form includes the value '*' for the ":path" pseudo-header field.</dd>
              <dt/>
              <dd>This pseudo-header field MUST NOT be empty for "http" or "https" URIs;
"http" or "https" URIs that do not contain a path component MUST include a
value of '/'.  The exception to this rule is an OPTIONS request for an
"http" or "https" URI that does not include a path component; these MUST
include a ":path" pseudo-header field with a value of '*'; see Section 3.2.4
of <xref target="HTTP11" format="default"/>.</dd>
            </dl>
            <t>All HTTP/3 requests MUST include exactly one value for the ":method", ":scheme",
and ":path" pseudo-header fields, unless it is a CONNECT request; see
<xref target="connect" format="default"/>.</t>
            <t>If the ":scheme" pseudo-header field identifies a scheme which has a mandatory
authority component (including "http" and "https"), the request MUST contain
either an ":authority" pseudo-header field or a "Host" header field.  If these
fields are present, they MUST NOT be empty.  If both fields are present, they
MUST contain the same value.  If the scheme does not have a mandatory authority
component and none is provided in the request target, the request MUST NOT
contain the ":authority" pseudo-header and "Host" header fields.</t>
            <t>An HTTP request that omits mandatory pseudo-header fields or contains invalid
values for those pseudo-header fields is malformed (<xref target="malformed" format="default"/>).</t>
            <t>HTTP/3 does not define a way to carry the version identifier that is included in
the HTTP/1.1 request line.</t>
            <t>For responses, a single ":status" pseudo-header field is defined that carries
the HTTP status code; see Section 9 of <xref target="SEMANTICS" format="default"/>.  This pseudo-header
field MUST be included in all responses; otherwise, the response is malformed
(<xref target="malformed" format="default"/>).</t>
            <t>HTTP/3 does not define a way to carry the version or reason phrase that is
included in an HTTP/1.1 status line.</t>
          </section>
          <section anchor="field-compression" numbered="true" toc="default">
            <name>Field Compression</name>
            <t>HTTP/3 uses QPACK field compression as described in <xref target="QPACK" format="default"/>, a variation of
HPACK which allows the flexibility to avoid compression-induced head-of-line
blocking.  See that document for additional details.</t>
            <t>To allow for better compression efficiency, the "Cookie" field <xref target="RFC6265" format="default"/> MAY
be split into separate field lines, each with one or more cookie-pairs, before
compression. If a decompressed field section contains multiple cookie field
lines, these MUST be concatenated into a single octet string using the two-octet
delimiter of 0x3B, 0x20 (the ASCII string "; ") before being passed into a
context other than HTTP/2 or HTTP/3, such as an HTTP/1.1 connection, or a
generic HTTP server application.</t>
          </section>
          <section anchor="header-size-constraints" numbered="true" toc="default">
            <name>Header Size Constraints</name>
            <t>An HTTP/3 implementation MAY impose a limit on the maximum size of the message
header it will accept on an individual HTTP message.  A server that receives a
larger header section than it is willing to handle can send an HTTP 431 (Request
Header Fields Too Large) status code (<xref target="RFC6585" format="default"/>).  A client can discard
responses that it cannot process.  The size of a field list is calculated based
on the uncompressed size of fields, including the length of the name and value
in bytes plus an overhead of 32 bytes for each field.</t>
            <t>If an implementation wishes to advise its peer of this limit, it can be conveyed
as a number of bytes in the SETTINGS_MAX_FIELD_SECTION_SIZE parameter. An
implementation which has received this parameter SHOULD NOT send an HTTP message
header which exceeds the indicated size, as the peer will likely refuse to
process it.  However, because this limit is applied at each hop, messages below
this limit are not guaranteed to be accepted.</t>
          </section>
        </section>
        <section anchor="request-cancellation" numbered="true" toc="default">
          <name>Request Cancellation and Rejection</name>
          <t>Clients can cancel requests by resetting and aborting the request stream with an
error code of H3_REQUEST_CANCELLED (<xref target="http-error-codes" format="default"/>).  When the client
aborts reading a response, it indicates that this response is no longer of
interest. Implementations SHOULD cancel requests by abruptly terminating any
directions of a stream that are still open.</t>
          <t>When the server rejects a request without performing any application processing,
it SHOULD abort its response stream with the error code H3_REQUEST_REJECTED.
In this context, "processed" means that some data from the stream was passed to
some higher layer of software that might have taken some action as a result. The
client can treat requests rejected by the server as though they had never been
sent at all, thereby allowing them to be retried later on a new connection.
Servers MUST NOT use the H3_REQUEST_REJECTED error code for requests which
were partially or fully processed.  When a server abandons a response after
partial processing, it SHOULD abort its response stream with the error code
H3_REQUEST_CANCELLED.</t>
          <t>When a client resets a request with the error code H3_REQUEST_CANCELLED, a
server MAY abruptly terminate the response using the error code
H3_REQUEST_REJECTED if no processing was performed.  Clients MUST NOT use the
H3_REQUEST_REJECTED error code, except when a server has requested closure of
the request stream with this error code.</t>
          <t>If a stream is cancelled after receiving a complete response, the client MAY
ignore the cancellation and use the response.  However, if a stream is cancelled
after receiving a partial response, the response SHOULD NOT be used.
Automatically retrying such requests is not possible, unless this is otherwise
permitted (e.g., idempotent actions like GET, PUT, or DELETE).</t>
        </section>
        <section anchor="malformed" numbered="true" toc="default">
          <name>Malformed Requests and Responses</name>
          <t>A malformed request or response is one that is an otherwise valid sequence of
frames but is invalid due to:</t>
          <ul spacing="normal">
            <li>the presence of prohibited fields or pseudo-header fields,</li>
            <li>the absence of mandatory pseudo-header fields,</li>
            <li>invalid values for pseudo-header fields,</li>
            <li>pseudo-header fields after fields,</li>
            <li>an invalid sequence of HTTP messages,</li>
            <li>the inclusion of uppercase field names, or</li>
            <li>the inclusion of invalid characters in field names or values</li>
          </ul>
          <t>A request or response that includes a payload body can include a
Content-Length header field.  A request or response is also malformed if the
value of a content-length header field does not equal the sum of the DATA frame
payload lengths that form the body.  A response that is defined to have no
payload, as described in Section 6.3.3 of <xref target="SEMANTICS" format="default"/> can have a non-zero
content-length field, even though no content is included in DATA frames.</t>
          <t>Intermediaries that process HTTP requests or responses (i.e., any intermediary
not acting as a tunnel) MUST NOT forward a malformed request or response.
Malformed requests or responses that are detected MUST be treated as a stream
error (<xref target="errors" format="default"/>) of type H3_GENERAL_PROTOCOL_ERROR.</t>
          <t>For malformed requests, a server MAY send an HTTP response prior to closing or
resetting the stream.  Clients MUST NOT accept a malformed response.  Note that
these requirements are intended to protect against several types of common
attacks against HTTP; they are deliberately strict because being permissive can
expose implementations to these vulnerabilities.</t>
        </section>
      </section>
      <section anchor="connect" numbered="true" toc="default">
        <name>The CONNECT Method</name>
        <t>The CONNECT method requests that the recipient establish a tunnel to the
destination origin server identified by the request-target (Section 3.2 of
<xref target="HTTP11" format="default"/>).  It is primarily used with HTTP proxies to establish a TLS
session with an origin server for the purposes of interacting with "https"
resources.</t>
        <t>In HTTP/1.x, CONNECT is used to convert an entire HTTP connection into a tunnel
to a remote host. In HTTP/2 and HTTP/3, the CONNECT method is used to establish
a tunnel over a single stream.</t>
        <t>A CONNECT request MUST be constructed as follows:</t>
        <ul spacing="normal">
          <li>The ":method" pseudo-header field is set to "CONNECT"</li>
          <li>The ":scheme" and ":path" pseudo-header fields are omitted</li>
          <li>The ":authority" pseudo-header field contains the host and port to connect to
(equivalent to the authority-form of the request-target of CONNECT requests;
see Section 3.2.3 of <xref target="HTTP11" format="default"/>)</li>
        </ul>
        <t>The request stream remains open at the end of the request to carry the data to
be transferred.  A CONNECT request that does not conform to these restrictions
is malformed; see <xref target="malformed" format="default"/>.</t>
        <t>A proxy that supports CONNECT establishes a TCP connection (<xref target="RFC0793" format="default"/>) to the
server identified in the ":authority" pseudo-header field.  Once this connection
is successfully established, the proxy sends a HEADERS frame containing a 2xx
series status code to the client, as defined in Section 9.3 of <xref target="SEMANTICS" format="default"/>.</t>
        <t>All DATA frames on the stream correspond to data sent or received on the TCP
connection. Any DATA frame sent by the client is transmitted by the proxy to the
TCP server; data received from the TCP server is packaged into DATA frames by
the proxy. Note that the size and number of TCP segments is not guaranteed to
map predictably to the size and number of HTTP DATA or QUIC STREAM frames.</t>
        <t>Once the CONNECT method has completed, only DATA frames are permitted
to be sent on the stream.  Extension frames MAY be used if specifically
permitted by the definition of the extension.  Receipt of any other frame type
MUST be treated as a connection error of type H3_FRAME_UNEXPECTED.</t>
        <t>The TCP connection can be closed by either peer. When the client ends the
request stream (that is, the receive stream at the proxy enters the "Data Recvd"
state), the proxy will set the FIN bit on its connection to the TCP server. When
the proxy receives a packet with the FIN bit set, it will terminate the send
stream that it sends to the client. TCP connections which remain half-closed in
a single direction are not invalid, but are often handled poorly by servers, so
clients SHOULD NOT close a stream for sending while they still expect to receive
data from the target of the CONNECT.</t>
        <t>A TCP connection error is signaled by abruptly terminating the stream. A proxy
treats any error in the TCP connection, which includes receiving a TCP segment
with the RST bit set, as a stream error of type H3_CONNECT_ERROR
(<xref target="http-error-codes" format="default"/>).  Correspondingly, if a proxy detects an error with the
stream or the QUIC connection, it MUST close the TCP connection.  If the
underlying TCP implementation permits it, the proxy SHOULD send a TCP segment
with the RST bit set.</t>
      </section>
      <section anchor="http-upgrade" numbered="true" toc="default">
        <name>HTTP Upgrade</name>
        <t>HTTP/3 does not support the HTTP Upgrade mechanism (Section 9.9 of <xref target="HTTP11" format="default"/>)
or 101 (Switching Protocols) informational status code (Section 9.2.2 of
<xref target="SEMANTICS" format="default"/>).</t>
      </section>
      <section anchor="server-push" numbered="true" toc="default">
        <name>Server Push</name>
        <t>Server push is an interaction mode which permits a server to push a
request-response exchange to a client in anticipation of the client making the
indicated request.  This trades off network usage against a potential latency
gain.  HTTP/3 server push is similar to what is described in HTTP/2 <xref target="HTTP2" format="default"/>,
but uses different mechanisms.</t>
        <t>Each server push is identified by a unique Push ID. This Push ID is used in one
or more PUSH_PROMISE frames (see <xref target="frame-push-promise" format="default"/>) that carry the request
fields, then included with the push stream which ultimately fulfills those
promises. When the same Push ID is promised on multiple request streams, the
decompressed request field sections MUST contain the same fields in the
same order, and both the name and the value in each field MUST be exact
matches.</t>
        <t>Server push is only enabled on a connection when a client sends a MAX_PUSH_ID
frame; see <xref target="frame-max-push-id" format="default"/>. A server cannot use server push until it
receives a MAX_PUSH_ID frame. A client sends additional MAX_PUSH_ID frames to
control the number of pushes that a server can promise. A server SHOULD use Push
IDs sequentially, starting at 0. A client MUST treat receipt of a push stream
with a Push ID that is greater than the maximum Push ID as a connection error of
type H3_ID_ERROR.</t>
        <t>The header section of the request message is carried by a PUSH_PROMISE frame
(see <xref target="frame-push-promise" format="default"/>) on the request stream which generated the push.
This allows the server push to be associated with a client request.</t>
        <t>Not all requests can be pushed.  A server MAY push requests which have the
following properties:</t>
        <ul spacing="normal">
          <li>cacheable; see Section 7.2.3 of <xref target="SEMANTICS" format="default"/></li>
          <li>safe; see Section 7.2.1 of <xref target="SEMANTICS" format="default"/></li>
          <li>does not include a request body or trailer section</li>
        </ul>
        <t>The server MUST include a value in the ":authority" pseudo-header field for
which the server is authoritative; see <xref target="connection-reuse" format="default"/>.</t>
        <t>Clients SHOULD send a CANCEL_PUSH frame upon receipt of a PUSH_PROMISE frame
carrying a request which is not cacheable, is not known to be safe, that
indicates the presence of a request body, or for which it does not consider the
server authoritative.</t>
        <t>Each pushed response is associated with one or more client requests.  The push
is associated with the request stream on which the PUSH_PROMISE frame was
received.  The same server push can be associated with additional client
requests using a PUSH_PROMISE frame with the same Push ID on multiple request
streams.  These associations do not affect the operation of the protocol, but
MAY be considered by user agents when deciding how to use pushed resources.</t>
        <t>Ordering of a PUSH_PROMISE in relation to certain parts of the response is
important. The server SHOULD send PUSH_PROMISE frames prior to sending HEADERS
or DATA frames that reference the promised responses.  This reduces the chance
that a client requests a resource that will be pushed by the server.</t>
        <t>When a server later fulfills a promise, the server push response is conveyed on
a push stream; see <xref target="push-streams" format="default"/>. The push stream identifies the Push ID of
the promise that it fulfills, then contains a response to the promised request
using the same format described for responses in <xref target="request-response" format="default"/>.</t>
        <t>Due to reordering, push stream data can arrive before the corresponding
PUSH_PROMISE frame.  When a client receives a new push stream with an
as-yet-unknown Push ID, both the associated client request and the pushed
request header fields are unknown.  The client can buffer the stream data in
expectation of the matching PUSH_PROMISE. The client can use stream flow control
(see section 4.1 of <xref target="QUIC-TRANSPORT" format="default"/>) to limit the amount of data a server may
commit to the pushed stream.</t>
        <t>If a promised server push is not needed by the client, the client SHOULD send a
CANCEL_PUSH frame. If the push stream is already open or opens after sending the
CANCEL_PUSH frame, the client can abort reading the stream with an error code of
H3_REQUEST_CANCELLED. This asks the server not to transfer additional data and
indicates that it will be discarded upon receipt.</t>
        <t>Pushed responses that are cacheable (see Section 3 of
<xref target="CACHING" format="default"/>) can be stored by the client, if it
implements an HTTP cache.  Pushed responses are considered successfully
validated on the origin server (e.g., if the "no-cache" cache response directive
is present (Section 5.2.2.3 of <xref target="CACHING" format="default"/>)) at the time the pushed response is
received.</t>
        <t>Pushed responses that are not cacheable MUST NOT be stored by any HTTP cache.
They MAY be made available to the application separately.</t>
      </section>
    </section>
    <section anchor="connection-closure" numbered="true" toc="default">
      <name>Connection Closure</name>
      <t>Once established, an HTTP/3 connection can be used for many requests and
responses over time until the connection is closed.  Connection closure can
happen in any of several different ways.</t>
      <section anchor="idle-connections" numbered="true" toc="default">
        <name>Idle Connections</name>
        <t>Each QUIC endpoint declares an idle timeout during the handshake.  If the
connection remains idle (no packets received) for longer than this duration, the
peer will assume that the connection has been closed.  HTTP/3 implementations
will need to open a new connection for new requests if the existing connection
has been idle for longer than the server's advertised idle timeout, and SHOULD
do so if approaching the idle timeout.</t>
        <t>HTTP clients are expected to request that the transport keep connections open
while there are responses outstanding for requests or server pushes, as
described in Section 10.2.2 of <xref target="QUIC-TRANSPORT" format="default"/>. If the client is not
expecting a response from the server, allowing an idle connection to time out is
preferred over expending effort maintaining a connection that might not be
needed.  A gateway MAY maintain connections in anticipation of need rather than
incur the latency cost of connection establishment to servers. Servers SHOULD
NOT actively keep connections open.</t>
      </section>
      <section anchor="connection-shutdown" numbered="true" toc="default">
        <name>Connection Shutdown</name>
        <t>Even when a connection is not idle, either endpoint can decide to stop using the
connection and initiate a graceful connection close.  Endpoints initiate the
graceful shutdown of a connection by sending a GOAWAY frame (<xref target="frame-goaway" format="default"/>).
The GOAWAY frame contains an identifier that indicates to the receiver the range
of requests or pushes that were or might be processed in this connection.  The
server sends a client-initiated bidirectional Stream ID; the client sends a Push
ID.  Requests or pushes with the indicated identifier or greater are rejected by
the sender of the GOAWAY.  This identifier MAY be zero if no requests or pushes
were processed.</t>
        <t>The information in the GOAWAY frame enables a client and server to agree on
which requests or pushes were accepted prior to the connection shutdown. Upon
sending a GOAWAY frame, the endpoint SHOULD explicitly cancel (see
<xref target="request-cancellation" format="default"/> and <xref target="frame-cancel-push" format="default"/>) any requests or pushes that
have identifiers greater than or equal to that indicated, in order to clean up
transport state for the affected streams. The endpoint SHOULD continue to do so
as more requests or pushes arrive.</t>
        <t>Endpoints MUST NOT initiate new requests or promise new pushes on the connection
after receipt of a GOAWAY frame from the peer.  Clients MAY establish a new
connection to send additional requests.</t>
        <t>Some requests or pushes might already be in transit:</t>
        <ul spacing="normal">
          <li>
            <t>Upon receipt of a GOAWAY frame, if the client has already sent requests with
a Stream ID greater than or equal to the identifier received in a GOAWAY
frame, those requests will not be processed.  Clients can safely retry
unprocessed requests on a different connection.  </t>
            <t>
Requests on Stream IDs less than the Stream ID in a GOAWAY frame from the
server might have been processed; their status cannot be known until a
response is received, the stream is reset individually, another GOAWAY is
received, or the connection terminates.  </t>
            <t>
Servers MAY reject individual requests on streams below the indicated ID if
these requests were not processed.</t>
          </li>
          <li>If a server receives a GOAWAY frame after having promised pushes with a Push
ID greater than or equal to the identifier received in a GOAWAY frame, those
pushes will not be accepted.</li>
        </ul>
        <t>Servers SHOULD send a GOAWAY frame when the closing of a connection is known
in advance, even if the advance notice is small, so that the remote peer can
know whether a request has been partially processed or not.  For example, if an
HTTP client sends a POST at the same time that a server closes a QUIC
connection, the client cannot know if the server started to process that POST
request if the server does not send a GOAWAY frame to indicate what streams it
might have acted on.</t>
        <t>A client that is unable to retry requests loses all requests that are in flight
when the server closes the connection.  An endpoint MAY send multiple GOAWAY
frames indicating different identifiers, but the identifier in each frame MUST
NOT be greater than the identifier in any previous frame, since clients might
already have retried unprocessed requests on another connection.  Receiving a
GOAWAY containing a larger identifier than previously received MUST be treated
as a connection error of type H3_ID_ERROR.</t>
        <t>An endpoint that is attempting to gracefully shut down a connection can send a
GOAWAY frame with a value set to the maximum possible value (2^62-4 for servers,
2^62-1 for clients). This ensures that the peer stops creating new requests or
pushes. After allowing time for any in-flight requests or pushes to arrive, the
endpoint can send another GOAWAY frame indicating which requests or pushes it
might accept before the end of the connection. This ensures that a connection
can be cleanly shut down without losing requests.</t>
        <t>A client has more flexibility in the value it chooses for the Push ID in a
GOAWAY that it sends.  A value of 2^62 - 1 indicates that the server can
continue fulfilling pushes which have already been promised, and the client can
continue granting push credit as needed; see <xref target="frame-max-push-id" format="default"/>. A smaller
value indicates the client will reject pushes with Push IDs greater than or
equal to this value.  Like the server, the client MAY send subsequent GOAWAY
frames so long as the specified Push ID is strictly smaller than all previously
sent values.</t>
        <t>Even when a GOAWAY indicates that a given request or push will not be processed
or accepted upon receipt, the underlying transport resources still exist.  The
endpoint that initiated these requests can cancel them to clean up transport
state.</t>
        <t>Once all accepted requests and pushes have been processed, the endpoint can
permit the connection to become idle, or MAY initiate an immediate closure of
the connection.  An endpoint that completes a graceful shutdown SHOULD use the
H3_NO_ERROR code when closing the connection.</t>
        <t>If a client has consumed all available bidirectional stream IDs with requests,
the server need not send a GOAWAY frame, since the client is unable to make
further requests.</t>
      </section>
      <section anchor="immediate-application-closure" numbered="true" toc="default">
        <name>Immediate Application Closure</name>
        <t>An HTTP/3 implementation can immediately close the QUIC connection at any time.
This results in sending a QUIC CONNECTION_CLOSE frame to the peer indicating
that the application layer has terminated the connection.  The application error
code in this frame indicates to the peer why the connection is being closed.
See <xref target="errors" format="default"/> for error codes which can be used when closing a connection in
HTTP/3.</t>
        <t>Before closing the connection, a GOAWAY frame MAY be sent to allow the client to
retry some requests.  Including the GOAWAY frame in the same packet as the QUIC
CONNECTION_CLOSE frame improves the chances of the frame being received by
clients.</t>
      </section>
      <section anchor="transport-closure" numbered="true" toc="default">
        <name>Transport Closure</name>
        <t>For various reasons, the QUIC transport could indicate to the application layer
that the connection has terminated.  This might be due to an explicit closure
by the peer, a transport-level error, or a change in network topology which
interrupts connectivity.</t>
        <t>If a connection terminates without a GOAWAY frame, clients MUST assume that any
request which was sent, whether in whole or in part, might have been processed.</t>
      </section>
    </section>
    <section anchor="stream-mapping" numbered="true" toc="default">
      <name>Stream Mapping and Usage</name>
      <t>A QUIC stream provides reliable in-order delivery of bytes, but makes no
guarantees about order of delivery with regard to bytes on other streams. On the
wire, data is framed into QUIC STREAM frames, but this framing is invisible to
the HTTP framing layer. The transport layer buffers and orders received QUIC
STREAM frames, exposing the data contained within as a reliable byte stream to
the application. Although QUIC permits out-of-order delivery within a stream,
HTTP/3 does not make use of this feature.</t>
      <t>QUIC streams can be either unidirectional, carrying data only from initiator to
receiver, or bidirectional.  Streams can be initiated by either the client or
the server.  For more detail on QUIC streams, see Section 2 of
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
      <t>When HTTP fields and data are sent over QUIC, the QUIC layer handles most of
the stream management.  HTTP does not need to do any separate multiplexing when
using QUIC - data sent over a QUIC stream always maps to a particular HTTP
transaction or connection context.</t>
      <section anchor="bidirectional-streams" numbered="true" toc="default">
        <name>Bidirectional Streams</name>
        <t>All client-initiated bidirectional streams are used for HTTP requests and
responses.  A bidirectional stream ensures that the response can be readily
correlated with the request. This means that the client's first request occurs
on QUIC stream 0, with subsequent requests on stream 4, 8, and so on. In order
to permit these streams to open, an HTTP/3 server SHOULD configure non-zero
minimum values for the number of permitted streams and the initial stream flow
control window.  So as to not unnecessarily limit parallelism, at least 100
requests SHOULD be permitted at a time.</t>
        <t>HTTP/3 does not use server-initiated bidirectional streams, though an extension
could define a use for these streams.  Clients MUST treat receipt of a
server-initiated bidirectional stream as a connection error of type
H3_STREAM_CREATION_ERROR unless such an extension has been negotiated.</t>
      </section>
      <section anchor="unidirectional-streams" numbered="true" toc="default">
        <name>Unidirectional Streams</name>
        <t>Unidirectional streams, in either direction, are used for a range of purposes.
The purpose is indicated by a stream type, which is sent as a variable-length
integer at the start of the stream. The format and structure of data that
follows this integer is determined by the stream type.</t>
        <figure anchor="fig-stream-header">
          <name>Unidirectional Stream Header</name>
          <artwork type="drawing" name="" align="left" alt=""><![CDATA[
Unidirectional Stream Header {
  Stream Type (i),
}
]]></artwork>
        </figure>
        <t>Some stream types are reserved (<xref target="stream-grease" format="default"/>).  Two stream types are
defined in this document: control streams (<xref target="control-streams" format="default"/>) and push streams
(<xref target="push-streams" format="default"/>).  <xref target="QPACK" format="default"/> defines two additional stream types.  Other stream
types can be defined by extensions to HTTP/3; see <xref target="extensions" format="default"/> for more
details.</t>
        <t>The performance of HTTP/3 connections in the early phase of their lifetime is
sensitive to the creation and exchange of data on unidirectional streams.
Endpoints that excessively restrict the number of streams or the flow control
window of these streams will increase the chance that the remote peer reaches
the limit early and becomes blocked. In particular, implementations should
consider that remote peers may wish to exercise reserved stream behavior
(<xref target="stream-grease" format="default"/>) with some of the unidirectional streams they are permitted
to use. To avoid blocking, the transport parameters sent by both clients and
servers MUST allow the peer to create at least one unidirectional stream for the
HTTP control stream plus the number of unidirectional streams required by
mandatory extensions (three being the minimum number required for the base
HTTP/3 protocol and QPACK), and SHOULD provide at least 1,024 bytes of flow
control credit to each stream.</t>
        <t>Note that an endpoint is not required to grant additional credits to create more
unidirectional streams if its peer consumes all the initial credits before
creating the critical unidirectional streams. Endpoints SHOULD create the HTTP
control stream as well as the unidirectional streams required by mandatory
extensions (such as the QPACK encoder and decoder streams) first, and then
create additional streams as allowed by their peer.</t>
        <t>If the stream header indicates a stream type which is not supported by the
recipient, the remainder of the stream cannot be consumed as the semantics are
unknown. Recipients of unknown stream types MAY abort reading of the stream with
an error code of H3_STREAM_CREATION_ERROR, but MUST NOT consider such streams
to be a connection error of any kind.</t>
        <t>Implementations MAY send stream types before knowing whether the peer supports
them.  However, stream types which could modify the state or semantics of
existing protocol components, including QPACK or other extensions, MUST NOT be
sent until the peer is known to support them.</t>
        <t>A sender can close or reset a unidirectional stream unless otherwise specified.
A receiver MUST tolerate unidirectional streams being closed or reset prior to
the reception of the unidirectional stream header.</t>
        <section anchor="control-streams" numbered="true" toc="default">
          <name>Control Streams</name>
          <t>A control stream is indicated by a stream type of 0x00.  Data on this stream
consists of HTTP/3 frames, as defined in <xref target="frames" format="default"/>.</t>
          <t>Each side MUST initiate a single control stream at the beginning of the
connection and send its SETTINGS frame as the first frame on this stream.  If
the first frame of the control stream is any other frame type, this MUST be
treated as a connection error of type H3_MISSING_SETTINGS. Only one control
stream per peer is permitted; receipt of a second stream which claims to be a
control stream MUST be treated as a connection error of type
H3_STREAM_CREATION_ERROR.  The sender MUST NOT close the control stream, and
the receiver MUST NOT request that the sender close the control stream.  If
either control stream is closed at any point, this MUST be treated as a
connection error of type H3_CLOSED_CRITICAL_STREAM.</t>
          <t>A pair of unidirectional streams is used rather than a single bidirectional
stream.  This allows either peer to send data as soon as it is able.  Depending
on whether 0-RTT is enabled on the connection, either client or server might be
able to send stream data first after the cryptographic handshake completes.</t>
        </section>
        <section anchor="push-streams" numbered="true" toc="default">
          <name>Push Streams</name>
          <t>Server push is an optional feature introduced in HTTP/2 that allows a server to
initiate a response before a request has been made.  See <xref target="server-push" format="default"/> for
more details.</t>
          <t>A push stream is indicated by a stream type of 0x01, followed by the Push ID
of the promise that it fulfills, encoded as a variable-length integer. The
remaining data on this stream consists of HTTP/3 frames, as defined in
<xref target="frames" format="default"/>, and fulfills a promised server push by zero or more interim HTTP
responses followed by a single final HTTP response, as defined in
<xref target="request-response" format="default"/>.  Server push and Push IDs are described in
<xref target="server-push" format="default"/>.</t>
          <t>Only servers can push; if a server receives a client-initiated push stream, this
MUST be treated as a connection error of type H3_STREAM_CREATION_ERROR.</t>
          <figure anchor="fig-push-stream-header">
            <name>Push Stream Header</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
Push Stream Header {
  Stream Type (i) = 0x01,
  Push ID (i),
}
]]></artwork>
          </figure>
          <t>Each Push ID MUST only be used once in a push stream header. If a push stream
header includes a Push ID that was used in another push stream header, the
client MUST treat this as a connection error of type H3_ID_ERROR.</t>
        </section>
        <section anchor="stream-grease" numbered="true" toc="default">
          <name>Reserved Stream Types</name>
          <t>Stream types of the format <tt>0x1f * N + 0x21</tt> for non-negative integer values of
N are reserved to exercise the requirement that unknown types be ignored. These
streams have no semantics, and can be sent when application-layer padding is
desired. They MAY also be sent on connections where no data is currently being
transferred. Endpoints MUST NOT consider these streams to have any meaning upon
receipt.</t>
          <t>The payload and length of the stream are selected in any manner the
implementation chooses.  Implementations MAY terminate these streams cleanly, or
MAY abruptly terminate them.  When terminating abruptly, the error code
H3_NO_ERROR or a reserved error code (<xref target="http-error-codes" format="default"/>) SHOULD be used.</t>
        </section>
      </section>
    </section>
    <section anchor="http-framing-layer" numbered="true" toc="default">
      <name>HTTP Framing Layer</name>
      <t>HTTP frames are carried on QUIC streams, as described in <xref target="stream-mapping" format="default"/>.
HTTP/3 defines three stream types: control stream, request stream, and push
stream. This section describes HTTP/3 frame formats and the streams types on
which they are permitted; see <xref target="stream-frame-mapping" format="default"/> for an overview.  A
comparison between HTTP/2 and HTTP/3 frames is provided in <xref target="h2-frames" format="default"/>.</t>
      <table anchor="stream-frame-mapping" align="center">
        <name>HTTP/3 Frames and Stream Type Overview</name>
        <thead>
          <tr>
            <th align="left">Frame</th>
            <th align="left">Control Stream</th>
            <th align="left">Request Stream</th>
            <th align="left">Push Stream</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">DATA</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-data" format="default"/></td>
          </tr>
          <tr>
            <td align="left">HEADERS</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-headers" format="default"/></td>
          </tr>
          <tr>
            <td align="left">CANCEL_PUSH</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-cancel-push" format="default"/></td>
          </tr>
          <tr>
            <td align="left">SETTINGS</td>
            <td align="left">Yes (1)</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-settings" format="default"/></td>
          </tr>
          <tr>
            <td align="left">PUSH_PROMISE</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-push-promise" format="default"/></td>
          </tr>
          <tr>
            <td align="left">GOAWAY</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-goaway" format="default"/></td>
          </tr>
          <tr>
            <td align="left">MAX_PUSH_ID</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="frame-max-push-id" format="default"/></td>
          </tr>
          <tr>
            <td align="left">Reserved</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="frame-reserved" format="default"/></td>
          </tr>
        </tbody>
      </table>
      <t>Certain frames can only occur as the first frame of a particular stream type;
these are indicated in <xref target="stream-frame-mapping" format="default"/> with a (1).  Specific guidance
is provided in the relevant section.</t>
      <t>Note that, unlike QUIC frames, HTTP/3 frames can span multiple packets.</t>
      <section anchor="frame-layout" numbered="true" toc="default">
        <name>Frame Layout</name>
        <t>All frames have the following format:</t>
        <figure anchor="fig-frame">
          <name>HTTP/3 Frame Format</name>
          <artwork type="drawing" name="" align="left" alt=""><![CDATA[
HTTP/3 Frame Format {
  Type (i),
  Length (i),
  Frame Payload (..),
}
]]></artwork>
        </figure>
        <t>A frame includes the following fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Type:</dt>
          <dd>
  A variable-length integer that identifies the frame type.</dd>
          <dt>Length:</dt>
          <dd>
  A variable-length integer that describes the length in bytes of
the Frame Payload.</dd>
          <dt>Frame Payload:</dt>
          <dd>
  A payload, the semantics of which are determined by the Type field.</dd>
        </dl>
        <t>Each frame's payload MUST contain exactly the fields identified in its
description.  A frame payload that contains additional bytes after the
identified fields or a frame payload that terminates before the end of the
identified fields MUST be treated as a connection error of type
H3_FRAME_ERROR.</t>
        <t>When a stream terminates cleanly, if the last frame on the stream was truncated,
this MUST be treated as a connection error (<xref target="errors" format="default"/>) of type
H3_FRAME_ERROR. Streams which terminate abruptly may be reset at any point in
a frame.</t>
      </section>
      <section anchor="frames" numbered="true" toc="default">
        <name>Frame Definitions</name>
        <section anchor="frame-data" numbered="true" toc="default">
          <name>DATA</name>
          <t>DATA frames (type=0x0) convey arbitrary, variable-length sequences of bytes
associated with an HTTP request or response payload.</t>
          <t>DATA frames MUST be associated with an HTTP request or response.  If a DATA
frame is received on a control stream, the recipient MUST respond with a
connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <figure anchor="fig-data">
            <name>DATA Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
DATA Frame {
  Type (i) = 0x0,
  Length (i),
  Data (..),
}
]]></artwork>
          </figure>
        </section>
        <section anchor="frame-headers" numbered="true" toc="default">
          <name>HEADERS</name>
          <t>The HEADERS frame (type=0x1) is used to carry an HTTP field section, encoded
using QPACK. See <xref target="QPACK" format="default"/> for more details.</t>
          <figure anchor="fig-headers">
            <name>HEADERS Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
HEADERS Frame {
  Type (i) = 0x1,
  Length (i),
  Encoded Field Section (..),
}
]]></artwork>
          </figure>
          <t>HEADERS frames can only be sent on request / push streams.  If a HEADERS frame
is received on a control stream, the recipient MUST respond with a connection
error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
        </section>
        <section anchor="frame-cancel-push" numbered="true" toc="default">
          <name>CANCEL_PUSH</name>
          <t>The CANCEL_PUSH frame (type=0x3) is used to request cancellation of a server
push prior to the push stream being received.  The CANCEL_PUSH frame identifies
a server push by Push ID (see <xref target="frame-push-promise" format="default"/>), encoded as a
variable-length integer.</t>
          <t>When a client sends CANCEL_PUSH, it is indicating that it does not wish to
receive the promised resource.  The server SHOULD abort sending the resource,
but the mechanism to do so depends on the state of the corresponding push
stream.  If the server has not yet created a push stream, it does not create
one.  If the push stream is open, the server SHOULD abruptly terminate that
stream.  If the push stream has already ended, the server MAY still abruptly
terminate the stream or MAY take no action.</t>
          <t>When a server sends CANCEL_PUSH, it is indicating that it will not be fulfilling
a promise.  The client cannot expect the corresponding promise to be fulfilled,
unless it has already received and processed the promised response. A server
SHOULD send a CANCEL_PUSH even if it has opened the corresponding stream.</t>
          <t>Sending CANCEL_PUSH has no direct effect on the state of existing push streams.
A client SHOULD NOT send a CANCEL_PUSH when it has already received a
corresponding push stream.  A push stream could arrive after a client has sent
CANCEL_PUSH, because a server might not have processed the CANCEL_PUSH. The
client SHOULD abort reading the stream with an error code of
H3_REQUEST_CANCELLED.</t>
          <t>A CANCEL_PUSH frame is sent on the control stream.  Receiving a CANCEL_PUSH
frame on a stream other than the control stream MUST be treated as a connection
error of type H3_FRAME_UNEXPECTED.</t>
          <figure anchor="fig-cancel-push">
            <name>CANCEL_PUSH Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
CANCEL_PUSH Frame {
  Type (i) = 0x3,
  Length (i),
  Push ID (..),
}
]]></artwork>
          </figure>
          <t>The CANCEL_PUSH frame carries a Push ID encoded as a variable-length integer.
The Push ID identifies the server push that is being cancelled; see
<xref target="frame-push-promise" format="default"/>.  If a CANCEL_PUSH frame is received which references a
Push ID greater than currently allowed on the connection, this MUST be treated
as a connection error of type H3_ID_ERROR.</t>
          <t>If the client receives a CANCEL_PUSH frame, that frame might identify a Push ID
that has not yet been mentioned by a PUSH_PROMISE frame due to reordering.  If a
server receives a CANCEL_PUSH frame for a Push ID that has not yet been
mentioned by a PUSH_PROMISE frame, this MUST be treated as a connection error of
type H3_ID_ERROR.</t>
        </section>
        <section anchor="frame-settings" numbered="true" toc="default">
          <name>SETTINGS</name>
          <t>The SETTINGS frame (type=0x4) conveys configuration parameters that affect how
endpoints communicate, such as preferences and constraints on peer behavior.
Individually, a SETTINGS parameter can also be referred to as a "setting"; the
identifier and value of each setting parameter can be referred to as a "setting
identifier" and a "setting value".</t>
          <t>SETTINGS frames always apply to a connection, never a single stream.  A SETTINGS
frame MUST be sent as the first frame of each control stream (see
<xref target="control-streams" format="default"/>) by each peer, and MUST NOT be sent subsequently. If
an endpoint receives a second SETTINGS frame on the control stream, the endpoint
MUST respond with a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>SETTINGS frames MUST NOT be sent on any stream other than the control stream.
If an endpoint receives a SETTINGS frame on a different stream, the endpoint
MUST respond with a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>SETTINGS parameters are not negotiated; they describe characteristics of the
sending peer, which can be used by the receiving peer. However, a negotiation
can be implied by the use of SETTINGS - each peer uses SETTINGS to advertise a
set of supported values. The definition of the setting would describe how each
peer combines the two sets to conclude which choice will be used.  SETTINGS does
not provide a mechanism to identify when the choice takes effect.</t>
          <t>Different values for the same parameter can be advertised by each peer. For
example, a client might be willing to consume a very large response field
section, while servers are more cautious about request size.</t>
          <t>The same setting identifier MUST NOT occur more than once in the SETTINGS frame.
A receiver MAY treat the presence of duplicate setting identifiers as a
connection error of type H3_SETTINGS_ERROR.</t>
          <t>The payload of a SETTINGS frame consists of zero or more parameters.  Each
parameter consists of a setting identifier and a value, both encoded as QUIC
variable-length integers.</t>
          <figure anchor="fig-ext-settings">
            <name>SETTINGS Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
Setting {
  Identifier (i),
  Value (i),
}

SETTINGS Frame {
  Type (i) = 0x4,
  Length (i),
  Setting (..) ...,
}
]]></artwork>
          </figure>
          <t>An implementation MUST ignore the contents for any SETTINGS identifier it does
not understand.</t>
          <section anchor="settings-parameters" numbered="true" toc="default">
            <name>Defined SETTINGS Parameters</name>
            <t>The following settings are defined in HTTP/3:</t>
            <dl newline="false" spacing="normal">
              <dt>SETTINGS_MAX_FIELD_SECTION_SIZE (0x6):</dt>
              <dd>
  The default value is unlimited.  See <xref target="header-formatting" format="default"/> for usage.</dd>
            </dl>
            <t>Setting identifiers of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of N are reserved to exercise the requirement that unknown identifiers be
ignored.  Such settings have no defined meaning. Endpoints SHOULD include at
least one such setting in their SETTINGS frame. Endpoints MUST NOT consider such
settings to have any meaning upon receipt.</t>
            <t>Because the setting has no defined meaning, the value of the setting can be any
value the implementation selects.</t>
            <t>Additional settings can be defined by extensions to HTTP/3; see <xref target="extensions" format="default"/>
for more details.</t>
          </section>
          <section anchor="settings-initialization" numbered="true" toc="default">
            <name>Initialization</name>
            <t>An HTTP implementation MUST NOT send frames or requests which would be invalid
based on its current understanding of the peer's settings.</t>
            <t>All settings begin at an initial value.  Each endpoint SHOULD use these initial
values to send messages before the peer's SETTINGS frame has arrived, as packets
carrying the settings can be lost or delayed.  When the SETTINGS frame arrives,
any settings are changed to their new values.</t>
            <t>This removes the need to wait for the SETTINGS frame before sending messages.
Endpoints MUST NOT require any data to be received from the peer prior to
sending the SETTINGS frame; settings MUST be sent as soon as the transport is
ready to send data.</t>
            <t>For servers, the initial value of each client setting is the default value.</t>
            <t>For clients using a 1-RTT QUIC connection, the initial value of each server
setting is the default value.  1-RTT keys will always become available prior to
SETTINGS arriving, even if the server sends SETTINGS immediately. Clients SHOULD
NOT wait indefinitely for SETTINGS to arrive before sending requests, but SHOULD
process received datagrams in order to increase the likelihood of processing
SETTINGS before sending the first request.</t>
            <t>When a 0-RTT QUIC connection is being used, the initial value of each server
setting is the value used in the previous session. Clients SHOULD store the
settings the server provided in the connection where resumption information was
provided, but MAY opt not to store settings in certain cases (e.g., if the
session ticket is received before the SETTINGS frame). A client MUST comply with
stored settings - or default values, if no values are stored - when attempting
0-RTT. Once a server has provided new settings, clients MUST comply with those
values.</t>
            <t>A server can remember the settings that it advertised, or store an
integrity-protected copy of the values in the ticket and recover the information
when accepting 0-RTT data. A server uses the HTTP/3 settings values in
determining whether to accept 0-RTT data.  If the server cannot determine that
the settings remembered by a client are compatible with its current settings, it
MUST NOT accept 0-RTT data.  Remembered settings are compatible if a client
complying with those settings would not violate the server's current settings.</t>
            <t>A server MAY accept 0-RTT and subsequently provide different settings in its
SETTINGS frame. If 0-RTT data is accepted by the server, its SETTINGS frame MUST
NOT reduce any limits or alter any values that might be violated by the client
with its 0-RTT data.  The server MUST include all settings which differ from
their default values.  If a server accepts 0-RTT but then sends settings that
are not compatible with the previously specified settings, this MUST be treated
as a connection error of type H3_SETTINGS_ERROR. If a server accepts 0-RTT but
then sends a SETTINGS frame that omits a setting value that the client
understands (apart from reserved setting identifiers) that was previously
specified to have a non-default value, this MUST be treated as a connection
error of type H3_SETTINGS_ERROR.</t>
          </section>
        </section>
        <section anchor="frame-push-promise" numbered="true" toc="default">
          <name>PUSH_PROMISE</name>
          <t>The PUSH_PROMISE frame (type=0x5) is used to carry a promised request header
field section from server to client on a request stream, as in HTTP/2.</t>
          <figure anchor="fig-push-promise">
            <name>PUSH_PROMISE Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
PUSH_PROMISE Frame {
  Type (i) = 0x5,
  Length (i),
  Push ID (i),
  Encoded Field Section (..),
}
]]></artwork>
          </figure>
          <t>The payload consists of:</t>
          <dl newline="false" spacing="normal">
            <dt>Push ID:</dt>
            <dd>
  A variable-length integer that identifies the server push operation.  A Push
ID is used in push stream headers (<xref target="server-push" format="default"/>), CANCEL_PUSH frames
(<xref target="frame-cancel-push" format="default"/>).</dd>
            <dt>Encoded Field Section:</dt>
            <dd>
  QPACK-encoded request header fields for the promised response.  See <xref target="QPACK" format="default"/>
for more details.</dd>
          </dl>
          <t>A server MUST NOT use a Push ID that is larger than the client has provided in a
MAX_PUSH_ID frame (<xref target="frame-max-push-id" format="default"/>). A client MUST treat receipt of a
PUSH_PROMISE frame that contains a larger Push ID than the client has advertised
as a connection error of H3_ID_ERROR.</t>
          <t>A server MAY use the same Push ID in multiple PUSH_PROMISE frames. If so, the
decompressed request header sets MUST contain the same fields in the same order,
and both the name and the value in each field MUST be exact matches. Clients
SHOULD compare the request header sections for resources promised multiple
times. If a client receives a Push ID that has already been promised and detects
a mismatch, it MUST respond with a connection error of type
H3_GENERAL_PROTOCOL_ERROR. If the decompressed field sections match exactly, the
client SHOULD associate the pushed content with each stream on which a
PUSH_PROMISE was received.</t>
          <t>Allowing duplicate references to the same Push ID is primarily to reduce
duplication caused by concurrent requests.  A server SHOULD avoid reusing a Push
ID over a long period.  Clients are likely to consume server push responses and
not retain them for reuse over time.  Clients that see a PUSH_PROMISE that uses
a Push ID that they have already consumed and discarded are forced to ignore the
PUSH_PROMISE.</t>
          <t>If a PUSH_PROMISE frame is received on the control stream, the client MUST
respond with a connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <t>A client MUST NOT send a PUSH_PROMISE frame.  A server MUST treat the receipt
of a PUSH_PROMISE frame as a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>See <xref target="server-push" format="default"/> for a description of the overall server push mechanism.</t>
        </section>
        <section anchor="frame-goaway" numbered="true" toc="default">
          <name>GOAWAY</name>
          <t>The GOAWAY frame (type=0x7) is used to initiate graceful shutdown of a
connection by either endpoint.  GOAWAY allows an endpoint to stop accepting new
requests or pushes while still finishing processing of previously received
requests and pushes.  This enables administrative actions, like server
maintenance.  GOAWAY by itself does not close a connection.</t>
          <figure anchor="fig-goaway">
            <name>GOAWAY Frame</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
GOAWAY Frame {
  Type (i) = 0x7,
  Length (i),
  Stream ID/Push ID (..),
}
]]></artwork>
          </figure>
          <t>The GOAWAY frame is always sent on the control stream.  In the server to client
direction, it carries a QUIC Stream ID for a client-initiated bidirectional
stream encoded as a variable-length integer.  A client MUST treat receipt of a
GOAWAY frame containing a Stream ID of any other type as a connection error of
type H3_ID_ERROR.</t>
          <t>In the client to server direction, the GOAWAY frame carries a Push ID encoded as
a variable-length integer.</t>
          <t>The GOAWAY frame applies to the connection, not a specific stream.  A client
MUST treat a GOAWAY frame on a stream other than the control stream as a
connection error (<xref target="errors" format="default"/>) of type H3_FRAME_UNEXPECTED.</t>
          <t>See <xref target="connection-shutdown" format="default"/> for more information on the use of the GOAWAY frame.</t>
        </section>
        <section anchor="frame-max-push-id" numbered="true" toc="default">
          <name>MAX_PUSH_ID</name>
          <t>The MAX_PUSH_ID frame (type=0xD) is used by clients to control the number of
server pushes that the server can initiate.  This sets the maximum value for a
Push ID that the server can use in PUSH_PROMISE and CANCEL_PUSH frames.
Consequently, this also limits the number of push streams that the server can
initiate in addition to the limit maintained by the QUIC transport.</t>
          <t>The MAX_PUSH_ID frame is always sent on the control stream.  Receipt of a
MAX_PUSH_ID frame on any other stream MUST be treated as a connection error of
type H3_FRAME_UNEXPECTED.</t>
          <t>A server MUST NOT send a MAX_PUSH_ID frame.  A client MUST treat the receipt of
a MAX_PUSH_ID frame as a connection error of type H3_FRAME_UNEXPECTED.</t>
          <t>The maximum Push ID is unset when a connection is created, meaning that a server
cannot push until it receives a MAX_PUSH_ID frame.  A client that wishes to
manage the number of promised server pushes can increase the maximum Push ID by
sending MAX_PUSH_ID frames as the server fulfills or cancels server pushes.</t>
          <figure anchor="fig-max-push">
            <name>MAX_PUSH_ID Frame Payload</name>
            <artwork type="drawing" name="" align="left" alt=""><![CDATA[
MAX_PUSH_ID Frame {
  Type (i) = 0x1,
  Length (i),
  Push ID (..),
}
]]></artwork>
          </figure>
          <t>The MAX_PUSH_ID frame carries a single variable-length integer that identifies
the maximum value for a Push ID that the server can use; see
<xref target="frame-push-promise" format="default"/>.  A MAX_PUSH_ID frame cannot reduce the maximum Push ID;
receipt of a MAX_PUSH_ID that contains a smaller value than previously received
MUST be treated as a connection error of type H3_ID_ERROR.</t>
        </section>
        <section anchor="frame-reserved" numbered="true" toc="default">
          <name>Reserved Frame Types</name>
          <t>Frame types of the format <tt>0x1f * N + 0x21</tt> for non-negative integer values of N
are reserved to exercise the requirement that unknown types be ignored
(<xref target="extensions" format="default"/>).  These frames have no semantics, and can be sent on any open
stream when application-layer padding is desired. They MAY also be sent on
connections where no data is currently being transferred. Endpoints MUST NOT
consider these frames to have any meaning upon receipt.</t>
          <t>The payload and length of the frames are selected in any manner the
implementation chooses.</t>
          <t>Frame types which were used in HTTP/2 where there is no corresponding HTTP/3
frame have also been reserved (<xref target="iana-frames" format="default"/>).  These frame types MUST NOT be
sent, and receipt MAY be treated as an error of type H3_FRAME_UNEXPECTED.</t>
        </section>
      </section>
    </section>
    <section anchor="errors" numbered="true" toc="default">
      <name>Error Handling</name>
      <t>QUIC allows the application to abruptly terminate (reset) individual streams or
the entire connection when an error is encountered.  These are referred to as
"stream errors" or "connection errors" and are described in more detail in
<xref target="QUIC-TRANSPORT" format="default"/>.</t>
      <t>An endpoint MAY choose to treat a stream error as a connection error under
certain circumstances.  Implementations need to consider the impact on
outstanding requests before making this choice.</t>
      <t>Because new error codes can be defined without negotiation (see <xref target="extensions" format="default"/>),
use of an error code in an unexpected context or receipt of an unknown error
code MUST be treated as equivalent to H3_NO_ERROR.  However, closing a stream
can have other effects regardless of the error code; see <xref target="request-response" format="default"/>.</t>
      <t>This section describes HTTP/3-specific error codes which can be used to express
the cause of a connection or stream error.</t>
      <section anchor="http-error-codes" numbered="true" toc="default">
        <name>HTTP/3 Error Codes</name>
        <t>The following error codes are defined for use when abruptly terminating streams,
aborting reading of streams, or immediately closing connections.</t>
        <dl newline="false" spacing="normal">
          <dt>H3_NO_ERROR (0x100):</dt>
          <dd>
  No error.  This is used when the connection or stream needs to be closed, but
there is no error to signal.</dd>
          <dt>H3_GENERAL_PROTOCOL_ERROR (0x101):</dt>
          <dd>
  Peer violated protocol requirements in a way which doesn't match a more
specific error code, or endpoint declines to use the more specific error code.</dd>
          <dt>H3_INTERNAL_ERROR (0x102):</dt>
          <dd>
  An internal error has occurred in the HTTP stack.</dd>
          <dt>H3_STREAM_CREATION_ERROR (0x103):</dt>
          <dd>
  The endpoint detected that its peer created a stream that it will not accept.</dd>
          <dt>H3_CLOSED_CRITICAL_STREAM (0x104):</dt>
          <dd>
  A stream required by the connection was closed or reset.</dd>
          <dt>H3_FRAME_UNEXPECTED (0x105):</dt>
          <dd>
  A frame was received which was not permitted in the current state or on the
current stream.</dd>
          <dt>H3_FRAME_ERROR (0x106):</dt>
          <dd>
  A frame that fails to satisfy layout requirements or with an invalid size
was received.</dd>
          <dt>H3_EXCESSIVE_LOAD (0x107):</dt>
          <dd>
  The endpoint detected that its peer is exhibiting a behavior that might be
generating excessive load.</dd>
          <dt>H3_ID_ERROR (0x108):</dt>
          <dd>
  A Stream ID or Push ID was used incorrectly, such as exceeding a limit,
reducing a limit, or being reused.</dd>
          <dt>H3_SETTINGS_ERROR (0x109):</dt>
          <dd>
  An endpoint detected an error in the payload of a SETTINGS frame.</dd>
          <dt>H3_MISSING_SETTINGS (0x10A):</dt>
          <dd>
  No SETTINGS frame was received at the beginning of the control stream.</dd>
          <dt>H3_REQUEST_REJECTED (0x10B):</dt>
          <dd>
  A server rejected a request without performing any application processing.</dd>
          <dt>H3_REQUEST_CANCELLED (0x10C):</dt>
          <dd>
  The request or its response (including pushed response) is cancelled.</dd>
          <dt>H3_REQUEST_INCOMPLETE (0x10D):</dt>
          <dd>
  The client's stream terminated without containing a fully-formed request.</dd>
          <dt>H3_CONNECT_ERROR (0x10F):</dt>
          <dd>
  The connection established in response to a CONNECT request was reset or
abnormally closed.</dd>
          <dt>H3_VERSION_FALLBACK (0x110):</dt>
          <dd>
  The requested operation cannot be served over HTTP/3.  The peer should
retry over HTTP/1.1.</dd>
        </dl>
        <t>Error codes of the format <tt>0x1f * N + 0x21</tt> for non-negative integer values of N
are reserved to exercise the requirement that unknown error codes be treated as
equivalent to H3_NO_ERROR (<xref target="extensions" format="default"/>). Implementations SHOULD select an
error code from this space with some probability when they would have sent
H3_NO_ERROR.</t>
      </section>
    </section>
    <section anchor="extensions" numbered="true" toc="default">
      <name>Extensions to HTTP/3</name>
      <t>HTTP/3 permits extension of the protocol.  Within the limitations described in
this section, protocol extensions can be used to provide additional services or
alter any aspect of the protocol.  Extensions are effective only within the
scope of a single HTTP/3 connection.</t>
      <t>This applies to the protocol elements defined in this document.  This does not
affect the existing options for extending HTTP, such as defining new methods,
status codes, or fields.</t>
      <t>Extensions are permitted to use new frame types (<xref target="frames" format="default"/>), new settings
(<xref target="settings-parameters" format="default"/>), new error codes (<xref target="errors" format="default"/>), or new unidirectional
stream types (<xref target="unidirectional-streams" format="default"/>).  Registries are established for
managing these extension points: frame types (<xref target="iana-frames" format="default"/>), settings
(<xref target="iana-settings" format="default"/>), error codes (<xref target="iana-error-codes" format="default"/>), and stream types
(<xref target="iana-stream-types" format="default"/>).</t>
      <t>Implementations MUST ignore unknown or unsupported values in all extensible
protocol elements.  Implementations MUST discard frames and unidirectional
streams that have unknown or unsupported types.  This means that any of these
extension points can be safely used by extensions without prior arrangement or
negotiation.  However, where a known frame type is required to be in a specific
location, such as the SETTINGS frame as the first frame of the control stream
(see <xref target="control-streams" format="default"/>), an unknown frame type does not satisfy that
requirement and SHOULD be treated as an error.</t>
      <t>Extensions that could change the semantics of existing protocol components MUST
be negotiated before being used.  For example, an extension that changes the
layout of the HEADERS frame cannot be used until the peer has given a positive
signal that this is acceptable.  Coordinating when such a revised layout comes
into effect could prove complex.  As such, allocating new identifiers for
new definitions of existing protocol elements is likely to be more effective.</t>
      <t>This document doesn't mandate a specific method for negotiating the use of an
extension but notes that a setting (<xref target="settings-parameters" format="default"/>) could be used for
that purpose.  If both peers set a value that indicates willingness to use the
extension, then the extension can be used.  If a setting is used for extension
negotiation, the default value MUST be defined in such a fashion that the
extension is disabled if the setting is omitted.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The security considerations of HTTP/3 should be comparable to those of HTTP/2
with TLS.  However, many of the considerations from Section 10 of <xref target="HTTP2" format="default"/>
apply to <xref target="QUIC-TRANSPORT" format="default"/> and are discussed in that document.</t>
      <section anchor="server-authority" numbered="true" toc="default">
        <name>Server Authority</name>
        <t>HTTP/3 relies on the HTTP definition of authority. The security considerations
of establishing authority are discussed in Section 11.1 of <xref target="SEMANTICS" format="default"/>.</t>
      </section>
      <section anchor="cross-protocol-attacks" numbered="true" toc="default">
        <name>Cross-Protocol Attacks</name>
        <t>The use of ALPN in the TLS and QUIC handshakes establishes the target
application protocol before application-layer bytes are processed.  Because all
QUIC packets are encrypted, it is difficult for an attacker to control the
plaintext bytes of an HTTP/3 connection which could be used in a cross-protocol
attack on a plaintext protocol.</t>
      </section>
      <section anchor="intermediary-encapsulation-attacks" numbered="true" toc="default">
        <name>Intermediary Encapsulation Attacks</name>
        <t>The HTTP/3 field encoding allows the expression of names that are not valid
field names in the syntax used by HTTP (Section 4.3 of <xref target="SEMANTICS" format="default"/>). Requests
or responses containing invalid field names MUST be treated as malformed
(<xref target="malformed" format="default"/>).  An intermediary therefore cannot translate an HTTP/3 request
or response containing an invalid field name into an HTTP/1.1 message.</t>
        <t>Similarly, HTTP/3 allows field values that are not valid. While most of the
values that can be encoded will not alter field parsing, carriage return (CR,
ASCII 0xd), line feed (LF, ASCII 0xa), and the zero character (NUL, ASCII 0x0)
might be exploited by an attacker if they are translated verbatim. Any request
or response that contains a character not permitted in a field value MUST be
treated as malformed (<xref target="malformed" format="default"/>).  Valid characters are defined by the
"field-content" ABNF rule in Section 4.4 of <xref target="SEMANTICS" format="default"/>.</t>
      </section>
      <section anchor="cacheability-of-pushed-responses" numbered="true" toc="default">
        <name>Cacheability of Pushed Responses</name>
        <t>Pushed responses do not have an explicit request from the client; the request is
provided by the server in the PUSH_PROMISE frame.</t>
        <t>Caching responses that are pushed is possible based on the guidance provided by
the origin server in the Cache-Control header field. However, this can cause
issues if a single server hosts more than one tenant.  For example, a server
might offer multiple users each a small portion of its URI space.</t>
        <t>Where multiple tenants share space on the same server, that server MUST ensure
that tenants are not able to push representations of resources that they do not
have authority over.  Failure to enforce this would allow a tenant to provide a
representation that would be served out of cache, overriding the actual
representation that the authoritative tenant provides.</t>
        <t>Pushed responses for which an origin server is not authoritative (see
<xref target="connection-reuse" format="default"/>) MUST NOT be used or cached.</t>
      </section>
      <section anchor="denial-of-service-considerations" numbered="true" toc="default">
        <name>Denial-of-Service Considerations</name>
        <t>An HTTP/3 connection can demand a greater commitment of resources to operate
than an HTTP/1.1 or HTTP/2 connection.  The use of field compression and flow
control depend on a commitment of resources for storing a greater amount of
state.  Settings for these features ensure that memory commitments for these
features are strictly bounded.</t>
        <t>The number of PUSH_PROMISE frames is constrained in a similar fashion.  A client
that accepts server push SHOULD limit the number of Push IDs it issues at a
time.</t>
        <t>Processing capacity cannot be guarded as effectively as state capacity.</t>
        <t>The ability to send undefined protocol elements which the peer is required to
ignore can be abused to cause a peer to expend additional processing time.  This
might be done by setting multiple undefined SETTINGS parameters, unknown frame
types, or unknown stream types.  Note, however, that some uses are entirely
legitimate, such as optional-to-understand extensions and padding to increase
resistance to traffic analysis.</t>
        <t>Compression of field sections also offers some opportunities to waste processing
resources; see Section 7 of <xref target="QPACK" format="default"/> for more details on potential abuses.</t>
        <t>All these features - i.e., server push, unknown protocol elements, field
compression - have legitimate uses.  These features become a burden only when
they are used unnecessarily or to excess.</t>
        <t>An endpoint that doesn't monitor this behavior exposes itself to a risk of
denial-of-service attack.  Implementations SHOULD track the use of these
features and set limits on their use.  An endpoint MAY treat activity that is
suspicious as a connection error (<xref target="errors" format="default"/>) of type H3_EXCESSIVE_LOAD, but
false positives will result in disrupting valid connections and requests.</t>
        <section anchor="limits-on-field-section-size" numbered="true" toc="default">
          <name>Limits on Field Section Size</name>
          <t>A large field section (<xref target="request-response" format="default"/>) can cause an implementation to
commit a large amount of state.  Header fields that are critical for routing can
appear toward the end of a header field section, which prevents streaming of the
header field section to its ultimate destination.  This ordering and other
reasons, such as ensuring cache correctness, mean that an endpoint likely needs
to buffer the entire header field section.  Since there is no hard limit to the
size of a field section, some endpoints could be forced to commit a large amount
of available memory for header fields.</t>
          <t>An endpoint can use the SETTINGS_MAX_HEADER_LIST_SIZE (<xref target="settings-parameters" format="default"/>)
setting to advise peers of limits that might apply on the size of field
sections. This setting is only advisory, so endpoints MAY choose to send field
sections that exceed this limit and risk having the request or response being
treated as malformed.  This setting is specific to a connection, so any request
or response could encounter a hop with a lower, unknown limit.  An intermediary
can attempt to avoid this problem by passing on values presented by different
peers, but they are not obligated to do so.</t>
          <t>A server that receives a larger field section than it is willing to handle can
send an HTTP 431 (Request Header Fields Too Large) status code <xref target="RFC6585" format="default"/>.  A
client can discard responses that it cannot process.</t>
        </section>
        <section anchor="connect-issues" numbered="true" toc="default">
          <name>CONNECT Issues</name>
          <t>The CONNECT method can be used to create disproportionate load on an proxy,
since stream creation is relatively inexpensive when compared to the creation
and maintenance of a TCP connection.  A proxy might also maintain some resources
for a TCP connection beyond the closing of the stream that carries the CONNECT
request, since the outgoing TCP connection remains in the TIME_WAIT state.
Therefore, a proxy cannot rely on QUIC stream limits alone to control the
resources consumed by CONNECT requests.</t>
        </section>
      </section>
      <section anchor="use-of-compression" numbered="true" toc="default">
        <name>Use of Compression</name>
        <t>Compression can allow an attacker to recover secret data when it is compressed
in the same context as data under attacker control. HTTP/3 enables compression
of fields (<xref target="header-formatting" format="default"/>); the following concerns also apply to the use
of HTTP compressed content-codings; see Section 6.1.2 of <xref target="SEMANTICS" format="default"/>.</t>
        <t>There are demonstrable attacks on compression that exploit the characteristics
of the web (e.g., <xref target="BREACH" format="default"/>).  The attacker induces multiple requests
containing varying plaintext, observing the length of the resulting ciphertext
in each, which reveals a shorter length when a guess about the secret is
correct.</t>
        <t>Implementations communicating on a secure channel MUST NOT compress content that
includes both confidential and attacker-controlled data unless separate
compression dictionaries are used for each source of data.  Compression MUST NOT
be used if the source of data cannot be reliably determined.</t>
        <t>Further considerations regarding the compression of fields sections are
described in <xref target="QPACK" format="default"/>.</t>
      </section>
      <section anchor="padding-and-traffic-analysis" numbered="true" toc="default">
        <name>Padding and Traffic Analysis</name>
        <t>Padding can be used to obscure the exact size of frame content and is provided
to mitigate specific attacks within HTTP, for example, attacks where compressed
content includes both attacker-controlled plaintext and secret data (e.g.,
<xref target="BREACH" format="default"/>).</t>
        <t>Where HTTP/2 employs PADDING frames and Padding fields in other frames to make a
connection more resistant to traffic analysis, HTTP/3 can either rely on
transport-layer padding or employ the reserved frame and stream types discussed
in <xref target="frame-reserved" format="default"/> and <xref target="stream-grease" format="default"/>.  These methods of padding produce
different results in terms of the granularity of padding, how padding is
arranged in relation to the information that is being protected, whether padding
is applied in the case of packet loss, and how an implementation might control
padding.  Redundant padding could even be counterproductive.</t>
        <t>To mitigate attacks that rely on compression, disabling or limiting compression
might be preferable to padding as a countermeasure.</t>
        <t>Use of padding can result in less protection than might seem immediately
obvious.  At best, padding only makes it more difficult for an attacker to infer
length information by increasing the number of frames an attacker has to
observe.  Incorrectly implemented padding schemes can be easily defeated.  In
particular, randomized padding with a predictable distribution provides very
little protection; similarly, padding payloads to a fixed size exposes
information as payload sizes cross the fixed-sized boundary, which could be
possible if an attacker can control plaintext.</t>
      </section>
      <section anchor="frame-parsing" numbered="true" toc="default">
        <name>Frame Parsing</name>
        <t>Several protocol elements contain nested length elements, typically in the form
of frames with an explicit length containing variable-length integers.  This
could pose a security risk to an incautious implementer.  An implementation MUST
ensure that the length of a frame exactly matches the length of the fields it
contains.</t>
      </section>
      <section anchor="early-data" numbered="true" toc="default">
        <name>Early Data</name>
        <t>The use of 0-RTT with HTTP/3 creates an exposure to replay attack.  The
anti-replay mitigations in <xref target="HTTP-REPLAY" format="default"/> MUST be applied when using
HTTP/3 with 0-RTT.</t>
      </section>
      <section anchor="migration" numbered="true" toc="default">
        <name>Migration</name>
        <t>Certain HTTP implementations use the client address for logging or
access-control purposes.  Since a QUIC client's address might change during a
connection (and future versions might support simultaneous use of multiple
addresses), such implementations will need to either actively retrieve the
client's current address or addresses when they are relevant or explicitly
accept that the original address might change.</t>
      </section>
      <section anchor="privacy-considerations" numbered="true" toc="default">
        <name>Privacy Considerations</name>
        <t>Several characteristics of HTTP/3 provide an observer an opportunity to
correlate actions of a single client or server over time.  These include the
value of settings, the timing of reactions to stimulus, and the handling of any
features that are controlled by settings.</t>
        <t>As far as these create observable differences in behavior, they could be used as
a basis for fingerprinting a specific client.</t>
        <t>HTTP/3's preference for using a single QUIC connection allows correlation of a
user's activity on a site.  Reusing connections for different origins allows
for correlation of activity across those origins.</t>
        <t>Several features of QUIC solicit immediate responses and can be used by an
endpoint to measure latency to their peer; this might have privacy implications
in certain scenarios.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document registers a new ALPN protocol ID (<xref target="iana-alpn" format="default"/>) and creates new
registries that manage the assignment of codepoints in HTTP/3.</t>
      <section anchor="iana-alpn" numbered="true" toc="default">
        <name>Registration of HTTP/3 Identification String</name>
        <t>This document creates a new registration for the identification of
HTTP/3 in the "Application Layer Protocol Negotiation (ALPN)
Protocol IDs" registry established in <xref target="RFC7301" format="default"/>.</t>
        <t>The "h3" string identifies HTTP/3:</t>
        <dl newline="false" spacing="normal">
          <dt>Protocol:</dt>
          <dd>
  HTTP/3</dd>
          <dt>Identification Sequence:</dt>
          <dd>
  0x68 0x33 ("h3")</dd>
          <dt>Specification:</dt>
          <dd>
  This document</dd>
        </dl>
      </section>
      <section anchor="iana-policy" numbered="true" toc="default">
        <name>New Registries</name>
        <t>New registries created in this document operate under the QUIC registration
policy documented in Section 22.1 of <xref target="QUIC-TRANSPORT" format="default"/>.  These registries all
include the common set of fields listed in Section 22.1.1 of <xref target="QUIC-TRANSPORT" format="default"/>.</t>
        <t>The initial allocations in these registries created in this document are all
assigned permanent status and list as contact both the IESG (iesg@ietf.org) and
the HTTP working group (ietf-http-wg@w3.org).</t>
        <section anchor="iana-frames" numbered="true" toc="default">
          <name>Frame Types</name>
          <t>This document establishes a registry for HTTP/3 frame type codes. The "HTTP/3
Frame Type" registry governs a 62-bit space.  This registry follows the QUIC
registry policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry
are assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for
values between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned
using Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</t>
          <t>While this registry is separate from the "HTTP/2 Frame Type" registry defined in
<xref target="HTTP2" format="default"/>, it is preferable that the assignments parallel each other where the
code spaces overlap.  If an entry is present in only one registry, every effort
SHOULD be made to avoid assigning the corresponding value to an unrelated
operation.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following field:</t>
          <dl newline="false" spacing="normal">
            <dt>Frame Type:</dt>
            <dd>
  A name or label for the frame type.</dd>
          </dl>
          <t>Specifications of frame types MUST include a description of the frame layout and
its semantics, including any parts of the frame that are conditionally present.</t>
          <t>The entries in <xref target="iana-frame-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-frame-table" align="center">
            <name>Initial HTTP/3 Frame Types</name>
            <thead>
              <tr>
                <th align="left">Frame Type</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">DATA</td>
                <td align="center">0x0</td>
                <td align="left">
                  <xref target="frame-data" format="default"/></td>
              </tr>
              <tr>
                <td align="left">HEADERS</td>
                <td align="center">0x1</td>
                <td align="left">
                  <xref target="frame-headers" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x2</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">CANCEL_PUSH</td>
                <td align="center">0x3</td>
                <td align="left">
                  <xref target="frame-cancel-push" format="default"/></td>
              </tr>
              <tr>
                <td align="left">SETTINGS</td>
                <td align="center">0x4</td>
                <td align="left">
                  <xref target="frame-settings" format="default"/></td>
              </tr>
              <tr>
                <td align="left">PUSH_PROMISE</td>
                <td align="center">0x5</td>
                <td align="left">
                  <xref target="frame-push-promise" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x6</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">GOAWAY</td>
                <td align="center">0x7</td>
                <td align="left">
                  <xref target="frame-goaway" format="default"/></td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x8</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x9</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">MAX_PUSH_ID</td>
                <td align="center">0xD</td>
                <td align="left">
                  <xref target="frame-max-push-id" format="default"/></td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of N (that is, 0x21, 0x40, ..., through 0x3FFFFFFFFFFFFFFE) MUST
NOT be assigned by IANA.</t>
        </section>
        <section anchor="iana-settings" numbered="true" toc="default">
          <name>Settings Parameters</name>
          <t>This document establishes a registry for HTTP/3 settings.  The "HTTP/3 Settings"
registry governs a 62-bit space.  This registry follows the QUIC registry
policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry are
assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for values
between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned using
Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</t>
          <t>While this registry is separate from the "HTTP/2 Settings" registry defined in
<xref target="HTTP2" format="default"/>, it is preferable that the assignments parallel each other.  If an
entry is present in only one registry, every effort SHOULD be made to avoid
assigning the corresponding value to an unrelated operation.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Setting Name:</dt>
            <dd>
  A symbolic name for the setting.  Specifying a setting name is optional.</dd>
            <dt>Default:</dt>
            <dd>
  The value of the setting unless otherwise indicated. A default SHOULD be the
most restrictive possible value.</dd>
          </dl>
          <t>The entries in <xref target="iana-setting-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-setting-table" align="center">
            <name>Initial HTTP/3 Settings</name>
            <thead>
              <tr>
                <th align="left">Setting Name</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
                <th align="left">Default</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x2</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x3</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x4</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="center">0x5</td>
                <td align="left">N/A</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">MAX_FIELD_SECTION_SIZE</td>
                <td align="center">0x6</td>
                <td align="left">
                  <xref target="settings-parameters" format="default"/></td>
                <td align="left">Unlimited</td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of N (that is, 0x21, 0x40, ..., through 0x3FFFFFFFFFFFFFFE) MUST
NOT be assigned by IANA.</t>
        </section>
        <section anchor="iana-error-codes" numbered="true" toc="default">
          <name>Error Codes</name>
          <t>This document establishes a registry for HTTP/3 error codes. The "HTTP/3 Error
Code" registry manages a 62-bit space.  This registry follows the QUIC registry
policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this registry are
assigned using the Specification Required policy <xref target="RFC8126" format="default"/>, except for values
between 0x00 and 0x3f (in hexadecimal; inclusive), which are assigned using
Standards Action or IESG Approval as defined in Section 4.9 and 4.10 of
<xref target="RFC8126" format="default"/>.</t>
          <t>Registrations for error codes are required to include a description
of the error code.  An expert reviewer is advised to examine new
registrations for possible duplication with existing error codes.
Use of existing registrations is to be encouraged, but not mandated.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Name:</dt>
            <dd>
  A name for the error code.  Specifying an error code name is optional.</dd>
            <dt>Description:</dt>
            <dd>
  A brief description of the error code semantics.</dd>
          </dl>
          <t>The entries in the <xref target="iana-error-table" format="default"/> are registered by this document.</t>
          <table anchor="iana-error-table" align="center">
            <name>Initial HTTP/3 Error Codes</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">H3_NO_ERROR</td>
                <td align="left">0x0100</td>
                <td align="left">No error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_GENERAL_PROTOCOL_ERROR</td>
                <td align="left">0x0101</td>
                <td align="left">General protocol error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_INTERNAL_ERROR</td>
                <td align="left">0x0102</td>
                <td align="left">Internal error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_STREAM_CREATION_ERROR</td>
                <td align="left">0x0103</td>
                <td align="left">Stream creation error</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_CLOSED_CRITICAL_STREAM</td>
                <td align="left">0x0104</td>
                <td align="left">Critical stream was closed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_FRAME_UNEXPECTED</td>
                <td align="left">0x0105</td>
                <td align="left">Frame not permitted in the current state</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_FRAME_ERROR</td>
                <td align="left">0x0106</td>
                <td align="left">Frame violated layout or size rules</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_EXCESSIVE_LOAD</td>
                <td align="left">0x0107</td>
                <td align="left">Peer generating excessive load</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_ID_ERROR</td>
                <td align="left">0x0108</td>
                <td align="left">An identifier was used incorrectly</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_SETTINGS_ERROR</td>
                <td align="left">0x0109</td>
                <td align="left">SETTINGS frame contained invalid values</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_MISSING_SETTINGS</td>
                <td align="left">0x010A</td>
                <td align="left">No SETTINGS frame received</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_REJECTED</td>
                <td align="left">0x010B</td>
                <td align="left">Request not processed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_CANCELLED</td>
                <td align="left">0x010C</td>
                <td align="left">Data no longer needed</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_REQUEST_INCOMPLETE</td>
                <td align="left">0x010D</td>
                <td align="left">Stream terminated early</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_CONNECT_ERROR</td>
                <td align="left">0x010F</td>
                <td align="left">TCP reset or error on CONNECT request</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
              <tr>
                <td align="left">H3_VERSION_FALLBACK</td>
                <td align="left">0x0110</td>
                <td align="left">Retry over HTTP/1.1</td>
                <td align="left">
                  <xref target="http-error-codes" format="default"/></td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of N (that is, 0x21, 0x40, ..., through 0x3FFFFFFFFFFFFFFE) MUST
NOT be assigned by IANA.</t>
        </section>
        <section anchor="iana-stream-types" numbered="true" toc="default">
          <name>Stream Types</name>
          <t>This document establishes a registry for HTTP/3 unidirectional stream types. The
"HTTP/3 Stream Type" registry governs a 62-bit space.  This registry follows the
QUIC registry policy; see <xref target="iana-policy" format="default"/>.  Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126" format="default"/>,
except for values between 0x00 and 0x3f (in hexadecimal; inclusive), which are
assigned using Standards Action or IESG Approval as defined in Section 4.9 and
4.10 of <xref target="RFC8126" format="default"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-policy" format="default"/>, permanent
registrations in this registry MUST include the following fields:</t>
          <dl newline="false" spacing="normal">
            <dt>Stream Type:</dt>
            <dd>
  A name or label for the stream type.</dd>
            <dt>Sender:</dt>
            <dd>
  Which endpoint on a connection may initiate a stream of this type. Values are
"Client", "Server", or "Both".</dd>
          </dl>
          <t>Specifications for permanent registrations MUST include a description of the
stream type, including the layout semantics of the stream contents.</t>
          <t>The entries in the following table are registered by this document.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Stream Type</th>
                <th align="center">Value</th>
                <th align="left">Specification</th>
                <th align="left">Sender</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Control Stream</td>
                <td align="center">0x00</td>
                <td align="left">
                  <xref target="control-streams" format="default"/></td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">Push Stream</td>
                <td align="center">0x01</td>
                <td align="left">
                  <xref target="server-push" format="default"/></td>
                <td align="left">Server</td>
              </tr>
            </tbody>
          </table>
          <t>Additionally, each code of the format <tt>0x1f * N + 0x21</tt> for non-negative integer
values of N (that is, 0x21, 0x40, ..., through 0x3FFFFFFFFFFFFFFE) MUST
NOT be assigned by IANA.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-transport-28"/>
            <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
              <organization>Fastly</organization>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
              <organization>Mozilla</organization>
            </author>
            <date year="2020" month="June" day="09"/>
          </front>
        </reference>
        <reference anchor="QPACK">
          <front>
            <title>QPACK: Header Compression for HTTP over QUIC</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qpack-16"/>
            <author initials="C." surname="Krasic" fullname="Charles 'Buck' Krasic">
              <organization>Google, Inc</organization>
            </author>
            <author initials="M." surname="Bishop" fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author initials="A." surname="Frindell" fullname="Alan Frindell" role="editor">
              <organization>Facebook</organization>
            </author>
            <date year="2020" month="June" day="09"/>
          </front>
        </reference>
        <reference anchor="SEMANTICS" target="http://www.ietf.org/internet-drafts/draft-ietf-httpbis-semantics-08.txt">
          <front>
            <title>HTTP Semantics</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-08"/>
            <author initials="R" surname="Fielding" fullname="Roy Fielding">
              <organization/>
            </author>
            <author initials="M" surname="Nottingham" fullname="Mark Nottingham">
              <organization/>
            </author>
            <author initials="J" surname="Reschke" fullname="Julian Reschke">
              <organization/>
            </author>
            <date month="May" day="26" year="2020"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP: its architecture, terminology, the "http" and "https" Uniform Resource Identifier (URI) schemes, core request methods, request header fields, response status codes, response header fields, and content negotiation.  This document obsoletes RFC 2818, RFC 7231, RFC 7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions of RFC 7230.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        </reference>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <seriesInfo name="DOI" value="10.17487/RFC5234"/>
            <seriesInfo name="RFC" value="5234"/>
            <seriesInfo name="STD" value="68"/>
            <author initials="D." surname="Crocker" fullname="D. Crocker" role="editor">
              <organization/>
            </author>
            <author initials="P." surname="Overell" fullname="P. Overell">
              <organization/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="ALTSVC" target="https://www.rfc-editor.org/info/rfc7838">
          <front>
            <title>HTTP Alternative Services</title>
            <seriesInfo name="DOI" value="10.17487/RFC7838"/>
            <seriesInfo name="RFC" value="7838"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="P." surname="McManus" fullname="P. McManus">
              <organization/>
            </author>
            <author initials="J." surname="Reschke" fullname="J. Reschke">
              <organization/>
            </author>
            <date year="2016" month="April"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8164" target="https://www.rfc-editor.org/info/rfc8164">
          <front>
            <title>Opportunistic Security for HTTP/2</title>
            <seriesInfo name="DOI" value="10.17487/RFC8164"/>
            <seriesInfo name="RFC" value="8164"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>This document describes how "http" URIs can be accessed using Transport Layer Security (TLS) and HTTP/2 to mitigate pervasive monitoring attacks.  This mechanism not a replacement for "https" URIs; it is vulnerable to active attacks.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <seriesInfo name="DOI" value="10.17487/RFC6066"/>
            <seriesInfo name="RFC" value="6066"/>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd">
              <organization/>
            </author>
            <date year="2011" month="January"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6125" target="https://www.rfc-editor.org/info/rfc6125">
          <front>
            <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6125"/>
            <seriesInfo name="RFC" value="6125"/>
            <author initials="P." surname="Saint-Andre" fullname="P. Saint-Andre">
              <organization/>
            </author>
            <author initials="J." surname="Hodges" fullname="J. Hodges">
              <organization/>
            </author>
            <date year="2011" month="March"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="STD" value="66"/>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
              <organization/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization/>
            </author>
            <author initials="L." surname="Masinter" fullname="L. Masinter">
              <organization/>
            </author>
            <date year="2005" month="January"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6265" target="https://www.rfc-editor.org/info/rfc6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <seriesInfo name="DOI" value="10.17487/RFC6265"/>
            <seriesInfo name="RFC" value="6265"/>
            <author initials="A." surname="Barth" fullname="A. Barth">
              <organization/>
            </author>
            <date year="2011" month="April"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC0793" target="https://www.rfc-editor.org/info/rfc793">
          <front>
            <title>Transmission Control Protocol</title>
            <seriesInfo name="DOI" value="10.17487/RFC0793"/>
            <seriesInfo name="RFC" value="793"/>
            <seriesInfo name="STD" value="7"/>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization/>
            </author>
            <date year="1981" month="September"/>
          </front>
        </reference>
        <reference anchor="CACHING" target="http://www.ietf.org/internet-drafts/draft-ietf-httpbis-cache-08.txt">
          <front>
            <title>HTTP Caching</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cache-08"/>
            <author initials="R" surname="Fielding" fullname="Roy Fielding">
              <organization/>
            </author>
            <author initials="M" surname="Nottingham" fullname="Mark Nottingham">
              <organization/>
            </author>
            <author initials="J" surname="Reschke" fullname="Julian Reschke">
              <organization/>
            </author>
            <date month="May" day="26" year="2020"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.  This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="HTTP-REPLAY" target="https://www.rfc-editor.org/info/rfc8470">
          <front>
            <title>Using Early Data in HTTP</title>
            <seriesInfo name="DOI" value="10.17487/RFC8470"/>
            <seriesInfo name="RFC" value="8470"/>
            <author initials="M." surname="Thomson" fullname="M. Thomson">
              <organization/>
            </author>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="W." surname="Tarreau" fullname="W. Tarreau">
              <organization/>
            </author>
            <date year="2018" month="September"/>
            <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>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="BCP" value="26"/>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="BREACH" target="http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf">
          <front>
            <title>BREACH: Reviving the CRIME Attack</title>
            <author initials="Y." surname="Gluck">
              <organization/>
            </author>
            <author initials="N." surname="Harris">
              <organization/>
            </author>
            <author initials="A." surname="Prado">
              <organization/>
            </author>
            <date year="2013" month="July"/>
          </front>
        </reference>
        <reference anchor="HTTP11" target="http://www.ietf.org/internet-drafts/draft-ietf-httpbis-messaging-08.txt">
          <front>
            <title>HTTP/1.1 Messaging</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-messaging-08"/>
            <author initials="R" surname="Fielding" fullname="Roy Fielding">
              <organization/>
            </author>
            <author initials="M" surname="Nottingham" fullname="Mark Nottingham">
              <organization/>
            </author>
            <author initials="J" surname="Reschke" fullname="Julian Reschke">
              <organization/>
            </author>
            <date month="May" day="26" year="2020"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.  This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="HTTP2" target="https://www.rfc-editor.org/info/rfc7540">
          <front>
            <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7540"/>
            <seriesInfo name="RFC" value="7540"/>
            <author initials="M." surname="Belshe" fullname="M. Belshe">
              <organization/>
            </author>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t>
              <t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="TLS13" target="https://www.rfc-editor.org/info/rfc8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <seriesInfo name="DOI" value="10.17487/RFC8446"/>
            <seriesInfo name="RFC" value="8446"/>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <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>
        </reference>
        <reference anchor="TFO" target="https://www.rfc-editor.org/info/rfc7413">
          <front>
            <title>TCP Fast Open</title>
            <seriesInfo name="DOI" value="10.17487/RFC7413"/>
            <seriesInfo name="RFC" value="7413"/>
            <author initials="Y." surname="Cheng" fullname="Y. Cheng">
              <organization/>
            </author>
            <author initials="J." surname="Chu" fullname="J. Chu">
              <organization/>
            </author>
            <author initials="S." surname="Radhakrishnan" fullname="S. Radhakrishnan">
              <organization/>
            </author>
            <author initials="A." surname="Jain" fullname="A. Jain">
              <organization/>
            </author>
            <date year="2014" month="December"/>
            <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>
        </reference>
        <reference anchor="HPACK" target="https://www.rfc-editor.org/info/rfc7541">
          <front>
            <title>HPACK: Header Compression for HTTP/2</title>
            <seriesInfo name="DOI" value="10.17487/RFC7541"/>
            <seriesInfo name="RFC" value="7541"/>
            <author initials="R." surname="Peon" fullname="R. Peon">
              <organization/>
            </author>
            <author initials="H." surname="Ruellan" fullname="H. Ruellan">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="URI" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="STD" value="66"/>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
              <organization/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization/>
            </author>
            <author initials="L." surname="Masinter" fullname="L. Masinter">
              <organization/>
            </author>
            <date year="2005" month="January"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6585" target="https://www.rfc-editor.org/info/rfc6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <seriesInfo name="DOI" value="10.17487/RFC6585"/>
            <seriesInfo name="RFC" value="6585"/>
            <author initials="M." surname="Nottingham" fullname="M. Nottingham">
              <organization/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization/>
            </author>
            <date year="2012" month="April"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <seriesInfo name="DOI" value="10.17487/RFC7301"/>
            <seriesInfo name="RFC" value="7301"/>
            <author initials="S." surname="Friedl" fullname="S. Friedl">
              <organization/>
            </author>
            <author initials="A." surname="Popov" fullname="A. Popov">
              <organization/>
            </author>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <author initials="E." surname="Stephan" fullname="E. Stephan">
              <organization/>
            </author>
            <date year="2014" month="July"/>
            <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>
        </reference>
      </references>
    </references>
    <section anchor="h2-considerations" numbered="true" toc="default">
      <name>Considerations for Transitioning from HTTP/2</name>
      <t>HTTP/3 is strongly informed by HTTP/2, and bears many similarities.  This
section describes the approach taken to design HTTP/3, points out important
differences from HTTP/2, and describes how to map HTTP/2 extensions into HTTP/3.</t>
      <t>HTTP/3 begins from the premise that similarity to HTTP/2 is preferable, but not
a hard requirement.  HTTP/3 departs from HTTP/2 where QUIC differs from TCP,
either to take advantage of QUIC features (like streams) or to accommodate
important shortcomings (such as a lack of total ordering). These differences
make HTTP/3 similar to HTTP/2 in key aspects, such as the relationship of
requests and responses to streams. However, the details of the HTTP/3 design are
substantially different than HTTP/2.</t>
      <t>These departures are noted in this section.</t>
      <section anchor="h2-streams" numbered="true" toc="default">
        <name>Streams</name>
        <t>HTTP/3 permits use of a larger number of streams (2^62-1) than HTTP/2.  The
considerations about exhaustion of stream identifier space apply, though the
space is significantly larger such that it is likely that other limits in QUIC
are reached first, such as the limit on the connection flow control window.</t>
        <t>In contrast to HTTP/2, stream concurrency in HTTP/3 is managed by QUIC.  QUIC
considers a stream closed when all data has been received and sent data has been
acknowledged by the peer.  HTTP/2 considers a stream closed when the frame
containing the END_STREAM bit has been committed to the transport. As a result,
the stream for an equivalent exchange could remain "active" for a longer period
of time.  HTTP/3 servers might choose to permit a larger number of concurrent
client-initiated bidirectional streams to achieve equivalent concurrency to
HTTP/2, depending on the expected usage patterns.</t>
        <t>Due to the presence of other unidirectional stream types, HTTP/3 does not rely
exclusively on the number of concurrent unidirectional streams to control the
number of concurrent in-flight pushes.  Instead, HTTP/3 clients use the
MAX_PUSH_ID frame to control the number of pushes received from an HTTP/3
server.</t>
      </section>
      <section anchor="h2-frames" numbered="true" toc="default">
        <name>HTTP Frame Types</name>
        <t>Many framing concepts from HTTP/2 can be elided on QUIC, because the transport
deals with them. Because frames are already on a stream, they can omit the
stream number. Because frames do not block multiplexing (QUIC's multiplexing
occurs below this layer), the support for variable-maximum-length packets can be
removed. Because stream termination is handled by QUIC, an END_STREAM flag is
not required.  This permits the removal of the Flags field from the generic
frame layout.</t>
        <t>Frame payloads are largely drawn from <xref target="HTTP2" format="default"/>. However, QUIC includes many
features (e.g., flow control) which are also present in HTTP/2. In these cases,
the HTTP mapping does not re-implement them. As a result, several HTTP/2 frame
types are not required in HTTP/3. Where an HTTP/2-defined frame is no longer
used, the frame ID has been reserved in order to maximize portability between
HTTP/2 and HTTP/3 implementations. However, even equivalent frames between the
two mappings are not identical.</t>
        <t>Many of the differences arise from the fact that HTTP/2 provides an absolute
ordering between frames across all streams, while QUIC provides this guarantee
on each stream only.  As a result, if a frame type makes assumptions that frames
from different streams will still be received in the order sent, HTTP/3 will
break them.</t>
        <t>Some examples of feature adaptations are described below, as well as general
guidance to extension frame implementors converting an HTTP/2 extension to
HTTP/3.</t>
        <section anchor="h2-diff-priority" numbered="true" toc="default">
          <name>Prioritization Differences</name>
          <t>HTTP/2 specifies priority assignments in PRIORITY frames and (optionally) in
HEADERS frames. HTTP/3 does not provide a means of signaling priority.</t>
          <t>Note that while there is no explicit signaling for priority, this does not mean
that prioritization is not important for achieving good performance.</t>
        </section>
        <section anchor="field-compression-differences" numbered="true" toc="default">
          <name>Field Compression Differences</name>
          <t>HPACK was designed with the assumption of in-order delivery. A sequence of
encoded field sections must arrive (and be decoded) at an endpoint in the same
order in which they were encoded. This ensures that the dynamic state at the two
endpoints remains in sync.</t>
          <t>Because this total ordering is not provided by QUIC, HTTP/3 uses a modified
version of HPACK, called QPACK.  QPACK uses a single unidirectional stream to
make all modifications to the dynamic table, ensuring a total order of updates.
All frames which contain encoded fields merely reference the table state at a
given time without modifying it.</t>
          <t><xref target="QPACK" format="default"/> provides additional details.</t>
        </section>
        <section anchor="guidance-for-new-frame-type-definitions" numbered="true" toc="default">
          <name>Guidance for New Frame Type Definitions</name>
          <t>Frame type definitions in HTTP/3 often use the QUIC variable-length integer
encoding.  In particular, Stream IDs use this encoding, which allows for a
larger range of possible values than the encoding used in HTTP/2.  Some frames
in HTTP/3 use an identifier rather than a Stream ID (e.g., Push
IDs). Redefinition of the encoding of extension frame types might be necessary
if the encoding includes a Stream ID.</t>
          <t>Because the Flags field is not present in generic HTTP/3 frames, those frames
which depend on the presence of flags need to allocate space for flags as part
of their frame payload.</t>
          <t>Other than this issue, frame type HTTP/2 extensions are typically portable to
QUIC simply by replacing Stream 0 in HTTP/2 with a control stream in HTTP/3.
HTTP/3 extensions will not assume ordering, but would not be harmed by ordering,
and would be portable to HTTP/2 in the same manner.</t>
        </section>
        <section anchor="mapping-between-http2-and-http3-frame-types" numbered="true" toc="default">
          <name>Mapping Between HTTP/2 and HTTP/3 Frame Types</name>
          <dl newline="false" spacing="normal">
            <dt>DATA (0x0):</dt>
            <dd>
  Padding is not defined in HTTP/3 frames.  See <xref target="frame-data" format="default"/>.</dd>
            <dt>HEADERS (0x1):</dt>
            <dd>
  The PRIORITY region of HEADERS is not defined in HTTP/3 frames. Padding is not
defined in HTTP/3 frames.  See <xref target="frame-headers" format="default"/>.</dd>
            <dt>PRIORITY (0x2):</dt>
            <dd>
  As described in <xref target="h2-diff-priority" format="default"/>, HTTP/3 does not provide a means of
signaling priority.</dd>
            <dt>RST_STREAM (0x3):</dt>
            <dd>
  RST_STREAM frames do not exist, since QUIC provides stream lifecycle
management.  The same code point is used for the CANCEL_PUSH frame
(<xref target="frame-cancel-push" format="default"/>).</dd>
            <dt>SETTINGS (0x4):</dt>
            <dd>
  SETTINGS frames are sent only at the beginning of the connection.  See
<xref target="frame-settings" format="default"/> and <xref target="h2-settings" format="default"/>.</dd>
            <dt>PUSH_PROMISE (0x5):</dt>
            <dd>
  The PUSH_PROMISE does not reference a stream; instead the push stream
references the PUSH_PROMISE frame using a Push ID.  See
<xref target="frame-push-promise" format="default"/>.</dd>
            <dt>PING (0x6):</dt>
            <dd>
  PING frames do not exist, since QUIC provides equivalent functionality.</dd>
            <dt>GOAWAY (0x7):</dt>
            <dd>
  GOAWAY does not contain an error code.  In the client to server direction,
it carries a Push ID instead of a server initiated stream ID.
See <xref target="frame-goaway" format="default"/>.</dd>
            <dt>WINDOW_UPDATE (0x8):</dt>
            <dd>
  WINDOW_UPDATE frames do not exist, since QUIC provides flow control.</dd>
            <dt>CONTINUATION (0x9):</dt>
            <dd>
  CONTINUATION frames do not exist; instead, larger HEADERS/PUSH_PROMISE
frames than HTTP/2 are permitted.</dd>
          </dl>
          <t>Frame types defined by extensions to HTTP/2 need to be separately registered for
HTTP/3 if still applicable.  The IDs of frames defined in <xref target="HTTP2" format="default"/> have been
reserved for simplicity.  Note that the frame type space in HTTP/3 is
substantially larger (62 bits versus 8 bits), so many HTTP/3 frame types have no
equivalent HTTP/2 code points.  See <xref target="iana-frames" format="default"/>.</t>
        </section>
      </section>
      <section anchor="h2-settings" numbered="true" toc="default">
        <name>HTTP/2 SETTINGS Parameters</name>
        <t>An important difference from HTTP/2 is that settings are sent once, as the first
frame of the control stream, and thereafter cannot change.  This eliminates many
corner cases around synchronization of changes.</t>
        <t>Some transport-level options that HTTP/2 specifies via the SETTINGS frame are
superseded by QUIC transport parameters in HTTP/3. The HTTP-level options that
are retained in HTTP/3 have the same value as in HTTP/2.</t>
        <t>Below is a listing of how each HTTP/2 SETTINGS parameter is mapped:</t>
        <dl newline="false" spacing="normal">
          <dt>SETTINGS_HEADER_TABLE_SIZE:</dt>
          <dd>
  See <xref target="QPACK" format="default"/>.</dd>
          <dt>SETTINGS_ENABLE_PUSH:</dt>
          <dd>
  This is removed in favor of the MAX_PUSH_ID which provides a more granular
control over server push.</dd>
          <dt>SETTINGS_MAX_CONCURRENT_STREAMS:</dt>
          <dd>
  QUIC controls the largest open Stream ID as part of its flow control logic.
Specifying SETTINGS_MAX_CONCURRENT_STREAMS in the SETTINGS frame is an error.</dd>
          <dt>SETTINGS_INITIAL_WINDOW_SIZE:</dt>
          <dd>
  QUIC requires both stream and connection flow control window sizes to be
specified in the initial transport handshake.  Specifying
SETTINGS_INITIAL_WINDOW_SIZE in the SETTINGS frame is an error.</dd>
          <dt>SETTINGS_MAX_FRAME_SIZE:</dt>
          <dd>
  This setting has no equivalent in HTTP/3.  Specifying it in the SETTINGS frame
is an error.</dd>
          <dt>SETTINGS_MAX_FIELD_SECTION_SIZE:</dt>
          <dd>
  See <xref target="settings-parameters" format="default"/>.</dd>
        </dl>
        <t>In HTTP/3, setting values are variable-length integers (6, 14, 30, or 62 bits
long) rather than fixed-length 32-bit fields as in HTTP/2.  This will often
produce a shorter encoding, but can produce a longer encoding for settings which
use the full 32-bit space.  Settings ported from HTTP/2 might choose to redefine
their value to limit it to 30 bits for more efficient encoding, or to make use
of the 62-bit space if more than 30 bits are required.</t>
        <t>Settings need to be defined separately for HTTP/2 and HTTP/3. The IDs of
settings defined in <xref target="HTTP2" format="default"/> have been reserved for simplicity.  Note that
the settings identifier space in HTTP/3 is substantially larger (62 bits versus
16 bits), so many HTTP/3 settings have no equivalent HTTP/2 code point. See
<xref target="iana-settings" format="default"/>.</t>
        <t>As QUIC streams might arrive out-of-order, endpoints are advised to not wait for
the peers' settings to arrive before responding to other streams.  See
<xref target="settings-initialization" format="default"/>.</t>
      </section>
      <section anchor="http2-error-codes" numbered="true" toc="default">
        <name>HTTP/2 Error Codes</name>
        <t>QUIC has the same concepts of "stream" and "connection" errors that HTTP/2
provides. However, the differences between HTTP/2 and HTTP/3 mean that error
codes are not directly portable between versions.</t>
        <t>The HTTP/2 error codes defined in Section 7 of <xref target="HTTP2" format="default"/> logically map to
the HTTP/3 error codes as follows:</t>
        <dl newline="false" spacing="normal">
          <dt>NO_ERROR (0x0):</dt>
          <dd>
  H3_NO_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>PROTOCOL_ERROR (0x1):</dt>
          <dd>
  This is mapped to H3_GENERAL_PROTOCOL_ERROR except in cases where more
specific error codes have been defined. This includes H3_FRAME_UNEXPECTED
and H3_CLOSED_CRITICAL_STREAM defined in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>INTERNAL_ERROR (0x2):</dt>
          <dd>
  H3_INTERNAL_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>FLOW_CONTROL_ERROR (0x3):</dt>
          <dd>
  Not applicable, since QUIC handles flow control.</dd>
          <dt>SETTINGS_TIMEOUT (0x4):</dt>
          <dd>
  Not applicable, since no acknowledgement of SETTINGS is defined.</dd>
          <dt>STREAM_CLOSED (0x5):</dt>
          <dd>
  Not applicable, since QUIC handles stream management.</dd>
          <dt>FRAME_SIZE_ERROR (0x6):</dt>
          <dd>
  H3_FRAME_ERROR error code defined in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>REFUSED_STREAM (0x7):</dt>
          <dd>
  H3_REQUEST_REJECTED (in <xref target="http-error-codes" format="default"/>) is used to indicate that a
request was not processed. Otherwise, not applicable because QUIC handles
stream management.</dd>
          <dt>CANCEL (0x8):</dt>
          <dd>
  H3_REQUEST_CANCELLED in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>COMPRESSION_ERROR (0x9):</dt>
          <dd>
  Multiple error codes are defined in <xref target="QPACK" format="default"/>.</dd>
          <dt>CONNECT_ERROR (0xa):</dt>
          <dd>
  H3_CONNECT_ERROR in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>ENHANCE_YOUR_CALM (0xb):</dt>
          <dd>
  H3_EXCESSIVE_LOAD in <xref target="http-error-codes" format="default"/>.</dd>
          <dt>INADEQUATE_SECURITY (0xc):</dt>
          <dd>
  Not applicable, since QUIC is assumed to provide sufficient security on all
connections.</dd>
          <dt>H3_1_1_REQUIRED (0xd):</dt>
          <dd>
  H3_VERSION_FALLBACK in <xref target="http-error-codes" format="default"/>.</dd>
        </dl>
        <t>Error codes need to be defined for HTTP/2 and HTTP/3 separately.  See
<xref target="iana-error-codes" format="default"/>.</t>
        <section anchor="mapping-between-http2-and-http3-errors" numbered="true" toc="default">
          <name>Mapping Between HTTP/2 and HTTP/3 Errors</name>
          <t>An intermediary that converts between HTTP/2 and HTTP/3 may encounter error
conditions from either upstream. It is useful to communicate the occurrence of
error to the downstream but error codes largely reflect connection-local
problems that generally do not make sense to propagate.</t>
          <t>An intermediary that encounters an error from an upstream origin can indicate
this by sending an HTTP status code such as 502, which is suitable for a broad
class of errors.</t>
          <t>There are some rare cases where it is beneficial to propagate the error by
mapping it to the closest matching error type to the receiver. For example, an
intermediary that receives an HTTP/2 stream error of type REFUSED_STREAM from
the origin has a clear signal that the request was not processed and that the
request is safe to retry. Propagating this error condition to the client as an
HTTP/3 stream error of type H3_REQUEST_REJECTED allows the client to take the
action it deems most appropriate. In the reverse direction the intermediary
might deem it beneficial to pass on client request cancellations that are
indicated by terminating a stream with H3_REQUEST_CANCELLED.</t>
          <t>Conversion between errors is described in the logical mapping. The error codes
are defined in non-overlapping spaces in order to protect against accidental
conversion that could result in the use of inappropriate or unknown error codes
for the target version. An intermediary is permitted to promote stream errors to
connection errors but they should be aware of the cost to the connection for
what might be a temporary or intermittent error.</t>
        </section>
      </section>
    </section>
    <section anchor="change-log" numbered="true" toc="default">
      <name>Change Log</name>
      <ul empty="true" spacing="normal">
        <li>
          <strong>RFC Editor's Note:</strong>  Please remove this section prior to publication of a
final version of this document.</li>
      </ul>
      <section anchor="since-draft-ietf-quic-http-28" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-28</name>
        <ul spacing="normal">
          <li>CANCEL_PUSH is recommended even when the stream is reset (#3698, #3700)</li>
          <li>Use H3_ID_ERROR when GOAWAY contains a larger identifier (#3631, #3634)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-27" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-27</name>
        <ul spacing="normal">
          <li>Updated text to refer to latest HTTP revisions</li>
          <li>Use the HTTP definition of authority for establishing and coalescing
connections (#253, #2223, #3558)</li>
          <li>Define use of GOAWAY from both endpoints (#2632, #3129)</li>
          <li>Require either :authority or Host if the URI scheme has a mandatory
authority component (#3408, #3475)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-26" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-26</name>
        <ul spacing="normal">
          <li>No changes</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-25" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-25</name>
        <ul spacing="normal">
          <li>Require QUICv1 for HTTP/3 (#3117, #3323)</li>
          <li>Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, #3309)</li>
          <li>Clarify the definition of "malformed" (#3352, #3345)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-24" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-24</name>
        <ul spacing="normal">
          <li>Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended instead
(#3130,#3208)</li>
          <li>Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331)</li>
          <li>Some error codes are reserved for greasing (#3325,#3360)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-23" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-23</name>
        <ul spacing="normal">
          <li>Removed <tt>quic</tt> Alt-Svc parameter (#3061,#3118)</li>
          <li>Clients need not persist unknown settings for use in 0-RTT (#3110,#3113)</li>
          <li>Clarify error cases around CANCEL_PUSH (#2819,#3083)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-22" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-22</name>
        <ul spacing="normal">
          <li>Removed priority signaling (#2922,#2924)</li>
          <li>
            <t>Further changes to error codes (#2662,#2551):
            </t>
            <ul spacing="normal">
              <li>Error codes renumbered</li>
              <li>HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, HTTP_ID_ERROR, and others</li>
            </ul>
          </li>
          <li>Clarify how unknown frame types interact with required frame sequence
(#2867,#2858)</li>
          <li>Describe interactions with the transport in terms of defined interface terms
(#2857,#2805)</li>
          <li>Require the use of the <tt>http-opportunistic</tt> resource (RFC 8164) when scheme is
<tt>http</tt> (#2439,#2973)</li>
          <li>Settings identifiers cannot be duplicated (#2979)</li>
          <li>
            <t>Changes to SETTINGS frames in 0-RTT (#2972,#2790,#2945):
            </t>
            <ul spacing="normal">
              <li>Servers must send all settings with non-default values in their SETTINGS
frame, even when resuming</li>
              <li>If a client doesn't have settings associated with a 0-RTT ticket, it uses
the defaults</li>
              <li>Servers can't accept early data if they cannot recover the settings the
client will have remembered</li>
            </ul>
          </li>
          <li>Clarify that Upgrade and the 101 status code are prohibited (#2898,#2889)</li>
          <li>Clarify that frame types reserved for greasing can occur on any stream, but
frame types reserved due to HTTP/2 correspondence are prohibited
(#2997,#2692,#2693)</li>
          <li>Unknown error codes cannot be treated as errors (#2998,#2816)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-21" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-21</name>
        <t>No changes</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-20" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-20</name>
        <ul spacing="normal">
          <li>Prohibit closing the control stream (#2509, #2666)</li>
          <li>Change default priority to use an orphan node (#2502, #2690)</li>
          <li>Exclusive priorities are restored (#2754, #2781)</li>
          <li>Restrict use of frames when using CONNECT (#2229, #2702)</li>
          <li>Close and maybe reset streams if a connection error occurs for CONNECT (#2228,
#2703)</li>
          <li>Encourage provision of sufficient unidirectional streams for QPACK (#2100,
#2529, #2762)</li>
          <li>Allow extensions to use server-initiated bidirectional streams (#2711, #2773)</li>
          <li>Clarify use of maximum header list size setting (#2516, #2774)</li>
          <li>
            <t>Extensive changes to error codes and conditions of their sending
            </t>
            <ul spacing="normal">
              <li>Require connection errors for more error conditions (#2511, #2510)</li>
              <li>Updated the error codes for illegal GOAWAY frames (#2714, #2707)</li>
              <li>Specified error code for HEADERS on control stream (#2708)</li>
              <li>Specified error code for servers receiving PUSH_PROMISE (#2709)</li>
              <li>Specified error code for receiving DATA before HEADERS (#2715)</li>
              <li>Describe malformed messages and their handling (#2410, #2764)</li>
              <li>Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813)</li>
              <li>Refactor Push ID related errors (#2818, #2820)</li>
              <li>Rationalize HTTP/3 stream creation errors (#2821, #2822)</li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-19" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-19</name>
        <ul spacing="normal">
          <li>SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530)</li>
          <li>Non-zero bits in the Empty field of the PRIORITY frame MAY be treated as an
error (#2501)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-18" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-18</name>
        <ul spacing="normal">
          <li>Resetting streams following a GOAWAY is recommended, but not required
(#2256,#2457)</li>
          <li>
            <t>Use variable-length integers throughout (#2437,#2233,#2253,#2275)
            </t>
            <ul spacing="normal">
              <li>Variable-length frame types, stream types, and settings identifiers</li>
              <li>Renumbered stream type assignments</li>
              <li>Modified associated reserved values</li>
            </ul>
          </li>
          <li>Frame layout switched from Length-Type-Value to Type-Length-Value
(#2395,#2235)</li>
          <li>Specified error code for servers receiving DUPLICATE_PUSH (#2497)</li>
          <li>Use connection error for invalid PRIORITY (#2507, #2508)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-17" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-17</name>
        <ul spacing="normal">
          <li>HTTP_REQUEST_REJECTED is used to indicate a request can be retried (#2106,
#2325)</li>
          <li>Changed error code for GOAWAY on the wrong stream (#2231, #2343)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-16" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-16</name>
        <ul spacing="normal">
          <li>Rename "HTTP/QUIC" to "HTTP/3" (#1973)</li>
          <li>
            <t>Changes to PRIORITY frame (#1865, #2075)
            </t>
            <ul spacing="normal">
              <li>Permitted as first frame of request streams</li>
              <li>Remove exclusive reprioritization</li>
              <li>Changes to Prioritized Element Type bits</li>
            </ul>
          </li>
          <li>Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE (#2072)</li>
          <li>Set defaults for settings, allow request before receiving SETTINGS (#1809,
#1846, #2038)</li>
          <li>Clarify message processing rules for streams that aren't closed (#1972, #2003)</li>
          <li>Removed reservation of error code 0 and moved HTTP_NO_ERROR to this value
(#1922)</li>
          <li>Removed prohibition of zero-length DATA frames (#2098)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-15" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-15</name>
        <t>Substantial editorial reorganization; no technical changes.</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-14" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-14</name>
        <ul spacing="normal">
          <li>Recommend sensible values for QUIC transport parameters (#1720,#1806)</li>
          <li>Define error for missing SETTINGS frame (#1697,#1808)</li>
          <li>Setting values are variable-length integers (#1556,#1807) and do not have
separate maximum values (#1820)</li>
          <li>Expanded discussion of connection closure (#1599,#1717,#1712)</li>
          <li>HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-13" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-13</name>
        <ul spacing="normal">
          <li>Reserved some frame types for grease (#1333, #1446)</li>
          <li>Unknown unidirectional stream types are tolerated, not errors; some reserved
for grease (#1490, #1525)</li>
          <li>Require settings to be remembered for 0-RTT, prohibit reductions (#1541,
#1641)</li>
          <li>Specify behavior for truncated requests (#1596, #1643)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-12" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-12</name>
        <ul spacing="normal">
          <li>TLS SNI extension isn't mandatory if an alternative method is used (#1459,
#1462, #1466)</li>
          <li>Removed flags from HTTP/3 frames (#1388, #1398)</li>
          <li>Reserved frame types and settings for use in preserving extensibility (#1333,
#1446)</li>
          <li>Added general error code (#1391, #1397)</li>
          <li>Unidirectional streams carry a type byte and are extensible (#910,#1359)</li>
          <li>Priority mechanism now uses explicit placeholders to enable persistent
structure in the tree (#441,#1421,#1422)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-11" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-11</name>
        <ul spacing="normal">
          <li>Moved QPACK table updates and acknowledgments to dedicated streams (#1121,
#1122, #1238)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-10" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-10</name>
        <ul spacing="normal">
          <li>Settings need to be remembered when attempting and accepting 0-RTT (#1157,
#1207)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-09" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-09</name>
        <ul spacing="normal">
          <li>Selected QCRAM for header compression (#228, #1117)</li>
          <li>The server_name TLS extension is now mandatory (#296, #495)</li>
          <li>Specified handling of unsupported versions in Alt-Svc (#1093, #1097)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-08" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-08</name>
        <ul spacing="normal">
          <li>Clarified connection coalescing rules (#940, #1024)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-07" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-07</name>
        <ul spacing="normal">
          <li>Changes for integer encodings in QUIC (#595,#905)</li>
          <li>Use unidirectional streams as appropriate (#515, #240, #281, #886)</li>
          <li>Improvement to the description of GOAWAY (#604, #898)</li>
          <li>Improve description of server push usage (#947, #950, #957)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-06" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-06</name>
        <ul spacing="normal">
          <li>Track changes in QUIC error code usage (#485)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-05" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-05</name>
        <ul spacing="normal">
          <li>Made push ID sequential, add MAX_PUSH_ID, remove SETTINGS_ENABLE_PUSH (#709)</li>
          <li>Guidance about keep-alive and QUIC PINGs (#729)</li>
          <li>Expanded text on GOAWAY and cancellation (#757)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-04" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-04</name>
        <ul spacing="normal">
          <li>Cite RFC 5234 (#404)</li>
          <li>Return to a single stream per request (#245,#557)</li>
          <li>Use separate frame type and settings registries from HTTP/2 (#81)</li>
          <li>SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477)</li>
          <li>Restored GOAWAY (#696)</li>
          <li>Identify server push using Push ID rather than a stream ID (#702,#281)</li>
          <li>DATA frames cannot be empty (#700)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-03" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-03</name>
        <t>None.</t>
      </section>
      <section anchor="since-draft-ietf-quic-http-02" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-02</name>
        <ul spacing="normal">
          <li>Track changes in transport draft</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-01" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-01</name>
        <ul spacing="normal">
          <li>
            <t>SETTINGS changes (#181):
            </t>
            <ul spacing="normal">
              <li>SETTINGS can be sent only once at the start of a connection;
no changes thereafter</li>
              <li>SETTINGS_ACK removed</li>
              <li>Settings can only occur in the SETTINGS frame a single time</li>
              <li>Boolean format updated</li>
            </ul>
          </li>
          <li>Alt-Svc parameter changed from "v" to "quic"; format updated (#229)</li>
          <li>Closing the connection control stream or any message control stream is a
fatal error (#176)</li>
          <li>HPACK Sequence counter can wrap (#173)</li>
          <li>0-RTT guidance added</li>
          <li>Guide to differences from HTTP/2 and porting HTTP/2 extensions added
(#127,#242)</li>
        </ul>
      </section>
      <section anchor="since-draft-ietf-quic-http-00" numbered="true" toc="default">
        <name>Since draft-ietf-quic-http-00</name>
        <ul spacing="normal">
          <li>Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29)</li>
          <li>Changed from using HTTP/2 framing within Stream 3 to new framing format and
two-stream-per-request model (#71,#72,#73)</li>
          <li>Adopted SETTINGS format from draft-bishop-httpbis-extended-settings-01</li>
          <li>Reworked SETTINGS_ACK to account for indeterminate inter-stream order (#75)</li>
          <li>Described CONNECT pseudo-method (#95)</li>
          <li>Updated ALPN token and Alt-Svc guidance (#13,#87)</li>
          <li>Application-layer-defined error codes (#19,#74)</li>
        </ul>
      </section>
      <section anchor="since-draft-shade-quic-http2-mapping-00" numbered="true" toc="default">
        <name>Since draft-shade-quic-http2-mapping-00</name>
        <ul spacing="normal">
          <li>Adopted as base for draft-ietf-quic-http</li>
          <li>Updated authors/editors list</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements" toc="default">
      <name>Acknowledgements</name>
      <t>The original authors of this specification were Robbie Shade and Mike Warres.</t>
      <t>The IETF QUIC Working Group received an enormous amount of support from many
people. Among others, the following people provided substantial contributions to
this document:</t>
      <ul spacing="normal">
        <li>Bence Beky</li>
        <li>Daan De Meyer</li>
        <li>Martin Duke</li>
        <li>Roy Fielding</li>
        <li>Alan Frindell</li>
        <li>Alessandro Ghedini</li>
        <li>Nick Harper</li>
        <li>Ryan Hamilton</li>
        <li>Christian Huitema</li>
        <li>Subodh Iyengar</li>
        <li>Robin Marx</li>
        <li>Patrick McManus</li>
        <li>Luca Nicco</li>
        <li>
          <t>        <contact asciiFullname="Kazuho Oku" fullname="奥 一穂"/>
          </t>
        </li>
        <li>Lucas Pardue</li>
        <li>Roberto Peon</li>
        <li>Julian Reschke</li>
        <li>Eric Rescorla</li>
        <li>Martin Seemann</li>
        <li>Ben Schwartz</li>
        <li>Ian Swett</li>
        <li>Willy Taureau</li>
        <li>Martin Thomson</li>
        <li>Dmitri Tikhonov</li>
        <li>Tatsuhiro Tsujikawa</li>
      </ul>
      <t>A portion of Mike's contribution was supported by Microsoft during his
employment there.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
6s0af9rdTKnGwf3tP9w/pgfEnZ7W8PFZS/0L5AHJeSTnG8XkPPbpJ5S2xLDr
PSHPOJO7DLcoIgnU+M2j6TVwSgaVSQzHTRKRutSpzb5hgtGCE54wkSje2L56
KmvtRHQYytO009iYXZZcDwLtErBEqBQUTVQujx598+uvEwpmrckQVKDqddHd
Y0Waw/eHh3SicPluMOc3uwNlegFDr/LlM9YJMJ5woFaMX03g1VwibiNvgGSP
rZID0QHwJFBdkBqT1MAIxfyepn4yI2h+8Gsm5xCCbJO94ObV7EWM2Mo9cSCN
nmKcN0Tov+LHvRlvGDfj/i2BY0BFWbIvkn1OVv+Ha5kQUbSkTi3zteRqYMBU
lisBM/JZVeR0sHu4pSY9yHZv4GS6EDOeVvmiiFE5XlF0RPpqQ5JxUnOqFSuA
ixDLtlMxS1/aT1iN8Jg8TVTtk+kk3v7wMJWmPSHSQAHN9TS4W8Z57hVX8AYd
4rpYmqSLNxW1F0/kbfR8uvpI1odirJAu/1qSn5ANlYQqs+JZMccdY63oeGjT
R72+qvgravJBpypMFw+7LFq3gezpI+cEuvmawhQWxfr67NgQ/ppNe38y/Sgb
fud/BY/Gfc34z1+ltyP8JeUSyZ+/js/6FP/79OOzPj++Ok7Hy5Cb0F/U1Yme
X3j//qyaD5c+epQ8Kq0E/NP4qBV4Sx59RH85/ypdUG9WX04zPvo4mTXpQxAf
NbRcMuuT5NGYNJvMmkAi7dGvk0fTanwfeddvPuVdpX5qb4e/TWaVitG/9h4d
n/W7T5l1/NHvP+VRXzswPvo8WXDSLSE++ptvDlZz7N9WregorRBVfXCqCPUp
XUReMNFu2wtLkP3b2m3ui699Qg/h/z85nFB/VRgclKbbOyTbF8mf04PYCeja
qQvAatCYEoXKEMFJw9M05fvzVSuz3TOvU9lke+Fv1aiiKvT30agoWPd306gE
GRP+LhqVuPz+u2hUdob/dfqUakzhN2hM2Q6NKXy2xpT9N9SY2qexp+85XFcp
DrRdXeNcrD1Z23D+3Uyt5q34quTxSioyK+QaO5BzerAWrhltUitxezqn+5Jc
hJzUvMBWNZpg7BL1qW4WpcXBhlOyADI5i3doJ81xnUlm/Zu0ps+WA/47FvVu
x4eSSrtmP6RY/TWTvd0hn3rTf1zfGqxxIGd7a/y4QuS/+7QRH//dR3zydx/x
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
HLSA7wEA

-->

</rfc>
