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

"Mo Zanaty (mzanaty)" <> Fri, 31 October 2014 18:17 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 796171A03A6 for <>; Fri, 31 Oct 2014 11:17:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.511
X-Spam-Status: No, score=-14.511 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id EC4vddlBfERD for <>; Fri, 31 Oct 2014 11:17:57 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id F035E1A03A3 for <>; Fri, 31 Oct 2014 11:17:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=3255; q=dns/txt; s=iport; t=1414779476; x=1415989076; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=GWEnnVFfoUIGCn9D8TbUdJvZGzE2lqu4Qln7s7AmadA=; b=LR//8KKv0qQxNOfRyS7hySI7MoRb8SJ80xFhpiLSGnNr8vgWiPzXXv9T f32eFhj6X6J4lpp3Yy6tz5H/yhU/p2Qz7JQTBaTZQ5eoPsIJ29KSI46il Ha2mAdYjzuDnwrI6jLN1qJxQaue1Gmbaogp6pqnZTqKsdaN0BvUnA2ir+ o=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.07,295,1413244800"; d="scan'208";a="92209864"
Received: from ([]) by with ESMTP; 31 Oct 2014 18:17:56 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id s9VIHuad005191 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Fri, 31 Oct 2014 18:17:56 GMT
Received: from ([]) by ([]) with mapi id 14.03.0195.001; Fri, 31 Oct 2014 13:17:55 -0500
From: "Mo Zanaty (mzanaty)" <>
To: Michael Tuexen <>
Thread-Topic: [rtcweb] Meaning of SHOULD support/use interleaving
Thread-Index: AQHP9Tb9flhRKPwK+0CahQGt2FaUYQ==
Date: Fri, 31 Oct 2014 18:17:55 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/
x-originating-ip: []
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "" <>
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: Fri, 31 Oct 2014 18:17:59 -0000

Hi Michael,
Merging your points and replying here since we are firmly in rtcweb cases.
We can summarize for tsvwg once concluded (if we reach any conclusion).

Consider real rtcweb apps that have many potentially large blobs to
transfer, like proxy browsing, webtorrent, chats with file exchange, games
with object exchange, etc. Developers may think sending these blobs as
messages on an unordered channel would work without HOL blocking. But they
would be wrong since the current NDATA spec actually blocks, effectively
behaving like an ordered channel.

Once they debug this, they will rewrite the app to either:
1) create a new channel for every blob, which is excessive overhead for
the app, browser and SCTP stack (but NDATA does at least enable this
solution), or
2) fragment blobs in the app, which adds (some but less) overhead for the
app (and defeats NDATA).

These are the only ways to get unordered, non-blocking delivery. At least
NDATA makes the app hack 1) possible since channels don¹t block each
other. But it would be far more useful if unordered channels did not block
like ordered ones.

More inline.


On 10/30/14, 2:53 PM, Michael Tuexen <>
Can you be a bit more specific? My understanding is:
1. Messages sent on one data channel should not block messages sent on a
different channel.
   I hope we agree on this and this goal can be reached with N-DATA.
2. If you send a larger message on an ordered data channel, it will block
   messages sent on the same data channel. Since it is an ordered channel,
this can't
   be avoided. I hope we also agree on this.
3. If you send a large message on an unordered data channel, and a small
one after
   that, there is no statement made in which these messages would be
   Are you focussing on this and do you want to require some sort of

Mo: Agreed on 1 and 2, with the admittedly minor caveat mentioned earlier
on 2 about blocking sender transmission vs. receiver delivery to app. For
3, which is indeed my focus, agreed the W3C spec makes no statement about
order (since the channel is unordered!), but the NDATA spec actually does
mandate HOL order for messages>MTU, which is counter to the whole point of
an unordered channel. A developer must override defaults to get an
unordered channel, presumably to get faster, non-blocking delivery for the
individual messages. Otherwise, what is the point of unordered channels if
they block just like ordered ones?

On 10/30/14, 5:55 PM, Michael Tuexen <>
Assume an unordered data channel dc and the application calls
How do you decide whether the intended behaviour is either
(a) deliver big_msg before small_msg
(b) deliver small_msg before big_msg
I don't see any way in the W3C API to indicate this. Both alternative
might the appropriate in different scenarios.

Mo: The point of unordered channels is to send and receive everything
whenever it becomes available. The transport does not need to worry about
providing any specific ordering, but it is not expected to block based on
internal ordering rules.