Re: [hybi] Fwd: New Version Notification for draft-mcmanus-httpbis-h2-websockets-01.txt

John Fallows <> Thu, 26 October 2017 21:47 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4295F13F61C for <>; Thu, 26 Oct 2017 14:47:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.888
X-Spam-Status: No, score=-1.888 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Ul635gEIkkoW for <>; Thu, 26 Oct 2017 14:47:23 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:400c:c08::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8E4B01397F3 for <>; Thu, 26 Oct 2017 14:47:23 -0700 (PDT)
Received: by with SMTP id i35so3520987uah.9 for <>; Thu, 26 Oct 2017 14:47:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=e8ja3jA8v1VQLqBU0Ssxu9lOLMyeiGb5zRC9qAgyOE0=; b=U5Bsu7feWWADTffGSPyJvN12XkfsLVTtXGx28B5/LqBatMmnSaou8rfgl1qorm1j3Z TQaa0G5E//FqvueC60lRV7c5SSIMIZlxcRDL1Ts39ypQLlgy7oShQop/cuyu4oUattUU YpFGFyRFu+SgCEGFMwxiGeBeYdx/LDBkQ2shElm+wAcDqdAxiLdKXKZ0EIn9zM5BOQq6 5H3YED2tfVvWRoVYUItuTCnDgevz93IIx/b3zYNHc29zJGYbuVxqXUp287lcjbn525hq 58o6ePJfq7Y1IJ7iowCZMx96Td7xSZUgw9XaOBvQNvFD0ccFTMHJkqZoH1w9n6B32dQV bOGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=e8ja3jA8v1VQLqBU0Ssxu9lOLMyeiGb5zRC9qAgyOE0=; b=atAVZMiOesULnScJyWwPIQo5oCOWsjTqvR1V4RtOfNucgnF9ZDXPYMZcaed4HHOvKA SismYFHn8ZU540pefFH6Bi5E5BmRZOs9m8nYThRJnQ5Wuo3YO75/i+A+GY1n4Mves64u PHa3kAjmHA9S7XSAERwmZ8kAaf4Eb/dB0R3S2jAY0VNb3YU3QEP++zTetJQzVpAqJoLk 0sOpDQmI8bD5scTxgmAzMhepEa5bOnBc0fKvr1Mn5nCN8OvZp4zzpQWoGIUvvNSwGcv5 XtYNk0fzid/NxzFNkURnzIhYpJCvQ5+8Xgd3PQr2aGdoLMpGYHwuCccBlUzRu2zppRU+ EjIA==
X-Gm-Message-State: AMCzsaUuhbG2djNnRHOAU3IiwZWovw5wqUvcsuZpGQluwwtcFtmK6vIc wx6B16ZrlSK393JYtuLe0ZquO8MQZDL8BSaAE9u4Dg==
X-Google-Smtp-Source: ABhQp+Tx1wZ+lfiWbvEbSSWModMEM8l1mjnM+KzYw9MfWZx0ZTnp8iPThyM19crBG26eCAzYa4bre7pde/ZaQA6t1IU=
X-Received: by with SMTP id a88mr5601879uaa.31.1509054442472; Thu, 26 Oct 2017 14:47:22 -0700 (PDT)
MIME-Version: 1.0
References: <> <>
In-Reply-To: <>
From: John Fallows <>
Date: Thu, 26 Oct 2017 21:47:11 +0000
Message-ID: <>
To: Patrick McManus <>
Cc: hybi <>, HTTP Working Group <>
Content-Type: multipart/alternative; boundary="94eb2c122d0cfd9a72055c7a1dab"
Archived-At: <>
Subject: Re: [hybi] Fwd: New Version Notification for draft-mcmanus-httpbis-h2-websockets-01.txt
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Server-Initiated HTTP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 26 Oct 2017 21:47:26 -0000

Hi Patrick,

Many thanks for spearheading this latest effort to define WebSocket over
HTTP/2, it's really encouraging to see the progress.

I recall from the early days of the WebSocket protocol design, probably
around the time we moved it from W3C HTML5 to IETF HyBi, that the client
handshake required sending additional content after the GET w/ Upgrade
HTTP/1.1 request.

This approach led to increased implementation complexity because the
HTTP/1.1 layer on the server now needed to know how to special case the
WebSocket usage of GET. It was also a bit trickier than desired because
that special case processing of GET now spanned over headers and some
initial content.

Ultimately, that approach was dropped in favor of a single request-response
to define the WebSocket handshake over HTTP/1.1, with no additional request
payload needed to process the handshake, making the implementation simpler
and with better abstraction layering.

The current proposal for WebSocket over HTTP/2 seems to be following a
similar approach to that described above at the moment, with the HEADERS
frame (requiring special-case processing of CONNECT) and first DATA frame
both needed to process the server-side WebSocket handshake over HTTP/2.

Suggest we instead fold the origin and relevant RFC-6455 defined HTTP
headers into the HEADERS frame for simplicity, recognizing as Mark noted
that CONNECT is not really intended for use directly at the origin server,
and instead use a TUNNEL method with corresponding :protocol pseudo-header,
where the value of the TUNNEL :protocol pseudo-header drives the
expectation of additional HTTP/2 headers that should be present.

[[ From Client ]]                        [[ From Server ]]

                                            ENABLE_TUNNEL_PROTOCOL = 1

   :method = TUNNEL
   :protocol = websocket
   :scheme = https
   :path = /chat
   :authority =
   origin =
   sec-websocket-protocol = chat, superchat
   sec-websocket-version = 13

                                            HEADERS + END_HEADERS
                                            :status = 200
                                       sec-websocket-protocol = chat

   WebSocket Frames

                                            DATA + END_STREAM
                                            WebSocket Frames

   WebSocket Frames

Note also that the scheme is "https" rather than "wss" because the HTTP
request is still "https" until *after* the TUNNEL has been established, and
the TUNNEL protocol being selected is based on :protocol header rather than
the :scheme header.

Hope this is helpful and interested to hear your thoughts and feedback.

Kind Regards,
John Fallows
CTO, Kaazing

On Thu, Oct 26, 2017 at 10:32 AM Patrick McManus <>

> This is an updated based on the direction discussed.. I'm kind of on the
> fence about whether its better. Its nice there is no h1 in there.
> ---------- Forwarded message ----------
> From: <>
> Date: Thu, Oct 26, 2017 at 1:30 PM
> Subject: New Version Notification for
> draft-mcmanus-httpbis-h2-websockets-01.txt
> To: Patrick McManus <>
> A new version of I-D, draft-mcmanus-httpbis-h2-websockets-01.txt
> has been successfully submitted by Patrick McManus and posted to the
> IETF repository.
> Name:           draft-mcmanus-httpbis-h2-websockets
> Revision:       01
> Title:          Bootstrapping WebSockets with HTTP/2
> Document date:  2017-10-26
> Group:          Individual Submission
> Pages:          9
> URL:
> Status:
> Htmlized:
> Htmlized:
> Diff:
> Abstract:
>    This document defines a mechanism for running the WebSocket Protocol
>    [RFC6455] over a single stream of an HTTP/2 connection.
> Please note that it may take a couple of minutes from the time of
> submission
> until the htmlized version and diff are available at
> The IETF Secretariat
> _______________________________________________
> hybi mailing list
*John Fallows*
CTO*  |  *đź“ž+1.415.215.6597
KAAZING >|<  when real-time matters™ <>  |  Blog
<>  |  Twitter <>