[netmod] Interplay between YANG network instances and schema mount

Robert Wilton <rwilton@cisco.com> Thu, 10 November 2016 14:52 UTC

Return-Path: <rwilton@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 ABA39129424; Thu, 10 Nov 2016 06:52:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -16.018
X-Spam-Level:
X-Spam-Status: No, score=-16.018 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.497, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, 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 O_3JwyDlgmhO; Thu, 10 Nov 2016 06:52:55 -0800 (PST)
Received: from aer-iport-1.cisco.com (aer-iport-1.cisco.com [173.38.203.51]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A483312953B; Thu, 10 Nov 2016 06:52:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=6358; q=dns/txt; s=iport; t=1478789575; x=1479999175; h=to:from:subject:message-id:date:mime-version; bh=2fKltnxu2hkl7wfmHrjFLUv53OmwpkcDNHjhVaEHrBw=; b=LRLZAwsFO5uuXJq5GVhUfdXY1gqDz2J1z98vXI9J0bUkbCeeW56DthU0 zzx2jeJhHLQE6N5hF3tXKd4GsK4ee9h8SEZFwGnsIUT/48f8JSDqFYEBh hTTHg4xdkj6yqphKJPAY2EYv16Gds8EbAkuNUH7BEUnDgF93y5Fh0Lo60 w=;
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0D/AgBFiSRY/xbLJq1dGwEBAQMBAQEJAQEBgnM9AQEBAQGBI44QpkiDDIIPggeIdhQBAgEBAQEBAQFiKIULgTMCXwEMCAEBiFuwZoJAPosEAQEBAQYBAQEBI4Y+gX0IiiGCXQWOX4tYgUKPEYFuiA0jhX6JXYdmHjcqOxALhTQ+hhErgg8BAQE
X-IronPort-AV: E=Sophos;i="5.31,619,1473120000"; d="scan'208,217";a="689563772"
Received: from aer-iport-nat.cisco.com (HELO aer-core-3.cisco.com) ([173.38.203.22]) by aer-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Nov 2016 14:52:52 +0000
Received: from [10.63.23.88] (dhcp-ensft1-uk-vla370-10-63-23-88.cisco.com [10.63.23.88]) by aer-core-3.cisco.com (8.14.5/8.14.5) with ESMTP id uAAEqqlV027573; Thu, 10 Nov 2016 14:52:52 GMT
To: "netmod@ietf.org" <netmod@ietf.org>, draft-ietf-rtgwg-ni-model@ietf.org, "draft-ietf-netmod-schema-mount@ietf.org" <draft-ietf-netmod-schema-mount@ietf.org>
From: Robert Wilton <rwilton@cisco.com>
Message-ID: <8c1590b7-6131-7495-f7c9-bb133010f4a7@cisco.com>
Date: Thu, 10 Nov 2016 14:52:53 +0000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------CE80DFC88888654C6921BB78"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/G1LBfRZzPtyQVsQclfOyhjPz4e4>
Subject: [netmod] Interplay between YANG network instances and schema mount
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: Thu, 10 Nov 2016 14:52:57 -0000

Hi,

The network-instances draft (draft-ietf-rtgwg-ni-model) uses YANG mount 
to allow relevant parts of the YANG schema to be made available under a 
particular network instance (e.g. as per the diagram on section 3.2), 
reproduced inline here:

       +--rw yanglib:modules-state           [RFC7895]
       +--rw if:interfaces                   [RFC7223]
       |  +--rw bind-network-instance-name="green" string
       +--rw network-instances
          +--rw network-instance* [name]
             +--rw name="green"    string
             +--rw type?                           identityref
             +--rw enabled=true                    boolean
             +--rw description="The Green VRF"     string
             +--rw network-instance-policy
             |  ... (RT=1000:1, RD=1.2.3.4)
             +--rw root?                           yang-schema-mount
                +--rw yanglib:modules-state  [RFC7895]
                +--rw if:intefaces           [RFC7223]
                +--rw mm:network-services
                +--rw nn:oam-protocols
                +--rw oo:routing
                +--rw pp:mpls


My assumption is that the mounted YANG modules are just providing 
alternative paths in the schema for the same underlying data nodes that 
are also available without going via the schema-mount path. I further 
presume that datanodes could be read/written in both places (of course 
subject to NACM), and that any changes to data nodes made in one place 
must be immediately reflected in both places.

To give a concrete example, assuming that "eth0" was bound to 
network-instance "foo" then:
  network-instances/network-instance[name="foo"]/root/interfaces/interface[name="eth0"] would be pointing to the same actual data node as /interfaces/interface[name="eth0"].

Is my interpretation of how schema mount is anticipated to work in this 
scenario correct?

If my understanding is correct then this would seem to imply:
  - semantic validation of the the datatree can be performed by ignoring 
schema mounted nodes altogether.
  - leafrefs logically exist independently of the schema mounted nodes.
  - leafrefs viewed under a schema mount can, in some cases, be 
simplified to look like the reference is local within the mounted schema 
tree, but in the case that I'm considering here, it isn't obvious to me 
that all such leafrefs must necessarily never reference nodes outside of 
this subtree.

Thanks,
Rob