Re: [rtcweb] Open data channel issues

Paul Kyzivat <> Wed, 26 February 2014 22:06 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id D53D01A074D for <>; Wed, 26 Feb 2014 14:06:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_SOFTFAIL=0.665] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id l1SamKy0ciBh for <>; Wed, 26 Feb 2014 14:06:58 -0800 (PST)
Received: from ( [IPv6:2001:558:fe14:43:76:96:62:80]) by (Postfix) with ESMTP id 7AE4E1A074A for <>; Wed, 26 Feb 2014 14:06:58 -0800 (PST)
Received: from ([]) by with comcast id X1qG1n0041HzFnQ58A6xSN; Wed, 26 Feb 2014 22:06:57 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([]) by with comcast id XA6w1n00h3ZTu2S3aA6w08; Wed, 26 Feb 2014 22:06:57 +0000
Message-ID: <>
Date: Wed, 26 Feb 2014 17:06:56 -0500
From: Paul Kyzivat <>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
References: <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=q20121106; t=1393452417; bh=KALa+m/5OUq43r4n2Xhq66HmobpSkLD+7OSFO3QprRQ=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=FdJ9WSsTtW+SSz9ZSwOBtXteTXpMlsYhHgZx1YYnldMYPrJeaCqLCvKKa8C+DkD2w bA/OR7wydhdr9zKUxqZVN1rMFFbwYRp5paGkVjJ6lIMRcXJZajVLSUKCm3X+Qeucdk N0YfqbaC9HtT0vqV76ZB/kQOHVPdnKUwqX+p5M7BZjSHVGMvCeV+V9MWnalk+83pEJ /cGqrHB0xw8Z8pd6xn6yTNKJ+Ti9ZYlNEt6U6dxdWAUQy/yb9S2GlPIQfFRRMJJYYp QBIJcBML5qvNa1Yj9I7yWviNEXjNWlQkqm6fRna1Xbc/L6tadpxyqusuJbQWAhxMpI XpyzZmtIy6wpw==
Subject: Re: [rtcweb] Open data channel issues
X-Mailman-Version: 2.1.15
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: Wed, 26 Feb 2014 22:07:00 -0000

On 2/26/14 4:02 PM, Randell Jesup wrote:
> On 2/26/2014 2:50 PM, Paul Kyzivat wrote:
>> Michael,
>> There have been no replies to my comments:
>> The first of those is about channels, the 2nd about DCEP. One of my
>> issues is that the partitioning between those two drafts is awkward.
>> At the least some things from DCEP should be moved to the channel
>> draft. It might be better to just merge those two drafts, or do a
>> serious refactoring.
> There seem to have been a number of responses to your second posting at
> least.

Well - *one*, and my reply. My mistake - I lost track, and only checked 
the first one when I sent this. :-(

>> How about:
>     Each SCTP user message contains a so called Payload Protocol
>     Identifier (PPID) that is passed to SCTP by the data channel layer
>     and sent to its peer.  This value is used to multiplex WebRTC Data
>     Channel Establishment Protocol messages (defined in [I-D.ietf-rtcweb-
>     data-protocol]) with messages containing user data on a data
>     channel. The PPID is also used to distinguish UTF-8 encoded user
>     data and binary encoded user data.
> That seems reasonable and clearer.


>> * Section 6.5
>> This section contains:
>     Data channels can be opened by using internal or external
>     negotiation.  The details are out of scope of this document.
>     A simple protocol for internal negotiation is specified in
>     [I-D.ietf-rtcweb-data-protocol] and MUST be supported.
>> But internal and external negotiation are not defined in this document.
>  > I *thought* that internal negotiation was by definition negotiation
> by use of
>  > rtcweb-data-protocol. (draft-ejzak-mmusic-data-channel-sdpneg-00
> thinks so too,
>  > but calls it "in-band negotiation".) There should be a good
> definition of these
>  > terms, or reference to one. And more discussion if there can be other
> kinds of
>  > internal negotiation. (If so, how would one be chosen?)
> Well, the text above says that ietf-rtcweb-data-protocol specifies an
> internal negotiation protocol,
> so it's not that far off.  The split does allow someone to use an
> alternative negotiation protocol
> (internal or external).
> How about:
>     Data channels can be opened by using negotiation within the SCTP
> association or external
>     negotiation.  External negotiation is defined as any method which
> results in an agreement
>     as to the parameters of a channel and the creation thereof.
>     The details are out of scope of this document.
>     A simple protocol for negotiation within the SCTP association is
> specified in
>     [I-D.ietf-rtcweb-data-protocol] and MUST be supported.

> Perhaps someone can wordsmith "external negotiation" better.

ISTM the issue is that Internal vs. External isn't the key distinction. 
What is key is that there is one method that MUST be *supported* but 
need not be the only one used. Other mechanisms may be used. It doesn't 
really matter whether they are conducted internally (over the SCTP 
association) or externally (anything else).

E.g., I could use DCEP to establish one channel, and then use my own 
private protocol over that to negotiate other channels. Would that be 
internal or external negotiation? Does it matter?

>> * Section 6.6:
>> Say:
>     All data sent on a Channel in both directions MUST be sent over the
>     underlying stream using the reliability defined when the Channel was
>     opened unless the options are changed, or per-message options are
>     specified by a higher level.
>  > Is the recipient to consider it an error if messages are received
> with options different from those
>  > defined for the channel? Also, is it an error if messages are
> received with a PPID that isn't specified
>  > in Section 8? (And what about PPID 50?)
>> How are such channel errors to be treated?
> I'd propose that if messages are received with options that don't match
> the initial definition, that fact should be ignored and the message
> processed.
> If messages with an unknown PID are received, those messages should be
> ignored.

I could live with that. It comes to a philosophical issue of whether you 
want to fail soft or fail hard.

Could just explicitly say that behavior when the per-message SCTP 
parameters are inconsistent with the channel is nonconformant to this 
specification and undefined. And that behavior when PPIDS other than 50, 
51, and 54 (did I remember right?) are used is also nonconformant and 

Note that the current partitionion makes it hard to specify conforming 
use of PPID 50. From a channel perspective you can use it, but from a 
DCEP perspective you can only use it a certain way.

(This would be easier if the two were merged. Since DCEP is mandatory to 
implement, there seems little reason to keep them separate.

> In both cases, logging of such an event to the application (or onerror
> calls in WebRTC W3 JS layers) is allowed but not required. Note that the
> onerror callback is currently under-defined, so this might change.

If there is a goal to report errors in a defined way then that would 
change things.