Re: [rtcweb] Comments on data channel related drafts

Michael Tuexen <Michael.Tuexen@lurchi.franken.de> Thu, 20 February 2014 22:13 UTC

Return-Path: <Michael.Tuexen@lurchi.franken.de>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3BB6E1A02F0 for <rtcweb@ietfa.amsl.com>; Thu, 20 Feb 2014 14:13:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_DE=0.35, RP_MATCHES_RCVD=-0.548, SPF_HELO_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ipAW7pjsiv1J for <rtcweb@ietfa.amsl.com>; Thu, 20 Feb 2014 14:13:28 -0800 (PST)
Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by ietfa.amsl.com (Postfix) with ESMTP id 554FA1A0105 for <rtcweb@ietf.org>; Thu, 20 Feb 2014 14:13:28 -0800 (PST)
Received: from [192.168.1.103] (p508F07DB.dip0.t-ipconnect.de [80.143.7.219]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 17F601C0B2D71; Thu, 20 Feb 2014 23:13:22 +0100 (CET)
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
From: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
In-Reply-To: <A3045C90BB645147BC99159AA47ABAC7495EAD61@SZXEMA510-MBX.china.huawei.com>
Date: Thu, 20 Feb 2014 23:13:21 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <9782EE1D-7FF3-4F6B-BCDF-37C143770E96@lurchi.franken.de>
References: <A3045C90BB645147BC99159AA47ABAC7495EAD61@SZXEMA510-MBX.china.huawei.com>
To: Lijing <lijing80@huawei.com>
X-Mailer: Apple Mail (2.1510)
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/vsolehyJq2wTbXo4BQgI6Mw623U
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Comments on data channel related drafts
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 20 Feb 2014 22:13:32 -0000

On Feb 19, 2014, at 12:07 PM, Lijing (Jessie) <lijing80@huawei.com> wrote:

> Hi,
>  
> Several comments on data channel related drafts.
>  
> Firstly, There are several “protocol” concepts appeared in different data channel related drafts, and it seems there is no clear statement about the relationship between these concepts.
>  
> draft-ietf-rtcweb-data-protocol has two protocol concept:
> 1.  The protocol byte in data channel open message defined as the protocol for the channel.
> 2.  SCTP payload protocol identifier (PPID)
>  
> WebRTC W3C API has one protocol concept,
> 3.  Protocol defined as “Subprotocol name used for this channel”
>  
> Q1: is the W3C API parameter “protocol” be the same as the protocol byte in the data channel open message?
Correct. The DOMString protocol provided in the W3C API in negotiated in the DATA_CHANNEL_OPEN message as
the protocol field. Please note that the Protocol field in the DATA_CHANNEL_OPEN message is not a byte,
but a string.
>  
>  
> In previous email discussion, Peter Thatcher said :
> “The PPID isn't exposed to the application.  It's just used to
> distinguish text/binary/control.    If an application uses different
> data channels with different protocols, it should use the SID to distinguish between them, not the PPID.  In fact, even if it wanted to use the PPID, it wouldn't be able to.”
Data channels are identified by the SID on the wire, which corresponds to the id field in the W3C API.
The JS API has no access to the PPID.
>  
> Q2: if the answer of Q1 is yes. Then an application can distinguish different data channels with different protocols by the protocol byte in the data channel open message. Is my understanding right?
Not sure what the application is. The W3C API lets you distinguish the data channels, since
you have different objects for it.
>  
> draft-ejzak-mmusic-data-channel-sdpneg provides a way to negotiate sub-protocol parameters out of band.
> 4.  Sub-protocol: The 'sub-protocol' parameter indicates which protocol the client expects to exchange via the channel. 
> example: a=dcmap:5000 stream=2;label="channel 2"; subprotocol="BFCP";max_retr=3
>  
> Q3: is this “subprotocol” be the same concept as the protocol byte in the data channel open message? And the W3C API “protocol” should be set as BFCP?
Again: there is no protocol byte... It is a string and is is the subprotocol...
>  
> ========================================================================
>  
> Secondly, in draft-ietf-rtcweb-data-channel-07, section 8 defines the following PPIDs
>       +------------------------------------+-----------+-----------+
>       | Value                              | SCTP PPID | Reference |
>       +------------------------------------+-----------+-----------+
>       | WebRTC String                      | 51        | [RFCXXXX] |
>       | WebRTC Binary Partial (Deprecated) | 52        | [RFCXXXX] |
>       | WebRTC Binary                      | 53        | [RFCXXXX] |
>       | WebRTC String Partial (Deprecated) | 54        | [RFCXXXX] |
>       +------------------------------------+-----------+-----------+
>  
> Q4: It is confusing what is the intention to define “WebRTC Binary Partial” and “WebRTC String Partial”. I guess these two PPIDs are provided to the application in the case when application supports fragmentation of large messages. But, at the meantime, in this draft, section 6.6 also says: The usage of the PPIDs "WebRTC String Partial" and "WebRTC Binary Partial" is deprecated. Why the usage is deprecated? Does this implies that SCTP layer is responsible for fragmentation of large messages, and it is unnecessary for the upper application to implement the fragmentation of large messages?
Section 6.6 explains it:

The usage of the PPIDs "WebRTC String Partial" and "WebRTC Binary Partial" is deprecated. They were used for a PPID based fragmentation and reassembly of user messages belonging to reliable and ordered data channels.
>  
> Q5: Since PPID 52 and 54 are defined, then how can the browser know whether the data sent from the upper application layer is a part of a whole message and the SCTP PPID should be signaled as Partial 52/54, or this is a whole message and should be signaled as 51/54?
The PPIDs 52 and 54 were intended to implement fragmentation/reassembly inside the data channel implementation.
This is how it is implemented in Firefox. There is now way to access it from the JS API.
However, the usage is deprecated and therefore you don't need to implement it.
>  
> Q6: if one side wants to send two messages, and the application split the first big message to two packages, then the browser will send three SCTP packages whose PPID are 54(part of first message), 51(part of first message), 51(the whole second message) respectively. When the receiver side receives these three SCTP packages, how can the receiver side know which two SCTP packages can be assembled to get the first big message?
It worked only for ordered reliable data channels. So the sequence was used. Once you got PPID 51, the message is complete.
>  
> =========================================================================
>  
> The last question, which I have asked in previous email and have not received any response until now, so I mention this question again.
> in draft-ietf-rtcweb-data-channel-07, Section 4 says:
>    Req. 4:   The application SHOULD be able to provide guidance as to
>              the relative priority of each data channel relative to each
>              other, and relative to the media streams.  This will
>              interact with the congestion control algorithms.
>  
> And in draft-ietf-rtcweb-data-protocol-03, DATA_CHANNEL_OPEN Message is defined as below
> 0                   1                   2                   3
>     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>    |  Message Type |  Channel Type |            Priority           |
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>    |                    Reliability Parameter                      |
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>    |         Label Length          |       Protocol Length         |
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>    \                                                               /
>    |                             Label                             |
>    /                                                               \
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>    \                                                               /
>    |                            Protocol                           |
>    /                                                               \
>    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> Priority: 2 bytes (integer)
>       The priority of the channel as described in
>       [I-D.ietf-rtcweb-data-channel].  The higher the number, the lower
>       the priority.
>  
> Q7: It seems that for now there is no W3C API parameters to set the priority of data channel. I wonder whether the priority of the data channel is open to the application or is only decided by the browser. In other words, I want to know how the application be able to provide guidance as to the priority.
You are right. The W3C API does not cover the priority yet. My understanding is
that this is missing and needs to be added. I expect that the priority is settable
via the JS API.

Best regards
Michael
>  
> Best Regards,
>  
> Jessie
>  
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb