Re: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare

Christer Holmberg <christer.holmberg@ericsson.com> Mon, 10 February 2014 17:30 UTC

Return-Path: <christer.holmberg@ericsson.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 162761A088E for <rtcweb@ietfa.amsl.com>; Mon, 10 Feb 2014 09:30:40 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.851
X-Spam-Level:
X-Spam-Status: No, score=-3.851 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_SE=0.35, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-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 WOl-dFURH7jD for <rtcweb@ietfa.amsl.com>; Mon, 10 Feb 2014 09:30:37 -0800 (PST)
Received: from mailgw2.ericsson.se (mailgw2.ericsson.se [193.180.251.37]) by ietfa.amsl.com (Postfix) with ESMTP id F353F1A08B3 for <rtcweb@ietf.org>; Mon, 10 Feb 2014 09:29:59 -0800 (PST)
X-AuditID: c1b4fb25-b7f038e000005d01-90-52f90c96aade
Received: from ESESSHC005.ericsson.se (Unknown_Domain [153.88.253.124]) by mailgw2.ericsson.se (Symantec Mail Security) with SMTP id BC.E0.23809.69C09F25; Mon, 10 Feb 2014 18:29:59 +0100 (CET)
Received: from ESESSMB209.ericsson.se ([169.254.9.99]) by ESESSHC005.ericsson.se ([153.88.183.33]) with mapi id 14.02.0387.000; Mon, 10 Feb 2014 18:29:58 +0100
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
Thread-Topic: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare
Thread-Index: Ac8mR2/m3LFj8oi+SFKLxbYiytu9PP//8tkA///uSjCAABcpAP//4ZBAgACIq4CAABjmcw==
Date: Mon, 10 Feb 2014 17:29:57 +0000
Message-ID: <7594FB04B1934943A5C02806D1A2204B1D167A2E@ESESSMB209.ericsson.se>
References: <7594FB04B1934943A5C02806D1A2204B1D166CFA@ESESSMB209.ericsson.se> <4616BFFA-F461-4CE8-9D85-211B86D4BE93@lurchi.franken.de> <7594FB04B1934943A5C02806D1A2204B1D166D7B@ESESSMB209.ericsson.se> <71288EED-3C82-44A7-950B-EFEFA62616E6@lurchi.franken.de> <7594FB04B1934943A5C02806D1A2204B1D166F8C@ESESSMB209.ericsson.se>, <EDF758D1-A388-40D4-83EA-238C7DC82F31@lurchi.franken.de>
In-Reply-To: <EDF758D1-A388-40D4-83EA-238C7DC82F31@lurchi.franken.de>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [153.88.183.17]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsUyM+Jvje50np9BBhvn8VtcbFrCaLH2Xzu7 A5PHkiU/mTw2tOxgCmCK4rJJSc3JLEst0rdL4Mq4uTGtYKlURVvDbPYGxg8iXYycHBICJhJT +laxQdhiEhfurQeyuTiEBA4xShz8No8FwlnMKDHr3wGgDAcHm4CFRPc/bZAGEQFTiYPLQWo4 OZgF1CXuLD7HDmILC/hILDuwjxmixlfi2qV5bBB2mMSL07NYQMawCKhKzPyYBBLmBSq5ee4Y E8SqFmaJU03LGUESnAKuEtN2L2MFsRmBjvt+ag0TxC5xiVtP5jNBHC0gsWTPeWYIW1Ti5eN/ rCDzJQQUJZb3y0GU60gs2P2JDcLWlli28DUzxF5BiZMzn7BMYBSbhWTqLCQts5C0zELSsoCR ZRUje25iZk56udEmRmB8HNzyW3UH451zIocYpTlYlMR5P7x1DhISSE8sSc1OTS1ILYovKs1J LT7EyMTBKdXAKDz307+EOenTok6w660KMV0umxl0NdPb72Cq8YQ9c6Zdef2iYMOq+193Nsft VOpadat7tcH7Gbl11lLB8z3vPJZO+bv6dGv7Gj7DrmV7P9+Q+LltU/FStouXvkXe3jrf9Fqk TsC+7rr9Tv0SB6PzZjsYHDWW77Hmmbp41gPe/4vXz5bpSe3ZlqjEUpyRaKjFXFScCADwNkSo XQIAAA==
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare
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, 10 Feb 2014 17:30:40 -0000

Hi,

>>>>>> As is defined in the data channel protocol, an entity can send data once DATA_CHANNEL_OPEN has been sent, before the associated DATA_CHANNEL_ACK is received.
>>>>>>
>>>>>> The draft also says that, if both endpoints send DATA_CHANNEL_OPEN at the same time, using different stream id values, the result may be TWO data channels, with data sent on both.
>>>>>>
>>>>>> However, as is also indicated, the draft does not provide a mechanism to prevent/handle such glare situation.
>>>>>>
>>>>>> I personally think there shall be a way to prevent such situation, or otherwise I'm sure we are going to end up with interoperability problems.
>>>>>>
>>>>>> Couldn't we e.g. say that, by default, the DTLS client is responsible for sending the DATA_CHANNEL_OPEN? Then there is no risk for glare, and it could even use both an even or odd stream id value.
>>>>> Section 4 reads:
>>>>>
>>>>> To avoid glare in opening Channels, each side MUST use either even
>>>>> or  odd Streams when sending a DATA_CHANNEL_OPEN message.  The method
>>>>> used to determine which side uses odd or even is based on the
>>>>> underlying DTLS connection role when used in WebRTC, with the side
>>>>> acting as the DTLS client using even stream identifiers.
>>>>>
>>>>> So there is no problem in setting up data channels.
>>>>>
>>>>> This should not be confused by both sides setting up a data channel with the same Label. This ends up in two data channels with the same label.
>>>>> You can even create more data channels with the same label.
>>>>
>>>> My point is that I don't want to end up with more than one channel.
>>> And you won't, see above.
>>
>> I am not sure I understand. What text do you refer to?
> To avoid glare in opening Channels, each side MUST use either even
> or  odd Streams when sending a DATA_CHANNEL_OPEN message.  The method
> used to determine which side uses odd or even is based on the
> underlying DTLS connection role when used in WebRTC, with the side
> acting as the DTLS client using even stream identifiers.

That part I understand.

But, this means that both endpoints may send DATA_CHANNEL_OPEN, for the same protocol, and THAT is what I would like to avoid. I don't want to have two bi-directional data channels for the same thing.

For that reason I suggested that we could also specify which endpoint is responsisble for sending DATA_CHANNEL_OPEN.


>>> However, there is no mechanism to ensure uniqueness for labels. The WebRTC API already allows one side to create n data channels with the same label.
>>
>> I am not saying it should be forbidden to do so. But, for protocol X, I want to end up with ONE data channel between my peers.
>>Then only one side should create a data channel.
>>
>> If I end up with two data channels for protocol X, can I send data on whichever I want to?
> Sure. These would be two independent bidirectional data channels.

Possible for the same protocol - and that is what I would want to avoid. I want to send my protocol X messages on one data channel, and I would like to receive the protocol X messages from my peer on the same data channel.

Now, one can of course solve this by reseting one of the data channels, but then the question is which endpoint should reset :)

Regards,

Christer