Re: [netmod] review of draft-ietf-netmod-schema-mount-08

Kent Watsen <> Tue, 07 November 2017 21:51 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DA993126C19 for <>; Tue, 7 Nov 2017 13:51:57 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.021
X-Spam-Status: No, score=-2.021 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_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id j0rwGnndAkkB for <>; Tue, 7 Nov 2017 13:51:55 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id EDABB128D0F for <>; Tue, 7 Nov 2017 13:51:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xeef40Wy8Valmifyne0a4fYtwRRCNnFwgKRAuswYelI=; b=PGPUBQikzDbQscdVLtzhhv1ExCs4IvgIUX5KtFbCbgYap9/QWiu0GkD6E3F4UBR8xTBjrRpqI2EPhPHy+31V+FK4UuLpYnf6E1UghA+VJcIViw/ntqu34GrqPxk3NBTmAA1M56EiSx+WEXFMbUL/Mj7lmzyeHUfEi894e2VucJU=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id; Tue, 7 Nov 2017 21:51:53 +0000
Received: from ([]) by ([]) with mapi id 15.20.0218.005; Tue, 7 Nov 2017 21:51:53 +0000
From: Kent Watsen <>
To: Ladislav Lhotka <>, "" <>
Thread-Topic: [netmod] review of draft-ietf-netmod-schema-mount-08
Thread-Index: AQHTVB4smPzO0RNFj02ycL7IpPSiYqMCz3AAgAZZvwA=
Date: Tue, 7 Nov 2017 21:51:53 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/f.20.0.170309
x-originating-ip: []
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BLUPR05MB273; 6:NbZ0XOZ1+CfQNXlIGask0p1oAvOi3cFl7ppMyyZImUiq/cXI52bZXpi+hUcz2dN/rzGPpoqTtXeHQKDVcP18QvEvW4Y+5gNijj5ZcF9Qa9edOwZCT7K2ZCTIJY/wO5VGFmIQlmbDWtSUna0jQS82sPSrRHbb6z3HcIkdT8acyl9Q4vUamxr6aAy3v6mjOqAnGNGp8D6n3RZEPNdmrR00+OnopA0QGJySXyRzc3xdE0X8VYnHslfE6ISFWCeBJZQ1uqdABR/pO8Fwd717c6ORkllFfxFFRTA7FATIFoI6w8QORbSzpJZieSM2K6KHlttIEADxbaEiydPK85icePjnqsrv7dcewxiMQr5quOKRQpM=; 5:nc7Qw20BMR1DPf3MyQCHyaHK7LAM8UxtZSaYLeetwr/SbeC/vNBmhog9vBQscCperBeEIlCi767Ym+1ISa+WPm8BgePnLwem0z6ZV11b2n4pnAij8byXiI8zcP8DWX4dSeEQtTXtAHI6xz9F2ps0zE/ZFZhxcJHALKZ4VVkMwHY=; 24:nkHpV9o7yGxTlLcSdQhGkBz0OvJarCIjltV3jk3JhMqf2t04NEXZFtRv6pQ7y0Zxu/2Rz3aT5g/qWrbHZ9f4IwUc3v1/WII/kAOLPimgd+0=; 7:IrcJpCSvijL26KtPwWUFEn7Hx6/Bbg9CAsQJNxIrs+U+AY8w0zz4eXd3bXgiQzooWT+aYpTNtH9J8e4IKfEuOX8jFv4GGNUgyfzJCCJhkwEMHGobRzlCBZaY63AVZ9ZCJ1omFwHkxtZpShdT+jy5Bpp8zF4Ofvdy5vtIuKuEc3WSTkVrUJ/x8rgiUC1jQVxD80UllQmN16AX9KqAPMWVw2TyNg4jXQpyX/9bZXdYrn1VwyYh24eCrOfOHiyj6VXd
x-ms-exchange-antispam-srfa-diagnostics: SSOS;
x-ms-office365-filtering-correlation-id: ae94b9ce-8909-4524-583b-08d52629c217
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603249); SRVR:BLUPR05MB273;
x-ms-traffictypediagnostic: BLUPR05MB273:
x-exchange-antispam-report-test: UriScan:(192374486261705)(788757137089)(17755550239193);
x-microsoft-antispam-prvs: <>
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(3231021)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR05MB273; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR05MB273;
x-forefront-prvs: 0484063412
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(39860400002)(346002)(189002)(199003)(51914003)(52644002)(5660300001)(14454004)(8936002)(83716003)(77096006)(7736002)(316002)(478600001)(8676002)(3280700002)(66066001)(25786009)(6506006)(81166006)(2950100002)(33656002)(2906002)(305945005)(106356001)(81156014)(68736007)(6436002)(83506002)(3660700001)(6486002)(230783001)(36756003)(50986999)(76176999)(6246003)(54356999)(105586002)(97736004)(229853002)(2900100001)(189998001)(110136005)(82746002)(58126008)(2501003)(102836003)(86362001)(3846002)(101416001)(53936002)(6512007)(99286004)(6116002); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR05MB273;; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None ( does not designate permitted sender hosts)
authentication-results: spf=none (sender IP is );
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-ID: <>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: ae94b9ce-8909-4524-583b-08d52629c217
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Nov 2017 21:51:53.3836 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bea78b3c-4cdb-4130-854a-1d193232e5f4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR05MB273
Archived-At: <>
Subject: Re: [netmod] review of draft-ietf-netmod-schema-mount-08
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 07 Nov 2017 21:51:58 -0000

