[MMUSIC] Trickle ICE

worley@ariadne.com (Dale R. Worley) Mon, 08 April 2013 23:22 UTC

Return-Path: <worley@shell01.TheWorld.com>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4FA8C21F8EBE for <mmusic@ietfa.amsl.com>; Mon, 8 Apr 2013 16:22:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.98
X-Spam-Level:
X-Spam-Status: No, score=-2.98 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1, RCVD_IN_SORBS_WEB=0.619]
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 fcktfFzKDyNk for <mmusic@ietfa.amsl.com>; Mon, 8 Apr 2013 16:22:02 -0700 (PDT)
Received: from TheWorld.com (pcls5.std.com [192.74.137.145]) by ietfa.amsl.com (Postfix) with ESMTP id 91D1F21F8EB2 for <mmusic@ietf.org>; Mon, 8 Apr 2013 16:22:02 -0700 (PDT)
Received: from shell.TheWorld.com (svani@shell01.theworld.com [192.74.137.71]) by TheWorld.com (8.14.5/8.14.5) with ESMTP id r38NLk4X010264 for <mmusic@ietf.org>; Mon, 8 Apr 2013 19:21:48 -0400
Received: from shell01.TheWorld.com (localhost [127.0.0.1]) by shell.TheWorld.com (8.13.6/8.12.8) with ESMTP id r38NLkvm2196652 for <mmusic@ietf.org>; Mon, 8 Apr 2013 19:21:46 -0400 (EDT)
Received: (from worley@localhost) by shell01.TheWorld.com (8.13.6/8.13.6/Submit) id r38NLkV72189030; Mon, 8 Apr 2013 19:21:46 -0400 (EDT)
Date: Mon, 08 Apr 2013 19:21:46 -0400
Message-Id: <201304082321.r38NLkV72189030@shell01.TheWorld.com>
From: worley@ariadne.com
Sender: worley@ariadne.com
To: mmusic@ietf.org
In-reply-to: <99971244-6523-4025-AF84-1AC72D8E0681@gmail.com> (alan.b.johnston@gmail.com)
References: <515AFCFE.7030608@acm.org> <515CB4F2.3010404@jitsi.org> <515D853C.6020107@alum.mit.edu> <515DC02D.7050105@jitsi.org> <99971244-6523-4025-AF84-1AC72D8E0681@gmail.com>
Subject: [MMUSIC] Trickle ICE
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <mmusic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mmusic>, <mailto:mmusic-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/mmusic>
List-Post: <mailto:mmusic@ietf.org>
List-Help: <mailto:mmusic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mmusic>, <mailto:mmusic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 08 Apr 2013 23:22:03 -0000

> From: Alan Johnston <alan.b.johnston@gmail.com>
> 
> I admit that my first thought was that UPDATE was more appropriate than INFO. 
> 
> But the more I think about it, trickling in new candidates is not
> necessarily a part of O/A, rather it can be thought of as
> communication between two ICE Agents. For tunneling another protocol
> using SIP as transport, INFO is the right choice. 

Ah, yes, I now agree with that -- the trickle-ICE updates are "back
channel" amendments to the original offer/answer transfer, not
additional offer/answer transactions.

Within generic trickle ICE, there is the possibility that additional
candidates are provided "incrementally", that is, each protocol
message includes only the new candidates (and end-of-candidate
indications).  There is also the possibility that additional
candidates are provided "cumulatively", that is, each protocol message
includes all of the previously provided candidates.

We could specify that trickle ICE uses one method or the other, but I
think that we should consider these to be logically equivalent at the
level of generic trickle ICE, and allow the choice between methods to
be done by the usage.  The reason for this is that the decision of
method seems to be heavily dependent on the specifics of the usage.
(Allowing each usage to make its own choice requires that we not allow
cumulative updates to withdraw candidates previously offered, as that
functionality cannot be provided with incremental updates.)

For instance, if updates are carried by an ordered, reliable channel
like TCP, then there is no benefit in sending updates cumulatively.
Similarly if the SIP usage sends updates in UPDATE requests, because
the UAC must serialize UPDATE requests.  But if we carry updates in
INFO messages, and we wish to not require the UAC to serialize them,
then cumulative updates are desirable, as out-of-order receipt of INFO
messages can cause an earlier-sent INFO to be permanently blocked by a
later-sent INFO which reaches the UAS first.

This leads to the point that INFO is preferable to UPDATE because the
UAC does not have to serialize INFOs, which reduces blocking.  (As
Paul notes, we've done a lot of work to define how to properly handle
complex cases involving UPDATE, but that work is needed because
UPDATEs have to be serialized with respect to each other, and with
certain other requests.)

This leads to a broader issue:  Generic trickle ICE needs to define
its expectations regarding reliability, correlation, and sequencing of
updates.  If both generic ICE and its usages were defined in one I-D,
these issues would just be design considerations, but since the
generic specification and the usage specification are separate, these
issues are requirements defined in the generic ICE document and each
usage document has to show how it satisfies the requirements.  That's
hard to do if the requirements aren't explicitly stated.

In particular, if cumulative updating is used, and candidates are
allowed to be withdrawn, the receiver cannot determine wihch of two
updates is "newer" by inspection, updates need to be sequenced by the
transport mechanism.  If incremental updating is used, sequencing is
not relevant.  Similarly, if candidates cannot be withdrawn, the newer
of two cumulative updates has the larger candidate list.

Also, the updates need to be correlated with the "ICE negotiation
context", so if there is an ICE restart, any delayed updates for a
previous context that arrive can be recognized as such and ignored.

For the SIP usage, a considerable amount of sequencing and correlation
is provided by the CSeq values:  A trickle ICE update INFO must have a
CSeq higher than the message containing the offer/answer that started
the corresponding ICE context, and will have a CSeq lower than the
offer/answer that starts the next ICE context.  Similarly, CSeq
sequences INFOs.

Other usages may need other mechanisms to provide this information.

One matter that I haven't seen discussed is how trickle ICE ensures
that both UAs always test the same candidate pair at the same time.
Even if we assume that the transport of updates is quick and reliable,
slight differences in timing at the two UAs could cause them to choose
(at some moment) different pairs to test.  Since vanilla ICE seems to
have been constructed to prevent this, this seems to me that it might
be a problem and must be investigated and documented.

Dale