[sipcore] An alternate to the requirements section in proxy-feature-02

Robert Sparks <rjsparks@nostrum.com> Mon, 13 June 2011 22:09 UTC

Return-Path: <rjsparks@nostrum.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id 339C79E800D for <sipcore@ietfa.amsl.com>; Mon, 13 Jun 2011 15:09:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.6
X-Spam-Status: No, score=-102.6 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, SPF_PASS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id d6yahBtFNsMJ for <sipcore@ietfa.amsl.com>; Mon, 13 Jun 2011 15:09:56 -0700 (PDT)
Received: from nostrum.com (nostrum-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:267::2]) by ietfa.amsl.com (Postfix) with ESMTP id 2B5B49E800E for <sipcore@ietf.org>; Mon, 13 Jun 2011 15:09:55 -0700 (PDT)
Received: from dn3-177.estacado.net (vicuna-alt.estacado.net []) (authenticated bits=0) by nostrum.com (8.14.3/8.14.3) with ESMTP id p5DM9qgs054067 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for <sipcore@ietf.org>; Mon, 13 Jun 2011 17:09:52 -0500 (CDT) (envelope-from rjsparks@nostrum.com)
From: Robert Sparks <rjsparks@nostrum.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Mon, 13 Jun 2011 17:09:52 -0500
Message-Id: <E735B468-793B-4C07-B9E0-A9E0F93A9D51@nostrum.com>
To: "SIPCORE (Session Initiation Protocol Core) WG" <sipcore@ietf.org>
Mime-Version: 1.0 (Apple Message framework v1084)
X-Mailer: Apple Mail (2.1084)
Received-SPF: pass (nostrum.com: is authenticated by a trusted mechanism)
Subject: [sipcore] An alternate to the requirements section in proxy-feature-02
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.12
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: Mon, 13 Jun 2011 22:09:57 -0000

(As an individual contributor)

I appreciate version -02 of this document adding a requirements section. 

I believe it will be important to get a common understanding of what's needed
in order to be able to understand the impact of the proposed mechanism and whatever
it may evolve into.

So far, I'm still having a hard time teasing out the requirements from the

Here's a stab at a mechanism free statement of the requirements that I can infer 
from the proposed mechanism, along with several questions. Please help clarify 
the requirements where my inferences are wrong. Please also point out where 
there is a requirement these don't cover.

1) There is a requirement for a proxy to be able to 
   indicate support for a capability to other proxies 
   in the path of a dialog forming transaction and to
   the two endpoints of that transaction.

2) There is a requirement for a proxy to be able to
   indicate support for a capability to other proxies
   in the path of a REGISTER transaction, and to both
   the registering endpoint and the registrar.

3) There is a requirement for a proxy to be able to
   indicate that the support for the capability applies
   only to one of the endpoints establishing a dialog.

Question 1: Is there a requirement for a proxy to be able
   to indicate that support for a capability applies
   only to the other proxies between it and one of the

Question 2: Is there a requirement for a proxy between
   Alice and Bob to hide that it's supporting a capability
   for Alice from Bob, or is the requirement only that
   Bob be able to tell this statement was not for him?

4) There is a requirement that a proxy indicating support
   for a capability in a dialog forming transaction will
   support that capability for the duration of all dialogs
   the transaction may create. 

5) There is a requirement that other proxies be able to
   use the indication from 1) or 2) to affect routing
   decisions and other proxy handling of the request
   (such as choosing which capabilities these other proxies
    may choose to indicate as part of this transaction)

6) There is no requirement that the capabilities supported
   at any proxies involved in a dialog be able to change
   in the course of the dialog. 

7) There is no requirement to negotiate support for a 
   capability. (For example, there is no requirement for there
   to be a way for an initiating endpoint, or a proxy along the path 
   to indicate "make this request fail unless something along the path 
   supports X")

Question 3: It appears that the capability indication is
  only used when processing the initial request, and appears
  in subsequent in-dialog signalling in the current proposed
  mechanism because that's what 3261 requires. If the mechanism
  evolved such that the indication appeared only in the dialog
  establishing transaction, and not in any subsequent in-dialog
  messages, what would break?


Again, I'm sure I've missed some important requirements.
What are they?

The currently proposed mechanism appears to run against the advice in RFC5897,
particularly Do What I Say vs Do What I Mean. It appears to provide a
declarative service identifier (such as g.3gpp.srvcc-alerting), and it's not
clear yet what an endpoint or intermediary that doesn't know what the
identifier means should or shouldn't do. Is it the intent to require any
element that doesn't recognize a value to behave exactly as it would if there
were no value present at all? If so, what keeps us from having the same
service/feature/capability defined in separate namespaces resulting in
non-interoperable islands?

It's also easy to infer from the examples (like 1.3) that 
there is a requirement for a proxy to say much more than "I support 
capability X". In at least one case, it appears to be saying 
"I am doing X - and other X-capable things MUST NOT do X". It would
be good to avoid the confusion associated with when the presence of
an option tag in Supported/Required means that the extentions associated
with the tag is actually being used. Would it be acceptable to say
that the presence of a proxy capability indication says nothing
about whether the capability is being used?