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

OKUMURA Shinji <shinji.okumura@softfront.jp> Fri, 23 July 2010 09:09 UTC

Return-Path: <shinji.okumura@softfront.jp>
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 85BA93A69E0 for <sipcore@core3.amsl.com>; Fri, 23 Jul 2010 02:09:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -97.868
X-Spam-Level:
X-Spam-Status: No, score=-97.868 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HELO_EQ_JP=1.244, HOST_EQ_JP=1.265, RELAY_IS_221=2.222, 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 k3LG8tdRDMmO for <sipcore@core3.amsl.com>; Fri, 23 Jul 2010 02:09:54 -0700 (PDT)
Received: from sf-mail.softfront.co.jp (rt1.softfront.co.jp [221.186.247.166]) by core3.amsl.com (Postfix) with ESMTP id C0D8B3A6965 for <sipcore@ietf.org>; Fri, 23 Jul 2010 02:09:53 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by sf-mail.softfront.co.jp (Postfix) with ESMTP id 9893D428065; Fri, 23 Jul 2010 18:10:09 +0900 (JST)
X-Virus-Scanned: amavisd-new at softfront.co.jp
Received: from sf-mail.softfront.co.jp ([127.0.0.1]) by localhost (sf-mail.softfront.co.jp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id f7g32XUkm1Y7; Fri, 23 Jul 2010 18:10:09 +0900 (JST)
Received: from softfront.jp (112.136.80.7.er.eaccess.ne.jp [112.136.80.7]) by sf-mail.softfront.co.jp (Postfix) with ESMTP id 0B3A3428064; Fri, 23 Jul 2010 18:10:08 +0900 (JST)
From: OKUMURA Shinji <shinji.okumura@softfront.jp>
To: Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
Date: Fri, 23 Jul 2010 18:10:10 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: HidemaruMail 5.33 (WinNT,501)
In-Reply-To: <4C3EE244.8040909@ericsson.com>
References: <4C317D02.2030307@ericsson.com> <4C3EE244.8040909@ericsson.com>
Message-Id: <8ECB2A46DA07E4shinji.okumura@softfront.jp>
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 09:09:55 -0000

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/

>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?

       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.

>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.

>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?

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

Thanks,
Shinji

Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
Thu, 15 Jul 2010 13:26:12 +0300
>Hi,
>
>thanks for the feedback I have received on and off list. We seem to have
>consensus on reducing the scope of the draft to session state and target
>refreshes. That is great because it allows us to hugely simplify the
>rules to avoid glare conditions (this is something a few of you have
>requested on the list in the past). I have put together a new revision
>of the draft, which you can fetch from:
>
>http://users.piuha.net/gonzalo/temp/draft-ietf-sipcore-reinvite-pre05-01.txt
>
>In addition to adjusting the scope of the draft and simplifying the
>glare-related rules, I have also added a few clarifications to Section 5
>in response to Robert's AD review.
>
>Let me know if you have any comments.
>
>Thanks,
>
>Gonzalo
>
>On 05/07/2010 9:34 AM, Gonzalo Camarillo wrote:
>> Hi,
>> 
>> the re-INVITE draft talks about modifications in the session state,
>> dialog state, and the dialog's remote target. While it is relatively
>> well understood what we mean by session state and the dialog's remote
>> target, we do not really have a good definition for dialog state.
>> 
>> We have discussed it in the past and what people had in mind were things
>> such as called party identity. However, the draft is too vague at this
>> point; it should be more precise regarding which piece of "dialog state"
>> the rules in the draft apply to.
>> 
>> My suggestion would be to have the draft talk only about session state
>> and the dialog's remote target, and forget about any other dialog state.
>> New extensions whose parameters can be modified by re-INVITEs can
>> specify their own rules, possibly referring to this draft and using the
>> rules defined in it by reference. In this way, the applicability of this
>> draft would be much clearer.
>> 
>> Comments?
>> 
>> Thanks,
>> 
>> Gonzalo