Re: [sipcore] Glare conditions in draft-ietf-sipcore-reinvite

OKUMURA Shinji <shinji.okumura@softfront.jp> Fri, 02 July 2010 01:54 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 246233A686B for <sipcore@core3.amsl.com>; Thu, 1 Jul 2010 18:54:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -96.858
X-Spam-Level:
X-Spam-Status: No, score=-96.858 tagged_above=-999 required=5 tests=[AWL=1.010, 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 jCav2uOmzG9w for <sipcore@core3.amsl.com>; Thu, 1 Jul 2010 18:54:24 -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 5F0FB3A685C for <sipcore@ietf.org>; Thu, 1 Jul 2010 18:54:23 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by sf-mail.softfront.co.jp (Postfix) with ESMTP id E2B9A42800F; Fri, 2 Jul 2010 10:54:32 +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 ratCs6VdF1Zr; Fri, 2 Jul 2010 10:54:27 +0900 (JST)
Received: from softfront.jp (p5042-ipngnfx01sapodori.hokkaido.ocn.ne.jp [114.160.211.106]) by sf-mail.softfront.co.jp (Postfix) with ESMTP id DDF8F42800C; Fri, 2 Jul 2010 10:54:26 +0900 (JST)
From: OKUMURA Shinji <shinji.okumura@softfront.jp>
To: SIPCORE <sipcore@ietf.org>
Date: Fri, 02 Jul 2010 10:54:20 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Mailer: HidemaruMail 5.36 (WinNT,501)
In-Reply-To: <4C2B328F.8050601@ericsson.com>
References: <ABCB181D40FECDshinji.okumura@softfront.jp> <4C2AF154.9040905@ericsson.com> <53CB1844EA4162shinji.okumura@softfront.jp> <4C2B328F.8050601@ericsson.com>
Message-Id: <5ECB19897C8959shinji.okumura@softfront.jp>
Subject: Re: [sipcore] Glare conditions 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, 02 Jul 2010 01:54:25 -0000

Hi Gonzalo,

I arrange my comments to clarify the issues.

First, as a precondition for new rules, this text updates
RFC3261. And so it is necessary to minimize the change in
consideration of backward compatibility.
I think this principle should be given priority to over the
KISS principle. Therefore we should clarify not a sufficient
condition but a necessary and sufficient condition.

Second, you describe the rules about O/A and target-refresh
at once. But I prefer to describe the two issues separately
in order to clarify the reason why the rule is necessary.
As we discuss the rules, it is acceptable result that the rules
are unified accordingly. But it is premature at this moment in
time.

>>>>>   The rules in RFC 3261 [RFC3261] do not cover collisions between an
>>>>>   UPDATE request and a reliable response to a re-INVITE (non-2xx final
>>>>>   responses to the re-INVITE are also considered reliable responses).
>>>>>   Since both the UPDATE request and the reliable response could be
>>>>>   requesting changes to the dialog or session state, it would not be
>>>>>   clear which changes would need to be executed first.
>>>>>
>>>>>   If the UAS of a re-INVITE transaction receives and UPDATE request
>>>>>   after having sent a reliable response to the re-INVITE but before
>>>>>   having received the corresponding ACK or PRACK request, the UA SHOULD
>>>>>   return a 491 (Request Pending) response to the UPDATE request.
>>>> 
>>>> I think this rule is more restrictive.
>>>> IMO;
>>>> In case that the reliable response is 18x, the UA SHOULD return a "500" response.
>>>> In case that the reliable response is 2xx;
>>>>     If the 2xx carries an offer, the UA SHOULD return a "500" response.
>>>>     Otherwise, the UA MAY return a 2xx response.
>>>> In case that the reliable response is 4xx, the UA MAY return a 2xx response.
>>>
>>> No, these rules would not address the glare situation.

>From an offer-answer perspective, you should agree that
there is no problem.

>> I am very interested in this topic. Laying aside the
>> response code, I don't understand the reason why these rules
>> would not address the glare situation.
>> Please explain the reason.
>>
>> In below cases, if a UAS returns a 2xx to the UPDATE, IMO
>> no ploblem would be occured.
>
> as we discussed in the past, the collision of two given messages may or
> may not be a problem. For example, two UPDATEs colliding each of them
> updating a different parameter would not be a problem... but if they
> update the same parameter the collision would get both UAs out of synch.
> For the sake of simplicity, instead of having UAs implement complex
> rules to figure out if a particular collision would cause problems, we
> specify general rules that are (relatively) easy to implement by user
> agents.
>
> So, let's take your example below
>
>>                A                               B
>>                |                               |
>>              s0|re-INVITE (offer1)             |s0
>>                |------------------------------>|
>>                |               18x-rel(answer1)|
>>                |<------------------------------|
>>              s1|PRACK                          |s1
>>                |------------------------------>|
>>                |                        2xx-PRA|
>>                |<------------------------------|<-+
>>                |                            2xx|  |
>>                |                /--------------|  |
>>                |UPDATE(offer2) /               |  |
>>                |==============/===============>|  | accept PDATE
>>                |             / 2xx-UPD(answer2)|  |
>>                |<===========/==================|  |
>>              s2|           /                   |s2|
>>                |<---------/                    |  |
>>                |ACK                            |  |
>>                |------------------------------>|  |
>>                |                               |  v
>
>
> both the 2xx to the INVITE and the 2xx to the UPDATE can update the
> dialog's target. As you see, the UAC receives them in a different order
> than they were sent. So, for the UAC the latest target refresh was the
> 2xx to the INVITE but for the UAS the latest target refresh was the 2xx
> to the UPDATE.

Your rules force a UAS to return a 491 response to the UPDATE.
But if I understand a current RFCs correctly, a UAS may accept
the UPDATE.

Certainly, your rules are new normative definitions.
I understand it. However if the 2xx to an UPDATE and the 2xx
to a re-INVITE have the same Contact, there is no problem.
And it is unnecessary to make an O/A exchange fail.

In any cases, we can not deny the possibility that a legacy
UAS returns a 2xx to the UPDATE with a different Contact.
Therefore a UAC MUST be prepared to receive the 2xx.

In this case, IMO UAC behavior are;
 1. A UAC must treat the Contact in 2xx to an UPDATE as
    current remote target. 
 2. In below cases, a UAC should send new target refresh request.
   a. it has sent UPDATE, received 2xx to UPDATE, and then
      received 2xx to re-INVITE with a different Contact.
   b. it has received UPDATE, sent 2xx to UPDATE, and then
      received 2xx to re-INVITE with a different Contact.
   c. it has sent UPDATE, received 2xx to re-INVITE, and then
      received 2xx to UPDATE with a different Contact.

Regards,
Shinji

Gonzalo Camarillo <Gonzalo.Camarillo@ericsson.com>
Wed, 30 Jun 2010 15:03:27 +0300
>Hi Shinji,
>
>thanks for your comments. I already responded to your first example in
>my previous email. In your second example, the ACK (which does not carry
>an answer) is not a problem because it is not a target refresh request.
>
>Thanks,
>
>Gonzalo