Re: [rtcweb] Comments on draft-ietf-rtcweb-data-protocol-03

Paul Kyzivat <> Tue, 25 February 2014 17:49 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id AA67B1A0111 for <>; Tue, 25 Feb 2014 09:49:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 1.465
X-Spam-Level: *
X-Spam-Status: No, score=1.465 tagged_above=-999 required=5 tests=[BAYES_50=0.8, 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 z-R4W8KY1zM9 for <>; Tue, 25 Feb 2014 09:49:56 -0800 (PST)
Received: from ( [IPv6:2001:558:fe14:44:76:96:59:243]) by (Postfix) with ESMTP id C37A31A0105 for <>; Tue, 25 Feb 2014 09:49:55 -0800 (PST)
Received: from ([]) by with comcast id WdJD1n0010vyq2s5DhpucR; Tue, 25 Feb 2014 17:49:54 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([]) by with comcast id Whpu1n0073ZTu2S3RhpuPx; Tue, 25 Feb 2014 17:49:54 +0000
Message-ID: <>
Date: Tue, 25 Feb 2014 12:49:54 -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
To: Michael Tuexen <>
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=1393350594; bh=Ffr90wqnV2gDujqiZuCi+qv6jvRsjh/PuKqmU1nYVXQ=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=UrWV5Ii/sSiyeDpoVE8T6rUeJOHKD7pAsqmkM6F16vftZsJrXqGKtleFn61KuTMQu fDzkHRlbJG3f9+ai2xD9i57V++vYb0z6hWcuR1vNMnqOHI5sUh/jZUDMe9OJ0TbL3U A/jB2C4O8iuuVgsXMmwj5WK7iNpi2tCZWj8+YhCupndWQPUtav/xncS5aI+rDeaCbz cBgVUPmf1xhFcJnYX8oPVCGBto3m8uNvbL6c+B7HuiHAOjxhTKynZjpizmxpmkrLdf ezrYZptVmffyKuniSX0AHDrux4a8o7iZCxhhHGiB+CzNLYsiWmvENatn4dSmn7Yob6 SAhMi/tkKQPKA==
Cc: "" <>
Subject: Re: [rtcweb] Comments on draft-ietf-rtcweb-data-protocol-03
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: Tue, 25 Feb 2014 17:49:57 -0000


On 2/24/14 5:12 AM, Michael Tuexen wrote:
> On Feb 23, 2014, at 4:07 AM, Paul Kyzivat <> wrote:
>> A few comments on this draft:
>> * Section 5.1:
>>       DATA_CHANNEL_PARTIAL_RELIABLE_TIMED (0x02):  The channel provides
>>          a partial reliable in-order bi-directional Communication
>>          channel.  User messages might not be transmitted or
>>          retransmitted after a specified life-time given in milli-
>>          seconds in the Reliability Parameter.  This life-time starts
>>          when providing the user message to the Javascript engine.
>> The last sentence above is troubling. This protocol won't always be used via Javascript. Can we please have a definition that
> OK. What about replacing the last sentence with
> This life-time starts when providing the user
> message to the protocol stack.

*which* protocol stack?

This is part of the problem. As the documents are currently structured, 
there is a "data channel establishment protocol", but there is no "data 
channel protocol".

But in reality there *is* a (thin) data channel protocol. It just isn't 
described explicitly. In a browser it is perhaps just the code behind 
the data channel API. But in other environments it may need to be more 
explicit. It has some obligations. Presumably enforcing this "lifetime" 
parameter is one of them. Enforcing the use of sequenced messages 
between a DCEP open and receipt of ACK is another.

>> doesn't depend on that? Is the timing being done by SCTP, or are you assuming that a data channel layer on top of SCTP is doing this? Is it specific to SCEP, or is it still applicable when the channel has been established via external negotiation?
> It is actually the time when the message is provided to the SCTP stack, but I think
> there might be some code running between the SCTP code and the user code (let it be
> JS or anything else). I'm assuming that there is no substantial buffering happening
> there.
>> Does use of this option imply that retransmission continues until this time limit is reached? Or might it stop after some implementation defined number of retransmissions?
> The only way the retransmissions don't happen until the time limit is reached, is that
> SCTP decides that the association is broken because of excessive retransmissions.
>> The description of the reliability parameter says:
>>       This field is ignored if a reliable channel is used.
>> IMO folk wisdom says that some specific value (e.g., 0) should be prescribed to be used in such cases. That makes things more deterministic and provides more flexibility in extending the protocol in the future.
> What about:
> For reliable channels this field MUST be set to 0 on the sending side
> and MUST be ignored no the receiving side.


>> The name "Protocol" (and "Protocol Length") here is troublesome, because it is ambiguous with other sorts of uses. (See my comment about this point earlier today wrt draft-ietf-rtcweb-data-channel-07.) Others (including draft-ejzak-mmusic-data-channel-sdpneg-00 and websockets) call this "subprotocol". Using that would make it a little less confusing.
> In the W3C specification it is also called protocol, but the text talks about sub-protocol. Maybe we should do
> the same here.

I'm not following the W3C part.

I'm just interested in getting consistency, and avoiding confusion.
Right now there is a lot of confusion around the use of "protocol".

>> Also, ISTM that all of these things are applicable to externally negotiated channels, and so ought to be defined by draft-ietf-rtcweb-data-channel. (But of course their use in the DATA_CHANNEL_OPEN message belongs here.)
> Reliability is discussed there, but I agree, we need to discuss label and protocol there, too.


>> * Section 8.4:
>> ISTM there ought to be a template of the minimum information that the specification for a registered (sub)protocol MUST (SHOULD?) include. E.g.,
>> - what Channel Type(s) are valid for this (sub)protocol
> I assumed all...

ISTM that in *most* cases a if a (sub)protocol is designed for use with 
a reliable channel it won't work correctly with an unreliable channel.

And while things designed to work with an unreliable channel will 
probably continue to work with a reliable channel, they might not have 
the intended properties.

That's why its good to have some guidelines about what the specification 
must contain. It prevents people providing something sloppy and 
incomplete that isn't sufficient to use the (sub)protocol.

>> - A contact for more information about this protocol
> You need to provide a reference for the protocol. Isn't that enough?

Depends on the form of the reference. Is the reference required to be 
publicly available? Stable?

Note the definition of FCFS policy in 5226:

       First Come First Served - Assignments are made to anyone on a
             first come, first served basis.  There is no substantive
             review of the request, other than to ensure that it is
             well-formed and doesn't duplicate an existing assignment.
             However, requests must include a minimal amount of clerical
             information, such as a point of contact (including an email
             address) and a brief description of how the value will be
             used.  Additional information specific to the type of value
             requested may also need to be provided, as defined by the
             namespace.  For numbers, the exact value is generally
             assigned by IANA; with names, specific text strings can
             usually be requested.

Having a sufficient definition of what must be in the registry, and what 
must be in a reference from the registry is *more* important for FCFS 
than it is for some of the more restrictive policies. The policies that 
get careful review can perhaps depend on the reviewers stopping 
something that is incomplete.

IMO the registry ought to provide, directly or indirectly, enough 
information to implement/use the (sub)protocol.


> Best regards
> Michael
>> 	Thanks,
>> 	Paul
>> _______________________________________________
>> rtcweb mailing list