<?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.2.0 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC6454 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6454.xml">
<!ENTITY RFC6455 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6455.xml">
<!ENTITY RFC7230 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7230.xml">
<!ENTITY RFC7540 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7540.xml">
]>

<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-mcmanus-httpbis-h2-websockets-01" category="std">

  <front>
    <title abbrev="I-D">Bootstrapping WebSockets with HTTP/2</title>

    <author initials="P." surname="McManus" fullname="Patrick McManus">
      <organization>Mozilla</organization>
      <address>
        <email>mcmanus@ducksong.com</email>
      </address>
    </author>

    <date year="2017" month="October" day="26"/>

    <area>Applications and Real Time</area>
    
    

    <abstract>


<t>This document defines a mechanism for running the WebSocket Protocol
<xref target="RFC6455"/> over a single stream of an HTTP/2 connection.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>The Hypertext Transfer Protocol (HTTP) provides compatible resource
level semantics across different versions but it does not offer
compatibility at the connection management level. Other protocols,
such as WebSockets, that rely on connection management details of HTTP
must be updated for new versions of HTTP.</t>

<t>The WebSocket Protocol <xref target="RFC6455"/> uses the HTTP/1.1 <xref target="RFC7230"/>
Upgrade mechanism to transition a TCP connection from HTTP into a
WebSocket connection. A different approach must be taken with HTTP/2
<xref target="RFC7540"/>. The multiplexing nature of HTTP/2 does not allow
connection wide header and status codes such as the Upgrade and
Connection request headers or the 101 response code due to its
multiplexing nature. These are all required by the <xref target="RFC6455"/>
connection establishment process.</t>

<t>Being able to bootstrap WebSockets from HTTP/2 allows one TCP
connection to be easily shared by both protocols and extends HTTP/2’s
more efficient use of the network to WebSockets.</t>

<t>This document extends the HTTP/2 CONNECT method. The extension allows
the substitution of a new protocol name to connect to rather than the
external host normally used by CONNECT. The result is a tunnel on a
single HTTP/2 stream that can carry data for WebSockets (or any other
protocol). The other streams on the connection may carry more extended
CONNECT tunnels or traditional HTTP/2 data.</t>

<t>Streams that have been successfully established as protocol tunnels
proceed to establish and utilize the WebSocket Protocol using the
procedure defined by <xref target="RFC6455"/> treating the stream as if were the
connection in that specification.</t>

<t>This tunneled stream will be multiplexed with other regular streams on
the connection and enjoys the normal priority, cancellation, and flow
control features of HTTP/2.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>In this document, the key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” are to be interpreted as
described in BCP 14, <xref target="RFC2119"/>.</t>

</section>
<section anchor="the-enableconnectprotocol-settings-parameter" title="The ENABLE_CONNECT_PROTOCOL SETTINGS Parameter">

<t>This document adds a new SETTINGS Parameter to those defined by
<xref target="RFC7540"/> Section 6.5.2.</t>

<t>The new parameter is ENABLE_CONNECT_PROTOCOL (type = 0x8). The value
of the parameter MUST be 0 or 1.</t>

<t>Upon receipt of ENABLE_CONNECT_PROTOCOL with a value of 1 a client MAY
use the Extended CONNECT definition of this document when creating new
streams. Receipt of this parameter by a server does not have any
impact.</t>

<t>A sender MUST NOT send a ENABLE_CONNECT_PROTOCOL parameter with the
value of 0 after previously sending a value of 1.</t>

<t>The use of a SETTINGS Parameter to opt-in to an otherwise incompatible
protocol change is a use of “Extending HTTP/2” defined by section 5.5
of <xref target="RFC7540"/>. If a client were to use the provisions of the extended
CONNECT method defined in this document without first receiving a
ENABLE_CONNECT_PROTOCOL parameter with the value of 1 it would be a
protocol violation.</t>

</section>
<section anchor="the-extended-connect-method" title="The Extended CONNECT Method">

<t>The CONNECT Method of <xref target="RFC7540"/> Section 8.3 is modified in
the following ways:</t>

<t><list style="symbols">
  <t>A new pseudo-header :protocol MAY be included on request HEADERS
indicating the desired protocol to be spoken on the tunnel created
by CONNECT. The pseudo-header is single valued and contains a value
from the HTTP Upgrade Token Registry defined by <xref target="RFC7230"/>.</t>
  <t>On requests bearing the :protocol pseudo-header, the :scheme and
