Re: [hybi] Multiplexing extension spec draft 03

Takeshi Yoshino <tyoshino@google.com> Fri, 23 March 2012 18:57 UTC

Return-Path: <tyoshino@google.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4FE0C21F8639 for <hybi@ietfa.amsl.com>; Fri, 23 Mar 2012 11:57:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.962
X-Spam-Level:
X-Spam-Status: No, score=-102.962 tagged_above=-999 required=5 tests=[AWL=0.014, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id te2Q2+KyFHjl for <hybi@ietfa.amsl.com>; Fri, 23 Mar 2012 11:57:57 -0700 (PDT)
Received: from mail-gy0-f172.google.com (mail-gy0-f172.google.com [209.85.160.172]) by ietfa.amsl.com (Postfix) with ESMTP id 395CA21F8627 for <hybi@ietf.org>; Fri, 23 Mar 2012 11:57:57 -0700 (PDT)
Received: by ghbg16 with SMTP id g16so3371510ghb.31 for <hybi@ietf.org>; Fri, 23 Mar 2012 11:57:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-system-of-record; bh=Qwl736bdQKtHOMVVywnsIYFBT+1iTy2u/TpAUt1sLrA=; b=mNpmHtQdEjcPb+e6LLwoT7M++Gp8cK0IO1BDACNpzTLJHzYE0IPZVO6K/pZnz3v4sS abAT1a/KuwN+FInWbms0/8uLuNXiJJ0y1uCKCqbwMvcjFQmCCfs/Aae6XIufa40y66qP DNjjtt2qaHgrPYRYWWgLYfxVVkVSIu/5EmV4THNoCfHNhZVk/SOMeW7QMa9jIXzNJoQv ubw2z2SBp9n6zqyPjY7r/dr7XnrU66aN7Vx/fyysiC1dHBA5JE8iUtA9uyDZt7d5NH10 8H8+Q8Efk1ElT6dL4KcGBdtwAZFQu455Uyc2rllo9NyYYKlqCuZGFf2C+ESM684haufj qbbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=Qwl736bdQKtHOMVVywnsIYFBT+1iTy2u/TpAUt1sLrA=; b=WwQrlyt6zuZSmmWqD+zDXnM3rlBxR6ZS/uCgwSky7xxL77QRaqdKq95UPYsfW7Rb7I FwaJcU2wChtkWUIXQr/tAUA/6ISFVXJ6drGKpmD4HvP5TcaLrcT892GvSJsnSVH1iELf nO+XDo5UK5LAG1upZLU83EHzTqKurPbdNrElXPofubEU/rJ4O7usgwlHntuu3fnU3o4c Hd0POfUHyYUldfNpNI5iM+2h3keMrt/8VTRaOi2NRZ1BJRIwMkf5HXRGKHRyppM8L1l3 qZRIK9ZJ+1nG9LACMltdydv4iVuIcwRvYF1rIMlqj8P9/Rio4ncwkkWQlN30jCv6YHNM tT1Q==
Received: by 10.236.195.38 with SMTP id o26mr13411508yhn.100.1332529076438; Fri, 23 Mar 2012 11:57:56 -0700 (PDT)
Received: by 10.236.195.38 with SMTP id o26mr13411499yhn.100.1332529076323; Fri, 23 Mar 2012 11:57:56 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.101.155.5 with HTTP; Fri, 23 Mar 2012 11:57:36 -0700 (PDT)
In-Reply-To: <003b01cd08d8$b1dd7050$159850f0$@noemax.com>
References: <CAH9hSJb1ewPO3EBgD78anD+=4XouToGR4X7C1wvWqonc2nYB6g@mail.gmail.com> <000301cd05dd$c8f9fc70$5aedf550$@noemax.com> <CAH9hSJYni6BboWdjkLX9xsguph7wJwjAmTUD1genFzT0ja5Wdw@mail.gmail.com> <003b01cd08d8$b1dd7050$159850f0$@noemax.com>
From: Takeshi Yoshino <tyoshino@google.com>
Date: Sat, 24 Mar 2012 03:57:36 +0900
Message-ID: <CAH9hSJYmL1ngaEJ1Th1kye2WKvJ4-zup1qbHCPLs+6MBOtS4Fg@mail.gmail.com>
To: Arman Djusupov <arman@noemax.com>
Content-Type: multipart/alternative; boundary="20cf305e27633f468904bbed9ae1"
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQkvUj/AEm2vBKbnpqHtLjysSIwicsMpj8yjRwAmpMn7CrWyiRzqjpGegFS0DomPDdNF5s7PbbW5hWjJuP8UZOlDitYHP0OMR7sGEQ7lMfzmpM30n0qad86I6tfr15j2NwhmOqzX
Cc: hybi@ietf.org
Subject: Re: [hybi] Multiplexing extension spec draft 03
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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, 23 Mar 2012 18:57:58 -0000

Hello Arman,

On Fri, Mar 23, 2012 at 18:38, Arman Djusupov <arman@noemax.com> wrote:

> Currently the specification does not make it clear which side assigns a
> channel ID when an AddChannel control message is sent. I think this could
> be made flexible; for example if Objective Channel ID is set to 0 then this
> means that the client prefers the server to select the channel ID, if it is
> greater than 1 then the client requests a specific channel ID.
>
> **
>
> ** **
>
> Giving the client the option to select the channel ID can facilitate the
> use of application-specific channel IDs, where the predefined logical
> channel ID is reserved for a specific role, e.g. 1 - Video channel, 2 -
> Voice channel, 3 - Control channel, 4 - Subtitles channel (optional).
>
Some people were discussing intermediaries with mux capacity which
bundle/unbundle logical channels. Here, your proposal seems to try to use
channel ID values as service identifier (like port number of TCP/UDP). It
doesn't go together with such intermediaries. To make this work, we need to
ensure in the spec that channel ID is preserved between endpoints.

IMO, channel IDs should be hidden to application level and resource or
Sec-WebSocket-Protocol should be used for such mapping instead as well as
WebSocket w/o mux.

Are you also going to use mux to provide multiple channels (e.g. video,
voice, ...) but keep them grouped for one session (e.g. video conference
session consists of them)? If so, we need to ensure in the spec that
logical channels must not be unbundled into separate physical channels.

These new restrictions enables the usage as you described, but also
complicates the spec. For me as one of browser developer, they're
unnecessary. The current mux extension's goal is to provide logical
equivalent of normal WebSocket connections in one TCP connection. Your
proposal is beyond that. I'd like to get more opinions on these points.

> ****
>
> ** **
>
> It is also worth mentioning in the spec that the protocol specified by the
> Sec-WebSocket-Protocol header MAY define a default set of logical channels
> that are considered as being implicitly established when the mux extension
> is agreed. Some protocols, as mentioned above, may require a fixed set of
> channels with predefined IDs. Negotiating the same set of channel IDs using
> an AddChannel request<->response every time a new connection is established
> would not be efficient.
>
Providing a way to open multiple logical connections at once is
interesting. As I said above, basically I prefer to realizing it by adding
some way to issue AddChannel commands (different resources may be used to
tell which service each logical channel wants to access) on handshake.

How about this, for example?

C->S Sec-WebSocket-Extensions: mux; preopen="vc-video, vc-voice,
vc-control, vc-subtitle"
(each comma-separated element in preopen parameter's value means value of
Sec-WebSocket-Protocol)

S->C Sec-WebSocket-Extensions: mux; preopen="vc-video=1, vc-voice=2,
vc-control=3, vc-subtitle=4"
and the server sends back 4 AddChannel responses.

We don't have to pay additional RTT though change on request headers is
limited to Sec-WebSocket-Protocol.

We may also add some grouping annotation.

(OT. I don't want core specs to say that Sec-WebSocket-Protocol has
capability to change WebSocket protocol's behavior. Such modification
should be made using extension framework. Also, for now,
Sec-WebSocket-Protocol is an attribute for each logical channel. I'm
disinclined to invite headers other than Sec-WebSocket-Extensions to
determine physical channel (mux extension)'s behavior.)

> It should be permitted for the “protocol” to imply a default set of
> channels that don’t need to be negotiated (at least this should not be
> against the specification).****
>
> **
>
I don't object to make it able to define/use such preset. Maybe useful.

> **
>
> As an example, when Sec-WebSocket-Protocol set to “smart-playback” would
> mean then once the mux is negotiated the following logical channels are
> considered already established: 1 - Video, 2 - Voice, 3 - Control,  4 -
> Subtitles.****
>
> ** **
>
> I think this would make the specification much more versatile.
>