Re: [hybi] Extensibility mechanisms?

Jamie Lokier <jamie@shareable.org> Mon, 19 April 2010 12:22 UTC

Return-Path: <jamie@shareable.org>
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 3CFCB3A6A5A for <hybi@core3.amsl.com>; Mon, 19 Apr 2010 05:22:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.896
X-Spam-Level:
X-Spam-Status: No, score=-2.896 tagged_above=-999 required=5 tests=[AWL=-0.297, BAYES_00=-2.599]
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 ocbHos-pSl33 for <hybi@core3.amsl.com>; Mon, 19 Apr 2010 05:21:49 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by core3.amsl.com (Postfix) with ESMTP id 1CBAC3A69C8 for <hybi@ietf.org>; Mon, 19 Apr 2010 05:21:46 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1O3pyq-0000XN-8M; Mon, 19 Apr 2010 13:21:36 +0100
Date: Mon, 19 Apr 2010 13:21:36 +0100
From: Jamie Lokier <jamie@shareable.org>
To: Mike Belshe <mike@belshe.com>
Message-ID: <20100419122136.GH28758@shareable.org>
References: <Pine.LNX.4.64.1004180246380.751@ps20323.dreamhostps.com> <4BCAB2C1.2000404@webtide.com> <B9DC25B0-CD21-44E7-BD9B-06D0C9440933@apple.com> <Pine.LNX.4.64.1004181812370.751@ps20323.dreamhostps.com> <4BCB6641.70408@webtide.com> <Pine.LNX.4.64.1004182010070.751@ps20323.dreamhostps.com> <4BCB6FD0.7080003@webtide.com> <j2n5c4444771004181403o81184b00r294f3c3b878f24f6@mail.gmail.com> <20100419091736.GA28758@shareable.org> <p2w2a10ed241004190222ne3a61417i47b021dbe0422f71@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <p2w2a10ed241004190222ne3a61417i47b021dbe0422f71@mail.gmail.com>
User-Agent: Mutt/1.5.13 (2006-08-11)
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] Extensibility mechanisms?
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, 19 Apr 2010 12:22:08 -0000

Mike Belshe wrote:
> 
>    On Mon, Apr 19, 2010 at 2:17 AM, Jamie Lokier <[1]jamie@shareable.org>
>    wrote:
> 
>    Adam Barth wrote:
>    > On Sun, Apr 18, 2010 at 1:47 PM, Greg Wilkins <[2]gregw@webtide.com>
>    wrote:
>    > > Ian Hickson wrote:
> 
>    > > Intermediaries can know about websocket framing and so long as
>    > > all sub protocols and extensions are restricted to adhere to
>    > > websocket framing, then intermediaries can continue to work
>    > > regardless of sub protocols.
>    >
>    > I'm not sure I buy the premise that we want intermediaries to
>    > understand and/or interfere with the websocket protocol.  It seems
>    > more robust and more secure to establish a point-to-point encrypted
>    > tunnel between the user agent and the server.
> 
>      More secure, but higher latency and slower.
>      Going by the "each application on each open web page should open
>      its
>      own connection" approach, and encrypted tunnels enforcing that, as
>      well as enforcing TLS setup latency for each one, *much* slower
>      than
>      HTTP.  Not to mention the torrent of idle keepalives with so many
>      connections.
> 
>    A few notes:
>       - The bulk of the time goes to round trips.
>       - WebSockets has a round trip for the upgrade header too.
> 
>      Less robust - I put together an alternative to Ian's "tic tac toe"
>      using long-GET HTTP.  It's a similar amount of code with a similar
>      structure, and as far as I can tell fails in all the exact same
>      scenarios, except for one: The HTTP version keeps working after a
>      NAT
>      or SPI router times out in the middle.  The WebSocket version
>      breaks
>      at that point, because it won't detect the broken TCP connection or
>      create a new one.
> 
>    The NAT point is a great one.  I don't have any data on how often
>    long-lived connections are broken by NAT.

In my world, the long-lived ones are the ones broken most often :-)

I've seen a lot of NAT breakage in different situations: mobile
networks (30s timeout on some), home ADSL reboots, home NAT table
overloaded due to multiple users, corporate WANs daily at exactly 3pm
:-); it surprises me how much there is.

>      One of the not so obvious strengths of HTTP, which probably wasn't
>      deliberate design, is it recovers well from contemporary
>      TCP-breaking
>      routers.
> 
>    True true true!  Lots of short connections, although less efficient,
>    are self-healing and robust.

Even HTTP gets stuck, though, if the browser reuses a TCP connection
that has become black-holed.

The reason that isn't such a problem with Comet style is those
frameworks already have a timeout and reconnect on the client side to
deal with well-known brokenness :-) With some AJAXy apps, black-holed
persistent HTTP is still a problem, and it can take a while for the
apps to react and recover, if they recover at all.

I suspect a certain amount of "users knows the web is flaky and know
to reload the page if it's not working properly".  I certainly find
myself reloading Facebook from time to time because it's AJAXy
processing is reporting network errors, when on a mobile network.

-- Jamie