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

Christer Holmberg <> Tue, 14 June 2011 05:38 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1DEFE11E82BC for <>; Mon, 13 Jun 2011 22:38:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.54
X-Spam-Status: No, score=-6.54 tagged_above=-999 required=5 tests=[AWL=0.059, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id jrFhfA80j0QS for <>; Mon, 13 Jun 2011 22:38:19 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id CDF9911E82B9 for <>; Mon, 13 Jun 2011 22:38:18 -0700 (PDT)
X-AuditID: c1b4fb39-b7bfdae000005125-20-4df6f3c963e3
Received: from (Unknown_Domain []) by (Symantec Mail Security) with SMTP id 98.12.20773.9C3F6FD4; Tue, 14 Jun 2011 07:38:17 +0200 (CEST)
Received: from ([]) by ([]) with mapi; Tue, 14 Jun 2011 07:38:16 +0200
From: Christer Holmberg <>
To: Robert Sparks <>, "SIPCORE (Session Initiation Protocol Core) WG" <>
Date: Tue, 14 Jun 2011 07:38:15 +0200
Thread-Topic: [sipcore] An alternate to the requirements section in proxy-feature-02
Thread-Index: AcwqFqYTQEAn1z7mQXegva76OlfNlAAOpxLQ
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: AAAAAA==
Subject: Re: [sipcore] An alternate to the requirements section in proxy-feature-02
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: SIP Core Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 14 Jun 2011 05:38:20 -0000

Hi Robert, 

>(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 text. 
>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.

Partly correct. The requirement talks about only to one DIRECTION. That includes both one of the endpoints, but also possible proxies in between.

>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
>   endpoints?

Currently there is no such requirement.

But, having said that, it's probably something we need to add text about in the draft.

>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?

Currently there is no explicit requirement to be able to hide the support. 

But, when we start to discuss how to implement the direction requirement, that could of course be one possible solution.

>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. 

The intention is that whatever applies to a UA also applies to a proxy.

See more on this in my reply to 6).

>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)

There is no explicit requirement for that.

But, proxies can do routing decission etc based on whatever policies and message information in my opinion.

>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. 

Again, the intention is that whatever applies to a UA also applies to a proxy.

But, having said that, I am not sure it is clear even for UAs. For example, if a UA indicates support of feature x in the initial INVITE, but does not indicate the support in a re-INVITE/UPDATE/whatever-target-update-request, does it mean that the UA does not support the feature anymore?

So, maybe each feature definition (no matter if the feature tag is used by, or defined for, a UA or a proxy) should explictily specify the scope, when used as part of a dialog forming transaction and/or a registration transaction.

> 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")

Correct. For that you would need to define an option-tag, to be used with Require/Proxy-Require.

> 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?

When reading your text, I am not sure we need additional requirements. However, it does seem that we DO need more clarfication text on certain topics. The intention is not to change the "meaning" of feature tags etc, simply allow them to also be included by proxies (in addition to UAs), and the only proxy specific issue (which I have identified so far) is that we need to deal with the direction issue - for which we do have a requirement.

>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?

The intention is to only indicate SUPPORT of a feature. 

It MUST NOT be assumed that other entities understand the feature tag (again, for that you would need an option-tag in a Require/Proxy-Require header field). If entities don't understand the feature that they should just go on as if the feature tag wasn't there.

Again, that is the same as when a UA indicates support of a feature.

>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? 

I will take a closer look at the examples and 3GPP use-cases. I have tried to make it very clear in 3GPP that the mechanism only provides a way to say:

"I CAN do this"

...but not:

"I AM doing this"

Thank You very much for the excellent and productive feedback! :)