Re: [core] Alissa Cooper's Discuss on draft-ietf-core-senml-more-units-05: (with DISCUSS and COMMENT)

Carsten Bormann <> Thu, 20 February 2020 01:31 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 93186120143; Wed, 19 Feb 2020 17:31:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id vkvsePUqLAwv; Wed, 19 Feb 2020 17:31:12 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 1D10C1200F5; Wed, 19 Feb 2020 17:31:12 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPSA id 48NH9T63ftz17yK; Thu, 20 Feb 2020 02:31:09 +0100 (CET)
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.\))
From: Carsten Bormann <>
In-Reply-To: <>
Date: Thu, 20 Feb 2020 02:31:08 +0100
Cc: IESG <>,, Jaime Jimenez <>,,
X-Mao-Original-Outgoing-Id: 603855068.657143-0b16c7109f804bfba6067c113041d9fb
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <>
To: Alissa Cooper <>
X-Mailer: Apple Mail (2.3608.
Archived-At: <>
Subject: Re: [core] Alissa Cooper's Discuss on draft-ietf-core-senml-more-units-05: (with DISCUSS and COMMENT)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 20 Feb 2020 01:31:18 -0000

Hi Alissa,

Let me try to answer this quickly, but there is a complex history around this that may easier be explained in person.

> On 2020-02-19, at 21:16, Alissa Cooper <> wrote:
> Hi Carsten,
> A few responses below.
>> On Feb 19, 2020, at 2:40 PM, Carsten Bormann <> wrote:
>> Hi Alissa,
>> Thank you for your concern about interoperability.
>>> ----------------------------------------------------------------------
>>> ----------------------------------------------------------------------
>>> I have some questions and comments about the text below, which seems like it
>>> creates significant scope for interoperability failures:
>>> "Where the benefits of directly using a secondary unit in a SenML pack
>>> outweigh the above considerations, the use of secondary units in "u"
>>> fields MAY be enabled by indicating a new SenML version that
>>> specifically allows this and/or by using a field with a label name
>>> that ends with the "_" character ("must-understand" field) whose
>>> definition specifically allows this.  The definition of these
>>> versions and fields is outside the scope of the present
>>> specification; one such definition is proposed in
>>> [I-D.bormann-core-senml-versions]."
>>> Do I understand correctly that this allows secondary units in (1) SenML packs
>>> that use some version number besides 10,
>> (If that version specifically allows the use of secondary units)
>>> and (2) SenML fields named with "_"
>>> that are in packs where the version number is 10?
>> (Or any other version number that may not on its own specifically allow the use of secondary units)
>> (If that “must-understand” field specifically allows the use of secondary units)
>>> What is the motivation for
>>> providing two different mechanisms to signal that secondary units are in use?
>>> I.e., why isn't one or the other of these mechanisms sufficient?
>> Because we don’t want to prejudice the decision how this is indicated.
> Why not? What value is derived from having two ways of doing the same thing?

I don’t think we will have two ways in the end.  If we agree that draft-bormann-core-senml-versions is a good way to do this, I don’t think people will come up with other ways of specifically indicating this.  (There may be contexts outside of SenML packs where SenML units are being used that might merit other ways of indicating primary-only vs. primary/secondary.  So far I haven’t met those.)

>> (If we had known about the considerations about enabling secondary units earlier, we could have done that in time for this specification.  The tight timeline of this specification is based on the use of the same secondary units registry in data model specifications that underly data exchanged in SenML and other formats.  So there is no need to decide this mechanism right now for the initial use of the registry.)
> What is the timeline, exactly?

“ASAP”… (I think the original timeline was CES 2020, and we are already behind it.)

> What is driving it?

The use of the SenML unit registry as a general purpose registry for units used in IoT standards, specifically those being developed by other SDOs (OMA LWM2M/IPSO is leading this).

>>> Without defining either a new version that supports secondary units or fields
>>> with "_", I don't understand how this update to RFC 8428 is complete enough to
>>> be implementable.
>> We decided that this draft is not updating RFC 8428, so it is not implementable without defining either of the mechanisms or the data models defined by other SDOs.
> I don’t understand how this draft could not be updating RFC 8428. RFC 8428 says:
> "Systems reading one of the objects MUST check for the Base Version
>   field.  If this value is a version number larger than the version
>   that the system understands, the system MUST NOT use this object.
>   This allows the version number to indicate that the object contains
>   structure or semantics that is different from what is defined in the
>   present document beyond just making use of the extension points
>   provided here."
> This drafts seems to be saying you can include fields with different structure and semantics from what is specified in RFC 8428, but still use version 10.

RFC 8428 is not too specific on what the semantics for a newly defined field could be.
I would expect that it can supply additional semantics to existing fields, opening the avenue of using must-understand fields for what could also be considered version upgrades.
Section 12.2 of RFC 8428 says:

   Extensions that are mandatory to understand to correctly process the
   Pack MUST have a label name that ends with the "_" character.

I personally would prefer us going the draft-bormann-core-senml-versions way, where the version number is strengthened to be the main extension point, but consensus building on this has only just begun.

>> draft-bormann-core-senml-versions-00 is my best guess of where we will come out with the discussion of the former; the latter is in progress, waiting for this draft to be published.
>>> It says other versions and fields are out of scope, but don't
>>> some need to be defined in order for the normative MAY in this text to be
>>> actionable?
>> See above.
>>> The label names registry policy is Expert Review, which does not require formal
>>> documentation of the registry entry. Where is the "definition [that]
>>> specifically allows this" expected to occur?
>> In the definition of the label.
> So, that can be in a private email to the designated expert?

Yes, RFC 8428 allows that.  But that secrecy would make a “must-understand” field (with a label ending in “_”) hard to use except by those that are privy to this specification.

Grüße, Carsten