[sipcore] Required normative revisions to support 199 response
Paul Kyzivat <pkyzivat@cisco.com> Tue, 07 December 2010 01:43 UTC
Return-Path: <pkyzivat@cisco.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 6DA733A68DA for <sipcore@core3.amsl.com>; Mon, 6 Dec 2010 17:43:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.494
X-Spam-Level:
X-Spam-Status: No, score=-110.494 tagged_above=-999 required=5 tests=[AWL=0.105, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
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 X+SQCRe+nt5Z for <sipcore@core3.amsl.com>; Mon, 6 Dec 2010 17:43:15 -0800 (PST)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id 483FE3A67EF for <sipcore@ietf.org>; Mon, 6 Dec 2010 17:43:15 -0800 (PST)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAPQf/UxAZnwM/2dsb2JhbACjOHGkB5tLhUkEhF+GD4MT
X-IronPort-AV: E=Sophos;i="4.59,308,1288569600"; d="scan'208";a="189917671"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 07 Dec 2010 01:44:39 +0000
Received: from [161.44.174.115] (dhcp-161-44-174-115.cisco.com [161.44.174.115]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id oB71idXi022333 for <sipcore@ietf.org>; Tue, 7 Dec 2010 01:44:39 GMT
Message-ID: <4CFD9187.3090207@cisco.com>
Date: Mon, 06 Dec 2010 20:44:39 -0500
From: Paul Kyzivat <pkyzivat@cisco.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6
MIME-Version: 1.0
To: SIPCORE <sipcore@ietf.org>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Subject: [sipcore] Required normative revisions to support 199 response
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: Tue, 07 Dec 2010 01:43:17 -0000
In offline discussions, Robert, Cullen (and maybe others?) have questioned whether draft-ietf-sipcore-199-02.txt requires a normative change to RFC 3262 (100rel). We've gotten deep enough into this that it seemed proper to bring it back to the list for further discussion. The issue is that this draft, as currently written, requires that the 199 response be sent *un*reliably even if Require:100rel was specified by the UAC. It is (partially) mitigated by the introduction of a new '199' option tag. If Supported:199 is not present in the request, the 199 response can't be sent. So the draft makes the argument that there is no backward compatibility issue, making this an extension rather than a change. BUT, there is still a potential backward compatibility issue for other proxies that don't know about the 199 option. A dialog-stateful proxy upstream of the 199-sender might observe the unreliable 199 and not it to be inconsistent with the Require:100rel. In addition, I realized that this draft also extends RFC 3261, in that it for the first time introduces a case where a *proxy* may *originate* (not just forward) a response in the context of an existing (early) dialog. According to 3261 a proxy that initiates a response is actually doing so in the role of a UAS, and so must add its own to-tag, thus creating a new dialog. So, I have proposed that the specification for what goes on when sending 199 be tweaked, in a way that is trivially different from an implementation perspective but that is conceptually significant. Namely: - There should be no exception from Require:100rel. When a UAS sends a 199, if Require:100rel is in effect it MUST send the 199 reliably. - When a *proxy* *originates*a 199, it is considered to be operating as a *proxy*, not as a UAS. Hence it is not bound by Require:100rel. Rather it is bound by Proxy-Require:100rel. The proposal is to make a revision to 3262 that says 100rel MUST NOT be used in Proxy-Require. And as now the proxy MUST NOT send the 199 reliably. That ensures there won't be a PRACK that would then possibly be forwarded on to the UAS that doesn't expect it. But the proxy is *originating* the 199 response in the context of the existing (early) dialog. It must make a response that is valid in that context. (E.g. the to-tag.) This does not eliminate the impact on upstream proxies. They will still see an unreliable provisional response that might be surprising. So this still requires a revision to 3262. I really hated the idea of making a special case for the single 199 response code. So my proposal is: - in any case where a proxy is permitted to originate a provisional response within an existing dialog (early or not) it must do so unreliably. (For now the only case this applies to is 199.) - the 100rel option MUST NOT be sent (ever) in Proxy-Require. The effect of this is that UACs and proxies may see unreliable provisionals even when Require:100rel is in effect. This is a (hopefully insignificant) backward incompatibility from 3262. *** I'm requesting feedback on the above approach. *** Are you happy with it? *** Do you have a better idea? While writing this I thought of another issue that needs discussion. When the proxy is constructing the 199, to be in the context of the dialog, how should it be constructed? The following are questionable: - Contact address - Record-Route - History-Info - (did I forget any that matter?) The straightforward answer is that these should all be copied from the final response that triggered the sending of the 199. An alternative might be to copy from the response that the proxy considers to have established the early dialog. These *might* not be the same. Alternatively, perhaps the proxy should generate the 199 response without the Contact since the contact does not reflect the sender of the response. But that would be contrary to some discussions that occurred a couple of years ago (aug 2008) on the sip-implementors list, which concluded (IMO) that 3261 implies Contact is required in all provisional responses. *** Feedback on this issue also requested. Disclaimer - the following is my take on things. While this has been discussed with Christer and Robert, they have not seen this message. Thanks, Paul
- [sipcore] Required normative revisions to support… Paul Kyzivat
- Re: [sipcore] Required normative revisions to sup… Christer Holmberg
- Re: [sipcore] Required normative revisions to sup… Paul Kyzivat
- Re: [sipcore] Required normative revisions to sup… Christer Holmberg
- Re: [sipcore] Required normative revisions to sup… DRAGE, Keith (Keith)
- Re: [sipcore] Required normative revisions to sup… Christer Holmberg