<?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.5.6 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hamilton-httpbis-h3-websockets-01" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.47.0 -->
  <front>
    <title>Bootstrapping WebSockets with HTTP/3</title>
    <seriesInfo name="Internet-Draft" value="draft-hamilton-httpbis-h3-websockets-01"/>
    <author initials="R." surname="Hamilton" fullname="Ryan Hamilton">
      <organization>Google</organization>
      <address>
        <email>rch@google.com</email>
      </address>
    </author>
    <date year="2021" month="September" day="01"/>
    <area>TODO</area>
    <workgroup>HTTP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The mechanism for running the WebSocket Protocol over a single stream
of an HTTP/2 connection is equally applicable to HTTP/3, but needs to be
separately registered.  This document describes the mechanism for HTTP/3.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    HTTP Working Group mailing list (ietf-http-wg@w3.org),
    which is archived at <eref target="http://lists.w3.org/Archives/Public/ietf-http-wg/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/RyanTheOptimist/httpbis-h3-websockets"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t><xref target="RFC8441" format="default"/> defines an extension to HTTP/2 which is also useful in HTTP/3.
This extension makes use of an HTTP/2 setting.  <xref section="A.3" sectionFormat="of" target="HTTP3" format="default"/>
describes the required updates for HTTP/2 settings to be used with HTTP/3.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL</bcp14>
NOT", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP&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>
    </section>
    <section anchor="websockets-upgrade-over-http3" numbered="true" toc="default">
      <name>Websockets Upgrade over HTTP/3</name>
      <t><xref target="RFC8441" format="default"/> defines a mechanism for running the WebSocket Protocol
<xref target="RFC6455" format="default"/> over a single stream of an HTTP/2 connection. It defines
an Extended CONNECT method which specifies a new ":protocol" pseudo
header field and new semantics for the ":path" and ":authority" pseudo
header fields. It also defines a new HTTP/2 SETTING sent by a server to
allow the client to use  Extended CONNECT.</t>
      <t>The HTTP/3 stream closure is also analogous to the TCP connection
closure of <xref target="RFC6455" format="default"/>. Orderly TCP-level closures are represented as
a FIN bit on the stream (<xref section="4.2" sectionFormat="of" target="HTTP3" format="default"/>). RST exceptions are
represented with an stream error (<xref section="8" sectionFormat="of" target="HTTP3" format="default"/>) of type
H3_REQUEST_CANCELLED (<xref section="8.1" sectionFormat="of" target="HTTP3" format="default"/>)</t>
      <t>The semantics of the headers and SETTING are identical to those
in HTTP/2 as defined <xref target="RFC8441" format="default"/>. <xref section="A.3" sectionFormat="of" target="HTTP3" format="default"/> requires thatt
HTTP/3 settings be registered separately for HTTP/3. The
SETTINGS_ENABLE_CONNECT_PROTOCOL value is 0x08 (decimal 8), as in HTTP/2.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>This document introduces no new security considerations beyond those
discussed in <xref target="RFC8841" format="default"/>.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document registers a new setting in the "HTTP/3 Settings"
registry (<xref target="HTTP3" format="default"/>).</t>
      <table align="center">
        <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">SETTINGS_ENABLE_CONNECT_PROTOCOL</td>
            <td align="center">0x08</td>
            <td align="left">This document</td>
            <td align="left">0</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="HTTP3">
        <front>
          <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
          <author fullname="Mike Bishop" initials="M." surname="Bishop">
            <organization>Akamai</organization>
          </author>
          <date day="2" month="February" year="2021"/>
          <abstract>
            <t>   The QUIC transport protocol has several features that are desirable
   in a transport for HTTP, such as stream multiplexing, per-stream flow
   control, and low-latency connection establishment.  This document
   describes a mapping of HTTP semantics over QUIC.  This document also
   identifies HTTP/2 features that are subsumed by QUIC, and describes
   how HTTP/2 extensions can be ported to HTTP/3.

DO NOT DEPLOY THIS VERSION OF HTTP

   DO NOT DEPLOY THIS VERSION OF HTTP/3 UNTIL IT IS IN AN RFC.  This
   version is still a work in progress.  For trial deployments, please
   use earlier versions.

Note to Readers

   Discussion of this draft takes place on the QUIC working group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/search/?email_list=quic.

   Working Group information can be found at https://github.com/quicwg;
   source code and issues list for this draft can be found at
   https://github.com/quicwg/base-drafts/labels/-http.

            </t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC8441">
        <front>
          <title>Bootstrapping WebSockets with HTTP/2</title>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
          <seriesInfo name="RFC" value="8441"/>
          <author fullname="P. McManus" initials="P." surname="McManus">
            <organization/>
          </author>
          <date month="September" year="2018"/>
          <abstract>
            <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="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 fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="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 fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC6455">
        <front>
          <title>The WebSocket Protocol</title>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
          <seriesInfo name="RFC" value="6455"/>
          <author fullname="I. Fette" initials="I." surname="Fette">
            <organization/>
          </author>
          <author fullname="A. Melnikov" initials="A." surname="Melnikov">
            <organization/>
          </author>
          <date month="December" year="2011"/>
          <abstract>
            <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code.  The security model used for this is the origin-based security model commonly used by web browsers.  The protocol consists of an opening handshake followed by basic message framing, layered over TCP.  The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or &lt;iframe&gt;s and long polling).  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
      </reference>
      <reference anchor="RFC8841">
        <front>
          <title>Session Description Protocol (SDP) Offer/Answer Procedures for Stream Control Transmission Protocol (SCTP) over Datagram Transport Layer Security (DTLS) Transport</title>
          <seriesInfo name="DOI" value="10.17487/RFC8841"/>
          <seriesInfo name="RFC" value="8841"/>
          <author fullname="C. Holmberg" initials="C." surname="Holmberg">
            <organization/>
          </author>
          <author fullname="R. Shpount" initials="R." surname="Shpount">
            <organization/>
          </author>
          <author fullname="S. Loreto" initials="S." surname="Loreto">
            <organization/>
          </author>
          <author fullname="G. Camarillo" initials="G." surname="Camarillo">
            <organization/>
          </author>
          <date month="January" year="2021"/>
          <abstract>
            <t>The Stream Control Transmission Protocol (SCTP) is a transport protocol used to establish associations between two endpoints. RFC 8261 specifies how SCTP can be used on top of the Datagram Transport Layer Security (DTLS) protocol, which is referred to as SCTP-over-DTLS. </t>
            <t>This specification defines the following new Session Description Protocol (SDP) protocol identifiers (proto values): "UDP/DTLS/SCTP" and "TCP/DTLS/SCTP". This specification also specifies how to use the new proto values with the SDP offer/answer mechanism for negotiating SCTP-over-DTLS associations.</t>
          </abstract>
        </front>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIADiQL2EAA61W727bNhD/zqe4eV/aovLixN1SYRvm2m4TwLGz2FlRFEVA
