Re: [hybi] Frame size
Mike Belshe <mike@belshe.com> Sun, 18 April 2010 23:35 UTC
Return-Path: <mike@belshe.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 9EF373A6A0E for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 16:35:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.624
X-Spam-Level:
X-Spam-Status: No, score=0.624 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
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 9hxpHff6YrrD for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 16:35:19 -0700 (PDT)
Received: from mail-pv0-f172.google.com (mail-pv0-f172.google.com [74.125.83.172]) by core3.amsl.com (Postfix) with ESMTP id 043793A690B for <hybi@ietf.org>; Sun, 18 Apr 2010 16:35:18 -0700 (PDT)
Received: by pvf33 with SMTP id 33so2705935pvf.31 for <hybi@ietf.org>; Sun, 18 Apr 2010 16:35:07 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.143.45.15 with HTTP; Sun, 18 Apr 2010 16:35:07 -0700 (PDT)
In-Reply-To: <4BC96DA1.3000706@webtide.com>
References: <8B0A9FCBB9832F43971E38010638454F03E3F313ED@SISPE7MB1.commscope.com> <v2m5c902b9e1004160043i7b5ccc79y2346e1b2b2c55cf5@mail.gmail.com> <s2qad99d8ce1004160053w436a29b1idae0c66737b3760a@mail.gmail.com> <4BC85A31.6060605@webtide.com> <t2iad99d8ce1004160949yb1ba9582l3b626c19dacf8d9@mail.gmail.com> <4BC96DA1.3000706@webtide.com>
Date: Sun, 18 Apr 2010 16:35:07 -0700
Received: by 10.142.152.9 with SMTP id z9mr1670195wfd.314.1271633707501; Sun, 18 Apr 2010 16:35:07 -0700 (PDT)
Message-ID: <u2m2a10ed241004181635qd0554193v36da94ecd7284d31@mail.gmail.com>
From: Mike Belshe <mike@belshe.com>
To: Greg Wilkins <gregw@webtide.com>
Content-Type: multipart/alternative; boundary="000e0cd2dfca6b89ee04848b4ba9"
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] Frame size
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: Sun, 18 Apr 2010 23:35:20 -0000
On Sat, Apr 17, 2010 at 1:13 AM, Greg Wilkins <gregw@webtide.com> wrote: > Roberto Peon wrote: > > > > > > On Fri, Apr 16, 2010 at 5:38 AM, Greg Wilkins <gregw@webtide.com > > <mailto:gregw@webtide.com>> wrote: > > > > > > > > I thought one of the key arguments for a limited frame size, > > is that we could avoid the need to consider end points that > > could not store an entire frame in a buffer at once. > > > > Why would you need to do that? > > At the 77 meeting, I raised the point that currently error > handling in the protocol is not sufficient to deal with > implementations that impose a maximum frame size. The spec > currently says the end point should just close the socket > if it receives a frame that is too large. > > One option is to negotiate maximum frame size, but that > appears to go against the no negotiation style of this > protocol. > > The suggestion was then made that we pick a small fixed > maximum frame size, that all implementations would be > required to handle. > > Large messages would then be fragmented and assembled > from 1 or more frames. This does not solve the problem > of end points that cannot handle large message, but it > does make the problem not a transport problem. Higher > layers are better able to handle large messages, as > they can stream to disk, reject with errors, parse and > handle as a stream, etc etc. > It seems to me that we're over engineering here for what the websockets API is trying to do. I disagree that 32bit lengths means that you need to support chunking. The application can decide when it wants to chunk or not. Also, why does a buffer need to be contained in RAM? Just because we have a long length doesn't mean that the payload can't stream. Lots of protocols work this way today, like HTTP. And what happens if you stream a 10GB message in a single web page? The browser just hangs up the phone at some point. There is no graceful error. While this is a theoretical problem (which Greg raised), it is not a practical one. Unfortunately, once you decide that 32bit lengths are not good enough, you're running into lots of subproblems: fragmentation/reassembly, max frame size, etc. I think we're just overthinknig the needs to the WebSockets API. I propose we make lengths be 32bits and drop fragmentation/reassembly from this protocol. Mike > > > > > So 2 byte's can still result in a 64k maximum frame size that > > some devices might baulk at... but not many. > > > > > > "not many" probably isn't good enough. For the protocol to be a success > > it needs to work reliably. For clients/servers, that implies that they > > should be able to start processing before the entire frame has been > > received. For proxies you just stream the data.. unes you're doing > > multiplexing for people, in which case you have other concerns. > > That is why my suggestion is to go for a 16k max frame size > that all implementation would have to be able to handle. > 16KB is small today. It seems incredibly small for the year 2020. > > This frees up 2 bits that can be used to coordinate > the fragmentation and assembly. > *bits*? Sure, we don't want to be wasteful, but with average internet speeds of 3.9Mbps in the US *today*, are you sure you've got the right optimization here? :-) I'd take the simplicity of nixing fragmentation/reassembly and suck it up on the extra bits for a longer length field. Mike > > > > The alternative approach is to not have fragmentation, > but to allow the max frame size be of arbitrary (or very large) > length so it can always handle a message or arbitrary (or very > large) length. Then have reasonable error handling to cope with > too large messages/frames. > > The problem with this approach, is the sending of a too large > to handle frame, breaks the ability to communicate bidirectionally. > > Imagine if both client and server both start sending too large > to handle frames at the same time. Neither will be able to > send too-large errors because they are sending large frames > and to their knowledge the other side is handling them. > > Fragmentation of large messages into frames gives an > endpoint the ability to terminate the transmission of > a too-large-message or even to interleave control frames > containing errors. > > > > regards > > > _______________________________________________ > hybi mailing list > hybi@ietf.org > https://www.ietf.org/mailman/listinfo/hybi >
- Re: [hybi] Frame size Justin Erenkrantz
- [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Roberto Peon
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Greg Wilkins
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Roberto Peon
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Greg Wilkins
- Re: [hybi] Frame size Justin Erenkrantz
- Re: [hybi] Frame size Greg Wilkins
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Greg Wilkins
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Anne van Kesteren
- Re: [hybi] Frame size Thomson, Martin
- Re: [hybi] handshake security (was: Frame size) Thomson, Martin
- Re: [hybi] Frame size Ian Hickson
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] handshake security (was: Frame size) Ian Hickson
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] handshake security (was: Frame size) Thomson, Martin
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] handshake security (was: Frame size) Ian Hickson
- Re: [hybi] Frame size Greg Wilkins
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Scott Ferguson
- Re: [hybi] Frame size Mike Belshe
- Re: [hybi] Frame size Jamie Lokier
- Re: [hybi] handshake security (was: Frame size) Jamie Lokier
- Re: [hybi] Frame size Lars Eggert
- Re: [hybi] Frame size Jamie Lokier