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

"Mo Zanaty (mzanaty)" <> Wed, 29 October 2014 20:17 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 5864A1A88AF for <>; Wed, 29 Oct 2014 13:17:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -14.51
X-Spam-Status: No, score=-14.51 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, 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 kvuC1EjFq-o8 for <>; Wed, 29 Oct 2014 13:17:15 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id AD4D21A88A0 for <>; Wed, 29 Oct 2014 13:17:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;;; l=11241; q=dns/txt; s=iport; t=1414613835; x=1415823435; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=HOCFNxqtetu/ObKsumWqfohSKLOjUdd953xYueDc984=; b=GqLwSHiPH7owUMMYufR2BeAXWMNGZTXKeGWtQKJGKU2g/bCNQBX20GqZ g7Jo/TOKN1L4t3/kEG2DgwogaxqHZicRKUeKLN9HkJXigAOqDoG0np8Nw e18QC5bpvp1aJpeeKO+UfHRsqXrrCa4nE8/IJSZvT0i7t6Rsj+dEBRko2 Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.07,279,1413244800"; d="scan'208,217";a="367622053"
Received: from ([]) by with ESMTP; 29 Oct 2014 20:17:14 +0000
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id s9TKHEni031252 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Wed, 29 Oct 2014 20:17:14 GMT
Received: from ([]) by ([]) with mapi id 14.03.0195.001; Wed, 29 Oct 2014 15:17:14 -0500
From: "Mo Zanaty (mzanaty)" <>
To: Michael Tuexen <>
Thread-Topic: [rtcweb] Meaning of SHOULD support/use interleaving
Thread-Index: AQHP87VUDgEmq3WmIEG5yyqzWfrt0A==
Date: Wed, 29 Oct 2014 20:17:14 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_D076BBBF3D478mzanatyciscocom_"
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: Wed, 29 Oct 2014 20:17:18 -0000

Hi Michael,
I moved to tsvwg as requested. See my reply to Karen, and one reply inline.

For rtcweb, the main point is this. Will rtcweb apps care about blocking on potentially fragmented messages? I think they definitely will, if they care about blocking at all. Even simple JSON objects, which seem like natural message payloads, can easily exceed common MTUs. It doesn’t take huge file transfers to require fragmentation.


On 10/29/14, 6:05 AM, Michael Tuexen <<>> wrote:
On 28 Oct 2014, at 23:28, Mo Zanaty (mzanaty) <<>> wrote:
On Oct 28, 2014, at 5:11 PM, "Michael Tuexen" <<>> wrote:
On 28 Oct 2014, at 21:52, Mo Zanaty (mzanaty) <<>> wrote:
What resource is being conserved by not just requiring it?
8 bytes per packet (for MID+FSN).
Michael, the current NDATA draft requires it to be used for all messages if negotiated. Can’t this be relaxed / optimized to use it for all *fragmented* messages but use DATA for non-fragmented messages to avoid the 8 byte overhead for small messages (like game telemetry/control, an often cited use of data channels).
You can bring this up at the tsvwg mailing list.
Mo: Will do.
However, we normally do not optimize for byte saving... Mixing
both makes the processing harder... Maybe we can use a bit in the flags to indicate if the additional fields are
Mo: Type should already be enough without flags.
The current NDATA draft also says you can’t interleave fragmented messages in a stream, so head of line blocking remains for all fragmented messages, while only small non-fragmented messages can avoid it. This dilutes the utility of NDATA, perhaps enough to make apps that really care about head of line blocking to implement their own app layer fragmentation with messages well below common MTUs, hence defeating NDATA. Can’t this also be relaxed since MID is part of the NDATA extra header?
This would only make sense for messages marked as unordered... For ordered it doesn't make sense.
Mo: The restriction applies to unordered as well as ordered. Even for ordered, it does make sense to avoid head of line blocking at the sender.
I don't understand how you can do it for ordered. The sender sends a large message on stream 0 and after that
a small on stream zero. For both ordered delivery is request. So the receiver can't deliver the second before the

Mo: Blocking sender transmission is very different from blocking receiver delivery to the app. It is wrong to assume all ordered protocols should block sender transmission out of order. Windows and SACK improve performance of ordered protocols despite the receiver blocking delivery to the app.

If those two issues are resolved, I see no argument against making NDATA a MUST in data channels.
Please let us discuss NDATA issues on the tsvwg mailing list...
Mo: Agreed, will do. But I think rtcweb MUST use NDATA only if its benefits outweigh its costs. The current draft does not pass that bar for me. If my app cares about HOL blocking, NDATA is not very useful, so my app must internally fragment, hence NDATA actually becomes harmful (8 bytes closer to exceeding MTU, forcing SCTP fragments and hence risking HOL blocking).
I don't understand the point when I look at the API for data channels... Only for sending messages
on a data channel not requiring ordered delivery. However, the intention of NDATA is to mitigate
the impact of one data channel on others belonging to the same peer connection. This goal is met.
Best regards
Best regards
PS. Some believe data channels will be more widely used than WebRTC media (webtorrent, etc.), so it does make sense to consider the desirable properties of a general peer-to-peer transport, and drop the WebRTC prefix when talking about data channels.