Re: [sipcore] Last Call: <draft-ietf-sipcore-status-unwanted-04.txt> (A SIP Response Code for Unwanted Calls) to Proposed Standard

Pete Resnick <presnick@qti.qualcomm.com> Tue, 21 March 2017 15:50 UTC

Return-Path: <presnick@qti.qualcomm.com>
X-Original-To: sipcore@ietfa.amsl.com
Delivered-To: sipcore@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 57054129AB6; Tue, 21 Mar 2017 08:50:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.02
X-Spam-Level:
X-Spam-Status: No, score=-7.02 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=qti.qualcomm.com
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 c-4Gaw8-XuXm; Tue, 21 Mar 2017 08:50:28 -0700 (PDT)
Received: from wolverine02.qualcomm.com (wolverine02.qualcomm.com [199.106.114.251]) (using TLSv1.2 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1CBE41294AF; Tue, 21 Mar 2017 08:50:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=qti.qualcomm.com; i=@qti.qualcomm.com; q=dns/txt; s=qcdkim; t=1490111421; x=1521647421; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=tsRl5NYOvjEn2/FzpJOd34ru5uPfLszQrij2J1p4QPM=; b=qOd2jimYokLF129ETcV2LmXYo26aF856VzF85tkFqEwDYrNIC92r/LaM Ss3ocgcWK2WzzPU8i4UQtpuJKy4I29XZIqH7NkjyDw9DMVu/iHoBi4urM JV6Y+KzDHP9vFuMxH/Y9LDNA0wyk7FTcymu+Rylc1JcCtrtViqUb/rA0v g=;
X-IronPort-AV: E=Sophos;i="5.36,198,1486454400"; d="scan'208,217";a="367202202"
Received: from unknown (HELO ironmsg02-L.qualcomm.com) ([10.53.140.109]) by wolverine02.qualcomm.com with ESMTP; 21 Mar 2017 08:50:19 -0700
X-IronPort-AV: E=McAfee;i="5800,7501,8474"; a="889593651"
X-MGA-submission: MDEoF+InG7h0SkbWffbqB85amB+WZZbWsfszXIDMlZfrfU7PoRwzShRNMplvtNZd/BlbDfjJ9dZrLzxxM+IyaggVwy+JGZHUZkK6NW+IcNfeCZuAJDzIW7KP++KSDCZxgJdu+BdhLzLfsr9VI3ZNBgXp
Received: from nasanexm01f.na.qualcomm.com ([10.85.0.32]) by ironmsg02-L.qualcomm.com with ESMTP/TLS/RC4-SHA; 21 Mar 2017 08:50:18 -0700
Received: from [10.64.124.243] (10.80.80.8) by NASANEXM01F.na.qualcomm.com (10.85.0.32) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Tue, 21 Mar 2017 08:49:56 -0700
From: Pete Resnick <presnick@qti.qualcomm.com>
To: ietf@ietf.org
CC: draft-ietf-sipcore-status-unwanted@ietf.org, ben@nostrum.com, sipcore@ietf.org, Adam Roach <adam@nostrum.com>, sipcore-chairs@ietf.org
Date: Tue, 21 Mar 2017 10:49:54 -0500
Message-ID: <E74825F1-B661-4A8C-9B96-CC970AEA0E56@qti.qualcomm.com>
In-Reply-To: <148893258669.17675.7013326933036466908.idtracker@ietfa.amsl.com>
References: <148893258669.17675.7013326933036466908.idtracker@ietfa.amsl.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=_MailMate_248277D9-D4E8-447F-B38B-F126A560CB0A_="
X-Mailer: MailMate (1.9.6r5347)
X-Originating-IP: [10.80.80.8]
X-ClientProxiedBy: NASANEXM01C.na.qualcomm.com (10.85.0.83) To NASANEXM01F.na.qualcomm.com (10.85.0.32)
Archived-At: <https://mailarchive.ietf.org/arch/msg/sipcore/FwO7vSMl6uJQ_1a5tmW2ZYxaZsM>
Subject: Re: [sipcore] Last Call: <draft-ietf-sipcore-status-unwanted-04.txt> (A SIP Response Code for Unwanted Calls) to Proposed Standard
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.22
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: <https://mailarchive.ietf.org/arch/browse/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, 21 Mar 2017 15:50:32 -0000

I'm sorry to say that I do not think this mechanism is well thought out, 
I think it actually causes active harm to interoperability, and I think 
this document should be abandoned for a better (and simpler) solution to 
the problem, which I describe below.

I will note that I have not been following the discussion of this 
document except for it's introduction at the last plenary meeting, but I 
(and others) did give comments at that time that as far as I can tell 
were not taken into account. I did review the thread on the sipcore list 
regarding the difference between the new code and the 603 code. That 
thread does not address my concerns, and in fact in some way reinforces 
it. I have not reviewed other discussion on the list.

The purported purpose of this 666 mechanism is to allow additional 
semantics to be expressed beyond a simple 603 (Decline). That is a fine 
desire. However, instead of adding decent semantics to declining a call, 
666 adds only one additional bit of information to 603, and that one bit 
ends up causing more semantic ambiguity: The user has still declined the 
call (just as 603 would have), and has added that the call is *somehow* 
unwanted (so a provider *could* act to prevent such calls in the 
future), but the user has not indicated the *reason* they indicate the 
call is unwanted. Is it because they want to add this calling party to a 
call block list? Is it that they want to reject all calls of this 
particular class (cf. draft-ietf-sipcore-callinfo-spam)? Is there some 
other handling that would be appropriate given the particular reason the 
user has rejected the call? The best a provider is going to be able to 
do is guess. The document admits the ambiguity in the semantics, saying 
that the provider will have to use heuristics to guess at what the user 
really wants. We should not be introducing a new mechanism that only 
adds to the semantic ambiguity and might end up with results that the 
user might specifically not want in a particular case. What I think was 
really intended all along was to have un-upgraded implementations treat 
these rejections just like 603, but add some semantics that upgraded 
implementations can use to determine what ought to be done in the 
future.

The right solution, IMO, is to simply add a header to the 603 response 
that indicates what the user means by their declining, and gives a real 
indication of how handle such calls in the future. Call it 
"Decline-Type" for argument sake. Just like the Retry-After header adds 
semantics to indicate when the caller might want to try an identical 
call again, this new header will indicate that the user never wants a 
call from this particular caller again (e.g., "Decline-Type: 
block-caller", which the service provider can definitively use to add 
the caller to a block list), or that this caller and every caller with a 
similar type should be rejected (e.g. "Decline-Type: block-caller-type; 
type=political", which the provider could definitively use to reject 
similar calls in the future), etc.. With this, there's no need for a 
bunch of MAYs such that appear in section 4, you get an extensible 
mechanism that could be used by any 603 response. You also get the added 
bonus that un-upgraded entities will continue to treat this just like 
every other 603 without a Retry-After header, which is exactly what you 
want.

To be clear, the three things I am concerned about are:

1. The 666 mechanism leaves the decision of what is meant by "unwanted" 
to the provider, which will inevitably cause data loss through the use 
of heuristics. Adding a header to the 603 response is an extensible 
mechanism that could capture the single semantic bit of 666 *and any 
future semantics that one wishes to add*, without requiring the provider 
to guess. The provider gets definitive information that it can act on.

2. The 666 mechanism limits the implementation of the mechanism to a 
1-button choice and requires additional standardization work to use a 
different UI. Clearly 666 was designed around something akin to a "SPAM" 
button in the UI. But what if I want a field in my address book that 
says, "Permanently block this particular caller" (say, my ex-boyfriend 
or my annoying neighbor)? I don't want to indicate that these are spam 
calls because I don't want my provider applying heuristics to them. I 
want to send back a 603 with a header that says, "Block these whenever 
you see them, but only for me." I can think of all sorts of 
other-than-one-button UIs that someone might want to implement. 666 is 
tied to a particular UI. 603 with a header is extensible.

3. The 666 mechanism will be treated as a 600 "Busy" error by 
un-upgraded callers and/or providers. That might imply to some 
implementations that they should try to re-dial (e.g., the provider 
using the auto-redial feature) or to engage in other poor behavior. 603 
with no Retry-After header already has a semantic of "The call was 
rejected and I'm not telling you when a good time to call back is", so 
there is some hope that an un-upgraded caller is more likely to do the 
right thing.

Given the admittedly restricted review of the WG archive that I did, I 
didn't see anything to indicate that the WG fully considered the 
implications of 666 that I have outlined above. This is not simply a 
design preference; I believe the design of the proposed mechanism 
doesn't accomplish the goal and actually does some harm. Overall, 666 
damages interoperability by introducing an ambiguous piece of 
information, which will lead to potential data loss (i.e., improperly 
applied heuristics), and will require adding a header in the future in 
order to accomplish the real goal. Adding a header is a simple 
mechanism, accomplishes the desired task, has extensibility, and doesn't 
cause the problems that 666 does. Please reconsider this, drop this 
document, and replace it by adding real semantics to the 603 response 
with an extensible header. It's a quick document to write (a bunch of 
the text in the current document can be reused) and it will not suffer 
the problems that 666 introduces. Otherwise, we're going to be right 
back where were when we started, needing to add a mechanism so that the 
user can really indicate what they mean. This is the wrong solution.

