Re: [netmod] schema mount open issue #1

Lou Berger <lberger@labn.net> Tue, 22 August 2017 18:33 UTC

Return-Path: <lberger@labn.net>
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 284DF132A07 for <netmod@ietfa.amsl.com>; Tue, 22 Aug 2017 11:33:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.8, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (768-bit key) header.d=labn.net
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 IsTFWaPLU27I for <netmod@ietfa.amsl.com>; Tue, 22 Aug 2017 11:33:34 -0700 (PDT)
Received: from gproxy9-pub.mail.unifiedlayer.com (gproxy9-pub.mail.unifiedlayer.com [69.89.20.122]) (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 EF156132A03 for <netmod@ietf.org>; Tue, 22 Aug 2017 11:33:33 -0700 (PDT)
Received: from cmgw2 (unknown [10.0.90.83]) by gproxy9.mail.unifiedlayer.com (Postfix) with ESMTP id 33FA31E07C5 for <netmod@ietf.org>; Tue, 22 Aug 2017 12:33:32 -0600 (MDT)
Received: from box313.bluehost.com ([69.89.31.113]) by cmgw2 with id 0JZU1w00c2SSUrH01JZXfE; Tue, 22 Aug 2017 12:33:32 -0600
X-Authority-Analysis: v=2.2 cv=T7z8d7CQ c=1 sm=1 tr=0 a=h1BC+oY+fLhyFmnTBx92Jg==:117 a=h1BC+oY+fLhyFmnTBx92Jg==:17 a=IkcTkHD0fZMA:10 a=xqWC_Br6kY4A:10 a=KeKAF7QvOSUA:10 a=48vgC7mUAAAA:8 a=6e3FJO9Xp4FblCK-oIUA:9 a=QEXdDO2ut3YA:10 a=w1C3t2QeGrPiZgrLijVG:22
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:References:To:Subject:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=G7YDNuNbi4v+JbKzF/4tRAis6WAEkD8eDwpKuSQmHE8=; b=UzAOCcwUnfrsJ9mDEukxVipM3U fgVr+GLVQYlfAJGcaXJDmGtKlLJ9S0dhDJoMF+TkeZRc07z75lm9FYMeKWzQTLGcQzbMG3jB7eOQ6 ECyAqom93EVpipVhm/IMU/GV/;
Received: from pool-100-15-84-20.washdc.fios.verizon.net ([100.15.84.20]:33992 helo=[IPv6:::1]) by box313.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.87) (envelope-from <lberger@labn.net>) id 1dkDzU-000ixi-0d; Tue, 22 Aug 2017 12:33:28 -0600
To: Martin Bjorklund <mbj@tail-f.com>, netmod@ietf.org
References: <20170822.122022.1375224682803846655.mbj@tail-f.com>
From: Lou Berger <lberger@labn.net>
Message-ID: <1aa26e59-6999-8f8a-6cd6-5e74050453bd@labn.net>
Date: Tue, 22 Aug 2017 14:33:25 -0400
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
MIME-Version: 1.0
In-Reply-To: <20170822.122022.1375224682803846655.mbj@tail-f.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - box313.bluehost.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - labn.net
X-BWhitelist: no
X-Source-IP: 100.15.84.20
X-Exim-ID: 1dkDzU-000ixi-0d
X-Source:
X-Source-Args:
X-Source-Dir:
X-Source-Sender: pool-100-15-84-20.washdc.fios.verizon.net ([IPv6:::1]) [100.15.84.20]:33992
X-Source-Auth: lberger@labn.net
X-Email-Count: 2
X-Source-Cap: bGFibm1vYmk7bGFibm1vYmk7Ym94MzEzLmJsdWVob3N0LmNvbQ==
X-Local-Domain: yes
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/eeTeIWhjCq0D7U8hco3u5pSfcy0>
Subject: Re: [netmod] schema mount open issue #1
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
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, 22 Aug 2017 18:33:36 -0000

Hi Martin,

See below.


