Re: [rtcweb] Sending of zero-length messages over data channels

"Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com> Mon, 04 August 2014 18:09 UTC

Return-Path: <Raju.Makaraju@alcatel-lucent.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A19331A00AE for <rtcweb@ietfa.amsl.com>; Mon, 4 Aug 2014 11:09:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.5
X-Spam-Level:
X-Spam-Status: No, score=-0.5 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vQ_xUumkMb4v for <rtcweb@ietfa.amsl.com>; Mon, 4 Aug 2014 11:09:11 -0700 (PDT)
Received: from smtp-us.alcatel-lucent.com (us-hpswa-esg-02.alcatel-lucent.com [135.245.18.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9BE431A00E1 for <rtcweb@ietf.org>; Mon, 4 Aug 2014 11:08:59 -0700 (PDT)
Received: from us70tusmtp2.zam.alcatel-lucent.com (unknown [135.5.2.64]) by Websense Email Security Gateway with ESMTPS id E28603A03EFF0; Mon, 4 Aug 2014 18:08:55 +0000 (GMT)
Received: from US70TWXCHHUB04.zam.alcatel-lucent.com (us70twxchhub04.zam.alcatel-lucent.com [135.5.2.36]) by us70tusmtp2.zam.alcatel-lucent.com (GMO) with ESMTP id s74I8u5a015645 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Mon, 4 Aug 2014 14:08:58 -0400
Received: from US70UWXCHMBA02.zam.alcatel-lucent.com ([169.254.8.175]) by US70TWXCHHUB04.zam.alcatel-lucent.com ([135.5.2.36]) with mapi id 14.02.0247.003; Mon, 4 Aug 2014 14:08:56 -0400
From: "Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com>
To: Harald Alvestrand <harald@alvestrand.no>, "rtcweb@ietf.org" <rtcweb@ietf.org>
Thread-Topic: [rtcweb] Sending of zero-length messages over data channels
Thread-Index: AQHPpipfEWtPO6jXOES6Y6R7CwNaxJutiTxggAI5gwD//74D0IAATLYA///AneCAAFNggP//xY3gAej9c4AAExpK0A==
Date: Mon, 04 Aug 2014 18:08:55 +0000
Message-ID: <E1FE4C082A89A246A11D7F32A95A17828E4EC8B4@US70UWXCHMBA02.zam.alcatel-lucent.com>
References: <CAOJ7v-0F9pysYLehjTVDv1Sxz3TKaxi2y6J7RrpGqMdA=tiR_g@mail.gmail.com> <E1FE4C082A89A246A11D7F32A95A17828E4BCC13@US70UWXCHMBA02.zam.alcatel-lucent.com> <CAOJ7v-1r-vToAf-rUfZmKsBC4MX4ZXUcAkqahrskF1D3axOpuA@mail.gmail.com> <E1FE4C082A89A246A11D7F32A95A17828E4C5974@US70UWXCHMBA02.zam.alcatel-lucent.com> <CAOJ7v-1VPP8iAz+gr9h98QUzZnBVna84yPqtc0JZR=ehGgJL0A@mail.gmail.com> <E1FE4C082A89A246A11D7F32A95A17828E4C5E94@US70UWXCHMBA02.zam.alcatel-lucent.com> <CAOJ7v-2SkB3Pqctpu1S_wMY2b6jdOYyz8KxAYLA-q++2WdUbYw@mail.gmail.com> <E1FE4C082A89A246A11D7F32A95A17828E4C61A5@US70UWXCHMBA02.zam.alcatel-lucent.com> <53DDFEC1.3020907@alvestrand.no>
In-Reply-To: <53DDFEC1.3020907@alvestrand.no>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [135.5.27.18]
Content-Type: multipart/alternative; boundary="_000_E1FE4C082A89A246A11D7F32A95A17828E4EC8B4US70UWXCHMBA02z_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/pDzFF5sbbrqoOjecj6RJX35TdV8
Subject: Re: [rtcweb] Sending of zero-length messages over data channels
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 04 Aug 2014 18:09:14 -0000


>IMHO opinion, sending such a dummy byte may have other consequences:

1.      >App is not aware of what's going on? send() probably meant to be called >with non-empty data, but some error leg could have caused it become >empty, but still a byte will be sent out!!

2.      >Debugging becomes bit more complex and not intuitive. WebRTC is >already complex, why add more complexity?

3.      >Interop issues. The more the exceptions the more the interop issues you >see as some implementations may overlook these or implement them >later.

>It's usually a bad idea to send a dummy byte on wire, without the application >direct involvement.

>I recommend spending some time with Wireshark looking at actual traces >before making any such statement. Many protocols have dummy bytes, for >many different reasons.

<Raju2>
I am afraid there is some confusion about my comment and as a result we may be talking about dummy bytes at 2 different levels: app level and underlying protocol level.
I am aware of many protocols using reserved bits, bytes, padded bits/bytes, protocol-level heartbeats/PING-PONGs (SCTP heartbeats use of opaque data). In all these cases the mechanism is built into the protocol below app-level protocol itself with no direct involvement of application-level protocol. My comment was in the context of application-level protocol.
If app calls send() 3 times with data "abc", "" (empty/null data with size 0) and then "xyz" then on the wire in the application-level payload you see "abc" <dummy byte> "xyz".
So, can you please point to me a protocol where this kind of dummy byte(s) are inserted in between application payload?

Btw, If you leave the app choice to send the byte (using OOB_PPID) then there is a possibility for the app to send 256 distinct values instead of browser hard-coding the byte to zero always, which just conveys a single value.

</Raju2>


>PPID_OOB would make the compatibility problem worse, not better.
<Raju2>
I would appreciate if you can provide reasons on why PPID_OOB making compatibility worse?
With PPID_OOB, apps have a choice to negotiate (this negotiation is like any other negotiation for webrtc.) and use this option. PPID_EMPTY option seems to be enabled always and no way to turn-off.
Without an option to turn off PPID_EMPTY, you will get into more compatibility issues as some webrtc implementations may not implement it on day one; a native client could be using an interim version of a popular webrtc lib; or it might be using its own webrtc lib, in which case we can't expect it to implement all these later-adders in a timely manner.

</Raju2>

BR
Raju