Re: [sipcore] draft-sparks-sipcore-refer-explicit-subscription-02: comments

Robert Sparks <rjsparks@nostrum.com> Thu, 13 November 2014 19:20 UTC

Return-Path: <rjsparks@nostrum.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 A41421ACD4D for <sipcore@ietfa.amsl.com>; Thu, 13 Nov 2014 11:20:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.494
X-Spam-Level:
X-Spam-Status: No, score=-2.494 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.594] 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 5LrlM2y1xRtV for <sipcore@ietfa.amsl.com>; Thu, 13 Nov 2014 11:20:09 -0800 (PST)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 7FC711ACD18 for <sipcore@ietf.org>; Thu, 13 Nov 2014 11:13:21 -0800 (PST)
Received: from dhcp-b418.meeting.ietf.org (dhcp-b418.meeting.ietf.org [31.133.180.24]) (authenticated bits=0) by nostrum.com (8.14.9/8.14.7) with ESMTP id sADJDFoa027809 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Nov 2014 13:13:16 -0600 (CST) (envelope-from rjsparks@nostrum.com)
Message-ID: <546502CA.3020907@nostrum.com>
Date: Thu, 13 Nov 2014 09:13:14 -1000
From: Robert Sparks <rjsparks@nostrum.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
MIME-Version: 1.0
To: Brett Tate <brett@broadsoft.com>, draft-sparks-sipcore-refer-explicit-subscription@tools.ietf.org, sipcore@ietf.org
References: <af46d0591e501b9f610cf72698549bae@mail.gmail.com> <54610E3E.8030003@nostrum.com> <16c53b2416e5d5ae6e327d9b7d0399ed@mail.gmail.com> <54611ED5.2020809@nostrum.com> <c0010dcb2e7fb51e42cd408576e6d1cb@mail.gmail.com> <54612BC5.5060201@nostrum.com> <f455706b234247d0c71c5d0cf110ee0b@mail.gmail.com>
In-Reply-To: <f455706b234247d0c71c5d0cf110ee0b@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: http://mailarchive.ietf.org/arch/msg/sipcore/xVJruB0ymzind2gQ8yWv7hsGUCg
Subject: Re: [sipcore] draft-sparks-sipcore-refer-explicit-subscription-02: comments
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: Thu, 13 Nov 2014 19:20:17 -0000

I think I found our disconnect:

On 11/11/14 2:39 AM, Brett Tate wrote:
> Hi,
>
> Thanks for the response; reply is inline.
>
>>>>>> Was that text problematic for you?
>>>>> The proposal continues to mandate that the option-tag only be
>>>>> honored if received within a Require header of REFER.
>>>>>
>>>>> If REFER is received within dialog, mandating that the UAS return a
>>>>> 421 appears to do nothing but require extra messaging for those
>>>>> attempting to use it.  I recommend allowing behavior similar to RFC
>>>>> 3262 so that the option tag can be within Supported of mid-dialog
>>>>> REFER and Require of REFER's 2xx response.
>>>> We _specifically_ avoided that design. It takes us into the "I don't
>>>> know if this will create a subscription or not when I send the REFER"
>>>> territory.
>> So, there are two things I think you're trying to talk about. I'm going
>> to draw lines around them just to double-check that I'm hearing
>> you correctly.
>>
>> First is the suggestion to change how we're using Supported/Require.
>>
>> I don't understand yet why you would _want_ to send a REFER
>> with Supported: explicitsub and learn later whether the other
>> side chose to use an implicit subscription or an explicit subscription,
>> signaled in the 200 OK to the REFER.
>>
>> Essentially, you are positing "I don't care as a client, you choose
>> as the server". I don't think we have a need for that, and trying
>> to support something like it is what led norefersub to being
>> what it is.
> That is not my proposal.  If the client cares, they can use Require or not
> include option-tag within Supported.  My proposal is that if the client sent
> mid-dialog REFER with Supported indicating one or both new option-tags,
> there is no reason to mandate returning 421 if the UAS desires to use the
> feature.
>
> Why do you want to restrict the functionality so that it can only be used if
> option-tag sent within REFER's Require header?
So that you don't end up with dialog reuse, which is an essential goal 
of this extension.
If you allow the case you're suggesting, where the REFER only contains 
Supported: explicitsub
and the server didn't implement the extension, or just chose not to use 
it, then you end
up with a shared dialog via an implicit subscription.

