Re: [rtcweb] Meaning of SHOULD support/use interleaving

"Makaraju, Maridi Raju (Raju)" <> Mon, 27 October 2014 20:31 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 07C971AD47D for <>; Mon, 27 Oct 2014 13:31:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.909
X-Spam-Status: No, score=-6.909 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id uIpxTcZ1SkfJ for <>; Mon, 27 Oct 2014 13:31:37 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 53F391AD471 for <>; Mon, 27 Oct 2014 13:31:28 -0700 (PDT)
Received: from (unknown []) by Websense Email Security Gateway with ESMTPS id D3C05320D8B5; Mon, 27 Oct 2014 20:31:24 +0000 (GMT)
Received: from ( []) by (GMO) with ESMTP id s9RKVRcU024764 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 27 Oct 2014 16:31:27 -0400
Received: from ([]) by ([]) with mapi id 14.03.0195.001; Mon, 27 Oct 2014 16:31:27 -0400
From: "Makaraju, Maridi Raju (Raju)" <>
To: Christer Holmberg <>, Harald Alvestrand <>, "" <>
Thread-Topic: [rtcweb] Meaning of SHOULD support/use interleaving
Thread-Index: AQHP8e/nIllG4P1iiEigF/2tAwwrVZxEXbhogABFpgD//76eMA==
Date: Mon, 27 Oct 2014 20:31:26 +0000
Message-ID: <>
References: <> <> <> <> <>, <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_E1FE4C082A89A246A11D7F32A95A17828E5F2ED0US70UWXCHMBA02z_"
MIME-Version: 1.0
Subject: Re: [rtcweb] Meaning of SHOULD support/use interleaving
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: Mon, 27 Oct 2014 20:31:40 -0000

+1 to make N-DATA optional.

Data channel provides a robust generic peer to peer communication channel. So, one can see that data channel may be used under non-webrtc contexts (like as in CLUE) as a general transport or as a replacement of native to SCTP to traverse firewalls. IMHO, majority of these use cases:
a. May just involve a single data channel (with possible multiplexing on top of it)
b. And may not use the DCEP either (both ends could assume same data channel stream id, this is similar to SCTP PPIDs).
We already made DCEP(b) as optional.

If an app is using just a single data channel then there is no real benefit in using N-DATA. Then why not make it optional? Also, as already pointed out, making it optional won’t break interop as it is still negotiated during SCTP setup time anyway.

I would like to point out that there will be some webrtc applications which might just use one webrtc data channel for simplicity (and may use some multiplexing of different types of msgs/objects on top of it) or one is just sufficient as the app does not send/recv huge chunks of data. So, N-DATA isn’t needed for such webrtc clients either. Then why add burden to such webrtc implementations!?


From: rtcweb [] On Behalf Of Christer Holmberg
Sent: Monday, October 27, 2014 3:11 PM
To: Harald Alvestrand;
Subject: Re: [rtcweb] Meaning of SHOULD support/use interleaving


We shall not add burden just because there are bad programmers out there - they will anyway always manage to use our specs in a wrong way :)



Sent from my Windows Phone
From: Harald Alvestrand<>
Sent: ‎27/‎10/‎2014 22:00
To: Christer Holmberg<>;<>
Subject: Re: [rtcweb] Meaning of SHOULD support/use interleaving
On 10/27/2014 11:41 AM, Christer Holmberg wrote:
> Hi,
>>>>> Within the CLUE WG, we had a discussion regarding the following statement in section 6.1 of draft-ietf-rtcweb-data-channel-12.txt:
>>>>> "The support for message interleaving as defined in
>>>>>                 [I-D.ietf-tsvwg-sctp-ndata] SHOULD be used."
>>>>> First, it is a little unclear what "the support SHOULD be used" means.
>>>> My understanding is that SCTP implementations supporting the extension will use it.
>>>> This is negotiated during the setup of the SCTP association.
>>> If it's done on SCTP level, why do we need to talk about it in the data channel draft?
>>> Is there a reason why it is important to use it for data channels? If so, does it apply to data channels in general?
>> NDATA was added in order to avoid head-of-line blocking on the transport (if I understand this correctly, until
>> this was added, sending a huge message would block the delivery of small messages on all channels until the huge message was fully delivered).
>> Unlike Michael, I see no reason to make this a SHOULD; I think it should be a MUST, and the older
>> implementations in browsers should just be called out as non-conformant.
>> That said, I think that data channels ought to interoperate successfully with implementations that don't support the
>> extension - but data channel implementations in WebRTC endpoints should be under a "MUST implement, MUST offer" ruleset.
> First, keep in mind that I am NOT talking about WebRTC endpoints (which is one reason we shouldn't call it webrtc data channel to begin with, but that's another story...), but ANY type of endpoint that wants to use a data channel.

I'm a bit self-centric on behalf of WebRTC, but I feel the other way -
that it might have been a mistake to float the option of saying "other
things can use these features", and that we should admit only arguments
that bear upon their usage in WebRTC.

I'm not sure I have WG consensus (even rough consensus) on this point,
> Second, I am not talking about MUST support, but MUST use/offer.
> Assume I have a CLUE endpoint, which will use a data channel ONLY to transport CLUE messages. CLUE messages aren't that hugeto begin with, and there will be no blocking of small messages on other channels - as there are no other channels.
> So, why does the CLUE endpoint need to offer interleaving?

Flipping the question around - if a programming mistake in the
Javascript implementing a CLUE endpoint in a WebRTC browser happens to
send a multimegabyte-sized object down the (out of order) datachannel,
is it OK to have all the subsequent CLUE messages delivered 30 seconds late?

Surveillance is pervasive. Go Dark.