Re: [hybi] Framing take IV

Greg Wilkins <gregw@webtide.com> Wed, 04 August 2010 03:11 UTC

Return-Path: <gregw@webtide.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 BC0073A6B9B for <hybi@core3.amsl.com>; Tue, 3 Aug 2010 20:11:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.716
X-Spam-Level:
X-Spam-Status: No, score=-1.716 tagged_above=-999 required=5 tests=[AWL=0.260, BAYES_00=-2.599, 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 VQvEovJrnWzG for <hybi@core3.amsl.com>; Tue, 3 Aug 2010 20:11:50 -0700 (PDT)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id DD6943A6A43 for <hybi@ietf.org>; Tue, 3 Aug 2010 20:11:48 -0700 (PDT)
Received: by fxm16 with SMTP id 16so1475566fxm.31 for <hybi@ietf.org>; Tue, 03 Aug 2010 20:12:17 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.119.204 with SMTP id a12mr8174341far.67.1280891537324; Tue, 03 Aug 2010 20:12:17 -0700 (PDT)
Received: by 10.223.57.12 with HTTP; Tue, 3 Aug 2010 20:12:17 -0700 (PDT)
In-Reply-To: <20100804025042.GU27827@shareable.org>
References: <AANLkTinyrDoG5d_Ur6HVRy=SgMPjLzJtpJ++Ye=1DQdj@mail.gmail.com> <20100804025042.GU27827@shareable.org>
Date: Wed, 04 Aug 2010 13:12:17 +1000
Message-ID: <AANLkTimrYhvmjachmm3-3OqhsYBzaxcQ7zsLGNFn1C0U@mail.gmail.com>
From: Greg Wilkins <gregw@webtide.com>
To: Jamie Lokier <jamie@shareable.org>
Content-Type: multipart/alternative; boundary="001636c5bfe913fb49048cf6cd73"
Cc: hybi@ietf.org
Subject: Re: [hybi] Framing take IV
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, 04 Aug 2010 03:11:52 -0000

On 4 August 2010 12:50, Jamie Lokier <jamie@shareable.org> wrote:

> Greg Wilkins wrote:
> >    I'd like to refocus on what I believe we do have near-consensus on, so
> >    that we don't lose progress while we debate other possible features.
> >    I think that we have reasonable consensus on something like:
> >
> >    +--------------------------------------------------+
> >    | frag(1) |unused(3) | opcode(4) |   Length(16)    |
> >    +--------------------------------------------------+
> >    |                       Data                       |
> >    +--------------------------------------------------+
>
> Two questions:
>
>   1. Are intermediaries allowed to move the fragment
>      boundaries to optimise their delivery?
>
>         1a. .... "add fragment boundaries"
>         1b. .... "remove fragment boundaries"
>


In an earlier message I proposed that fragmentation should not change the
semantics of a message and that intermediaries should be free to fragment
and/or aggregate.



>   2. Are intermediaries allowed to delay delivery of incomplete
>      messages by an arbitrarily long time, including forever?
>

This has not been discussed, other than the discussion that we had many
months ago about a must-flush bit, that you mention below.



> Related to 2, the JS API always delays delivery of incomplete received
> messages, and in a sense the JS API is acting as an intermediary
> between the server and client application.  So it should cause no harm
> for other intermediaries to do it, when the receiver is a browser
> providing the current JS API.  But other clients may be harmed by such
> delays, or not, depending on what they expect.
>
> Also I'd like to remind you of a past discussion where we learned that
> carrying general byte stream protocols over WebSocket is slightly more
> efficient if the flag meaning "tell intermediary to forward" is
> independent of the flag "this boundary is adjustable".
>
> It's tempting to specify "intermediaries shall forward all bytes they
> receive eagerly, without interpretation", but that is (a) not going to
> happen as firewalls will inevitably filter some WebSocket applications
> so we might as well suggest what they must do right, and (b) not ideal
> for TCP latency, especially where MTUs differ on either side, although
> it's not too bad, and (c) a multiplexing/demultiplexing WebSocket
> proxy cannot do this.
>
> I've no issue with eager byte forwarding being the default behaviour
> expected of intermediaries if nothing else is negotiated, and it makes
> considerable sense to me for the questions to be deferred over to
> the multiplexing-and-intermediaries discussion.
>

I think that the semantic difference between have a stream of messages and a
stream of fragments is pretty fine, so if somebody really wanted to have
partial content that was forwarded eagerly, then they can have a message
content type that is a partial content.

So I  would be happy to say that intermediaries SHOULD eagerly forward
fragment frames and MUST forward end of message frames.

cheers