| 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 | |
| } |