Re: [MMUSIC] Trickle ICE for SIP Questions

Emil Ivov <> Fri, 05 July 2013 22:00 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 0DF8B21F9CAE for <>; Fri, 5 Jul 2013 15:00:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.977
X-Spam-Status: No, score=-2.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id UkqsxwyLA-qa for <>; Fri, 5 Jul 2013 15:00:02 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 07AEA21F9971 for <>; Fri, 5 Jul 2013 15:00:01 -0700 (PDT)
Received: by with SMTP id ox1so2118759veb.41 for <>; Fri, 05 Jul 2013 15:00:01 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-gm-message-state; bh=MqcyEpdyFE2M8rZNHFwAWVQRCSqLkojkmR52/W69A00=; b=hr31QGn5vpFcrHSJHo2W4klEalUpV47UrDBbreQXAv5tOF4eXCVJ7Wd+0P6jmjZpHu pidCGPg8L4sm+Ye46Exao8wD3G8gOnUIBuyN9Uoe9Mfet62eJQ9HEMYH040yustdDVY/ yUG23QSc9f0gVb1eT42Rr21hs6PyDNQiIv9sDkcBCiqAwV8CFXReBzDRMMq9MLmQGO20 FDuiUwifimiuYA9k/MzIPrD/jnwdz0/4IkKkO9iiQ6i5a6jax0npmvJZUtaLJaq36PPs ftVcnpFU69xhVYPvJsGhLsReert14mq27F6GdctvELRy2o/AMYo7sskjJpZePes0JzZY RZcQ==
X-Received: by with SMTP id nz9mr8125162vec.58.1373061601090; Fri, 05 Jul 2013 15:00:01 -0700 (PDT)
Received: from ( [2607:f8b0:400c:c01::235]) by with ESMTPSA id wf4sm2891814vdb.12.2013. for <> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 05 Jul 2013 15:00:00 -0700 (PDT)
Received: by with SMTP id db10so2103637veb.26 for <>; Fri, 05 Jul 2013 15:00:00 -0700 (PDT)
X-Received: by with SMTP id op1mr8299749vec.60.1373061600558; Fri, 05 Jul 2013 15:00:00 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Fri, 5 Jul 2013 14:59:40 -0700 (PDT)
In-Reply-To: <>
References: <> <>
From: Emil Ivov <>
Date: Fri, 05 Jul 2013 23:59:40 +0200
Message-ID: <>
To: Marc Petit-Huguenin <>
Content-Type: text/plain; charset="ISO-8859-1"
X-Gm-Message-State: ALoCoQk4YHnD/TMeSrcX/TraGa4YeXgGdNFNUCL9cVWwAfmfhFCiw0cjJbE0srySrSApk/vAyOjR
Subject: Re: [MMUSIC] Trickle ICE for SIP Questions
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Multiparty Multimedia Session Control Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 05 Jul 2013 22:00:06 -0000

On Fri, Jul 5, 2013 at 7:28 PM, Marc Petit-Huguenin <> wrote:
> Hash: SHA256
> Hi,
> I did not receive much comments on my proposal to use STUN packets to carry
> the new ICE candidates.  To summarize, instead of using the SDP in an INFO and
> or UPDATE transaction, the new candidates can be sent on the same path that
> the media will use by default (i.e. using the candidate that is copied in the
> m= and c= line).  Because this candidate is chosen to always succeed (using a
> TURN server), the candidate will always reach their destination.  This will
> remove any problem in the signaling path, because it is no longer used to
> update the candidates.

Here's my take:
Default candidates are not guaranteed to work. Also, you only get to
place one candidate as default. What if your peer is IPv6 only and you
chose an IPv4 candidate? Or, what if you are both on the same LAN with
limited Internet connectivity? Or what if the service you use doesn't
even have a TURN server? I am sure we can come up with many other
similar situations.

