Re: [hybi] Framing take IV [why fragment]

Patrick McManus <mcmanus@ducksong.com> Wed, 04 August 2010 14:31 UTC

Return-Path: <mcmanus@ducksong.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 7464B3A68FA for <hybi@core3.amsl.com>; Wed, 4 Aug 2010 07:31:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.413
X-Spam-Level:
X-Spam-Status: No, score=-2.413 tagged_above=-999 required=5 tests=[AWL=0.186, 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 sX-NlxeFMamc for <hybi@core3.amsl.com>; Wed, 4 Aug 2010 07:31:46 -0700 (PDT)
Received: from linode.ducksong.com (linode.ducksong.com [64.22.125.164]) by core3.amsl.com (Postfix) with ESMTP id 0EAFC3A6B7E for <hybi@ietf.org>; Wed, 4 Aug 2010 07:31:18 -0700 (PDT)
Received: by linode.ducksong.com (Postfix, from userid 1000) id 4214A102A9; Wed, 4 Aug 2010 10:31:42 -0400 (EDT)
Received: from [192.168.16.214] (cpe-67-253-92-25.maine.res.rr.com [67.253.92.25]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by linode.ducksong.com (Postfix) with ESMTPSA id AD307102A7 for <hybi@ietf.org>; Wed, 4 Aug 2010 10:31:40 -0400 (EDT)
From: Patrick McManus <mcmanus@ducksong.com>
To: hybi <hybi@ietf.org>
In-Reply-To: <Pine.LNX.4.64.1008040050040.5947@ps20323.dreamhostps.com>
References: <AANLkTinyrDoG5d_Ur6HVRy=SgMPjLzJtpJ++Ye=1DQdj@mail.gmail.com> <Pine.LNX.4.64.1008040050040.5947@ps20323.dreamhostps.com>
Content-Type: text/plain; charset="UTF-8"
Date: Wed, 04 Aug 2010 10:33:13 -0400
Message-ID: <1280932393.7561.271.camel@tng>
Mime-Version: 1.0
X-Mailer: Evolution 2.28.3
Content-Transfer-Encoding: 7bit
Subject: Re: [hybi] Framing take IV [why fragment]
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 14:31:51 -0000

On Wed, 2010-08-04 at 00:53 +0000, Ian Hickson wrote:
>  I could see an argument for supporting 
> fragmentation in the case of multiplexing, but without that it doesn't 
> seem to actually gain us anything.

In the absence of fragmentation the sender must have the entire message
available in order to prefix the total length in the header - so it
engages in store and forward instead of streaming behavior.

Benefits of streaming:

* Reduced memory consumption on the sender in cases where the message is
being "passed through". A service that does a large database query is a
good example here - the results can be passed back as they are found
even before you know how many there are.

* overall transfer time is reduced when the data to be sent takes time
to generate. Again, consider the DB query example. the transfer time for
the initial records is overlapped with the "think time" of the whole
transaction. Instead of the total send time being "processing + bulk
transfer" it is max (processing + network latency, bulk transfer)

* the receiver can overlap decompression with the receipt of streamed
chunks instead of adding decompression as a store-and-forward step onto
the end. (because without chunking the server cannot begin to send the
document until the whole thing is spooled). This will improve effective
message transfer time up to the JS layer.

* better latency properties to the recving ws stack. Other APIs than the
anticipated JS one may make use of that at no cost to the JS one.

And of course, as you say, fragmentation allows multiplexing and
effective prioritization of flows by the sender.