:path pseudo-header fields SHOULD be included.</t>
  <t>On requests bearing the :protocol pseudo-header, the :authority
pseudo-header field is interpreted according to <xref target="RFC7540"/> Section
8.1.2.3 instead of <xref target="RFC7540"/> Section 8.3. In particular the server
MUST not make a new TCP connection to the host and port indicated by
the :authority.</t>
</list></t>

<t>Upon receiving a CONNECT request bearing the :protocol pseudo-header
the server establishes a tunnel to another service of the protocol
type indicated by the pseudo-header. This service may or may not be
co-located with the server.</t>

</section>
<section anchor="using-extended-connect-to-bootstrap-the-websocket-protocol" title="Using Extended CONNECT To Bootstrap The WebSocket Protocol">

<t>The pseudo-header :protocol MUST be included in the CONNECT request
and it MUST have a value of websocket to initiate a WebSocket
connection on an HTTP/2 stream. Other HTTP request and response
headers, such as those for manipulating cookies, may be included in
the HEADERS with the CONNECT :method.</t>

<t>Parameters specific to WebSockets connection establishment, such as
the version and sub-protocol are carried in a preamble within the
HTTP/2 tunnel. This information was included in the HTTP headers in
HTTP/1 but can now be conveyed in an HTTP independent fashion because
the use of CONNECT with a new extension specific pseudo-header assures
that the request can only be generated by a WebSocket client (See also
Security Considerations).</t>

<t>The WebSocket peers process the opening handshake of <xref target="RFC6455"/>
Section 4, using the information from the HTTP HEADERS and the
connection preamble defined in this document. Substitutions are made
for the preamble types defined here that were previously carried in
HTTP/1 headers. For example, :authority pseudo-header provides the
information from the Host header, and the Version preamble type
provides the information from the Sec-WebSocket-Version
header.</t>

<t>Implementations using this extended CONNECT to bootstrap WebSockets do
not do the processing of the HTTP/1 Sec-WebSocket-Key and
Sec-WebSocket-Accept headers as that functionality has been superceded
by the :protocol pseudo-header.</t>

