Re: [rtcweb] I-D Action: draft-ietf-rtcweb-data-protocol-01.txt

Randell Jesup <randell-ietf@jesup.org> Sun, 27 October 2013 09:35 UTC

Return-Path: <randell-ietf@jesup.org>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6CE7411E810F for <rtcweb@ietfa.amsl.com>; Sun, 27 Oct 2013 02:35:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.699
X-Spam-Level:
X-Spam-Status: No, score=-1.699 tagged_above=-999 required=5 tests=[AWL=-0.300, BAYES_00=-2.599, J_CHICKENPOX_111=0.6, J_CHICKENPOX_72=0.6]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FrJxYE6l+gRN for <rtcweb@ietfa.amsl.com>; Sun, 27 Oct 2013 02:35:41 -0700 (PDT)
Received: from r2-chicago.webserversystems.com (r2-chicago.webserversystems.com [173.236.101.58]) by ietfa.amsl.com (Postfix) with ESMTP id 7C1E521E80B4 for <rtcweb@ietf.org>; Sun, 27 Oct 2013 02:35:36 -0700 (PDT)
Received: from pool-173-59-53-40.phlapa.fios.verizon.net ([173.59.53.40]:2166 helo=[192.168.1.12]) by r2-chicago.webserversystems.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.80) (envelope-from <randell-ietf@jesup.org>) id 1VaMkv-000EWk-Sf for rtcweb@ietf.org; Sun, 27 Oct 2013 04:35:34 -0500
Message-ID: <526CDE43.9090209@jesup.org>
Date: Sun, 27 Oct 2013 05:34:59 -0400
From: Randell Jesup <randell-ietf@jesup.org>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <20131021191343.32574.60876.idtracker@ietfa.amsl.com> <03FBA798AC24E3498B74F47FD082A92F3D86C821@US70UWXCHMBA04.zam.alcatel-lucent.com>
In-Reply-To: <03FBA798AC24E3498B74F47FD082A92F3D86C821@US70UWXCHMBA04.zam.alcatel-lucent.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - r2-chicago.webserversystems.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - jesup.org
X-Get-Message-Sender-Via: r2-chicago.webserversystems.com: authenticated_id: randell@jesup.org
Subject: Re: [rtcweb] I-D Action: draft-ietf-rtcweb-data-protocol-01.txt
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
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: Sun, 27 Oct 2013 09:35:54 -0000

On 10/24/2013 12:59 PM, Ejzak, Richard P (Richard) wrote:
> I have a question about draft-ietf-rtcweb-data-protocol-01.  The browser uses DTLS role to determine which side uses even or odd stream identifiers.  What does the application on the side sending the initial SDP offer that establishes the peer connection do if it wants to create data channels before the DTLS role can be determined?  How does the browser know if the application tries to select a disallowed stream id?  If the application asks the browser to select the stream identifier before DTLS role can be determined, what does the browser do?

The W3-level channels are assigned an ID once the DTLS roles are 
determined; until then the id is undefined (in our implementation they 
return 65535, an invalid id value - the exact action here is not yet 
speced in the W3C).

You call createDataChannel(...) one or more times.  The channel.id's 
return 65535; when onopen fires the id has been set (and perhaps before, 
there may be a small window between DTLS role setting/id-selection and 
onopen).  In fact this is the norm, as we won't offer an m=application 
line for data channels unless the first createDataChannel was called 
before createOffer (and once we support negotiationneeded, you'll be 
able to call it later, but that just means negotiationneeded will fire 
and make you call createOffer()). Once you're connected, you can call 
createDataChannel all you want with no further negotiationneeded firings.

On external negotiation, it's the application's responsibility to select 
values that won't collide by mistake with either other 
externally-negotiated values or automatically-generated ones.  There are 
no 'disallowed' values (in the range 0-65534).  You can specify an 
externally-negotiated id value before DTLS roles are set; again, it's up 
to you not to screw it up.  Generally applications won't mix 
external-negotiated channels with data-protocol negotiated ones, but 
that is possible so long as the application is moderately careful.

-- 
Randell Jesup -- rjesup a t mozilla d o t com