Re: [core] Ben Campbell's Discuss on draft-ietf-core-coap-tcp-tls-08: (with DISCUSS and COMMENT)

Ben Campbell <ben@nostrum.com> Wed, 10 May 2017 16:56 UTC

Return-Path: <ben@nostrum.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 241F912E039; Wed, 10 May 2017 09:56:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.88
X-Spam-Level:
X-Spam-Status: No, score=-1.88 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001, T_SPF_HELO_PERMERROR=0.01, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 sfm5ObFBzYfb; Wed, 10 May 2017 09:56:27 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6E9CB1242F5; Wed, 10 May 2017 09:56:27 -0700 (PDT)
Received: from [10.0.1.63] (cpe-66-25-7-22.tx.res.rr.com [66.25.7.22]) (authenticated bits=0) by nostrum.com (8.15.2/8.15.2) with ESMTPSA id v4AGuQv3095043 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Wed, 10 May 2017 11:56:26 -0500 (CDT) (envelope-from ben@nostrum.com)
X-Authentication-Warning: raven.nostrum.com: Host cpe-66-25-7-22.tx.res.rr.com [66.25.7.22] claimed to be [10.0.1.63]
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
From: Ben Campbell <ben@nostrum.com>
In-Reply-To: <82019A15-D975-4D54-848E-1CB3D4C2E95C@tzi.org>
Date: Wed, 10 May 2017 11:56:25 -0500
Cc: The IESG <iesg@ietf.org>, core-chairs@ietf.org, draft-ietf-core-coap-tcp-tls@ietf.org, core@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <9ED35E88-0B02-4B20-B7CE-A7EE07669F35@nostrum.com>
References: <149438322150.24264.16123907495920056718.idtracker@ietfa.amsl.com> <82019A15-D975-4D54-848E-1CB3D4C2E95C@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/3IUVDBMkGV1JyS3uBMBP8t9OEII>
Subject: Re: [core] Ben Campbell's Discuss on draft-ietf-core-coap-tcp-tls-08: (with DISCUSS and COMMENT)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 10 May 2017 16:56:29 -0000

> On May 10, 2017, at 3:20 AM, Carsten Bormann <cabo@tzi.org> wrote:
> 
> Hi Ben,
> 
> thank your for your review.
> 
> Before I start working on it in more detail, let me pick this one DISCUSS out because I think it is the most momentous issue that needs to be discussed:
> 
>> On May 10, 2017, at 04:27, Ben Campbell <ben@nostrum.com> wrote:
>> 
>> 2) It seems problematic to encode the transport choice in the URI
>> scheme.
>> Section 7 says "They are hosted
>> in distinct namespaces because each URI scheme implies a distinct
>> origin
>> server." IIUC, this means any given resource can only be reached over a
>> specific transport. That seems to break the idea of cross-transport
>> proxies
>> as discussed in section 7.
>> 
>> It also does not seem to fit with a primary motivation for this draft.
>> That
>> is, one might want to use TCP because of local NAT/FW issues. But if
>> there is
>> a resource with a "coap" scheme, I cannot switch to TCP when I'm behind
>> a
>> problematic middlebox, and have an expectation of reaching the same
>> resource.
> 
> 
> I would rephrase the issue as:
> URIs don’t have a good place to put in transport hints.
> 
> (The definition of a transport hint in a URI would be information that lets me set up specific transports without creating a separate resource each time the values of that transport hint differ.)
> 
> Note that the main use case for the document at hand is one where the client may not be able to reach the server on the “main” transport (CoAP over UDP), so negotiation/upgrade(*) mechanisms are not solving the problem.

That’s exactly what I mean by “a primary motivation”. As defined, the name of a resource declares the transport. So if I have a “coap” scheme resource that I cannot reach over UDP, I cannot simply switch to TCP and reach that same resource, even if the server supports both UDP and TCP. I suppose the server could treat the two resources as aliases, but the client cannot know that without some out-of-band agreement. (but see next comment)

So is it expected that people have to decide in advance which transport will be use for any given resource? The middlebox-traversal use case would seem to favor approaches where the client gets to decide what transport to use on the fly.

> 
> The solutions that people are talking about in our domain are about carrying transport alternatives around together.
> E.g., see draft-silverajan-core-coap-protocol-negotiation-05.txt, which provides a way to find out about links from a set of links (the resource directory) while specifying a transport type. [It may be instructive to go through previous versions of this document just to see what we also have tried to do.]

So from an admittedly very quick scan, am I correct to assume that the directory described in that draft could be as “out-of-band” mechanism to declare resource aliases as I mentioned above? So why not use that sort of mechanism to advertise the available transports for an authority, and at least allow the transport selection to be completely decoupled from the scheme?

If people really want to bind transport selection to the resource name, then some such mechanism seems to be a requirement to make the solution in this draft fit for purpose. But the transport-negotiation draft is not yet adopted by CORE. Does it make sense to publish this before that is well on it’s way to ready?


> 
> What we have right now in draft-ietf-core-coap-tcp-tls is what we think is the least ugly way to solve the problem.
> The WG is well aware about its problems.
> We’d rather have a mechanism like transport hints, but we did not find a solution that would not need to update the web architecture.

At least some other protocols do this with DNS NAPTR records. I realize that may not be realistic for constrained devices (and I gather the protocol-negotiation draft attacks that same problem.) SIP, for example, can specify the transport with a URI parameter, which allows a URI to either specify a transport or to be transport-independent (by leaving off the parameter.)

Thanks!

Ben.