Subject: Re: [netmod] [netconf] RE: pls clarify get operation

From: Qin Wu <[email-masked]>
Date: Thu, 4 Jul 2019 12:58:10 +0000

suggestions or guidelines defined in NMDA architecture and NMDA guideline(/rfc8407#section-4.23.3) seem to only assume NMDA client only talks with NMDA server, non-NMDA client only talks with non-NMDA server.

True, but there’s no statement that a client or server cannot be both.  Note also that the NC/RC-NMDA RFCs explain how clients can discover if a server supports NMDA.  The intention is that the client would first try to use NMDA and, if not supported, fallback to non-NMDA.

[Qin]:You are right, but it not specified in RFC8407. revisiting the section 4.23.3.1 of RFC8407
“
   A server that needs to support both NMDA and non-NMDA clients can
   advertise both the new NMDA module and the temporary non-NMDA module.
   A non-NMDA client can use separate "foo" and "foo-state" subtrees,
   except the "foo-state" subtree is located in a different (temporary)
   module.  The NMDA module can be used by a non-NMDA client to access
   the conventional configuration datastores and the deprecated <get>
   operation to access nested "config false" data nodes.

”
It provides guideline how to create temporary non-NMDA module from NMDA module, but temporary non-NMDA module is not standard module. So everybody will create the same temporary non-NMDA module?
I also feel this second paragraph is not very clear, especially the last sentence,  is nested config false data nodes part of NMDA module or temporary non-NMDA
Module? Looks like  nested config false data node part of NMDA module?
Can non-NMDA client consume NMDA module? If the answer is Yes, why the server need to advertise both NMDA and temporary non-NMDA module?
Why <get> operation is deprecated when non-NMDA client uses NMDA module?
How does the non-NMDA client deal with temporary non-NMDA module? Use <get> operation to get access to it?
How does the non-NMDA client distinguish NMDA module from temporary Non-NMDA module?

Kent // contributor

---

From: Kent Watsen <[email-masked]>
Date: Tue, 9 Jul 2019 18:30:51 +0000

[Just back from a 4th of July thing]

Hi Qin,

> Module? Looks like  nested config false data node part of NMDA module?

True, but as I wrote Frank on the 28th:  

"Some drafts already publish a "state" module in their Appendix and, when they do, there is a completely standard non-NMDA IETF solution.  I don't know if this strategy is being followed universally but, if not, then I don't believe the IETF would object at all to the publication of drafts for missing state models in drafts that only assumed NMDA."   

Are you facing this situation currently?   If so, with which modules?  Have you considered submitting an I-D to define the missing state tree module?

> Can non-NMDA client consume NMDA module?

Sort of.  The config-true nodes will appear in the <running> as usual, and the config-false nodes can be accessed via the standard operations.  But there will be issues as, for instance, the config-false nodes will only appear for configured items and the operational value for config-true nodes will be missing, the latter of which may be important as an NMDA-optimized data model is unlikely to define config-false nodes for any config-true nodes, and hence the config-false that are defined may be far and few between, leading to an unacceptably incomplete upstate view.

> If the answer is Yes, why the server need to advertise both NMDA and temporary non-NMDA module?

Not "yes", see above.

> Why <get> operation is deprecated when non-NMDA client uses NMDA module?

It's not deprecated (yet).

> How does the non-NMDA client deal with temporary non-NMDA module? Use <get> operation to get access to it?

Yes.

> How does the non-NMDA client distinguish NMDA module from temporary Non-NMDA module?

There is nothing in a module's definition that a client can key off to determine that at the moment.  A client could use deductive reasoning (e.g., if there's a foo-state tree, then most likely non-NMDA), but this is pretty limited.   Per RFC 8407, the RFC's Introduction section should indicate when a module is NMDA-optimized, so non-generic clients should know.

Kent // contributor