Re: [hybi] Is it important to know frame length at the start of frame? (was: Re: Discontinuation of mux ...)

Zhong Yu <zhong.j.yu@gmail.com> Wed, 12 February 2014 16:00 UTC

Return-Path: <zhong.j.yu@gmail.com>
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 B41D21A0458 for <hybi@ietfa.amsl.com>; Wed, 12 Feb 2014 08:00:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] 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 O-0QspRH4Ene for <hybi@ietfa.amsl.com>; Wed, 12 Feb 2014 08:00:46 -0800 (PST)
Received: from mail-ob0-x229.google.com (mail-ob0-x229.google.com [IPv6:2607:f8b0:4003:c01::229]) by ietfa.amsl.com (Postfix) with ESMTP id 267531A09AC for <hybi@ietf.org>; Wed, 12 Feb 2014 08:00:46 -0800 (PST)
Received: by mail-ob0-f169.google.com with SMTP id wo20so10785917obc.0 for <hybi@ietf.org>; Wed, 12 Feb 2014 08:00:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=joqDS40TH4dHsPbzugDTrcKD1QqMlIBKt6L54Y1DE1c=; b=IqUwz03kfYFaSsB4/TeEIIXL/yC0r7kBhoU3rKyVKZ5lVSwEK6dXfXKijtSVW3iVqp kUr3YArodO6bC36J8UDTqxoRk/gbo17uUL7TP9p7zK38lW6pcRGns5yBMq68Km4kwkM7 WDpQmnR7hS+W/drIwMBCvP9TcZiKqFsrrnapCuLrl9jlrXTyoN4alFzmE7qsyBmqtLqd WyXeb24IHyMb/HENTb0t6J/Lw9CM73FvAW+kiqRCBQXD/oDgUvMHY2WGXTnla43I/TUN 6s9OZ7J3VcFh7m9U+cPXbxRPZcBGmPcGuwu0r4nX7M02RBRGaiVpA/3G74udj9oPs5ZV 9OhA==
MIME-Version: 1.0
X-Received: by 10.182.28.134 with SMTP id b6mr37762054obh.27.1392220845019; Wed, 12 Feb 2014 08:00:45 -0800 (PST)
Received: by 10.76.21.132 with HTTP; Wed, 12 Feb 2014 08:00:44 -0800 (PST)
In-Reply-To: <CAH9hSJbf_ABT7ECL9eS=_ADrncX8qBtxZv=uLcdu9_6GUv23Uw@mail.gmail.com>
References: <CAH9hSJbf_ABT7ECL9eS=_ADrncX8qBtxZv=uLcdu9_6GUv23Uw@mail.gmail.com>
Date: Wed, 12 Feb 2014 10:00:44 -0600
Message-ID: <CACuKZqEcA1Pv8RpWfmThMjTzi2BbVMMKXqujs6BxVfxRPZJ9NQ@mail.gmail.com>
From: Zhong Yu <zhong.j.yu@gmail.com>
To: Takeshi Yoshino <tyoshino@google.com>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
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:00:48 -0000

Why not send the message in one frame? The frame length is then the
message length.

One argument for fragmentation is to insert control frames while
transmitting a long message. However that reasoning is not very
convincing:

PONG - as long as we are writing data, any data, the peer should see
that the connection is alive. It's unreasonable for the peer to think
that our end is unresponsive while it is receiving data from us.

PING - not necessary while we are writing data. If peer is
unresponsive, we'll learn that from TCP layer.

CLOSE - closing the connection in the middle of a message is abnormal
anyway, it's probably not important to do the close handshake.

Zhong Yu


On Fri, Feb 7, 2014 at 1: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
>