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

Iñaki Baz Castillo <ibc@aliax.net> Sun, 02 May 2010 18:17 UTC

Return-Path: <ibc@aliax.net>
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 7BB773A6A79 for <sip@core3.amsl.com>; Sun, 2 May 2010 11:17:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.149
X-Spam-Level:
X-Spam-Status: No, score=0.149 tagged_above=-999 required=5 tests=[AWL=-0.774, BAYES_50=0.001, FM_FORGED_GMAIL=0.622, MIME_8BIT_HEADER=0.3]
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 WoADTwM0lqdZ for <sip@core3.amsl.com>; Sun, 2 May 2010 11:17:49 -0700 (PDT)
Received: from mail-px0-f172.google.com (mail-px0-f172.google.com [209.85.212.172]) by core3.amsl.com (Postfix) with ESMTP id 17B0B3A69EA for <sip@ietf.org>; Sun, 2 May 2010 11:17:48 -0700 (PDT)
Received: by pxi19 with SMTP id 19so966858pxi.31 for <sip@ietf.org>; Sun, 02 May 2010 11:17:31 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.140.57.5 with SMTP id f5mr2795504rva.173.1272824251399; Sun, 02 May 2010 11:17:31 -0700 (PDT)
Received: by 10.140.252.19 with HTTP; Sun, 2 May 2010 11:17:31 -0700 (PDT)
In-Reply-To: <4BDDBED0.3020600@cisco.com>
References: <r2zcc1f582e1004301537w2f5a81b2xcbbd290a7a6f6e02@mail.gmail.com> <4BDCFCE8.6040107@cisco.com> <x2gcc1f582e1005020343t46f18e23mcbfc191e38398e4b@mail.gmail.com> <4BDDBED0.3020600@cisco.com>
Date: Sun, 02 May 2010 20:17:31 +0200
Message-ID: <w2wcc1f582e1005021117o191d2222v370ee4b941d922bd@mail.gmail.com>
From: Iñaki Baz Castillo <ibc@aliax.net>
To: Paul Kyzivat <pkyzivat@cisco.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
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 18:17:50 -0000

2010/5/2 Paul Kyzivat <pkyzivat@cisco.com>:
>> Hi Paul, I do know that the UAC shouldn't send the CANCEL, but it
>> could occur (race conditions, 200 reply lost in the network...). So
>> the proxy must know how to behave when a CANCEL arrives for an INVITE
>> transaction in "Accepted" state, something that doesn't make sense in
>> the original 3261 specification as the proxy terminates the INVITE
>> transaction when the 200 arrives (immediately).
>>
>> I think innfix draft should clarify it: what should do a proxy when a
>> CANCEL arrives and matches an INVITE transaction in "Accepted" state?
>
> Ok, if you are only concerned with being clear about this, and not that it
> is something of general utility. It seems it doesn't really matter whether
> the CANCEL is propagated by the proxy or not, since it is destined to be a
> no-op. It would be more efficient to block its propagation, but given the
> rarity of the situation I don't think it really matters.

The problem I've seen is in an existing SIP proxy which mantains the
INVITE transaction in memory after 200 arrives. It does it even before
invfix draft exists (this is, the proxy already fixes the bug in RFC
3261). However when such proxy receives a CANCEL for an INVITE
transaction for which the proxy has already sent a 200, it replies 200
to the CANCEL. This doesn't make sense (as it has canceled nothing
because the transaction was already confirmed by the UAS).

So I would like to know the correct behavior of the proxy in this case
in order to improve/report it. However I would like such behavior to
be clarified in draft invfix as with the original 3261 specification
there was no place to this ambiguity (a CANCEL would never match an
INVITE transaction as the proxy terminated it upon receipt of a 200
for the INVITE).

Statelessly relaying the CANCEL makes no sense for me, it seems an
exotic "feature" as many others that never work. In fact, draft invfix
states that a stateful proxy should not relay responses if they don't
match a transaction, so the possible 481 response to the CANCEL coming
from the UAS would be dropped by the proxy and UAC would generate
useless retransmissions. Same would occur if the proxy just
ignores/drops the CANCEL.

So IMHO a response by the proxy is needed. Perhaps a 481 as the INVITE
transaction is not active (but in "Accepted" state). Anything but a
200.

Thanks.



-- 
Iñaki Baz Castillo
<ibc@aliax.net>