RE: [Sip] Open Issue #7: CANCEL for non-INVITE

Jonathan Rosenberg <jdrosen@dynamicsoft.com> Tue, 25 September 2001 06:39 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id CAA22867 for <sip-archive@odin.ietf.org>; Tue, 25 Sep 2001 02:39:39 -0400 (EDT)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id CAA27097; Tue, 25 Sep 2001 02:07:55 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id CAA27064 for <sip@optimus.ietf.org>; Tue, 25 Sep 2001 02:07:53 -0400 (EDT)
Received: from mail1.dynamicsoft.com ([63.113.40.10]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id CAA20734 for <sip@ietf.org>; Tue, 25 Sep 2001 02:07:50 -0400 (EDT)
Received: from DYN-EXCH-001.dynamicsoft.com (dyn-exch-001 [63.113.44.7]) by mail1.dynamicsoft.com (8.12.0.Beta7/8.12.0.Beta7) with ESMTP id f8P65j8P010357; Tue, 25 Sep 2001 02:05:47 -0400 (EDT)
Received: by DYN-EXCH-001.dynamicsoft.com with Internet Mail Service (5.5.2653.19) id <TRZNF68Q>; Tue, 25 Sep 2001 02:06:46 -0400
Message-ID: <B65B4F8437968F488A01A940B21982BF020D6978@DYN-EXCH-001.dynamicsoft.com>
From: Jonathan Rosenberg <jdrosen@dynamicsoft.com>
To: "'Henning G. Schulzrinne'" <hgs@cs.columbia.edu>, James Undery <jundery@ubiquity.net>
Cc: sip@ietf.org
Subject: RE: [Sip] Open Issue #7: CANCEL for non-INVITE
Date: Tue, 25 Sep 2001 02:06:43 -0400
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2653.19)
Content-Type: text/plain
Sender: sip-admin@ietf.org
Errors-To: sip-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Session Initiation Protocol <sip.ietf.org>
X-BeenThere: sip@ietf.org


 

> -----Original Message-----
> From: Henning G. Schulzrinne [mailto:hgs@cs.columbia.edu]
> Sent: Monday, September 24, 2001 12:45 PM
> To: James Undery
> Cc: sip@ietf.org
> Subject: Re: [Sip] Open Issue #7: CANCEL for non-INVITE
> 
> 
> James Undery wrote:
> > 
> 
> > The problem I see here is the difference between complete 
> immidately,
> > and the ability to cancel before completion. For example this all
> > started because of REGISTER, sending 100 then attempting to do the
> > database magic (possibly over a network) makes sense to restrict
> > retransmission, yet providing full rollback semantics to allow the
> > REGISTER to cancel is trickier.
> 
> As I have tried to say numerous times before, nobody has to implement
> CANCEL even under the current state of affairs. 

That might actually be a bad thing for INVITE. CANCEL is the preferred way
to hang up a call before a final response since its the only reliable way to
do so. However, if the server doesn't implement it, the call can't be hung
up. I'd call that an interoperability failure. I think that if a UA
implements INVITE, it probably needs to implement BYE and CANCEL. 


If CANCELing 
> REGISTER is
> difficult (which seems likely), just don't do it. CANCEL is 
> advisory, an
> optimization. Somehow the "doesn't work for all cases" seems to get
> confused with "it's never useful".

Indeed, that is the question. If it doesn't always work, is it still useful?
To answer that, you have to think about what it means for cancel to "work".
I can think of several dimensions to this:

1. it works because it causes the transaction to complete immediately
2. it works because it causes the transaction to generate a 487 response

Even though CANCEL for INVITE doesn't always "work" for definition (2), it
always works for definition (1) since it always results in immediate
completion of the transaction one way or another, so long as the server
supports CANCEL. Would CANCEL for INVITE be useful if it didn't always
perform (1)? I'd say no. From a users perspective, it is not acceptable to
hit "stop" and for nothing to happen.

So, I would propose to define the CANCEL for a method "works" if it always
(under reasonable network conditions) results in rapid completion of the
transaction, whether it is success (because the 2xx and CANCEL pass on the
wire), or failure (including 487).

If this definition is suitable, then we can draw some conclusions:

1. If a non-INVITE transaction is protracted, CANCEL is only useful if all
servers have to support cancel for that method.

2. If a non-INVITE transaction is not protracted, CANCEL is a no-op since
sending it or not achieves the same result.

So, let me propose the following compromise text based on these conclusions:

"Servers that implement INVITE MUST support CANCEL for INVITE transactions.
CANCEL is not defined for other methods in this specification. Extensions
MAY define other methods for which CANCEL is useful; those extensions should
specify that CANCEL is allowed and is mandatory if the extension method is
supported".


How is that?

-Jonathan R.

---
Jonathan D. Rosenberg, Ph.D.                72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
jdrosen@dynamicsoft.com                     FAX:   (973) 952-5050
http://www.jdrosen.net                      PHONE: (973) 952-5000
http://www.dynamicsoft.com

_______________________________________________
Sip mailing list  http://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use sip-implementors@cs.columbia.edu for questions on current sip
Use sipping@ietf.org for new developments on the application of sip