Re: [netmod] explicit mount

Lou Berger <lberger@labn.net> Fri, 26 February 2016 15:43 UTC

Return-Path: <lberger@labn.net>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 801B21A914A for <netmod@ietfa.amsl.com>; Fri, 26 Feb 2016 07:43:11 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.067
X-Spam-Level:
X-Spam-Status: No, score=-1.067 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, IP_NOT_FRIENDLY=0.334, J_CHICKENPOX_12=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=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 GDBLzc5heVWu for <netmod@ietfa.amsl.com>; Fri, 26 Feb 2016 07:43:09 -0800 (PST)
Received: from gproxy9-pub.mail.unifiedlayer.com (gproxy9-pub.mail.unifiedlayer.com [69.89.20.122]) by ietfa.amsl.com (Postfix) with SMTP id 487811A911B for <netmod@ietf.org>; Fri, 26 Feb 2016 07:43:09 -0800 (PST)
Received: (qmail 22115 invoked by uid 0); 26 Feb 2016 15:43:09 -0000
Received: from unknown (HELO cmgw2) (10.0.90.83) by gproxy9.mail.unifiedlayer.com with SMTP; 26 Feb 2016 15:43:09 -0000
Received: from box313.bluehost.com ([69.89.31.113]) by cmgw2 with id P3iz1s00M2SSUrH013j29S; Fri, 26 Feb 2016 08:43:07 -0700
X-Authority-Analysis: v=2.1 cv=PPOcp5aC c=1 sm=1 tr=0 a=h1BC+oY+fLhyFmnTBx92Jg==:117 a=N659UExz7-8A:10 a=-NfooI8aBGcA:10 a=uEJ9t1CZtbIA:10 a=jFJIQSaiL_oA:10 a=AUd_NHdVAAAA:8 a=48vgC7mUAAAA:8 a=pkOGN24kiyBW0tFtOCoA:9 a=G-rQu1zlrdzrTFfM:21 a=pabtfuzNzcOz4tsR:21 a=pILNOxqGKmIA:10
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=labn.net; s=default; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:Cc:References:To:Subject; bh=9aB6ckHE97KL74y64zsm1tr2Z7LhgHqk+FuIIqUMj7Y=; b=OdvZ9wUr8yi3UyAcM0nBw73a0ISOpES1IzUSC8/OwfQp5+Dod7gecgCJFN6d1ufS3n+bp/4ZRd/T5Abij7gqGd5IA0rMInUhrCen/5014/ROOnL8Muz+4tABFxe5EUCb;
Received: from box313.bluehost.com ([69.89.31.113]:34520 helo=[127.0.0.1]) by box313.bluehost.com with esmtpa (Exim 4.84) (envelope-from <lberger@labn.net>) id 1aZKXk-0006d4-VM; Fri, 26 Feb 2016 08:43:01 -0700
To: Robert Wilton <rwilton@cisco.com>, Martin Bjorklund <mbj@tail-f.com>
References: <20160225083228.GB19366@elstar.local> <20160225.094334.1498092398680350689.mbj@tail-f.com> <56CF2D5F.6060009@cisco.com> <20160226.082505.504004219149309283.mbj@tail-f.com> <56D03063.1060003@cisco.com> <1531d48bab8.2818.9b4188e636579690ba6c69f2c8a0f1fd@labn.net> <56D063E9.8010906@cisco.com>
From: Lou Berger <lberger@labn.net>
Message-ID: <56D0727F.4010509@labn.net>
Date: Fri, 26 Feb 2016 10:42:55 -0500
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0
MIME-Version: 1.0
In-Reply-To: <56D063E9.8010906@cisco.com>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: 7bit
X-Identified-User: {1038:box313.bluehost.com:labnmobi:labn.net} {sentby:smtp auth 69.89.31.113 authed with lberger@labn.net}
Archived-At: <http://mailarchive.ietf.org/arch/msg/netmod/QV5Bw5ruKBoSDljWaBNDpc8DcsE>
Cc: "draft-rtgyangdt-rtgwg-device-model@ietf.org" <draft-rtgyangdt-rtgwg-device-model@ietf.org>, netmod@ietf.org
Subject: Re: [netmod] explicit mount
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.15
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: Fri, 26 Feb 2016 15:43:11 -0000

Rob,
    I think chris spoke to this (indirectly) in an earlier mail -- that
the current approach of not specifying is most flexible from a future
proof stand point, i.e., we really don't want to specify based on what
exists in today's rapidly moving environment.

We have also discussed the possibilities of defining 'example profiles'
which would be what you'd expect to see from different classes of
devices, e.g., an wrt box vs a tier 1 PE - which could be informative.

Lou

PS Interfaces do need to show in NIs, check out the augmentations
defined as part of the model.  But I think your general point is still
valid.