pr
-- 
Pete Resnick <http://www.qualcomm.com/~presnick/>
Qualcomm Technologies, Inc. - +1 (858)651-4478

On 7 Mar 2017, at 18:23, The IESG wrote:

> The IESG has received a request from the Session Initiation Protocol 
> Core
> WG (sipcore) to consider the following document:
> - 'A SIP Response Code for Unwanted Calls'
>   <draft-ietf-sipcore-status-unwanted-04.txt> as Proposed Standard
>
> The IESG plans to make a decision in the next few weeks, and solicits
> final comments on this action. Please send substantive comments to the
> ietf@ietf.org mailing lists by 2017-03-21. Exceptionally, comments may 
> be
> sent to iesg@ietf.org instead. In either case, please retain the
> beginning of the Subject line to allow automated sorting.
>
> Abstract
>
>
>    This document defines the 666 (Unwanted) SIP response code, 
> allowing
>    called parties to indicate that the call or message was unwanted.
>    SIP entities may use this information to adjust how future calls 
> from
>    this calling party are handled for the called party or more 
> broadly.
>
>
>
>
> The file can be obtained via
> https://datatracker.ietf.org/doc/draft-ietf-sipcore-status-unwanted/
>
> IESG discussion can be tracked via
> https://datatracker.ietf.org/doc/draft-ietf-sipcore-status-unwanted/ballot/
>
>
> No IPR declarations have been submitted directly on this I-D.