> Hi Kent,
> thanks for the thorough review, see my responses inline.

Hi Lada, please see below.

>> 1. From Section 4:
>>    Routing configuration inside an NI often needs to refer to interfaces (at
>>    least those that are assigned to the NI), which is impossible unless such
>>    a reference can point to a node in the parent schema (interface name).
>> This seems overstated.  Rather it is a result of an earlier design decision.
>> An alternate solution might have exported the global interfaces into a 
>> config false list inside the mount jail.   Was such a solution
>> discussed?
> Do you mean something like having "symlinks" to interfaces inside the
> mount jail? Yes, this was discussed and rejected. According to Martin,
> tail-f had made a very bad experience with this approach.

Yes, a little bit like a symlink inside the mount jail.  Good to hear
that it was discussed.  I still think the above "impossible" word is
overstating things.  Perhaps s/impossible such/possible when/?

>> 2. Also from Section 4:
>>    For every schema mounted using the "use-schema" method, it is possible 
>>    to specify a leaf-list named "parent-reference" that contains zero or more
>>    XPath 1.0 expressions.  Each expression is evaluated with the node in the
>>    parent data tree where the mount point is defined as the context node.  
>> If you can nested-mounts, can you also have nested parent-references?
> Yes, but you can only refer to the level directly above.


>> 3. Also from Section 4 (same paragraph):
>>    For the purposes of
>>    evaluating XPath expressions within the mounted data tree, the union
>>    of all such nodesets is added to the accessible data tree.
>> Could this ever result in name collision?
> Potentially yes, but sibling nodes with the same name are not an issue
> for XPath evaluation. 

I don't know if I agree that it can't be an issue.  What if the module
has a top-level /widgets container, and there is a parent-reference to
a /widgets container, and there is an Xpath to /widgets - seems like
you could have both false-positives and false-negatives...

>> 4. Regarding Security Considerations, what about
>> /yangmnt:schema-mounts?
> You are right, the security considerations should be similar
> to those in RFC 7895. It is the same type of risk.


>> Also, should how NACM interacts with mounted instance data be
>> specified?
> This is a good question because, in principle, top-level NACM rules
> can address instances of mounted schemas. On the other hand,
> ietf-netconf-acm can also be a part of the mounted schema - and if
> so, can its rules also address instances in the parent schema via
> the parent-reference mechanism?
> But I would say it is up to rfc6536bis to deal with these questions.

I don't know, but it seems that this draft is introducing the concept.
Not to mention, rfc6536bis is already with the IESG.  In either case,
let's work out what it means and then decide which draft it needs to
go into.

>> 5. This document does not say anything about how it relates to NMDA.
>> Clearly all this is targeted to the conventional datastores, but how
>> is it reflected in e.g., <operational>?  Does anything need to be said
>> here?
> The "use-schema" case shouldn't pose big problems because it is
> essentially an externally specified augment. The "inline" case is
> somewhat disturbing though: could the embedded YANG library instances
> be different in different datastores?

