rfc8529v1.txt   rfc8529.txt 
skipping to change at page 1, line 22 skipping to change at page 1, line 22
Jabil Jabil
January 2019 January 2019
YANG Model for Network Instances YANG Model for Network Instances
Abstract Abstract
This document defines a network instance module. This module can be This document defines a network instance module. This module can be
used to manage the virtual resource partitioning that may be present used to manage the virtual resource partitioning that may be present
on a network device. Examples of common industry terms for virtual on a network device. Examples of common industry terms for virtual
resource partitioning are Virtual Routing and Forwarding (VRF) resource partitioning are VPN Routing and Forwarding (VRF) instances
instances and Virtual Switch Instances (VSIs). and Virtual Switch Instances (VSIs).
The YANG model in this document conforms to the Network Management The YANG model in this document conforms to the Network Management
Datastore Architecture (NMDA) defined in RFC 8342. Datastore Architecture (NMDA) defined in RFC 8342.
Status of This Memo Status of This Memo
This is an Internet Standards Track document. This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has (IETF). It represents the consensus of the IETF community. It has
skipping to change at page 2, line 29 skipping to change at page 2, line 29
3.1.2. NI Type Example . . . . . . . . . . . . . . . . . . . 7 3.1.2. NI Type Example . . . . . . . . . . . . . . . . . . . 7
3.2. NIs and Interfaces . . . . . . . . . . . . . . . . . . . 8 3.2. NIs and Interfaces . . . . . . . . . . . . . . . . . . . 8
3.3. Network Instance Management . . . . . . . . . . . . . . . 9 3.3. Network Instance Management . . . . . . . . . . . . . . . 9
3.4. Network Instance Instantiation . . . . . . . . . . . . . 12 3.4. Network Instance Instantiation . . . . . . . . . . . . . 12
4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
6. Network Instance Model . . . . . . . . . . . . . . . . . . . 14 6. Network Instance Model . . . . . . . . . . . . . . . . . . . 14
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.1. Normative References . . . . . . . . . . . . . . . . . . 20 7.1. Normative References . . . . . . . . . . . . . . . . . . 20
7.2. Informative References . . . . . . . . . . . . . . . . . 21 7.2. Informative References . . . . . . . . . . . . . . . . . 21
Appendix A. Example NI Usage . . . . . . . . . . . . . . . . . . 23 Appendix A. Example NI Usage . . . . . . . . . . . . . . . . . . 22
A.1. Configuration Data . . . . . . . . . . . . . . . . . . . 23 A.1. Configuration Data . . . . . . . . . . . . . . . . . . . 23
A.2. State Data - Non-NMDA Version . . . . . . . . . . . . . . 26 A.2. State Data - Non-NMDA Version . . . . . . . . . . . . . . 26
A.3. State Data - NMDA Version . . . . . . . . . . . . . . . . 33 A.3. State Data - NMDA Version . . . . . . . . . . . . . . . . 33
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 41 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 41
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41
1. Introduction 1. Introduction
This document defines the second of two new modules that are defined This document defines the second of two new modules that are defined
to support the configuration and operation of network devices that to support the configuration and operation of network devices that
skipping to change at page 3, line 12 skipping to change at page 3, line 12
"hosted" by the base network device. These hosted network elements "hosted" by the base network device. These hosted network elements
are referred to as logical network elements, or LNEs, and are are referred to as logical network elements, or LNEs, and are
supported by the logical-network-element module defined in [RFC8530]. supported by the logical-network-element module defined in [RFC8530].
That module is used to identify LNEs and associate resources from the That module is used to identify LNEs and associate resources from the
network device with each LNE. LNEs themselves are represented in network device with each LNE. LNEs themselves are represented in
YANG as independent network devices; each is accessed independently. YANG as independent network devices; each is accessed independently.
Examples of vendor terminology for an LNE include logical system or Examples of vendor terminology for an LNE include logical system or
logical router and virtual switch, chassis, or fabric. logical router and virtual switch, chassis, or fabric.
The second form, which is defined in this document, provides support The second form, which is defined in this document, provides support
for what are commonly referred to as Virtual Routing and Forwarding for what are commonly referred to as VPN Routing and Forwarding (VRF)
(VRF) instances as well as Virtual Switch Instances (VSI); see instances as well as Virtual Switch Instances (VSI); see [RFC4026]
[RFC4026] and [RFC4664]. In this form of resource partitioning, and [RFC4664]. In this form of resource partitioning, multiple
multiple control-plane and forwarding/bridging instances are provided control-plane and forwarding/bridging instances are provided by and
by and managed through a single (physical or logical) network device. managed through a single (physical or logical) network device. This
This form of resource partitioning is referred to as a network form of resource partitioning is referred to as a network instance
instance (NI) and is supported by the network instance module defined (NI) and is supported by the network instance module defined below.
below. Configuration and operation of each network instance is Configuration and operation of each network instance is always via
always via the network device and the network instance module. the network device and the network instance module.
One notable difference between the LNE model and the NI model is that One notable difference between the LNE model and the NI model is that
the NI model provides a framework for VRF and VSI management. This the NI model provides a framework for VRF and VSI management. This
document envisions the separate definition of models specific to VRF document envisions the separate definition of models specific to VRF
and VSI -- i.e., L3 and L2 VPN -- technology. An example of such can and VSI -- i.e., L3 and L2 VPN -- technology. An example of such can
be found in the emerging L3VPN model defined in [YANG-L3VPN] and the be found in the emerging L3VPN model defined in [YANG-L3VPN] and the
examples discussed below. examples discussed below.
1.1. Terminology 1.1. Terminology
skipping to change at page 6, line 15 skipping to change at page 6, line 15
interface augmentation. The ni-type and root-type choice statements interface augmentation. The ni-type and root-type choice statements
are used to support different types of L2 and L3 VPN technologies. are used to support different types of L2 and L3 VPN technologies.
The bind-ni-name-failed notification is used in certain failure The bind-ni-name-failed notification is used in certain failure
cases. cases.
3.1. NI Types and Mount Points 3.1. NI Types and Mount Points
The network instance module is structured to facilitate the The network instance module is structured to facilitate the
definition of information models for specific types of VRFs and VSIs definition of information models for specific types of VRFs and VSIs
using augmentations. For example, the information needed to support using augmentations. For example, the information needed to support
VPLS, VxLAN, and EVPN-based L2VPNs are likely to be quite different. L2VPN, such as VPLS and EVPN, are likely to be quite different.
Example models under development that could be restructured to take Example models under development that could be restructured to take
advantage on NIs include models for L3VPNs [YANG-L3VPN] and L2VPNs advantage on NIs include models for L3VPNs [YANG-L3VPN] and L2VPNs
[YANG-L2VPN]. [YANG-L2VPN].
Documents defining new YANG models for the support of specific types Documents defining new YANG models for the support of specific types
of network instances should augment the network instance module. The of network instances should augment the network instance module. The
basic structure that should be used for such augmentations includes a basic structure that should be used for such augmentations includes a
case statement with containers for configuration and state data and, case statement with containers for configuration and state data and,
when needed, a type-specific mount point. Generally, NI types are when needed, a type-specific mount point. Generally, NI types are
expected to not need to define type-specific mount points but rather expected to not need to define type-specific mount points but rather
skipping to change at page 7, line 27 skipping to change at page 7, line 27
vv-root is intended for use with ni-types that simultaneously vv-root is intended for use with ni-types that simultaneously
support L2VPN bridging and L3VPN routing capabilities. support L2VPN bridging and L3VPN routing capabilities.
Future model definitions should use the above mount points whenever Future model definitions should use the above mount points whenever
possible. When a well-known mount point isn't appropriate, a model possible. When a well-known mount point isn't appropriate, a model
may define a type-specific mount point via augmentation. may define a type-specific mount point via augmentation.
3.1.2. NI Type Example 3.1.2. NI Type Example
The following is an example of an L3VPN VRF using a hypothetical The following is an example of an L3VPN VRF using a hypothetical
augmentation to the networking instance schema defined in augmentation to the network instance schema defined in [YANG-L3VPN].
[YANG-L3VPN]. More detailed examples can be found in Appendix A. More detailed examples can be found in Appendix A.
module: ietf-network-instance module: ietf-network-instance
+--rw network-instances +--rw network-instances
+--rw network-instance* [name] +--rw network-instance* [name]
+--rw name string +--rw name string
+--rw enabled? boolean +--rw enabled? boolean
+--rw description? string +--rw description? string
+--rw (ni-type)? +--rw (ni-type)?
| +--:(l3vpn) | +--:(l3vpn)
| +--rw l3vpn:l3vpn | +--rw l3vpn:l3vpn
skipping to change at page 9, line 32 skipping to change at page 9, line 32
| | | +--:(ip:prefix-length) | | | +--:(ip:prefix-length)
| | | | +--rw ip:prefix-length? uint8 | | | | +--rw ip:prefix-length? uint8
| | | +--:(ip:netmask) | | | +--:(ip:netmask)
| | | +--rw ip:netmask? yang:dotted-quad | | | +--rw ip:netmask? yang:dotted-quad
| | +--rw ip:neighbor* [ip] | | +--rw ip:neighbor* [ip]
| | | +--rw ip:ip inet:ipv4-address-no-zone | | | +--rw ip:ip inet:ipv4-address-no-zone
| | | +--rw ip:link-layer-address yang:phys-address | | | +--rw ip:link-layer-address yang:phys-address
| | +--rw ni:bind-network-instance-name? string | | +--rw ni:bind-network-instance-name? string
| +--rw ni:bind-network-instance-name? string | +--rw ni:bind-network-instance-name? string
The interface model defined in [RFC8343] is structured to include all The "ietf-interfaces" module [RFC8343] is structured to include all
interfaces in a flat list, without regard to virtual instances (e.g., interfaces in a flat list, without regard to virtual instances (e.g.,
VRFs) supported on the device. The bind-network-instance-name leaf VRFs) supported on the device. The bind-network-instance-name leaf
provides the association between an interface and its associated NI provides the association between an interface and its associated NI
(e.g., VRF or VSI). Note that as currently defined, to assign an (e.g., VRF or VSI). Note that as currently defined, to assign an
interface to both an LNE and an NI, the interface would first be interface to both an LNE and an NI, the interface would first be
assigned to the LNE using the mechanisms defined in [RFC8530] and assigned to the LNE using the mechanisms defined in [RFC8530] and
then, within that LNE's interface module, the LNE's representation of then, within that LNE's interface module, the LNE's representation of
that interface would be assigned to an NI. that interface would be assigned to an NI.
3.3. Network Instance Management 3.3. Network Instance Management
skipping to change at page 11, line 33 skipping to change at page 11, line 33
"/if:interfaces/if:interface/ip:ipv4 "/if:interfaces/if:interface/ip:ipv4
[ni:bind-network-instance-name = current()/../ni:name]", [ni:bind-network-instance-name = current()/../ni:name]",
"/if:interfaces/if:interface/ip:ipv6 "/if:interfaces/if:interface/ip:ipv6
[ni:bind-network-instance-name = current()/../ni:name]" [ni:bind-network-instance-name = current()/../ni:name]"
] ]
} }
} }
], ],
The same such "parent-reference" restrictions for non-NMDA The same such "parent-reference" restrictions for non-NMDA
implementations can be represented based on [RFC7223] and [RFC7277] implementations can be represented based on [RFC8343] and [RFC8344]
as: as:
"namespace": [ "namespace": [
{ {
"prefix": "if", "prefix": "if",
"uri": "urn:ietf:params:xml:ns:yang:ietf-interfaces" "uri": "urn:ietf:params:xml:ns:yang:ietf-interfaces"
}, },
{ {
"prefix": "ni", "prefix": "ni",
"uri": "urn:ietf:params:xml:ns:yang:ietf-network-instance" "uri": "urn:ietf:params:xml:ns:yang:ietf-network-instance"
skipping to change at page 15, line 28 skipping to change at page 15, line 28
<mailto:lberger@labn.net> <mailto:lberger@labn.net>
Author: Christan Hopps Author: Christan Hopps
<mailto:chopps@chopps.org> <mailto:chopps@chopps.org>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Dean Bogdanovic Author: Dean Bogdanovic
<mailto:ivandean@gmail.com>"; <mailto:ivandean@gmail.com>";
description description
"This module is used to support multiple network instances "This module is used to support multiple network instances
within a single physical or virtual device. Network within a single physical or virtual device. Network
instances are commonly known as VRFs (Virtual Routing instances are commonly known as VRFs (VPN Routing and
and Forwarding) and VSIs (Virtual Switching Instances). Forwarding) and VSIs (Virtual Switching Instances).
Copyright (c) 2019 IETF Trust and the persons identified as Copyright (c) 2019 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD to the license terms contained in, the Simplified BSD
License set forth in Section 4.c of the IETF Trust's Legal License set forth in Section 4.c of the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
skipping to change at page 16, line 8 skipping to change at page 16, line 8
reference "RFC 8529"; reference "RFC 8529";
} }
// top-level device definition statements // top-level device definition statements
container network-instances { container network-instances {
description description
"Network instances, each of which consists of "Network instances, each of which consists of
VRFs and/or VSIs."; VRFs and/or VSIs.";
reference reference
"draft-ietf-rtgwg-rfc8022bis: A YANG Data Model "RFC 8349: A YANG Data Model for Routing Management";
for Routing Management";
list network-instance { list network-instance {
key "name"; key "name";
description description
"List of network instances."; "List of network instances.";
leaf name { leaf name {
type string; type string;
mandatory true; mandatory true;
description description
"device-scoped identifier for the network "device-scoped identifier for the network
instance."; instance.";
skipping to change at page 22, line 10 skipping to change at page 22, line 10
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February
2006, <https://www.rfc-editor.org/info/rfc4364>. 2006, <https://www.rfc-editor.org/info/rfc4364>.
[RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer [RFC4664] Andersson, L., Ed. and E. Rosen, Ed., "Framework for Layer
2 Virtual Private Networks (L2VPNs)", RFC 4664, 2 Virtual Private Networks (L2VPNs)", RFC 4664,
DOI 10.17487/RFC4664, September 2006, DOI 10.17487/RFC4664, September 2006,
<https://www.rfc-editor.org/info/rfc4664>. <https://www.rfc-editor.org/info/rfc4664>.
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014,
<https://www.rfc-editor.org/info/rfc7223>.
[RFC7277] Bjorklund, M., "A YANG Data Model for IP Management",
RFC 7277, DOI 10.17487/RFC7277, June 2014,
<https://www.rfc-editor.org/info/rfc7277>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", RFC 8022, DOI 10.17487/RFC8022, November
2016, <https://www.rfc-editor.org/info/rfc8022>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018, DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>. <https://www.rfc-editor.org/info/rfc8349>.
[RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X. [RFC8530] Berger, L., Hopps, C., Lindem, A., Bogdanovic, D., and X.
Liu, "YANG Model for Logical Network Elements", RFC 8530, Liu, "YANG Model for Logical Network Elements", RFC 8530,
DOI 10.17487/RFC8530, January 2019. DOI 10.17487/RFC8530, January 2019.
[YANG-L2VPN] [YANG-L2VPN]
skipping to change at page 26, line 29 skipping to change at page 26, line 19
"password": "$0$password" "password": "$0$password"
} }
] ]
} }
} }
} }
A.2. State Data - Non-NMDA Version A.2. State Data - Non-NMDA Version
The following shows state data for the configuration example above The following shows state data for the configuration example above
based on [RFC7223], [RFC7277], and [RFC8022]. based on [RFC8343], [RFC8344], and [RFC8349].
{ {
"ietf-network-instance:network-instances": { "ietf-network-instance:network-instances": {
"network-instance": [ "network-instance": [
{ {
"name": "vrf-red", "name": "vrf-red",
"vrf-root": { "vrf-root": {
"ietf-yang-library:modules-state": { "ietf-yang-library:modules-state": {
"module-set-id": "123e4567-e89b-12d3-a456-426655440000", "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
"module": [ "module": [
{ {
"name": "ietf-yang-library", "name": "ietf-yang-library",
"revision": "2016-06-21", "revision": "2016-06-21",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library", "urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-ospf", "name": "ietf-ospf",
"revision": "2018-03-03", "revision": "2018-03-03",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf", "urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-routing", "name": "ietf-routing",
"revision": "2018-03-13", "revision": "2018-03-13",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing", "urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement" "conformance-type": "implement"
} }
] ]
}, },
"ietf-routing:routing-state": { "ietf-routing:routing-state": {
"router-id": "192.0.2.1", "router-id": "192.0.2.1",
"control-plane-protocols": { "control-plane-protocols": {
"control-plane-protocol": [ "control-plane-protocol": [
{ {
"type": "ietf-routing:ospf", "type": "ietf-routing:ospf",
"name": "1", "name": "1",
"ietf-ospf:ospf": { "ietf-ospf:ospf": {
"af": "ipv4", "af": "ipv4",
skipping to change at page 28, line 8 skipping to change at page 27, line 47
{ {
"name": "vrf-blue", "name": "vrf-blue",
"vrf-root": { "vrf-root": {
"ietf-yang-library:modules-state": { "ietf-yang-library:modules-state": {
"module-set-id": "123e4567-e89b-12d3-a456-426655440000", "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
"module": [ "module": [
{ {
"name": "ietf-yang-library", "name": "ietf-yang-library",
"revision": "2016-06-21", "revision": "2016-06-21",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library", "urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-ospf", "name": "ietf-ospf",
"revision": "2018-03-03", "revision": "2018-03-03",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf", "urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-routing", "name": "ietf-routing",
"revision": "2018-03-13", "revision": "2018-03-13",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing", "urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement" "conformance-type": "implement"
} }
] ]
}, },
"ietf-routing:routing-state": { "ietf-routing:routing-state": {
"router-id": "192.0.2.2", "router-id": "192.0.2.2",
"control-plane-protocols": { "control-plane-protocols": {
"control-plane-protocol": [ "control-plane-protocol": [
{ {
"type": "ietf-routing:ospf", "type": "ietf-routing:ospf",
skipping to change at page 31, line 4 skipping to change at page 30, line 43
} }
] ]
} }
}, },
"ietf-system:system-state": { "ietf-system:system-state": {
"platform": { "platform": {
"os-name": "NetworkOS" "os-name": "NetworkOS"
} }
} }
"ietf-yang-library:modules-state": { "ietf-yang-library:modules-state": {
"module-set-id": "123e4567-e89b-12d3-a456-426655440000", "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
"module": [ "module": [
{ {
"name": "iana-if-type", "name": "iana-if-type",
"revision": "2014-05-08", "revision": "2014-05-08",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:iana-if-type", "urn:ietf:params:xml:ns:yang:iana-if-type",
"conformance-type": "import" "conformance-type": "import"
}, },
{ {
"name": "ietf-inet-types", "name": "ietf-inet-types",
"revision": "2013-07-15", "revision": "2013-07-15",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-inet-types", "urn:ietf:params:xml:ns:yang:ietf-inet-types",
"conformance-type": "import" "conformance-type": "import"
}, },
{ {
"name": "ietf-interfaces", "name": "ietf-interfaces",
"revision": "2014-05-08", "revision": "2014-05-08",
"feature": [ "feature": [
"arbitrary-names", "arbitrary-names",
"pre-provisioning" "pre-provisioning"
], ],
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-interfaces", "urn:ietf:params:xml:ns:yang:ietf-interfaces",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-ip", "name": "ietf-ip",
"revision": "2014-06-16", "revision": "2014-06-16",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-ip", "urn:ietf:params:xml:ns:yang:ietf-ip",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-network-instance", "name": "ietf-network-instance",
"revision": "2018-02-03", "revision": "2018-02-03",
"feature": [ "feature": [
"bind-network-instance-name" "bind-network-instance-name"
], ],
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-network-instance", "urn:ietf:params:xml:ns:yang:ietf-network-instance",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-ospf", "name": "ietf-ospf",
"revision": "2018-03-03", "revision": "2018-03-03",
"namespace": "urn:ietf:params:xml:ns:yang:ietf-ospf", "namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-routing", "name": "ietf-routing",
"revision": "2018-03-13", "revision": "2018-03-13",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing", "urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-system", "name": "ietf-system",
"revision": "2014-08-06", "revision": "2014-08-06",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-system", "urn:ietf:params:xml:ns:yang:ietf-system",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-yang-library", "name": "ietf-yang-library",
"revision": "2016-06-21", "revision": "2016-06-21",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library", "urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-yang-schema-mount", "name": "ietf-yang-schema-mount",
"revision": "2017-05-16", "revision": "2017-05-16",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount", "urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-yang-types", "name": "ietf-yang-types",
"revision": "2013-07-15", "revision": "2013-07-15",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-types", "urn:ietf:params:xml:ns:yang:ietf-yang-types",
"conformance-type": "import" "conformance-type": "import"
} }
] ]
}, },
"ietf-yang-schema-mount:schema-mounts": { "ietf-yang-schema-mount:schema-mounts": {
"mount-point": [ "mount-point": [
{ {
"module": "ietf-network-instance", "module": "ietf-network-instance",
"label": "vrf-root", "label": "vrf-root",
skipping to change at page 33, line 17 skipping to change at page 33, line 10
} }
] ]
} }
} }
A.3. State Data - NMDA Version A.3. State Data - NMDA Version
The following shows state data for the configuration example above The following shows state data for the configuration example above
based on [RFC8343], [RFC8344], and [RFC8349]. based on [RFC8343], [RFC8344], and [RFC8349].
{ {
"ietf-network-instance:network-instances": { "ietf-network-instance:network-instances": {
"network-instance": [ "network-instance": [
{ {
"name": "vrf-red", "name": "vrf-red",
"vrf-root": { "vrf-root": {
"ietf-yang-library:yang-library": { "ietf-yang-library:yang-library": {
"checksum": "41e2ab5dc325f6d86f743e8da3de323f1a61a801", "checksum": "41e2ab5dc325f6d86f743e8da3de323f1a61a801",
"module-set": [ "module-set": [
{ {
"name": "ni-modules", "name": "ni-modules",
"module": [ "module": [
{ {
"name": "ietf-yang-library", "name": "ietf-yang-library",
"revision": "2016-06-21", "revision": "2016-06-21",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library", "urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-ospf", "name": "ietf-ospf",
"revision": "2018-03-03", "revision": "2018-03-03",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf", "urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement" "conformance-type": "implement"
}, },
{ {
"name": "ietf-routing", "name": "ietf-routing",
"revision": "2018-03-13", "revision": "2018-03-13",
"namespace": "namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing", "urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement" "conformance-type": "implement"
} }
], ],
"import-only-module": [ "import-only-module": [
{ {
"name": "ietf-inet-types", "name": "ietf-inet-types",
"revision": "2013-07-15", "revision": "2013-07-15",
"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types" "namespace":
}, "urn:ietf:params:xml:ns:yang:ietf-inet-types"
{ },
"name": "ietf-yang-types", {
"revision": "2013-07-15", "name": "ietf-yang-types",
"namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types" "revision": "2013-07-15",
}, "namespace":
{ "urn:ietf:params:xml:ns:yang:ietf-yang-types"
"name": "ietf-datastores", },
"revision": "2018-02-14", {
"namespace": "urn:ietf:params:xml:ns:yang:ietf-datastores" "name": "ietf-datastores",
} "revision": "2018-02-14",
] "namespace":
} "urn:ietf:params:xml:ns:yang:ietf-datastores"
], }
"schema": [ ]
{ }
"name": "ni-schema", ],
"module-set": [ "ni-modules" ] "schema": [
} {
], "name": "ni-schema",
"datastore": [ "module-set": [ "ni-modules" ]
{ }
"name": "ietf-datastores:running", ],
"schema": "ni-schema" "datastore": [
}, {
{ "name": "ietf-datastores:running",
"name": "ietf-datastores:operational", "schema": "ni-schema"
"schema": "ni-schema" },
} {
] "name": "ietf-datastores:operational",
}, "schema": "ni-schema"
"ietf-routing:routing": { }
"router-id": "192.0.2.1", ]
"control-plane-protocols": { },
"control-plane-protocol": [ "ietf-routing:routing": {
{ "router-id": "192.0.2.1",
"type": "ietf-routing:ospf", "control-plane-protocols": {
"name": "1", "control-plane-protocol": [
"ietf-ospf:ospf": { {
"af": "ipv4", "type": "ietf-routing:ospf",
"areas": { "name": "1",
"area": [ "ietf-ospf:ospf": {
{ "af": "ipv4",
"area-id": "203.0.113.1", "areas": {
"interfaces": { "area": [
"interface": [ {
{ "area-id": "203.0.113.1",
"name": "eth1", "interfaces": {
"cost": 10 "interface": [
} {
] "name": "eth1",
} "cost": 10
}
]
}
}
}
]
}
}
}
},
{
"name": "vrf-blue",
"vrf-root": {
"ietf-yang-library:yang-library": {
"checksum": "41e2ab5dc325f6d86f743e8da3de323f1a61a801",
"module-set": [
{
"name": "ni-modules",
"module": [
{
"name": "ietf-yang-library",
"revision": "2016-06-21",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement"
},
{
"name": "ietf-ospf",
"revision": "2018-03-03",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement"
},
{
"name": "ietf-routing",
"revision": "2018-03-13",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement"
}
], }
"import-only-module": [ ]
{ }
"name": "ietf-inet-types", }
"revision": "2013-07-15", ]
"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types" }
}, }
{ }
"name": "ietf-yang-types", ]
"revision": "2013-07-15", }
"namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types" }
}, }
{ },
"name": "ietf-datastores", {
"revision": "2018-02-14", "name": "vrf-blue",
"namespace": "urn:ietf:params:xml:ns:yang:ietf-datastores" "vrf-root": {
} "ietf-yang-library:yang-library": {
] "checksum": "41e2ab5dc325f6d86f743e8da3de323f1a61a801",
} "module-set": [
], {
"schema": [ "name": "ni-modules",
{ "module": [
"name": "ni-schema", {
"module-set": [ "ni-modules" ] "name": "ietf-yang-library",
} "revision": "2016-06-21",
], "namespace":
"datastore": [ "urn:ietf:params:xml:ns:yang:ietf-yang-library",
{ "conformance-type": "implement"
"name": "ietf-datastores:running", },
"schema": "ni-schema" {
}, "name": "ietf-ospf",
{ "revision": "2018-03-03",
"name": "ietf-datastores:operational", "namespace":
"schema": "ni-schema" "urn:ietf:params:xml:ns:yang:ietf-ospf",
} "conformance-type": "implement"
] },
}, {
"ietf-routing:routing": { "name": "ietf-routing",
"router-id": "192.0.2.2", "revision": "2018-03-13",
"control-plane-protocols": { "namespace":
"control-plane-protocol": [ "urn:ietf:params:xml:ns:yang:ietf-routing",
{ "conformance-type": "implement"
"type": "ietf-routing:ospf", }
"name": "1", ],
"ietf-ospf:ospf": { "import-only-module": [
"af": "ipv4", {
"areas": { "name": "ietf-inet-types",
"area": [ "revision": "2013-07-15",
{ "namespace":
"area-id": "203.0.113.1", "urn:ietf:params:xml:ns:yang:ietf-inet-types"
"interfaces": { },
"interface": [ {
{ "name": "ietf-yang-types",
"name": "eth2", "revision": "2013-07-15",
"cost": 10 "namespace":
} "urn:ietf:params:xml:ns:yang:ietf-yang-types"
] },
} {
} "name": "ietf-datastores",
] "revision": "2018-02-14",
} "namespace":
} "urn:ietf:params:xml:ns:yang:ietf-datastores"
} }
] ]
} }
} ],
} "schema": [
} {
] "name": "ni-schema",
}, "module-set": [ "ni-modules" ]
}
],
"datastore": [
{
"name": "ietf-datastores:running",
"schema": "ni-schema"
},
{
"name": "ietf-datastores:operational",
"schema": "ni-schema"
}
]
},
"ietf-routing:routing": {
"router-id": "192.0.2.2",
"control-plane-protocols": {
"control-plane-protocol": [
{
"type": "ietf-routing:ospf",
"name": "1",
"ietf-ospf:ospf": {
"af": "ipv4",
"areas": {
"area": [
{
"area-id": "203.0.113.1",
"interfaces": {
"interface": [
{
"name": "eth2",
"cost": 10
}
]
}
}
]
}
}
}
]
}
}
}
}
]
},
"ietf-interfaces:interfaces": { "ietf-interfaces:interfaces": {
"interfaces": { "interfaces": {
"interface": [ "interface": [
{ {
"name": "eth0", "name": "eth0",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"oper-status": "up", "oper-status": "up",
"phys-address": "00:01:02:A1:B1:C0", "phys-address": "00:01:02:A1:B1:C0",
"statistics": { "statistics": {
"discontinuity-time": "2017-06-26T12:34:56-05:00" "discontinuity-time": "2017-06-26T12:34:56-05:00"
}, },
"ip:ipv4": { "ip:ipv4": {
"address": [ "address": [
{ {
"ip": "192.0.2.10", "ip": "192.0.2.10",
"prefix-length": 24, "prefix-length": 24,
} }
] ]
} }
"ip:ipv6": { "ip:ipv6": {
"address": [ "address": [
{ {
"ip": "2001:db8:0:2::10", "ip": "2001:db8:0:2::10",
"prefix-length": 64, "prefix-length": 64,
} }
]
}
] },
} {
}, "name": "eth1",
{ "type": "iana-if-type:ethernetCsmacd",
"name": "eth1", "oper-status": "up",
"type": "iana-if-type:ethernetCsmacd", "phys-address": "00:01:02:A1:B1:C1",
"oper-status": "up", "statistics": {
"phys-address": "00:01:02:A1:B1:C1", "discontinuity-time": "2017-06-26T12:34:56-05:00"
"statistics": { },
"discontinuity-time": "2017-06-26T12:34:56-05:00" "ip:ipv4": {
}, "address": [
"ip:ipv4": { {
"address": [ "ip": "192.0.2.11",
{ "prefix-length": 24,
"ip": "192.0.2.11", }
"prefix-length": 24, ]
} }
] "ip:ipv6": {
} "address": [
"ip:ipv6": { {
"address": [ "ip": "2001:db8:0:2::11",
{ "prefix-length": 64,
"ip": "2001:db8:0:2::11", }
"prefix-length": 64, ]
} }
] },
} {
}, "name": "eth2",
{ "type": "iana-if-type:ethernetCsmacd",
"name": "eth2", "oper-status": "up",
"type": "iana-if-type:ethernetCsmacd", "phys-address": "00:01:02:A1:B1:C2",
"oper-status": "up", "statistics": {
"phys-address": "00:01:02:A1:B1:C2", "discontinuity-time": "2017-06-26T12:34:56-05:00"
"statistics": { },
"discontinuity-time": "2017-06-26T12:34:56-05:00" "ip:ipv4": {
}, "address": [
"ip:ipv4": { {
"address": [ "ip": "192.0.2.11",
{ "prefix-length": 24,
"ip": "192.0.2.11", }
"prefix-length": 24, ]
} }
] "ip:ipv6": {
} "address": [
"ip:ipv6": { {
"address": [ "ip": "2001:db8:0:2::11",
{ "prefix-length": 64,
"ip": "2001:db8:0:2::11", }
"prefix-length": 64,
}
]
}
}
]
}
},
"ietf-system:system-state": { ]
"platform": { }
"os-name": "NetworkOS" }
} ]
} }
},
"ietf-yang-library:modules-state": { "ietf-system:system-state": {
"module-set-id": "123e4567-e89b-12d3-a456-426655440000", "platform": {
"module": [ "os-name": "NetworkOS"
{ }
"name": "iana-if-type", }
"revision": "2014-05-08",
"namespace":
"urn:ietf:params:xml:ns:yang:iana-if-type",
"conformance-type": "import"
},
{
"name": "ietf-inet-types",
"revision": "2013-07-15",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-inet-types",
"conformance-type": "import"
},
{
"name": "ietf-interfaces",
"revision": "2018-01-09",
"feature": [
"arbitrary-names",
"pre-provisioning"
],
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-interfaces",
"conformance-type": "implement"
},
{
"name": "ietf-ip",
"revision": "2018-01-09",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-ip",
"conformance-type": "implement"
},
{
"name": "ietf-network-instance",
"revision": "2018-02-03",
"feature": [
"bind-network-instance-name"
],
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-network-instance",
"conformance-type": "implement"
},
{
"name": "ietf-ospf",
"revision": "2017-10-30",
"namespace": "urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement"
},
{
"name": "ietf-routing",
"revision": "2018-01-25",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement"
},
{
"name": "ietf-system",
"revision": "2014-08-06",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-system",
"conformance-type": "implement"
},
{
"name": "ietf-yang-library",
"revision": "2016-06-21",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement"
},
{
"name": "ietf-yang-schema-mount",
"revision": "2017-05-16",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount",
"conformance-type": "implement"
},
{
"name": "ietf-yang-types",
"revision": "2013-07-15",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-types",
"conformance-type": "import"
}
]
},
"ietf-yang-schema-mount:schema-mounts": { "ietf-yang-library:modules-state": {
"mount-point": [ "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
{ "module": [
"module": "ietf-network-instance", {
"label": "vrf-root", "name": "iana-if-type",
"shared-schema": { "revision": "2014-05-08",
"parent-reference": [ "namespace":
"/*[namespace-uri() = 'urn:ietf:...:ietf-interfaces']" "urn:ietf:params:xml:ns:yang:iana-if-type",
] "conformance-type": "import"
} },
} {
] "name": "ietf-inet-types",
} "revision": "2013-07-15",
} "namespace":
"urn:ietf:params:xml:ns:yang:ietf-inet-types",
"conformance-type": "import"
},
{
"name": "ietf-interfaces",
"revision": "2018-01-09",
"feature": [
"arbitrary-names",
"pre-provisioning"
],
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-interfaces",
"conformance-type": "implement"
},
{
"name": "ietf-ip",
"revision": "2018-01-09",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-ip",
"conformance-type": "implement"
},
{
"name": "ietf-network-instance",
"revision": "2018-02-03",
"feature": [
"bind-network-instance-name"
],
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-network-instance",
"conformance-type": "implement"
},
{
"name": "ietf-ospf",
"revision": "2017-10-30",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-ospf",
"conformance-type": "implement"
},
{
"name": "ietf-routing",
"revision": "2018-01-25",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-routing",
"conformance-type": "implement"
},
{
"name": "ietf-system",
"revision": "2014-08-06",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-system",
"conformance-type": "implement"
},
{
"name": "ietf-yang-library",
"revision": "2016-06-21",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-library",
"conformance-type": "implement"
},
{
"name": "ietf-yang-schema-mount",
"revision": "2017-05-16",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount",
"conformance-type": "implement"
},
{
"name": "ietf-yang-types",
"revision": "2013-07-15",
"namespace":
"urn:ietf:params:xml:ns:yang:ietf-yang-types",
"conformance-type": "import"
}
]
},
"ietf-yang-schema-mount:schema-mounts": {
"mount-point": [
{
"module": "ietf-network-instance",
"label": "vrf-root",
"shared-schema": {
"parent-reference": [
"/*[namespace-uri() = 'urn:ietf:...:ietf-interfaces']"
]
}
}
]
}
}
Acknowledgments Acknowledgments
The Routing Area Yang Architecture design team members included Acee The Routing Area Yang Architecture design team members included Acee
Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Lou Berger, Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Lou Berger,
Qin Wu, Rob Shakir, Stephane Litkowski, and Yan Gang. Martin Qin Wu, Rob Shakir, Stephane Litkowski, and Yan Gang. Martin
Bjorklund and John Scudder provided useful review comments. Bjorklund and John Scudder provided useful review comments.
This document was motivated by, and derived from, "Network Device This document was motivated by, and derived from, "Network Device
YANG Logical Organization" [YANG-NETWORK]. YANG Logical Organization" [YANG-NETWORK].
 End of changes. 39 change blocks. 
440 lines changed or deleted 440 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/