On 8/22/2017 6:20 AM, Martin Bjorklund wrote:
> Hi,
>
> Lada presented an open issue in schema mount in Prague.  (See slide 6
> in
> https://datatracker.ietf.org/meeting/99/materials/slides-99-netmod-sessb-schema-mount)
>
> The original problem comes from the NI use case
> (https://tools.ietf.org/html/draft-ietf-rtgwg-ni-model).  In this
> use case, interfaces are assigned to NIs by:
>
>    augment /if:interfaces/if:interface:
>      +--rw bind-ni-name?   -> /network-instances/network-instance/name
>
> Modules that are mounted within the NI might have references to
> interfaces.  The idea is that a specific NI can only reference the
> interfaces that has been assigned to it.
>
> In schema mount, we have the "parent-reference" XPath expression that
> in this case will be "/if:interfaces/if:interface".  The problem is
> that this XPath expression will evaluate to a node set that contains
> *all* interfaces in the system.  We would like this to contain just
> the interfaces assigned to the NI.
>
> It turns out that this can be done with a simple change to the
> "parent-reference" node.  If we state that this XPath expression is
> evaluated in an XPath context where the context node is the node in
> the data tree where the mount point is defined (instead of "/"), we
> can use as parent-reference:
>
>   /if:interfaces/if:interface[ni:bind-network-instance-name = ../ni:name]
>
> Putting this together we'd have:
>
>   augment "/if:interfaces/if:interface" {
>     leaf bind-ni-name {
>       type leafref {
>         path "/network-instances/network-instance/name";
>       }
>     }
>   }
>
>   container network-instances {
>     list network-instance {
>       key name;
>       leaf name { ... }
>       ...
>       container root {
>         // this would be the XPath context root for parent-reference
>         yangmnt:mount-point ni-root;
>       }
>     }
>   }

note that the current NI definition is:


   module: ietf-network-instance
     +--rw network-instances
        +--rw network-instance* [name]
           +--rw name           string
           +--rw enabled?       boolean
           +--rw description?   string
           +--rw (ni-type)?
           +--rw (root-type)?
              +--:(vrf-root)
              |  +--mp vrf-root?
              +--:(vsi-root)
              |  +--mp vsi-root?
              +--:(vv-root)
                 +--mp vv-root?
   augment /if:interfaces/if:interface:
     +--rw bind-ni-name?   -> /network-instances/network-instance/name
   augment /if:interfaces/if:interface/ip:ipv4:
     +--rw bind-ni-name?   -> /network-instances/network-instance/name
   augment /if:interfaces/if:interface/ip:ipv6:
     +--rw bind-ni-name?   -> /network-instances/network-instance/name

> And in state data:
>
>
> "ietf-yang-schema-mount:schema-mounts": {
>   "namespace": [
>     {
>       "prefix": "ni",
>       "uri": "urn:ietf:params:xml:ns:yang:ietf-network-instance"
>     },
>     {
>       "prefix": "if",
>       "uri": "urn:ietf:params:xml:ns:yang:ietf-interfaces"
>     }
>   ]
>   "mount-point": [
>     {
>       "target": "/ni:network-instances/ni:network-instance/ni:root",
Can you confirm that with the current definition the target is:

      "target": "/ni:network-instances/ni:network-instance",

correct?

>       "parent-reference": [
>             "/if:interfaces/if:interface
>              [ni:bind-network-instance-name = ../ni:name]"
>                           ],
Also, can you confirm that if we wanted to cover v4, v6 (for example
purposes) interfaces-state, the full parent reference list would be:

      "parent-reference": [
            "/if:interfaces/if:interface
             [ni:bind-ni-name = ./ni:name]",
            "/if:interfaces/if:interface/ip:ipv4
             [ni:bind-ni-name = ./ni:name]",
            "/if:interfaces/if:interface/ip:ipv6
             [ni:bind-ni-name = ./ni:name]",
             "/if:interfaces-state/if:interface"

 correct?

Note that interfaces-state isn't filtered as the bind-ni-name isn't
present in -state.

>       "use-schema": [
>         {
>           "name": "ni-schema"
>         }
>       ]
>     }
>   ]
>
>
>
> Note that this does NOT affect the schema that is mounted; it only
> affects the result of the parent-reference XPath expressions.
>
>
> I think that we should make this change, since it allows for more
> precise parent-references.
I'm okay with the change (just want to see the draft moved forward ;-)

Lou
(As contributor)


>
>
> /martin
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod
>