Re: [rtcweb] Data Channel Protocol: Prevent DATA_CHANNEL_OPEN glare
Paul Kyzivat <pkyzivat@alum.mit.edu> Wed, 12 February 2014 03:51 UTC
Return-Path: <pkyzivat@alum.mit.edu>
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 CADF41A07A9 for <rtcweb@ietfa.amsl.com>; Tue, 11 Feb 2014 19:51:42 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.235
X-Spam-Level:
X-Spam-Status: No, score=-1.235 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_SOFTFAIL=0.665] 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 c8jr7bZyHcMR for <rtcweb@ietfa.amsl.com>; Tue, 11 Feb 2014 19:51:40 -0800 (PST)
Received: from qmta13.westchester.pa.mail.comcast.net (qmta13.westchester.pa.mail.comcast.net [IPv6:2001:558:fe14:44:76:96:59:243]) by ietfa.amsl.com (Postfix) with ESMTP id 21D751A033A for <rtcweb@ietf.org>; Tue, 11 Feb 2014 19:51:40 -0800 (PST)
Received: from omta14.westchester.pa.mail.comcast.net ([76.96.62.60]) by qmta13.westchester.pa.mail.comcast.net with comcast id RFkQ1n0091HzFnQ5DFrfbm; Wed, 12 Feb 2014 03:51:39 +0000
Received: from Paul-Kyzivats-MacBook-Pro.local ([50.138.229.164]) by omta14.westchester.pa.mail.comcast.net with comcast id RFre1n00m3ZTu2S3aFrfXw; Wed, 12 Feb 2014 03:51:39 +0000
Message-ID: <52FAEFCA.6070902@alum.mit.edu>
Date: Tue, 11 Feb 2014 22:51:38 -0500
From: Paul Kyzivat <pkyzivat@alum.mit.edu>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0
MIME-Version: 1.0
To: Peter Thatcher <pthatcher@google.com>
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>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20121106; t=1392177099; bh=fzvJyytQo5mToq3Ga7X1/JtFlHUfy5z3jVPmXckDTUU=; h=Received:Received:Message-ID:Date:From:MIME-Version:To:Subject: Content-Type; b=dspqHnstV3XvLxDCGf2JlNPGZyWqa/9ezVBWanPs7oisSoZFAC/nquFd1UxUT0D+e qfmHUgXKKbdabUHPuanjz1LBHJRQQR391spOKICSSU0t/x/PvAyXWA7rM8ndTX+6+T h5CgBIDQ8Jhrmm0hp3yYEuSpzkKr+QZDP/ijcIkf5iUWn7nRY588d5N7aZhXOwtO/U +Od+yXXPwjVweVp9zV+7iKqogy4BpsN3NNbWxv5Iwn3yP+auI40rbu0sS8J7U49p4O 799K9s/skqJqNgzXPj0GleUiiG89Dlv+T5xbg0RpDH95XUp60fkBZb8Kz9Poqc0CBi cjDE5M75Ep4og==
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: Wed, 12 Feb 2014 03:51:43 -0000
On 2/11/14 1:06 PM, Peter Thatcher wrote: > 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. > 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. > > 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? This seems reasonable to me. Thanks, Paul > On Mon, Feb 10, 2014 at 5:10 PM, Paul Kyzivat <pkyzivat@alum.mit.edu > <mailto: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 <mailto:rtcweb@ietf.org> > https://www.ietf.org/mailman/__listinfo/rtcweb > <https://www.ietf.org/mailman/listinfo/rtcweb> > > > _________________________________________________ > rtcweb mailing list > rtcweb@ietf.org <mailto:rtcweb@ietf.org> > https://www.ietf.org/mailman/__listinfo/rtcweb > <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)