[hybi] Frame size

"Thomson, Martin" <Martin.Thomson@andrew.com> Fri, 16 April 2010 07:30 UTC

Return-Path: <Martin.Thomson@andrew.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 47E9D3A6B31 for <hybi@core3.amsl.com>; Fri, 16 Apr 2010 00:30:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.67
X-Spam-Level:
X-Spam-Status: No, score=-0.67 tagged_above=-999 required=5 tests=[AWL=-0.485, BAYES_40=-0.185]
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 fTDgwcEcmwIH for <hybi@core3.amsl.com>; Fri, 16 Apr 2010 00:30:43 -0700 (PDT)
Received: from csmailgw2.commscope.com (csmailgw2.commscope.com [198.135.207.242]) by core3.amsl.com (Postfix) with ESMTP id A99E128C143 for <hybi@ietf.org>; Fri, 16 Apr 2010 00:21:30 -0700 (PDT)
Received: from [10.86.20.103] ([10.86.20.103]:63154 "EHLO ACDCE7HC2.commscope.com") by csmailgw2.commscope.com with ESMTP id S221113Ab0DPHVW (ORCPT <rfc822; hybi@ietf.org>); Fri, 16 Apr 2010 02:21:22 -0500
Received: from SISPE7HC1.commscope.com (10.97.4.12) by ACDCE7HC2.commscope.com (10.86.20.103) with Microsoft SMTP Server (TLS) id 8.1.393.1; Fri, 16 Apr 2010 02:21:22 -0500
Received: from SISPE7MB1.commscope.com ([fe80::9d82:a492:85e3:a293]) by SISPE7HC1.commscope.com ([fe80::8a9:4724:f6bb:3cdf%10]) with mapi; Fri, 16 Apr 2010 15:21:19 +0800
From: "Thomson, Martin" <Martin.Thomson@andrew.com>
To: Hybi <hybi@ietf.org>
Date: Fri, 16 Apr 2010 15:22:43 +0800
Thread-Topic: Frame size
Thread-Index: AcrdNZqVzJUDn2vuSamwfgOajrSNwQ==
Message-ID: <8B0A9FCBB9832F43971E38010638454F03E3F313ED@SISPE7MB1.commscope.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-cr-puzzleid: {CDCD1595-EC37-4D99-85F2-75E0214D9CC2}
x-cr-hashedpuzzle: AhFo BdWP B40u CCxZ C2P3 DPVJ FEJ0 IKx2 I3eT JTyA Jj7b K5N9 K6ww LD5u LtbL MFbN; 1; aAB5AGIAaQBAAGkAZQB0AGYALgBvAHIAZwA=; Sosha1_v1; 7; {CDCD1595-EC37-4D99-85F2-75E0214D9CC2}; bQBhAHIAdABpAG4ALgB0AGgAbwBtAHMAbwBuAEAAYQBuAGQAcgBlAHcALgBjAG8AbQA=; Fri, 16 Apr 2010 07:22:43 GMT; RgByAGEAbQBlACAAcwBpAHoAZQA=
acceptlanguage: en-US
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-BCN: Meridius 1000 Version 3.4 on csmailgw2.commscope.com
X-BCN-Sender: Martin.Thomson@andrew.com
Subject: [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: Fri, 16 Apr 2010 07:30:44 -0000

Responding to specific concerns on framing seems not especially productive.

Proposal:

 - Frame size is indicated up front.
 - Frames are binary.
 - Frame size be strictly limited (2 octets should suffice).
 - Sub-protocol needed if messages are larger than the max frame.

Justification:

Most use cases are for low latency bi-directional communications.  These don't need large messages.

HTTP is (much) better suited to file transfers in the server->client direction and despite some historical shortcomings in the other direction, still arguably superior (chunked encoding, etc...).

Limiting message size helps keep simple implementations simple; but isn't a burden on implementations that have more complex requirements.

Binary frames isolate user-space (the payload) from the framing layer.  We had this discussion in the meeting (c.f. Pete Resnick's comments).  Thus, 
 - binary frames are easier to process (intermediaries don't have to inspect every octet)
 - kinder on implementations (framing component does not depend on UTF-8 component)
 - isolates framing layer from the bugs of higher layers

Shortcomings:

Greg did have some use cases where larger messages were desired.  A trivial sub-protocol that consists of a continuation marker would solve this.

IF used for UTF-8 AND implementer counts characters instead of octets THEN framing doesn't work.  (One solution to this problem is to start a frame with a known sequence of octets, so that this can be detected.  Another "solution" is to not worry about it.)

--Martin