Re: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements
Ladislav Lhotka <lhotka@nic.cz> Wed, 06 April 2016 12:30 UTC
Return-Path: <lhotka@nic.cz>
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 7479812D0A2 for <netmod@ietfa.amsl.com>; Wed, 6 Apr 2016 05:30:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] 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 N8t0hI9KSlne for <netmod@ietfa.amsl.com>; Wed, 6 Apr 2016 05:30:05 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id A64F712D8C9 for <netmod@ietf.org>; Wed, 6 Apr 2016 05:30:04 -0700 (PDT)
Received: from localhost (dhcp-b234.meeting.ietf.org [31.133.178.52]) by trail.lhotka.name (Postfix) with ESMTPSA id 844C01CC01E2; Wed, 6 Apr 2016 14:30:07 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Martin Bjorklund <mbj@tail-f.com>, alex@cisco.com
In-Reply-To: <20160406.091852.487853511276571798.mbj@tail-f.com>
References: <20160405.113822.1614298419822308565.mbj@tail-f.com> <16B50CA8-0076-413D-87D1-FFBE6A54175C@nic.cz> <8eab257636824a178c19ebaf83d80dca@XCH-RTP-001.cisco.com> <20160406.091852.487853511276571798.mbj@tail-f.com>
User-Agent: Notmuch/0.21 (http://notmuchmail.org) Emacs/24.4.51.2 (x86_64-apple-darwin14.0.0)
Date: Wed, 06 Apr 2016 09:29:55 -0300
Message-ID: <m24mbeapj0.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/5YmyAOmRuLgZwejBkon8eicGAXA>
Cc: netmod@ietf.org
Subject: Re: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.17
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: Wed, 06 Apr 2016 12:30:08 -0000
Martin Bjorklund <mbj@tail-f.com> writes: > Hi, > > "Alexander Clemm (alex)" <alex@cisco.com> wrote: >> Hi, Martin, Lada, >> >> unfortunately I wasn't able to attend the discussion, but I have one >> comment regarding the "definition" vs "implementation" distinction. > > I probably failed to communicate my point clearly. I did not want to > make the distinction in this way. > >> Clearly, peer-mount and alias-mount have a definition component to >> it. > > Yes, absolutely. I don't think I implied that they didn't. > >> This is why the YANG extensions were defined to define mountpoints. >> This definition component can be aligned with structural mount, and >> the goal needs to be to reuse the same. So far, so good. > > Yes, this was my point. In Eric's presentation he had "schema mount", > "peer-mount", and "alias-mount" on the same level; all three different > variations of the generic concept "YANG Mount". I think that is > incorrect; we should have a generic "schema mount", with "peer-mount" > and "alias-mount" being specializations of this concept. I would go even further: schema mount and peer mount are independent and orthogonal (not sure about alias mount - this is probably still something else). That is, I can build a data model with schema mount, and use it for validating a good old local datastore. Conversely, it is IMO possible to apply peer mount and validate the data against a data model that's constructed according to the existing rules. So, even though it may be sometimes beneficial to combine schema mount and peer mount, I believe they can and should be implemented as two independent concepts. A pure schema mount should have no security implications, whereas accessing remote data certainly has some. And accepting a (sub)schema from an external source requires IMO even higher level of trust. Lada > > >> The aspect that I don't think I agree with is that peer-mount and >> alias-mount should be treated merely as an "implementation". > > Again, this is not what I wrote. I wrote that: > > the client doesn't *necessarily* have to know if the the interfaces > data is implemented w/ "peer mount" or some other mechanism. > > [note "necessarily"] > > I agree that *some* clients need to be able to manage mount targets > etc, but not all. > >> I think >> I understand where you are coming from - to the user of mounted data, >> they don't care if there are other "instances" of the same data and >> how the data they see is populated. That said, I don't think this >> viewpoint is entirely correct, because there are certain semantics >> associated with it, and also because there are different implications >> with regards to mountpoint management which need to be reflected in >> the model. (For example, for peer-mount, there needs to be >> information on the remote system.) >> >> For the semantics, I think the fact should be captured when mounted >> data depends on target data. We capture conditions and constraints >> for semantically accurate models; the fact that the "aliased" data >> reflects another instance in another subtree is something that sure >> needs to be captured and understood. > > If the client is fully aware of the alias mount concept, why bother > with it? > > As I have said previously, we (tail-f) have had alias mount > implemented for many years (we call it "symlink"), and we have bad > experiences with all scenarios but the very simplest ones (simple leaf > to leaf alias). And even in this case users get pretty confused by > errors caused by validation that depends on the target leaf. > >> For example, without reflecting >> this relationship, an application might try to set an authoritative >> subtree/datanode to one value, the mounted version of it to a >> different value. So, whether or not there is an alias, or a peer, to >> an instance of data is something that should be reflected in the >> model. In other words, I don't think you can see the mountpoint and >> data mounted below it in entire isolation from the rest of the system. >> Another question concerns what you are actually mounting. In >> alias-mount, the mounted subtree may actually have been augmented and >> have other data nodes underneath it. Does the mounting apply to also >> augmenting data? For structural mount, the answer is clearly "no", >> but for peer-mount it doesn't have to be. > > I don't understand what you mean. Maybe you can show an example? > > > /martin > > >> >> --- Alex >> >> >> -----Original Message----- >> From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Ladislav >> Lhotka >> Sent: Tuesday, April 05, 2016 4:57 AM >> To: Martin Björklund <mbj@tail-f.com> >> Cc: netmod@ietf.org >> Subject: Re: [netmod] kw comments on >> draft-voit-netmod-yang-mount-requirements >> >> >> > On 05 Apr 2016, at 06:38, Martin Bjorklund <mbj@tail-f.com> wrote: >> > >> > Hi, >> > >> > Kent Watsen <kwatsen@juniper.net> wrote: >> >> [As a contributor] >> >> >> >> Note: this is a -00 document, but only because the draft's name >> >> changed. In reality this is like a >> >> draft-voit-netmod-peer-mount-requirements-04. Looking at the diffs, >> >> there aren't many changes, mostly cleanup and adding the "schema >> >> mount" concept. That is, the new "yang mount" term is use to cover >> >> all of "schema mount", "alias mount", and "peer mount". >> >> >> >> My comment is mostly high-level. I'm wondering about the need for >> >> this draft to include schema mount at all. That is, a schema mount >> >> solution draft is now an adopted WG item, and I'm unsure if the >> >> authors of that draft are looking to this one to define requirements. >> >> Perhaps the goal is to define the umbrella term "yang mount", but to >> >> be honest, I don't really see a need to have a term that spans both >> >> schema and data mounts. I'm not sure how others feel about this, but >> >> my thoughts are that we should define terms like: >> >> >> >> - scheme-mount >> >> - data-mount >> >> - remote data mount (a.k.a. peer mount) >> >> - local data mount (a.k.a. alias mount) >> >> >> >> More so than: >> >> >> >> yang-mount >> >> - scheme-mount >> >> - alias-mount >> >> - peer-mount >> > >> > Listening to Eric's presentation yesterday, I realized that I have a >> > slightly different view on these terms. >> > >> > I prefer to separate the *schema* (data model) from how things are >> > implemented. The various proposals for specific implementations (peer >> >> Yes, I expressed this opinion already in Yokohama. Moreover, Eliot's >> presentation indicated that there are use cases in which YANG is used >> for modelling data outside the context of a management protocol. So >> IMO it is legitimate to require that even with schema mount it is >> possible to write a compact specification of the complete schema. Such >> a schema is static as before, the only change is that we have more >> flexibility in composing the modules, whereas currently they can be >> only put side by side. Also, there needn't be any mechanism like peer >> mount, all data may be local. >> >> Perhaps this use case is really different from the more dynamic >> situation where the server needs to fetch the subschemas at runtime >> and the data are contributed by an external entity. >> >> Lada >> >> > mount and alias mount etc) all need a "schema mount" to take of >> > defining a proper data model. (This was the whole point of defining >> > structural-mount...) >> > >> > For example, suppose we have: >> > >> > container logical-devices { >> > list logical-device { >> > key name; >> > ... >> > yangmnt:mount-point logical-device; >> > } >> > } >> > >> > With the associated yang-library, a client might learn that >> > ietf-interfaces is mounted under the "logical-device" mount mount. >> > >> > Now, the client knows that there are paths: >> > >> > /logical-devices/logical-device/if:interfaces/if:interface >> > >> > but the client doesn't necessarily have to know if the the interfaces >> > data is implemented w/ "peer mount" or some other mechanism. >> > >> > >> > So, in my view, we have: >> > >> > schema mount >> > | >> > +---- peer mount >> > +---- alias mount >> > +---- other cool mount >> > >> > >> > >> > As a concrete example, peer mount might be used like this (example >> > taken from draft-clemm-netmod-mount-03): >> > >> > import ietf-schema-mount { >> > prefix yangmnt; >> > } >> > import ietf-peer-mount { >> > prefix pmnt; >> > } >> > >> > ... >> > >> > list network-element { >> > key "element-id"; >> > leaf element-id { >> > type element-ID; >> > } >> > container element-address { >> > ... // choice definition that allows to specify >> > // host name, >> > // IP addresses, URIs, etc >> > } >> > yangmnt:mount-point "interfaces" { >> > pmnt:target "./element-address"; >> > pmnt:subtree "/if:interfaces"; >> > } >> > ... >> > } >> > >> > >> > A client that knows about the generic, abstract schema mount can work >> > with this, without knowing anything of the specific implementation of >> > peer mount. >> > >> > [Actually, since peer mount is just one implementation technique, I'd >> > prefer to decouple the definition of this implementation detail from >> > the data model, but that's a different topic.] >> > >> > >> > /martin >> > >> > _______________________________________________ >> > netmod mailing list >> > netmod@ietf.org >> > https://www.ietf.org/mailman/listinfo/netmod >> >> -- >> Ladislav Lhotka, CZ.NIC Labs >> PGP Key ID: E74E8C0C >> >> >> >> >> _______________________________________________ >> netmod mailing list >> netmod@ietf.org >> https://www.ietf.org/mailman/listinfo/netmod >> -- Ladislav Lhotka, CZ.NIC Labs PGP Key ID: E74E8C0C
- [netmod] kw comments on draft-voit-netmod-yang-mo… Kent Watsen
- Re: [netmod] kw comments on draft-voit-netmod-yan… Martin Bjorklund
- Re: [netmod] kw comments on draft-voit-netmod-yan… Ladislav Lhotka
- Re: [netmod] kw comments on draft-voit-netmod-yan… Alexander Clemm (alex)
- Re: [netmod] kw comments on draft-voit-netmod-yan… Martin Bjorklund
- Re: [netmod] kw comments on draft-voit-netmod-yan… Ladislav Lhotka
- Re: [netmod] kw comments on draft-voit-netmod-yan… Eric Voit (evoit)
- Re: [netmod] kw comments on draft-voit-netmod-yan… Eric Voit (evoit)
- Re: [netmod] kw comments on draft-voit-netmod-yan… Juergen Schoenwaelder
- Re: [netmod] kw comments on draft-voit-netmod-yan… Eric Voit (evoit)
- Re: [netmod] kw comments on draft-voit-netmod-yan… Alexander Clemm (alex)
- Re: [netmod] kw comments on draft-voit-netmod-yan… Juergen Schoenwaelder