Re: [core] progressing ietf-core-yang-cbor and ietf-core-sid

Ivaylo Petrov <> Tue, 21 January 2020 10:56 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2AE1212009C for <>; Tue, 21 Jan 2020 02:56:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 3MKGDzbIeABH for <>; Tue, 21 Jan 2020 02:55:55 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4864:20::434]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 6D146120091 for <>; Tue, 21 Jan 2020 02:55:55 -0800 (PST)
Received: by with SMTP id d16so2604579wre.10 for <>; Tue, 21 Jan 2020 02:55:55 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=+drO+atttVsda9FLYzYUSo0iJzUZPk3eR/LOS1idOBY=; b=PUPBMDxxKCzX1WK14tJ/cwYuOaTzDzXntZ/e5j8FRgvHLkCB94y+zdWzOLtoxx7BiA 1IuX6XZTPr+ydbEenD6odFeQ5cJeP4oIxqU/i1/nM6XjpUcF6SGkP53T1ZE9TERzqhY/ KxQDrMDm4ko2U77WhS9ObZfHkF4fnVzVMYboz+65F79VWQSvWQ9dUzl/lnLleQC3E/bE CObeRTd5W2WAlZROFH0pnihtPo2TAvqRG/4voRZTxlQoFRdU9C6m1R5avBMVka7ntA7e GflYfqTPFk0VOE0J3uQzbfQqNH9aKOY8Idjg/S+8mUe1CqC/zj+Zt1cbD6tqxHk+d02M glGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=+drO+atttVsda9FLYzYUSo0iJzUZPk3eR/LOS1idOBY=; b=ej79MuEavM9Ojx1Q9MyXfzlJeVlghQjQwy9ELC5JlTTkiRSMx4/hqBfT9p47qzf0FD pDWDkcCi1peFo7XKHUZGGHiVCAJwP/pRqvr26kAzhGa3we7lK4N3slQXrwwcA6BY2eKb WsBbG7ip0qiOGUCsyQ9zBWV2A4pjHtZd6yOn7Vq2TRSt302kdeWgDiqBAuj07HETQETp kKIXQ74syX/n2nzjArs9XZO0QJkrrueuL0UjrATC/YtQr3+5yc8oFt9sCjvEAvUVIVOF Esvw2Y20C/zh0W6ZfNp8F7SeEmnWRoYH+XWRSSiifRwXL510xZiN69hXpOYjC+H0DLyV SVBg==
X-Gm-Message-State: APjAAAXIazCFptNDky6nc/ePzg1MNTvjaFpI5aGfgXB7+QCPJt91mOvm FGAqIlORmMtAbS2yRMUeWc1vyPFBQ+KWLJJj7TetUw/Phh6C9A==
X-Google-Smtp-Source: APXvYqyRWNZXRxwB8I500u3tXVd/R1RMIEDGopYOd4CsDWDHQVYsMrKrct1TieHmEOInRlDu746dO0YclHe1LNbPuw0=
X-Received: by 2002:adf:fe43:: with SMTP id m3mr4730612wrs.213.1579604153779; Tue, 21 Jan 2020 02:55:53 -0800 (PST)
MIME-Version: 1.0
References: <29380.1565102380@localhost> <> <7505.1565633977@localhost> <> <18990.1577231446@localhost> <> <22612.1578626081@localhost> <> <15754.1578789013@localhost> <> <6025.1578939111@localhost> <> <26398.1579112884@localhost> <> <14603.1579125396@localhost> <> <18568.1579133839@localhost> <> <> <> <> <>
In-Reply-To: <>
From: Ivaylo Petrov <>
Date: Tue, 21 Jan 2020 11:55:27 +0100
Message-ID: <>
To: Andy Bierman <>
Cc: Carsten Bormann <>, Core <>, Alexander Pelov <>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <>
Subject: Re: [core] progressing ietf-core-yang-cbor and ietf-core-sid
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: Tue, 21 Jan 2020 10:56:01 -0000

Hello Andy,

Find my answers below

