Re: [sipcore] draft-roach-sipcore-rfc3265bis-00

Adam Roach <adam@nostrum.com> Mon, 17 August 2009 21:11 UTC

Return-Path: <adam@nostrum.com>
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 A067E3A6CFD for <sipcore@core3.amsl.com>; Mon, 17 Aug 2009 14:11:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.769
X-Spam-Level:
X-Spam-Status: No, score=-2.769 tagged_above=-999 required=5 tests=[AWL=-0.169, BAYES_00=-2.599, SPF_PASS=-0.001]
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 e2R0OMduw9I6 for <sipcore@core3.amsl.com>; Mon, 17 Aug 2009 14:11:41 -0700 (PDT)
Received: from nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by core3.amsl.com (Postfix) with ESMTP id 507C53A6B10 for <sipcore@ietf.org>; Mon, 17 Aug 2009 14:11:41 -0700 (PDT)
Received: from [172.16.3.231] (vicuna-alt.estacado.net [75.53.54.121]) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id n7HLBbfm074000 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 Aug 2009 16:11:37 -0500 (CDT) (envelope-from adam@nostrum.com)
Message-ID: <4A89C789.20001@nostrum.com>
Date: Mon, 17 Aug 2009 16:11:37 -0500
From: Adam Roach <adam@nostrum.com>
User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605)
MIME-Version: 1.0
To: Christer Holmberg <christer.holmberg@ericsson.com>
References: <C0E80510684FE94DBDE3A4AF6B968D2D06311DBD@esealmw118.eemea.ericsson.se> <4A85C195.4060903@nostrum.com> <CA9998CD4A020D418654FCDEF4E707DF0E3D8462@esealmw113.eemea.ericsson.se>
In-Reply-To: <CA9998CD4A020D418654FCDEF4E707DF0E3D8462@esealmw113.eemea.ericsson.se>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Received-SPF: pass (nostrum.com: 75.53.54.121 is authenticated by a trusted mechanism)
Cc: Ian Elz <ian.elz@ericsson.com>, sipcore@ietf.org
Subject: Re: [sipcore] draft-roach-sipcore-rfc3265bis-00
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: Mon, 17 Aug 2009 21:11:42 -0000

Christer Holmberg wrote:
> Has it been considered that a forking proxy would forward multiple
> SUBSCRIBE 200 responses instead?
>   

That ship sailed over a decade ago, when we published RFC 2543. We 
really can't require proxies to treat extension methods as special 
cases: proxies treating SUBSCRIBE as an arbitrary non-INVITE message 
must do the right thing.


> Also, I know that 3261 says that only one final response is forwarded
> for non-INVITE requests. I just wonder whether it means non-dialog
> initiation requests.

Because method names are one SIP's extension points, proxies don't 
inherently know which requests can form dialogs. For example, if a proxy 
forks a XYZZY request, how would it know whether to return a single 200 
response or all of them? It has know way of knowing whether XYZZY is a 
dialog-forming request.

>  Because, what does a proxy do if it receives
> additional 200 responses? I can't find any text about that in 3261.
>   


It's going to drop them. See RFC 3261, section 16.7, step 5.

> I guess the UAS could simply copy the Record-Route into the NOTIFY, as
> it does in the 200 response. That way the proxies would not need to add
> it.
>   

That would make a mess -- currently deployed proxies that are aware of 
3265 would add themselves a second time, resulting in a route set that 
passes through each proxy twice. That's really not what we want to happen.


>>
>> As I mention above: In a compliant system, they can't differ. 
>> However, as we all know, systems don't always do the right 
>> thing. SBCs can tinker with Route/Record-Route in ways that 
>> create asymmetric route sets, even for normal INVITE/200/ACK 
>> transactions.
>>     
>
> I am not really sure what is meant by "compliant system". A system may
> be RFC3261 compliant, which means they may add Record-Route the
> SUBSCRIBE request, but they will not Record-Route the NOTIFY.
>   

See RFC 3265, section 3.1.5.


>> That's certainly the intention of 4.3. It's a bit tortured to 
>> imagine that a proxy might be on the path of the NOTIFY 
>> without having Record-Routing the SUBSCRIBE. Nonetheless, I'm 
>> okay with prohibiting Record-Routing a NOTIFY unless you've 
>> also Record-Routed the associated SUBSCRIBE; I'll add:
>>
>>   Proxies that did not add a Record-Route header field to the
>>   initial SUBSCRIBE request MUST NOT add a Record-Route header
>>   field to any of the associated NOTIFY requests.
>>     
>
> Don't you need a Proxy-Require option tag for that? 
>
> Again, a 3261 compliant proxy may Record-Route the SUBSCRIBE, but that
> doesn't mean it will Record-Route the NOTIFY. It may simply be
> configured to Record-Route all dialog initiation requests.
>   

For a proxy to have the first clue that SUBSCRIBE is a dialog initiation 
request, it has to be aware of the semantics of SUBSCRIBE. Otherwise, it 
doesn't know SUBSCRIBE from XYZZY.

And if a proxy is blindly Record-Routing unknown methods, it will 
Record-Route the NOTIFY also. Either way, everything works.

I've worked with enough implementors to know that there's never enough 
accounting for crazy, but the failure you're describing would require a 
certain amount of malice: enough understanding to know what SUBSCRIBE 
means, but a bewildering level of willful ignorance to then pretend not 
to understand NOTIFY.

/a