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

Harald Alvestrand <> Mon, 27 October 2014 20:01 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 9BAD31AD3E8 for <>; Mon, 27 Oct 2014 13:01:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Ak3F74LG8XVt for <>; Mon, 27 Oct 2014 13:00:56 -0700 (PDT)
Received: from ( [IPv6:2001:700:1:2::117]) by (Postfix) with ESMTP id 63C501AD3D4 for <>; Mon, 27 Oct 2014 13:00:56 -0700 (PDT)
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7300A7C5A4B; Mon, 27 Oct 2014 21:00:55 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 23urbsMqQzIY; Mon, 27 Oct 2014 21:00:54 +0100 (CET)
Received: from [] (unknown []) by (Postfix) with ESMTPSA id BB5D17C59B3; Mon, 27 Oct 2014 21:00:53 +0100 (CET)
Message-ID: <>
Date: Mon, 27 Oct 2014 13:00:51 -0700
From: Harald Alvestrand <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
MIME-Version: 1.0
To: Christer Holmberg <>, "" <>
References: <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
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:01:02 -0000

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.