module ietf-network-instance { | |
yang-version "1"; | |
// namespace | |
namespace "urn:ietf:params:xml:ns:yang:ietf-network-instance"; | |
prefix "ni"; | |
// import some basic types | |
import ietf-interfaces { | |
prefix if; | |
} | |
import ietf-ip { | |
prefix ip; | |
} | |
// meta | |
organization "IETF Routing Area Working Group (rtgwg)"; | |
contact | |
"Routing Area Working Group - <rtgwg@ietf.org>"; | |
description | |
"This module is used to support multiple network instances | |
within a single physical or virtual device. Network | |
instances are commonly know as VRFs (virtual routing | |
and forwarding) and VSIs (virtual switching instances)."; | |
revision "2016-06-23" { | |
description | |
"Initial revision."; | |
reference "RFC TBD"; | |
} | |
// extension statements | |
feature bind-network-instance-name { | |
description | |
"Network Instance to which an interface instance is bound"; | |
} | |
// identity statements | |
identity network-instance-type { | |
description | |
"Base identity from which identities describing | |
network instance types are derived."; | |
} | |
identity ipv4-interface-protocol-type { | |
description | |
"Base identity for derivation of IPv4 interface | |
protocols"; | |
} | |
identity ipv6-interface-protocol-type { | |
description | |
"Base identity for derivation of IPv6 interface | |
protocols"; | |
} | |
// typedef statements | |
// grouping statements | |
grouping interface-ip-common { | |
description | |
"interface-specific configuration for IP interfaces, IPv4 and | |
IPv6"; | |
} | |
grouping ipv4-interface-protocols { | |
container ipv4-interface-protocols { | |
list ipv4-interface-protocol { | |
key "type"; | |
leaf type { | |
type identityref { | |
base ipv4-interface-protocol-type; | |
} | |
mandatory true; | |
description | |
"ARP, ICMP, VRRP, DHCP Client, etc."; | |
} | |
description | |
"List of IPv4 protocols configured | |
on an interface"; | |
} | |
description | |
"Container for list of IPv4 protocols configured | |
on an interface"; | |
} | |
description | |
"Grouping for IPv4 protocols configured on an interface"; | |
} | |
grouping ipv6-interface-protocols { | |
description | |
"Grouping for IPv6 protocols configured on | |
an interface."; | |
container ipv6-interface-protocols { | |
description | |
"Container for list of IPv6 protocols configured | |
on an interface."; | |
list ipv6-interface-protocol { | |
key "type"; | |
description | |
"List of IPv6 protocols configured | |
on an interface"; | |
leaf type { | |
type identityref { | |
base ipv6-interface-protocol-type; | |
} | |
mandatory true; | |
description | |
"ND, ICMPv6, VRRP, DHCPv6 Client, etc."; | |
} | |
} | |
} | |
} | |
grouping network-instance-policy { | |
description | |
"Network instance policies such as route | |
distinguisher, route targets, VPLS ID and neighbor, | |
Ethernet ID, etc. "; | |
reference | |
"RFC 4364 - BGP/MPLS Virtual Private Networks (VPNs) | |
RFC 6074 - Provisioning, Auto-Discovery, and Signaling | |
in Layer 2 Virtual Private Networks (L2VPNs) | |
RFC 7432 - BGP MPLS-Based Ethernet VPN"; | |
container network-instance-policy { | |
description "Network Instance Policy -- details TBD"; | |
} | |
} | |
// top level device definition statements | |
container devices { | |
list device { | |
key deviceid; | |
leaf deviceid { | |
type string; | |
} | |
container network-instances { | |
description "Network instances each of which have | |
and protocol instantiations. For layer 3, | |
this consistent with the routing-instance | |
definition in ietf-routing"; | |
reference "draft-ietf-netmod-routing-cfg"; | |
list network-instance { | |
key name; | |
description "List of network-instances"; | |
leaf name { | |
type string; | |
description "device scoped | |
identifier for the network | |
instance"; | |
} | |
leaf type { | |
type identityref { | |
base network-instance-type; | |
} | |
description | |
"The network instance type -- details TBD | |
Likely types include core, L3-VRF, VPLS, | |
L2-cross-connect, L2-VSI, etc."; | |
} | |
leaf enabled { | |
type boolean; | |
default "true"; | |
description | |
"Flag indicating whether or not the network | |
instance is enabled."; | |
} | |
leaf description { | |
type string; | |
description | |
"Description of the network instance | |
and its intended purpose"; | |
} | |
uses network-instance-policy; | |
// leaf root { | |
// type schema-mount; | |
// description "Root for models supported per | |
// network instance"; | |
// } | |
} | |
} | |
} | |
} | |
// augment statements | |
augment "/if:devices/if:device/if:interfaces/if:interface" { | |
description | |
"Add a node for the identification of the logical network | |
instance (which is within the interface's identified logical | |
network element) associated with the IP information | |
configured on an interface"; | |
leaf bind-network-instance-name { | |
type string; | |
description | |
"Network Instance to which an interface is bound"; | |
} | |
} | |
augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv4" { | |
description | |
"Add a node for the identification of the logical | |
network instance (which is within the interface's | |
identified physical or virtual device) associated with | |
the IP information configured on an interface"; | |
leaf bind-network-instance-name { | |
type string; | |
description | |
"Network Instance to which IPv4 interface is bound"; | |
} | |
} | |
augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv6" { | |
description | |
"Add a node for the identification of the logical | |
network instance (which is within the interface's | |
identified physical or virtual device) associated with | |
the IP information configured on an interface"; | |
leaf bind-network-instance-name { | |
type string; | |
description | |
"Network Instance to which IPv6 interface is bound"; | |
} | |
} | |
// rpc statements | |
// notification statements | |
} |