Subject: [netconf] 答复: pls clarify get operation

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 03:29:14 +0000

Hi all,

     Pls clarify this question. I have been confused for a long time.

________________________________
华为技术有限公司 Huawei Technologies Co., Ltd.
[Company_logo]
个人签名：冯冲
手　　机：13776612983
电子邮件：[email-masked]
公司网址：www.huawei.com
________________________________
 本邮件及其附件含有华为公司的保密信息，仅限于发送给上面地址中列出的个人或群组。禁
止任何其他人以任何形式使用（包括但不限于全部或部分地泄露、复制、或散发）本邮件中
的信息。如果您错收了本邮件，请您立即电话或邮件通知发件人并删除本邮件！
This e-mail and its attachments contain confidential information from HUAWEI, which
is intended only for the person or entity whose address is listed above. Any use of the
information contained herein in any way (including, but not limited to, total or partial
disclosure, reproduction, or dissemination) by persons other than the intended
recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by
phone or email immediately and delete it!

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59
收件人: [email-masked]' <[email-masked]>; [email-masked]
抄送: Yangshouchuan <[email-masked]>; Zhangwei (SS) <[email-masked]>
主题: pls clarify get operation

Hi all,
In RFC6241, get operation is defined as:
7.7<https://tools.ietf.org/html/rfc6241#section-7.7>.  <get>

   Description:  Retrieve running configuration and device state

      information.
This description is too simply, so I think it should be clarified.

The case is: a data node modelled by one yang can be configured by user, but also can be created/modified by system or other protocols. If client issues get operation to retrieve this node,
          The data is created/modified by system or other protocols SHOULD be returned?
          For example:
          Rib can be configured by user and also can be created by routing protocols. In RFC 8349, the rib list is defined as:

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--rw address-family?   identityref

            +--ro default-rib?      boolean {multiple-ribs}?

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  |  +---w v4ur:destination-address?   inet:ipv4-address

            |  |  +---w v6ur:destination-address?   inet:ipv6-address

            |  +--ro output

            |        ...

            +--rw description?      string

       If client issued get operation to retrieve ribs from non-NMDA device, rib instance created by routing protocols should be returned?

       Another associated question: If client issued get-config operation from non-NMDA device, only user-controlled rib instance should be returned?

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Fri, 28 Jun 2019 08:38:38 +0000

Hi Frank,

Pre NMDA:

  *   You have a the <running> datastore, along with some others like <candidate> and <startup> that you can ignore for the purposes of this discussion.
  *   The <running> datastore can only contains data for schema nodes that are marked as “config true” in YANG (i.e. “rw” in your tree output below).
  *   The system may also have some operational state data that is marked as “config false” in YANG (i.e. “ro” in your tree output below).

The NETCONF <get-config> operation returns the contents of the <running> datastore.
The NETCONF <get> operation returns the contents of the <running> datastore combined with all the operational state as well.  Filters can be applied to return a subset of the data.

Regarding your question about user created configuration vs system created configuration, it depends on whether the devices instantiates the configuration in <running> or not.  If it does, then it would be returned in <get> and <get-config> operations.  If it doesn’t then it would not.  Different vendors/devices will likely implement this in different ways.

Generally, I think that <running> should only contain the configuration explicitly configured by the operator’s systems.  But this means that there isn’t a clean way to represent system created configuration or applied configuration, unless you make a config false copy of every config true node in YANG.  This is approach that was taken by the original IETF YANG models (e.g. RFC 7223) before they were superseded by NMDA, and also the OpenConfig YANG models (but using a different structure – which also struggles to cleanly represent system created configuration data).

The NMDA architecture was written to solve this problem in a clean way without requiring duplication in the YANG data models.

Hopefully this helps clarify.

Thanks,
Rob