YANG Library is only available in <operational> (it's all config false).
I think you mean the embedded YANG Library instances under the mount 
points.  Yes, you may have a problem here.  Still, this isn't my question,
is more about schema-mounting requirements across datastores.  E.g., if
a schema-mount exists in <running>, must it existing in <intended> and
<operational> as well?  Conversely, if a schema-mount exists in
<operational>, must it exist in <running>?  I think this draft should
clarify such things.

>> What if the mounted schema has deviations in <operational>.
> I don't understand why this could be an issue.

I'm not saying it's a problem yet.  I'm just stating that such things
can occur and it's unclear that, if they do, could it cause problems.
For instance, a mounted schema may be looking for a parent reference
that doesn't exist because of a deviation.

>> Nits (line-break separated):
>> Is "other optional choices" being vague on purpose?  Should it just
>> call out features and deviations?
>Yes, it should.
>> "the YANG library data" seems odd.  Maybe "the instance of the YANG
>> Library module"?
> It is the same but I prefer the former. Note that the term "instance"
> is not defined in RFC 7950.


>> - document, and could be possibly dealt with in a future revision of the YANG data modeling language
>> + document, as it needs to be dealt with as an update to the YANG data modeling language
> I am not sure that it *needs* to be done, because it could have
> far-reaching consequences.

Here I'm using "needs" not to mean that it "has to be done" but more that,
if it is done, it would have to be done in an update to the YANG data 
modeling language.  The current sentence seems too open-ended...

>> - Schema mount applies to the data model
>> + Schema mount regards the data model
> OK
>> - This document allows mounting of complete data models only.
>> + This document allows mounting of complete modules only.
> Correct
>> - may extend this model by defining
>> + may extend this solution by defining
> Or perhaps "approach"? I would leave "solution" to marketing folks.

"approach" is fine.

>> In S3, replace "YANG 1.1" with "YANG 1.1 and its continuances"?
> Not sure. For example, next version of YANG can/should turn "mount-point"
> into a built-in statement.

So then, when we define yang-next, we'd be forced to either incorporate
schema-mount or simultaneously publish an update to this RFC to allow
it to work with the new version of YANG?  Even if YANG-next defined a
built-in equilvalent, would we not want this mechanism to continue to
be supported, for backwards compatibility?

>> - A "container" or "list" node
>> + A 'container' or 'list' node
> Actually, following RFC 7950 conventions, no quotes should be used here.

I'm confused about these conventions - are they written down somewhere.
In Martin's review of zerotouch draft, he dinged me on my mis-use of
single-quotes, for the second time.  Looking at RFC 7950, I don't see
the convention listed anywhere, or are you saying that the convention
is throughout the RFC and folks are expected to implicitly understand
what it is?

>> - of "container" and "list" statements.
>> + of the "container" and "list" statements.
> OK
>> - Mounted schemas for all mount points
>> + The schema for all mount points
> OK
>> - in the "yangmnt:schema-mounts" container.
>> + in the top-level "yangmnt:schema-mounts" container defined in the
>> "ietf-yang-schema-mount" module defined in [Section 8].
> Section 2.2 defines the relationship between the "yangmnt" prefix and
> that module.

Yes, but this is the first time in the RFC that /schema-mounts is
mentioned.  The prefix is there, but why not guide the user a little

>>  The "refers through its key" part is not clear - are you talking
>>  about the mount-point's argument/label?
> Yes. Would it be more clear to say this?
>   Every entry of this list refers through its key to a mount point
>   label and specifies the schema for all mount points with that label.


>> I don't understand "above those that are defined in the parent
>> schema."  - mostly the word "above" is throwing me…
> Yes, "apart from" is better.


>> - If multiple mount points with the same name
>> + If multiple mount points with the same label    (wasn't it called a
>> "label" before?)
>> Regarding "Note, that in this case a mount point", beyond the missing
>> comma, an example would be very helpful.  I don't know if I understand
>> it right.
> You don't, because that sentence is completely wrong - it is yet another
> example of mixing up the schema and instance. The idea is that if (for
> some strange reason) the mounted schema includes the ietf-yang-library
> module, then all *instances* of this (mounted) YANG library must be
> identical and have the same content as the "use-schema" data.


> This is another reason why I would prefer to have only one YANG library
> at the top - it is not regular state data.

Does this need to be discussed some more?

> In the YANG itself, "State data nodes" didn't parse well, "Protocol
> accessible nodes" instead?
> Do you mean the comment? The same or similar comment is in many existing
> modules - for example, ietf-yang-library has "Operational state data
> nodes". It is true though that it doesn't make much sense here as long
> as there are no configuration data.

Yes, the comment.  Well, this is a nit, so take it for what it's worth,
but it did seem a bit unusual when I read it.

>> Regarding the first paragraph in Appendix A, I took me some time 
>> to realize that the rtgwg-device-model included 
>> ietf-network-instance and that those modules define mount-points 
>> and where.   Please make this easier for first-time readers.
> OK, we should try.


>> In A1, is ietf-network-instance missing?  - might want to double-check
>> all
> No, because A1 describes only the top (device) level,
> ietf-network-instance is a part of the LNE schema in A.2.


>> In all the examples, but beginning with A2, it might help to show the
>> RESTSCONF protocol operation that illustrates the result, so that it's
>> clear where in the data model the particular instance is located.
>> Anything that can be done to provide more context would be helpful.
> It seems to make sense in A.3 - to demonstrate an URI of a resource
> inside an NI.

great, anything that helps.

>> For the 2nd half of A2, what happens if there is an "lne-2", will it
>> also get "eth0"?
> I think "ietf-logical-network-element:bind-lne-name" leaf should contain
> the name of a LNE to to which the interface "eth0" is assigned, so it
> looks like a mistake.

glad to hear there might be a mistake

>> - which should include at least
>> + which should include at least an instance of
>> ietf-yang-library:modules-state and ietf-interfaces:interfaces-state,
>> as follows:
> But the important point is that only interfaces assigned to the LNE
> need to be included, so it is not just "an instance of
> ietf-interfaces:interfaces-state". Why do you think the existing text
> isn't OK?

What you have isn't wrong, per se, I'm just trying to make the text
more readable.  How about:

  which should include at least an instance of
  ietf-yang-library:modules-state and ietf-interfaces:interfaces-state,
  containing only the entries relevant to the mount-point, as follows:

- or use your own words?

> Lada