Re: [sipcore] Dialog state - Scope in draft-ietf-sipcore-reinvite

Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com> Fri, 23 July 2010 11:20 UTC

Return-Path: <gonzalo.camarillo@ericsson.com>
X-Original-To: sipcore@core3.amsl.com
Delivered-To: sipcore@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B84493A69AC for <sipcore@core3.amsl.com>; Fri, 23 Jul 2010 04:20:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.846
X-Spam-Level:
X-Spam-Status: No, score=-103.846 tagged_above=-999 required=5 tests=[AWL=-1.247, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O4xlyu0Q+QN0 for <sipcore@core3.amsl.com>; Fri, 23 Jul 2010 04:20:16 -0700 (PDT)
Received: from mailgw9.se.ericsson.net (mailgw9.se.ericsson.net [193.180.251.57]) by core3.amsl.com (Postfix) with ESMTP id 0A5D33A67FC for <sipcore@ietf.org>; Fri, 23 Jul 2010 04:20:15 -0700 (PDT)
X-AuditID: c1b4fb39-b7b91ae000001aef-07-4c497b011bdf
Received: from esealmw128.eemea.ericsson.se (Unknown_Domain [153.88.253.125]) by mailgw9.se.ericsson.net (Symantec Mail Security) with SMTP id 4A.19.06895.10B794C4; Fri, 23 Jul 2010 13:20:33 +0200 (CEST)
Received: from esealmw126.eemea.ericsson.se ([153.88.254.170]) by esealmw128.eemea.ericsson.se with Microsoft SMTPSVC(6.0.3790.3959); Fri, 23 Jul 2010 13:19:47 +0200
Received: from [131.160.37.44] ([131.160.37.44]) by esealmw126.eemea.ericsson.se with Microsoft SMTPSVC(6.0.3790.3959); Fri, 23 Jul 2010 13:19:47 +0200
Message-ID: <4C497AD3.8040604@ericsson.com>
Date: Fri, 23 Jul 2010 14:19:47 +0300
From: Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.11) Gecko/20100711 Thunderbird/3.0.6
MIME-Version: 1.0
To: OKUMURA Shinji <shinji.okumura@softfront.jp>
References: <4C317D02.2030307@ericsson.com> <4C3EE244.8040909@ericsson.com> <8ECB2A46DA07E4shinji.okumura@softfront.jp>
In-Reply-To: <8ECB2A46DA07E4shinji.okumura@softfront.jp>
X-Enigmail-Version: 1.0.1
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 23 Jul 2010 11:19:47.0710 (UTC) FILETIME=[F5A7E1E0:01CB2A58]
X-Brightmail-Tracker: AAAAAA==
Cc: SIPCORE <sipcore@ietf.org>
Subject: Re: [sipcore] Dialog state - Scope in draft-ietf-sipcore-reinvite
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 23 Jul 2010 11:20:17 -0000

Hi Shinji,

thanks for your comments. Answers inline:

On 23/07/2010 12:10 PM, OKUMURA Shinji wrote:
> Hi Gonzalo,
> 
> I have some comments and questions.
> 
>> 3.4.  UAC Behavior
>>   In order to cope with these race condition
>>   situations, a UAC that receives an error response to a re-INVITE for
>>   which changes have been already executed SHOULD generate a new re-
>>   INVITE or UPDATE request in order to make sure that both UAs have a
>>   common view of the state of the session (the UAC uses the criteria in
>>   Section 3.3 in order to decide whether or not changes have been
>>   executed for a particular stream).
> 
> As I have said many times, this restriction is excessive.
> I propose as follows;
> s/which changes have been already executed/which changes
> have been already executed by an UPDATE transaction/

We have discussed this issue many times. At this point, we are not
going to reopen all the discussions we had on this in the past.