On 2/26/2016 9:40 AM, Robert Wilton wrote:
> Lou, Martin,
>
> Is the network-instance schema-mount (from 
> draft-rtgyangdt-rtgwg-device-model) an example of where it would be 
> useful to indicate which modules would be expected to be mounted at that 
> point?
>
> Certainly it would seem that there are particular modules that you would 
> expect to be mounted at that point (e.g. routing) and other modules that 
> you would not (e.g. interfaces/hardware/etc).
>
> Rob
>
>
> On 26/02/2016 11:13, Lou Berger wrote:
>> Rob/Martin,
>>
>>
>> On February 26, 2016 6:01:23 AM Robert Wilton <rwilton@cisco.com> wrote:
>>
>>>
>>> On 26/02/2016 07:25, Martin Bjorklund wrote:
>>>> Robert Wilton <rwilton@cisco.com> wrote:
>>>>> On 25/02/2016 08:43, Martin Bjorklund wrote:
>>>>>> Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
>>>>>>> On Thu, Feb 25, 2016 at 09:23:57AM +0100, Martin Bjorklund wrote:
>>>>>>>
>>>>>>>>> I think the use cases are rather obvious. I build a device and 
>>>>>>>>> I like
>>>>>>>>> to rearrange existing models into a beautiful hierarchy (for some
>>>>>>>>> definition of beauty).
>>>>>>>> This would be pretty complicated.  Suppose I define my own 
>>>>>>>> beautiful
>>>>>>>> structure like this:
>>>>>>>>
>>>>>>>>     container my-interfaces {
>>>>>>>>       x:mount-point "if" {
>>>>>>>>         x:mount-module "ietf-interfaces";
>>>>>>>>       }
>>>>>>>>     }
>>>>>>>>     container my-routing {
>>>>>>>>       x:mount-point "rtr" {
>>>>>>>>         x:mount-module "ietf-routing";
>>>>>>>>       }
>>>>>>>>     }
>>>>>>>>
>>>>>>>> Note that with the mount-point defined in my draft, each 
>>>>>>>> mount-point
>>>>>>>> becomes itw own "jailed" or "chrooted" tree.  So references cannot
>>>>>>>> cross mount points.
>>>>>>> Could be the same here.
>>>>>>>
>>>>>>>> In this case, we have references between ietf-routing and
>>>>>>>> ietf-interfaces.  How would they work?
>>>>>>> How do they work in your solution? If interfaces is jailed and 
>>>>>>> routing
>>>>>>> is jailed, how does routing refer to the interfaces?
>>>>>> My solution does not support "name module mount".  It only supports
>>>>>> mouting of a "complete" set of modules (that are chrooted) - simply
>>>>>> because this is what we understand, have implemented, and have been
>>>>>> running for the last ~5 years.  (The same goes for ODL, I believe).
>>>>> I have been wondering whether "name module mount" is really about
>>>>> mounting only specific modules, or actually allowing the mounting
>>>>> schema to statically indicate which modules are guaranteed to be
>>>>> present.  I.e. specifically it doesn't explicitly prohibit other
>>>>> modules/data nodes from potentially also being mounted at the same
>>>>> path, but in the normal case you wouldn't expect them to be present.
>>>> This was my thinking as well.  But then the "random rearrangemt of
>>>> modules to get a more beautiful layot" use case doesn't apply.
>>>>
>>>> And if you start to do "ymnt:require-module" you probably also need to
>>>> specify "required-feature" and "required-revision"...
>>> Yes, I don't know if you would have to require those, but I can see that
>>> it would be useful to at least allow them.
>>>
>>>> So, before exploring possible solutions, it would be great if we
>>>> agreed on the problem to solve.  Does anyone have a use case for
>>>> explicit naming of modules to be mounted in the schema?
>>> I might be mistaken, but an example use case of this may have been given
>>> in the Yokohama L3SM WG meeting.
>>>
>>> That WG has a desire to build service level YANG models, and for such
>>> models I think that there are some scenarios where it may be desirable
>>> to build those service level models by reusing some of the device level
>>> YANG modules (e.g. perhaps QoS, ACLs, or BGP may have been mooted)
>>> rather than having to independently develop closely related copies of
>>> those YANG modules located at different schema paths which might
>>> potentially diverge over time.
>>>
>> L3SM and bgp was the case I referred to in the interim and commonly 
>> use as an example. (Although I wasn't part of the Yokohama discussion 
>> you mentioned.)
>>
>>> However, if this was the scenario considered then it is unclear to me
>>> whether you would want to mount the entirety of a QoS device level
>>> model, or would just want parts of it.  Arguably groupings may be a
>>> better solution here, but their usefulness depends on whether the device
>>> level model has been constructed in a way to make reuse of parts of that
>>> model feasible.
>>>
>> This probably would work if we had augmentable groupings or maybe 
>> "root less" containers -- need to think a bit more about the latter....
>> Lou
>>> Rob
>>>
>>>
>>>>
>>>> /martin
>>>>
>>>>
>>>>> My reasoning is that you don't want to have to statically specify in
>>>>> the mounting schema all augmentations, deviations and features.  But I
>>>>> also don't think that the mounting schema can guarantee that the
>>>>> mounted schema will always exactly implement the module(s) specified
>>>>> in the schema mount and all features without any augmentations or
>>>>> deviations.
>>>>>
>>>>> So for this to be useful, it means that there has to be a dynamic
>>>>> mechanism to determine exactly what modules has been mounted
>>>>> (e.g. like the ietf-yang-structural-mount module or ysdl).
>>>>>
>>>>> Given this, I think that you could possibly end up with just one
>>>>> "schema mount" with a couple of options:
>>>>>
>>>>> The first option would be an explicit list of modules that are
>>>>> guaranteed to be mounted at that location (or "*" to indicate a
>>>>> "complete" set of modules (that are chrooted).
>>>>>
>>>>> The second option would indicate where the runtime details of the
>>>>> mounted modules can be found: this option might indicate whether
>>>>> details of the mounted modules can be found inline in the data tree at
>>>>> the mount point using yang-library, or separately in the
>>>>> ietf-yang-structural-mount module/ysdl.
>>>>>
>>>>> Rob
>>>>>
>>>> .
>>>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>>>
>>
>> .
>>
>