S2eLiESqJBXHS/Mue5Y92Y6kpNhrinbA/MXU6e54v9/9UxRFzAqbYwydV0pZ
YzUvSyHX8BaXc5VcozWwETaDk8Xi/IejDktVInlB+qnmKxtlvBC5VTLKrC2X
wkTZUbTBpQmm0UGPJdziWultDEKuFGOi1DFYXRl7eHDw8uCQcY08hsVsNGMb
pa/XWlVl7O9j17glURrDqbSoJdpo5G5lzFgu0yueK0mRbNEwU3Btrz5WyqKJ
QSpWihjeW5U8B6O01bgydNoW7vCBMV7ZTOmYQcSAfgHRxZZLOKkBebnSay7F
n9wKJWN4o9Q6R/8CCy7yGHSS/bb20m6iCsak0gUp3yB59giOKPRo1A1cCbSr
6GMlEk9WdNQnMoiS1oSxKIqAL10SEgK5yBAKTDIKwRRAiqArKV1yLL1pEwTn
WhFQlYO6QQ0cDKnkCOQGecHUChwsl75DSJSUmDg4IAzgx4rn+RYo5blI+JKM
rKoz/RyWlQWJmBonXCIzWHJNySQDjWthKCOYdgEWGbmisqgKlBZSNIkWSzQ+
yP3wg+duwFmINCU22fcuuVqllQ+Lsbu77y5eD4/7/d79PXlbCUm+CAHeWpTG
Rd7EeAibTCSZQ8Jzo6AyuKpyKrP2Ih/ag2HBr8kXqcEeKQatJcoIyt3doCxR
puIWBt0jp+WTeH/P9mFpYk4QeqjKlBgxD+habzVr7rZ0t4MIPUEeKnlDbFFQ
DlsKI4dT+OeQd6p8cKVvoHN2OV90nod/mM78+WL8++XpxXjkzvOTwWTSHlit
MT+ZXU5GD6cHy+Hs7Gw8HQVjksKeiHXOBu/ojYuqMztfnM6mg0nHkWr38kxd
WyMUrjdLjZaActMylTqbV8Pzv//q9SEk9bDXe0lJrTPc+6lPD5sMZbhNSaqs
8EgcbxlVJXLtvFCRQsJLYSnNpGvAZGojIaMCJDqfvXfMfIjh52VS9vq/1gIH
eE/YcLYn9Jx9LvnMOJD4iOiRa1o29+T/Yno/3sG7veeG9x2hq5q37WCFy3Kt
eYqh5UNlfal1/tMMqX382H/xgnw8NlDgCwOlC6e2uZSRwti1XUplMJxNp+Ph
gsKgmZvWPWtKTMRK+PgkbqATl3UEHSgNVqliGRJADaSUp75AnJ6hyUt9k4SW
cxjIktusEwo2DoNd2O2jbowP0g+LB3qc2xrNfLxYnE7f0C1U4cutg47acWAV
oyJUG39jkgv33vqJA58B7YYODklpSEtyZSpqmWZWcUnLa60qPyac08XwfIdM
1ugT2bsZ6cJMExpqFNKPcrzBvHFtfEtqpE504Ydm5PD6dApLYcHNzazN4ZO7
u3m9B/rdw51B97QLF9Q7eJtgWY8njWzXq59llN/aE2pNidjxd7zrzZ3ttkR2
cnTl+m88X1wNB9PheDIZj/asur1du0DhQ7KdGxKEXIaR2eTKoRapG6YJzwOb
yiATbYnSvAjJTmG3QbpfnvbNfHfDnlvLmlQ2k32JOxsQdvbizpKjtYisjnF+
NZ4OXk3GV3WFXJ1fzBaz4WwCNzyvfFEc3B4cw5OUmqIgFMdP/ZhrMXRd9xNV
latstzwMIda83Re7g1nU25Sil6rumdow2TMkGFtFRAa+UmGSypgwtmuejj1P
fkUPpoOv3Nsw0rRUzVbYHNSmNYnzmsQOCwZ6C0/ee94/PHW78RNEX/lBqwKP
K+8qkL/6RpjSRx489vsE8IfPA53mYS4lHuODAu1nXuXW+/uG+GJ/iL8xvq8V
CcXny8MFss95G99Bc/rf+fPfakueXLsyGCTXUm1yTNfuesPuYlkVS9cFv3RW
NNewc09lQV/ywFtNWtH/AO4EaqNmDAAA

-->

</rfc>
