Re: [hybi] Frame size

Jamie Lokier <jamie@shareable.org> Mon, 19 April 2010 02:01 UTC

Return-Path: <jamie@shareable.org>
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 3D8133A6A65 for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 19:01:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.586
X-Spam-Level:
X-Spam-Status: No, score=-3.586 tagged_above=-999 required=5 tests=[AWL=-0.987, BAYES_00=-2.599]
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 AZsPrP4FxFPy for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 19:01:45 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by core3.amsl.com (Postfix) with ESMTP id DEE643A6A62 for <hybi@ietf.org>; Sun, 18 Apr 2010 19:01:44 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1O3gIi-0005j1-0A; Mon, 19 Apr 2010 03:01:28 +0100
Date: Mon, 19 Apr 2010 03:01:27 +0100
From: Jamie Lokier <jamie@shareable.org>
To: "Thomson, Martin" <Martin.Thomson@andrew.com>
Message-ID: <20100419020127.GH18876@shareable.org>
References: <8B0A9FCBB9832F43971E38010638454F03E3F313ED@SISPE7MB1.commscope.com> <v2m5c902b9e1004160043i7b5ccc79y2346e1b2b2c55cf5@mail.gmail.com> <8B0A9FCBB9832F43971E38010638454F03E7D06790@SISPE7MB1.commscope.com> <20100419005215.GD18876@shareable.org> <8B0A9FCBB9832F43971E38010638454F03E7D067BC@SISPE7MB1.commscope.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <8B0A9FCBB9832F43971E38010638454F03E7D067BC@SISPE7MB1.commscope.com>
User-Agent: Mutt/1.5.13 (2006-08-11)
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: Mon, 19 Apr 2010 02:01:46 -0000

Thomson, Martin wrote:
> Jamie writes:
> > Alas, there are very good reasons to send non-final frames that aren't
> > the full length.
> 
> From my perspective, the only very good reason you stop sending one thing is because you want to send something else (i.e. multiplexing).
> 
[...]
>
> Addressing shortcomings in the abstraction (graceful close, etc...)
> is another thing.  It's reasonable to say that the TCP abstraction
> does not provide graceful close, so providing it at a higher layer is
> OK.

If you want to send a graceful close response when you have only sent
half a message, you cannot do it unless the half message was sent as
a non-final, non-full-length frame.

That's why it's useful.

It's not because you want to send something else _now_, it's so you
have the _possibility_ to send something else later.  Because you
can't abort a half-sent frame later.  (You would need TCP urgent data
or something, and that's not feasible to use.)

> Aligning with segments isn't a good argument for me.  How the WS
> layer is aware of layers below it and the way that it interacts with
> those is orthogonal to frame size.  TCP provides an abstraction of a
> stream.  If a particular implementation wants to optimize, it can,
> but that shouldn't affect layers above those key abstraction points.

Feel free to ignore segment alignment.  It's just an implementation
tunable, not a requirement and doesn't need to appear in any
specification.

The frame size is part of the WS transport layer, and is closely
related to buffering and forwarding decisions.  (Note that eager
sending is sub-optimal for latency, in case you're curious.)

Those decisions have little or nothing to do with TCP segments, but
the timing of forwarding decisions cause certain kinds of alignment
anyway.  The same outcome occurs with other types of pipe abstraction.

You said "it shouldn't affect layers above those key abstraction
points".  Note that frame size is *not* present in the layer above WS
buffering and forwarding decisions.  (If it is, it is misdesigned.)

You might be thinking of the message size, which is.

-- Jamie