Re: [core] Fwd: New Version Notification for draft-cao-core-delegated-observe-00.txt

Christian Amsüss <c.amsuess@energyharvesting.at> Mon, 14 November 2016 11:26 UTC

Return-Path: <c.amsuess@energyharvesting.at>
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 2A7611294C3 for <core@ietfa.amsl.com>; Mon, 14 Nov 2016 03:26:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] 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 af79sMvWsQwl for <core@ietfa.amsl.com>; Mon, 14 Nov 2016 03:26:39 -0800 (PST)
Received: from prometheus.amsuess.com (alt.prometheus.amsuess.com [IPv6:2a01:4f8:190:3064::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0162D126B6D for <core@ietf.org>; Mon, 14 Nov 2016 03:26:38 -0800 (PST)
Received: from poseidon-mailhub.amsuess.com (095129206250.cust.akis.net [95.129.206.250]) by prometheus.amsuess.com (Postfix) with ESMTPS id C6D97404A8; Mon, 14 Nov 2016 12:26:36 +0100 (CET)
Received: from poseidon-mailbox.amsuess.com (poseidon-mailbox.amsuess.com [10.13.13.231]) by poseidon-mailhub.amsuess.com (Postfix) with ESMTP id C258A1EA; Mon, 14 Nov 2016 12:26:34 +0100 (CET)
Received: from hephaistos.amsuess.com (hephaistos.amsuess.com [10.13.13.129]) by poseidon-mailbox.amsuess.com (Postfix) with ESMTPSA id 80D83533; Mon, 14 Nov 2016 12:26:34 +0100 (CET)
Received: (nullmailer pid 23467 invoked by uid 1000); Mon, 14 Nov 2016 11:26:31 -0000
Date: Mon, 14 Nov 2016 12:26:30 +0100
From: Christian Amsüss <c.amsuess@energyharvesting.at>
To: Zhen Cao <zhencao.ietf@gmail.com>
Message-ID: <20161114112630.4qta6yz4cs3lcc3e@hephaistos.amsuess.com>
References: <147755820733.19004.16975897284050743537.idtracker@ietfa.amsl.com> <CAFxP68z844+ra1ZrHAzPYqOBA0ugqZJKHuhumzfg9NqY=MXQmg@mail.gmail.com> <20161114030859.hx563ikemh3i5m2v@hephaistos.amsuess.com> <CAFxP68wTCgbCjSY336YkBWuDmDWHSPoCpROhQWMv3cV2qEr3Cw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="ynfw52bhsv34uxvi"
Content-Disposition: inline
In-Reply-To: <CAFxP68wTCgbCjSY336YkBWuDmDWHSPoCpROhQWMv3cV2qEr3Cw@mail.gmail.com>
User-Agent: NeoMutt/20161104 (1.7.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/sSRxmiXgfHrnDbrKRyvnQ5QIJCo>
Cc: "core@ietf.org WG" <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-cao-core-delegated-observe-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.17
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: Mon, 14 Nov 2016 11:26:41 -0000

Hi Zhen,

On Mon, Nov 14, 2016 at 01:46:50PM +0800, Zhen Cao wrote:
> > * [...]the in-home dev could simply implement a proxy and open a
> >   coap-over-tcp connection to the cloud server?
> 
> The in-home dev is nomadic, and it initiates the observe while at
> home, so that it can fetch the information when it is off.  So,
> opening a coap-o-tcp connection is not appropriate solution.

I see -- it says so in the text, but I misinterpreted the diagram. This
is how I would draw it:

               dev            Cloud            dev
Sensor       in-home          Server         off-home
  |              |              |                
  |   Delegated  |              |                
  |<--Observe  --|              |                
  |              |              |                
  |--------Notification-------->|                 
  |              |              |                
  |               \ dev gets moved out of home \
  |                             |               |
  |                             |<-- GET--------|
  |                             |----- ACK----->|

                     Figure 1: Delegation to Cloud

This setup seems very brittle to me because it can't be restablished
once the observation breaks for any reason (eg. on an intermittent
connection outage), so I'd like to explore possible alternatives that
are less ephemeral:

* resource directory with the dev in-home as commissioning tool: Use
  case 3.1 of draft-ietf-core-resource-directory-09 describes how the
  sensor could register itself with the cloud server (and not only a
  single observation, but it can of course limit the cloud server's
  access). The UDP "connection" in which it registers doubles as a
  channel through which the cloud server can send requests (including
  observations) to the sensor.

  I'm not sure whether the RD draft already contains a way for
  dev-in-home to actively instruct sensor to furtheron register with a
  particular RD (commissioning tools as described there talk to the RD
  directly, thereby breaking the UDP connection; my best guess would be
  that dev-in-home announces <coap://cloud.server/rd>;rt="core.rd"), but
  I'm sure that can be clarified.

  This is broader than delegate observation, but it uses patterns that
  already in active use.

* push dynlinks: Instead of negotiating a token with the cloud server,
  the dev-in-home negotiates a URL there (say /~user/temp).

  It then does a POST to coap:////sensor/bnd/ with
  <coap://cloud.server/~user/temp>;rel="boundto";anchor="/temp";bind="push"
  , and the sensor can start sending a PUT with the value whenever a new
  value is available.

  When the dev is in-home again, it can check whether the dynlink is
  still present or modify it by manipulating the /bnd/ (or wherever the
  device has an if=core.bnd) resource again.


Some more notes:

* The examples in A.1 show the 2.05 responses with 'Header: GET'. The
  hex numbers afterward resemble those in the rfc7641 examples, but
  there the number is the full encoded header (eg. 0x4101 = (ver = 1) <<
  22, (type non = 0 << 20), (tkl = 1) << 16, (code GET = 1) << 0).

  When interpreted as message IDs, the initial notification to the
  target node has no reason to share the message ID with the original
  GET (those are scoped to endpoints).

* The cloud server would not only need to agree on a token with the
  dev at in-home time, but the complete request headers. That
  information is needed for the cloud server to re-register its interest
  in the resource or to cancel the observation.

* The d-o option is used in responses as a sequence number. What is the
  advantage of using the delegated option here over the observe option?

Best regards
Christian

-- 
To use raw power is to make yourself infinitely vulnerable to greater powers.
  -- Bene Gesserit axiom