Re: [Sip] Review of draft-ietf-sip-gruu-12

Jonathan Rosenberg <jdrosen@cisco.com> Tue, 27 March 2007 12:56 UTC

Return-path: <sip-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1HWBE7-0000Ak-TH; Tue, 27 Mar 2007 08:56:39 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1HWBE5-0000Ac-R3 for sip@ietf.org; Tue, 27 Mar 2007 08:56:37 -0400
Received: from rtp-iport-2.cisco.com ([64.102.122.149]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1HWBE4-0006Dy-Ca for sip@ietf.org; Tue, 27 Mar 2007 08:56:37 -0400
Received: from rtp-dkim-1.cisco.com ([64.102.121.158]) by rtp-iport-2.cisco.com with ESMTP; 27 Mar 2007 08:56:36 -0400
Received: from rtp-core-2.cisco.com (rtp-core-2.cisco.com [64.102.124.13]) by rtp-dkim-1.cisco.com (8.12.11/8.12.11) with ESMTP id l2RCuame001440; Tue, 27 Mar 2007 08:56:36 -0400
Received: from xbh-rtp-201.amer.cisco.com (xbh-rtp-201.cisco.com [64.102.31.12]) by rtp-core-2.cisco.com (8.12.10/8.12.6) with ESMTP id l2RCuHli001542; Tue, 27 Mar 2007 12:56:36 GMT
Received: from xfe-rtp-201.amer.cisco.com ([64.102.31.38]) by xbh-rtp-201.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 27 Mar 2007 08:56:33 -0400
Received: from [192.168.1.104] ([10.86.242.4]) by xfe-rtp-201.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 27 Mar 2007 08:56:33 -0400
Message-ID: <46091480.8060908@cisco.com>
Date: Tue, 27 Mar 2007 08:56:32 -0400
From: Jonathan Rosenberg <jdrosen@cisco.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Michael Procter <michael.procter@citel.com>
Subject: Re: [Sip] Review of draft-ietf-sip-gruu-12
References: <20070311173655.DF5EE1CC24@delta.rtfm.com> <45FDD909.6030906@cisco.com> <76431CABEC5EED489807DB8AEBCCA0BCCAC016@sea02-mxc01.citel.com> <45FFC305.9060403@cisco.com> <76431CABEC5EED489807DB8AEBCCA0BCCAC24E@sea02-mxc01.citel.com> <4600F02F.10406@cisco.com> <76431CABEC5EED489807DB8AEBCCA0BCD2CD4A@sea02-mxc01.citel.com>
In-Reply-To: <76431CABEC5EED489807DB8AEBCCA0BCD2CD4A@sea02-mxc01.citel.com>
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 27 Mar 2007 12:56:33.0265 (UTC) FILETIME=[588CC610:01C7706F]
DKIM-Signature: v=0.5; a=rsa-sha256; q=dns/txt; l=6880; t=1175000196; x=1175864196; c=relaxed/simple; s=rtpdkim1001; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version; d=cisco.com; i=jdrosen@cisco.com; z=From:=20Jonathan=20Rosenberg=20<jdrosen@cisco.com> |Subject:=20Re=3A=20[Sip]=20Review=20of=20draft-ietf-sip-gruu-12 |Sender:=20 |To:=20Michael=20Procter=20<michael.procter@citel.com>; bh=dZtUopURQfNNvWiCJiSM7GeqIPjU3EwopllrEqvf6+w=; b=bkB4K+9SO7s2vG+lS1IuGBEihyWhDNza/0awV5hjw9W6jr+vmpV+hUVXGM4VOOMfUttxC5pf f2lFZvcmE5OjKHwUX48Kcum9JJMF+SuPX5kqeobmQSa20UBy7zYZ0BkD;
Authentication-Results: rtp-dkim-1; header.From=jdrosen@cisco.com; dkim=pass ( sig from cisco.com/rtpdkim1001 verified; );
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 17bdfcaea25d1444baef0e24abc38874
Cc: sip@ietf.org, Paul Kyzivat <pkyzivat@cisco.com>
X-BeenThere: sip@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Session Initiation Protocol <sip.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:sip@ietf.org>
List-Help: <mailto:sip-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/sip>, <mailto:sip-request@ietf.org?subject=subscribe>
Errors-To: sip-bounces@ietf.org

Its not moot, this is pretty much orthogonal.

However, I believe it works just fine. Lets walk through a call flow.

Lets say you have a UA X that doesn't support GRUU. However it includes 
an instance ID in its registration. The UA has a contact sip:x-contact 
and the registrar assigns a GRUU sip:x-gruu. However, this gruu is not 
returned to UA X and UA X has no idea about GRUU. Some other entity 
using reg-event (say UA Y) learns this GRUU and sends a request there.

This request will have a R-URI of sip:x-gruu, and arrive at the home 
proxy in X's domain. THis proxy, following normal GRUU procedures, will 
replace the R-URI with the registered contact. Furthermore it will 
record-route if there were Path headers. In this case it didn't actually 
need to, but it will anyway. No big deal. Lets say there was one path 
header, sip:edge. So the home proxy puts a record-route in of 
sip:xs-proxy. This arrives at UA X looking like:

INVITE sip:x-contact
RR: edge
RR: sip:xs-proxy

which looks like any other invite would. Now X doesn't do GRUU so its 
contact in the 200 OK will be sip:x-contact:

SIP/2.0 200 OK
RR: sip:xs-proxy
RR: sip:edge
Contact: sip:x-contact

This arrives at UA Y. UA Y will construct its ACK (and all subsequent 
mid-dialog requests) as:

ACK sip:x-contact
Route: sip:xs-proxy, sip:edge

This arrives at the home proxy due to the route header. Since the r-uri 
does NOT contain a gruu, the r-uri is not rewritten and none of the gruu 
procedures in 6.1 of the GRUU spec apply. This gets sent to the edge 
proxy and then to the UA based on standard, normal, mid-dialog request 
routing techniques.

What won't work is that, since UA X doesn't support GRUU, once the call 
is set up to X, things like transfer won't work. But, thats OK, there 
won't be any expectation that it would since the Contact didn't contain 
a GRUU.

So, net/net is that I believe the current text works fine.

-Jonathan R.


Michael Procter wrote:

> To be honest, I don't know.  I noticed temp-gruu lifetime being
> discussed extensively during yesterday's session, but I don't recall
> anything relating to this being raised.
> 
> My concern is purely related to the idea of GRUUs being invented on
> behalf of devices that don't support GRUUs.  I hadn't realized that this
> was possible until I read this from Jonathan:
> 
> : However, we ran into an issue that a UA might register with an
> instance 
> : ID but not support GRUU, and then something is subscribed to reg-event
> 
> : and wants to learn its gruu. So you don't return the gruu to the UA,
> but 
> : you still need to generate the GRUU to deliver in reg-event.
> 
> I think that there are nasty behavioral problems if a gruu is
> distributed on behalf of a UA that doesn't support gruu.
> 
> So, my questions are now:
> 1) Can a registrar create and advertise a gruu for a UA that doesn't
> support gruu?
> 
> 2) If so, how do we arrange things so that the scenarios I've described
> before don't arise?
> 
> Michael
> 
> Paul Kyzivat wrote:
> 
>>Is this discussion moot at this time?
>>
>>	Paul
>>
>>Michael Procter wrote:
>>
>>>Paul Kyzivat wrote:
>>>
>>>>Michael,
>>>>
>>>>There are more cases for this. A fundamental problem is that saying
>>>>"Supported:gruu" says "I support the gruu option". Its at least a
> 
> bit
> 
>>>>weird to try to make it mean "I want you to assign gruus for the
>>>>contacts in this request."
>>>
>>>If a REGISTER message that includes 'Supported:gruu', means 'I
> 
> support
> 
>>>the GRUU option', then I don't think it is particularly weird to
> 
> read in
> 
>>>the additional meaning 'and if you also support GRUUs, please
> 
> perform
> 
>>>the appropriate action'.
>>>
>>>
>>>>Suppose it meant the latter. And suppose there are UAs X and Y both
>>>>registering for the same AOR. X registers first, and indicates
> 
> support
> 
>>>>for gruu, and provides a contact with an instance id. So it gets a
>>>
>>>gruu
>>>
>>>>back for its contact. Then Y registers, indicates support for gruu
> 
> and
> 
>>>>provides a contact with instance id. The response to Y's register
> 
> will
> 
>>>>contain contacts for both X and Y. And it will contain the gruus
> 
> for
> 
>>>>both X and Y. But it didn't cause the assignment of a a gruu for X.
> 
> So
> 
>>>This paragraph appears truncated.  I think I agree with what is
> 
> written
> 
>>>above, but you may not have reached the punch line!
>>>
>>>
>>>>Then consider a similar scenario, only X didn't support gruu. Now
> 
> the
> 
>>>>response to X's register doesn't contain a gruu. But does the
> 
> response
> 
>>>>to Y's register contain a gruu for X's contact?
>>>
>>>I don't think it should contain a GRUU for X's contact, because I
> 
> don't
> 
>>>think a GRUU should be created for X if X doesn't support using it
>>>properly.
>>>
>>>
>>>>As written, the registrar doesn't have to remember anything new.
> 
> The
> 
>>>>decision whether to return a gruu only depends on what is in the
>>>>location service and whether the register request contains
>>>
>>>Supported:gruu.
>>>
>>>I can see that minimising the state required in the registrar is
> 
> good,
> 
>>>but I believe that this approach will lead to odd failures in
> 
> operation.
> 
>>>I discussed a couple of these in my earlier email.
>>>
>>>Back in the pre-GRUU days, if you obtained (by whatever means) a
> 
> contact
> 
>>>uri, you didn't know for certain whether it was globally routable or
>>>not.  But you could try it, and if it worked, you knew it was (at
> 
> least
> 
>>>sufficiently routable for your purposes).
>>>
>>>But with GRUUs invented for non-GRUU-supporting UAs, I think you can
> 
> end
> 
>>>up in a worse position.  Given one of these GRUUs, you can use it
> 
> and
> 
>>>find that it initially works.  But once the dialog is established or
> 
> a
> 
>>>target refresh occurs, it stops working.  It might only stop working
> 
> in
> 
>>>one direction though, and the failure might not be noticed for some
> 
> time
> 
>>>(e.g. an hour for typical subscriptions).
>>>
>>>Some of these bad effects can be countered by careful record-route
>>>behaviour, but I don't think all of them can.  And in a way, the
>>>existence of this GRUU draft proves my point that the problem can't
> 
> be
> 
>>>completely solved by other mechanisms.
>>>
>>>Regards,
>>>
>>>Michael
>>>
> 
> 

-- 
Jonathan D. Rosenberg, Ph.D.                   600 Lanidex Plaza
Cisco Fellow                                   Parsippany, NJ 07054-2711
Cisco Systems
jdrosen@cisco.com                              FAX:   (973) 952-5050
http://www.jdrosen.net                         PHONE: (973) 952-5000
http://www.cisco.com

_______________________________________________
Sip mailing list  https://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