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

"Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com> Thu, 24 July 2014 20:25 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 09F061ABB35 for <rtcweb@ietfa.amsl.com>; Thu, 24 Jul 2014 13:25:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.899
X-Spam-Level:
X-Spam-Status: No, score=-6.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5] 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 tXSA1-_4cSqE for <rtcweb@ietfa.amsl.com>; Thu, 24 Jul 2014 13:25:39 -0700 (PDT)
Received: from ihemail1.lucent.com (ihemail1.lucent.com [135.245.0.33]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9C91F1B285F for <rtcweb@ietf.org>; Thu, 24 Jul 2014 13:25:39 -0700 (PDT)
Received: from us70tusmtp2.zam.alcatel-lucent.com (h135-5-2-64.lucent.com [135.5.2.64]) by ihemail1.lucent.com (8.13.8/IER-o) with ESMTP id s6OKPbb8001116 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 24 Jul 2014 15:25:37 -0500 (CDT)
Received: from US70UWXCHHUB01.zam.alcatel-lucent.com (us70uwxchhub01.zam.alcatel-lucent.com [135.5.2.48]) by us70tusmtp2.zam.alcatel-lucent.com (GMO) with ESMTP id s6OKPbpW023667 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 24 Jul 2014 16:25:37 -0400
Received: from US70UWXCHMBA02.zam.alcatel-lucent.com ([169.254.8.175]) by US70UWXCHHUB01.zam.alcatel-lucent.com ([135.5.2.48]) with mapi id 14.02.0247.003; Thu, 24 Jul 2014 16:25:37 -0400
From: "Makaraju, Maridi Raju (Raju)" <Raju.Makaraju@alcatel-lucent.com>
To: Justin Uberti <juberti@google.com>
Thread-Topic: [rtcweb] Sending of zero-length messages over data channels
Thread-Index: AQHPpipfEWtPO6jXOES6Y6R7CwNaxJutiTxggAI5gwD//74D0IAATLYA///AneCAAFNggP//xY3g
Date: Thu, 24 Jul 2014 20:25:37 +0000
Message-ID: <E1FE4C082A89A246A11D7F32A95A17828E4C61A5@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>
In-Reply-To: <CAOJ7v-2SkB3Pqctpu1S_wMY2b6jdOYyz8KxAYLA-q++2WdUbYw@mail.gmail.com>
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_E1FE4C082A89A246A11D7F32A95A17828E4C61A5US70UWXCHMBA02z_"
MIME-Version: 1.0
Archived-At: http://mailarchive.ietf.org/arch/msg/rtcweb/QdH96ZMhL4FuTgzlqVZ-ovbxBrU
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
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: Thu, 24 Jul 2014 20:25:43 -0000

In conclusion, I think websocket API supports zero length because websocket protocol supports zero-length data frames. So, it does not have the issue of ‘bufferedAmount’ discrepancy.


Yes, that is what I meant.
<Raju>
Ok, good. Websocket is not sending any dummy bytes, so bufferedAmount is always accurate.
I am still not convinced that to keep data channel API consistent with websocket API we need to introduce of dummy byte!?
How about keeping consistency of what goes on wire vs. what user sent? websocket preserves that, where as data channel won’t.
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.
IMHO, if doing PPID_OOB is more effort and can’t fit in webrtc 1.0 then it would be better to delay and do it in more proper way than taking a shortcut with PPID_EMPTY. With PPID_OOB approach underlying signaling protocol can negotiate OOB before using it; though such negotiation is not mandatory, but this approach allows such possibility.

I then, rest my case! ☺

</Raju>