Re: [rtcweb] Filling in details on "trickle ICE"

Matthew Kaufman <> Mon, 27 August 2012 20:42 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id A53A621F8508 for <>; Mon, 27 Aug 2012 13:42:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -3.899
X-Spam-Status: No, score=-3.899 tagged_above=-999 required=5 tests=[AWL=-0.300, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Cxrr47pZ2Sk3 for <>; Mon, 27 Aug 2012 13:42:15 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id A771021F8505 for <>; Mon, 27 Aug 2012 13:42:15 -0700 (PDT)
Received: from ( by ( with Microsoft SMTP Server id; Mon, 27 Aug 2012 20:42:14 +0000
Received: from mail192-va3 (localhost []) by (Postfix) with ESMTP id C2BED2C0321; Mon, 27 Aug 2012 20:42:14 +0000 (UTC)
X-Forefront-Antispam-Report: CIP:; KIP:(null); UIP:(null); IPV:NLI;; RD:none; EFVD:NLI
X-SpamScore: -26
X-BigFish: VS-26(zz9371I542Mzz1202hzz1033IL8275dhz2fh2a8h668h839h944hd25hf0ah107ah)
Received-SPF: pass (mail192-va3: domain of designates as permitted sender) client-ip=;; ; ;
Received: from mail192-va3 (localhost.localdomain []) by mail192-va3 (MessageSwitch) id 1346100133278942_9306; Mon, 27 Aug 2012 20:42:13 +0000 (UTC)
Received: from (unknown []) by (Postfix) with ESMTP id 366413E004B; Mon, 27 Aug 2012 20:42:13 +0000 (UTC)
Received: from ( by ( with Microsoft SMTP Server (TLS) id; Mon, 27 Aug 2012 20:42:12 +0000
Received: from ([]) by ([]) with mapi id 14.02.0318.003; Mon, 27 Aug 2012 20:42:03 +0000
From: Matthew Kaufman <>
To: Jim Barnett <>, Martin Thomson <>, Cullen Jennings <>
Thread-Topic: [rtcweb] Filling in details on "trickle ICE"
Date: Mon, 27 Aug 2012 20:42:03 +0000
Message-ID: <>
References: <><><><><><><><> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "" <>
Subject: Re: [rtcweb] Filling in details on "trickle ICE"
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: Mon, 27 Aug 2012 20:42:16 -0000

The "two different web servers" "trapezoid" case would require a trunking protocol between these servers, such as SIP or Jingle, which can describe "trickle ICE" such that the browsers could be instructed properly by their respective web servers.

I believe that with Jingle, there is a written spec for that, and for SIP, there is not (at present).

Matthew Kaufman

-----Original Message-----
From: Jim Barnett [] 
Sent: Monday, August 27, 2012 1:15 PM
To: Matthew Kaufman; Martin Thomson; Cullen Jennings
Subject: RE: [rtcweb] Filling in details on "trickle ICE"

One question I have is whether we consider the "Browser RTC Trapezoid"
to be in scope.  In this use case, the two UAs download their applications from different web servers.  In such a case, I don't see how we can enable trickle ICE without specifying _exactly_ how  it is supposed to work (or, alternatively, specifying a protocol that the two web servers will use to negotiate how to do it).  

Handling the trapezoid is a _lot_ more work than the case where both UAs download their applications from the same server (or from the case where a single WebRTC UA is talking to a legacy device).  Have we made a decision on whether it is in scope?  In any case, it would certainly clarify the discussion for me if I knew whether we were considering this use case or not.  A number of claims have been and are being made on the list that strike me as obviously false if this use case is in scope - and perfectly sensible if it's not.  

- Jim
P.S.  My personal opinion is that it would make sense to defer the trapezoid until a hypothetical version 2.  That way it would not inform any immediate decisions about the APIs, but we would have to consider what it would take to extend them to handle it. (I would think that would involve mostly adding more detail, so forward compatibility might not be hard to achieve.)

-----Original Message-----
From: Matthew Kaufman []
Sent: Monday, August 27, 2012 3:54 PM
To: Jim Barnett; Martin Thomson; Cullen Jennings
Subject: RE: [rtcweb] Filling in details on "trickle ICE"

If both ends want to do a full, standards compliant (which also implies
*not* trickle) ICE, then we can bake that into the browser following the existing RFC as specification.

If both ends want to do something that isn't that, then we either need to write down *exactly* how they do that "something else" (which would imply an RFC or three for things like how trickle ICE works, how it is discovered, what SDP implications it has, etc.) *or* we need to provide knobs that allow the developer, through Javascript, to ensure that both ends do the same (or compatible) "something elses".

Note that the only reason ICE-like STUN connectivity tests are a MUST is that it is required for consent verification. There are any number of reasons why an endpoint might wish to do something other than what a full standards-compliant ICE implementation would require... this thread has been about the issues around trickle candidates, but there's also the case where you're on a webpage of mine and I know I'm going to send your call via a gateway that has a public IP address. There is no reason to run any of what ICE requires *except* the security-considerations-mandated consent verification, and only in the browser-to-gateway test direction.

Again, we could write another RFC covering that case... or we could just do what our (Microsoft's) proposal suggests and provide the developer with the controls necessary to implement *any* of these use cases, including the mode that matches the current ICE RFC.

As a side effect, the developer then *also* has the flexibility to improve interoperation with things like pre-final ICE implementations, as long as they meet the requirements around STUN connectivity tests.

So to recap, if you want something fancy like ICE with trickle candidates you have two options:

X) Give the developer the flexibility to build variations upon ICE within the security constraints, or
Y) Start writing Internet Drafts describing all the variations upon ICE you might wish to use and then get every browser vendor to add them

Matthew Kaufman

-----Original Message-----
From: [] On Behalf Of Jim Barnett
Sent: Friday, August 24, 2012 3:33 PM
To: Martin Thomson; Cullen Jennings
Subject: Re: [rtcweb] Filling in details on "trickle ICE"

  Just to make sure that I understand your position, I take you to be
1) in the case where both endpoints have downloaded their apps from the same server, they can do trickle ICE any way that they want.
2) in the case where an application is  talking to an unknown or legacy peer, trickle  ICE is a bad idea because there is no standard way to do it. (i.e. try it at your own risk)

Is this correct?

- Jim