Hi all,

I’ve reviewed this document.  Overall, I think that this document is pretty 
close, and it has significantly improved (and been simplified) during the WG 
process.  There are still a couple of issues that I would like to see addressed 
- in particular, that the default of the "system" origin should always mean 
"system configuration" (which can be overridden by running, but not the other 
way around).


(2) p 3, sec 1.1.  Terminology

   system configuration:  Configuration that is provided by the system
      itself.  System configuration is present in the system
      configuration datastore (regardless of whether it is applied or
      referenced).  It is a different and separate concept from factory
      default configuration defined in [RFC8808] (which represents a
      preset initial configuration that is used to initialize the
      configuration of a server).  System configuration may also be
      referred to as "system-defined configuration" or "system-provided
      configuration" throughout this document.

Note that RFC 8342 already defines "system configuration".  Hence you probably 
should be explicit that this document expands on the definition of "system 
configuration" from RFC 8342.

I don't think that you need the third sentence at all, and I would delete it, 
i.e., I would delete the "It is different ..." sentence.  Otherwise, there are 
other datastores that system also is not, and should not be confused with, 
e.g., running, intended, operational, ...


(3) p 4, sec 1.3.  Updates to RFC 8342

   This document also updates the definition of "intended" origin
   metadata annotation identity defined in Section 5.3.4 of [RFC8342].
   The "intended" identity of origin value defined in [RFC8342]
   represents the origin of configuration provided by <intended>, this
   document updates its definition as the origin source of configuration
   explicitly provided by clients, and allows a subset of configuration
   in <intended> that flows from <system> yet is not configured or
   overridden explicitly in <running> to use "system" as its origin
   value.

I think that there should be a statement that all data nodes in operational 
that are annotated with an origin "system" MUST appear in the system datastore. 
 I.e., I explicitly do not want the "system" origin to identify two different 
types of data nodes, with only a subset of them appearing in the <system> 
datastore.


(4) p 4, sec 2.1.  Immediately-Present

   Immediately-present refers to system configuration which is generated
   in <system> when the device is powered on, irrespective of physical
   resource present or not, a special functionality enabled or not.  An
   example of immediately-present system configuration is an always-
   existing loopback interface.

I think that "always-present" is a better and simpler name than 
"immediately-present".


(5) p 8, sec 5.2.  No Impact to <operational>

   This work has no impact to <operational>.  Notably, it does not
   define any new origin identity as it is able to use the existing
   "system" identity defined in Section 5.3.4 of [RFC8342].  This
   document does not assert that all configuration nodes in
   <operational> with origin "system" originate from <system>,
   especially in cases where it is ambiguous which origin should be
   used.

As per my previous comment in (3), I strongly disagree with this part of the 
paragraph.  I think that the there should only be one meaning of system 
configuration and the system origin.  If we want a new origin to indicate 
whether the system has overridden user provided configuration that we will need 
a new origin identity to be defined, perhaps as part of an RFC 8342-bis (or a 
vendor could define their own identity).  Otherwise, I think that the whole 
part of configuration in running overriding the configuration in system falls 
apart.

I.e., RFC 8342 states:

   o  system: represents configuration provided by the system itself.
      Examples of system configuration include applied configuration for
      an always-existing loopback interface, or interface configuration
      that is auto-created due to the hardware currently present in the
      device.

Why would this configuration not appear in <system>?


(6) p 9, sec 6.1.  May Change via Software Upgrades or Resource Changes

   *  Servers reject the operation to change system configuration (e.g.,
      software upgrade fails) and needs the client to update the
      configuration in <running> as a prerequisite.  Servers are
      RECOMMENDED to include some hints in error responses to help
      clients understand how <running> should be updated.

I think that the "MUST" is probably too strong, and perhaps would be better as 
"SHOULD".  I think that there are certain actions, e.g., software upgrade where 
systems may struggle to guarantee that <intended> always stays valid, and one 
valid option for handling this is to allow it to become invalid, and then 
require the first edit-config/edit-data operation to get <running>/<intended> 
back to being a valid datastore again.

I'm not entirely sure whether we should be providing examples here.  If you do 
provide any examples then I think that you should definitely strip any RFC 2119 
language, but I would probably strip the text about alerting clients or 
returning errors responses.  Since, handling this is out of scope, the less 
that is said the better, IMO.



Minor level comments:

(7) p 2, sec 1.  Introduction

   Some servers allow the descendant nodes of system-defined
   configuration to be configured or modified.  For example, the system
   configuration may contain an almost empty physical interface, while
   the client needs to be able to add, modify, or remove a number of
   descendant nodes.  Some descendant nodes may not be modifiable (e.g.,
   the interface "type" set by the system).

I suggest perhaps expanding the example:

For example, the system configuration may contain an almost empty physical 
interface list entry, whose existence in the system configuration is tied to 
the presence of particular hardware, while the client needs to be able to add, 
modify, or remove a number of descendant nodes.


