Re: [sipcore] UPDATE, reINVITE rejections, and session-state rollback

gao.yang2@zte.com.cn Tue, 12 October 2010 09:25 UTC

Return-Path: <gao.yang2@zte.com.cn>
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 A2B943A67C2 for <sipcore@core3.amsl.com>; Tue, 12 Oct 2010 02:25:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -100.518
X-Spam-Level:
X-Spam-Status: No, score=-100.518 tagged_above=-999 required=5 tests=[AWL=1.320, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_DOUBLE_IP_LOOSE=0.76, 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 mp6vav9hAtdm for <sipcore@core3.amsl.com>; Tue, 12 Oct 2010 02:25:30 -0700 (PDT)
Received: from mx5.zte.com.cn (mx6.zte.com.cn [63.218.89.70]) by core3.amsl.com (Postfix) with ESMTP id BC7763A6784 for <sipcore@ietf.org>; Tue, 12 Oct 2010 02:25:29 -0700 (PDT)
Received: from [10.34.0.130] by mx5.zte.com.cn with surfront esmtp id 35101727820181; Tue, 12 Oct 2010 17:25:24 +0800 (CST)
Received: from [10.32.0.74] by [192.168.168.15] with StormMail ESMTP id 55813.9612350554; Tue, 12 Oct 2010 17:26:37 +0800 (CST)
Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse3.zte.com.cn with ESMTP id o9C9QglA003770; Tue, 12 Oct 2010 17:26:45 +0800 (CST) (envelope-from gao.yang2@zte.com.cn)
In-Reply-To: <4A3A728B-54C7-4E7D-B523-DC86D659A851@estacado.net>
To: Byron Campen <bcampen@estacado.net>
MIME-Version: 1.0
X-Mailer: Lotus Notes Release 7.0.1 January 17, 2006
Message-ID: <OFBC31B640.D901FB1D-ON482577BA.00337F37-482577BA.0033DB8A@zte.com.cn>
From: gao.yang2@zte.com.cn
Date: Tue, 12 Oct 2010 17:24:25 +0800
X-MIMETrack: Serialize by Router on notes_smtp/zte_ltd(Release 8.5.1FP4|July 25, 2010) at 2010-10-12 17:26:31, Serialize complete at 2010-10-12 17:26:31
Content-Type: multipart/alternative; boundary="=_alternative 0033DB87482577BA_="
X-MAIL: mse3.zte.com.cn o9C9QglA003770
Cc: shinji.okumura@softfront.jp, SIPCORE <sipcore@ietf.org>
Subject: Re: [sipcore] UPDATE, reINVITE rejections, and session-state rollback
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: Tue, 12 Oct 2010 09:25:31 -0000

Hi Byron Campen,

Before getting into the details, I'd like to check does the "INVITE/500" 
just means the 5xx of INVITE?

Thanks,

Gao

>    Sending to the authors of the offeranswer and reinvite drafts, 
> since I am not sure which bucket this would fall in:
> 
>    Consider the following. In all cases, this is within a reINVITE 
> transaction, after an offer/answer exchange has completed using 
> 100rel (which kind is not important), that is being rejected by the 
> server side due to some unspecified error:
> 
>                  A          B
>                  |<---------| INVITE/500
>                  |          |
>                  |          |
>   UPDATE (offer) |--------->|
>                  |          |
>                  |<---------| UPDATE/200 (answer)
> 
>                  A          B
>   UPDATE (offer) |---\  /---| INVITE/500
>                  |    \/    |
>                  |    /\    |
>                  |<--/  \-->|
>                  |          |
>                  |<---------| UPDATE/200 (answer)
> 
>                  A          B
>                  |        /-| INVITE/500
>                  |       /  |
>   UPDATE (offer) |------/-->|
>                  |     /    |
>                  |<---/-----| UPDATE/200 (answer)
>                  |   /      |
>                  |<-/       |
> 
>    All of these look identical to B; UPDATE offer/answer completes 
> after the end of the INVITE transaction. However, A sees them very 
> differently. B cannot know that something unusual has happened. Also
> consider the following cases:
> 
>                  A          B
>   UPDATE (offer) |--------->|
>                  |          |
>                  |<---------| UPDATE/200 (answer)
>                  |          |
>                  |<---------| INVITE/500
> 
>                  A          B
>   UPDATE (offer) |--------->|
>                  |          |
>                  |       /--| UPDATE/200 (answer)
>                  |      /   |
>                  |<----/----| INVITE/500
>                  |    /     |
>                  |<--/      |
> 
>    Again, these look the same to B, but different to A. What is the 
> best approach to ensuring that session-state is consistent on both 
> ends in all of these cases? It seems to me that one way would be to 
> specify that rollback of a reINVITE does not invalidate session-
> state established with an UPDATE, regardless of whether that UPDATE 
> transaction occurred (or appeared to have occurred) during the 
> reINVITE transaction. If we insist that session-state established 
> with an in-reINVITE UPDATE be rolled back (the current language says
> that both sides must roll back to the session-state in use prior to 
> the reINVITE), then there is no way to ensure consistent rollback on
> both ends, even if everything has the same rollback logic, because 
> what appears to be an in-reINVITE UPDATE on one end may appear to be
> after the reINVITE transaction on the other end. If any portion of 
> the UPDATE transaction appeared to have happened within the reINVITE
> transaction, then the observing UA must send a sub
>  sequent UPDATE to re-sync (since there is no guarantee that the 
> other end saw the UPDATE within the reINVITE transaction). This is 
> likely to cause glare, unless we put asymmetric timers on the re-
> sync, and even then there will be a delay similar to that caused by 
glare.
> 
>    My gut says that it would be better to not rollback session-state
> established by an UPDATE, under any circumstances. But, there may be
> situations where the session-state established in an UPDATE is 
> contingent on the reINVITE succeeding it. Would it be appropriate to
> say that if a UA "feels" this way, it is responsible for re-syncing?
> Or is there something I am missing here?
> 
> Best regards,
> Byron Campen
> 

--------------------------------------------------------
ZTE Information Security Notice: The information contained in this mail is solely property of the sender's organization. This mail communication is confidential. Recipients named above are obligated to maintain secrecy and are not permitted to disclose the contents of this communication to others.
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the originator of the message. Any views expressed in this message are those of the individual sender.
This message has been scanned for viruses and Spam by ZTE Anti-Spam system.