Subject: [netmod] Question about validation of the running datastore

From: Italo Busi <[email-masked]>
Date: Mon, 8 Mar 2021 20:23:34 +0000

Hi all,

I have a doubt about how and when the configured data in the running datastore can be validated.

According to section 5.1.3 of RFC8342:

   <running> MUST always be a valid configuration data tree, as defined
   in Section 8.1 of [RFC7950].

In some cases, there are some complex semantic validation rules which cannot be encoded in the rules defined in Section 8.1 of [RFC7950].

In this case the configuration is, from a semantic perspective, invalid and cannot be applied, even if the configuration data tree is valid as defined in Section 8.1 of [RFC7950].

It is not clear to me what is the expected behavior of the system when the client provides such a configuration.

One possible option is that the system accepts that configuration but it does not apply it. In this case, the configuration is written in the <running> datastore, but never applied in the <operational> datastore.

Another possible option is that the system accepts that configuration, it does not apply it but returns to the client a warning message. Also in this case, the configuration is written in the <running> datastore, but never applied in the <operational> datastore.

A third option is that the system rejects that configuration and returns to the client an error message. In this case, the configuration is not written in the <running> datastore and thus never applied in the <operational> datastore.

I am wondering whether all these implementation options are allowed or whether there are some standard requirements/restrictions on some of them.

Thanks, Italo

---

From: "Rob Wilton (rwilton)" <[email-masked]>
Date: Wed, 10 Mar 2021 10:49:38 +0000

Hi Italo,

For NMDA:

  *   The device should accept the configuration if it is plausible that the configuration could be applied.  E.g., if you had the right linecards inserted, with the right optics, and the configuration won't exhaust the available resources.
  *   Once the device has accepted the configuration, then it should make its best effort to apply that configuration, but some of that configuration could fail to be applied for many reasons.  E.g., hardware missing or failed, process bugs/failures, out of resources.
  *   The operational datastore always reports exactly what the device is actually doing.   I.e., the operator is expected to monitor the operational state of the device to determine whether the device is working correctly (which includes whether the expected configuration has been successfully applied).  Enhancements like NMDA-diff may help achieve this.

Conversely, the device can decide that the configuration is not valid and then reject the configuration change (with appropriate errors being reported).  Then the configuration and operational state of the device is left unchanged.

Regards,
Rob

// As a contributor.

From: netmod <[email-masked]> On Behalf Of Italo Busi
Sent: 08 March 2021 20:24
To: [email-masked]' <[email-masked]>
Subject: [netmod] Question about validation of the running datastore

Hi all,

Thanks, Italo