Re: [hybi] comments on draft-ietf-hybi-websocket-requirements-00

Willy Tarreau <w@1wt.eu> Mon, 12 July 2010 10:27 UTC

Return-Path: <w@1wt.eu>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D1C1E3A6B2B for <hybi@core3.amsl.com>; Mon, 12 Jul 2010 03:27:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.29
X-Spam-Level:
X-Spam-Status: No, score=-3.29 tagged_above=-999 required=5 tests=[AWL=-1.247, BAYES_00=-2.599, HELO_IS_SMALL6=0.556]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bAm4rBggSNlc for <hybi@core3.amsl.com>; Mon, 12 Jul 2010 03:27:22 -0700 (PDT)
Received: from 1wt.eu (1wt.eu [62.212.114.60]) by core3.amsl.com (Postfix) with ESMTP id 877993A67A5 for <hybi@ietf.org>; Mon, 12 Jul 2010 03:27:21 -0700 (PDT)
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id o6CARPap007583; Mon, 12 Jul 2010 12:27:25 +0200
Date: Mon, 12 Jul 2010 12:27:25 +0200
From: Willy Tarreau <w@1wt.eu>
To: Anne van Kesteren <annevk@opera.com>
Message-ID: <20100712102725.GA6953@1wt.eu>
References: <615374.65181.qm@web82607.mail.mud.yahoo.com> <op.vfj9vfna64w2qv@annevk-t60> <564970.65690.qm@web82607.mail.mud.yahoo.com> <op.vfl5hj0864w2qv@annevk-t60> <814698.93763.qm@web82601.mail.mud.yahoo.com> <op.vfp6jk0h64w2qv@annevk-t60>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <op.vfp6jk0h64w2qv@annevk-t60>
User-Agent: Mutt/1.4.2.3i
Cc: hybi@ietf.org
Subject: Re: [hybi] comments on draft-ietf-hybi-websocket-requirements-00
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 12 Jul 2010 10:27:22 -0000

On Mon, Jul 12, 2010 at 12:10:22PM +0200, Anne van Kesteren wrote:
> On Mon, 12 Jul 2010 11:48:41 +0200, gabriel montenegro  
> <g_e_montenegro@yahoo.com> wrote:
> >>Yes, but mostly I'm saying that
> >>the requirements document should not constrain the design to this level  
> >>of detail.
> >
> >[gm] I think it is appropriate, given that we're supposed to be working  
> >on what the charter set out to do:
> >
> >"  The Hypertext-Bidirectional (HyBi) working group will seek
> >  standardization of one approach to maintain bidirectional
> >  communications between the HTTP client, server and intermediate
> >  entities, which will provide more efficiency compared to the current
> >  use of hanging requests.
> >"
> >
> >That seems pretty clear about HTTP usage.
> 
> Not to me. The main reason we are discussing what "HTTP compatible" means  
> and how the "HTTP handshake" ought to look is because someone at IANA  
> thought WebSocket should share a port with HTTP. It has nothing much to do  
> with the charter. And frankly, it seems like things might be much easier  
> if we did not share a port with HTTP.

If it does not share the port, then it will not replace existing protocols !

Also there are good reasons for sharing ports :
  - you can't reasonably assign new well-known ports, since most visitors
    from enterprise networks won't be able to access them for a long time,
    thus limiting adoption.

  - expecting a new address to be assigned for each service is not
    practical for shared hosting providers who manage hundreds or
    thousands of customers on shared equipments, all routed on the HTTP
    Host header only. Clearly those ones will not start assigning a
    dedicated IP to every customer that asks for one just for WebSocket.

  - in many environments there will be a need for Host-based forwarding
    or even cookie-based server stickiness. This is already possible on
    other HTTP-based mechanisms, and will be required for newcomers if
    the intent is to make long-polling disappear.

The fact that HTTP compliance is required might be the problem though.
I'd prefer to see the protocol described as the part after the HTTP
handshake, and simply state that people who want to use it over HTTP
will just have to perform the HTTP handshake first. Check RFC2817, it
explains the same principle for TLS over HTTP. This leaves a large
degree of freedom for implementers, allows for less overhead for those
who don't intend to share a port with HTTP, and allows for higher
accessibility for those who can't proceed differently.

In my opinion, the HTTP handshake should just be a paragraph in
the spec, not 90% of the spec.

Regards,
Willy