[core] (rest of) Re: Review of dynlink
Christian Amsüss <christian@amsuess.com> Wed, 26 September 2018 16:39 UTC
Return-Path: <christian@amsuess.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 4E1E8130EF3 for <core@ietfa.amsl.com>; Wed, 26 Sep 2018 09:39:22 -0700 (PDT)
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 ve9J7G4MfW_Y for <core@ietfa.amsl.com>; Wed, 26 Sep 2018 09:39:19 -0700 (PDT)
Received: from prometheus.amsuess.com (alt.prometheus.amsuess.com [IPv6:2a01:4f8:190:3064::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 30AB6130EE5 for <core@ietf.org>; Wed, 26 Sep 2018 09:39:19 -0700 (PDT)
Received: from poseidon-mailhub.amsuess.com (095129206250.cust.akis.net [95.129.206.250]) by prometheus.amsuess.com (Postfix) with ESMTPS id 46DCA41937 for <core@ietf.org>; Wed, 26 Sep 2018 18:39:17 +0200 (CEST)
Received: from poseidon-mailbox.amsuess.com (unknown [IPv6:2a02:b18:c13b:8010:a800:ff:fede:b1bf]) by poseidon-mailhub.amsuess.com (Postfix) with ESMTP id 3AFEE6C for <core@ietf.org>; Wed, 26 Sep 2018 18:39:16 +0200 (CEST)
Received: from hephaistos.amsuess.com (hephaistos.amsuess.com [IPv6:2a02:b18:c13b:8010::71b]) by poseidon-mailbox.amsuess.com (Postfix) with ESMTPSA id 0900619 for <core@ietf.org>; Wed, 26 Sep 2018 18:39:16 +0200 (CEST)
Received: (nullmailer pid 20239 invoked by uid 1000); Wed, 26 Sep 2018 16:39:15 -0000
Date: Wed, 26 Sep 2018 18:39:15 +0200
From: Christian Amsüss <christian@amsuess.com>
To: core@ietf.org
Message-ID: <20180926163915.GB18946@hephaistos.amsuess.com>
References: <20180721122403.GA17787@hephaistos.amsuess.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="tsOsTdHNUZQcU9Ye"
Content-Disposition: inline
In-Reply-To: <20180721122403.GA17787@hephaistos.amsuess.com>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/OLf9s2g82xNIF8XXv2sY-ezaCbA>
Subject: [core] (rest of) Re: Review of dynlink
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.29
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, 26 Sep 2018 16:39:22 -0000
To better keep track of the discussion, here's the portions of my original review that are not taken to the new thread at [1]; unquoted for readability: ---- Hello dynlink authors, These are notes from reviewing the dynlink draft; sorry for not assembling those earlier, I hope they are still appreciated. The document I'm reading is is post-06 git version dc0bbaff1. Mandatory and exhaustive bind attribute ======================================= I think that there are several bind methods missing: * "Observe+Push". The device executing this binding has neither source nor destination resource locally, but will observe (or for a "Poll+Push", poll) the source and PUT to the destination. This is useful when two devices are to be connected, neither of which has a binding site, but a device between them (eg. a border proxy or home access point) does. * "Native". Used for resources on the same server. Neither, or both, of observation and pushing are applicable here, but it's really up to the server whether it establishes either, short-circuits the resources in software or (in case of a gateway I worked on last year) configures the bus represented by the resources to link those. * Possibly "On-Demand" (not fully thought-through). When the destination resource is queried, the binding site issues a request to the source resource (or uses a fresh cached state maybe) and only responds when that arrives, or establishes an observation when the destination is observed. (Note that an actuator resource behaves like the hardware has an observation on the resource, but that's not the case for all resources, and the client might even allow creation of destination resources). In general, I don't think that a bind= attribute should be mandated. A binding site with the source local and the destination remote will know to PUT the data, and a site with the source remote will GET+Observe anyway if it can, and fall back to polling if the observation is declined. It's useful to have the methods named and discussed, but I doubt the need for them to be present in the actual transmitted data (especially as link attributes, see observation attributes) -- and what would happen to a `POST /bnd: <coap://example.com/s>;anchor="/a";bind="push"`? Is that 4.00? That brings us to... Error behavior of binding tables ================================ How would a binding site react to * unknown/-implemented schemes? * permanent or intermittent network unreachability? * all kind of error codes, especially 4.01/.03? I don't expect a full treatise of the ways a binding can go wrong in the document, but at least the issue of creating a traffic storm in response to an error, whether an error can make a binding just disappear, and whether the binding site can indicate any error state of a binding should be covered IMO. Assorted ======== * boundTo is capitalized differently. * "The binding conditions are mapped as query string parameters (see Section 4)." Ie. by the time the binding is established, the binding site PUTs the parameters the destination resource? Would it need to do that whenever the observation is set up, or only once? (That's probably a point that could go to to the first section too: there's no text about persistence of that state. Is it soft state? How does the client know?) * "A resource using an interface description defined in this specification and marked as Observable in its link description SHOULD support these observation parameters." The only interface description defined in this specification is core.bnd, and while it does make sense to observe a binding site for monitoring purposes, most of the observation attributes are nonsentical on a non-numerical resource. Could this be a leftover from when this was a single document with core-interfaces? * links-json will hopefully pass some time soon. Can those formats be used with dynlinks (subject to advertisement in ct= and content format negotiation, of course)? Summary ======= Many of the issues described with links were not present in the pre-2013 way of passing observation parameters as query parameters to that observation; I recommend that that way be re-evaluated. I see much value in having the both bindings and observation thresholds, and the semantics of the threshold parameters (band etc) seem to be mature by now, but I would ask for in-depth discussion of the above points. Best regards Christian [1]: https://mailarchive.ietf.org/arch/msg/core/jA_zWgxgd01fvwiTIgAyZTTb5HY -- This may seem a bit weird, but that's okay, because it is weird. -- perldata(1) about perl variables
- [core] Review of dynlink Christian Amsüss
- [core] (rest of) Re: Review of dynlink Christian Amsüss