Re: [rtcweb] Regarding cloning of PeerConnections when multiple answers are received

Harald Alvestrand <harald@alvestrand.no> Mon, 09 April 2012 11:02 UTC

Return-Path: <harald@alvestrand.no>
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 C59B621F86B3 for <rtcweb@ietfa.amsl.com>; Mon, 9 Apr 2012 04:02:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -109.517
X-Spam-Level:
X-Spam-Status: No, score=-109.517 tagged_above=-999 required=5 tests=[AWL=-1.007, BAYES_05=-1.11, J_CHICKENPOX_14=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 iNYwrYJH-vVm for <rtcweb@ietfa.amsl.com>; Mon, 9 Apr 2012 04:02:41 -0700 (PDT)
Received: from eikenes.alvestrand.no (eikenes.alvestrand.no [158.38.152.233]) by ietfa.amsl.com (Postfix) with ESMTP id DA1C021F86B2 for <rtcweb@ietf.org>; Mon, 9 Apr 2012 04:02:40 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by eikenes.alvestrand.no (Postfix) with ESMTP id DB08139E1CD for <rtcweb@ietf.org>; Mon, 9 Apr 2012 13:02:39 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at eikenes.alvestrand.no
Received: from eikenes.alvestrand.no ([127.0.0.1]) by localhost (eikenes.alvestrand.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kFBwzUnhZEFT for <rtcweb@ietf.org>; Mon, 9 Apr 2012 13:02:39 +0200 (CEST)
Received: from [192.168.1.107] (unknown [188.113.88.47]) by eikenes.alvestrand.no (Postfix) with ESMTPSA id 5123339E072 for <rtcweb@ietf.org>; Mon, 9 Apr 2012 13:02:39 +0200 (CEST)
Message-ID: <4F82C1C0.60809@alvestrand.no>
Date: Mon, 09 Apr 2012 13:02:24 +0200
From: Harald Alvestrand <harald@alvestrand.no>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.28) Gecko/20120313 Thunderbird/3.1.20
MIME-Version: 1.0
To: rtcweb@ietf.org
References: <4F7415D5.80604@ericsson.com> <CAOJ7v-17c5esnEmiwQZ=UBxtHoGF3E0eKX3JgZyC-c+G1EtSuQ@mail.gmail.com> <4F79E03B.3090802@jesup.org>
In-Reply-To: <4F79E03B.3090802@jesup.org>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Subject: Re: [rtcweb] Regarding cloning of PeerConnections when multiple answers are received
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: Mon, 09 Apr 2012 11:02:41 -0000

On 04/02/2012 07:22 PM, Randell Jesup wrote:
> So the question for me is "what scenarios/use-cases does this enable?"
>
> 1) Mesh Conferencing
>
> While there are many ways to handle conferencing, if you have a mesh 
> (full or partial), you need to create new PeerConnections for existing 
> members of the mesh when someone joins.  There are two ways to do this:
> a) somehow application-specific tell the new member who to send 
> invites to, and then start N PeerConnection calls with some "I'm in 
> the conference" token;
> b)have them send N separate generic invites to the service provider 
> which either forwards it to an existing member, or returns it with 
> "it's ok, I've already forwarded invites for it);
> c) somehow tell all the existing members to invite the new member; or
> d) have the service provider fork the OFFER from the new member to all 
> the existing members, and have all of them reply with ANSWERs.  This 
> requires PeerConnection cloning to work well.
>
> I strongly prefer d), and it also reduces conference join time (less 
> round-trips, at least in theory - perhaps noticeably less by sharing 
> the ICE candidate generation).

Hmm.... for one new member, I don't think d) is actually different from 
the case where the client sends an "extra" OFFER when he joins, and the 
server uses the "hanging OFFER" to signal the new member.
This is a windowing protocol, though - the client would need to send a 
new "hanging OFFER" after the current "hanging OFFER" has been "used 
up". Cloning allows you to connect multiple new conference mebers as 
fast as the Javascript can accept them. (Which may have issues with 
congestion, but that might be a price worth paying).

It's not clear to me whether hanging OFFERs work with NAT traversal; 
would the ICE machine send keepalives for an association that hasn't 
been associated yet?

                    Harald