Re: [hybi] frame length encoding

John Tamplin <jat@google.com> Sat, 21 August 2010 19:34 UTC

Return-Path: <jat@google.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 7B8FC3A6801 for <hybi@core3.amsl.com>; Sat, 21 Aug 2010 12:34:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.851
X-Spam-Level:
X-Spam-Status: No, score=-105.851 tagged_above=-999 required=5 tests=[AWL=0.125, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
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 3EXCv67V3kpT for <hybi@core3.amsl.com>; Sat, 21 Aug 2010 12:34:25 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by core3.amsl.com (Postfix) with ESMTP id F19073A686D for <hybi@ietf.org>; Sat, 21 Aug 2010 12:34:24 -0700 (PDT)
Received: from hpaq5.eem.corp.google.com (hpaq5.eem.corp.google.com [172.25.149.5]) by smtp-out.google.com with ESMTP id o7LJYwGm025078 for <hybi@ietf.org>; Sat, 21 Aug 2010 12:34:58 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1282419298; bh=UUBc8ob5Dj0QMShGD9bNmX7Y0yI=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=XU4weiNFjrZsWASMT5g5e3AxECBVNl8f1exSD7FUbM5pNnX8Ee/iery5ccyN4a7r5 5K+xIKpdgm/I9/e4K1XBQ==
DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:from:date:message-id: subject:to:cc:content-type:x-system-of-record; b=aYr8gLdMlnzdZf0BqWAyigsmnjWa/GpxK2lUdoeIS3titB61Tab0CIhfMEnV3jWsN X7AWBUdTr/VqMDKVzsC6A==
Received: from ywt2 (ywt2.prod.google.com [10.192.20.2]) by hpaq5.eem.corp.google.com with ESMTP id o7LJYuDU017612 for <hybi@ietf.org>; Sat, 21 Aug 2010 12:34:56 -0700
Received: by ywt2 with SMTP id 2so299436ywt.27 for <hybi@ietf.org>; Sat, 21 Aug 2010 12:34:56 -0700 (PDT)
Received: by 10.150.203.5 with SMTP id a5mr3247057ybg.437.1282419296107; Sat, 21 Aug 2010 12:34:56 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.151.60.3 with HTTP; Sat, 21 Aug 2010 12:34:36 -0700 (PDT)
In-Reply-To: <AANLkTikhhajho895WyEoJMwMk9GJ98kA0Mjy5qr4apC8@mail.gmail.com>
References: <AANLkTimKbmcpgx8k0uXUWvCO=8w9pPrtV=3y4qh6363k@mail.gmail.com> <20100820192927.GA32620@1wt.eu> <4C6EEA55.2050205@hs-weingarten.de> <AANLkTinHqxUOZaVANFpC52t8FfgNw2L5_A-s9Az3Fm7p@mail.gmail.com> <AANLkTinvkxMP8FYz9xjDu_Kt9FfzYotgsqXUDB4MZMEo@mail.gmail.com> <AANLkTim3KRq1arso7wN_b+1TH3sWabYW6uFu7AbYw6-P@mail.gmail.com> <AANLkTikhhajho895WyEoJMwMk9GJ98kA0Mjy5qr4apC8@mail.gmail.com>
From: John Tamplin <jat@google.com>
Date: Sat, 21 Aug 2010 15:34:36 -0400
Message-ID: <AANLkTi=kdk6BRvza_7bpoLNTFzUkjcRRijGLMe_NGXZV@mail.gmail.com>
To: Pieter Hintjens <ph@imatix.com>
Content-Type: multipart/alternative; boundary="000e0cd2e55298fe8a048e5a8212"
X-System-Of-Record: true
Cc: Hybi <hybi@ietf.org>
Subject: Re: [hybi] frame length encoding
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: Sat, 21 Aug 2010 19:34:28 -0000

On Sat, Aug 21, 2010 at 3:24 PM, Pieter Hintjens <ph@imatix.com> wrote:

> The advantage of #0 is simplicity.  Frames can be read and written
> with the utter minimum of logic: no special cases, no ceilings, no bit
> mangling.
>

It has the same special case that option #1 does.


> Simplicity of the framing is also an essential part of reducing CPU
> cycles needed to process frames, which matters in low-latency
> scenarios.
>

I think the difference between option #0 and option #1 will be exactly a
single AND instruction, which hardly seems significant.

Our main use case for high performance messaging is market data and
> the generally-accepted average size of a FIX message is 157 bytes.  We
> also have Twitter messages at 140 bytes and SMS text messages at 160
> bytes.  This argues (gently) that a "short" message is under 255 bytes
> rather than 127.
>

But those are going to be highly compressible, and will easily compress to
under 126 bytes, even with some application level framing around them.

The main difference between #0 and #1 is that #0 uses one of three reserved
bits.  They are easy to spend, but then when we find out we need them it
becomes much more expensive to get them back.  We already know, today,
several potential uses for the reserved bits.  They are reserved simply
because we haven't agreed on how to use them and we are trying to separate
the base framing from how we will implement extensions so we can make
progress, but I think it is very likely that the extension mechanism we
define, starting shortly after the base framing is finished, will
immediately use at least 2 of the bits one way or another.  That doesn't
even include future extensibility requirements we haven't even thought of
yet.

-- 
John A. Tamplin
Software Engineer (GWT), Google