[core] Second Resource Directory plug test: Report, part I

Christian Amsüss <christian@amsuess.com> Wed, 10 October 2018 11:20 UTC

Return-Path: <christian@amsuess.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id C389D130EEC for <core@ietfa.amsl.com>; Wed, 10 Oct 2018 04:20:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
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 ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id EhTN_-cXRKZS for <core@ietfa.amsl.com>; Wed, 10 Oct 2018 04:20:35 -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 AF8CB130F0E for <core@ietf.org>; Wed, 10 Oct 2018 04:20:35 -0700 (PDT)
Received: from poseidon-mailhub.amsuess.com (unknown [IPv6:2a02:b18:c13b:8010:a800:ff:fede:b1bd]) by prometheus.amsuess.com (Postfix) with ESMTPS id E7AF641AC8; Wed, 10 Oct 2018 13:20:32 +0200 (CEST)
Received: from poseidon-mailbox.amsuess.com (hermes.amsuess.com []) by poseidon-mailhub.amsuess.com (Postfix) with ESMTP id 9E3B12A; Wed, 10 Oct 2018 13:20:31 +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 50B1610E; Wed, 10 Oct 2018 13:20:31 +0200 (CEST)
Received: (nullmailer pid 8393 invoked by uid 1000); Wed, 10 Oct 2018 11:20:30 -0000
Date: Wed, 10 Oct 2018 13:20:30 +0200
From: Christian =?iso-8859-1?Q?Ams=FCss?= <christian@amsuess.com>
To: core@ietf.org
Message-ID: <20181010112030.GC31858@hephaistos.amsuess.com>
References: <20180926161903.GA30204@hephaistos.amsuess.com> <20181003093716.GA9366@hephaistos.amsuess.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="DIOMP1UsTsWJauNi"
Content-Disposition: inline
In-Reply-To: <20181003093716.GA9366@hephaistos.amsuess.com>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/enMOFPTiK9qcS-lxpQ-VVyyKbuc>
Subject: [core] Second Resource Directory plug test: Report, part I
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, 10 Oct 2018 11:20:46 -0000

Hello CoRE list,

we've just completed part I of the previously announced RD plug test
(between the RIOT and aiocoap implementations), and I'm sending the
results to the list right away to have them available in today's interim


  The tests that can be expected to be performed by a device implements
  the registrant-EP side of RD passed, with some changes due to limits
  of the underlying CoAP library. One test was missed because tests were
  executed out-of-order.

  So far, nothing group related has been tested as nothing has been
  implemented by either participant.

Details below.

Best regards


Implementations under test were:

* RIOT's built-in endpoint, where RIOT is an operating system for class
  C0 to C2 devices. The endpoint implementation is designed to do either
  a simple or a as a full registration, to keep both alive, and to
  explicitly deregister again. Due to limitations in the underlying CoAP
  library, it can not perform multicast discovery or send target
  attributes or an anchor in links yet. (Those features are being worked

  The registrant EPs were run in iot-lab with full IPv6 connectivity and
  operated by Hauke Petersen; later tests also include an endpoint run
  locally at his site.

* aiocoap's resource directory, where aiocoap is a Python implementation
  of CoAP that ships several tools for use on unconstrained systems. It
  implements all components of the RD server except groups, as well as
  regular registrant endpoint. No commissioning tool (CT) is implemented
  per se, but it provides a program called rd-relay. The relay provides
  links to an RD proper in multicast lookups, and performs third party
  registration for local registrants that attempt simple registration.

  The RD server was run on a public IPv6 address and operated by
  yours truly.

Test execution:

* Test 3 passed. The execution deviated from the protocol by providing
  no additional link or target attributes (see above), a varied endpoint
  name and an unexpected Content-Format header sent by the registrant

* Test 1 passed with modifications, test 4 passed. The target address in
  1 was changed from multicast to unicast to accomodate library
  limitations, and because the implementations were not colocated. In
  test 4, the same links as in test 3 were used (an oversight), and
  again no link attributes were present.

  The registrant provided an endpoint name varying from the test
  specification. The RD used a different registration path than the
  example path given in the test specification.

* Test 12 passed (the device was manually prompted to de-register).

* Test 13 was missed when going through the list, but a version of it
  (minus the new base address) was executed regularly by the active

* Tests 2, 5, 6, 7, 8, 9, 10, 11, 14 and 15 were not applicable to an
  endpoint-only client implmentation. Some of those steps were filled in
  by an aiocoap implementation for verification purposes:

  * Tests 2 and 5 were executed by running an rd-relay at Hauke's site,
    where he tasked an endpoint to simply register at the local
    rd-relay. The relay looked up the details of the RD server and then
    performed a thrid party registration.

  * Tests 10, 12 and 15 were executed continuously by means of an active
    observation on the server, and gave the expected results. As no link
    attributes were set by the registrants, the filter parameters were
    left out.

  As additional tests, the links produced in lookup were handed to an
  client to be dereferenced. Links from test 3 and 4 (simple and
  regular registration) could be read. Links from test 5 could not be
  read because the endpoint had no route to the internet; the CT thus
  entered them as
  <coap://[fe80::2c7c:b7ff:feac:bda8%tapbr0]/sensors/temp>. That might
  be an issue to consider during discovery, and was taken to the draft's
  issue tracker.

Various obervations:

* Sending more link attributes would make the link-format serialization
  on small devices hard in terms of flash size, link-format+cbor might
  be of help here and will require support by RDs.

* Issues discovered in the server were failure to deregister timed out
  simple registrations, and needless sending of observe notifications
  when nothing really changed.

* The GETs performed during simple registration were issued from a
  different IP address than the one targeted in the registration. That
  caused no trouble in the test, but might confuse readers of the logs.

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