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

Takeshi Yoshino <tyoshino@google.com> Mon, 16 August 2010 09:24 UTC

Return-Path: <tyoshino@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 CE4463A67DB for <hybi@core3.amsl.com>; Mon, 16 Aug 2010 02:24:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.851
X-Spam-Level:
X-Spam-Status: No, score=-103.851 tagged_above=-999 required=5 tests=[AWL=0.372, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, MIME_BASE64_TEXT=1.753, 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 Hl5flfCt3C7Q for <hybi@core3.amsl.com>; Mon, 16 Aug 2010 02:24:34 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [74.125.121.35]) by core3.amsl.com (Postfix) with ESMTP id BBA6A3A6816 for <hybi@ietf.org>; Mon, 16 Aug 2010 02:24:33 -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 o7G9P8eC010700 for <hybi@ietf.org>; Mon, 16 Aug 2010 02:25:08 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1281950708; bh=3NnophjNBcxn6fipqVV8MLIDP38=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=dfu9V5u+gZQElb3LO47qFptQm3HOi1nTlkGZa1oCYfksNx91s/YL03Vd4iHLkllgM Cz4Rr18KMhKGu1KOhJVkQ==
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=jeBfqMV2rpmMrd6yo8LAWNhDobK3EuqiT1xSm7cT/JLa5B7VHTw7dAGI1Oe9BNNn2 g26cHdohpuBaKxBXUYeTg==
Received: from iwn4 (iwn4.prod.google.com [10.241.68.68]) by wpaz5.hot.corp.google.com with ESMTP id o7G9OwJY002483 for <hybi@ietf.org>; Mon, 16 Aug 2010 02:25:01 -0700
Received: by iwn4 with SMTP id 4so1950872iwn.25 for <hybi@ietf.org>; Mon, 16 Aug 2010 02:25:01 -0700 (PDT)
Received: by 10.231.166.72 with SMTP id l8mr5713307iby.95.1281950700156; Mon, 16 Aug 2010 02:25:00 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.231.14.67 with HTTP; Mon, 16 Aug 2010 02:24:40 -0700 (PDT)
In-Reply-To: <AANLkTimV4Xvashf8SZAHS15FCLiX7pUnXcae20Ph73YY@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>
From: Takeshi Yoshino <tyoshino@google.com>
Date: Mon, 16 Aug 2010 18:24:40 +0900
Message-ID: <AANLkTi=SF1GH9ZpqUYGy_R1fhmUU=rxWq0xi7cj7buJp@mail.gmail.com>
To: Greg Wilkins <gregw@webtide.com>
Content-Type: multipart/alternative; boundary="005045013e1b1a3953048ded6839"
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 09:24:39 -0000

2010年8月16日13:28 Greg Wilkins <gregw@webtide.com>:

> 2010/8/16 Ian Fette (イアンフェッティ) <ifette@google.com>:
> > On Sun, Aug 15, 2010 at 8:44 PM, Greg Wilkins <gregw@webtide.com> wrote:
> >>
> >> Ian,
> >>
> >> thanks for the proposal.
> >>
> >> It appears that the total message length is mandatory if fragmentation
> >> is used, however I believe that one of the use-cases for fragmentation
> >> is to send dynamic messages where the total length is not known in
> >> advance.   Could we make message length optional somehow?
> >>
> >
> > It is optional. %x0000000000000000 ; complete message length is unknown
> (iff
> > initial==1 && final==0) -- suggestions as to how to make that clearer
> most
> > welcome.
>
> Sorry my bad. I see it in the BNF now.
>
> It does feel a little funny to be byte squeezing other lengths and
> then to send 8 zeros to say unknown.  To be consistent, we should
> either just always send lengths in full or always make an attempt to
> squeeze.
>
>
>
> >> Alternately, message length (in bytes and/or in characters etc.) is
> >> just one example of meta-data.  Would it not be possible to support
> >> that in a standardized meta data extension?
>
> any thoughts on this?
>
>
it also sounds ok to me.



> >> If we are to have per frame extension data, then I think having the
> >> extension length in the header so simple implementations can skip is a
> >> good approach.  However, I think we probably would also need to goto
> >> extra detail about how data from multiple extensions would be
> >> separated within the extension data.
> >>
> >> However, I remain a little concerned that having both op-code and per
> >> frame extension data could result in some contradictory data.  For
> >> example, if we have an op-code for final frame, then it is likely that
> >> intermediaries will know that frame and possibly use it as part of
> >> shutting down the connection (with half closes etc.).  If we then have
> >> an extension that provides multiplexing and allows a channel ID to be
> >> associated with every frame, what does it mean to have a final frame
> >> op code extended with a channel ID?
> >
> > I would assume it means that a complete message has been sent, but that
> the
> > channel remains open. E.g. I have two channels open, the fact that I've
> sent
> > a complete message on one channel shouldn't be taken as an indication
> that
> > I'm done sending messages on that channel. Even in the non-multiplexing
> > case, the fact that you've received a full message doesn't mean the
> > connection should be shut down. That's the point of "persistent" :)
>
> Sorry I think you have misunderstood my scenario.  By Final frame, I
> was not meaning the final frame as indicated by the bit in your frame
> header, but the final frame op-code that we have previously discussed
> as one of the potential op-codes (text-data, biinary-data, ping, pong,
> final frame, etc).   The final frame op-code has been proposed to half
> close a connection - ie no more frames will be sent after a final
> frame.  There is such an op-code in the current -00 proposal already.
>
>
>
I feel like that kind of "logical" half closing should be dealt with by
multiplexing extension level by raising
some bit or some mux op-code in extension bits for mux protocol to tell that
channel X is half closed by
client.

Such final frame op-code in standard WebSocket framing (core protocol)
should not be diverted for indicating closing some of mux-ed channels.

That said, we're saying that complete message length field means the size of
messages in mux-ed channel.
Yes, this is also "logical" information for mux-ed channels.
Letting two meta-data (the followings) both in standard WebSocket framing
(core protocol) have meanings for
different level sounds a bit complicated. Good point.
- complete message length : to tell complete message length of messages
in mux-ed logical channel,
- op-code : to tell encapsulating real WebSocket channel


> So to restate my concern, I'm worried that per frame extension data
> and core protocol op-codes may not be entirely orthogonal. Some
> extensions may be very meaningful for some op-codes, but not others.
>
> To flip this around to a question - can you say why you need extend
> every frame?   if there are ping, pong and final frame op-codes
> defined, what is the use-case to extend them?  I can see the good
> use-cases for extending frames with text and binary op-codes, but that

could be done with just a extended-text and extended-binary op-code?
>
>
i'm flexible with combining or separating EXT from op-code. If we have
op-codes for which extension doesn't make sense,
your idea looks better in terms of utilization.

if we define EXT bit separately, when new op-codes are added in the future,
old implementation still can know that there's
extension in that frame. op-code is unknown for that implementation, so i'm
not sure if this is really useful.

Thanks,


> cheers
> _______________________________________________
> hybi mailing list
> hybi@ietf.org
> https://www.ietf.org/mailman/listinfo/hybi
>