Re: [rtcweb] Data Channel Negotiation and reopening of decisions

Randell Jesup <> Sat, 16 February 2013 06:59 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id EB4BD21F8570 for <>; Fri, 15 Feb 2013 22:59:09 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.479
X-Spam-Status: No, score=-2.479 tagged_above=-999 required=5 tests=[AWL=0.120, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id bmum0cePNxPQ for <>; Fri, 15 Feb 2013 22:59:09 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 608C121F855C for <>; Fri, 15 Feb 2013 22:59:09 -0800 (PST)
Received: from ([]:2223 helo=[]) by with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.80) (envelope-from <>) id 1U6bjo-000C5J-Jc for; Sat, 16 Feb 2013 00:59:08 -0600
Message-ID: <>
Date: Sat, 16 Feb 2013 01:56:57 -0500
From: Randell Jesup <>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130107 Thunderbird/17.0.2
MIME-Version: 1.0
References: <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
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 -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
Subject: Re: [rtcweb] Data Channel Negotiation and reopening of decisions
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 16 Feb 2013 06:59:10 -0000

On 2/14/2013 8:13 PM, Martin Thomson wrote:
>> However, assuming datachannel are bidirectional, I really think we need some
>> sort of signaling to set them up to avoid collisions.
> Collision of what?  The problem that the 1.5 RTT solves is not a
> collision problem.  It's a problem of a mismatch of configuration and
> expectations on the two ends of the channel.  If you remove the
> expectations (negotiate if you care), and don't worry about matching
> configuration (make configuration mutable, and again: negotiate if you
> happen to care), what then?

The 1.5 RTT solution was due to the W3 and IETF at Stockholm saying they 
wanted OnOpen events to only fire when we knew the other side had 
received them, IIRC, like WebSockets.

My 0-RTT solution I've (re-)proposed doesn't loosen any of the 
consistency guarantees; it merely fires onOpen as soon as the channel is 
created*.  You can send immediately.  This also means there's no need to 
signal channels in the SDP.  The only minor impact is that until the 
openResponse is received (1 RTT), packets are sent with the in-order 
flag.  There are some minor details that would need to change from the 
current protocol definition, but nothing of significance.

* createDataChannel before createOffer will not fire onOpen until the 
SCTP association comes up and onConnection has fired.

I think the "just send on the next channel and ignore glare and 
accidental channel merges" is just handing a loaded gun to the 
application writer, where it normally works fine but occasionally in 
hard-to-test ways it malfunctions.

If you want bidirectional channels, you either negotiate (SDP) or you 
use something like this (which allows mis-matched streams to build a 

Randell Jesup