Re: [hybi] Is it important to know frame length at the start of frame? (was: Re: Discontinuation of mux ...)
Tobias Oberstein <tobias.oberstein@tavendo.de> Wed, 12 February 2014 16:41 UTC
Return-Path: <tobias.oberstein@tavendo.de>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 52BBA1A0338 for <hybi@ietfa.amsl.com>; Wed, 12 Feb 2014 08:41:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RO3ju_m0ok-C for <hybi@ietfa.amsl.com>; Wed, 12 Feb 2014 08:41:55 -0800 (PST)
Received: from EXHUB020-1.exch020.serverdata.net (exhub020-1.exch020.serverdata.net [206.225.164.28]) by ietfa.amsl.com (Postfix) with ESMTP id AD3DF1A0310 for <hybi@ietf.org>; Wed, 12 Feb 2014 08:41:55 -0800 (PST)
Received: from EXVMBX020-12.exch020.serverdata.net ([169.254.3.11]) by EXHUB020-1.exch020.serverdata.net ([206.225.164.28]) with mapi; Wed, 12 Feb 2014 08:41:54 -0800
From: Tobias Oberstein <tobias.oberstein@tavendo.de>
To: Zhong Yu <zhong.j.yu@gmail.com>, Joakim Erdfelt <joakim@intalio.com>
Date: Wed, 12 Feb 2014 08:41:46 -0800
Thread-Topic: [hybi] Is it important to know frame length at the start of frame? (was: Re: Discontinuation of mux ...)
Thread-Index: Ac8oDO7orj6CendaQiavUV2j3bdINQAA9zeg
Message-ID: <634914A010D0B943A035D226786325D4446C44FD11@EXVMBX020-12.exch020.serverdata.net>
References: <CAH9hSJbf_ABT7ECL9eS=_ADrncX8qBtxZv=uLcdu9_6GUv23Uw@mail.gmail.com> <8984EA8D-C6ED-49BF-92C4-113D69121B30@brandedcode.com> <CAG4zZZAfB_phXSVku+W+VbGRNMJ3+=9YPw8_dD6zSJr5041iEw@mail.gmail.com> <CACuKZqF+XZs0y04Svxb=rKhFEydwxp=8pwTiaL+3sm6cXF7_5Q@mail.gmail.com>
In-Reply-To: <CACuKZqF+XZs0y04Svxb=rKhFEydwxp=8pwTiaL+3sm6cXF7_5Q@mail.gmail.com>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: de-DE, en-US
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] Is it important to know frame length at the start of frame? (was: Re: Discontinuation of mux ...)
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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, 12 Feb 2014 16:41:59 -0000
> Why does it matter if a frame (of unknown size) is composed of fragments > (of known sizes), w.r.t. memory management? I agree with Joakim that frame size length can be important for memory management. It is also important to be able to fragment a message, for reasons of - control frame injection (ordered close) - application data independent keep alive (ping/pong) - message interleaving /Tobias > > On Wed, Feb 12, 2014 at 7:49 AM, Joakim Erdfelt <joakim@intalio.com> > wrote: > > For various application level APIs that depend on delivery of complete > > messages, the need to know the frame level size at the start of the > > frame becomes important for memory management. Eclipse Jetty uses > > this information to implement Java's javax.websocket API for limiting > > memory use, along with lower level (WS+HTTP/1.1) protocol validation > (close code 1009). > > > > Since this group has a history (now) of making protocol decisions > > based on existing public APIs (re Javascript WebSocket), I would > > entreat the members here to think about the other public, industry > > standard, non-javascript, WebSocket APIs already widely deployed. > > > > > > -- > > Joakim Erdfelt <joakim@intalio.com> > > webtide.com - intalio.com/jetty > > Expert advice, services and support from from the Jetty & CometD > > experts eclipse.org/jetty - cometd.org > > > > > > On Wed, Feb 12, 2014 at 6:34 AM, Micheil Smith > > <micheil@brandedcode.com> > > wrote: > >> > >> As far as I recall, this was also to enable more efficient reading > >> and error checking. > >> Prefixing with the frame size means you don't need to scan every byte > >> being received in order to find an end of frame delimiter. > >> > >> This is a particularly useful thing when doing something like > >> upstreaming on a websocket server, where all you care about is the > >> very start of the message, and the length, such that you can then > >> just read() N bytes which is the size of your frame and just write() > >> directly. > >> > >> In other words, I agree on your reply Takeshi. > >> > >> - Micheil > >> > >> On 7 Feb 2014, at 7:30 am, Takeshi Yoshino <tyoshino@google.com> > wrote: > >> > >> > I remember that in early days of the standardization, somebody was > >> > proposing (*) that we should have a message length field in the > >> > first fragment to allow for allocating buffer for full message at the > beginning. > >> > > >> > On Thu, Jan 16, 2014 at 3:27 PM, "Martin J. Dürst" > >> > <duerst@it.aoyama.ac.jp> wrote: > >> > On 2014/01/16 15:05, Yutaka Hirano wrote: > >> > Hi Joakim, > >> > > >> > Thanks for the comment. > >> > > >> > Knowing the size of a frame at the start of the frame, traditional > >> > websocket behavior, is desired, as it allows us to fast fail for > >> > the > >> > 1009 > >> > (message too big) use case. > >> > > >> > Do you know how effective it is? > >> > > >> > Having no prior knowledge of frame size is undesirable to us. > >> > > >> > On the other hand, the frame sender have more freedom because they > >> > don't have to know the size of the frame in front. > >> > > >> > My understanding of why messages are split into frames was that > >> > this would allow to start a message without knowing its length. But > >> > if you don't know the size of a frame before sending it, then the > >> > right solution is to make it smaller. Frames are just arbitrary pieces of a > message. > >> > > >> > We should be clear if we want to make it able to > >> > (a) know the length of WebSocket frame on receiving the header of > >> > each fragment > >> > (b) know the length of WebSocket message on receiving the first > >> > fragment > >> > > >> > As the proposal (*) has been rejected and not in the RFC6455 > >> > header, (b) is not true even in RFC6455. What Joakim said should be > >> > to keep (a) which is true now in RFC6455. > >> > > >> > But if a message is fragmented into smaller frames, we cannot > >> > reject (and send 1009) the message on receiving the first frame. > >> > "Whether we can fast-reject a big message on receiving some > >> > non-final frame" depends on how the peer fragments a message. > >> > > >> > In some plans discussed in the main thread, it's planned to drop > >> > frame length info for efficiency. But something else such as the > >> > length field of > >> > HTTP/2.0 DATA frame tells how much data the fragment (when multiple > >> > DATAs convey a WebSocket frame, each DATA would be called > fragments > >> > of a frame) contains. So, we won't be able to know the length of > >> > fragments (original/encapsulated WebSocket frames) on receiving > >> > each of them, but still be able to know the length of sub-fragments > >> > (e.g. HTTP/2.0 data frames). > >> > > >> > I think this change is acceptable and shouldn't be considered as > >> > breaking of RFC6455 semantics. Even in the mux extension I was > >> > editing > >> > (http://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing- > >> > 11), I made the same change. The length of the encapsulated frame > >> > is unknown until receiving all the fragments of the encapsulating > message. No one was objecting to that when we were discussing the spec, > IIRC. > >> > > >> > _______________________________________________ > >> > hybi mailing list > >> > hybi@ietf.org > >> > https://www.ietf.org/mailman/listinfo/hybi > >> > >> _______________________________________________ > >> hybi mailing list > >> hybi@ietf.org > >> https://www.ietf.org/mailman/listinfo/hybi > > > > > > > > _______________________________________________ > > hybi mailing list > > hybi@ietf.org > > https://www.ietf.org/mailman/listinfo/hybi > > > > _______________________________________________ > hybi mailing list > hybi@ietf.org > https://www.ietf.org/mailman/listinfo/hybi
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Peter Thorson
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- [hybi] Is it important to know frame length at th… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Micheil Smith
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Peter Thorson
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Tobias Oberstein
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Joakim Erdfelt
- Re: [hybi] Is it important to know frame length a… Roberto Peon
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Roberto Peon
- Re: [hybi] Is it important to know frame length a… Zhong Yu
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino
- Re: [hybi] Is it important to know frame length a… Takeshi Yoshino