From: netmod <[email-masked]> On Behalf Of Fengchong (frank)
Sent: 28 June 2019 04:29
To: [email-masked]; [email-masked]
Cc: Zhangwei (SS) <[email-masked]>
Subject: [netmod] 答复: pls clarify get operation

Hi all,

电子邮件：[email-masked]<mailto:[email-masked]>
公司网址：www.huawei.com<http://www.huawei.com>

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59
收件人: [email-masked]' <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>
抄送: Yangshouchuan <[email-masked]<mailto:[email-masked]>>; Zhangwei (SS) <[email-masked]<mailto:[email-masked]>>
主题: pls clarify get operation

Hi all,

      information.

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  +--ro output

            |        ...

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 28 Jun 2019 10:50:14 +0200

Yes, both the NETCONF <get> operation and the RESTCONF GET on the
unified view of the underlying datastores have limitations and a
solution in situations where these limitations hurt is to move towards
NMDA.

/js

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

-- 
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/>

---

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 08:54:35 +0000

Hi Rob,
Thanks for your explanation.
You mean get operation only  report running configuration and state nodes in non-NMDA scenario.
But if in NMDA scenario, what would be reported when we use the same get operation  to retrieve information? The same with non-NMDA or report all configuration including user-controlled and  system-controlled?

Another question:
If we write a NMDA-style YANG module without config false copy, when we implement this YANG in non-NMDA device, perhaps we have no way to get the information of system-controlled data.

发件人: Rob Wilton (rwilton) [mailto:[email-masked]]
发送时间: 2019年6月28日 16:39
收件人: Fengchong (frank) <[email-masked]>; [email-masked]; [email-masked]
抄送: Zhangwei (SS) <[email-masked]>
主题: RE: pls clarify get operation

Hi Frank,

Pre NMDA:
-          You have a the <running> datastore, along with some others like <candidate> and <startup> that you can ignore for the purposes of this discussion.
-          The <running> datastore can only contains data for schema nodes that are marked as “config true” in YANG (i.e. “rw” in your tree output below).
-          The system may also have some operational state data that is marked as “config false” in YANG (i.e. “ro” in your tree output below).

Thanks,
Rob

