Re: [hybi] Frame size

Jamie Lokier <jamie@shareable.org> Sun, 18 April 2010 23:32 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 44D1C3A6A2A for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 16:32:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.974
X-Spam-Level:
X-Spam-Status: No, score=-3.974 tagged_above=-999 required=5 tests=[AWL=-3.975, BAYES_50=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 izDzbjSB0cXL for <hybi@core3.amsl.com>; Sun, 18 Apr 2010 16:32:19 -0700 (PDT)
Received: from mail2.shareable.org (mail2.shareable.org [80.68.89.115]) by core3.amsl.com (Postfix) with ESMTP id B2AAD3A6A11 for <hybi@ietf.org>; Sun, 18 Apr 2010 16:32:17 -0700 (PDT)
Received: from jamie by mail2.shareable.org with local (Exim 4.63) (envelope-from <jamie@shareable.org>) id 1O3dyB-0004yH-N0; Mon, 19 Apr 2010 00:32:07 +0100
Date: Mon, 19 Apr 2010 00:32:07 +0100
From: Jamie Lokier <jamie@shareable.org>
To: Greg Wilkins <gregw@webtide.com>
Message-ID: <20100418233207.GA18876@shareable.org>
References: <8B0A9FCBB9832F43971E38010638454F03E3F313ED@SISPE7MB1.commscope.com> <v2m5c902b9e1004160043i7b5ccc79y2346e1b2b2c55cf5@mail.gmail.com> <s2qad99d8ce1004160053w436a29b1idae0c66737b3760a@mail.gmail.com> <4BC85A31.6060605@webtide.com> <4BC9F39F.5070601@caucho.com> <4BCB3B48.8070700@webtide.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <4BCB3B48.8070700@webtide.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: Sun, 18 Apr 2010 23:32:20 -0000

Greg Wilkins wrote:
> Scott Ferguson wrote:
> > Greg Wilkins wrote:
> >> In fact, I would argue for a 16k max frame size with 2
> >> bits given over to help with partitioning and aggregation,
> >> but with no requirement that an endpoint can handle
> >> aggregation and partitioning (unless they indicate they
> >> can in the handshake).
> >>   
> > 16k is fine, but why are two bits needed instead of one? 
> 
> 1 bit is fine for pure fragmentation.
> 
> I suggested 2 bits because of previous discussions on
> the list about a bit indicating if an intermediary
> can buffer a frame or not.  This gives the ability
> to have streaming frames plus other frame types
> (see BWTP post for an example of using the 2 bits).
> 
> However we could get the streaming by just having
> a single bit for fragmentation and the spec can say
> that all intermediaries must forward all frames immediately.

That needs clarification.

What does "forward all frames immediately" mean?

If you receive the first _half_ of a frame 10 seconds before the
second half (due to a single dropped packet on a mobile link), do you
have to forward the first half as-is, or is it ok to wait for the second half?

Streaming apps will be penalised if the intermediary applies the
second rule, and message-oriented apps will be penalised if the
intermediary applies the first rule.

One of the timing/latency problems with fixed frame boundaries is they
will tend not to match TCP segment boundaries, making the above
situation very common (but usually much less than 10 seconds).

If intermediaries are permitted to change frame boundaries, as they
are with HTTP chunking, there is much more scope for adapting to TCP
and also fairer multiplexing etc.

I'm thinking if the spec says all frames must be forwarded
immediately, actual implementations will parse the frame headers to
guess when to delay for a short time.

A little bit of information to guide that may be helpful, but I don't
have hard numbers at this time.

I don't think we should prescribe forwarding strategies in a "tight"
way, but we do need to prescribe something minimal.  We should be
aware that immediate forwarding of every byte is _never_ implemented
(there is always a buffering & delaying heuristic at some layer), so
we should recognise that fact, and provide enough flexibility and
guidance so that intermediaries can be developed which makes good
decisions for all styles of application protocols.  We don't have to
specify how exactly.

-- Jamie