<t>After successfully processing the opening handshake the peers should
proceed with The WebSocket Protocol <xref target="RFC6455"/> using the HTTP/2
stream from the CONNECT transaction as if it were the TCP connection
referred to in <xref target="RFC6455"/>. The state of the WebSocket connection at
this point is OPEN as defined by {{RFC6455} Section 4.1.</t>

<section anchor="connection-preamble" title="Connection Preamble">

<t>The connection preamble contains parameter information necessary for
processing the WebSocket opening handshake. It is exchanged in both
directions as the content of the first DATA frames on the HTTP/2
stream. The connection preamble parameter list is prefaced by a
constant 16 byte sequence. This marker facilitates fast failure in
cases where the endpoints are confused about what protocol is being
spoken. The 16 bytes are: CA A4 02 0A 75 19 4D 49 86 4E A7 8F 14 86 CF
08.</t>

<t>Parameters such as WebSocket version, sub-protocol, and available
extensions are exchanged as a series of Type, Length, Value (TLV)
tuples. The preamble format is specific to WebSockets over HTTP/2. The
tuples may appear in any order with the exception of the End-Preamble
type which must appear last.</t>

<t>Each tuple consists of 1 type byte, 2 bytes specifying the
network-order length of the value, and the length specified number of
bytes containing the value.</t>

<t>Multiple TLV tuples of the same type form an ordered list of values. A
single tuple contains only a single value (i.e. comma separated lists
are not supported).</t>

<t>Several HTTP headers from <xref target="RFC6455"/> have corresponding preamble
types defined here. Sec-WebSocket-Key and Sec-WebSocket-Accept are no
longer used and do not have corresponding definitions.</t>

<section anchor="version-type" title="Version Type">

<t>The Version type (0x00) MUST have a length of 1 and indicates the
version of the WebSocket Protocol available. This corresponds to the
Sec-WebSocket-Version header of <xref target="RFC6455"/>. It MUST appear at least
one time in the client preamble and MUST appear exactly one time in
the server preamble. The value defined by <xref target="RFC6455"/> is 0x0d.</t>

</section>
<section anchor="subprotocol-type" title="Subprotocol Type">

<t>The Subprotocol type (0x01) corresponds to the Sec-WebSocket-Protocol
header of <xref target="RFC6455"/> Section 11.3.4. It may appear any number of times in the
request preamble but MUST NOT appear more than once in the server preamble.</t>

</section>
<section anchor="extensions-type" title="Extensions Type">

<t>The Extensions type (0x02) corresponds to the
Sec-WebSocket-Extensions header of <xref target="RFC6455"/> Section 11.3.2. It may
appear any number of times in the request preamble. The response
preamble echoes the TLVs of the extensions selected.</t>

</section>
<section anchor="origin-type" title="Origin Type">

<t>The Origin type (0x03) corresponds to the Origin header defined by
<xref target="RFC6454"/> and its use by <xref target="RFC6455"/>. Specifically this tuple MUST
appear exactly once in a request preamble generated by a browser
client and MAY appear once in requests from other clients. It MUST NOT
appear in response preambles.</t>

</section>
<section anchor="end-preamble-type" title="End-Preamble Type">

<t>The End-Preamble type (0xff) MUST be the last TLS in the preamble and
MUST appear one time. It has a length of 0.</t>

</section>
</section>
<section anchor="example" title="Example">
<figure><artwork><![CDATA[
[[ From Client ]]                        [[ From Server ]]
 
                                         SETTINGS
                                         ENABLE_CONNECT_PROTOCOL = 1

HEADERS + END_HEADERS
:method = CONNECT
:protocol = websocket
:scheme = wss
:path = /chat
:authority = server.example.com:443

DATA
0xCA 0xA4 0x02 0x0A
0x75 0x19 0x4D 0x49
0x86 0x4E 0xA7 0x8F
0x14 0x86 0xCF 0x08
0x00 0x0001 0x0d
0x01 0x0004 chat
0x01 0x0009 superchat
0x02 0x0012 permessage-deflate
0x03 0x0016 http://www.example.com
0xFF 0x0000

                                         HEADERS + END_HEADERS
                                         :status = 200

                                         DATA
                                         0xCA 0xA4 0x02 0x0A
                                         0x75 0x19 0x4D 0x49
                                         0x86 0x4E 0xA7 0x8F
                                         0x14 0x86 0xCF 0x08
                                         0x00 0x0001 0x0d
                                         0x01 0x0004 chat
                                         0xFF 0x0000

DATA
WebSocket Data

                                         DATA + END_STREAM
                                         WebSocket Data

DATA + END_STREAM
WebSocket Data
]]></artwork></figure>

</section>
</section>
<section anchor="design-considerations" title="Design Considerations">

<t>A more native integration with HTTP/2 is certainly possible with
larger additions to HTTP/2. This design was selected to minimize the
solution complexity while still addressing the primary concern of running
HTTP/2 and WebSockets concurrently.</t>

</section>
<section anchor="about-intermediaries" title="About Intermediaries">

<t>This document does not change how WebSockets interacts with HTTP
proxies. If a client wishing to speak WebSockets connects via HTTP/2
to a HTTP proxy it should continue to use a traditional (i.e. not with
a :protocol pseudo-header) CONNECT to tunnel through that proxy to the
WebSocket server via HTTP.</t>

<t>The resulting version of HTTP on that tunnel determines whether
WebSockets is initiated directly or via a modified CONNECT request
described in this document.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t><xref target="RFC6455"/> ensures that non WebSockets clients, especially
XMLHttpRequest based clients, cannot make a WebSocket connection. Its
primary mechanism for doing that is the use of Sec- prefixed request
headers that cannot be created by XMLHttpRequest based clients. This
specification addresses that concern in two ways:</t>

<t><list style="symbols">
  <t>The CONNECT method is prohibited from being used by XMLHttpRequest</t>
  <t>The use of a pseudo-header is something that is connection specific
and HTTP/2 does not ever allow to be created outside of the protocol stack.</t>
</list></t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document establishes a entry for the HTTP/2 Settings Registry
that was established by <xref target="RFC7540"/> Section 11.3</t>

<t>Name: ENABLE_CONNECT_PROTOCOL</t>

<t>Code: 0x8</t>

<t>Initial Value: 0</t>

<t>Specification: This document</t>

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>The 2017 HTTP Workshop had a very productive discussion that helped
determine the key problem and acceptable level of solution complexity.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC6454;
&RFC6455;
&RFC7230;
&RFC7540;


    </references>




  </back>

<!-- ##markdown-source:
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
GL586m5cQysH0gSrhf77XzjOu0BQMAAA

-->

</rfc>

