Re: [rtcweb] Data Channels Proposal: Now in Internet Draft Form

"MARCON, JEROME (JEROME)" <> Mon, 04 March 2013 16:28 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E181421F8935 for <>; Mon, 4 Mar 2013 08:28:22 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -7.949
X-Spam-Status: No, score=-7.949 tagged_above=-999 required=5 tests=[AWL=-2.300, BAYES_00=-2.599, HELO_EQ_FR=0.35, J_CHICKENPOX_48=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id yYa9nSe5XLag for <>; Mon, 4 Mar 2013 08:28:19 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 6764621F8C2B for <>; Mon, 4 Mar 2013 08:28:18 -0800 (PST)
Received: from ( []) by (8.14.3/8.14.3/ICT) with ESMTP id r24GRxYr019562 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT); Mon, 4 Mar 2013 17:28:15 +0100
Received: from ( by ( with Microsoft SMTP Server (TLS) id; Mon, 4 Mar 2013 17:28:12 +0100
Received: from ([]) by ([]) with mapi id 14.02.0247.003; Mon, 4 Mar 2013 17:28:12 +0100
To: Martin Thomson <>, "" <>
Thread-Topic: [rtcweb] Data Channels Proposal: Now in Internet Draft Form
Thread-Index: AQHODgC+U0LQIV4uXUqD2rdW2590g5iVtT3w
Date: Mon, 04 Mar 2013 16:28:12 +0000
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
x-originating-ip: []
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.69 on
Subject: Re: [rtcweb] Data Channels Proposal: Now in Internet Draft Form
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 04 Mar 2013 16:28:23 -0000

Hi Martin, thanks for your proposal. I have some comments/questions:

1. So the label locally assigned to a data channel created in-band is not transmitted to the peer ? (note that I am fine with this)

2. Whereas defaulting properties like order or reliability is more or less OK, it seems more critical to default the subprotocol property. The app would have to parse the incoming user message to guess if this message is about 'chat' or 'file transfer'

3. Why does StreamID need to be exposed to the app ? I first thought it was to allow in-band data channel creation by a simple message sending. But then:
- either the StreamID is a parameter of send(streamID, data) - and this breaks the alignment with WebSocket API and also the app has no handle on this data channel 
- or streamID is a parameter of createDataChannel and this seems useless as the browser is able to select a new stream number internally

4.  Why does binaryPPID need to be exposed to the app ? The browser is expected to infer the message type from the data passed to send().

5. Finally to decrease the number of mismatching properties situations, you could simply assign a "Default=strict|loose" property to one of the data channels in the SDP.
If set to "strict", endpoints could only create in-band data channels for which the default set of properties applies. To create other types of data channels in-band, renegotiation is required
If set to "loose'", an endpoint receiving a user message on an closed data channel would open the data channel using these default properties. But with the risk of mismatch on subprotocol...
This would make scalable setup scenarios like:
- the SDP offer/answer exchange negotiates one 'chat' data channel, and one 'file transfer' Default data channel
- later on, either endpoint creates in-band 100 data channels for file transfer -> no renegotiation needed, no property mismatch.

This reduces the mismatching situations, in the case where one single set of properties is mostly used at a given time in the session. But the browser (or the app) has to guess at the time of SDP negotiation which set of properties should be the default, i.e. will be used more frequently than the others later on in the session. 

An extended (and deterministic) approach is to restrict the role of SDP offer/answer to the negotiation of some identified set of properties (not data channels). Then data channels are created in-band by the sending of user messages on closed streams, where each user message includes a "set of properties" identifier. You may have a look at the draft I have submitted.


> -----Message d'origine-----
> De : [] 
> De la part de Martin Thomson
> Envoyé : lundi 18 février 2013 18:52
> À :
> Objet : [rtcweb] Data Channels Proposal: Now in Internet Draft Form
> I think that we're actually at the point where the involved 
> parties each understand each other's positions.  Now comes 
> the time to provide everyone else with a coherent proposal 
> that they can evaluate.
> This is intended as an alternative to the mechanisms in 
> draft-ietf-rtcweb-data-channel.  It is also intended to 
> render draft-jesup-rtcweb-data-protocol unnecessary.  That 
> is, of course, as long as it meets with the approval of the 
> working group.
> _______________________________________________
> rtcweb mailing list