From: netmod <[email-masked]<mailto:[email-masked]>> On Behalf Of Fengchong (frank)
Sent: 28 June 2019 04:29
To: [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>
Cc: Zhangwei (SS) <[email-masked]<mailto:[email-masked]>>
Subject: [netmod] 答复: pls clarify get operation

Hi all,

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59

Hi all,

      information.

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  +--ro output

            |        ...

---

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:07:12 +0000

Should we change the definition of get operation? Like this, get operation can retrieve all running operational data including running configuration, system configuration.
Otherwise, we have no way to get the information of system-controlled data according a NMDA-style YANG module(because has no config false copy ) unless we implement NMDA.
-----邮件原件-----
发件人: Juergen Schoenwaelder [mailto:[email-masked]] 
发送时间: 2019年6月28日 16:50
收件人: Rob Wilton (rwilton) <[email-masked]>
抄送: Fengchong (frank) <[email-masked]>; [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: Re: [netmod] pls clarify get operation

Yes, both the NETCONF <get> operation and the RESTCONF GET on the unified view of the underlying datastores have limitations and a solution in situations where these limitations hurt is to move towards NMDA.

/js

On Fri, Jun 28, 2019 at 08:38:38AM +0000, Rob Wilton (rwilton) wrote:
> This e-mail and its attachments contain confidential information from 
> HUAWEI, which is intended only for the person or entity whose address 
> is listed above. Any use of the information contained herein in any 
> way (including, but not limited to, total or partial disclosure, 
> reproduction, or dissemination) by persons other than the intended
> recipient(s) is prohibited. If you receive this e-mail in error, 
> please notify the sender by phone or email immediately and delete it!
> 
> 发件人: Fengchong (frank)
> 发送时间: 2019年6月27日 9:59
> 抄送: Yangshouchuan 
> <[email-masked]<mailto:[email-masked]>>; Zhangwei 
> (SS) <[email-masked]<mailto:[email-masked]>>

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:09:36 +0000

Hi Frank,

NMDA does not change the semantics of the <get> operation at all: I.e. the operation returns the contents of the <running> datastore combined with all the operational state as well.

Going outside the standards there are probably 2 pragmatic choices:

  1.  Implement <get> as above (but may be expensive to implement for a new device).
  2.  Don’t support the <get> operation at all, requiring users to use the <get-data> equivalent instead.  This was the informal long term plan, i.e. <get> will probably eventually be deprecated.

Regarding your last question, yes, you are right that it cannot return system-controlled data.  One option here is to use the NMDA YANG module as input to a conversion process that generates old IETF style YANG models with split config/state trees (i.e. like RFC 7223).

Thanks,
Rob

From: Fengchong (frank) <[email-masked]>
Sent: 28 June 2019 09:55
To: Rob Wilton (rwilton) <[email-masked]>; [email-masked]; [email-masked]
Cc: Zhangwei (SS) <[email-masked]>
Subject: 答复: pls clarify get operation

Hi Rob,

Another question:

发件人: Rob Wilton (rwilton) [mailto:[email-masked]]
发送时间: 2019年6月28日 16:39
收件人: Fengchong (frank) <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>
抄送: Zhangwei (SS) <[email-masked]<mailto:[email-masked]>>
主题: RE: pls clarify get operation

Hi Frank,

Pre NMDA:

Thanks,
Rob

Hi all,

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59

Hi all,

      information.

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  +--ro output

            |        ...

---

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:17:32 +0000

Hi Rob,
If we write a new NMDA-style YANG module,  this YANG module seems can’t be supported well in non-NMDA device(because no system-controlled data can be retrieved).
I think this thing will cause a lot of trouble to the implementation of the IETF models.

发送时间: 2019年6月28日 17:10

Hi Frank,

Going outside the standards there are probably 2 pragmatic choices:
(1)    Implement <get> as above (but may be expensive to implement for a new device).
(2)    Don’t support the <get> operation at all, requiring users to use the <get-data> equivalent instead.  This was the informal long term plan, i.e. <get> will probably eventually be deprecated.

Thanks,
Rob

From: Fengchong (frank) <[email-masked]<mailto:[email-masked]>>
Sent: 28 June 2019 09:55
To: Rob Wilton (rwilton) <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>
Cc: Zhangwei (SS) <[email-masked]<mailto:[email-masked]>>
Subject: 答复: pls clarify get operation

Hi Rob,

Another question:

Hi Frank,

Pre NMDA:

Thanks,
Rob

Hi all,

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59

Hi all,

      information.

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  +--ro output

            |        ...

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 28 Jun 2019 11:20:01 +0200

The <get> operation has limitations. Data elements with the same key
can be different in <running> and <operational> and merging them
together simply does not work. The workaround is to duplicate data
models or to move to NMDA.  NMDA may seem initially costly but is
getting cheaper the larger your collection of data models grows.

/js

---

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:29:15 +0000

--- Data elements with the same key can be different in <running> and <operational> and merging them together simply does not work.

Frank: why? If it does not work, I think it also does not work when we use <get-data> operation.
-----邮件原件-----
发件人: Juergen Schoenwaelder [mailto:[email-masked]] 
发送时间: 2019年6月28日 17:20
收件人: Fengchong (frank) <[email-masked]>
抄送: Rob Wilton (rwilton) <[email-masked]>; [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: Re: 答复: [netmod] pls clarify get operation

The <get> operation has limitations. Data elements with the same key can be different in <running> and <operational> and merging them together simply does not work. The workaround is to duplicate data models or to move to NMDA.  NMDA may seem initially costly but is getting cheaper the larger your collection of data models grows.

/js

On Fri, Jun 28, 2019 at 09:07:12AM +0000, Fengchong (frank) wrote:
> 发件人: Juergen Schoenwaelder 
> [mailto:[email-masked]]
> 发送时间: 2019年6月28日 16:50
> 抄送: Fengchong (frank) <[email-masked]>; [email-masked]; 
> [email-masked]; Zhangwei (SS) <[email-masked]>
> > This e-mail and its attachments contain confidential information 
> > from HUAWEI, which is intended only for the person or entity whose 
> > address is listed above. Any use of the information contained herein 
> > in any way (including, but not limited to, total or partial

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:32:48 +0000

Hi Frank,

The IETF YANG models are designed to work with implementations that support NMDA.

They can be used with pre NMDA implementations, but as you say some data cannot be returned.  As per my previous reply, the mitigation here, if required, is to use the NMDA YANG module as input to a conversion process that generates the additional duplicate state tree.  This is fairly easy to generate (either by hand or via tooling).  IIRC, some RFCs have published the additional state trees in the appendix, where they thought that this might be useful.

But fundamentally, the idea of mixing <running configuration> + operational state into a single combined dataset is flawed:

  1.  <running> represents the desired configuration state that the operator would like the device to be in.
  2.  Operational state represents the currently applied configuration and additional state for what the device is currently doing.

These two datasets are temporally distinct.  E.g. how do you return data for an interface that currently exists in the system but has been deleted in the configuration.  Any way that you try and combine these two datasets you will end up with inconsistencies and corner case bugs and warts.

Once they are treated as separate data sets, the architecture becomes much simpler, cleaner, and more consistent:

  *   <running> can ALWAYS represent the configuration input into the device.
  *   <operational> can ALWAYS represent the current operational state of the device.

Clients can use whatever mechanism they which is compare or combine these two datasets depending on their requirements and the sophistication of the management system.

Thanks,
Rob

Sent: 28 June 2019 10:18

Hi Rob,

Hi Frank,

Thanks,
Rob

Hi Rob,

Another question:

Hi Frank,

Pre NMDA:

Thanks,
Rob

Hi all,

发件人: Fengchong (frank)
发送时间: 2019年6月27日 9:59

Hi all,

      information.

      +--rw ribs

         +--rw rib* [name]

            +--rw name              string

            +--ro routes

            |  +--ro route*

            |        ...

            +---x active-route

            |  +---w input

            |  +--ro output

            |        ...

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:18:16 +0000

Hi Frank,

You can't just change definitions in RFCs.  It breaks all existing clients/servers.  Besides, what you suggest doesn't really work (path clashes between configuration and operational state), unless you return two trees ... which starts to look extremely similar to the NMDA architecture ...

IETF has already explored this problem and there is already a published IETF solution to the problem that you describe: Migrate to NMDA.  The NMDA architecture has many other benefits as well (E.g. allows for templating, inactive configuration, dynamic configuration, consistent OIR handling).

Thanks,
Rob

-----邮件原件-----
发件人: Juergen Schoenwaelder [mailto:[email-masked]]
发送时间: 2019年6月28日 16:50
收件人: Rob Wilton (rwilton) <[email-masked]>
抄送: Fengchong (frank) <[email-masked]>; [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: Re: [netmod] pls clarify get operation

/js

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Fri, 28 Jun 2019 09:34:38 +0000

Hi Frank,

See my previous reply for an example of why this does not work.

<get-data> does not have this problem because it does not combine <running> and <operational> together.  Each <get-data> request acts on a single datastore.

Thanks,
Rob

-----邮件原件-----
发件人: Juergen Schoenwaelder [mailto:[email-masked]]
发送时间: 2019年6月28日 17:20
收件人: Fengchong (frank) <[email-masked]>
抄送: Rob Wilton (rwilton) <[email-masked]>; [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: Re: 答复: [netmod] pls clarify get operation

/js

---

From: "Fengchong (frank)" <[email-masked]>
Date: Fri, 28 Jun 2019 14:06:54 +0000

Hi Rob,
    I think IETF solution: migrate to NMDA is unrealistic. The cost of migration to NMDA is too expensive, If the entire industry migrates to NMDA, the time will be long.
    This will delay the deployment of the IETF model in the industry. 
    Anyway, even if vendor implements NMDA, the network manager/ controller or client tools may not support NMDA client. 
    A non-NMDA client only support get/get-config, it still has no way to retrieve system-controlled data.

    Generation config false copy for IETF YANG model is not reasonable, because published IETF standard YANG should not be changed, moreover, this is not friendly to the client or the server.
-----邮件原件-----
发件人: Rob Wilton (rwilton) [mailto:[email-masked]] 
发送时间: 2019年6月28日 17:18
收件人: Fengchong (frank) <[email-masked]>; Juergen Schoenwaelder <[email-masked]>
抄送: [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: RE: [netmod] pls clarify get operation

Hi Frank,

Thanks,
Rob

-----邮件原件-----
发件人: Juergen Schoenwaelder [mailto:[email-masked]]
发送时间: 2019年6月28日 16:50
收件人: Rob Wilton (rwilton) <[email-masked]>
抄送: Fengchong (frank) <[email-masked]>; [email-masked]; [email-masked]; Zhangwei (SS) <[email-masked]>
主题: Re: [netmod] pls clarify get operation

/js

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 28 Jun 2019 17:02:41 +0200

Frank,

if the simplistic model behind NETCONF's <get> or RESTCONF's unified
view on the datastores does not work for you, you have to invest in a
proper solution. Every solution addressing the limitation has costs.
There is no free lunch.

/js

---

From: Andy Bierman <[email-masked]>
Date: Fri, 28 Jun 2019 08:04:52 -0700

On Fri, Jun 28, 2019 at 7:09 AM Fengchong (frank) <
[email-masked]> wrote:

> Hi Rob,
>     I think IETF solution: migrate to NMDA is unrealistic. The cost of
> migration to NMDA is too expensive, If the entire industry migrates to
> NMDA, the time will be long.
>     Anyway, even if vendor implements NMDA, the network manager/
> controller or client tools may not support NMDA client.

Although it would have been possible to augment the existing <get>
operation, it is much cleaner
to create a new operation instead. (From standards and implementation POV).

There is a significant amount of work needed to support NMDA in a server.
This effort would be the same whether <get> or <get-data> was used.
The protocol work is the tip of the iceberg.  Updating all the
instrumentation callbacks to
return operational values is the real work -- and exactly the same no
matter what protocol
solution is used. Client complexity is mostly related to the new YANG
library.

Starting over on a new solution would only take longer to deploy.

Andy

>     Generation config false copy for IETF YANG model is not reasonable,
> because published IETF standard YANG should not be changed, moreover, this
> is not friendly to the client or the server.
> -----邮件原件-----
> 收件人: Fengchong (frank) <[email-masked]>; Juergen
> Schoenwaelder <[email-masked]>
> You can't just change definitions in RFCs.  It breaks all existing
> clients/servers.  Besides, what you suggest doesn't really work (path
> clashes between configuration and operational state), unless you return two
> trees ... which starts to look extremely similar to the NMDA architecture
> ...
>
> IETF has already explored this problem and there is already a published
> IETF solution to the problem that you describe: Migrate to NMDA.  The NMDA
> architecture has many other benefits as well (E.g. allows for templating,
> inactive configuration, dynamic configuration, consistent OIR handling).
>
> Thanks,
> Rob
>
>
> Should we change the definition of get operation? Like this, get operation
> can retrieve all running operational data including running configuration,
> system configuration.
> Otherwise, we have no way to get the information of system-controlled data
> according a NMDA-style YANG module(because has no config false copy )
> unless we implement NMDA.
> -----邮件原件-----
> Yes, both the NETCONF <get> operation and the RESTCONF GET on the unified
> view of the underlying datastores have limitations and a solution in
> situations where these limitations hurt is to move towards NMDA.
>
> /js
>
> >   *   You have a the <running> datastore, along with some others like
> <candidate> and <startup> that you can ignore for the purposes of this
> discussion.
> >   *   The <running> datastore can only contains data for schema nodes
> that are marked as “config true” in YANG (i.e. “rw” in your tree output
> below).
> >   *   The system may also have some operational state data that is
> marked as “config false” in YANG (i.e. “ro” in your tree output below).
> >
> > The NETCONF <get> operation returns the contents of the <running>
> datastore combined with all the operational state as well.  Filters can be
> applied to return a subset of the data.
> >
> > Regarding your question about user created configuration vs system
> created configuration, it depends on whether the devices instantiates the
> configuration in <running> or not.  If it does, then it would be returned
> in <get> and <get-config> operations.  If it doesn’t then it would not.
> Different vendors/devices will likely implement this in different ways.
> >
> > Generally, I think that <running> should only contain the configuration
> explicitly configured by the operator’s systems.  But this means that there
> isn’t a clean way to represent system created configuration or applied
> configuration, unless you make a config false copy of every config true
> node in YANG.  This is approach that was taken by the original IETF YANG
> models (e.g. RFC 7223) before they were superseded by NMDA, and also the
> OpenConfig YANG models (but using a different structure – which also
> struggles to cleanly represent system created configuration data).
> >
> > The NMDA architecture was written to solve this problem in a clean way
> without requiring duplication in the YANG data models.
> >
> > The case is: a data node modelled by one yang can be configured by user,
> but also can be created/modified by system or other protocols. If client
> issues get operation to retrieve this node,
> >           Rib can be configured by user and also can be created by
> routing protocols. In RFC 8349, the rib list is defined as:
> >
> >
> >
> >       +--rw ribs
> >
> >          +--rw rib* [name]
> >
> >             +--rw name              string
> >
> >        If client issued get operation to retrieve ribs from non-NMDA
> device, rib instance created by routing protocols should be returned?
> >
> >        Another associated question: If client issued get-config
> operation from non-NMDA device, only user-controlled rib instance should be
> returned?
> >
>
>
>
> netconf mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netconf
>

---

From: Kent Watsen <[email-masked]>
Date: Fri, 28 Jun 2019 15:24:24 +0000

Hi Frank,

>    I think IETF solution: migrate to NMDA is unrealistic. The cost of migration to NMDA is too expensive, If the entire industry migrates to NMDA, the time will be long.

Does Huawei wish to be a leader or a follower?   If servers support both, the clients will quickly adapt.  As for myself, a server I'm working on only supports NMDA.  

>    Generation config false copy for IETF YANG model is not reasonable, because published IETF standard YANG should not be changed, moreover, this is not friendly to the client or the server.

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.

Your message seems to wish for some automatic universal support in the protocols for converting NMDA models to non-NMDA models.  Whilst that would be possible, and you're welcome to submit a draft for it, it seems that the solution would entail protocol extensions that non-NMDA clients/servers would also have to be updated to support, at which point I'd argue that they would be better off supporting NMDA, which provides a superior solution.

Kent // contributor

---

From: Kent Watsen <[email-masked]>
Date: Sat, 29 Jun 2019 12:03:52 +0000

An unsolicited follow up to my earlier message. 

I didn’t mean to single out any particular company, rather then trying to encourage all companies to make the bold business decision to embrace NMDA.  The statement was only intended to be one of encouragement. 

Another clarification, the server I’m working on is natively NMDA.  I have a placeholder for an adaptation layer to support non-NMDA clients, but won’t implement it unless requested.  I realize that only supporting NMDA is not officially sanctioned yet but, being a greenfield project without legacy clients, I’m hoping it will be okay from a go-to-market perspective. 

Kent // contributor