Re: [MMUSIC] Comment on SIP Trickle ICE based on INFO draft

Emil Ivov <emcho@jitsi.org> Sun, 30 March 2014 20:30 UTC

Return-Path: <emcho@sip-communicator.org>
X-Original-To: mmusic@ietfa.amsl.com
Delivered-To: mmusic@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 508021A08D4 for <mmusic@ietfa.amsl.com>; Sun, 30 Mar 2014 13:30:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vYB5kOPZ2R-3 for <mmusic@ietfa.amsl.com>; Sun, 30 Mar 2014 13:30:37 -0700 (PDT)
Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by ietfa.amsl.com (Postfix) with ESMTP id 2042A1A08D1 for <mmusic@ietf.org>; Sun, 30 Mar 2014 13:30:36 -0700 (PDT)
Received: by mail-wi0-f171.google.com with SMTP id q5so2358966wiv.10 for <mmusic@ietf.org>; Sun, 30 Mar 2014 13:30:33 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=UXlr6+07VzGsVhRVDcH7fk/dQg4cDnya+K2qZge/Pps=; b=bkwObGDW86hjSmnDE86GeMSi05WY5B5PmuG7oNpsXouR/JtIiAIvxhNOUHeD4G5b3F TvNH0L+dBywFQ8LP/ENS9g6A6Mo6nHhZsf3MWC6wotWn52BLd/ttnOpt+TM0uwGU5YwC 5xXx9rtmjeTktEXrWgi5e0F/92a4ygraMRRYnbIKzXVzjRjkkVuxAdDm9K9LMRc94RAy oy5bGqEaWlu38NjvAyWAQN9M4a1MDXfHY+aWS24Vq22Iirto+YsqnnL628qsgEBBSYSe TU85+WSsK0CWXtdD01cyPipbwAdL8s5PsiFzWAnoV4pmKbYWJ8Sv1Z8B5Wfe7snGrqoc fNyg==
X-Gm-Message-State: ALoCoQmilRb1CgMsMZc4QFcLmTQAy1Ayf5s5kyYFXg0mKY37iFdD7awRprfpf7YpHndGbaC9B+Mm
X-Received: by 10.194.59.226 with SMTP id c2mr9162610wjr.6.1396211433397; Sun, 30 Mar 2014 13:30:33 -0700 (PDT)
Received: from camionet.local (neu67-4-88-160-65-79.fbx.proxad.net. [88.160.65.79]) by mx.google.com with ESMTPSA id fs4sm22281798wib.11.2014.03.30.13.30.30 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 30 Mar 2014 13:30:32 -0700 (PDT)
Message-ID: <53387EE5.3050501@jitsi.org>
Date: Sun, 30 Mar 2014 22:30:29 +0200
From: Emil Ivov <emcho@jitsi.org>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.4.0
MIME-Version: 1.0
To: Christer Holmberg <christer.holmberg@ericsson.com>, Parthasarathi R <partha@parthasarathi.co.in>
References: <01e601cf423c$57255890$057009b0$@co.in> <00c901cf4687$0a48dbb0$1eda9310$@co.in> <CAPvvaaKW+vxhJFqUPRZ-YfPQ4dHOS-=YwZaW+=NS3DttaaXD=Q@mail.gmail.com> <013601cf4923$754b35e0$5fe1a1a0$@co.in>, <53335D95.6000806@jitsi.org> <7594FB04B1934943A5C02806D1A2204B1D26BE29@ESESSMB209.ericsson.se>
In-Reply-To: <7594FB04B1934943A5C02806D1A2204B1D26BE29@ESESSMB209.ericsson.se>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: http://mailarchive.ietf.org/arch/msg/mmusic/yTdlnSCmJsBgUzdjIpMtcv8iYcY
Cc: 'mmusic' <mmusic@ietf.org>
Subject: Re: [MMUSIC] Comment on SIP Trickle ICE based on INFO draft
X-BeenThere: mmusic@ietf.org
X-Mailman-Version: 2.1.15
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: Sun, 30 Mar 2014 20:30:40 -0000

On 30.03.14, 11:38, Christer Holmberg wrote:
> Hi,
>
> I have tried to understand the whole issue discussed here, with little success :)
>
> So, rather than trying to come up with a solution, I think we first need to agree on some basic assumptions.
>
> If we claim that Trickle ICE has no impact on the SDP O/A state, then:
>
> 1) There should be no need to figure out whether an INFO is sent before an UPDATE; and

That's not exactly true because, like ICE, trickle ICE does depend on 
O/A in order to operate. In other words: if you change your location and 
do a new Offer/Answer, you don't expect vanilla ICE to magically 
continue, blissfully ignorant of that fact. It needs to restart and so 
does Trickle ICE.

> 2) There should be no need to include the o= line, or any other information that binds the INFO to a specific SDP O/A state.

The main reason you need that is so that you can drop stray INFOs that 
have been delayed and have arrived when the ICE processing context they 
were related to is no longer valid (i.e. after an ICE restart).

But I agree that an o= line is not the most convenient way to handle 
this and using ice-ufrag and ice-pwd would be better.

> Instead, Trickle ICE is only a mechanism to transport candidate information from one endpoint to another.

Agreed.

> Endpoints may of course add those candidates to subsequent Offer/Answers.

This should be clarified. I think it's not necessary. Basically an O/A 
can have the following two possible relations to trickle ICE:

1. ICE restart: (ice-ufrag and ice-pwd have changed). This basically 
means that your addressing situation has most likely changed and you 
need to start everything from scratch. So you do.

