module openconfig-network-instance-types { yang-version "1"; // namespace namespace "http://openconfig.net/yang/network-instance-types"; prefix "oc-ni-types"; import openconfig-extensions { prefix "oc-ext"; } // meta organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net"; description "Types associated with a network instance"; oc-ext:openconfig-version "0.8.1"; revision "2017-08-24" { description "Minor formatting fixes"; reference "0.8.1"; } revision "2017-02-28" { description "Add OSPFv2 to network instance"; reference "0.8.0"; } revision "2017-01-26" { description "Add policy forwarding to network instance"; reference "0.7.0"; } revision "2017-01-13" { description "Add AFT to the network instance"; reference "0.6.0"; } revision "2016-12-15" { description "Add segment routing to network instance"; reference "0.5.0"; } revision "2016-11-10" { description "Update model to include IS-IS."; reference "0.4.1"; } revision "2016-10-12" { description "Update table connections"; reference "0.4.0"; } revision "2016-09-28" { description "Change L2 instance to submodule; add MAC table"; reference "0.3.0"; } revision "2016-08-11" { description "Resolve repeated container names in routing protocols"; reference "0.2.3"; } revision "2016-07-08" { description "Updated with refactored routing protocol models"; reference "0.2.1"; } revision "2016-03-29" { description "Initial revision"; reference "0.2.0"; } revision "2015-10-18" { description "Initial revision"; reference "0.1.0"; } // identity statements identity NETWORK_INSTANCE_TYPE { description "A base identity which can be extended to indicate different types of network instance supported by a device."; } identity DEFAULT_INSTANCE { base NETWORK_INSTANCE_TYPE; description "A special routing instance which acts as the 'default' or 'global' routing instance for a network device."; } identity L3VRF { base NETWORK_INSTANCE_TYPE; description "A private Layer 3 only routing instance which is formed of one or more RIBs"; } identity L2VSI { base NETWORK_INSTANCE_TYPE; description "A private Layer 2 only switch instance which is formed of one or more L2 forwarding tables"; } identity L2P2P { base NETWORK_INSTANCE_TYPE; description "A private Layer 2 only forwarding instance which acts as a point to point connection between two endpoints"; } identity L2L3 { base NETWORK_INSTANCE_TYPE; description "A private Layer 2 and Layer 2 forwarding instance"; } identity ENDPOINT_TYPE { description "Specification of the type of endpoint that is being associated with a network instance"; } identity LOCAL { base ENDPOINT_TYPE; description "A local interface which is being associated with the endpoint"; } identity REMOTE { base ENDPOINT_TYPE; description "A remote interface which is being associated with the endpoint"; } identity LABEL_ALLOCATION_MODE { description "Base identity to be used to express types of label allocation strategies to be used within a network instance"; } identity PER_PREFIX { base LABEL_ALLOCATION_MODE; description "A label is to be allocated per prefix entry in the RIB for the network instance"; } identity PER_NEXTHOP { base LABEL_ALLOCATION_MODE; description "A label is to be allocated per nexthop entry in the RIB for the network instance"; } identity INSTANCE_LABEL { base LABEL_ALLOCATION_MODE; description "A single label is to be used for the instance"; } identity ENCAPSULATION { description "On the wire encapsulations that can be used when differentiating network instances"; } identity MPLS { base ENCAPSULATION; description "Use MPLS labels to distinguish network instances on the wire"; } identity VXLAN { base ENCAPSULATION; description "Use VXLAN (RFC7348) VNIs to distinguish network instances on the wire"; } identity SIGNALLING_PROTOCOL { description "The signalling protocol that should be used to diseminate entries within a forwarding instance"; } identity LDP { base SIGNALLING_PROTOCOL; description "Use LDP-based setup for signalling. Where the instance is a point-to-point service this refers to RFC4447 ('Martini') setup. Where the service is an L2VSI, or L2L3 instance it refers to RFC4762 LDP-signalled VPLS instances"; } identity BGP_VPLS { base SIGNALLING_PROTOCOL; description "Use BGP-based signalling and autodiscovery for VPLS instances as per RFC4761"; } identity BGP_EVPN { base SIGNALLING_PROTOCOL; description "Use BGP-based Ethernet VPN (RFC7432) based signalling for the network instance"; } // rjs note: // this should move to openconfig-types when merged typedef route-distinguisher { type union { // type 0: <2-byte administrator>:<4-byte assigned number> type string { pattern '^(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' + '[1-9]?[1-9]?[0-9][0-9]|[1-9]):' + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9])$'; } // type 1: :<2-byte assigned number> type string { pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]):' + '(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' + '[1-9]?[1-9]?[0-9][0-9]|[1-9])$'; } // type 2: <4-byte as-number>:<2-byte assigned number> type string { pattern '^(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9]):' + '(65[0-5][0-3][0-5]|[1-5]{2}[0-9]{3}|' + '[1-9]{0,2}[0-9][0-9]|[1-9])$'; } } description "A route distinguisher value"; reference "RFC4364"; } }