Re: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare
Christer Holmberg <christer.holmberg@ericsson.com> Tue, 11 February 2014 18:22 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 6509E1A06DC for <rtcweb@ietfa.amsl.com>; Tue, 11 Feb 2014 10:22:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.24
X-Spam-Level:
X-Spam-Status: No, score=-1.24 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HELO_EQ_SE=0.35, HOST_MISMATCH_NET=0.311, SPF_PASS=-0.001] autolearn=no
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 g40z_C6ZGc2n for <rtcweb@ietfa.amsl.com>; Tue, 11 Feb 2014 10:22:55 -0800 (PST)
Received: from sessmg20.mgmt.ericsson.se (sessmg20.ericsson.net [193.180.251.50]) by ietfa.amsl.com (Postfix) with ESMTP id AEC281A06D5 for <rtcweb@ietf.org>; Tue, 11 Feb 2014 10:22:54 -0800 (PST)
X-AuditID: c1b4fb32-b7f4c8e0000012f5-da-52fa6a7d7aad
Received: from ESESSHC024.ericsson.se (Unknown_Domain [153.88.253.124]) by sessmg20.mgmt.ericsson.se (Symantec Mail Security) with SMTP id D8.EF.04853.D7A6AF25; Tue, 11 Feb 2014 19:22:53 +0100 (CET)
Received: from ESESSMB209.ericsson.se ([169.254.9.99]) by ESESSHC024.ericsson.se ([153.88.183.90]) with mapi id 14.02.0387.000; Tue, 11 Feb 2014 19:22:53 +0100
From: Christer Holmberg <christer.holmberg@ericsson.com>
To: 'Peter Thatcher' <pthatcher@google.com>, Paul Kyzivat <pkyzivat@alum.mit.edu>
Thread-Topic: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare
Thread-Index: Ac8mR2/m3LFj8oi+SFKLxbYiytu9PP//8tkA///uSjCAABcpAP//4ZBAgACIq4CAABjmc4AAcPCAgAEb3ID//+u2AA==
Date: Tue, 11 Feb 2014 18:22:52 +0000
Message-ID: <7594FB04B1934943A5C02806D1A2204B1D16D2F3@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> <7594FB04B1934943A5C02806D1A2204B1D167A2E@ESESSMB209.ericsson.se> <52F9786F.60809@alum.mit.edu> <CAJrXDUEgr91ATJVFJcabzhavGBiX9MUgMimNKWFVPcdjL2Xbbw@mail.gmail.com>
In-Reply-To: <CAJrXDUEgr91ATJVFJcabzhavGBiX9MUgMimNKWFVPcdjL2Xbbw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [153.88.183.146]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsUyM+JvjW5t1q8gg7nPtCxWbDjAanFt+WtW i7X/2tkdmD3+vv/A5LFgU6nHkiU/mQKYo7hsUlJzMstSi/TtErgyZt86zVjwy77ixZGpjA2M K+y6GDk5JARMJH4vW8sOYYtJXLi3nq2LkYtDSOAEo8S0ph+MEM5iRomzUx8DZTg42AQsJLr/ aYM0iAgES0xb+IkNxGYW0JSYsGwXmC0s4COx7MA+ZogaX4lrl+axQdhZEhv+TmcBsVkEVCXm /VoOtpgXqOZ251MmiF0bWSRuXTzICpLgFAiUWNHwkRHEZgS67vupNUwQy8Qlbj2ZzwRxtYDE kj3nmSFsUYmXj/+xQthKEj82XGIBuRnkuPW79CFaFSWmdD+E2isocXLmE5YJjGKzkEydhdAx C0nHLCQdCxhZVjFKFqcWF+emGxno5abnluilFmUmFxfn5+kVp25iBMbVwS2/jXYwntxjf4hR moNFSZz3OmtNkJBAemJJanZqakFqUXxRaU5q8SFGJg5OqQZGZSfuM3vfb4xTNQ8x/G+14czs i6/mRkddfvLjT7PZ0YP7TH5pmTT1v6vfmDCr4dK717qb3jMf63i54v7m1tgDbX8Zecp5/TrU r+xZoFsa0BrM1iRV487uLHjT6cjpH2Lv5bk6K+LO2zoHunyL3uf4cfLPJexfpCOypYverX+2 buVV4w3Kn6xXKbEUZyQaajEXFScCAAIFm6N5AgAA
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: Tue, 11 Feb 2014 18:22:57 -0000
Hi Peter, > I believe the API already gives you all the tools you need for this use case. Here's one way to create a data channel where both ends call createDataChannel() at the same time, with no "middle": > > 1. Both sides call createDataChannel() with the same label. Or, with the same Protocol. It is a little unclear to me what "label" really is. The data channel draft says it's a "name of the channel"... > 2. If an endpoint ends up with two data channels with the same label, close the one with the higher .id, and keep the one with the lower .id. What is ".id"? Is it something API specific? Keep in mind that non-WebRTC clients may also use the data channel. > Now both sides will use the same channel, and you can pretend like the other never existed. If you're worried about data sent before this process completes, either accept data on both channels for a while, or don't send data until the process completes. > > Is there any reason this would not work? Assuming it's generic, and not API specific, I guess it could work. Also, as has been indicated, specific protocols can specify rules regarding who opens the channel. I think it would be good to have some informative guidance text about this somewhere, e.g. in the Data Channel draft. Regards, Christer On Mon, Feb 10, 2014 at 5:10 PM, Paul Kyzivat <pkyzivat@alum.mit.edu> wrote: You two guys are talking past one another. Christer's point is that the *application" distributed between the two endpoints, needs a *single* instance of a channel for a particular application specific purpose. But the two ends are generally symmetric. There is no obvious choice of which side should create the channel. So how do we use the mechanism to achieve this result? I think I can predict what Michael is going to say: it isn't a protocol issue - the two ends should negotiate this some other way. (In the normal rtcweb scenario, a *single* app in the middle can arrange for one side to do the open.) This is a problem with a sip app - there is no middle, just two ends. Previously Christer said: 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. That is a bad thing for data channel in general. But I suppose the app can choose to follow this rule if it wants for particular channels. Thanks, Paul On 2/10/14 12:29 PM, Christer Holmberg wrote: 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 _______________________________________________ rtcweb mailing list rtcweb@ietf.org https://www.ietf.org/mailman/listinfo/rtcweb _______________________________________________ rtcweb mailing list rtcweb@ietf.org https://www.ietf.org/mailman/listinfo/rtcweb
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Michael Tuexen
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Michael Tuexen
- [rtcweb] Data Channel Protocol: Prevent DATA_CHAN… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Michael Tuexen
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Michael Tuexen
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Paul Kyzivat
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Peter Thatcher
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Peter Thatcher
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Christer Holmberg
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Paul Kyzivat
- Re: [rtcweb] Data Channel Protocol: Prevent DATA_… Makaraju, Maridi Raju (Raju)