2. Non-ICE session modification: you are currently doing ICE and while 
you are at it, you change some aspect of your session that has 
no-relation to addressing. For example, you add formats, change the 
direction of a stream, or something like that. In this case trickle ICE 
continues with no modification.

Case 1 obviously doesn't need any of the trickle candidates but they can 
be included if the agent is comfortable reusing them. This is compatible 
with 5245 which says something like this:

    If ICE is restarting [...] the set of candidates MAY include some,
    none, or all of the previous candidates for that stream and MAY
    include a totally new set of candidates

Case 2 is less obvious to me. Requiring agents to include all currently 
known addresses sounds a bit risky to me because it's easy to get into 
situations where an agent receives a set of candidates that does not 
match its current view of the session:

Case 2.1: New candidates appear
Case 2.2: Some candidates are not there.

Case 2.1 is easy to handle: the new candidates are handled as if they 
were trickled.

Case 2.2 is kind of a headache. 5245 says that it MUST NOT happen but I 
don't think this can be guaranteed because various race conditions may 
cause trickled candidates to arrive before the O/A and make an agent 
believe that some of them are lacking.

I think the easiest way to handle this would be to say that, when using 
Trickle ICE, candidates and addressinf information from offers that DO 
NOT restart ICE MUST be ignored.

Thoughts?

Emil

--
https://jitsi.org


>
>
> Regards,
>
> Christer
>
>
>
> ________________________________________
> From: Emil Ivov [emcho@jitsi.org]
> Sent: Thursday, 27 March 2014 1:07 AM
> To: Parthasarathi R
> Cc: 'mmusic'; Christer Holmberg; 'Enrico Marocco (TiLab)'
> Subject: Re: [MMUSIC] Comment on SIP Trickle ICE based on INFO draft
>
> On 26.03.14, 19:44, Parthasarathi R wrote:
>>   > > This race condition is very much possible during
>>   > > early
>>   > > dialog scenarios with UPDATE.
>>   > >
>>   > > Could you please explain how SIP trickle ICE using INFO works for
>>   > >
>>   > > 1) UPDATE from remote before Trickle ICE is completed
>>
>> This is analogous to an UPDATE that is received before regular 5245 ICE
>> processing has completed.
>>
>> <Partha> No, in case UDPATE before the offer is completed, 491 response
>> will send out whereas it will not happen in case of INFO </Partha>
>
> I think you might be confusing "before ICE processing has completed" and
> "before O/A has completed"
>
> An UPDATE that is received while "vanilla ICE processing is in progress"
> would have exactly the same effect as an UPDATE received while "trickle
> ICE processing is in progress". If O/A has completed then the UPDATE
> will NOT cause a 491 in either case.
>
>>   > >     a) INVITE from local
>>   > >     b) 183 session progress from remote
>>   > >     c) PRACK from local
>>   > >     d) INFO from local (relay candidates)
>>   > >     e) UPDATE from remote
>>   > >
>>   > > Here, the remote has to consider whether INFO belongs to UPDATE or
>>   > > INVITE as
>>   > > it is possible for INFO to reach before 200 OK for UPDATE as well in
>>   > > the
>>   > > same sequence.
>>
>> And CSeq headers wouldn't help here because ....?
>>
>>   > > Also, RFC 2976
>>
>> which FWIW is obsoleted by RFC6086
>>
>> <Partha> Thanks..I still majorly interwork with RFC 2976 implementation
>> :-( but please note that RFC 6086 does not change much in these SIP
>> dialog or session aspects. The exact snippet of RFC 6086 is as follows:
>>
>> “Note that the INFO method is not used to update characteristics of a
>>      SIP dialog or session, but to allow the applications that use the SIP
>>      session to exchange information (which might update the state of
>>      those applications).”
>
> Trickle ICE does not update the characteristics of a SIP dialog and I
> don't believe it violates the above in any way.
>
>>   > > " - The extensions that use the INFO message MUST NOT rely on the
>>   > >      INFO message to do anything that effects the SIP call state or the
>>   > >      state of related sessions."
>>
>> And I don't believe that it does.
>>
>> <Partha> No, it is not possible to implement this draft without impact
>> offer/answer state machine </Partha>
>
> Please provide an example where you think it actually breaks something.
> (It might be worth waiting until we submit the new version, which should
> probably clarify a few things).
>
>>   > > 2) Trickle ICE INFO with serial forking
>>
>> INFO requests are sent within a dialog. They will go through the prong
>> associated with that dialog and would not be forked.
>>
>> <Partha> IOW, Trickle ICE INFO will be buffered till 18x response is
>> received. So, INFO has no much advantage compare to UPDATE except for
>> the non-reliable response scenario.
>
> No advantage? INFOs can be send in both directions and arrive completely
> asynchronously without ever causing glare or without having to worry
> whose turn it is to send an offer or an answer because you need to
> piggyback candidates on top of it.
>
> We've been through this exact same argument several times already, you
> haven't pointed out any flaws with this logic so I can't see a reason
> why you keep coming back to it.
>
> You claim you are worried about needing to modify the offer/answer state
> machine in your implementation, but that is a very strange argument
> since that implementation would be much more heavily impacted if you
> were to try and trickle with offers and answers.
>
> I think the source of the confusion might be the fact that the draft is
> currently in a relatively poor state, which is my fault, and I am
> hopeful that you may find many of your answers in the next version.
>
> Emil