> The working group (and RFC
> 4485) typically discourages the use of Require within requests unless truly
> needed.
Preventing the dialog reuse is the essence of "needed" here.
>    Depending upon interpretation of RFC 4485's "basic SIP services",
> the use of Require is potentially "NOT RECOMMENDED".
>
>
>> When you are in a dialog, you have the opportunity to see that the
>> extension
>> is supported before you start preparing your in-dialog refer by watching
>> Supported in the transactions earlier in the dialog. If your peer hasn't
>> been
>> playing nicely and telling you about what it supports, you can probe by
>> sending the REFER with the require and see the 421. That is not new
>> behavior
>> defined by this draft
>> - it's basic 3261.
> I agree.  However, it isn't basic SIP to restrict option-tag related
> functionality to only occur when the request uses the Require header unless
> there is truly a need for the restriction.
>
>
>> Our case here is different from 100rel. The semantic there is that the
>> server
>> gets to invoke _using_ the extension because it's the thing that knows
>> whether the extension is needed. It's been a fundamental point of this
>> proposal from the beginning that this is a decision that the client is
>> going to
>> make.
> If they want/have to make the decision, they can use the Require.  If they
> don't want/need to decide, they should be able to use Supported within
> mid-dialog REFER without requiring the subsequent 421 to occur.
>
>
>>> If referrer sends a REFER within dialog without using the Require,
>>> they know that it might create a subscription since they don't know if
>>> the option-tag is supported.  The 2xx response can indicate if it did
>>> create a subscription by supplying Require indicating what occurred.
>>>
>>> If the desire is to allow RFC 6665 compliant device to send REFER over
>>> dialog during GRUU situation, they would need to use the Require
>>> (AFAIK).
>> If I'm reading you correctly, your second comment is that the draft isn't
>> clear
>> enough that if you are requiring explicitsub (or nosub), the REFER request
>> itself isn't bound by the requirements of 3265 since its contact isn't
>> used in
>> setting up a subscription. I'll go look at the draft between meetings (I'm
>> in
>> other sessions right now), and see if I can pump that up.
> The draft might be adequate from referrer perspective (I didn't perform a
> detailed search).  However as indicated below, I haven't noticed how the
> draft enables a RFC 6665 compliant notifier from needing to supply GRUU
> Contact within call dialog (i.e. as mentioned within
> draft-sparks-sipcore-refer-clarifications-05 section 3 last paragraph).
This is confused, or I'm not following what you're looking for yet.

The point is that if you send a REFER within a dialog using these 
extensions,
you are guaranteed to not engage in sip-events as part of this dialog, 
so the
6665 requirements on what contact you provide in this dialog do not kick in.

The fact that the endpoint is otherwise an RFC6665 compliant notifier isn't
relevant to the dialog in this case (unless it might enter into _other_ 
sip-event
dialog-usages as part of this dialog.
>
>
>>> I still haven't noticed how the draft avoids RFC 6665 compliant
>>> notifier from needing to supply GRUU Contact within call dialog.
>>>
>>>
>>>> You have Supported around _before_ you get to sending the REFER
>>>> require to help you avoid discovering lack of support by trying to
>>>> require it if you care about that extra messaging.
>>> If the REFER was sent within dialog, the lack of support/use would be
>>> observed by receiving REFER's 2xx response without Require option-tag.
>>>
>>> The referrer can use Require when REFER sent outside of dialog (or
>>> within dialog if desired) if they want to avoid ambiguity during forking
>> situation.
>>> Thanks,
>>> Brett
Thanks for helping work this through,

RjS