[core] draft-groves-core-dynlink-02

Michael Koster <michaeljohnkoster@gmail.com> Sat, 25 February 2017 20:16 UTC

Return-Path: <michaeljohnkoster@gmail.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 B9B7412A26A for <core@ietfa.amsl.com>; Sat, 25 Feb 2017 12:16:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 h42W7nEl-wRh for <core@ietfa.amsl.com>; Sat, 25 Feb 2017 12:16:23 -0800 (PST)
Received: from mail-oi0-x232.google.com (mail-oi0-x232.google.com [IPv6:2607:f8b0:4003:c06::232]) (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 1402512A267 for <core@ietf.org>; Sat, 25 Feb 2017 12:16:23 -0800 (PST)
Received: by mail-oi0-x232.google.com with SMTP id 65so24435046oig.1 for <core@ietf.org>; Sat, 25 Feb 2017 12:16:23 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:date:message-id:cc:to:mime-version; bh=1i67rAQXEHueqFiqn3XnZYjRdlDP14mbxVUoWINFYuo=; b=CjtgLVkTw6dRfb7eSoC/6jyLFsMtvR+OlhfgcTmxHlTWoMsY/mvxAONv5m5BI6sT/Y MWRL54mwfmuPKPC7eX6K1ERsONl80fUml7iQfIVjWCQpPGf3W5KlSVUgJCklxIZaHCa2 ubxWJeS2ELGVvuudh4a00gw40qMqmzAjRjsWlOD+VIEUEsNBwu3ByxhNXDf8MBpxenK1 4iCQXQXfjd1tyN6G51bB3ZxkwuYubeKNBbA/QmO+G+JJf8de2vRN0jgF95kig4YRXjkD Sd3Bu4zwbcrpl/r6Yo7mKYAufy6nDB+U8teJ02z1kjBAx8IeMkt262kLMH07JTMBlWR5 wL6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:date:message-id:cc:to:mime-version; bh=1i67rAQXEHueqFiqn3XnZYjRdlDP14mbxVUoWINFYuo=; b=ZwO36Z5NBx9I7E/28gOwHqTn5N6V1e/hE6UXv2M48sXbdpT4kZrRQ37DySo2o3zY9f w6pIGp1HzZhhUbhwho7afSmtSAcyXcfOBXlf2FSrbUNB2DrhX78jqvRlVjepbv0SU9HM KDomxRY1ZODDciUv8LA79rbXWZUtwPDRMh4eLm+SM3sWujX6478TeBo33d9Vl0SQWnkB gFrjkoWLJiFoXa+E3kxjJGWcuiFgjrmlTlQ9uE8vA5p7FNfwxWusZdvF4GAIiG65YGpH gDk/tXkJ5RbbYvqoKOXHfgEFmocZ+bPJOfK2oVHzIeDje2xfU3Uys/XrdGtXcWafLbUH WxMw==
X-Gm-Message-State: AMke39mVBpMBhFk4b4C11GD8FcLEmF01K1ke8+5zpjhqUI7iamrECW+As0jQWKWeKIQQ6A==
X-Received: by 10.202.7.68 with SMTP id 65mr4880433oih.34.1488053782402; Sat, 25 Feb 2017 12:16:22 -0800 (PST)
Received: from [10.0.0.11] (108-201-184-41.lightspeed.sntcca.sbcglobal.net. [108.201.184.41]) by smtp.gmail.com with ESMTPSA id p66sm4301429oif.30.2017.02.25.12.16.21 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 25 Feb 2017 12:16:21 -0800 (PST)
From: Michael Koster <michaeljohnkoster@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9C7AC008-984A-4F6C-A7A3-BFF16E69C569"
Date: Sat, 25 Feb 2017 12:16:19 -0800
Message-Id: <AAC41ACC-476B-4D5E-83C1-1D76D45ACF70@gmail.com>
To: Christian Groves <cngroves.std@gmail.com>
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
X-Mailer: Apple Mail (2.2104)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/gBVtB9SPvEcPKdRg7AfInomkwHA>
Cc: "core@ietf.org WG" <core@ietf.org>
Subject: [core] draft-groves-core-dynlink-02
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: Sat, 25 Feb 2017 20:16:25 -0000

Hi Christian,

I have been thinking about the use case that we exposed in OCF recently, integrating pubsub and other cloud services into a system of existing server-based sensors.  Currently there is no well defined way to get a sensor device to push changes to a broker or to get an actuator device to subscribe to a topic on a broker. Likewise, there is on way to instruct the broker to observe a resource on a sensor, or to instruct a broker to update an actuator when a topic is published to on the broker.

A binding table, on the devices or on the broker, or both, is a good solution for this and enables the system-wide state update relationships to be maintained in a visible, manageable way.

I have a couple of comments on the current draft.

1. Why don't we use a resource type for the binding table? Its methods and responses conform to a generic link list interface, but the content and side effects are specialized to bindings. I thought we earlier had used rt=core.bnd as a resource type to identify the binding table.

2. We could make the example explicitly name the href of the sensor "switch" and the actuator "light" to help illustrate the directional pattern of observe the link target and update the link context:

   <coap://sensor.example.com/s/switch>;rel="boundto";anchor="/a/light";bind="obs";pmin="10";pmax="60"

3. I think we will need to register the new link attribute names with IANA: "pmin", "pmax", "lth", "gth", "stp", "bind"

4. Speaking of attributes, I don't think "bind" is strictly needed to identify whether to push or pull; that is implied by whether the anchor and href are local or remote. I can conceive of a case where the binding both observes and pushes:

   <coap://example.com/pubsub/switch>;rel="boundto";anchor="coap://example.com/pubsub/light";pmin="10";pmax="60"

We may instead want to identify what operations are used for both source (link target/href) and destination (link context/anchor), perhaps change it to the explicit: src=obs; dst=push with default being observe used on the source and update (push) used on the target. 

Best regards,

Michael