Re: [Sip] Possible improvement in draft-ietf-sipcore-invfix (CANCEL processing)

Paul Kyzivat <pkyzivat@cisco.com> Sun, 02 May 2010 04:18 UTC

Return-Path: <pkyzivat@cisco.com>
X-Original-To: sip@core3.amsl.com
Delivered-To: sip@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DE30D3A67A4 for <sip@core3.amsl.com>; Sat, 1 May 2010 21:18:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.149
X-Spam-Level:
X-Spam-Status: No, score=-9.149 tagged_above=-999 required=5 tests=[AWL=-1.450, BAYES_50=0.001, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_HI=-8]
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 mw+F-qeaeGNf for <sip@core3.amsl.com>; Sat, 1 May 2010 21:17:57 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 8F0323A6765 for <sip@ietf.org>; Sat, 1 May 2010 21:17:57 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Av0EAJuZ3EtAZnwN/2dsb2JhbACDF5oWcaA/iG6PboEmgn5uBA
X-IronPort-AV: E=Sophos;i="4.52,311,1270425600"; d="scan'208";a="107098762"
Received: from rtp-core-2.cisco.com ([64.102.124.13]) by rtp-iport-1.cisco.com with ESMTP; 02 May 2010 04:17:42 +0000
Received: from [10.86.254.27] ([10.86.254.27]) by rtp-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o424HgwA025275; Sun, 2 May 2010 04:17:42 GMT
Message-ID: <4BDCFCE8.6040107@cisco.com>
Date: Sun, 02 May 2010 00:17:44 -0400
From: Paul Kyzivat <pkyzivat@cisco.com>
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
To: Iñaki Baz Castillo <ibc@aliax.net>
References: <r2zcc1f582e1004301537w2f5a81b2xcbbd290a7a6f6e02@mail.gmail.com>
In-Reply-To: <r2zcc1f582e1004301537w2f5a81b2xcbbd290a7a6f6e02@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Cc: sip@ietf.org
Subject: Re: [Sip] Possible improvement in draft-ietf-sipcore-invfix (CANCEL processing)
X-BeenThere: sip@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Session Initiation Protocol <sip.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sip>
List-Post: <mailto:sip@ietf.org>
List-Help: <mailto:sip-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 02 May 2010 04:18:01 -0000

Iñaki,

I don't understand what the point is of sending, or forwarding, this 
CANCEL. There is nothing left to cancel. The only possibility would be 
if the INVITE had been forked somewhere along the path. But if it had, 
the forking proxy would have seen the 200 and sent a CANCEL on its own. 
So there is no reason for the UAC to send a CANCEL in this case.

	Thanks,
	Paul

Iñaki Baz Castillo wrote:
> Hi, RFC 3261 clearly states that an INVITE transaction is terminated
> upon receipt of a 200. So let's imagine a proxy between alice and bob:
> 
> - alice sends INVITE to the proxy.
> - The proxy relays it to bob.
> - bob replies 200.
> - The proxy relays the 200 to alice and terminates the INVITE transaction.
> - For some reason alice sends now a CANCEL.
> - The proxy doesn't match a transaction for this CANCEL so it would
> relay it statelessly as section 16.10 states:
> 
>    If a response context is not found, the element does not have any
>    knowledge of the request to apply the CANCEL to.  It MUST statelessly
>    forward the CANCEL request (it may have statelessly forwarded the
>    associated request previously).
> 
> 
> This makes sense because such "response context" doesn't exist after
> the 200 was processed by the proxy. However "invfix" draft adds a new
> state "Accepted" so when the proxy relays the 200 the transaction
> remains in "Accepted" state for a while. What should happen then if
> the UAC sends a CANCEL? does the "response context" still exist or
> not?
> 
> So I suggest that "invfix" draft also changes the section 16.10 of RFC 3261:
> 
>    If no transaction in proceeding state is found, the element does not have any
>    knowledge of the request to apply the CANCEL to.  It MUST statelessly
>    forward the CANCEL request (it may have statelessly forwarded the
>    associated request previously).
> 
> 
> This is, even if the transaction still exists (under "Accepted" state)
> the proxy has nothing to CANCEL so it shouldn't reply 200 to the
> CANCEL. Instead it should forward it statelessly. I think this
> requires some clarification in the original specification of the RFC
> 3261.
> 
> Best regards.
> 
>