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

Jari Arkko <jari.arkko@piuha.net> Sun, 04 March 2012 22:06 UTC

Return-Path: <jari.arkko@piuha.net>
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 4B71621F8587 for <core@ietfa.amsl.com>; Sun, 4 Mar 2012 14:06:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.233
X-Spam-Level:
X-Spam-Status: No, score=-102.233 tagged_above=-999 required=5 tests=[AWL=-0.234, BAYES_00=-2.599, J_CHICKENPOX_72=0.6, USER_IN_WHITELIST=-100]
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 8gyxmWaxNsyH for <core@ietfa.amsl.com>; Sun, 4 Mar 2012 14:06:03 -0800 (PST)
Received: from p130.piuha.net (p130.piuha.net [IPv6:2001:14b8:400::130]) by ietfa.amsl.com (Postfix) with ESMTP id 3697021F8526 for <core@ietf.org>; Sun, 4 Mar 2012 14:06:03 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by p130.piuha.net (Postfix) with ESMTP id 29F842D35A; Mon, 5 Mar 2012 00:06:02 +0200 (EET)
X-Virus-Scanned: amavisd-new at piuha.net
Received: from p130.piuha.net ([127.0.0.1]) by localhost (p130.piuha.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fgyDh7sRFu-c; Mon, 5 Mar 2012 00:06:01 +0200 (EET)
Received: from [127.0.0.1] (p130.piuha.net [IPv6:2a00:1d50:2::130]) by p130.piuha.net (Postfix) with ESMTP id 1C5BC2CC3C; Mon, 5 Mar 2012 00:06:01 +0200 (EET)
Message-ID: <4F53E746.7050401@piuha.net>
Date: Mon, 05 Mar 2012 00:05:58 +0200
From: Jari Arkko <jari.arkko@piuha.net>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20120129 Thunderbird/10.0
MIME-Version: 1.0
To: Thomas Fossati <tho@koanlogic.com>
References: <9032C193-A015-4F41-B441-4D1D47594FC9@koanlogic.com>
In-Reply-To: <9032C193-A015-4F41-B441-4D1D47594FC9@koanlogic.com>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
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: Sun, 04 Mar 2012 22:06:04 -0000

I've read these drafts, too. I think it is very good that we have new proposals to support sleeping nodes better. It is needed! Thanks for writing the proposals.

It is interesting to compare the spec to draft-vial-core-mirror-proxy. You seem to take an approach where communications in the sensor network are in the focus, whereas draft-vial defined a proxy that could be used by any regular client.

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?

On the other hand, I didn't like the writable resource monitoring model in draft-vial so much. It would be a drag to have to poll everything when you wake up. I'd rather see a model where I can wake up and ask what has changed. Maybe that can be changed in draft-vial.

In any case, whatever we do, some additional information (like the sleepy option) in requests and responses might actually make sense as a generic mechanism. I suspect it should be something that works for both HTTP and COAP, if that can made to happen. I'm not expert enough to understand exactly how. However, accurate clock sync may be difficult if you attempt to achieve a very high ratio of sleep vs. awake. Even there it might be useful to think in terms of waking up and letting the proxy know you're now ready to act, than attempting to have the proxy fire a message at a calculated awake time. Draft-vial already works in this mode, as the sensors will wake up and inform/query the proxy on their own timing.

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.

Jari

On 29.02.2012 23:46, Thomas Fossati wrote:
> Hello all,
>
> today we have submitted a couple of I-Ds proposing three new CoAP Options that try dealing with the requirement REQ3 of draft-shelby-core-coap-req-04
>
>      The ability to deal with sleeping nodes.  Devices may be
>      powered off at any point in time but periodically "wake up"
>      for brief periods of time.
>
> leveraging on different techniques, i.e. store-and-forward, explicit origin delegation, REST interface to carbon-copy an observed resource.
>
>
> Their URIs and respective abstracts are given in the following for convenience:
>
> (1) "Sleepy Option for CoAP" (see http://tools.ietf.org/html/draft-giacomin-core-sleepy-option-00)
>
> This draft defines a new CoAP elective option, Sleepy, targeted specifically at proxies and used to signal a proxy the will to initiate an asynchronous request/response exchange.  The Sleepy option is partitioned in 2/3 subfields indicating: the remaining time before sleep, the expected sleep interval, and (optionally) the on-duty interval.
>
>
> (2) "Publish and Monitor Options for CoAP" (see http://tools.ietf.org/html/draft-fossati-core-publish-monitor-options-00)
>
> This draft defines two additional Options for the Constrained Application Protocol (CoAP) especially targeted at sleepy sensors: Publish and Monitor.
>
> The Publish Option enables opportunistic updates of a given resource state, by temporarily delegating the authority of the Publish'ed resource to a Proxy node.  The whole process is driven by the (sleepy) origin -- which may actually never need to listen.
>
> The Monitor Option complements the typical Observe pattern, enabling the tracking of a resource hosted by a node sleeping most of the time, by taking care of establishing and maintaining an Observe relationship with the (sleepy) origin on behalf of the (sleepy) client.
>
>
> We look forward for receiving comments and suggestions to the proposed solutions.
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>