blob: bcbe8cac7e8022c8f62079355e84138986aa205d [file] [log] [blame]
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";
}
}