Re: [core] js review of draft-ietf-core-sid-12

Ivaylo Petrov <ivaylo@ackl.io> Wed, 10 June 2020 09:17 UTC

Return-Path: <ivaylo@ackl.io>
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 CC28D3A0802 for <core@ietfa.amsl.com>; Wed, 10 Jun 2020 02:17:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ackl-io.20150623.gappssmtp.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 B3o8qqgFDKrU for <core@ietfa.amsl.com>; Wed, 10 Jun 2020 02:17:16 -0700 (PDT)
Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) (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 129863A07FB for <core@ietf.org>; Wed, 10 Jun 2020 02:17:16 -0700 (PDT)
Received: by mail-wm1-x342.google.com with SMTP id d128so1117304wmc.1 for <core@ietf.org>; Wed, 10 Jun 2020 02:17:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ackl-io.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=RAQnW1kLjnRHhJ2Vv53N1q4sNfVDm8WyWREUvHYmF6s=; b=AdBenUXLzHlODb22QWL98TmOPdtdSlv4AUqWa9v61BdYkZAXgewla5spvV3o453Er3 nW1zpWgxyBNPnGzXVKyUc0c22YC98840JVoqj81/vody7K0FLOvx8hp7zxnQcxkU3k35 JaoP9CPZOJNu7Diyk0AKdsdeSulyjBMnwGVFdQqA8/kMqiq3/c8DHtY8AXRAnPO6IswZ f2rdSWqKtQWpeDl9VEfw0dGeE3dB2OGQJJi/FPk6IwhMA3QkC6+OxqDTZ266LzWotnAh Csg0nEkbIdtGlIxwoF5imQWVXRnpxALr5hkv6n+q0UcBCqkNJV/j7XjvyXX7yPfbqTGi bNPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=RAQnW1kLjnRHhJ2Vv53N1q4sNfVDm8WyWREUvHYmF6s=; b=OXcbE6MpQIw5GW+LCbk9l6UIhWSC5B8QPMdQfmufeitB9o8Y+U1n8zKT7Ow8KxMiW2 ozH2E1JZ5zj29IUDxYMooLSXQJ+uSMwn9z2O92ok3Av/4lhsE7xU16qldw1OvyAEbzA5 584hMY9dGOc9KJWjssncCvQCI8lqGR9TyQdo5npR9Hkuk9uw4B5JfAoFZ3MAIf6reNYW iexs5C8vwlNvEU+KevtJCgvWaqqnAWaifli/QJQ/heTt9SNxGVrDB4F3y0FH0oYel2fW 9Q4iQg3I38nYZEqpIUDYF/19Xnm74Y/URC313v5a+Fueay9rf21pIIgWz1ma7Iqyco54 M97g==
X-Gm-Message-State: AOAM531g3LQzG7TW1nxr8ut+Zee27ckB+YIZ0DfEBLcUPLmu8jLNb+GA QHKXnKVaGSjKV+jfLmI3UDHRVdApRGy6lTdInV0dYQ==
X-Google-Smtp-Source: ABdhPJylp/RYFTpnqwvtIRBWKuMZRR1lepIZFSPt1i4VGzblmBwOIZApz3peAzmRBRJGkmOyHNAlcYC8QhArP/fYgls=
X-Received: by 2002:a1c:4405:: with SMTP id r5mr2295574wma.72.1591780633452; Wed, 10 Jun 2020 02:17:13 -0700 (PDT)
MIME-Version: 1.0
References: <20200330213129.m2azrbeaxrtgivfc@anna.jacobs.jacobs-university.de> <CAJFkdRz445b4n86ug=v1ruYYWbDjwnEJwUNCZvEzENu_gMV0bg@mail.gmail.com> <20200415162054.s4bjcrienqvrytfz@anna.jacobs.jacobs-university.de>
In-Reply-To: <20200415162054.s4bjcrienqvrytfz@anna.jacobs.jacobs-university.de>
From: Ivaylo Petrov <ivaylo@ackl.io>
Date: Wed, 10 Jun 2020 11:16:47 +0200
Message-ID: <CAJFkdRyVc0Ti6nsaWbNoqMH4GZU9qB3r0EQb0MtUoueEBma-Pg@mail.gmail.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Ivaylo Petrov <ivaylo@ackl.io>, core <core@ietf.org>, NetMod WG <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000037c2ce05a7b74f82"
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/S1cfRPa8Jtp_g1LEGohZ_7rE2SE>
Subject: Re: [core] js review of draft-ietf-core-sid-12
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 Jun 2020 09:17:19 -0000

Hello Jurgen,

I am sorry for the late reply and thank you for your latest review and
comments. Please find my answers below. The updated version that contains
those changes is already published as -13, therefore the diff with the
previous text can be found here [1].
Best regards,
Ivaylo

[1]:
https://www.ietf.org/rfcdiff?url1=draft-ietf-core-sid-12&url2=draft-ietf-core-sid-13

On Wed, Apr 15, 2020 at 6:20 PM Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Wed, Apr 15, 2020 at 03:27:21PM +0200, Ivaylo Petrov wrote:
>
> > - The ID seems to assume that semantics of yang items never change.
> > >   This is true so far but NETMOD has chartered work that might change
> > >   this property. So what happens if the semantics of a YANG item
> > >   changes?
> > >
> > >    SIDs are assigned permanently, items introduced by a new revision of
> > >    a YANG module are added to the list of SIDs already assigned.
> > >
> > >   If a YANG module changes in a non-backwards compatible way, I assume
> > >   a new sid range must be allocated? Strictly speaking, this question
> > >   does not have to be answered today but it very likely needs an
> > >   answer in the future...
> > >
> >
> > [IP]: We will not be able to clearly answer this before there is more
> > information how the YANG items semantics can change. For now it looks
> like
> > assigning new range would be a good solution, but maybe there will be
> some
> > other solutions that will be even more optimal. What looks logical is
> that
> > at least every semantic of an item should have a separate SID.
>
> Yes and this will impact the SID document since SIDs are going to be
> specific to a (module, path, version) triple.
>

[IP]: I rephrased the following text in order to prepare the future change
of meaning:
Old:

 SIDs are assigned permanently, items introduced by a new revision of a YANG
module are added to the list of SIDs already assigned.

New:

 SIDs are assigned permanently, items introduced by a new revision of a YANG
module are added to the list of SIDs already assigned. If the meaning of an
item changes, for example as a result from a non-backward compatible update
of
the YANG module, a new SID should be assigned to it.

> - Is it CoRECONF or CORECONF? And I find the term CORECONF confusing.
> > >   We have two protocols called NETCONF and RESTCONF and now we add
> > >   another protocol called CoMI and we call CoMI together with YANG
> > >   CBOR and SIDs CORECONF?
> > >
> > >   1) NETCONF  + YANG + XML      serialization + path naming -> ?
> > >   2) RESTCONF + YANG + XML|JSON serialization + path naming -> ?
> > >   3) CoMI     + YANG + CBOR     serialization + SID naming  -> CORECONF
> > >
> > >   We do not have a term for 1) and 2) and then we have a term for 3)
> > >   which, however, looks more like the protocol names used in 1) and
> > >   2). This comment is not specific to this ID, but the asymmetry
> > >   showed up while reading the SID document, I had to look at other IDs
> > >   to understand how things are named. And the SID document says
> > >
> > >    YANG is a language designed to model data accessed using one of the
> > >    compatible protocols (e.g.  NETCONF [RFC6241], RESCONF [RFC8040] and
> > >    CoRECONF [I-D.ietf-core-comi]).
> > >
> > >   Then I read the CoMI abstract. It first says CoMI is "a CoAP
> > >   Management Interface", it then says "The complete solution composed
> > >   of CoMI, [I-D.ietf-core-yang-cbor] and [I-D.ietf-core-sid] is called
> > >   CORECONF." and finally it states that "CORECONF extends the set of
> > >   YANG based protocols, NETCONF and RESTCONF, with the capability to
> > >   manage constrained devices and networks.". So I am confused, is
> > >   CORECONF a protocol as stated in this document? Or is CoMI a
> > >   protocol? (What is then the difference between a "Management
> > >   Interface" and a management protocol?) I am not sure whether I get
> > >   to review comi, hence I mention my confusion here as I hit it while
> > >   reviewing the sid document.
> > >
> >
> > [IP]: Currently this is indeed somewhat confusing. The proposed change
> from
> > Michael Richardson was to at least have CORECONF in the title of the CoMI
> > document. I am wondering if that might still leave some of the confusion.
> > For me the simple solution is in this document to refer to CoMI, not
> > CORECONF and let CoMI draft define what CORECONF actually is. Unless you
> > think this will still not resolve the issue, this is going to be my way
> > forward.
>
> Avoiding CORECONF in this document helps to limit the problem. If CoMI
> is the name of the protocol, I would hope we do not need CORECONF at
> all. But then CORECONF is all over the place in
> draft-ietf-core-comi-09.txt, it actually looks like the protocol is
> called CORECONF and not CoMI. I really believe this terminology
> confusion needs to be resolved in the WG so the WG actually knows and
> agrees on the name of the technology they standardize.
>
> > - This description makes little sense to me:
> > >
> > >   typedef sid-file-version-identifier {
> > >     type uint64;
> > >     description
> > >       "Optional attribute that gives information about the .sid file
> > >        version.";
> > >   }
> > >
> > >   This is a type definition. Why does the description talk about an
> > >   optional attribute? The type should not state whether something
> > >   using the type is optional or not. (And I would prefer to avoid
> > >   'attribute', better use YANG defined terms or just describe that
> > >   this type represents a version number for a SID file.)
> > >
> >
> > [IP]: I believe now it should be more clear.
>
> Yes. I wonder though, is this a simple linear counter? Or can it be
> anything as long as newer > older is satisfied? Or is this just a tag
> that needs to match and it does not imply any order semantics?
>

[IP]: The intention was to be newer > older without any implied semantics. I
rephrased the text to capture this.
Old:
           "Optional leaf that specifies the version number of the .sid
file.
          .sid files and the version
          sequence are specific to a given YANG module revision.
          This number starts at zero when there is a YANG module update.
          This number can distinguish updates to the SID file which are the
result of
          new processing, or the result of reported errata.";
New:
           "Optional leaf that specifies the version number of the .sid
file.
          .sid files and the version sequence are specific to a given YANG
          module revision. This number starts at zero when there is a new
YANG
          module revision and increases monotonically.  This number can
          distinguish updates to the .sid file which are the result of new
          processing, or the result of reported errata.";

>   s/Identifies a schema-node path string/A schema-node path"
> > >
> > >   It is a bit confusing to define a schema-node path by way of
> > >   reference to an instance identifier. I understand that you borrow
> > >   the namespace encoding from the way JSON encode instance identifiers
> > >   but this type really represents what RFC 7950 calls an absolute
> > >   schema node identifier, no? Is the term schema-node path actually
> > >   needed or is it the same as absolute schema node identifier? Or is
> > >   the difference between the two how namespaces are represented?
> > >
> >
> > [IP]: I might have misunderstood something, but my understanding is that
> > the prefix related to a module could be changed during an import, whereas
> > here we really want to use the module name as a more stable identifier.
> The
> > difference between absolute schema node identifier and schema-node path
> is
> > that we mandate the use of module name and not prefix as defined in RFC
> > 7950.
>
> Well, what you model here is an absolute schema node path, except that
> prefixes are replaced by module names. Note that refering to
> instance-identifier as defined in RFC 7951 has the problem, the RFC
> 7951 definition of an instance-identifier also includes prefixes
> instead of module names.
>

[IP]: I might be misunderstanding your statement or the text in RFC 7951,
but if I read sec 6.11. from RFC 7951 correctly,

The leftmost (top-level) data node name is always in the
namespace-qualified form.


In sec 4 of RFC 7951 the namespace-qualified form seems to only use the
module name and not the prefix. My impression seems to be supported also by
the example in this section. Due to this I believe the current text is
actually correct.

/js
>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <https://www.jacobs-university.de/>
>