On Sun, Jan 19, 2020 at 6:37 AM Andy Bierman <> wrote:
> On Thu, Jan 16, 2020 at 9:47 AM Carsten Bormann <> wrote:
>> On 2020-01-16, at 13:50, Andy Bierman <> wrote:
>> >
>> > There is a significant amount of metadata needed to generate a SID file,
>> > starting with all the previous YANG revisions or SID files, and when/if
>> > the SID files have been reset vs. updated with preserved numbers.
>> Well, specifically, the current YANG module and the previous SID file; not the entire history of the universe.
>> The need for the previous SID file means that there needs to be a single lineage; SID files cannot be independently progressed.  This calls for central entity (or a blockchain :-).
>> What we need to define unambiguously is who that entity is.
>> One we are at the IANA, the Designated Expert (DE) can play this role.
>> But we need to define the process leading up to this.
>> (Yes, that process will evolve, and we probably also need to allow exceptions.
>> But there must be strong guide rails that work for the vast majority of cases.)
>> Adding a version number to the SID file could indeed help with accidents/disasters.
>> But it could also lead to people thinking they can get away with concurrent lineages; thinking that version numbers will fix any fallout.
>> That would be a disaster on its own, most likely leading to permanent universe splits.
>> So I’m not so sure we want to open that Pandora’s box.
> We already opened Pandora's box by attempting to create a 1-flat-number globally unique, multi-module,
> multi-owner object identifier. I think YANG is quite different than the MAC address example of success
> in this endeavour because YANG modules need the numbers assigned in the development phase,
> not the manufacturing phase.
> YANG has many features that make it easier on the writer and harder on the tool maker,
> such as no order dependencies, but is has some guardrails. No matter how the writer may
> possibly alter or refactor a YANG module, nothing unintentional can change the YANG identifier for
> any defined data node.  SID has no such guardrails.

It seems that you are implying that refactoring a YANG without changing the
YANG identifiers and the paths will cause changes to the .sid file. Could you
provide an example as I am not sure I see why this needs to be the case.
Note that I added the restriction of not changing paths as otherwise I
believe the
NETCONF representation will also change, so CORECONF will be no different.

> I think there is a practical solution for deployment, which does not require the use of the
> centrally maintained SID files, which is not realistic for 4 reasons:
>   - no way to apply changes to an incorrect SID file (without a sid-file-identifier)

I believe currently the way to achieve this is to have a new version
of the YANG module,
so that a new version of the SID file can be generated. Having a
global version of .sid
file that is an integer that progresses lineary seems as a good
solution to me. It should
also be able to accommodate your concern here I believe. As Michael
said, the latest
version of the .sid file should be able to handle both all clients of
previous versions of
the YANG module and the latest one. As there could be multiple versions for one
version of a YANG module, errors could be corrected. Does this sound
good to you?

>   - no way for vendors to apply deviations on any YANG modules, e,.g deviation { not-supported; }

I am not sure I see why that is the case. In sec 3 of
draft-ietf-core-yang-library we have

* 'feature' and 'deviation' are implemented using a SID (i.e. an
unsigned integer).

While I agree that more details can be added here, I don't see any
reason deviations
not to be supported.

>   - the SID file generation depends on the specific revisions of all modules imported
>     and submodules included by the target YANG module

I agree, but I believe this is a good thing.  As is said sec 5.1.1 of RFC6020

` modules need to be imported using specific revisions`.

Could you provide more details of the issue you see?

>   - vendors are already failing to deploy YANG modules from a central source model.
>     The NETCONF and RESTCONF protocols have robust mechanisms to discover and
>     retrieve the actual YANG files used by the server, and vendors rely on this feature.
>     Some vendors need model branching and other complexity that make SID assignment even harder
>     (see

I believe that the envisioned .sid file retrieval mechanism is:
1. You find the sid that you are interested in
2. You check in which mega range it is and who is the operator of that
mega range in
the IANA registry.
3. You contact that mega range operator through a given protocol to
obtain further details.

Presently we believed as there are not going to be too many mega range
registries and
we have no experience operating them it might be unwise to specify the
protocol that
they need to implement in order for clients to be able to query them.
Specifying such a
protocol might be something we do if this is a really big concern for people.
Would that retrieval mechanism cover the cases that you were thinking
of? Are there other
cases that you believe it should cover?

> CORECONF (and SID in general) needs a SID file retrieval mechanism.
> Perhaps based on YANG Data Instance Files
> A server will make the URI of this resource known somehow, which can be used if needed,
> before a client starts using SIDs.
> In addition, or instead of listing YANG modules, the data is SID files, maybe 1 super-SID-file JSON object.
> It is not realistic that a client will be able to use all global SID files based on the YANG module name
> and revision date, especially in the development phase. The IANA SID file may be useful after the YANG
> module is very stable.
> More solution details:
>   - The WG or vendor can maintain an informal public archive of SID files.
>   - The YangModels repo update process should include SID files.
>   - Vendors still need the public SID file for the starting point, or maybe use it unchanged
>   - The SID files need <CODE BEGINS> support and probably some tool changes in the ID-submission process
>   - IANA will only archive the RFC version, just like YANG modules.
>> Grüße, Carsten
> Andy

Best regards,