Re: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements

"Alexander Clemm (alex)" <alex@cisco.com> Tue, 05 April 2016 23:35 UTC

Return-Path: <alex@cisco.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 5052D12D641 for <netmod@ietfa.amsl.com>; Tue, 5 Apr 2016 16:35:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.531
X-Spam-Level:
X-Spam-Status: No, score=-14.531 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, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com
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 sI7o03N_ySTV for <netmod@ietfa.amsl.com>; Tue, 5 Apr 2016 16:35:24 -0700 (PDT)
Received: from rcdn-iport-8.cisco.com (rcdn-iport-8.cisco.com [173.37.86.79]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1904512D5CC for <netmod@ietf.org>; Tue, 5 Apr 2016 16:35:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=7396; q=dns/txt; s=iport; t=1459899324; x=1461108924; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mufyhGdiuQrPiPZA1XDrgn6cQeOafWzRsYIax1eIJMI=; b=SPDKHgtO9Fqf+KG4PgL+o4fipYU0lstDbZqR2jMs1KtZX0tbUkpZcXjR w0pITRaO+xNI7qx3mU34VesNx+Gpm0LL00Y4hEw6wX7d66WmJZbrx17ty 41WT6UAEsMrTPxwdElAo86b7KRcAh+UuE29Z/NH20BOzFJ7/7ZMfuvl8w Y=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0AfAgBBSwRX/5ldJa1cgzdTfQa7NgENgXIXCoUiSgKBQTgUAQEBAQEBAWUnhEEBAQEDAQEBAWsEBwUHBAIBCBEEAQEBJwcnCxQJCAIEAQ0FCBOIBAgOwEgBAQEBAQEBAQEBAQEBAQEBAQEBAQERBIprhCeFbgWNTTiJfAGOA48VjxsBHgEBQoIEGYFKbIc5AX0BAQE
X-IronPort-AV: E=Sophos;i="5.24,445,1454976000"; d="scan'208";a="88637935"
Received: from rcdn-core-2.cisco.com ([173.37.93.153]) by rcdn-iport-8.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Apr 2016 23:35:23 +0000
Received: from XCH-RTP-004.cisco.com (xch-rtp-004.cisco.com [64.101.220.144]) by rcdn-core-2.cisco.com (8.14.5/8.14.5) with ESMTP id u35NZM50001060 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Tue, 5 Apr 2016 23:35:22 GMT
Received: from xch-rtp-001.cisco.com (64.101.220.141) by XCH-RTP-004.cisco.com (64.101.220.144) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Tue, 5 Apr 2016 19:35:21 -0400
Received: from xch-rtp-001.cisco.com ([64.101.220.141]) by XCH-RTP-001.cisco.com ([64.101.220.141]) with mapi id 15.00.1104.009; Tue, 5 Apr 2016 19:35:21 -0400
From: "Alexander Clemm (alex)" <alex@cisco.com>
To: Ladislav Lhotka <lhotka@nic.cz>, Martin Björklund <mbj@tail-f.com>
Thread-Topic: [netmod] kw comments on draft-voit-netmod-yang-mount-requirements
Thread-Index: AQHRjx7tOw12H05yWU25RG3JKFE7/J97iU2AgABlUaA=
Date: Tue, 05 Apr 2016 23:35:21 +0000
Message-ID: <8eab257636824a178c19ebaf83d80dca@XCH-RTP-001.cisco.com>
References: <51F6361D-5F32-449F-80D6-26A4B3569DC1@juniper.net> <20160405.113822.1614298419822308565.mbj@tail-f.com> <16B50CA8-0076-413D-87D1-FFBE6A54175C@nic.cz>
In-Reply-To: <16B50CA8-0076-413D-87D1-FFBE6A54175C@nic.cz>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [128.107.147.35]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/bhN3ol_46NH-kY06HxD4CBZNS2w>
Cc: "netmod@ietf.org" <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: Tue, 05 Apr 2016 23:35:26 -0000

Hi, Martin, Lada,

unfortunately I wasn't able to attend the discussion, but I have one comment regarding the "definition" vs "implementation" distinction.  

Clearly, peer-mount and alias-mount have a definition component to it.  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.  

The aspect that I don't think I agree with is that peer-mount and alias-mount should be treated merely as an "implementation".  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.  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.  

--- 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