| 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.0"; |
| |
| 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: <ip-address>:<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"; |
| } |
| } |