Re: [sipcore] RFC 3261: 305 Use Proxy

worley@ariadne.com (Dale R. Worley) Tue, 10 December 2013 19:15 UTC

Return-Path: <worley@shell01.TheWorld.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 776071AE15D for <sipcore@ietfa.amsl.com>; Tue, 10 Dec 2013 11:15:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UyP5ap3y2MQz for <sipcore@ietfa.amsl.com>; Tue, 10 Dec 2013 11:15:10 -0800 (PST)
Received: from TheWorld.com (pcls5.std.com [192.74.137.145]) by ietfa.amsl.com (Postfix) with ESMTP id 58AEB1AE056 for <sipcore@ietf.org>; Tue, 10 Dec 2013 11:15:10 -0800 (PST)
Received: from shell.TheWorld.com (root@shell01.theworld.com [192.74.137.71]) by TheWorld.com (8.14.5/8.14.5) with ESMTP id rBAJF0Oe025371 for <sipcore@ietf.org>; Tue, 10 Dec 2013 14:15:02 -0500
Received: from shell01.TheWorld.com (localhost.theworld.com [127.0.0.1]) by shell.TheWorld.com (8.13.6/8.12.8) with ESMTP id rBAJCCxA571810 for <sipcore@ietf.org>; Tue, 10 Dec 2013 14:12:12 -0500 (EST)
Received: (from worley@localhost) by shell01.TheWorld.com (8.13.6/8.13.6/Submit) id rBAJCCek571905; Tue, 10 Dec 2013 14:12:12 -0500 (EST)
Date: Tue, 10 Dec 2013 14:12:12 -0500
Message-Id: <201312101912.rBAJCCek571905@shell01.TheWorld.com>
From: worley@ariadne.com
Sender: worley@ariadne.com
To: sipcore@ietf.org
In-reply-to: <576A8B541C219D4E9CEB1DF8C19C7B881A06D37E@MBX08.citservers.local> (brett@broadsoft.com)
References: <52A36EF3.3040702@alum.mit.edu> <BBF5DDFE515C3946BC18D733B20DAD2338E75169@XMB104ADS.rim.net> <576A8B541C219D4E9CEB1DF8C19C7B881A06D259@MBX08.citservers.local> <949EF20990823C4C85C18D59AA11AD8B0F43C9@FR712WXCHMBA11.zeu.alcatel-lucent.com> <576A8B541C219D4E9CEB1DF8C19C7B881A06D37E@MBX08.citservers.local>
Subject: Re: [sipcore] RFC 3261: 305 Use Proxy
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Tue, 10 Dec 2013 19:15:12 -0000

> From: Brett Tate <brett@broadsoft.com>

> In general, I agree; however based upon what was stated within
> draft-rosenberg-sip-route-construct-01 about the restriction, it
> doesn't sound like the RFC 2543/3261 authors and working group were
> just restating the obvious.
> 
> Draft-rosenberg-sip-route-construct-01 section 2.4:
> 
> "Historically, the reason for the restriction to UAs was to avoid
>  routing loops.  Consider an outbound proxy that generates a 305,
>  instead of proxying the request.  The concern was that the client
>  would then recurse on the response, populate the Contact into a new
>  request URI, and send the request to its default outbound proxy,
>  which redirects once more.  To avoid this, the RFC says that only a
>  UAS can redirect with a 305, not a proxy."

RFC 3261, 21.3.4 305 Use Proxy

   The requested resource MUST be accessed through the proxy given by
   the Contact field.  The Contact field gives the URI of the proxy.
   The recipient is expected to repeat this single request via the
   proxy.  305 (Use Proxy) responses MUST only be generated by UASs.

Personally, it seems to me that this rule must be a poor rule in
practice.

As far as I can figure out, what it means by "UAS" is "a UA capable of
terminating calls", i.e., an entity that can provide a 200 response
under suitable conditions.  As Keith notes, *any* entity that produces
a final response is a UAS for the transaction to which it provides a
final response, even if the entity's normal function isn't seen as
being a UAS.

But in practice, that sort of UAS is probably never going to be the
entity that can detect the policy situation of "the UAC should be
sending this INVITE via a different proxy".  The entity that will
detect that is a policy-enforcing intake proxy.

Dale