Hello authors and WG,

Here are a few comments and questions on draft-ietf-netmod-system-config-00. 
I've labelled them for easier reference/separation.

The first few are general items. The rest are from specific sections of the doc.

##################
(J1)
General

We may need to have a more detailed discussion (virtual interim call?) about 
the concept of resolve-system (i.e. the automatic copying). It may get 
complicated to make it fully usable for an operator.

  *   If resolve-system is used to have some objects copied into the <running>, 
is a client/user allowed to delete it?
  *   What happens to the system object running when all references to it are 
deleted by the client/user? Does the system remove it?
  *   What happens if some system config that was auto-copied disappears from 
the system DS (e.g. conditionally active, i.e. turning off the qos function)? 
It may be odd that it stays around in running.
  *   What is copied? Only the referenced leafs (e.g. the list key), or also 
the other siblings (other descendants of the list entry that aren't directly 
referenced)?
  *   What if a must statement refers to a leaf in the system DS, and the 
presence of that leaf is required in running to make the running valid. Is that 
copied as well? (We've mostly been talking about objects, aka list entries, and 
their keys being the target of a leafref)
  *   Section 3.2 mentions that config auto-copied into running isn't updated 
when that same config in system changes (during s/w upgrade). I think maybe 
servers that convert configuration during upgrade (a common approach) would 
want to convert/upgrade system config as well as any copied system config that 
exists in running.
  *   When a client deletes an override (e.g. of a mandatory leaf), does 
"resolve-system" populate the copy of the leaf again from system?

##################
(J2)
General

The terms 'active' and 'applied' (NMDA term) are used in a number of places in 
the document. We should probably clarify how those concepts differ, and define 
'active' precisely (and if they don't differ, then just use one term). They 
feel like they don't always mean the same thing as NMDA 'applied' in this doc.

Some example uses in the doc:

  *   When the device is powered on, immediately-active system configuration 
will be generated in <system> and applied immediately but 
inactive-until-referenced system configuration only becomes active if it is 
referenced by client-defined configuration
  *   Configuration defined in <system> is merged into <intended>, and present 
in <operational> if it is actively in use by the device

##################
(J3)
General

It feels like the key concepts of the draft are:

  *   A get-config of <running> returns a config that is considered valid by 
the client or offline tools (i.e. the referenced config needs to be in 
<running>)
  *   System config shows up in intended and operational
  *   System config can be overridden

But I'm not sure if the availability of the <system> DS is a key critical 
piece. Should we consider making that part optional? (perhaps a SHOULD)

Note that Section 5 has the following sentence so others may have been thinking 
along these lines at some point as well:

A device MAY implement the mechanism defined in this document without 
implementing the "system" datastore.

(although this contradicts other statements in the current draft, e.g the 
statement in section 4 about it being mandatory).

##################
(J4)
General

Today in the industry there are several server implementations that consider 
their <running> DS valid even though referenced system config isn't present in 
the <running> DS.  In this draft, section 4 makes it clear that the referenced 
system config MUST appear in <running>. So a server that claims support of 
(conformance to?) this system-config specification would consider <running> as 
invalid without referenced system config present.

But what about servers that don't claim to support this system-config spec. Are 
they OK to continue treating their <running> as valid event though referenced 
system config isn't present in <running>? Maybe that's out of scope but I 
wasn't sure whether this is worth a discussion within the WG.

##################
(J5)
General

Should we drop/keep the <> brackets around DS names like <system>, <running>, 
etc? Those imply it is a leaf or other element but in NMDA it is a *value* (an 
identity) so you would never see it in XML brackets like that.

Note that the NMDA RFC does use brackets around the DS names.  They are a 
useful separator. Alternatively we could use single or double quotes but I'm 
not sure we do that much in other NETMOD docs for DS names.

In pre-NMDA, the DSes *do* have angle brackets around their use in get-config, 
copy-config, etc. (which is probably why we see it used a lot still).

##################
(J6)
Abstract

I'd suggest we use this sentence to introduce the key subject of this work 
first, then talk about some of the mechanisms second. Proposal: add this 
sentence before the rest of the Abstract:

This  document describes how a management client and server handle YANG-based 
configuration data that is created, modified or deleted by the server itself. 
The system created configuration elements can be referenced (e.g. leafref) by 
user controlled configuration.

Here are also a few suggested edits in the next part of the abstract. Replace 
this:

This document updates NMDA to define a read-only conventional configuration 
datastore called "system" to hold system-defined configurations. To avoid 
clients' explicit copy/paste of referenced system-defined configuration into 
the target configuration datastore (e.g., <running>), a "resolve-system" 
parameter has been defined to allow the server acting as a "system client" to 
copy referenced system-defined nodes automatically.

with this:

The NMDA [RFC8342] is updated with a read-only conventional configuration 
datastore called "system" to hold system-defined configuration. As an 
alternative to clients explicitly copying referenced system-defined 
configuration into the target configuration datastore (e.g., <running>) so that 
the datastore is valid, a "resolve-system" parameter has been defined to allow 
the server acting as a "system client" to copy referenced system-defined nodes 
automatically.


##################
(J7)
Abstract

The last part of the abstract uses the term "overlay". Is isn't clear what that 
term means. I think we probably need a sentence or two instead of just that 
word to describe the concept.

Note this "overlay" term is also used in the Introduction.

##################
(J8)
1. Introduction

Add "The" in front of "NMDA" in both places in the Intro (that's how rfc8526 
for example refers to it).

##################
(J9)
1. Introduction

Here are some proposed edits for the 3rd paragraph. Replace this:

In some cases, the client references a system configuration which isn't present 
in the target datastore (e.g., <running>). Having to copy the entire contents 
of the system configuration into the target datastore should be avoided or 
reduced when possible while ensuring that all referential integrity constraints 
are satisfied.

with this:

Some servers allow the client-defined configuration to reference a system 
configuration object which isn't present in the target datastore (e.g., 
<running>). The absence of the system configuration object in the datastore can 
render the datastore invalid from the perspective of a client or offline tools 
(e.g. missing leafref targets). This document describes several approaches to 
bring the datastore to a valid state and ensuring that all referential 
integrity constraints are satisfied.

