Re: [hybi] #1: HTTP Compliance

John Tamplin <jat@google.com> Wed, 21 July 2010 14:47 UTC

Return-Path: <jat@google.com>
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 40EE23A6BCD for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 07:47:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.976
X-Spam-Level:
X-Spam-Status: No, score=-101.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, USER_IN_WHITELIST=-100]
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 39IKtv0g3NVD for <hybi@core3.amsl.com>; Wed, 21 Jul 2010 07:47:44 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [74.125.121.35]) by core3.amsl.com (Postfix) with ESMTP id CBBB43A6BB7 for <hybi@ietf.org>; Wed, 21 Jul 2010 07:47:43 -0700 (PDT)
Received: from hpaq1.eem.corp.google.com (hpaq1.eem.corp.google.com [172.25.149.1]) by smtp-out.google.com with ESMTP id o6LElx6A020172 for <hybi@ietf.org>; Wed, 21 Jul 2010 07:47:59 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1279723679; bh=RyKu4HNFVK7Dflge93cpZYwCoFE=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=xbfiV3iNog86PURTQ8ysY8E3MaFCZisvzNs0Kl4rVYmpv52M/x3Z6rHnXIkUe404d /Ahj819h0BSAiR40i2zBA==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:from:date:message-id: subject:to:cc:content-type:x-system-of-record; b=uj1q4Atm+UhqKg3Mg4BMBh16bQ8nU1HzjCNs1PxgjM0zGx8AotcladQXdncvXVtdX pQ0Gge+H2w3eFPxk+XOOA==
Received: from gxk25 (gxk25.prod.google.com [10.202.11.25]) by hpaq1.eem.corp.google.com with ESMTP id o6LElwvJ011984 for <hybi@ietf.org>; Wed, 21 Jul 2010 07:47:58 -0700
Received: by gxk25 with SMTP id 25so4212725gxk.29 for <hybi@ietf.org>; Wed, 21 Jul 2010 07:47:58 -0700 (PDT)
Received: by 10.151.29.11 with SMTP id g11mr2056363ybj.407.1279723677917; Wed, 21 Jul 2010 07:47:57 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.151.60.3 with HTTP; Wed, 21 Jul 2010 07:47:37 -0700 (PDT)
In-Reply-To: <AANLkTinN=f5tOur+GN9KQF+z90iNDSTH1wGgxPk1Gh8k@mail.gmail.com>
References: <4BF11920.2080307@webtide.com> <Pine.LNX.4.64.1005171039050.25609@ps20323.dreamhostps.com> <4BF12FF1.2020101@webtide.com> <15307.1274106895.116423@Sputnik> <Pine.LNX.4.64.1005172259030.22838@ps20323.dreamhostps.com> <20100518003753.GP20356@shareable.org> <Pine.LNX.4.64.1005180229430.22838@ps20323.dreamhostps.com> <20100518121245.GR20356@shareable.org> <AANLkTiniCjBwm5T59as8jByM5xDhPMrea-GqZFpWPAVS@mail.gmail.com> <Pine.LNX.4.64.1005182105360.22838@ps20323.dreamhostps.com> <20100519013238.GB2318@shareable.org> <Pine.LNX.4.64.1007210108300.7242@ps20323.dreamhostps.com> <AANLkTinN=f5tOur+GN9KQF+z90iNDSTH1wGgxPk1Gh8k@mail.gmail.com>
From: John Tamplin <jat@google.com>
Date: Wed, 21 Jul 2010 10:47:37 -0400
Message-ID: <AANLkTikx=dpZdRJoRcaXYytxZxwTm5kLk9zKDTgG0ssY@mail.gmail.com>
To: Roberto Peon <fenix@google.com>
Content-Type: multipart/alternative; boundary="000e0cd2a1843ba306048be6e3ba"
X-System-Of-Record: true
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] #1: HTTP Compliance
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: Wed, 21 Jul 2010 14:47:45 -0000

On Wed, Jul 21, 2010 at 10:43 AM, Roberto Peon <fenix@google.com> wrote:

> I fully expect that we'll end up with multiple websocket "sockets" per tab,
> and we typically end up with many tabs.
> This is true even if going to only one large site. For instance, it is
> fairly normal to have both corporate and personal email and calendering open
> at all times.
> If each websocket is its own TCP socket, we'll face a drastic increase in
> the number of connections from everyone.
> Worse, these connections won't go away, they'll send junk bytes all the
> time (keep alives), they'll be unable to go to the same server if one is
> using loadbalancing, they'll have more than an order of magnitude greater
> chance to overload NAT tables, they'll make DST caches in the kernel less
> effective due to dilution (for smaller servers), etc.
>
> Each and every of these is a good reason that the complexity is warranted.
> I have some "small" experience with ensuring that things can serve
> at-scale. There are very good reasons that I'm concerned about websocket
> scalability.
>
> As for complexity! At worst, you have flow control and multiplexing.
>  Multiplexing involves a unique ID per channel. Flow control involves
> sending periodic updates telling the other side how much it can send safely.
> Of course you also need to have a table in which you do a lookup to see that
> there is already a connection for that domain, including a reference to
> that connection. None of this is difficult, even in concert.
>

Another benefit of muxing multiple WS connections over a single TCP
connection is you can have only one keep-alive for all of them.  And I think
WS really needs to have some keep-alive frame -- if not, then you are just
pushing the requirement off to the client code using the WS, and then it
won't be done consistently or in a way that can be aggregated.

-- 
John A. Tamplin
Software Engineer (GWT), Google