[netmod] 答复: system configuration sync mechanism

"Fengchong (frank)" <frank.fengchong@huawei.com> Tue, 03 August 2021 01:45 UTC

Return-Path: <frank.fengchong@huawei.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6F5423A08DE for <netmod@ietfa.amsl.com>; Mon, 2 Aug 2021 18:45:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JydLCnt46rU6 for <netmod@ietfa.amsl.com>; Mon, 2 Aug 2021 18:45:46 -0700 (PDT)
Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6CA503A08D9 for <netmod@ietf.org>; Mon, 2 Aug 2021 18:45:46 -0700 (PDT)
Received: from fraeml735-chm.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4GdyPV0Ym0z6FFy3 for <netmod@ietf.org>; Tue, 3 Aug 2021 09:45:34 +0800 (CST)
Received: from dggpemm100001.china.huawei.com (7.185.36.93) by fraeml735-chm.china.huawei.com (10.206.15.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Tue, 3 Aug 2021 03:45:42 +0200
Received: from dggpemm500003.china.huawei.com (7.185.36.56) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Tue, 3 Aug 2021 09:45:40 +0800
Received: from dggpemm500003.china.huawei.com ([7.185.36.56]) by dggpemm500003.china.huawei.com ([7.185.36.56]) with mapi id 15.01.2176.012; Tue, 3 Aug 2021 09:45:40 +0800
From: "Fengchong (frank)" <frank.fengchong@huawei.com>
To: Andy Bierman <andy@yumaworks.com>, Kent Watsen <kent+ietf@watsen.net>
CC: Balázs Lengyel <balazs.lengyel=40ericsson.com@dmarc.ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [netmod] system configuration sync mechanism
Thread-Index: Add4ieaMV4M1zhk1St6ROfyHhlohlAAAAuNAADd2vwAAKFO5cAJhxiGAAJuFmrD//87VgIAAB8mAgAODFgCAAAUFAP//TxCA
Date: Tue, 03 Aug 2021 01:45:40 +0000
Message-ID: <b4ead22f31c44b5296e51138befd6816@huawei.com>
References: <5b76dae2175545959f0006b036efd647@huawei.com> <2d1262bc90fc49d08eb641365b959ea4@huawei.com> <0100017aab854793-eb989e55-8496-451b-84de-7f17cb0720d5-000000@email.amazonses.com> <add2ee3bb9094e1da6a3160824d5fdff@huawei.com> <0100017aee17493f-6b9b747c-f0f1-4a70-b929-aaa0350a555f-000000@email.amazonses.com> <aa3dfdb471f0430aa50c4e35b9672fb1@huawei.com> <AM8PR07MB823008D0A83507EFCBD2DDA3F0ED9@AM8PR07MB8230.eurprd07.prod.outlook.com> <CABCOCHT6yGFj84ryK9wghFnO52uQoLydKm-OU9M5+gqqs4jAzA@mail.gmail.com> <0100017b08feb7ef-71cbbcaa-256f-4947-ab27-9fdd40f2993a-000000@email.amazonses.com> <CABCOCHT59+sf92vzj=qE0KPxic-h6Nix2+Mp5veforS02Xchgg@mail.gmail.com>
In-Reply-To: <CABCOCHT59+sf92vzj=qE0KPxic-h6Nix2+Mp5veforS02Xchgg@mail.gmail.com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.136.113.80]
Content-Type: multipart/alternative; boundary="_000_b4ead22f31c44b5296e51138befd6816huaweicom_"
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Odk8_IPZm-yOYe8OSiy5MCdwd4w>
Subject: [netmod] 答复: system configuration sync mechanism
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Aug 2021 01:45:52 -0000

Hi andy and all.

I don’t think get-data with origin can solve the issues below:


1.       Some leafs like interface type CAN NOT be modified by user, but can be referenced by other config nodes(e.g. using leafref or occur in when/must). The validation will be fail if these leafs are not be configured by user now explicitly (we assume these leafs are optional and no default value).

2.       Some instances are generated by system, but these instances can be referenced by other config nodes. The validation must be fail if these instances are not be recreated by user explicitly now.

3.       User may need know what the original system configuration is, if we get data from <operational>, you may get the modified system configuration.(for example, user modify or template is expanded, or only active instances)

I don’t care about whether system datastore is imported to running or intended datastores. But I think if a config node reference a system node, the validation (running or intended datastores) will be successful even if the system node is not configured by user explicitly.

Especially on the client side,  if a client need validate all data retrieved from server, the validation SHOULD be successful. If system configuration are not imported to running, at a minimum, the client needs to know what the original system configuration is. Another way is adding with-system-used parameter to get-config operation to retrieved all user configuration and system configuration referenced by user configuration.

发件人: netmod [mailto:netmod-bounces@ietf.org] 代表 Andy Bierman
发送时间: 2021年8月3日 6:50
收件人: Kent Watsen <kent+ietf@watsen.net>
抄送: Balázs Lengyel <balazs.lengyel=40ericsson.com@dmarc.ietf.org>; netmod@ietf.org
主题: Re: [netmod] system configuration sync mechanism



On Mon, Aug 2, 2021 at 3:31 PM Kent Watsen <kent+ietf@watsen.net<mailto:kent%2Bietf@watsen.net>> wrote:

Hi Balazs, Andy, Quifang,

I agree a new datastore will just add complexity without any value.
Your solution approach is better, but I think it would require a new YANG version
to allow config node XPath to reference non-config nodes.

In no case is there a need for a config Xpath to ref non-config.


Another solution is to model the referenced node as config=true, but setup
automatic NACM rules so no user editing is allowed. This works well for
setting up an initial config that gets saved and not changed unless a reset is done.

I don’t like the NACM dependency.



What if <intended> is what is NV-stored?  When that occurs, the config changes from system to user config.
Routers have been saving the combined config for decades. IMO the standards
intentionally avoid discussing the conversion of a datastore to/from NV-storage.

I’m unsure about this point, but a don’t see any dependency on an NV-store needing to use a particular encoding or format.

As I see it this is the same problem that we discussed in https://github.com/netmod-wg/yang-next/issues/41.
I know this is a radical change, but I think using a new YANG extension to create a read-only config=true datatype is a much cleaner solution. One which some companies have already implemented.
+1

Actually, separate running and system would be a radical change, not this.
Cleaner and less disruptive.

I disagree with the need to resolve issue #41 here, and I disagree a <system> datastore would be a radical change, or even complicated.

That said, something like RFC 6243 (with-defaults) but called “with-system” could work.  That is, the “system" config is like <running> config that is hidden until asked to be revealed. It would be interesting to discuss if “with-defaults" returns all of the system config, or just the parts that are used, assuming we define “used” appropriately.   Presumably system-defined ordered-list entries cannot be ordered by user, or used as before/after pivots.

We could even do both: have a read-only <system> datastore *and* a "with-system" interaction API.  Each complimenting the other.


I prefer neither.
I think NMDA <get-data> with an origin-filter and/or with-origin parameter already solves this problem.


Andy


FWIW, a "with-system <running>” still may not pass validation if, e.g., templates need to be expanded.  Of course, any controller/orchestrator can expand the templates themselves to resolve that concern.  Such a system could also fetch <system> without skipping a beat.

Thought exercise: a controller is managing 1000 endpoints all running the same software version.  Is it better for the controller to get "with-system <running>” 1000 times, or get <system> once and have knowledge for how its merged in?

K.