Re: [hybi] Framing Take VI (a compromise proposal)

John Tamplin <jat@google.com> Mon, 16 August 2010 14:50 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 401B23A696E for <hybi@core3.amsl.com>; Mon, 16 Aug 2010 07:50:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -104.362
X-Spam-Level:
X-Spam-Status: No, score=-104.362 tagged_above=-999 required=5 tests=[AWL=1.614, 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 9CFxGnc6LCYs for <hybi@core3.amsl.com>; Mon, 16 Aug 2010 07:50:57 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [74.125.121.35]) by core3.amsl.com (Postfix) with ESMTP id BDE623A69EC for <hybi@ietf.org>; Mon, 16 Aug 2010 07:50:56 -0700 (PDT)
Received: from wpaz5.hot.corp.google.com (wpaz5.hot.corp.google.com [172.24.198.69]) by smtp-out.google.com with ESMTP id o7GEpU4x014470 for <hybi@ietf.org>; Mon, 16 Aug 2010 07:51:31 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1281970291; bh=EG25kgBemhZksRInv2yvMZ1N6zE=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=TvXY1ioQ4Om8PzJJcAEBdiHS/hR6MOy/2LJy116xyXhXRhN/0Ofeno1XfjmWcPKDK iDrcMI5iy9Znu5td8ZOyA==
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=AgnI8J902dvVySUS44bO+nsP3pd9i4GpSjWm6b7AjAMIY5ta7IPvDFUT9rAQnmPns Z5+GxA5gOG8mczHRpj1Jg==
Received: from yxg6 (yxg6.prod.google.com [10.190.2.134]) by wpaz5.hot.corp.google.com with ESMTP id o7GEpTT3025001 for <hybi@ietf.org>; Mon, 16 Aug 2010 07:51:29 -0700
Received: by yxg6 with SMTP id 6so2072999yxg.5 for <hybi@ietf.org>; Mon, 16 Aug 2010 07:51:29 -0700 (PDT)
Received: by 10.150.178.18 with SMTP id a18mr3956386ybf.266.1281970289271; Mon, 16 Aug 2010 07:51:29 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.151.60.3 with HTTP; Mon, 16 Aug 2010 07:51:09 -0700 (PDT)
In-Reply-To: <AANLkTikRJGAbjv9apOC0W4td4h0fJoH75eZ+WkoRgKbm@mail.gmail.com>
References: <AANLkTi=TBXO_Cbb+P+e2BVfx69shkf8E1-9ywDh_Y+Kz@mail.gmail.com> <AANLkTi=52ARa2v9oZ1tGosN7oL+kBBVH20XmtkXzPMM0@mail.gmail.com> <AANLkTimjt0YbXfLf83od5b2cSJaZUboBy3-03LFf=Kv8@mail.gmail.com> <AANLkTimV4Xvashf8SZAHS15FCLiX7pUnXcae20Ph73YY@mail.gmail.com> <AANLkTindxmp_cPTZx+6FXsfMt2R0mJt_vNtDZsLRO8Ms@mail.gmail.com> <AANLkTikRJGAbjv9apOC0W4td4h0fJoH75eZ+WkoRgKbm@mail.gmail.com>
From: John Tamplin <jat@google.com>
Date: Mon, 16 Aug 2010 10:51:09 -0400
Message-ID: <AANLkTinyLyOUje4sNkwdYueS17OEvKybtr4z8AHtBbYR@mail.gmail.com>
To: Greg Wilkins <gregw@webtide.com>
Content-Type: multipart/alternative; boundary="000e0cd6a9c0b463c1048df1f7f9"
X-System-Of-Record: true
Cc: hybi@ietf.org
Subject: Re: [hybi] Framing Take VI (a compromise proposal)
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, 16 Aug 2010 14:50:59 -0000

On Mon, Aug 16, 2010 at 10:32 AM, Greg Wilkins <gregw@webtide.com> wrote:

> An extension-data op-code would allow a channel id to be associated
> with every extension-data frame, so messages would just have to be
> sent using that frame type.  I'm not sure that is a bad restriction
> given that I think intermediaries that do not understand MUX should do
> nothing with the data other than forward it.
>

To make sure I understand what you are proposing, here is a sample
conversation according to my understanding of what you are suggesting:

INI=1/FIN=1 opcode=CONTROL
   control: MUX - create channel (details)

INI=1/FIN=1 opcode=CONTROL
   control: MUX - use channel 1

INI=1/FIN=1 opcode=MUXDATA
   payload: multiplexed data:
      channel 1, 42 bytes: (channel 1 payload)

...

INI=1/FIN=1 opcode=CONTROL
   control: MUX - close channel 1

INI=1/FIN=1 opcode=CONTROL
   control: MUX - acknowledge close channel 1

If my understanding is correct, then I think that can work though I do think
it limits what intermediaries can do if they don't understand the frame
type.  As you say above, some extensions will mean they either blindly pass
the frame or drop it.  I worry that corporate firewalls will default to
dropping anything they can't inspect, which would limit the ability to
actually use extensions defined in the future, or at least greatly delay
their usefulness as such intermediaries will have to upgraded first.

The bigger problem is that this approach of allocating new opcodes means
that we need more opcodes, and we will have to pay that cost up front for
even unextended frames, since we won't be able to make it larger later
without breaking existing implementations.  Having a variable-length
extension header basically means we can allocate it later as we define new
extensions.

Maybe a compromise would be to define an opcode EXTENDED_FRAME, and for that
opcode the n bytes (however many we want to allocate) are an extension ID,
and the rest are extension-defined (which might include data from multiple
logical channels, for example, so it would need multiple frame
types/lengths).

Also note that you were previously suggesting moving the message length
field to the extension data -- that wouldn't be possible if we do away with
extension data and instead make it an opcode.  So, I assume that means we
would keep the message length as defined in the current proposal.

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