Re: [yang-doctors] YANG dialects?

Ladislav Lhotka <lhotka@nic.cz> Fri, 20 December 2019 14:44 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A3A51120072 for <yang-doctors@ietfa.amsl.com>; Fri, 20 Dec 2019 06:44:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.998
X-Spam-Level:
X-Spam-Status: No, score=-6.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=nic.cz
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 AY95BgRHaIDK for <yang-doctors@ietfa.amsl.com>; Fri, 20 Dec 2019 06:44:48 -0800 (PST)
Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0247512006E for <yang-doctors@ietf.org>; Fri, 20 Dec 2019 06:44:46 -0800 (PST)
Received: from birdie (unknown [IPv6:2001:1488:fffe:6:a88f:7eff:fed2:45f8]) by mail.nic.cz (Postfix) with ESMTPSA id 3F55A140E4A; Fri, 20 Dec 2019 15:44:42 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1576853082; bh=B/lo919pSGO5WoW4TaM4h1PPkLKc2Ci5vALOTvjZ7Wg=; h=From:To:Date; b=nSo1cu7zB97QOS76NT9vIhQ0IAZnYnDufK8mOISEdKICLAjm7dqYnQtJQgEMLw7Os YFdtrtw4cVOSH+DxAtwkcIaHlQo1ySRYthILtIHUIpiSzEbz7QtHNjfwFvnuqOM9YH ITaPU+CnP12VmJGXqV3r9q41r3qZEN5dRYQXcbSE=
Message-ID: <acf7a84b55428a3dd05bd646a518529e412f3da0.camel@nic.cz>
From: Ladislav Lhotka <lhotka@nic.cz>
To: Jan Lindblad <janl@tail-f.com>
Cc: yang-doctors@ietf.org
Date: Fri, 20 Dec 2019 15:44:42 +0100
In-Reply-To: <18F4705E-7ECC-4698-8787-5604CDA8ED79@tail-f.com>
References: <CABCOCHTB+V6sV8hRcAC+OfseBBN=jUQnHQxzEVB_1drWhaEVXg@mail.gmail.com> <20191218.220130.545256750871048075.mbj@tail-f.com> <CABCOCHRfNrz+cNMA8ciRYGEM-7aR=S2NYJzU-t8JQ620Zs=hvQ@mail.gmail.com> <20191219.090708.1031388562992503497.mbj@tail-f.com> <MN2PR11MB4366F797234C963E23734BA1B5520@MN2PR11MB4366.namprd11.prod.outlook.com> <6684E0F3-DC49-4E94-B4FB-1109662F394D@tail-f.com> <1b398c323c72edc5970e90af06b70226b6eed755.camel@nic.cz> <18F4705E-7ECC-4698-8787-5604CDA8ED79@tail-f.com>
Organization: CZ.NIC
Content-Type: text/plain; charset="UTF-8"
User-Agent: Evolution 3.34.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: clamav-milter 0.101.4 at mail
X-Virus-Status: Clean
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/iVNoDxUs6SDQ5pO13jVjZw8QlOc>
Subject: Re: [yang-doctors] YANG dialects?
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 20 Dec 2019 14:44:50 -0000

On Fri, 2019-12-20 at 11:07 +0100, Jan Lindblad wrote:
> Lada,
> 
> > > > > o  extension: An extension attaches non-YANG semantics to statements.
> > > > > 
> > > > > This is not the case here, it is only syntactically compatible. If
> > > > > tool A
> > > > > says that some instance data is valid, but tool B says it isn't, then
> > > > > the
> > > > > standard is gone.
> > > > > 
> > > > > Lada
> > > 
> > > Of course it would be legal. It's always legal for a NETCONF server to
> > > reject
> > > an edit-config for no apparent reason (from a YANG perspective), so all
> > > device
> > > YANG models would still be legal if all pattern statements were removed,
> > > but
> > > the same string pattern constraints still enforced by the devices. The OC
> > > group could therefore remove their pattern statements and introduce a YANG
> > > extension oc:posix-pattern (or oc:go-pattern, or whatever) that gives a
> > > hint
> > > to some clients what is expected. The clients that don't understand this
> > > extension would just se a rejection for no apparent reason (from a YANG
> > > perspective).
> > 
> > I strongly disagree. Why then do we have so much text about constraints,
> > validity etc. in RFC 7950? The benefit of schema validation is that an
> > implementation can rely on an external validator and needn't clutter the
> > code
> > with all kinds of input data checks. But if the validation result depends on
> > whether I choose library A or B, this concept simply falls apart.
> > 
> > Lada
> 
> I completely agree that the device interface behavior should be exposed with
> much detail in the corresponding YANG.
> 
> Practically, however, I don't think it is reasonable to expect that every
> little rule of the implementation is exposed. YANG isn't expressive enough to
> cover everything. And actually, there are sometimes cases where I advise not
> to add as many constraints into the model as technically possible by the YANG
> language. Half-a-page long XPath expressions may detract sharply from
> readability, performance and universality. Implementation details may start to
> leak into the interface.

I understand this but I guess the problem is opposite: A server developer uses a
YANG library for validating config before applying it. If an implemented module
contained say

    oc:pattern '^x[123]$';

the developer might think that this constraint is checked by the library and
take it for granted. But if the library in fact silently ignores the oc:
extension, then arbitrary strings will be accepted and can do all kinds of nasty
things.

> 
> There are also operational aspects to consider, such as a device running out
> of memory at some point. A client therefore has to be prepared that an edit-
> config may be refused for no apparent reason. There is no text in the RFC
> stating that the YANG constraints in a module must be complete, even if I
> regard that as a goal. One reason UML models tend to be useless as interface
> descriptions in practice is that they lack these constraints.
> 
> YANG extensions are a practical way to introduce validation concepts not
> feasible to express with YANG and XPath. Here are some examples:
> + Constraints on compatible colors in an optical YANG model (Not expressive
> enough)
> + Constraints on configured paths being disjunct (Not computationally
> efficient)
> + Constraints on an interface being unused by all other services (Not
> universally reusable [layer violation] if service YANG depends on device YANG)

All these constraints are related to a particular use case but oc:pattern would
really affect YANG semantics. For example:

- if oc:pattern is used in a type definition, does it also apply to a derived
type?

- according to sec. 8.1 in RFC 7950, this must be true in all data trees: 'All
leaf data values MUST match the type constraints for the leaf, including those
defined in the ... "pattern" properties.' But does this also apply to
oc:pattern?

In short: I believe that the notion of validity with respect to a YANG schema
should not depend on extensions as they are defined in RFC 7950. That's why I
proposed the critical/core extensions, because then YANG implementations can
learn that a modified YANG is assumed, and refuse to validate instances or at
least warn the user that things may unexpectedly break.

Lada

> 
> In these cases it may not be possible or desirable to express the constraints
> in YANG/XPath. It may be possible express the constraint using domain specific
> extension keywords, which should be better than not expressing it at all.
> Clients that do not understand the added keywords would still work as long as
> the configurations generated are valid. Clients with domain understanding,
> possibly including understanding of the extension keywords, have a better
> chance at generating valid configurations.
> 
> /jan
> 
-- 
Ladislav Lhotka
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67