##################
(J10)
1. Introduction

Here are some proposed edits for the 4rd paragraph. Replace this:

In some other cases, configuration of descendant nodes of system-defined 
configuration needs to be supported. For example, the system configuration 
contains

with this:

Some servers allow the descendant nodes of system-defined configuration to be 
configured or modified.  For example, the system configuration may contain

##################
(J11)
1. Introduction

Here is a proposed edit for the second last paragraph (to match an edit 
proposed for the Abstract above). Replace this:

To avoid clients' explicit copy/paste of referenced system-defined 
configuration into the target configuration datastore (e.g., <running>), a 
"resolve-system"

with this:

As an alternative to clients explicitly copying referenced system-defined 
configuration into the target configuration datastore (e.g., <running>) so that 
the datastore is valid, a "resolve-system"

##################
(J12)
1.1 Terminology

Here is a proposed edit for the definition of "System configuration". Instead 
of this:

Configuration that is provided by the system itself. System configuration is 
present in <system> once it's created (regardless of being applied by the 
device), and appears in <intended> which is subject to validation. Applied 
system configuration also appears in <operational> with origin="system"

I'd propose this:

Configuration that is provided by the system itself.  System configuration is 
present in the system datastore (regardless of being applied by the device or 
referenced by other configuration nodes), and appears in the intended 
datastore. System configuration that is considered applied (according to the 
NMDA RFC8342) appears in <operational> with origin="system", regardless of 
whether that system configuration is referenced by user created configuration 
or not.

Note that I dropped the concept of "once it is created". The term "created" 
gives the impression that the user takes some action. We can explain later in 
the doc the details of how config may appear and disappear from the system DS.

I also dropped the part about validity. Let's keep the details of validity to 
the main body of the document. It feels odd to call this out here (and it 
highlights the validity of intended) without mentioning the validity of running 
(which is a key issue in this doc).

I'd propose we also remove "the complete" from the definition of "System 
configuration datastore".

##################
(J13)
1.1 Terminology

We do clarify later (section 3.1) that "System configuration" is different than 
RFC 8088 factory config. But it might be worth mentioning that right up front 
in the definition. Perhaps add this sentence to the end of the "System 
configuration" definition?

System configuration is a different and separate concept from RFC 8808 factory 
default configuration (which is all considered "conventional" origin, and is 
populated into the running only at startup time).

##################
(J14)
3.1. Read-only to Clients

I'd propose we break this sentence up to be clear that it is in intended even 
if not actively in use:
Configuration defined in <system> is merged into <intended>, and present in 
<operational> if it is actively in use by the device.

New sentences:
Configuration defined in <system> is merged into <intended>. It is also present 
in <operational> if it is actively in use by the device.

##################
(J15)
3.1. Read-only to Clients

Some proposal additional text about the RFC 8088 sentence. Replace this:

Any deletable system-provided configuration 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.

with this:

Any deletable system-provided configuration that is placed into <running> by 
the system at bootup, 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.

##################
(J16)
4.3.  Servers Auto-configuring Referenced System Configuration

I'd propose to add the following sentence just before "RFC 7317 enables a 
client...":

An example of this type of opt-in behavior can be found in RFC7317

##################
(J17)
4.4.  Modifying (overriding) System Configuration

We should probably expand on this sentence:

But the leaf could not be deleted.

How about this instead?

The leaf (override value) can be deleted from <running>, but it can't be 
deleted from <system>

If deleting the leaf from <running>, while using "resolve-system", causes the 
system to copy the leaf again from <system> into <running>, we should perhaps 
mention that here.

##################
(J18)
4.5.1.  Server Configuring of <running> Automatically

About 10 lines up from the very end of the section, part of the response shows 
this:
          <application or:origin="or:system ">
            <name>ftp</name>
            <protocol>tcp</protocol>
            <destination-port>21</destination-port>
          </application>

But once the config has been copied into running, and can be read from running 
using <get-config>, isn't the origin really 'intended' now?

I'd propose to add a few words to the very last sentence like this:

Since the configuration of application "smtp" is not referenced by the client, 
and this server treats smtp as 'inactive-until-referenced', it does not appear 
in <operational> but only in <system>.

Jason (he/him)

_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to