(8) p 5, sec 2.2.  Conditionally-Present

   Conditionally-present refers to system configuration which is
   generated in <system> based on specific conditions being met in a
   system.  For example, if a physical resource is present (e.g., an
   interface card is inserted), the system automatically detects it and
   loads associated configuration; when the physical resource is not
   present (an interface card is removed), the system configuration will
   be automatically cleared.  Another example is when a special
   functionality is enabled, e.g., when a license or feature is enabled,
   specific configuration may be created by the system.

"the system configuration will be automatically cleared” => “the interface will 
automatically be removed from <system>, but <running> is left unchanged."

Should we clarify section 5.3.4 of RFC 8342 here, to indicate that the origin 
for such system created resources should always be reported as system, 
regardless of whether the interface is also configured in <running>, e.g., to 
configure properties under the interface?


(9) p 9, sec 6.3.  Modifying (Overriding) System Configuration

   In some cases, a server may allow some parts of system configuration
   (e.g., a leaf's value) to be modified.  Modification of system
   configuration is achieved by the client writing configuration data in
   <running> that overrides the values of matched configuration nodes at
   the corresponding level in <system>.  Configurations defined in
   <running> take precedence over system configuration nodes in <system>
   if the server allows the nodes to be modified.  The immutability of
   system configuration is defined in [I-D.ietf-netmod-immutable-flag].

Since the immutability flag still seems to be having quite active discussion, 
I'm not sure whether it is really a good idea for it to be referenced here.  If 
you do want to keep, I would make this more informational rather than normative.


(10) p 10, sec 7.1.  The "factory-default" Datastore

   Any deletable system-provided configuration that is populated as part
   of <running> by the system at boot up, without being part of the
   contents of a <startup> datastore, must be defined in <factory-
   default> [RFC8808], which is used to initialize <running> when the
   device is first-time powered on or reset to its factory default
   condition.

I think that the paragraph should be predicated on whether RFC 8808 is 
implemented by the server.


(11) p 26, sec Appendix B.  Key Use Cases

   And the contents of <system> keep unchanged since the interface is
   not physically present:

“And the contents of <system> keep unchanged since ...” => “And the contents of 
<system> remain unchanged, only containing the "lo" loopback interface, since 
...”


(12) p 28, sec Appendix B.  Key Use Cases

   <interfaces xmlns="urn:example:interfacemgmt"
               xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin"
               or:origin="or:intended">
     <interface or:origin="or:system">
       <name>lo0</name>
       <type>loopback</type>
       <enabled or:origin="or:default">true</enabled>
       <ip-address>127.0.0.1</ip-address>
       <ip-address>::1</ip-address>
       <description>system-defined interface</description>
     </interface>
     <interface>
       <name>et-0/0/0</name>
       <type or:origin="or:system">ethernet</type>
       <enabled or:origin="or:default">true</enabled>
       <ip-address>192.168.10.10</ip-address>
       <description>pre-provisioned interface</description>
     </interface>
   </interfaces>

Should "interface" and "name" not be origin system, with only the ip-address 
and description being marked as origin intended?  This applies to the B.4 
example as well.



Nit level comments:

(13) p 5, sec 2.2.  Conditionally-Present

   Conditionally-present refers to system configuration which is
   generated in <system> based on specific conditions being met in a
   system.  For example, if a physical resource is present (e.g., an
   interface card is inserted), the system automatically detects it and
   loads associated configuration; when the physical resource is not
   present (an interface card is removed), the system configuration will
   be automatically cleared.  Another example is when a special
   functionality is enabled, e.g., when a license or feature is enabled,
   specific configuration may be created by the system.

loads associated => loads the associated

Regards,
Rob


From: Kent Watsen <kent+i...@watsen.net>
Date: Tuesday, 10 December 2024 at 18:38
To: netmod@ietf.org <netmod@ietf.org>
Subject: [netmod] 2nd WGLC on system-config-10
NETMOD WG,

We did a 2nd WGLC in August on the -08 version of this document.  There were 
major concerns raised then, which Qiufang addressed in -09 with an update that 
removed the need to copy nodes into <running>.  Andy and Juergen raised some 
additional concerns on -09, which I think are addressed in this -10.

This email begins a two-week WGLC on:
System-defined Configuration
https://datatracker.ietf.org/doc/html/draft-ietf-netmod-system-config-10

Please take time to review this draft and post comments by Dec 24.  Whilst 
favorable comments are welcomed, given that this document already has a lot of 
support, the primary focus now is to determine if there are any objections or 
concerns.   If no objections or concerns are raised, this document will 
automatically progress to the next step.

>From the IPR poll in March, there is no known IPR for this document:
https://mailarchive.ietf.org/arch/msg/netmod/IpzWIAbgifXoKaNfLhEDmYbyXkY/
Kent  // co-chair
_______________________________________________
netmod mailing list -- netmod@ietf.org
To unsubscribe send an email to netmod-le...@ietf.org

Reply via email to