Re: [core] sleepy to sleepy communication I-Ds

Thomas Fossati <tho@koanlogic.com> Mon, 05 March 2012 05:29 UTC

Return-Path: <tho@koanlogic.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 0707D21F8672 for <core@ietfa.amsl.com>; Sun, 4 Mar 2012 21:29:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.03
X-Spam-Level: *
X-Spam-Status: No, score=1.03 tagged_above=-999 required=5 tests=[AWL=0.474, BAYES_05=-1.11, SARE_RECV_IP_069060096=1.666]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UzhtPKKLDKcL for <core@ietfa.amsl.com>; Sun, 4 Mar 2012 21:29:13 -0800 (PST)
Received: from relay3.serverpronto.com (srv1022-mia.serverpronto.com [38.117.1.242]) by ietfa.amsl.com (Postfix) with ESMTP id 4109F21F8667 for <core@ietf.org>; Sun, 4 Mar 2012 21:29:12 -0800 (PST)
Received: from gonzo.koanlogic.com (166-118-60-69.serverpronto.com [69.60.118.166] (may be forged)) by relay3.serverpronto.com (8.13.8/8.13.8) with ESMTP id q255TAWV005681; Mon, 5 Mar 2012 00:29:10 -0500
Received: from host196-51-dynamic.47-79-r.retail.telecomitalia.it ([79.47.51.196]:60577 helo=t.homenet.telecomitalia.it) by gonzo.koanlogic.com with esmtpsa (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.50) id 1S4QTn-0004tJ-2t; Mon, 05 Mar 2012 00:29:10 -0500
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: Thomas Fossati <tho@koanlogic.com>
In-Reply-To: <4F53E746.7050401@piuha.net>
Date: Mon, 05 Mar 2012 06:28:37 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <9B51E46C-D03D-4911-8D00-65B56DE48F63@koanlogic.com>
References: <9032C193-A015-4F41-B441-4D1D47594FC9@koanlogic.com> <4F53E746.7050401@piuha.net>
To: Jari Arkko <jari.arkko@piuha.net>
X-Mailer: Apple Mail (2.1084)
X-SA-Exim-Connect-IP: 79.47.51.196
X-SA-Exim-Mail-From: tho@koanlogic.com
X-Spam-DCC: :
X-Spam-Pyzor: Reported 0 times.
X-SA-Exim-Version: 4.2 (built Thu, 03 Mar 2005 10:44:12 +0100)
X-SA-Exim-Scanned: Yes (on gonzo.koanlogic.com)
Cc: core WG <core@ietf.org>
Subject: Re: [core] sleepy to sleepy communication I-Ds
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.12
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: <http://www.ietf.org/mail-archive/web/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: Mon, 05 Mar 2012 05:29:14 -0000

Hi Jari,

On Mar 4, 2012, at 11:05 PM, Jari Arkko wrote:
> I liked the resource model in draft-vial better, because it seems so straightforward from a REST point of view. POST to get an ID from the proxy, PUT to update. In particular, it is easy for me to understand how the URIs get constructed and where traffic is routed. A random client somewhere else on the Internet knows how to go to mirror.example.net/17/temp. I don't necessarily understand how the same thing happens in draft-giacomin, can you expand on that?

you mean using the Publish option ?  If so, the random client uses the same URI that is associated to the sleepy resource (whose existence is pretty safe to be assumed in a REST environment) and asks the proxy acting as the delegated origin to serve it via Proxy-URI.  So, communication is pretty straightforward; discovery could be more tricky because I fear it necessarily goes through an RD -- i.e. discovery via /.well-known/core may not work (I have expanded a bit on this in the following.)

> In conclusion it seems that we have a architectural choice ahead of us. We could have sleepy nodes delegate their web existence to other nodes (like draft-vial does), enabling both other devices in the same network and devices elsewhere in the Internet to interact with mostly the other node. Or we could build support to COAP and proxies for mediation between sleeping nodes (like draft-giacomin and draft-fossati does). At the high level, the effects are similar but there are significant differences in details. I confess that I like the former model better, because it separates the support for sleepy nodes from whatever is needed by nodes interacting with them. But we probably don't understand the design space well enough yet to make a real decision. At least I certainly don't.

And we neither :-)

We are just trying to explore the problem space by using a bunch of different strategies.  We play with one rule (use the proxy as a mediator), and one constraint (stay in CoAP).

I think that the second is especially important, because it allows us to see how much we can achieve using just the protocol semantics (and its self-extension facility, options).

That's where we can hit interesting flaws and strengths of CoAP.

E.g., differently from HTTP, we have an explicit Proxy-URI object (which BTW is a wonderful thing): let's try to see how much can be said with it, for example doing origin delegation without having to create multiple different 'same resource' identifiers through mirroring.

Another important thing we are going to hit this way is how discovery based on /.well-known/core is meant to go through proxies.  AFAIK both core and link-format I-Ds are rather succinct on this matter, and even if it seems reasonable to assume that the /.well-known/core resource is both query-able through, and cacheable by, a proxy, perhaps the facts are not very much so.  We seem too much often to assume that the "well-known" interface relies on the resource authority being defined by the source address of the UDP packet carrying the response.  If so, querying the well-known interface (especially multicast) through a Proxy-URI has little hope to be fully functional.  We are sort of abusing an implicit L3 locator as the identifier of the resource authority, which makes "well-known" discovery generally incompatible with proxy mediated communication, unless each target URI in a link is given as a URI and not as a relative-ref (a thing that would be nice to discuss somewhere in the spec, perhaps the DNA I-D by Peter, Kerry and Anders is the right place ?)


To cut a long story short, I don't really know if we are better off establishing a new component like the MP proposed by Matthieu, or extend the base spec with one or more options that give the proxy new ad hoc capabilities.  The important IMHO is to keep on pushing our two (complementary) approaches as much as possible until, as you've said, we reach a better understanding of the matter that can inform a wise choice.

Thomas.

PS: It may also turn out that REQ3 of draft-shelby-core-coap-req is not an application layer issue! ;-)