On Wed, Dec 8, 2021 at 2:31 PM Sterne, Jason (Nokia - CA/Ottawa) < jason.ste...@nokia.com> wrote:
> Hi guys, > > > > Andy - about use cases. Here is a problem we're trying to address: > > > > There are at least several major router implementations that have this > concept of "hidden config" (i.e. list entries that can be referenced in a > leafref by explicit user config, but those list entries are not returned in > a <get-config>). > > > Clearly not in compliance with RFC 7950. IMO the "enable flag" approach to the general problem, presented by Kent a couple years ago, is a much simpler and better solution than a new <system> datastore. The full set of nodes is in <running>. A generalized "enable" mechanism causes the resource to be used or not, where it shows up in <intended> and <operational> if enabled=true. IMO this fits the original intent of NMDA and does so in a way that requires the least disruption to current compliant implementations. Andy > The server accepts these configurations (i.e. a validate or commit > succeeds), but if you actually validate (e.g. with yangLint) the running > datastore contents (e.g. fetched using <get-config>) to the YANG model it > is not valid. That is against several RFCs referenced in the discussions > below. > > > > IMO there isn't any "offline" vs" online" validation that is different. > The contents of the running must be valid against the YANG model. A > <get-config> returns the contents of the running. The server can validate > it, or some other entity can validate it, but it must be valid. > > > > In Jan's option #1 the running config could be polluted with 100s or 1000s > of lines of unreferenced/unused config. A <get-config> of a system without > much config would instead return 100s/1000s of lines. I think that would be > very annoying from a usability perspective. > > > > I'm in favor of this aspect of Jan's option #2: " + Clients unaware of > the system datastore would have to include (copy) information from the > system datastore to running in order to reference them." > > > > -> Only the list keys of referenced system objects would have to be copied > (configured) into the running DS (to resolve leafrefs). We wouldn't need > to copy all the descendant elements inside the referenced object. > > -> This copying would only need to be done by operators with a workflow > that requires offline validation > > > > Some of this approach is already described in > draft-ma-netmod-with-system-01: > > > > " In all cases, the clients should have control over the configurations > > ,i.e., read-back of <running> should contain only what was explicitly > > set by clients." > > > > > > "4.3. Explicit declaration of system configuration > > > > In addition to modifying system configuration, and adding nodes to > > lists in system configuration as described above, a client can also > > explicitly declare system configuration nodes in <running> with the > > same values as in <system>. When a client configures a node (list > > entry, leaf, etc) in <running> that matches the same node & value in > > <system>, then that node becomes part of <running>. A read of > > <running> returns those explicitly configured nodes. > > > > This explicit configuration of system configuration in <running> can > > be useful, for example, when an operator's workflow requires a client > > or offline tool to see the <running> configuration as valid. The > > client can explicitly declare (i.e. configure in <running>) the list > > entries (with at least the keys) for any system configuration list > > entries that are referenced elsewhere in <running>. The client does > > not necessarily need to declare all the contents of the list entry > > (i.e. the descendant nodes) - only the parts that are required to > > make the <running> appear valid offline. " > > > > I'm not a fan of option #3. It doesn't allow a mode of operating where a > client/OSS has full control over the contents of the <running>. Some > operators will want the master config to be owned up in their client/OSS > and push it down. The server should just accept it and the client should be > able to do a "read-back" and see exactly what was sent previously. > > > > I think we have a potential solution for this system config that keeps the > running valid. But I'm far more worried about configuration templates. I > don't see how we can possibly keep <running> valid with config templates. > That seems like a major problem to me. But if we ever declare that > <running> doesn't have to be valid, and only <intended> has to be valid, > then offline tools can never validate (ahead of time) the config they > actually download to the server. > > > > Jason > > > > > > *From:* netmod <netmod-boun...@ietf.org> *On Behalf Of *Andy Bierman > *Sent:* Friday, December 3, 2021 6:01 AM > *To:* Juergen Schoenwaelder <j.schoenwael...@jacobs-university.de>; Jan > Lindblad <j...@tail-f.com>; Kent Watsen <k...@watsen.net>; maqiufang (A) > <maqiufang1=40huawei....@dmarc.ietf.org>; netmod@ietf.org > *Subject:* Re: [netmod] Must offline-validation of <running> alone be > valid? > > > > > > > > On Fri, Dec 3, 2021 at 2:26 AM Jürgen Schönwälder < > j.schoenwael...@jacobs-university.de> wrote: > > On Fri, Dec 03, 2021 at 10:59:12AM +0100, Jan Lindblad wrote: > > > I made some proposals earlier, both on the interim and privately to the > draft authors, along these lines: > > > > Option #1 > > + We could have a new system datastore that technically is a part of > running. Everything in system would show up in running to clients unaware > of the system datastore. Every time the system datastore changes for > whatever reason, the running datastore transaction ids (if we manage to get > that concept defined), are updated > > + Clients interested to see pure view of the system datastore without > anything else in running could issue a get-data towards the system datastore > > + Clients interested to see a pure view of running without any system > datastore elements could issue a get-data towards running with an extra > flag called 'without-system' > > + Since all system elements are already part of running, clients have no > need to copy data between the two datastores > > > > Option #2 > > + We could have a system datastore that technically is a part of > operational. Everything in system would show up in operational to clients > unaware of the system datastore. The running datastore always maintains > referential integrity, i.e. cannot reference the system datastore. > > + Clients interested to see pure view of the system datastore could > issue a get-data towards the system datastore > > + Since the system datastore is not part of running, clients can already > see a pure view of running without any system datastore elements using a > simple get-data. > > + Clients that are aware of the system datastore and are interested to > configure references from running to system elements would issue an > edit-data rpc with the additional flag 'resolve-system-references'. This > will make the server copy any system elements referenced into running > without the client doing so explicitly. > > + Clients unaware of the system datastore would have to include (copy) > information from the system datastore to running in order to reference them. > > > > Option #3 > > There is a client on the system that makes changes to running just > like any other remote clients can make changes to running. System > generate config that is not editable explicit config in running goes > straight into the applied config in operational. This does not require > a system datastore (in fact something like a system datastore may > exist as the _logic_ of the system client, the good old example we had > is allocting an unused uid for an account that, once allocated, is > maintained in running). > > > > > > +1 to option 3. > > Consider an implementation that moves all the "hidden system logic" off-box > > to a controller, such that the initial config is literally supplied by an > external client. > > > > I have yet to hear a single use-case for creating a <system> datastore. > > "The client might want" is not a use-case for standardization. > > I do not understand the "pure view". Seems like if this was a real problem > to solve, > > then NMDA would have included a system datastore from the start. > > > > > > /js > > > > > > Andy > > > > > -- > 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/> > > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod > >
_______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod