module openconfig-network-instance-types { yang-version 1; namespace "http://openconfig.net/yang/network-instance-types"; prefix oc-ni-types; import openconfig-extensions { prefix oc-ext; } organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net"; description "Types associated with a network instance"; revision 2021-07-14 { description "Use auto-generated regex for route-distinguisher pattern statements"; reference "0.9.3"; } revision 2021-06-16 { description "Remove trailing whitespace"; reference "0.9.2"; } revision 2021-05-21 { description "Add support for evpn"; reference "0.9.1"; } revision 2021-03-03 { description "Fix route-distinguisher's pattern statement, and remove the regexp-posix extension, which makes pattern statements conform to the YANG standard."; reference "0.9.0"; } revision 2020-06-30 { description "Add OpenConfig POSIX pattern extensions."; reference "0.8.3"; } revision 2018-11-21 { description "Add OpenConfig module metadata extensions."; reference "0.8.2"; } 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"; } oc-ext:openconfig-version "0.9.3"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; 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 3 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. In addition, the LOCAL endpoint can be used with the VXLAN attributes to define a VXLAN tunnel end-point interface."; } 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"; } typedef route-distinguisher { type union { type string { oc-ext:posix-pattern "^(([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[01][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]))$"; pattern "([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[01][0-9]{2}|42949672[0-8][0-9]|429496729[0-5])"; } type string { oc-ext:posix-pattern "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}:([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))$"; pattern "([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}:([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])"; } type string { oc-ext:posix-pattern "^(([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[01][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]):([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))$"; pattern "([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[01][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[01][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]):([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])"; } } description "A route distinguisher value"; reference "RFC4364"; } }