>> 4.8.  Race Conditions and Target Refreshes
> The rule for a UAS is looking good. But if a UAS sends a
> reliable response and an UPDATE request in order to refresh
> its local target, what should a UAC do?
> 
> In the cases below, UA-B should not use a 18x-rel.
> But UA-A can not reject the 18x-rel and prohibit UA-B from
> using the 18x-rel.
> 
> Should UA-A reject this UPDATE? or ignore a Contact of 18x-rel?
> Otherwise should UA-A send another UPDATE to confirm a remote target?

The draft identifies the problem and specifies a solution to it. Of
course, a legacy UAS could act as you describe. However, such behavior
would only be a problem in certain race conditions. So, I do not think
it is worthwhile specifying more rules to cover that type of legacy UAS.
With all the background in the draft, implementers should be able to
understand what types of different behaviors they can expect from legacy
UAs.


> 
>        A                               B
>        |                               |
>      s0|re-INVITE (offer1)             |s0
>        |------------------------------>|
>        |               18x-rel(answer1)|
>        |<------------------------------|
>      s1|PRACK                          |s1
> 	   |------------------------------>|
> 	   |                        2xx-PRA|
> 	   |<------------------------------|<-+
>        |                               |  |
>        |                   UPDATE(m:c1)|  |
>        |<-------------\  /=============|  |
>        |               \/              |  |
>        |               /\ 18x-rel(m:c2)|  |
>        |<=============/  \-------------|  |
>        |                               |  | accept UPDATE
>        |                               |  |
>        |                               |  v
> 
>        A                               B
>        |                               |
>      s0|re-INVITE (offer1)             |s0
>        |------------------------------>|
>        |               18x-rel(answer1)|
>        |<------------------------------|
>      s1|PRACK                          |s1
> 	   |------------------------------>|
> 	   |                        2xx-PRA|
> 	   |<------------------------------|<-+
>        |                               |  |
>        |                  18x-rel(m:c1)|  |
>        |<=============\  /-------------|  |
>        |               \/              |  |
>        |               /\  UPDATE(m:c2)|  |
>        |<-------------/  \=============|  |
>        |                               |  | accept UPDATE
>        |                               |  |
>        |                               |  v
> 
>> 5.2.  Problems with UAs Losing their Contact
>>   On detecting some of
>>   these errors, UAs following the rules specified in RFC 3261 [RFC3261]
>>   will terminate the dialog.
> 
> According to RFC5057, 408 affects an only transaction.
> Just to be sure, I think it is better to describe about RFC5057.

Section 5.2 of RFC 5057 states that the 408 affects a dialog usage. In
this case, the invite usage.


>> 5.3.  UAS Losing its Contact: UAC Behavior
>>   When a UAS that moves to a new contact and loses its old contact
>>   generates a non-2xx final response to the re-INVITE, it will not be
>>   able to receive the ACK request.  The entity receiving the response
>>   and, thus, generating the ACK request will either get a transport
>>   error or a timeout error, which, as described in Section 8.1.3.1 of
>>   RFC 3261 [RFC3261], will be treated as a 503 (Service Unavailable)
>>   response and as a 408 (Request Timeout) response, respectively.
> 
> IMO It is not described in RFC3261 that a transport error for
> sending ACK is treated as an error for re-INVITE request.


As I noted before, the background material in the draft is given so that
implementers understand what to expect from different legacy UAs. I am
sure some UAs act as you describe and do not relate ACK errors to the
re-INVITE. However, others will do that.


>> 5.5.  UAC Losing its Contact: UAC Behavior
> 
> Even though the UAC probably can't receive a response to the
> CANCEL requst, should it send CANCEL?

Yes, because the CANCEL will allow the UAC to initiate a new re-INVITE
transaction (if needed) from its new location. The CANCEL will
synchronize the UAs.

> When a UAS receives the CANCEL request, which code should
> it return to a UAC? 2xx or 487?

The UAS will apply normal CANCEL processing, which typically consists of
returning a 487 to the original request and a 200 to the CANCEL.

Thanks,

Gonzalo