The only transport that's guaranteed to work prior to ICE is
signalling. There's nothing else that's as reliable as this. (If there
was then we probably wouldn't even need ICE in the first place).



> Thanks.
> On 07/03/2013 07:13 AM, Emil Ivov wrote:
>> Hey all,
>> Christer, Enrico and I are preparing the next version of Trickle ICE for
>> SIP. Now that discussions on BUNDLE and the plans seem to be winding down,
>> we wanted to run a few questions by the working group.
>> Q1: Making reliable provisional responses and PRACK mandatory. Obviously
>> this would be nice to avoid, so the question is: is there a reasonable
>> mechanism to achieve this (and by reasonable, we mean something that
>> wouldn't be harder than implementing support for PRACK).
>> There was some discussion about this back in April and there was a
>> suggestion for implementing a 5245-style hack where the answerer basically
>> resends the 180 until it knows that it has been received.
>> 5245 uses connectivity checks for this (i.e. it stops 180 retransmissions
>> when the first connectivity check is received) but we don't have that
>> option here since the 180 may contain either none or only host candidates
>> so there are strong chances that no binding request would be received on
>> them.
>> Thomas also suggested a second option which would be to also use INFO
>> requests with trickled candidates as an indication that 180 was received.
>> This however wouldn't work with half trickle so we are basically back to
>> vanilla ICE for all (non-re) INVITEs.
>> Another option would be to mandate an INFO request with "end-of-candidates"
>> in response to the 180, but that would be just the same as mandating PRACK
>> support.
>> Thomas also suggested that the answerer can start sending INFOs right after
>> it sends its answer in the 180 and then it can just resend the 180 if the
>> INFOs result in a 481 response.
>> Personally I think this could potentially be made to work, but it would
>> imply a level of complexity that considerably exceeds PRACK support.
>> Opinions?
>> Q2: How do we send INFOs? Are they blocking or do we just send them in
>> parallel? If the latter, then what happens when an INFO fails because it is
>> received out of order? Do we just tell the application to resend the
>> candidates asap?
>> This also leads to the following question:
>> Q3: What exactly do we send in INFOs? Just the latest batch of freshly
>> learned candidates or all candidates we've learned so far? Dale suggested
>> that if we do this cumulatively we wouldn't need to worry about the case
>> with the out-of-order INFOs from Q2 since the information gets resent
>> anyway. A drawback here would obviously be that this adds more complexity
>> for trickle ICE users (WebRTC applications specifically)
>> A third option would be to allow both and leave it to the application.
>> Comments are most welcome!
>> Emil
> - --
> Marc Petit-Huguenin
> Email:
> Blog:
> Profile:
> Version: GnuPG v1.4.12 (GNU/Linux)
> ulHURlg00WoK9RJFxLFWHP36lmaQ2y0v7LaFgX1hFoG9TMmMCbyxIfnva+5QFYzx
> LkiOZcgM5XuXjk6Ruke2/vrgByCPPYiCc7+K01+7NMO6tQL8rKxKr1Hq5PPRkUHY
> V6PO+XQd+KK8dm2W1qsR9s16goxqqQzeYJsEOX9mTGjqQdaju75FY88FdFE2rhib
> pdNrr+crC+gqdz/LKMS9so+dKtMMl3KNT39umDQuFkN9Gt+xorbKkvARCbB24xO3
> jPX7koQ0v/eJd1lZwmgkrzMiBDnr/RHigIX3OIuNhL5xilf0Daps5jIkvIJT31gJ
> CUsfR78ykrWp3wJJ7Ck+PQpAyUrCpcctCUR6kEZ4g1gaKRAEWfw1MgieETqtLE8x
> Dwsy2c3Qw7XPi1VRMfc6BmCbrd59hQtIsF07yHZEJuHz8zuJoWN9mKLMsGJn4E4G
> ipIQwruOde7B23YUI0kqBzldRnw5sQ5XDi//rNnd2/KaMhSdxB5+A+g+yy2yQIyN
> m7It4KZ1+BiyOrgK2w8JHkkmbclSV5j3hEEv0pfgt3OoXWwuUqF2rjdQ4NfsXRj4
> D05DUrhrgP7HKp+wxsIi2yyxFaZhkIBnooV/AhyDEh4Lk1KbKPPrSaEUyo6/5CmQ
> CtZLNHXi/Xv3Y3PjrpJF
> =DFTv