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

Carsten Bormann <cabo@tzi.org> Wed, 10 May 2017 18:54 UTC

Return-Path: <cabo@tzi.org>
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 EAC95129548; Wed, 10 May 2017 11:54:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, 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 R-cHD8dQBlMV; Wed, 10 May 2017 11:54:18 -0700 (PDT)
Received: from mailhost.informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9::12]) (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 EB073126C23; Wed, 10 May 2017 11:54:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from submithost.informatik.uni-bremen.de (submithost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9::b]) by mailhost.informatik.uni-bremen.de (8.14.5/8.14.5) with ESMTP id v4AIsE1l014738; Wed, 10 May 2017 20:54:14 +0200 (CEST)
Received: from client-0223.vpn.uni-bremen.de (client-0223.vpn.uni-bremen.de [134.102.107.223]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by submithost.informatik.uni-bremen.de (Postfix) with ESMTPSA id 3wNQPy1D18zDJHs; Wed, 10 May 2017 20:54:14 +0200 (CEST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <9ED35E88-0B02-4B20-B7CE-A7EE07669F35@nostrum.com>
Date: Wed, 10 May 2017 20:54:13 +0200
Cc: The IESG <iesg@ietf.org>, core-chairs@ietf.org, draft-ietf-core-coap-tcp-tls@ietf.org, core@ietf.org
X-Mao-Original-Outgoing-Id: 516135252.862603-adec3b3438f58c159d9dfd2a8b5e3649
Content-Transfer-Encoding: quoted-printable
Message-Id: <8EB0F791-8432-4C27-ACD8-244C33DBA57D@tzi.org>
References: <149438322150.24264.16123907495920056718.idtracker@ietfa.amsl.com> <82019A15-D975-4D54-848E-1CB3D4C2E95C@tzi.org> <9ED35E88-0B02-4B20-B7CE-A7EE07669F35@nostrum.com>
To: Ben Campbell <ben@nostrum.com>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/DoUkYdjoqMwX0erZw0GzJ5pL1ho>
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 18:54:20 -0000

> On May 10, 2017, at 18:56, Ben Campbell <ben@nostrum.com> wrote:
> 
>> 
>> 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 way this is set up right now: Yes, the link tells you which transport to use.

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

Well, you go from a directory search to a set of links, not as a way to go from one link to another.
Other sources of links (hypermedia documents) would also need to provide alternatives whenever they are needed.

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

We weren’t sure whether we wanted to support the trend “to use this URI, you need this ancillary information”.
It would be nice if we could keep the URL property for our URIs.

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

Generally, we already know how to ship around sets of links.  What the transport-negotiation draft addresses is some additional functionality facilitating the bundling of these links in directories.  So coap-tcp-tls will be useful today for OMA and OCF, but we’d like to have the bundling available for the future.

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

Adding a level of indirection is not that useful in the constrained space — URIs are better if they are ready to use (many CoAP applications do not even use DNS).  Shipping around URIs that need additional lookup to use them is not so useful.  Having a multiple-transport URI that is compatible with (caches the same as) any of the single-transport ones would be great.  I’m not sure SIP transport parameters to that.

Grüße, Carsten