ietf-yang-types.yang 000664 001750 001750 00000043156 12714542252 015154 0 ustar 00root1 root1 000000 000000 module ietf-yang-types {
yang-version 1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-yang-types";
prefix yang;
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: David Kessens
WG Chair: Juergen Schoenwaelder
Editor: Juergen Schoenwaelder
";
description
"This module contains a collection of generally useful derived
YANG data types.
Copyright (c) 2013 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 6991; see
the RFC itself for full legal notices.";
revision "2013-07-15" {
description
"This revision adds the following new data types:
- yang-identifier
- hex-string
- uuid
- dotted-quad";
reference
"RFC 6991: Common YANG Data Types";
}
revision "2010-09-24" {
description "Initial revision.";
reference
"RFC 6021: Common YANG Data Types";
}
typedef counter32 {
type uint32;
description
"The counter32 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter32 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter32 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter32.
In the value set and its semantics, this type is equivalent
to the Counter32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter32 {
type counter32;
default "0";
description
"The zero-based-counter32 type represents a counter32
that has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter32 textual convention of the SMIv2.";
reference
"RFC 4502: Remote Network Monitoring Management Information
Base Version 2";
}
typedef counter64 {
type uint64;
description
"The counter64 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter64 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter64 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter64.
In the value set and its semantics, this type is equivalent
to the Counter64 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter64 {
type counter64;
default "0";
description
"The zero-based-counter64 type represents a counter64 that
has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter64 textual convention of the SMIv2.";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
typedef gauge32 {
type uint32;
description
"The gauge32 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^32-1 (4294967295 decimal), and
the minimum value cannot be smaller than 0. The value of
a gauge32 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge32 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the Gauge32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef gauge64 {
type uint64;
description
"The gauge64 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^64-1 (18446744073709551615), and
the minimum value cannot be smaller than 0. The value of
a gauge64 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge64 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the CounterBasedGauge64 SMIv2 textual convention defined
in RFC 2856";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
typedef object-identifier {
type string {
pattern
'(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*';
}
description
"The object-identifier type represents administratively
assigned names in a registration-hierarchical-name tree.
Values of this type are denoted as a sequence of numerical
non-negative sub-identifier values. Each sub-identifier
value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
are separated by single dots and without any intermediate
whitespace.
The ASN.1 standard restricts the value space of the first
sub-identifier to 0, 1, or 2. Furthermore, the value space
of the second sub-identifier is restricted to the range
0 to 39 if the first sub-identifier is 0 or 1. Finally,
the ASN.1 standard requires that an object identifier
has always at least two sub-identifiers. The pattern
captures these restrictions.
Although the number of sub-identifiers is not limited,
module designers should realize that there may be
implementations that stick with the SMIv2 limit of 128
sub-identifiers.
This type is a superset of the SMIv2 OBJECT IDENTIFIER type
since it is not restricted to 128 sub-identifiers. Hence,
this type SHOULD NOT be used to represent the SMIv2 OBJECT
IDENTIFIER type; the object-identifier-128 type SHOULD be
used instead.";
reference
"ISO9834-1: Information technology -- Open Systems
Interconnection -- Procedures for the operation of OSI
Registration Authorities: General procedures and top
arcs of the ASN.1 Object Identifier tree";
}
typedef object-identifier-128 {
type object-identifier {
pattern '\d*(\.\d*){1,127}';
}
description
"This type represents object-identifiers restricted to 128
sub-identifiers.
In the value set and its semantics, this type is equivalent
to the OBJECT IDENTIFIER type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef yang-identifier {
type string {
length "1..max";
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
pattern
'.|..|[^xX].*|.[^mM].*|..[^lL].*';
}
description
"A YANG identifier string as defined by the 'identifier'
rule in Section 12 of RFC 6020. An identifier must
start with an alphabetic character or an underscore
followed by an arbitrary sequence of alphabetic or
numeric characters, underscores, hyphens, or dots.
A YANG identifier MUST NOT start with any possible
combination of the lowercase or uppercase character
sequence 'xml'.";
reference
"RFC 6020: YANG - A Data Modeling Language for the Network
Configuration Protocol (NETCONF)";
}
typedef date-and-time {
type string {
pattern
'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})';
}
description
"The date-and-time type is a profile of the ISO 8601
standard for representation of dates and times using the
Gregorian calendar. The profile is defined by the
date-time production in Section 5.6 of RFC 3339.
The date-and-time type is compatible with the dateTime XML
schema type with the following notable exceptions:
(a) The date-and-time type does not allow negative years.
(b) The date-and-time time-offset -00:00 indicates an unknown
time zone (see RFC 3339) while -00:00 and +00:00 and Z
all represent the same time zone in dateTime.
(c) The canonical format (see below) of data-and-time values
differs from the canonical format used by the dateTime XML
schema type, which requires all times to be in UTC using
the time-offset 'Z'.
This type is not equivalent to the DateAndTime textual
convention of the SMIv2 since RFC 3339 uses a different
separator between full-date and full-time and provides
higher resolution of time-secfrac.
The canonical format for date-and-time values with a known time
zone uses a numeric time zone offset that is calculated using
the device's configured known offset to UTC time. A change of
the device's offset to UTC time will cause date-and-time values
to change accordingly. Such changes might happen periodically
in case a server follows automatically daylight saving time
(DST) time zone offset changes. The canonical format for
date-and-time values with an unknown time zone (usually
referring to the notion of local time) uses the time-offset
-00:00.";
reference
"RFC 3339: Date and Time on the Internet: Timestamps
RFC 2579: Textual Conventions for SMIv2
XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
}
typedef timeticks {
type uint32;
description
"The timeticks type represents a non-negative integer that
represents the time, modulo 2^32 (4294967296 decimal), in
hundredths of a second between two epochs. When a schema
node is defined that uses this type, the description of
the schema node identifies both of the reference epochs.
In the value set and its semantics, this type is equivalent
to the TimeTicks type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef timestamp {
type timeticks;
description
"The timestamp type represents the value of an associated
timeticks schema node at which a specific occurrence
happened. The specific occurrence must be defined in the
description of any schema node defined using this type. When
the specific occurrence occurred prior to the last time the
associated timeticks attribute was zero, then the timestamp
value is zero. Note that this requires all timestamp values
to be reset to zero when the value of the associated timeticks
attribute reaches 497+ days and wraps around to zero.
The associated timeticks schema node must be specified
in the description of any schema node using this type.
In the value set and its semantics, this type is equivalent
to the TimeStamp textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
typedef phys-address {
type string {
pattern
'([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"Represents media- or physical-level addresses represented
as a sequence octets, each octet represented by two hexadecimal
numbers. Octets are separated by colons. The canonical
representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the PhysAddress textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
typedef mac-address {
type string {
pattern
'[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"The mac-address type represents an IEEE 802 MAC address.
The canonical representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the MacAddress textual convention of the SMIv2.";
reference
"IEEE 802: IEEE Standard for Local and Metropolitan Area
Networks: Overview and Architecture
RFC 2579: Textual Conventions for SMIv2";
}
typedef xpath1.0 {
type string;
description
"This type represents an XPATH 1.0 expression.
When a schema node is defined that uses this type, the
description of the schema node MUST specify the XPath
context in which the XPath expression is evaluated.";
reference
"XPATH: XML Path Language (XPath) Version 1.0";
}
typedef hex-string {
type string {
pattern
'([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A hexadecimal string with octets represented as hex digits
separated by colons. The canonical representation uses
lowercase characters.";
}
typedef uuid {
type string {
pattern
'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
}
description
"A Universally Unique IDentifier in the string representation
defined in RFC 4122. The canonical representation uses
lowercase characters.
The following is an example of a UUID in string representation:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
";
reference
"RFC 4122: A Universally Unique IDentifier (UUID) URN
Namespace";
}
typedef dotted-quad {
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])';
}
description
"An unsigned 32-bit number expressed in the dotted-quad
notation, i.e., four octets written as decimal numbers
and separated with the '.' (full stop) character.";
}
} // module ietf-yang-types
openconfig-extensions.yang 000664 001750 001750 00000005374 13076064563 016461 0 ustar 00root1 root1 000000 000000 module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "TBD";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "TBD";
}
revision "2015-10-05" {
description
"Initial revision";
reference "TBD";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Where several modules are used to build up a single block of
functionality, the same module version is specified across each
file that makes up the module.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-encrypted-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in encrypted form.
Clients reading the configuration or applied configuration
for the node should expect to receive only the encrypted value.
This annotation may be used on nodes such as secure passwords
in which the device never reports a cleartext value, even
if the input is provided as cleartext.";
}
} openconfig-mpls.yang 000664 001750 001750 00000046721 13106236413 015223 0 ustar 00root1 root1 000000 000000 module openconfig-mpls {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/mpls";
prefix "oc-mpls";
// import some basic types
import openconfig-mpls-types { prefix oc-mplst; }
import openconfig-mpls-rsvp { prefix oc-rsvp; }
import openconfig-mpls-ldp { prefix oc-ldp; }
import openconfig-types { prefix oc-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-segment-routing { prefix oc-sr; }
// include submodules
include openconfig-mpls-te;
include openconfig-mpls-igp;
include openconfig-mpls-static;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module provides data definitions for configuration of
Multiprotocol Label Switching (MPLS) and associated protocols for
signaling and traffic engineering.
RFC 3031: Multiprotocol Label Switching Architecture
The MPLS / TE data model consists of several modules and
submodules as shown below. The top-level MPLS module describes
the overall framework. Three types of LSPs are supported:
i) traffic-engineered (or constrained-path)
ii) IGP-congruent (LSPs that follow the IGP path)
iii) static LSPs which are not signaled
The structure of each of these LSP configurations is defined in
corresponding submodules. Companion modules define the relevant
configuration and operational data specific to key signaling
protocols used in operational practice.
+-------+
+---------------->| MPLS |<--------------+
| +-------+ |
| ^ |
| | |
+----+-----+ +--------+-------+ +-----+-----+
| TE LSPs | | IGP-based LSPs | |static LSPs|
| | | | | |
+----------+ +----------------+ +-----------+
^ ^ ^ ^
| +----------------+ | +--------+
| | | |
| +------+ +-+---+-+ +--+--+
+---+ RSVP | |SEGMENT| | LDP |
+------+ |ROUTING| +-----+
+-------+
";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// grouping statements
grouping mpls-admin-group_config {
description
"configuration data for MPLS link admin groups";
leaf admin-group-name {
type string;
description
"name for mpls admin-group";
}
leaf bit-position {
type uint32;
description
"bit-position value for mpls admin-group. The value
for the admin group is an integer that represents one
of the bit positions in the admin-group bitmask. Values
between 0 and 31 are interpreted as the original limit
of 32 admin groups. Values >=32 are interpreted as
extended admin group values as per RFC7308.";
}
}
grouping mpls-admin-groups-top {
description
"top-level mpls admin-groups config
and state containers";
container mpls-admin-groups {
description
"Top-level container for admin-groups configuration
and state";
list admin-group {
key "admin-group-name";
description
"configuration of value to name mapping
for mpls affinities/admin-groups";
leaf admin-group-name {
type leafref {
path "../config/admin-group-name";
}
description
"name for mpls admin-group";
}
container config {
description
"Configurable items for admin-groups";
uses mpls-admin-group_config;
}
container state {
config false;
description
"Operational state for admin-groups";
uses mpls-admin-group_config;
}
}
}
}
grouping mpls-te-igp-flooding-bandwidth_config {
description
"Configurable items for igp flooding bandwidth
threshold configuration.";
leaf threshold-type {
type enumeration {
enum DELTA {
description
"DELTA indicates that the local
system should flood IGP updates when a
change in reserved bandwidth >= the specified
delta occurs on the interface.";
}
enum THRESHOLD_CROSSED {
description
"THRESHOLD-CROSSED indicates that
the local system should trigger an update (and
hence flood) the reserved bandwidth when the
reserved bandwidth changes such that it crosses,
or becomes equal to one of the threshold values.";
}
}
description
"The type of threshold that should be used to specify the
values at which bandwidth is flooded. DELTA indicates that
the local system should flood IGP updates when a change in
reserved bandwidth >= the specified delta occurs on the
interface. Where THRESHOLD_CROSSED is specified, the local
system should trigger an update (and hence flood) the
reserved bandwidth when the reserved bandwidth changes such
that it crosses, or becomes equal to one of the threshold
values";
}
leaf delta-percentage {
when "../threshold-type = 'DELTA'" {
description
"The percentage delta can only be specified when the
threshold type is specified to be a percentage delta of
the reserved bandwidth";
}
type oc-types:percentage;
description
"The percentage of the maximum-reservable-bandwidth
considered as the delta that results in an IGP update
being flooded";
}
leaf threshold-specification {
when "../threshold-type = 'THRESHOLD_CROSSED'" {
description
"The selection of whether mirrored or separate threshold
values are to be used requires user specified thresholds to
be set";
}
type enumeration {
enum MIRRORED_UP_DOWN {
description
"MIRRORED_UP_DOWN indicates that a single set of
threshold values should be used for both increasing
and decreasing bandwidth when determining whether
to trigger updated bandwidth values to be flooded
in the IGP TE extensions.";
}
enum SEPARATE_UP_DOWN {
description
"SEPARATE_UP_DOWN indicates that a separate
threshold values should be used for the increasing
and decreasing bandwidth when determining whether
to trigger updated bandwidth values to be flooded
in the IGP TE extensions.";
}
}
description
"This value specifies whether a single set of threshold
values should be used for both increasing and decreasing
bandwidth when determining whether to trigger updated
bandwidth values to be flooded in the IGP TE extensions.
MIRRORED-UP-DOWN indicates that a single value (or set of
values) should be used for both increasing and decreasing
values, where SEPARATE-UP-DOWN specifies that the increasing
and decreasing values will be separately specified";
}
leaf-list up-thresholds {
when "../threshold-type = 'THRESHOLD_CROSSED'" +
"and ../threshold-specification = 'SEPARATE_UP_DOWN'" {
description
"A list of up-thresholds can only be specified when the
bandwidth update is triggered based on crossing a
threshold and separate up and down thresholds are
required";
}
type oc-types:percentage;
description
"The thresholds (expressed as a percentage of the maximum
reservable bandwidth) at which bandwidth updates are to be
triggered when the bandwidth is increasing.";
}
leaf-list down-thresholds {
when "../threshold-type = 'THRESHOLD_CROSSED'" +
"and ../threshold-specification = 'SEPARATE_UP_DOWN'" {
description
"A list of down-thresholds can only be specified when the
bandwidth update is triggered based on crossing a
threshold and separate up and down thresholds are
required";
}
type oc-types:percentage;
description
"The thresholds (expressed as a percentage of the maximum
reservable bandwidth) at which bandwidth updates are to be
triggered when the bandwidth is decreasing.";
}
leaf-list up-down-thresholds {
when "../threshold-type = 'THRESHOLD_CROSSED'" +
"and ../threshold-specification = 'MIRRORED_UP_DOWN'" {
description
"A list of thresholds corresponding to both increasing
and decreasing bandwidths can be specified only when an
update is triggered based on crossing a threshold, and
the same up and down thresholds are required.";
}
type oc-types:percentage;
description
"The thresholds (expressed as a percentage of the maximum
reservable bandwidth of the interface) at which bandwidth
updates are flooded - used both when the bandwidth is
increasing and decreasing";
}
}
grouping mpls-te-igp-flooding-bandwidth {
description
"Top level group for traffic engineering
database flooding options";
container igp-flooding-bandwidth {
description
"Interface bandwidth change percentages
that trigger update events into the IGP traffic
engineering database (TED)";
container config {
description
"Configuration parameters for TED
update threshold ";
uses mpls-te-igp-flooding-bandwidth_config;
}
container state {
config false;
description
"State parameters for TED update threshold ";
uses mpls-te-igp-flooding-bandwidth_config;
}
}
}
grouping te-lsp-delay_config {
description
"Group for the timers goerning the delay
in installation and cleanup of TE LSPs";
leaf install-delay {
type uint16 {
range 0..3600;
}
units seconds;
description
"delay the use of newly installed te lsp for a
specified amount of time.";
}
leaf cleanup-delay {
type uint16;
units seconds;
description
"delay the removal of old te lsp for a specified
amount of time";
}
}
grouping te-interface-attributes-top {
description
"Top level grouping for attributes
for TE interfaces.";
list interface {
key "interface-id";
description
"List of TE interfaces";
leaf interface-id {
type leafref {
path "../config/interface-id";
}
description
"Reference to the interface id list key";
}
container config {
description
"Configuration parameters related to TE interfaces:";
uses te-interface-attributes_config;
}
container state {
config false;
description
"State parameters related to TE interfaces";
uses te-interface-attributes_config;
}
uses oc-if:interface-ref;
uses mpls-te-igp-flooding-bandwidth;
}
}
grouping te-interface-attributes_config {
description
"global level definitions for interfaces
on which TE is run";
leaf interface-id {
type oc-if:interface-id;
description
"Id of the interface";
}
leaf te-metric {
type uint32;
description
"TE specific metric for the link";
}
leaf-list srlg-membership {
type leafref {
path "../../../../te-global-attributes/srlgs/srlg/name";
}
description
"list of references to named shared risk link groups that the
interface belongs to.";
}
leaf-list admin-group {
type string;
description
"list of admin groups (by name) on the interface";
}
}
grouping mpls-te-lsp-timers {
description
"Grouping for traffic engineering timers";
container te-lsp-timers {
description
"Definition for delays associated with setup
and cleanup of TE LSPs";
container config {
description
"Configuration parameters related
to timers for TE LSPs";
uses te-lsp-delay_config;
uses te-tunnel-reoptimize_config;
}
container state {
config false;
description
"State related to timers for TE LSPs";
uses te-lsp-delay_config;
uses te-tunnel-reoptimize_config;
}
}
}
grouping mpls-global_config {
description
"Definition of global MPLS configuration parameters";
leaf null-label {
type identityref {
base oc-mplst:NULL_LABEL_TYPE;
}
default oc-mplst:IMPLICIT;
description
"The null-label type used, implicit or explicit";
}
}
grouping mpls-global-top {
description
"Top level grouping for global MPLS configuration ";
container config {
description
"Top level global MPLS configuration";
uses mpls-global_config;
}
container state {
config false;
description
"Top level global MPLS state";
uses mpls-global_config;
}
}
grouping mpls-interfaces-top {
description
"Top level grouping for attributes
for MPLS-enabled interfaces.";
container interface-attributes {
description
"Parameters related to MPLS interfaces";
list interface {
key "interface-id";
description
"List of TE interfaces";
leaf interface-id {
type leafref {
path "../config/interface-id";
}
description
"Reference to the interface id list key";
}
container config {
description
"Configuration parameters related to MPLS interfaces:";
uses mpls-interface-attributes-config;
}
container state {
config false;
description
"State parameters related to TE interfaces";
uses mpls-interface-attributes-config;
}
uses oc-if:interface-ref;
}
}
}
grouping mpls-interface-attributes-config {
description
"global level definitions for interfaces
on which MPLS is run";
leaf interface-id {
type oc-if:interface-id;
description
"Indentifier for the MPLS interface";
}
leaf mpls-enabled {
type boolean;
default false;
description
"Enable MPLS forwarding on this interface";
}
}
grouping mpls-label-block-config {
description
"Configuration parameters relating to an MPLS label block.";
leaf local-id {
type string;
description
"A local identifier for the global label block allocation.";
}
leaf lower-bound {
type oc-mplst:mpls-label;
description
"Lower bound of the global label block. The block is defined to include
this label.";
}
leaf upper-bound {
type oc-mplst:mpls-label;
description
"Upper bound for the global label block. The block is defined to include
this label.";
}
}
grouping mpls-label-blocks-top {
description
"Top-level configuration and operational state parameters corresponding
to reserved label blocks.";
container reserved-label-blocks {
description
"A range of labels starting with the start-label and up-to and including
the end label that should be allocated as reserved. These labels should
not be utilised by any dynamic label allocation on the local system unless
the allocating protocol is explicitly configured to specify that
allocation of labels should be out of the label block specified.";
list reserved-label-block {
key "local-id";
description
"A range of labels starting with the start-label up to and including
the end label that should be allocated for use by a specific protocol.";
leaf local-id {
type leafref {
path "../config/local-id";
}
description
"A reference to a unique local identifier for this label block.";
}
container config {
description
"Configuration parameters relating to the label block.";
uses mpls-label-block-config;
}
container state {
config false;
description
"State parameters relating to the label block.";
uses mpls-label-block-config;
}
}
}
}
grouping mpls-top {
description
"Top level grouping for MPLS configuration and state";
container mpls {
description
"Anchor point for mpls configuration and operational
data";
container global {
// entropy label support, label ranges will be added here.
description
"general mpls configuration applicable to any
type of LSP and signaling protocol - label ranges,
entropy label supportmay be added here";
uses mpls-global-top;
uses mpls-interfaces-top;
uses mpls-label-blocks-top;
}
container te-global-attributes {
description
"traffic-engineering global attributes";
uses mpls-te-srlg-top;
uses mpls-admin-groups-top;
uses mpls-te-lsp-timers;
}
container te-interface-attributes {
description
"traffic engineering attributes specific
for interfaces";
uses te-interface-attributes-top;
}
container signaling-protocols {
description
"top-level signaling protocol configuration";
uses oc-rsvp:rsvp-global;
uses oc-ldp:ldp-global;
uses oc-sr:sr-mpls-top;
}
container lsps {
description
"LSP definitions and configuration";
container constrained-path {
description
"traffic-engineered LSPs supporting different
path computation and signaling methods";
uses explicit-paths_top;
uses te-tunnels_top;
}
container unconstrained-path {
description
"LSPs that use the IGP-determined path, i.e., non
traffic-engineered, or non constrained-path";
uses igp-lsp-common;
uses igp-lsp-setup;
}
container static-lsps {
description
"statically configured LSPs, without dynamic
signaling";
uses static-lsp-top;
}
}
}
}
uses mpls-top;
// augment statements
// rpc statements
// notification statements
}
openconfig-mpls-te.yang 000664 001750 001750 00000100300 13106236413 015611 0 ustar 00root1 root1 000000 000000 submodule openconfig-mpls-te {
yang-version "1";
belongs-to "openconfig-mpls" {
prefix "oc-mpls";
}
// import some basic types
import openconfig-inet-types { prefix inet; }
import openconfig-mpls-rsvp { prefix oc-rsvp; }
import openconfig-mpls-sr { prefix oc-sr; }
import openconfig-mpls-types {prefix oc-mplst; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration related to constrained-path LSPs and traffic
engineering. These definitions are not specific to a particular
signaling protocol or mechanism (see related submodules for
signaling protocol-specific configuration).";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// typedef statements
typedef te-bandwidth-type {
type enumeration {
enum SPECIFIED {
description
"Bandwidth is explicitly specified";
}
enum AUTO {
description
"Bandwidth is automatically computed";
}
}
description
"enumerated type for specifying whether bandwidth is
explicitly specified or automatically computed";
}
typedef mpls-srlg-flooding-type {
type enumeration {
enum FLOODED_SRLG {
description
"SRLG is flooded in the IGP";
}
enum STATIC_SRLG {
description
"SRLG is not flooded, the members are
statically configured";
}
}
description
"Enumerated bype for specifying how the SRLG is flooded";
}
typedef mpls-hop-type {
type enumeration {
enum LOOSE {
description
"loose hop in an explicit path";
}
enum STRICT {
description
"strict hop in an explicit path";
}
}
description
"enumerated type for specifying loose or strict
paths";
}
typedef te-metric-type {
type union {
type enumeration {
enum IGP {
description
"set the LSP metric to track the underlying
IGP metric";
}
}
type uint32;
}
description
"union type for setting the LSP TE metric to a
static value, or to track the IGP metric";
}
typedef cspf-tie-breaking {
type enumeration {
enum RANDOM {
description
"CSPF calculation selects a random path among
multiple equal-cost paths to the destination";
}
enum LEAST_FILL {
description
"CSPF calculation selects the path with greatest
available bandwidth";
}
enum MOST_FILL {
description
"CSPF calculation selects the path with the least
available bandwidth";
}
}
default RANDOM;
description
"type to indicate the CSPF selection policy when
multiple equal cost paths are available";
}
// grouping statements
grouping te-tunnel-reoptimize_config {
description
"Definition for reoptimize timer configuration";
leaf reoptimize-timer {
type uint16;
units seconds;
description
"frequency of reoptimization of
a traffic engineered LSP";
}
}
grouping te-lsp-auto-bandwidth_config {
description
"Configuration parameters related to autobandwidth";
leaf enabled {
type boolean;
default false;
description
"enables mpls auto-bandwidth on the
lsp";
}
leaf min-bw {
type oc-mplst:bandwidth-kbps;
description
"set the minimum bandwidth in Kbps for an
auto-bandwidth LSP";
}
leaf max-bw {
type oc-mplst:bandwidth-kbps;
description
"set the maximum bandwidth in Kbps for an
auto-bandwidth LSP";
}
leaf adjust-interval {
type uint32;
description
"time in seconds between adjustments to
LSP bandwidth";
}
leaf adjust-threshold {
type oc-types:percentage;
description
"percentage difference between the LSP's
specified bandwidth and its current bandwidth
allocation -- if the difference is greater than the
specified percentage, auto-bandwidth adjustment is
triggered";
}
}
grouping te-lsp-overflow_config {
description
"configuration for mpls lsp bandwidth
overflow adjustment";
leaf enabled {
type boolean;
default false;
description
"enables mpls lsp bandwidth overflow
adjustment on the lsp";
}
leaf overflow-threshold {
type oc-types:percentage;
description
"bandwidth percentage change to trigger
an overflow event";
}
leaf trigger-event-count {
type uint16;
description
"number of consecutive overflow sample
events needed to trigger an overflow adjustment";
}
}
grouping te-lsp-underflow_config {
description
"configuration for mpls lsp bandwidth
underflow adjustment";
leaf enabled {
type boolean;
default false;
description
"enables bandwidth underflow
adjustment on the lsp";
}
leaf underflow-threshold {
type oc-types:percentage;
description
"bandwidth percentage change to trigger
and underflow event";
}
leaf trigger-event-count {
type uint16;
description
"number of consecutive underflow sample
events needed to trigger an underflow adjustment";
}
}
grouping te-path-placement-constraints-config {
description
"Configuration data for link affinities";
leaf-list exclude-group {
type leafref {
path "../../../../../../../../../../te-global-attributes" +
"/mpls-admin-groups/admin-group/admin-group-name";
}
description
"list of references to named admin-groups to exclude in
path calculation.";
}
leaf-list include-all-group {
type leafref {
path "../../../../../../../../../../te-global-attributes" +
"/mpls-admin-groups/admin-group/admin-group-name";
}
description
"list of references to named admin-groups of which all must
be included";
}
leaf-list include-any-group {
type leafref {
path "../../../../../../../../../../te-global-attributes" +
"/mpls-admin-groups/admin-group/admin-group-name";
}
description
"list of references to named admin-groups of which one must
be included";
}
}
grouping te-path-placement-constraints-state {
description
"Operational state data for link affinities";
//TODO: currently a placeholder
}
grouping te-path-placement-constraints-top {
description
"Top-level grouping ";
container admin-groups {
description
"Top-level container for include/exclude constraints for
link affinities";
container config {
description
"Configuration data ";
uses te-path-placement-constraints-config;
}
container state {
config false;
description
"Operational state data ";
uses te-path-placement-constraints-config;
uses te-path-placement-constraints-state;
}
}
}
grouping te-tunnel-protection_config {
description
"Configuration parameters related to LSP
protection";
leaf protection-style-requested {
type identityref {
base oc-mplst:PROTECTION_TYPE;
}
default oc-mplst:UNPROTECTED;
description
"style of mpls frr protection desired: can be
link, link-node or unprotected.";
}
}
grouping explicit-route-subobject-config {
description
"The explicit route subobject grouping";
leaf address {
type inet:ip-address;
description
"router hop for the LSP path";
}
leaf hop-type {
type mpls-hop-type;
description
"strict or loose hop";
}
leaf index {
type uint8 {
range "0..255";
}
description
"Index of this explicit route object to express
the order of hops in the path";
}
}
grouping named-explicit-path-config {
description
"Configuration parameters relating to a named
explicit path";
leaf name {
type string;
description
"A string name that uniquely identifies an explicit
path";
}
}
// Explicit paths config somewhat following the IETF model
grouping explicit-paths_top {
description
"Top level global explicit path configuration
grouping";
container named-explicit-paths {
description
"Enclosing container for the named explicit paths";
list named-explicit-path {
key "name";
description
"A list of explicit paths";
leaf name {
type leafref {
path "../config/name";
}
description
"A string name that uniquely identifies
an explicit path";
}
container config {
description
"Configuration parameters relating to named explicit
paths";
uses named-explicit-path-config;
uses oc-sr:sr-path-attributes_config;
}
container state {
config false;
description
"Operational state parameters relating to the named
explicit paths";
uses named-explicit-path-config;
uses oc-sr:sr-path-attributes_config;
}
container explicit-route-objects {
description
"Enclosing container for EROs";
list explicit-route-object {
key "index";
description
"List of explicit route objects";
leaf index {
type leafref {
path "../config/index";
}
description
"Index of this explicit route object,
to express the order of hops in path";
}
container config {
description
"Configuration parameters relating to an explicit
route";
uses explicit-route-subobject-config;
}
container state {
config false;
description
"State parameters relating to an explicit route";
uses explicit-route-subobject-config;
}
}
}
}
}
}
grouping mpls-te-srlg_config {
description
"Configuration of various attributes associated
with the SRLG";
leaf name {
type string;
description
"SRLG group identifier";
}
leaf value {
type uint32;
description
"group ID for the SRLG";
}
leaf cost {
type uint32;
description
"The cost of the SRLG to the computation
algorithm";
}
leaf flooding-type {
type mpls-srlg-flooding-type;
default FLOODED_SRLG;
description
"The type of SRLG, either flooded in the IGP or
statically configured";
}
}
grouping mpls-te-srlg-members_config {
description
"Configuration of the membership of the SRLG";
leaf from-address {
type inet:ip-address;
description
"IP address of the a-side of the SRLG link";
}
leaf to-address {
type inet:ip-address;
description
"IP address of the z-side of the SRLG link";
}
}
grouping mpls-te-srlg-top {
description
"Top level grouping for MPLS shared
risk link groups.";
container srlgs {
description
"Shared risk link groups attributes";
list srlg {
key "name";
description
"List of shared risk link groups";
leaf name {
type leafref {
path "../config/name";
// Requires YANG 1.1
//require-instance true;
}
description
"The SRLG group identifier";
}
container config {
description
"Configuration parameters related to the SRLG";
uses mpls-te-srlg_config;
}
container state {
config false;
description
"State parameters related to the SRLG";
uses mpls-te-srlg_config;
}
container static-srlg-members {
when "../config/flooding-type = 'STATIC_SRLG'" {
description
"Include this container for static
SRLG specific configuration";
}
description
"SRLG members for static (not flooded) SRLGs ";
list members-list {
key "from-address";
description
"List of SRLG members, which are expressed
as IP address endpoints of links contained in the
SRLG";
leaf from-address {
type leafref {
path "../config/from-address";
// Requires YANG 1.1
//require-instance true;
}
description
"The from address of the link in the SRLG";
}
container config {
description
"Configuration parameters relating to the
SRLG members";
uses mpls-te-srlg-members_config;
}
container state {
config false;
description
"State parameters relating to the SRLG
members";
uses mpls-te-srlg-members_config;
}
}
}
}
}
}
grouping te-global-tunnel_config {
description
"Configuration parameters relevant to a single
traffic engineered tunnel.";
leaf name {
type string;
description
"The tunnel name";
}
leaf type {
type identityref {
base oc-mplst:TUNNEL_TYPE;
}
description
"Tunnel type, p2p or p2mp";
}
leaf signaling-protocol {
type identityref {
base oc-mplst:PATH_SETUP_PROTOCOL;
}
description
"Signaling protocol used to set up this tunnel";
}
leaf description {
type string;
description
"optional text description for the tunnel";
}
leaf admin-status {
type identityref {
base oc-mplst:TUNNEL_ADMIN_STATUS;
}
default oc-mplst:ADMIN_UP;
description
"TE tunnel administrative state.";
}
leaf preference {
type uint8 {
range "1..255";
}
description
"Specifies a preference for this tunnel.
A lower number signifies a better preference";
}
leaf metric-type {
type identityref {
base oc-mplst:LSP_METRIC_TYPE;
}
default oc-mplst:LSP_METRIC_INHERITED;
description
"The type of metric specification that should be used to set
the LSP(s) metric";
}
leaf metric {
type int32;
description
"The value of the metric that should be specified. The value
supplied in this leaf is used in conjunction with the metric
type to determine the value of the metric used by the system.
Where the metric-type is set to LSP_METRIC_ABSOLUTE - the
value of this leaf is used directly; where it is set to
LSP_METRIC_RELATIVE, the relevant (positive or negative)
offset is used to formulate the metric; where metric-type
is LSP_METRIC_INHERITED, the value of this leaf is not
utilised";
}
leaf shortcut-eligible {
type boolean;
default "true";
description
"Whether this LSP is considered to be eligible for us as a
shortcut in the IGP. In the case that this leaf is set to
true, the IGP SPF calculation uses the metric specified to
determine whether traffic should be carried over this LSP";
}
leaf protection-style-requested {
type identityref {
base oc-mplst:PROTECTION_TYPE;
}
default oc-mplst:UNPROTECTED;
description
"style of mpls frr protection desired: can be
link, link-node or unprotected.";
}
uses te-tunnel-reoptimize_config;
uses oc-rsvp:rsvp-p2p-tunnel-attributes_config;
}
grouping tunnel-p2p-attributes_config {
description
"Configuration related to p2p LSPs";
leaf destination {
type inet:ip-address;
description
"P2P tunnel destination address";
}
}
grouping p2p-path_state {
description
"Operational state parameters for p2p paths";
leaf associated-rsvp-session {
type leafref {
path "../../../../../../../../../signaling-protocols/" +
"rsvp-te/sessions/session/local-index";
}
description
"If the signalling protocol specified for this path is
RSVP-TE, this leaf provides a reference to the associated
session within the RSVP-TE protocol sessions list, such
that details of the signaling can be retrieved.";
}
}
grouping p2p-path_config {
description
"Configuration parameters for p2p paths";
leaf name {
type string;
description
"Path name";
}
leaf path-computation-method {
type identityref {
base oc-mplst:PATH_COMPUTATION_METHOD;
}
default oc-mplst:LOCALLY_COMPUTED;
description
"The method used for computing the path, either
locally computed, queried from a server or not
computed at all (explicitly configured).";
}
leaf use-cspf {
when "../path-computation-method = 'LOCALLY_COMPUTED'" {
description
"The use of cspf when the path-computation method is
local computation";
}
type boolean;
description
"Flag to enable CSPF for locally computed LSPs";
}
leaf cspf-tiebreaker {
when "../path-computation-method = 'LOCALLY_COMPUTED'" {
description
"The cspf tiebreaking method when the path is
locally computed";
}
type cspf-tie-breaking;
description
"Determine the tie-breaking method to choose between
equally desirable paths during CSFP computation";
}
leaf path-computation-server {
when "../path-computation-method = 'EXTERNALLY_QUERIED'" {
description
"The path-computation server when the path is
externally queried";
}
type inet:ip-address;
description
"Address of the external path computation
server";
}
leaf explicit-path-name {
when "../path-computation-method = 'EXPLICITLY_DEFINED'" {
description
"The name of the explicitly defined path used";
}
type leafref {
path "../../../../../../../"
+ "named-explicit-paths/named-explicit-path/"
+ "config/name";
// Requires YANG 1.1
//require-instance true;
}
description
"reference to a defined path";
}
leaf preference {
type uint8 {
range "1..255";
}
description
"Specifies a preference for this path. The lower the
number higher the preference";
}
uses oc-rsvp:rsvp-p2p-path-attributes_config;
}
grouping te-tunnel-p2p_top {
description
"Top level grouping for p2p configuration";
container p2p-tunnel-attributes {
when "../config/type = 'P2P'" {
description
"Include this container for LSPs of type P2P";
}
description
"Parameters related to LSPs of type P2P";
container config {
description
"Configuration parameters for P2P LSPs";
uses tunnel-p2p-attributes_config;
}
container state {
config false;
description
"State parameters for P2P LSPs";
uses tunnel-p2p-attributes_config;
}
uses p2p-primary-paths_top;
uses p2p-secondary-paths_top;
}
}
grouping te-tunnel_state {
description
"Counters and statistical data relevent to a single
tunnel.";
leaf oper-status {
type identityref {
base oc-mplst:LSP_OPER_STATUS;
}
description
"The operational status of the TE tunnel";
}
leaf role {
type identityref {
base oc-mplst:LSP_ROLE;
}
description
"The lsp role at the current node, whether it is headend,
transit or tailend.";
}
container counters {
description
"State data for MPLS label switched paths. This state
data is specific to a single label switched path.";
leaf bytes {
type yang:counter64;
description
"Number of bytes that have been forwarded over the
label switched path.";
}
leaf packets {
type yang:counter64;
description
"Number of pacets that have been forwarded over the
label switched path.";
}
leaf path-changes {
type yang:counter64;
description
"Number of path changes for the label switched path";
}
leaf state-changes {
type yang:counter64;
description
"Number of state changes for the label switched path";
}
leaf online-time {
type yang:date-and-time;
description
"Indication of the time the label switched path
transitioned to an Oper Up or in-service state";
}
leaf current-path-time {
type yang:date-and-time;
description
"Indicates the time the LSP switched onto its
current path. This is reset upon a LSP path
change.";
}
leaf next-reoptimization-time {
type yang:date-and-time;
description
"Indicates the next scheduled time the LSP
will be reoptimized.";
}
}
}
grouping te-tunnel-bandwidth_config {
description
"Configuration parameters related to bandwidth for a tunnel";
leaf specification-type {
type te-bandwidth-type;
default SPECIFIED;
description
"The method used for settign the bandwidth, either explicitly
specified or configured";
}
leaf set-bandwidth {
when "../specification-type = 'SPECIFIED'" {
description
"The bandwidth value when bandwidth is explicitly
specified";
}
type oc-mplst:bandwidth-kbps;
description
"set bandwidth explicitly, e.g., using
offline calculation";
}
}
grouping te-tunnel-bandwidth_state {
description
"Operational state parameters relating to bandwidth for a tunnel";
leaf signaled-bandwidth {
type oc-mplst:bandwidth-kbps;
description
"The currently signaled bandwidth of the LSP. In the case where
the bandwidth is specified explicitly, then this will match the
value of the set-bandwidth leaf; in cases where the bandwidth is
dynamically computed by the system, the current value of the
bandwidth should be reflected.";
}
}
grouping te-tunnel-bandwidth_top {
description
"Top level grouping for specifying bandwidth for a tunnel";
container bandwidth {
description
"Bandwidth configuration for TE LSPs";
container config {
description
"Configuration parameters related to bandwidth on TE
tunnels:";
uses te-tunnel-bandwidth_config;
}
container state {
config false;
description
"State parameters related to bandwidth
configuration of TE tunnels";
uses te-tunnel-bandwidth_config;
uses te-tunnel-bandwidth_state;
}
container auto-bandwidth {
when "../config/specification-type = 'AUTO'" {
description
"Include this container for auto bandwidth
specific configuration";
}
description
"Parameters related to auto-bandwidth";
container config {
description
"Configuration parameters relating to MPLS
auto-bandwidth on the tunnel.";
uses te-lsp-auto-bandwidth_config;
}
container state {
config false;
description
"State parameters relating to MPLS
auto-bandwidth on the tunnel.";
uses te-lsp-auto-bandwidth_config;
}
container overflow {
description
"configuration of MPLS overflow bandwidth
adjustement for the LSP";
container config {
description
"Config information for MPLS overflow bandwidth
adjustment";
uses te-lsp-overflow_config;
}
container state {
config false;
description
"Config information for MPLS overflow bandwidth
adjustment";
uses te-lsp-overflow_config;
}
}
container underflow {
description
"configuration of MPLS underflow bandwidth
adjustement for the LSP";
container config {
description
"Config information for MPLS underflow bandwidth
adjustment";
uses te-lsp-underflow_config;
}
container state {
config false;
description
"State information for MPLS underflow bandwidth
adjustment";
uses te-lsp-underflow_config;
}
}
}
}
}
grouping p2p-path-candidate-secondary-path-config {
description
"Configuration parameters relating to a secondary path which
is a candidate for a particular primary path";
leaf secondary-path {
type leafref {
path "../../../../../../p2p-secondary-paths/" +
"p2p-secondary-path/config/name";
}
description
"A reference to the secondary path that should be utilised
when the containing primary path option is in use";
}
leaf priority {
type uint16;
description
"The priority of the specified secondary path option. Higher
priority options are less preferable - such that a secondary
path reference with a priority of 0 is the most preferred";
}
}
grouping p2p-path-candidate-secondary-path-state {
description
"Operational state parameters relating to a secondary path
which is a candidate for a particular primary path";
leaf active {
type boolean;
description
"Indicates the current active path option that has
been selected of the candidate secondary paths";
}
}
grouping p2p-primary-paths_top {
description
"Top level grouping for p2p primary paths";
container p2p-primary-path {
description
"Primary paths associated with the LSP";
list p2p-primary-path {
key "name";
description
"List of p2p primary paths for a tunnel";
leaf name {
type leafref {
path "../config/name";
// Requires YANG 1.1
//require-instance true;
}
description
"Path name";
}
container config {
description
"Configuration parameters related to paths";
uses p2p-path_config;
}
container state {
config false;
description
"State parameters related to paths";
uses p2p-path_config;
uses p2p-path_state;
}
container candidate-secondary-paths {
description
"The set of candidate secondary paths which may be used
for this primary path. When secondary paths are specified
in the list the path of the secondary LSP in use must be
restricted to those path options referenced. The
priority of the secondary paths is specified within the
list. Higher priority values are less preferred - that is
to say that a path with priority 0 is the most preferred
path. In the case that the list is empty, any secondary
path option may be utilised when the current primary path
is in use.";
list candidate-secondary-path {
key "secondary-path";
description
"List of secondary paths which may be utilised when the
current primary path is in use";
leaf secondary-path {
type leafref {
path "../config/secondary-path";
}
description
"A reference to the secondary path option reference
which acts as the key of the candidate-secondary-path
list";
}
container config {
description
"Configuration parameters relating to the candidate
secondary path";
uses p2p-path-candidate-secondary-path-config;
}
container state {
config false;
description
"Operational state parameters relating to the candidate
secondary path";
uses p2p-path-candidate-secondary-path-config;
uses p2p-path-candidate-secondary-path-state;
}
}
}
uses te-path-placement-constraints-top;
}
}
}
grouping p2p-secondary-paths_top {
description
"Top level grouping for p2p secondary paths";
container p2p-secondary-paths {
description
"Secondary paths for the LSP";
list p2p-secondary-path {
key "name";
description
"List of p2p primary paths for a tunnel";
leaf name {
type leafref {
path "../config/name";
// Requires YANG 1.1
//require-instance true;
}
description
"Path name";
}
container config {
description
"Configuration parameters related to paths";
uses p2p-path_config;
}
container state {
config false;
description
"State parameters related to paths";
uses p2p-path_config;
uses p2p-path_state;
}
uses te-path-placement-constraints-top;
}
}
}
grouping te-tunnels_top {
description
"Top level grouping for TE tunnels";
container tunnels {
description
"Enclosing container for tunnels";
list tunnel {
key "name";
description
"List of TE tunnels. This list contains only the LSPs that the
current device originates (i.e., for which it is the head-end).
Where the signaling protocol utilised for an LSP allows a mid-point
or tail device to be aware of the LSP (e.g., RSVP-TE), then the
associated sessions are maintained per protocol";
leaf name {
type leafref {
path "../config/name";
// Requires YANG 1.1
//require-instance true;
}
description
"The tunnel name";
}
container config {
description
"Configuration parameters related to TE tunnels:";
uses te-global-tunnel_config;
}
container state {
config false;
description
"State parameters related to TE tunnels";
uses te-global-tunnel_config;
uses te-tunnel_state;
}
uses te-tunnel-bandwidth_top;
uses te-tunnel-p2p_top;
// TODO - add the p2mp configuration
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
openconfig-interfaces.yang 000664 001750 001750 00000070626 13106236423 016375 0 ustar 00root1 root1 000000 000000 module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import ietf-yang-types { prefix yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and and with
additional configuration items.";
//// oc-ext:openconfig-version "1.1.0";
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf name {
type string;
description
"[adapted from IETF interfaces model (RFC 7223)]
The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
leaf description {
type string;
description
"[adapted from IETF interfaces model (RFC 7223)]
A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"[adapted from IETF interfaces model (RFC 7223)]
This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:timeticks;
description
"Date and time of the last state change of the interface
(e.g., up-to-down transition). This corresponds to the
ifLastChange object in the standard interface MIB.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics. Some of these are adapted from RFC 7223";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
container counters {
description
"A collection of interface-related statistics objects.";
reference
"RFC 7223 - A YANG Data Model for Interface
Management";
leaf in-octets {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf last-clear {
type yang:date-and-time;
description
"Indicates the last time the interface counters were
cleared.";
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the configured name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
openconfig-mpls-igp.yang 000664 001750 001750 00000003207 13106236414 015771 0 ustar 00root1 root1 000000 000000 submodule openconfig-mpls-igp {
yang-version "1";
belongs-to "openconfig-mpls" {
prefix "oc-mpls";
}
// import some basic types
import openconfig-mpls-ldp { prefix oc-ldp; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration generic configuration parameters for IGP-congruent
LSPs";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// grouping statements
grouping igp-lsp-common {
description
"common definitions for IGP-congruent LSPs";
}
grouping igp-lsp-setup {
description
"signaling protocol definitions for IGP-based LSPs";
container path-setup-protocol {
description
"select and configure the signaling method for
the LSP";
// uses path-setup-common;
uses oc-ldp:igp-lsp-ldp-setup;
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
openconfig-segment-routing.yang 000664 001750 001750 00000055456 13106236377 017415 0 ustar 00root1 root1 000000 000000 module openconfig-segment-routing {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/sr";
prefix "oc-sr";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-mpls-types { prefix "oc-mpls-t"; }
import openconfig-interfaces { prefix "oc-if"; }
import ietf-inet-types { prefix "inet"; }
import ietf-yang-types { prefix "yang"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration and operational state parameters relating to the
segment routing. This module defines a number of elements which are
instantiated in multiple places throughout the OpenConfig collection
of models.
Particularly:
- SRGB+LB dataplane instances - directly instantied by SR.
- SRGB+LB dataplane reservations - instantiated within MPLS and future SR
dataplanes.
- SR SID advertisements - instantiated within the relevant IGP.
- SR-specific counters - instantied within the relevant dataplane.";
// oc-ext:openconfig-version "0.0.3";
revision "2017-01-12" {
description
"Minor compliance fixes.";
reference "0.0.3";
}
revision "2016-12-15" {
description
"Updated revision of SR module.";
reference "0.0.2";
}
revision "2016-07-28" {
description
"Initial revision of SR module.";
reference "0.0.1";
}
typedef sr-dataplane-type {
type enumeration {
enum MPLS {
description
"The entity uses MPLS labels as Segment Identifiers.";
}
enum IPV6 {
description
"The entity uses IPv6 prefixes as Segment Identifiers.";
}
}
description
"Types of data plane that can be used to instantiate a Segment
Routing block of SIDs.";
}
typedef sr-sid-type {
type union {
type oc-mpls-t:mpls-label;
type inet:ipv6-address-no-zone;
}
description
"The defined value of a segment identifier.";
}
grouping srgb-config {
description
"Configuration parameters relating to the SRGB.";
leaf local-id {
type string;
description
"Unique identifier for the segment routing global block on
the local system.";
}
leaf dataplane-type {
type sr-dataplane-type;
description
"The dataplane being used to instantiate the SRGB. When MPLS is specified
the set of MPLS label blocks that are defined in the mpls-label-blocks
list are used to make up the SRGB. When IPv6 is specified, the set of IPv6
prefixes specified in the ipv6-prefixes list are used.";
}
leaf-list mpls-label-blocks {
when "../dataplane-type = 'MPLS'" {
description
"Allow the MPLS label block to be specified only for SRGBs that are
using the MPLS dataplane.";
}
type leafref {
// We are at /network-instances/network-instance/segment-routing/
// srgbs/srgb/config/mpls-label-blocks
path "../../../../../mpls/global/reserved-label-blocks/" +
"reserved-label-block/config/local-id";
}
description
"A list of refences to the label blocks that are used to make
up the SRGB.";
}
leaf-list ipv6-prefixes {
when "../dataplane-type = 'IPV6'" {
description
"Allow IPv6 prefixes to be specified only when the dataplane
realisation of the SRGB is IPv6.";
}
type inet:ipv6-prefix;
description
"A list of IPv6 prefixes which are to be used for segment routing using
the IPv6 dataplane.";
}
}
grouping srgb-state {
description
"Operational state parameters relating to the SRGB.";
leaf size {
type uint32;
description
"The total number of SRGB entries that are available within the SRGB.";
}
leaf used {
type uint32;
description
"The total number of SRGB entries that have already been alocated by
protocols referencing the SRGB.";
}
}
grouping srlb-config {
description
"Configuration parameters relating to an SRLB.";
leaf local-id {
type string;
description
"A unique local identifier used for the Segment Routing Local Block.
The identifier is used when referencing the SRLB within other
contexts.";
}
leaf dataplane-type {
type sr-dataplane-type;
description
"The dataplane that is to be used for the Segment Routing Local Block.
When MPLS is specified, the local block corresponds to a block of MPLS
labels; when IPv6 is specified it corresponds to an IPv6 prefix.";
}
leaf mpls-label-block {
when "../dataplane-type = 'MPLS'" {
description
"Allow the MPLS label block to be specified only for SRLBs that are
using the MPLS dataplane.";
}
type leafref {
path "../../../../../mpls/global/reserved-label-blocks/" +
"reserved-label-block/config/local-id";
}
description
"A reference to the MPLS label block that is used to contain the
SIDs of the SRLB.";
}
leaf ipv6-prefix {
when "../dataplane-type = 'IPV6'" {
description
"Allow IPv6 prefixes to be specified only when the dataplane
realisation of the SRGB is IPv6.";
}
type inet:ipv6-prefix;
description
"The IPv6 prefix that is used for the SRLB.";
}
}
grouping sr-structural {
description
"Top-level structural grouping defining Segment Routing Global Blocks.";
container srgbs {
description
"Configuration and operational state parameters relating to the
SRGBs defined for the system.";
list srgb {
key "local-id";
description
"A single definition of an SRGB which may comprise of multiple
sets of dataplane addresses (IPv6 addresses, or MPLS labels).";
leaf local-id {
type leafref {
path "../config/local-id";
}
description
"A reference to the identifier for the SRGB.";
}
container config {
description
"Configuration parameters relating to the SRGB.";
uses srgb-config;
}
container state {
config false;
description
"State parameters relating to the SRGB.";
uses srgb-config;
uses srgb-state;
}
}
}
container srlbs {
description
"Configuration and operational state parameters relating to the
Segment Routing Local Blocks (SRLBs) defined for the system.";
list srlb {
key "local-id";
description
"A definition of a Segment Routing Local Block, defined to be
a set of Segment Identifiers (specified as MPLS labels or
IPv6 addreses) that are defined for local allocation by the
system. A block may optionally be advertised into an IGP.";
leaf local-id {
type leafref {
path "../config/local-id";
}
description
"Reference to the local identifier used for the SRLB.";
}
container config {
description
"Configuration parameters relating to the SRLB.";
uses srlb-config;
}
container state {
config false;
description
"Operational state parmeters relating to the SRLB.";
uses srlb-config;
}
}
}
}
grouping sr-mpls-top {
description
"Structural grouping defining SR definition within MPLS.";
container segment-routing {
description
"MPLS-specific Segment Routing configuration and operational state
parameters";
container aggregate-sid-counters {
description
"Per-SID counters aggregated across all interfaces on the local system";
list aggregate-sid-counter {
key "mpls-label";
config false;
description
"Counters aggregated across all of the interfaces of the local
system corresponding to traffic received or forwarded with a
particular SID";
leaf mpls-label {
type leafref {
path "../state/mpls-label";
}
description
"The MPLS label representing the segment identifier";
}
container state {
config false;
description
"State parameters for per-SID statistics";
uses sr-mpls-sid-counters-state;
uses sr-mpls-common-counters;
}
}
}
container interfaces {
description
"Interface related Segment Routing parameters.";
list interface {
key "interface-id";
description
"Parameters and MPLS-specific configuration relating to Segment
Routing on an interface.";
leaf interface-id {
type leafref {
path "../config/interface-id";
}
description
"A reference to the ID for the interface for which SR is
configured";
}
container config {
description
"MPLS-specific Segment Routing configuration parameters
related to an interface.";
uses sr-mpls-interface-config;
}
container state {
config false;
description
"MPLS-specific Segment Routing operational state parameters
related to an interface.";
uses sr-mpls-interface-config;
uses sr-mpls-interface-state;
}
container sid-counters {
description
"Per-SID statistics for MPLS";
list sid-counter {
key "mpls-label";
config false;
description
"Per segment identifier counters for the MPLS dataplane.";
leaf mpls-label {
type leafref {
path "../state/mpls-label";
}
description
"The MPLS label representing the segment identifier";
}
container state {
config false;
description
"State parameters for per-SID statistics";
uses sr-mpls-sid-counters-state;
uses sr-mpls-common-counters;
}
container forwarding-classes {
description
"Per-SID per-forwarding class counters for Segment Routing.";
list forwarding-class {
key "exp";
config false;
description
"SID entries for the forwarding class associated with the
referenced MPLS EXP.";
leaf exp {
type leafref {
path "../state/exp";
}
description
"Reference to the value of the EXP bits of the segment
identifier.";
}
container state {
config false;
description
"Per-SID, per forwarding class counters for Segment Routing
with the MPLS dataplane";
uses sr-mpls-interface-sid-fc-state;
uses sr-mpls-common-counters;
}
}
}
}
}
uses oc-if:interface-ref;
}
}
}
}
grouping sr-mpls-interface-config {
description
"MPLS-specific Segment Routing configuration for an interface";
leaf interface-id {
type string;
description
"A unique identifier for the interface.";
}
}
grouping sr-mpls-interface-state {
description
"MPLS-specific Segment Routing operational state parameters for an
interface";
uses sr-mpls-common-counters;
}
grouping sr-mpls-interface-sid-fc-state {
description
"Per-SID per forwarding class statistics for SR with the MPLS dataplane";
leaf exp {
type uint8 {
range "0..7";
}
description
"The value of the MPLS EXP (experimental) or Traffic Class bits that the
SID statistics relate to. Packets received with a MPLS label value
equal to the SID's MPLS label and EXP bits equal to the this value
should be counted towards the associated ingress statistics. Packets
that are forwarded to the destination MPLS label corresponding to the
SID should be counted towards this value. In the egress direction, where
forwarding follows a SID value that requires PHP at the local node,
packets should still be counted towards the egress counters.";
}
}
grouping sr-mpls-sid-counters-state {
description
"Per-SID statistics leaves";
leaf mpls-label {
type oc-mpls-t:mpls-label;
description
"The MPLS label used for the segment identifier";
}
}
grouping sr-mpls-common-counters {
description
"Per segment identifier counters used in the model";
leaf in-pkts {
type yang:counter64;
description
"A cumulative counter of the packets received within the context
which have matched a label corresponding to an SR Segment Identifier.";
}
leaf in-octets {
type yang:counter64;
description
"The cumulative counter of the total bytes received within the context
which have matched a label corresponding to an SR Segment Identifier";
}
leaf out-pkts {
type yang:counter64;
description
"A cumulative counter of the total number of packets transmitted by
the local system within the context which have a label imposed that
corresponds to an Segment Identifier.";
}
leaf out-octets {
type yang:counter64;
description
"A cumulative counter of the total bytes transmitted by the local
system within the context which have a label imported that
corresponds to an SR Segment Identifier.";
}
}
grouping sr-igp-config {
description
"Configuration parameters relating to segment routing within an
IGP.";
leaf enabled {
type boolean;
description
"When this leaf is set to true, the segment routing extensions are
utilised within the IGP.";
}
leaf srgb {
type leafref {
path "../../../../../../../segment-routing/srgbs/srgb/config/local-id";
}
description
"A reference to the Segment Routing Global Block (SRGB) that is
to be used by this IGP instance.";
}
leaf srlb {
// Leaf is defined at
// /network-instances/network-instance/protocols/protocol//global/
// segment-routing/config
type leafref {
path "../../../../../../../segment-routing/srlbs/srlb/config/local-id";
}
description
"A reference to the Segment Routing Local Block (SRLB) that is to
be advertised by the IGP instance.";
}
}
grouping sr-igp-top {
description
"Per-instance configuration and state parameters for Segment Routing
in an IGP.";
container segment-routing {
description
"Configuration and operational state relating to segment routing.";
container config {
description
"Configuration parameters relating to the configuration of segment
routing for the IGP instance.";
uses sr-igp-config;
}
container state {
config false;
description
"Operational state parameters relating to segment routing for the
IGP instance.";
uses sr-igp-config;
}
}
}
grouping sr-igp-interface-prefix-sid-config {
description
"Configuration parameters relating to an IGP prefix SID advertisement";
leaf prefix {
type inet:ip-prefix;
description
"The IP prefix for which the IGP prefix SID should be advertised. The
value specified is a local prefix on the interface which is advertised
into the IGP.";
}
leaf sid-id {
type sr-sid-type;
description
"The Segment Identifier to be used when advertising the IGP Prefix SID.";
}
leaf label-options {
type enumeration {
enum NO_PHP {
description
"When this value is specified, the penultimate hop must not pop
the Prefix-SID label before forwarding it to the local system.";
}
enum EXPLICIT_NULL {
description
"When set, the penultimate hop must swap the prefix SID for the
relevant explicit null label before forwarding the packet.";
}
}
description
"The options associated with the IGP prefix SID for MPLS. The value
of this leaf specifies the option that the SID should be advertised
into the IGP with.";
}
}
grouping sr-igp-interface-adjsid-config {
description
"Configuration parameters relating to an Adj-SID on an interface";
leaf sid-id {
type union {
type sr-sid-type;
type enumeration {
enum DYNAMIC {
description
"The SID chosen for the Adjacency SID should be dynamically
allocated from the system's dynamic range of Segment
Identifiers. For MPLS, this range should be considered to be
those labels that do not fall within a reserved label block.";
}
}
}
description
"The value of the Adj-SID to be advertised. Where a static SID
identifier is specified, this should be advertised directly by the
system. Where the DYNAMIC value is specified, this should be treated
as a dynamically allocated value. When the MPLS data plane is in use
the dynamic value should not fall within a reserved-label-block.";
}
leaf protection-eligible {
type boolean;
default true;
description
"Whether the Adj-SID should be considered to be eligible for protection
using IP or MPLS FRR during a network failure. When this value is set to
true, the B-flag of the Adj-SID is set to 1, and the local system should
provide FRR paths for the associated label forwarding entry. When it is
set to false, the local system must not provide FRR for the specified
LFIB entry.";
}
leaf group {
type boolean;
default false;
description
"When set to true, the Adj-SID is indicated to be part of a group, and
the G flag is set to 1 in the corresponding advertisement in the IGP.";
}
leaf neighbor {
type inet:ip-address;
description
"The remote system on the interface with which the Adj-SID is
associated.";
}
}
grouping sr-igp-interface-adjsid-state {
description
"Operational state parameters relating to the adjacency SID for an
interface";
leaf allocated-dynamic-local {
type sr-sid-type;
description
"Where an Adjacency SID with a dynamic value is to be allocated by
the system, this leaf reports to the value of the Adj-SID allocated
to this interface.";
}
}
grouping sr-igp-interface-top {
description
"Per-interface configuration and operational state relating to an
interface within the IGP.";
container segment-routing {
description
"Configuration and operatioanl state parameters relating to segment
routing for an interface within the IGP.";
container prefix-sids {
description
"Configuration and operational state parameters relating to
the advertisement of a segment routing IGP-Prefix SID for this
interface.";
list prefix-sid {
key "prefix";
description
"An IGP prefix that should have a segment routing IGP-Prefix SID
allocated to it. The value of the SID is specified by the SID ID,
as an absolute value. If the absolute value falls within the SRGB,
the Global flag should be advertised by the system.";
leaf prefix {
type leafref {
path "../config/prefix";
}
description
"Reference to the prefix for which the IGP-Prefix SID is to be
advertised";
}
container config {
description
"Configuration parameters for the IGP Prefix SID.";
uses sr-igp-interface-prefix-sid-config;
}
container state {
config false;
description
"Operational state parameters for the IGP-Prefix SID.";
uses sr-igp-interface-prefix-sid-config;
}
}
}
container adjacency-sids {
description
"Configuration and operational state parameters relating to
the advertisement of a segment routing adjacency SID for this
interface.";
list adjacency-sid {
key "neighbor sid-id";
description
"An Adjacency SID to be advertised for the specified interface.
The Adj-SID's identifier (the SID ID) must be unique, with flags
specified indicating the parameters that should be set for the SID.
Where a SID value is specified that is allocated from the SRGB, the
global flag must be set by the system.";
leaf sid-id {
type leafref {
path "../config/sid-id";
}
description
"Reference to the segment identifier to be used by the local
system.";
}
leaf neighbor {
type leafref {
path "../config/neighbor";
}
description
"Reference to the neighbor with which the Adjacency SID is
associated.";
}
container config {
description
"Configuraton parameters relating to the AdjSID.";
uses sr-igp-interface-adjsid-config;
}
container state {
config false;
description
"Operational state parameters relating to the AdjSID.";
uses sr-igp-interface-adjsid-config;
uses sr-igp-interface-adjsid-state;
}
}
}
}
}
grouping sr-top {
description
"Top level grouping for Segment Routing";
container segment-routing {
description
"Configuration and operational state parameters relating to
segment routing.";
uses sr-structural;
}
}
}
openconfig-mpls-static.yang 000664 001750 001750 00000012555 13106236413 016506 0 ustar 00root1 root1 000000 000000 submodule openconfig-mpls-static {
yang-version "1";
belongs-to "openconfig-mpls" {
prefix "mpls";
}
// import some basic types
import openconfig-mpls-types {prefix oc-mplst; }
import openconfig-inet-types { prefix inet; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Defines static LSP configuration";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// grouping statements
grouping static-lsp-common-config {
description
"common definitions for static LSPs";
leaf next-hop {
type inet:ip-address;
description
"next hop IP address for the LSP";
}
leaf incoming-label {
type oc-mplst:mpls-label;
description
"label value on the incoming packet";
}
leaf push-label {
type oc-mplst:mpls-label;
description
"label value to push at the current hop for the
LSP";
}
}
grouping static-lsp-ingress-config {
description
"Configuration data for ingress LSPs";
uses static-lsp-common-config;
}
grouping static-lsp-ingress-state {
description
"Operational state data for ingress LSPs";
}
grouping static-lsp-ingress-top {
description
"Top-level grouping for ingress LSP data";
container ingress {
description
"Static LSPs for which the router is an
ingress node";
container config {
description
"Configuration data for ingress LSPs";
uses static-lsp-ingress-config;
}
container state {
config false;
description
"Operational state data for ingress LSPs";
uses static-lsp-ingress-config;
uses static-lsp-ingress-state;
}
}
}
grouping static-lsp-transit-config {
description
"Configuration data for transit LSPs";
uses static-lsp-common-config;
}
grouping static-lsp-transit-state {
description
"Operational state data for transit LSPs";
}
grouping static-lsp-transit-top {
description
"Top-level grouping for transit LSP data";
container transit {
description
"Static LSPs for which the router is an
transit node";
container config {
description
"Configuration data for transit LSPs";
uses static-lsp-transit-config;
}
container state {
config false;
description
"Operational state data for transit LSPs";
uses static-lsp-transit-config;
uses static-lsp-transit-state;
}
}
}
grouping static-lsp-egress-config {
description
"Configuration data for egress LSPs";
uses static-lsp-common-config;
}
grouping static-lsp-egress-state {
description
"Operational state data for egress LSPs";
}
grouping static-lsp-egress-top {
description
"Top-level grouping for egress LSP data";
container egress {
description
"Static LSPs for which the router is an
egress node";
container config {
description
"Configuration data for egress LSPs";
uses static-lsp-egress-config;
}
container state {
config false;
description
"Operational state data for egress LSPs";
uses static-lsp-egress-config;
uses static-lsp-egress-state;
}
}
}
grouping static-lsp-config {
description
"Configuration data for static LSPs";
leaf name {
type string;
description
"name to identify the LSP";
}
}
grouping static-lsp-state {
description
"Operational state data for static LSPs";
}
grouping static-lsp-top {
description
"grouping for top level list of static LSPs";
list static-lsp {
key "name";
description
"list of defined static LSPs";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference the name list key";
}
container config {
description
"Configuration data for the static lsp";
uses static-lsp-config;
}
container state {
config false;
description
"Operational state data for the static lsp";
uses static-lsp-config;
uses static-lsp-state;
}
// TODO: separation into ingress, transit, egress may help
// to figure out what exactly is configured, but need to
// consider whether implementations can support the
// separation
uses static-lsp-ingress-top;
uses static-lsp-transit-top;
uses static-lsp-egress-top;
}
}
// data definition statements
// augment statements
}
openconfig-inet-types.yang 000664 001750 001750 00000013503 13106236424 016343 0 ustar 00root1 root1 000000 000000 module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust’s Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
//// oc-ext:openconfig-version "0.1.1";
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// IPv4 and IPv6 types.
typedef ipv4-address {
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])$';
}
description
"An IPv4 address in dotted quad notation.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats.";
}
typedef ipv4-prefix {
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])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask (0 <= mask <=
128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
}
openconfig-yang-types.yang 000664 001750 001750 00000011157 13106236423 016344 0 ustar 00root1 root1 000000 000000 module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust’s Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
//// oc-ext:openconfig-version "0.1.1";
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
typedef dotted-quad {
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])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '^[0-9a-fA-F]*$';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}' +
'(\.[0-9]+)?Z[+-][0-9]{2}:[0-9]{2}$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '^([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?$';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$';
}
description
"An IEEE 802 MAC address";
}
}
openconfig-types.yang 000664 001750 001750 00000016715 13106236423 015415 0 ustar 00root1 root1 000000 000000 module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
//// oc-ext:openconfig-version "0.3.2";
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
description
"This type is based on the timeticks type defined in
RFC 6991, but with 64-bit width. It represents the time,
modulo 2^64, in hundredths of a second between two epochs.";
reference
"RFC 6991 - Common YANG Data Types";
}
typedef ieeefloat32 {
type binary {
length "32";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
24-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the sampling
period";
}
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
openconfig-mpls-types.yang 000664 001750 001750 00000021253 13106236413 016356 0 ustar 00root1 root1 000000 000000 module openconfig-mpls-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/mpls-types";
prefix "oc-mpls-types";
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"General types for MPLS / TE data model";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// identity statements
identity PATH_COMPUTATION_METHOD {
description
"base identity for supported path computation
mechanisms";
}
identity LOCALLY_COMPUTED {
base PATH_COMPUTATION_METHOD;
description
"indicates a constrained-path LSP in which the
path is computed by the local LER";
}
identity EXTERNALLY_QUERIED {
base PATH_COMPUTATION_METHOD;
description
"Constrained-path LSP in which the path is
obtained by querying an external source, such as a PCE server.
In the case that an LSP is defined to be externally queried, it may
also have associated explicit definitions (which are provided to the
external source to aid computation); and the path that is returned by
the external source is not required to provide a wholly resolved
path back to the originating system - that is to say, some local
computation may also be required";
}
identity EXPLICITLY_DEFINED {
base PATH_COMPUTATION_METHOD;
description
"constrained-path LSP in which the path is
explicitly specified as a collection of strict or/and loose
hops";
}
// using identities rather than enum types to simplify adding new
// signaling protocols as they are introduced and supported
identity PATH_SETUP_PROTOCOL {
description
"base identity for supported MPLS signaling
protocols";
}
identity PATH_SETUP_RSVP {
base PATH_SETUP_PROTOCOL;
description
"RSVP-TE signaling protocol";
}
identity PATH_SETUP_SR {
base PATH_SETUP_PROTOCOL;
description
"Segment routing";
}
identity PATH_SETUP_LDP {
base PATH_SETUP_PROTOCOL;
description
"LDP - RFC 5036";
}
identity PROTECTION_TYPE {
description
"base identity for protection type";
}
identity UNPROTECTED {
base PROTECTION_TYPE;
description
"no protection is desired";
}
identity LINK_PROTECTION_REQUIRED {
base PROTECTION_TYPE;
description
"link protection is desired";
}
identity LINK_NODE_PROTECTION_REQUESTED {
base PROTECTION_TYPE;
description
"node and link protection are both desired";
}
identity LSP_ROLE {
description
"Base identity for describing the role of
label switched path at the current node";
}
identity INGRESS {
base LSP_ROLE;
description
"Label switched path is an ingress (headend)
LSP";
}
identity EGRESS {
base LSP_ROLE;
description
"Label switched path is an egress (tailend)
LSP";
}
identity TRANSIT {
base LSP_ROLE;
description
"Label switched path is a transit LSP";
}
identity TUNNEL_TYPE {
description
"Base identity from which specific tunnel types are
derived.";
}
identity P2P {
base TUNNEL_TYPE;
description
"TE point-to-point tunnel type.";
}
identity P2MP {
base TUNNEL_TYPE;
description
"TE point-to-multipoint tunnel type.";
}
identity LSP_OPER_STATUS {
description
"Base identity for LSP operational status";
}
identity DOWN {
base LSP_OPER_STATUS;
description
"LSP is operationally down or out of service";
}
identity UP {
base LSP_OPER_STATUS;
description
"LSP is operationally active and available
for traffic.";
}
identity TUNNEL_ADMIN_STATUS {
description
"Base identity for tunnel administrative status";
}
identity ADMIN_DOWN {
base TUNNEL_ADMIN_STATUS;
description
"LSP is administratively down";
}
identity ADMIN_UP {
base TUNNEL_ADMIN_STATUS;
description
"LSP is administratively up";
}
identity NULL_LABEL_TYPE {
description
"Base identity from which specific null-label types are
derived.";
}
identity EXPLICIT {
base NULL_LABEL_TYPE;
description
"Explicit null label is used.";
}
identity IMPLICIT {
base NULL_LABEL_TYPE;
description
"Implicit null label is used.";
}
identity LSP_METRIC_TYPE {
description
"Base identity for types of LSP metric specification";
}
identity LSP_METRIC_RELATIVE {
base LSP_METRIC_TYPE;
description
"The metric specified for the LSPs to which this identity refers
is specified as a relative value to the IGP metric cost to the
LSP's tail-end.";
}
identity LSP_METRIC_ABSOLUTE {
base LSP_METRIC_TYPE;
description
"The metric specified for the LSPs to which this identity refers
is specified as an absolute value";
}
identity LSP_METRIC_INHERITED {
base LSP_METRIC_TYPE;
description
"The metric for for the LSPs to which this identity refers is
not specified explicitly - but rather inherited from the IGP
cost directly";
}
// typedef statements
typedef mpls-label {
type union {
type uint32 {
range 16..1048575;
}
type enumeration {
enum IPV4_EXPLICIT_NULL {
value 0;
description
"valid at the bottom of the label stack,
indicates that stack must be popped and packet forwarded
based on IPv4 header";
}
enum ROUTER_ALERT {
value 1;
description
"allowed anywhere in the label stack except
the bottom, local router delivers packet to the local CPU
when this label is at the top of the stack";
}
enum IPV6_EXPLICIT_NULL {
value 2;
description
"valid at the bottom of the label stack,
indicates that stack must be popped and packet forwarded
based on IPv6 header";
}
enum IMPLICIT_NULL {
value 3;
description
"assigned by local LSR but not carried in
packets";
}
enum ENTROPY_LABEL_INDICATOR {
value 7;
description
"Entropy label indicator, to allow an LSR
to distinguish between entropy label and applicaiton
labels RFC 6790";
}
enum NO_LABEL {
description
"This value is utilised to indicate that the packet that
is forwarded by the local system does not have an MPLS
header applied to it. Typically, this is used at the
egress of an LSP";
}
}
}
description
"type for MPLS label value encoding";
reference "RFC 3032 - MPLS Label Stack Encoding";
}
typedef tunnel-type {
type enumeration {
enum P2P {
description
"point-to-point label-switched-path";
}
enum P2MP {
description
"point-to-multipoint label-switched-path";
}
enum MP2MP {
description
"multipoint-to-multipoint label-switched-path";
}
}
description
"defines the tunnel type for the LSP";
reference
"RFC 6388 - Label Distribution Protocol Extensions for
Point-to-Multipoint and Multipoint-to-Multipoint Label Switched
Paths
RFC 4875 - Extensions to Resource Reservation Protocol
- Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
Label Switched Paths (LSPs)";
}
typedef bandwidth-kbps {
type uint64;
units "Kbps";
description
"Bandwidth values expressed in kilobits per second";
}
typedef bandwidth-mbps {
type uint64;
units "Mbps";
description
"Bandwidth values expressed in megabits per second";
}
typedef bandwidth-gbps {
type uint64;
units "Gbps";
description
"Bandwidth values expressed in gigabits per second";
}
// grouping statements
// data definition statements
// augment statements
// rpc statements
// notification statements
}
openconfig-mpls-rsvp.yang 000664 001750 001750 00000071240 13106236413 016205 0 ustar 00root1 root1 000000 000000 module openconfig-mpls-rsvp {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/rsvp";
prefix "oc-rsvp";
// import some basic types
import openconfig-inet-types { prefix inet; }
import openconfig-mpls-types { prefix oc-mplst; }
import openconfig-yang-types { prefix yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-interfaces { prefix oc-if; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration for RSVP-TE signaling, including global protocol
parameters and LSP-specific configuration for constrained-path
LSPs";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// grouping statements
grouping mpls-rsvp-soft-preemption_config {
description
"Configuration for MPLS soft preemption";
leaf enable {
type boolean;
default false;
description
"Enables soft preemption on a node.";
}
leaf soft-preemption-timeout {
type uint16 {
range 0..max;
}
default 30;
description
"Timeout value for soft preemption to revert
to hard preemption. The default timeout for
soft-preemption is 30 seconds - after which
the local system reverts to hard pre-emption.";
reference "RFC5712 MPLS-TE soft preemption";
}
}
grouping mpls-rsvp-soft-preemption {
description
"Top level group for MPLS soft preemption";
container soft-preemption {
description
"Protocol options relating to RSVP
soft preemption";
container config {
description
"Configuration parameters relating to RSVP
soft preemption support";
uses mpls-rsvp-soft-preemption_config;
}
container state {
config false;
description
"State parameters relating to RSVP
soft preemption support";
uses mpls-rsvp-soft-preemption_config;
}
}
}
grouping mpls-rsvp-hellos_config {
description
"RSVP protocol options configuration.";
leaf hello-interval {
type uint16 {
range 1000..60000;
}
units milliseconds;
default 9000;
description
"set the interval in ms between RSVP hello
messages";
reference
"RFC 3209: RSVP-TE: Extensions to RSVP for
LSP Tunnels.
RFC 5495: Description of the Resource
Reservation Protocol - Traffic-Engineered
(RSVP-TE) Graceful Restart Procedures";
}
leaf refresh-reduction {
type boolean;
default true;
description
"enables all RSVP refresh reduction message
bundling, RSVP message ID, reliable message delivery
and summary refresh";
reference
"RFC 2961 RSVP Refresh Overhead Reduction
Extensions";
}
}
grouping mpls-rsvp-hellos {
description
"Top level grouping for RSVP hellos parameters";
// TODO: confirm that the described semantics are supported
// on various implementations. Finer grain configuration
// will be vendor-specific
container hellos {
description
"Top level container for RSVP hello parameters";
container config {
description
"Configuration parameters relating to RSVP
hellos";
uses mpls-rsvp-hellos_config;
}
container state {
config false;
description
"State information associated with RSVP hellos";
uses mpls-rsvp-hellos_config;
}
}
}
grouping mpls-rsvp-subscription_config {
description
"RSVP subscription configuration";
leaf subscription {
type oc-types:percentage;
description
"percentage of the interface bandwidth that
RSVP can reserve";
}
}
grouping mpls-rsvp-subscription_state {
description
"Operational state parameters relating to the
bandwidth subscription on an interface";
leaf calculated-absolute-subscription-bw {
type uint64;
units "kbps";
description
"The calculated absolute value of the bandwidth
which is reservable to RSVP-TE on the interface
prior to any adjustments that may be made from
external sources.";
}
}
grouping mpls-rsvp-subscription {
description
"Top level group for RSVP subscription options";
container subscription {
description
"Bandwidth percentage reservable by RSVP
on an interface";
container config {
description
"Configuration parameters relating to RSVP
subscription options";
uses mpls-rsvp-subscription_config;
}
container state {
config false;
description
"State parameters relating to RSVP
subscription options";
uses mpls-rsvp-subscription_config;
uses mpls-rsvp-subscription_state;
}
}
}
grouping mpls-rsvp-graceful-restart_config {
description
"Configuration parameters relating to RSVP Graceful-Restart";
leaf enable {
type boolean;
default false;
description
"Enables graceful restart on the node.";
}
leaf restart-time {
type uint32;
description
"Graceful restart time (seconds).";
reference
"RFC 5495: Description of the Resource
Reservation Protocol - Traffic-Engineered
(RSVP-TE) Graceful Restart Procedures";
}
leaf recovery-time {
type uint32;
description
"RSVP state recovery time";
}
}
grouping mpls-rsvp-graceful-restart {
description
"Top level group for RSVP graceful-restart
parameters";
container graceful-restart {
description
"Operational state and configuration parameters relating to
graceful-restart for RSVP";
container config {
description
"Configuration parameters relating to
graceful-restart";
uses mpls-rsvp-graceful-restart_config;
}
container state {
config false;
description
"State information associated with
RSVP graceful-restart";
uses mpls-rsvp-graceful-restart_config;
}
}
}
grouping mpls-rsvp-authentication_config {
description
"RSVP authentication parameters container.";
leaf enable {
type boolean;
default false;
description
"Enables RSVP authentication on the node.";
}
leaf authentication-key {
type string {
// Juniper supports 1..16 while
// Cisco has a much bigger range, up to 60.
length "1..32";
}
description
"authenticate RSVP signaling
messages";
reference
"RFC 2747: RSVP Cryptographic Authentication";
}
}
grouping mpls-rsvp-authentication {
description
"Top level group for RSVP authentication,
as per RFC2747";
container authentication {
description
"Configuration and state parameters relating to RSVP
authentication as per RFC2747";
container config {
description
"Configuration parameters relating
to authentication";
uses mpls-rsvp-authentication_config;
}
container state {
config false;
description
"State information associated
with authentication";
uses mpls-rsvp-authentication_config;
}
}
}
grouping mpls-rsvp-protection_config {
description
"RSVP facility (link/node) protection configuration";
leaf link-protection-style-requested {
type identityref {
base oc-mplst:PROTECTION_TYPE;
}
default oc-mplst:LINK_NODE_PROTECTION_REQUESTED;
description
"Style of mpls frr protection desired:
link, link-node, or unprotected";
}
leaf bypass-optimize-interval {
type uint16;
units seconds;
description
"interval between periodic optimization
of the bypass LSPs";
// note: this is interface specific on juniper
// on iox, this is global. need to resolve.
}
// to be completed, things like enabling link protection,
// optimization times, etc.
}
grouping mpls-rsvp-link-protection {
description
"Top level group for RSVP protection";
container protection {
description
"link-protection (NHOP) related configuration";
container config {
description
"Configuration for link-protection";
uses mpls-rsvp-protection_config;
}
container state {
config false;
description
"State for link-protection";
uses mpls-rsvp-protection_config;
}
}
}
grouping mpls-rsvp-statistics {
description
"Top level grouping for RSVP protocol state";
uses mpls-rsvp-protocol-state;
}
grouping rsvp-global {
description
"Global RSVP protocol configuration";
container rsvp-te {
description
"RSVP-TE global signaling protocol configuration";
uses mpls-rsvp-session-state;
container neighbors {
description
"Configuration and state for RSVP neighbors connecting
to the device";
list neighbor {
key "address";
config false;
description
"List of RSVP neighbors of the local system";
leaf address {
type leafref {
path "../state/address";
}
description
"Reference to the address of the RSVP neighbor";
}
container state {
config false;
description
"Operational state parameters relating to the
RSVP neighbor";
uses mpls-rsvp-neighbor-state;
}
}
}
container global {
description
"Platform wide RSVP configuration and state";
uses mpls-rsvp-graceful-restart;
uses mpls-rsvp-soft-preemption;
uses mpls-rsvp-hellos;
container state {
config false;
description
"Platform wide RSVP state, including counters";
// TODO - reconcile global and per-interface
// protocol-related statistics
container counters {
config false;
description
"Platform wide RSVP statistics and counters";
uses mpls-rsvp-global-protocol-state;
uses mpls-rsvp-statistics;
}
}
}
container interface-attributes {
// interfaces, bw percentages, hello timers, etc goes here";
description
"Attributes relating to RSVP-TE enabled interfaces";
list interface {
key "interface-id";
description
"list of per-interface RSVP configurations";
leaf interface-id {
type leafref {
path "../config/interface-id";
}
description
"reference to the interface-id data";
}
container config {
description
"Configuration of per-interface RSVP parameters";
uses mpls-rsvp-interfaces-config;
}
container state {
config false;
description
"Per-interface RSVP protocol and state information";
uses mpls-rsvp-interfaces-state;
uses mpls-rsvp-interfaces-config;
container counters {
config false;
description
"Interface specific RSVP statistics and counters";
uses mpls-rsvp-protocol-state;
}
}
uses oc-if:interface-ref;
uses mpls-rsvp-interface-reservations;
uses mpls-rsvp-hellos;
uses mpls-rsvp-authentication;
uses mpls-rsvp-subscription;
uses mpls-rsvp-link-protection;
}
}
}
}
grouping rsvp-p2p-tunnel-attributes_config {
description
"properties of RSPP point-to-point paths";
leaf source {
when "/mpls/lsps/constrained-path/tunnel/config" +
"/signaling-protocol = 'PATH_SETUP_RSVP'" {
description
"When the signaling protocol is RSVP-TE ";
}
type inet:ip-address;
description
"RSVP-TE tunnel source address";
}
leaf soft-preemption {
when "/mpls/lsps/constrained-path/tunnel/config" +
"/signaling-protocol = 'PATH_SETUP_RSVP'" {
description
"When the signaling protocol is RSVP-TE ";
}
type boolean;
default false;
description
"Enables RSVP soft-preemption on this LSP";
}
uses rsvp-priorities_config;
}
grouping rsvp-priorities_config {
description
"Configuration paramters related to RSVP-TE priorities";
leaf setup-priority {
when "/mpls/lsps/constrained-path/tunnel/config" +
"/signaling-protocol = 'PATH_SETUP_RSVP'" {
description
"When the signaling protocol is RSVP-TE ";
}
type uint8 {
range 0..7;
}
default 7;
description
"RSVP-TE preemption priority during LSP setup, lower is
higher priority; default 7 indicates that LSP will not
preempt established LSPs during setup";
reference "RFC 3209 - RSVP-TE: Extensions to RSVP for
LSP Tunnels";
}
leaf hold-priority {
when "/mpls/lsps/constrained-path/tunnel/config" +
"/signaling-protocol = 'PATH_SETUP_RSVP'" {
description
"When the signaling protocol is RSVP-TE ";
}
type uint8 {
range 0..7;
}
default 0;
description
"preemption priority once the LSP is established,
lower is higher priority; default 0 indicates other LSPs
will not preempt the LSPs once established";
reference "RFC 3209 - RSVP-TE: Extensions to RSVP for
LSP Tunnels";
}
}
grouping rsvp-p2p-path-attributes_config {
description
"properties of RSPP point-to-point paths";
uses rsvp-priorities_config;
leaf retry-timer {
when "/mpls/lsps/constrained-path/tunnel/config" +
"/signaling-protocol = 'PATH_SETUP_RSVP'" {
description
"When the signaling protocol is RSVP-TE ";
}
type uint16 {
range 1..600;
}
units seconds;
description
"sets the time between attempts to establish the
LSP";
}
}
grouping mpls-rsvp-neighbor-state {
description
"State information for RSVP neighbors";
leaf address {
type inet:ip-address;
description
"Address of RSVP neighbor";
}
leaf detected-interface {
type string;
description
"Interface where RSVP neighbor was detected";
}
leaf neighbor-status {
type enumeration {
enum UP {
description
"RSVP hello messages are detected from the neighbor";
}
enum DOWN {
description
"RSVP neighbor not detected as up, due to a
communication failure or IGP notification
the neighbor is unavailable";
}
}
description
"Enumuration of possible RSVP neighbor states";
}
leaf refresh-reduction {
type boolean;
description
"Suppport of neighbor for RSVP refresh reduction";
reference
"RFC 2961 RSVP Refresh Overhead Reduction
Extensions";
}
}
grouping mpls-rsvp-session-state {
description
"State information for RSVP TE sessions";
container sessions {
description
"Enclosing container for sessions";
list session {
key "local-index";
config false;
description
"List of RSVP sessions";
leaf local-index {
type leafref {
path "../state/local-index";
}
description
"Reference to the local index for the RSVP
session";
}
uses mpls-rsvp-record-route-object-top;
container state {
description
"Operational state parameters relating to the
RSVP session";
leaf local-index {
type uint64;
description
"The index used to identify the RSVP session
on the local network element. This index is
generated by the device and is unique only
to the local network element.";
}
leaf source-address {
type inet:ip-address;
description
"Origin address of RSVP session";
}
leaf destination-address {
type inet:ip-address;
description
"Destination address of RSVP session";
}
leaf tunnel-id {
type uint16;
description
"The tunnel ID is an identifier used in the
RSVP session, which remains constant over
the life of the tunnel.";
reference "RFC 3209";
}
leaf lsp-id {
type uint16;
description
"The LSP ID distinguishes between two LSPs
originated from the same headend, and is
commonly used to distinguish RSVP sessions
during make before break operations.";
reference "RFC 3209";
}
leaf session-name {
type string;
description
"The signaled name of this RSVP session.";
}
leaf status {
type enumeration {
enum UP {
description
"RSVP session is up";
}
enum DOWN {
description
"RSVP session is down";
}
}
description
"Enumeration of RSVP session states";
}
leaf type {
type identityref {
base oc-mplst:LSP_ROLE;
}
description
"The type/role of the RSVP session, signifing
the session's role on the current device, such as
a transit session vs. an ingress session.";
}
leaf protection-requested {
type identityref {
base oc-mplst:PROTECTION_TYPE;
}
description
"The type of protection requested for the RSVP session";
}
leaf label-in {
type oc-mplst:mpls-label;
description
"Incoming MPLS label associated with this RSVP session";
}
leaf label-out {
type oc-mplst:mpls-label;
description
"Outgoing MPLS label associated with this RSVP session";
}
container sender-tspec {
description
"Operational state statistics relating to the SENDER_TSPEC
received for the RSVP session";
leaf rate {
type oc-types:ieeefloat32;
units "Bps";
description
"The rate at which the head-end device generates traffic,
expressed in bytes per second.";
reference
"RFC2210: RSVP with INTSERV";
}
leaf size {
type oc-types:ieeefloat32;
units "bytes per second";
description
"The size of the token bucket that is used to determine
the rate at which the head-end device generates traffic,
expressed in bytes per second.";
reference
"RFC2210: RSVP with INTSERV";
}
leaf peak-data-rate {
type union {
type oc-types:ieeefloat32;
type enumeration {
enum INFINITY {
description
"The head-end device has no maximum data rate.";
}
}
}
units "bytes per second";
description
"The maximum traffic generation rate that the head-end
device sends traffic at.";
reference
"RFC2210: RSVP with INTSERV";
}
}
}
}
}
} //rsvp-session-state
grouping mpls-rsvp-interfaces-config {
description
"RSVP configuration information relevant to an interface";
leaf interface-id {
type oc-if:interface-id;
description
"Identifier for the interface";
}
}
grouping mpls-rsvp-interfaces-state {
description
"RSVP state information relevant to an interface";
// Placeholder grouping
}
grouping mpls-rsvp-interface-reservations {
description
"Operational state related to interface bandwidth
reservations";
container bandwidth-reservations {
description
"Enclosing container for bandwidth reservation";
list bandwidth-reservation {
key "priority";
config false;
description
"Available and reserved bandwidth by priority on
the interface.";
leaf priority {
type leafref {
path "../state/priority";
}
description "Reference to the RSVP priority level";
}
container state {
description
"Operational state parameters relating to a
bandwidth reservation at a certain priority";
leaf priority {
type union {
type uint8 {
range 0..7;
}
type enumeration {
enum ALL {
description
"The ALL keyword represents the overall
state of the interface - i.e., the union
of all of the priority levels";
}
}
}
description
"RSVP priority level for LSPs traversing the interface";
}
leaf available-bandwidth {
type oc-mplst:bandwidth-mbps;
description
"Bandwidth currently available with the priority level,
or for the entire interface when the priority is set to
ALL";
}
leaf reserved-bandwidth {
type oc-mplst:bandwidth-mbps;
description
"Bandwidth currently reserved within the priority level,
or the sum of all priority levels when the keyword is set
to ALL";
}
leaf active-reservations-count {
type yang:gauge64;
description
"Number of active RSVP reservations in the associated
priority, or the sum of all reservations when the priority
level is set to ALL";
}
leaf highwater-mark {
type oc-mplst:bandwidth-mbps;
description
"Maximum bandwidth reserved on the interface within the
priority, or across all priorities in the case that the
priority level is set to ALL";
}
}
}
}
}
grouping mpls-rsvp-global-protocol-state {
description
"RSVP protocol statistics which may not apply
on an interface, but are significant globally.";
leaf path-timeouts {
type yang:counter64;
description
"TODO";
}
leaf reservation-timeouts {
type yang:counter64;
description
"TODO";
}
leaf rate-limited-messages {
type yang:counter64;
description
"RSVP messages dropped due to rate limiting";
}
}
grouping mpls-rsvp-protocol-state {
description
"RSVP protocol statistics and message counters";
leaf in-path-messages {
type yang:counter64;
description
"Number of received RSVP Path messages";
}
leaf in-path-error-messages {
type yang:counter64;
description
"Number of received RSVP Path Error messages";
}
leaf in-path-tear-messages {
type yang:counter64;
description
"Number of received RSVP Path Tear messages";
}
leaf in-reservation-messages {
type yang:counter64;
description
"Number of received RSVP Resv messages";
}
leaf in-reservation-error-messages {
type yang:counter64;
description
"Number of received RSVP Resv Error messages";
}
leaf in-reservation-tear-messages {
type yang:counter64;
description
"Number of received RSVP Resv Tear messages";
}
leaf in-hello-messages {
type yang:counter64;
description
"Number of received RSVP hello messages";
}
leaf in-srefresh-messages {
type yang:counter64;
description
"Number of received RSVP summary refresh messages";
}
leaf in-ack-messages {
type yang:counter64;
description
"Number of received RSVP refresh reduction ack
messages";
}
leaf out-path-messages {
type yang:counter64;
description
"Number of sent RSVP PATH messages";
}
leaf out-path-error-messages {
type yang:counter64;
description
"Number of sent RSVP Path Error messages";
}
leaf out-path-tear-messages {
type yang:counter64;
description
"Number of sent RSVP Path Tear messages";
}
leaf out-reservation-messages {
type yang:counter64;
description
"Number of sent RSVP Resv messages";
}
leaf out-reservation-error-messages {
type yang:counter64;
description
"Number of sent RSVP Resv Error messages";
}
leaf out-reservation-tear-messages {
type yang:counter64;
description
"Number of sent RSVP Resv Tear messages";
}
leaf out-hello-messages {
type yang:counter64;
description
"Number of sent RSVP hello messages";
}
leaf out-srefresh-messages {
type yang:counter64;
description
"Number of sent RSVP summary refresh messages";
}
leaf out-ack-messages {
type yang:counter64;
description
"Number of sent RSVP refresh reduction ack messages";
}
}
grouping mpls-rsvp-record-route-object-top {
description
"Top-level structure grouping for list of record route
objects.";
container record-route-objects {
description
"Enclosing container for MPLS RRO objects associated with the
traffic engineered tunnel.";
list record-route-object {
key "index";
config false;
description
"Read-only list of record route objects associated with the
traffic engineered tunnel. Each entry in the list
may contain a hop IP address, MPLS label allocated
at the hop, and the flags associated with the entry.";
leaf index {
type leafref {
path "../state/index";
}
description
"Reference to the index of the record route object.
The index is used to indicate the ordering of hops in
the path.";
}
container state {
config false;
description
"Information related to RRO objects. The hop, label, and
optional flags are present for each entry in the list.";
uses mpls-rsvp-record-route-object-state;
}
}
}
}
grouping mpls-rsvp-record-route-object-state {
description
"Grouping to hold information relating to record route
objects relevant to a traffic engineering LSP.";
leaf index {
type uint8;
description
"Index of object in the list. Used for ordering.";
}
leaf address {
type inet:ip-address;
description
"IP router hop for RRO entry";
}
leaf reported-label {
type oc-mplst:mpls-label;
description
"Label reported for RRO hop";
}
leaf reported-flags {
type uint8;
description
"Subobject flags for MPLS label";
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
ietf-interfaces.yang 000664 001750 001750 00000062655 12754614067 015214 0 ustar 00root1 root1 000000 000000 module ietf-interfaces {
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: Thomas Nadeau
WG Chair: Juergen Schoenwaelder
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 7223; see
the RFC itself for full legal notices.";
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
configured interfaces.";
}
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Configuration data nodes
*/
container interfaces {
description
"Interface configuration parameters.";
list interface {
key "name";
description
"The list of configured interfaces on the device.
The operational state of an interface is available in the
/interfaces-state/interface list. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the
/interfaces-state/interface list. If the configuration
of a user-controlled interface cannot be used by the system,
the configured interface is not instantiated in the
/interfaces-state/interface list.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list /interfaces-state/interface contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
/interfaces-state/interface list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interface-state/interface list.";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
}
enum disabled {
value 2;
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
}
}
/*
* Operational state data nodes
*/
container interfaces-state {
config false;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether they are configured or
not.";
leaf name {
type string;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
ietf-inet-types.yang 000664 001750 001750 00000040567 12715140015 015150 0 ustar 00root1 root1 000000 000000 module ietf-inet-types {
yang-version 1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-inet-types";
prefix inet;
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: David Kessens
WG Chair: Juergen Schoenwaelder
Editor: Juergen Schoenwaelder
";
description
"This module contains a collection of generally useful derived
YANG data types for Internet addresses and related things.
Copyright (c) 2013 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 6991; see
the RFC itself for full legal notices.";
revision "2013-07-15" {
description
"This revision adds the following new data types:
- ip-address-no-zone
- ipv4-address-no-zone
- ipv6-address-no-zone";
reference
"RFC 6991: Common YANG Data Types";
}
revision "2010-09-24" {
description "Initial revision.";
reference
"RFC 6021: Common YANG Data Types";
}
typedef ip-version {
type enumeration {
enum "unknown" {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum "ipv4" {
value 1;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum "ipv6" {
value 2;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
In the value set and its semantics, this type is equivalent
to the InetVersion textual convention of the SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"The dscp type represents a Differentiated Services Code Point
that may be used for marking packets in a traffic stream.
In the value set and its semantics, this type is equivalent
to the Dscp textual convention of the SMIv2.";
reference
"RFC 3289: Management Information Base for the Differentiated
Services Architecture
RFC 2474: Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers
RFC 2780: IANA Allocation Guidelines For Values In
the Internet Protocol and Related Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The ipv6-flow-label type represents the flow identifier or Flow
Label in an IPv6 packet header that may be used to
discriminate traffic flows.
In the value set and its semantics, this type is equivalent
to the IPv6FlowLabel textual convention of the SMIv2.";
reference
"RFC 3595: Textual Conventions for IPv6 Flow Label
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16 {
range "0..65535";
}
description
"The port-number type represents a 16-bit port number of an
Internet transport-layer protocol such as UDP, TCP, DCCP, or
SCTP. Port numbers are assigned by IANA. A current list of
all assignments is available from .
Note that the port number value zero is reserved by IANA. In
situations where the value zero does not make sense, it can
be excluded by subtyping the port-number type.
In the value set and its semantics, this type is equivalent
to the InetPortNumber textual convention of the SMIv2.";
reference
"RFC 768: User Datagram Protocol
RFC 793: Transmission Control Protocol
RFC 4960: Stream Control Transmission Protocol
RFC 4340: Datagram Congestion Control Protocol (DCCP)
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef as-number {
type uint32;
description
"The as-number type represents autonomous system numbers
which identify an Autonomous System (AS). An AS is a set
of routers under a single technical administration, using
an interior gateway protocol and common metrics to route
packets within the AS, and using an exterior gateway
protocol to route packets to other ASes. IANA maintains
the AS number space and has delegated large parts to the
regional registries.
Autonomous system numbers were originally limited to 16
bits. BGP extensions have enlarged the autonomous system
number space to 32 bits. This type therefore uses an uint32
base type without a range restriction in order to support
a larger autonomous system number space.
In the value set and its semantics, this type is equivalent
to the InetAutonomousSystemNumber textual convention of
the SMIv2.";
reference
"RFC 1930: Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271: A Border Gateway Protocol 4 (BGP-4)
RFC 4001: Textual Conventions for Internet Network Addresses
RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
Number Space";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"The ip-address type represents an IP address and is IP
version neutral. The format of the textual representation
implies the IP version. This type supports scoped addresses
by allowing zone identifiers in the address format.";
reference
"RFC 4007: IPv6 Scoped Address Architecture";
}
typedef ipv4-address {
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])(%[\p{N}\p{L}]+)?';
}
description
"The ipv4-address type represents an IPv4 address in
dotted-quad notation. The IPv4 address may include a zone
index, separated by a % sign.
The zone index is used to disambiguate identical address
values. For link-local addresses, the zone index will
typically be the interface index number or the name of an
interface. If the zone index is not present, the default
zone of the device will be used.
The canonical format for the zone index is the numerical
format";
}
typedef ipv6-address {
type string {
pattern
'((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
pattern
'(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
}
description
"The ipv6-address type represents an IPv6 address in full,
mixed, shortened, and shortened-mixed notation. The IPv6
address may include a zone index, separated by a % sign.
The zone index is used to disambiguate identical address
values. For link-local addresses, the zone index will
typically be the interface index number or the name of an
interface. If the zone index is not present, the default
zone of the device will be used.
The canonical format of IPv6 addresses uses the textual
representation defined in Section 4 of RFC 5952. The
canonical format for the zone index is the numerical
format as described in Section 11.2 of RFC 4007.";
reference
"RFC 4291: IP Version 6 Addressing Architecture
RFC 4007: IPv6 Scoped Address Architecture
RFC 5952: A Recommendation for IPv6 Address Text
Representation";
}
typedef ip-address-no-zone {
type union {
type ipv4-address-no-zone;
type ipv6-address-no-zone;
}
description
"The ip-address-no-zone type represents an IP address and is
IP version neutral. The format of the textual representation
implies the IP version. This type does not support scoped
addresses since it does not allow zone identifiers in the
address format.";
reference
"RFC 4007: IPv6 Scoped Address Architecture";
}
typedef ipv4-address-no-zone {
type ipv4-address {
pattern '[0-9\.]*';
}
description
"An IPv4 address without a zone index. This type, derived from
ipv4-address, may be used in situations where the zone is
known from the context and hence no zone index is needed.";
}
typedef ipv6-address-no-zone {
type ipv6-address {
pattern '[0-9a-fA-F:\.]*';
}
description
"An IPv6 address without a zone index. This type, derived from
ipv6-address, may be used in situations where the zone is
known from the context and hence no zone index is needed.";
reference
"RFC 4291: IP Version 6 Addressing Architecture
RFC 4007: IPv6 Scoped Address Architecture
RFC 5952: A Recommendation for IPv6 Address Text
Representation";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"The ip-prefix type represents an IP prefix and is IP
version neutral. The format of the textual representations
implies the IP version.";
}
typedef ipv4-prefix {
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])/(([0-9])|([1-2][0-9])|(3[0-2]))';
}
description
"The ipv4-prefix type represents an IPv4 address prefix.
The prefix length is given by the number following the
slash character and must be less than or equal to 32.
A prefix length value of n corresponds to an IP address
mask that has n contiguous 1-bits from the most
significant bit (MSB) and all other bits set to 0.
The canonical format of an IPv4 prefix has all bits of
the IPv4 address set to zero that are not part of the
IPv4 prefix.";
}
typedef ipv6-prefix {
type string {
pattern
'((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
pattern
'(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
}
description
"The ipv6-prefix type represents an IPv6 address prefix.
The prefix length is given by the number following the
slash character and must be less than or equal to 128.
A prefix length value of n corresponds to an IP address
mask that has n contiguous 1-bits from the most
significant bit (MSB) and all other bits set to 0.
The IPv6 address should have all bits that do not belong
to the prefix set to zero.
The canonical format of an IPv6 prefix has all bits of
the IPv6 address set to zero that are not part of the
IPv6 prefix. Furthermore, the IPv6 address is represented
as defined in Section 4 of RFC 5952.";
reference
"RFC 5952: A Recommendation for IPv6 Address Text
Representation";
}
typedef domain-name {
type string {
length "1..253";
pattern
'((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
}
description
"The domain-name type represents a DNS domain name. The
name SHOULD be fully qualified whenever possible.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
The description clause of schema nodes using the domain-name
type MUST describe when and how these names are resolved to
IP addresses. Note that the resolution of a domain-name value
may require to query multiple DNS records (e.g., A for IPv4
and AAAA for IPv6). The order of the resolution process and
which DNS record takes precedence can either be defined
explicitly or may depend on the configuration of the
resolver.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be A-labels as per RFC 5890.";
reference
"RFC 952: DoD Internet Host Table Specification
RFC 1034: Domain Names - Concepts and Facilities
RFC 1123: Requirements for Internet Hosts -- Application
and Support
RFC 2782: A DNS RR for specifying the location of services
(DNS SRV)
RFC 5890: Internationalized Domain Names in Applications
(IDNA): Definitions and Document Framework";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an IP address or a DNS
domain name.";
}
typedef uri {
type string;
description
"The uri type represents a Uniform Resource Identifier
(URI) as defined by STD 66.
Objects using the uri type MUST be in US-ASCII encoding,
and MUST be normalized as described by RFC 3986 Sections
6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
percent-encoding is removed, and all case-insensitive
characters are set to lowercase except for hexadecimal
digits, which are normalized to uppercase as described in
Section 6.2.2.1.
The purpose of this normalization is to help provide
unique URIs. Note that this normalization is not
sufficient to provide uniqueness. Two URIs that are
textually distinct after this normalization may still be
equivalent.
Objects using the uri type may restrict the schemes that
they permit. For example, 'data:' and 'urn:' schemes
might not be appropriate.
A zero-length URI is not a valid URI. This can be used to
express 'URI absent' where required.
In the value set and its semantics, this type is equivalent
to the Uri SMIv2 textual convention defined in RFC 5017.";
reference
"RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
Group: Uniform Resource Identifiers (URIs), URLs,
and Uniform Resource Names (URNs): Clarifications
and Recommendations
RFC 5017: MIB Textual Conventions for Uniform Resource
Identifiers (URIs)";
}
} // module ietf-inet-types
openconfig-mpls-sr.yang 000664 001750 001750 00000004511 13106236413 015634 0 ustar 00root1 root1 000000 000000 module openconfig-mpls-sr {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/mpls-sr";
prefix "oc-mpls-sr";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration for MPLS with segment routing-based LSPs,
including global parameters, and LSP-specific configuration for
both constrained-path and IGP-congruent LSPs";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
grouping sr-path-attributes_config {
description
"Configuration parameters relating to SR-TE LSPs";
leaf sid-selection-mode {
type enumeration {
enum ADJ_SID_ONLY {
description
"The SR-TE tunnel should only use adjacency SIDs
to build the SID stack to be pushed for the LSP";
}
enum MIXED_MODE {
description
"The SR-TE tunnel can use a mix of adjacency
and prefix SIDs to build the SID stack to be pushed
to the LSP";
}
}
default MIXED_MODE;
description
"The restrictions placed on the SIDs to be selected by the
calculation method for the explicit path when it is
instantiated for a SR-TE LSP";
}
leaf sid-protection-required {
type boolean;
default "false";
description
"When this value is set to true, only SIDs that are
protected are to be selected by the calculating method
when the explicit path is instantiated by a SR-TE LSP.";
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
openconfig-mpls-ldp.yang 000664 001750 001750 00000003356 13106236414 015776 0 ustar 00root1 root1 000000 000000 module openconfig-mpls-ldp {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/ldp";
prefix "ldp";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Configuration of Label Distribution Protocol global and LSP-
specific parameters for IGP-congruent LSPs";
// oc-ext:openconfig-version "2.3.0";
revision "2017-03-22" {
description
"Add RSVP calculated-absolute-subscription-bw";
reference "2.3.0";
}
revision "2017-01-26" {
description
"Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
reference "2.2.0";
}
revision "2016-12-15" {
description
"Add additional MPLS parameters";
reference "2.1.0";
}
revision "2016-09-01" {
description
"Revisions based on implementation feedback";
reference "2.0.0";
}
revision "2016-08-08" {
description
"Public release of MPLS models";
reference "1.0.1";
}
// grouping statements
grouping ldp-global {
description
"global LDP signaling configuration";
container ldp {
description
"LDP global signaling configuration";
}
}
grouping igp-tunnel-ldp {
description
"common defintiions for LDP-signaled LSP tunnel
types";
}
grouping igp-lsp-ldp-setup {
description
"grouping for LDP setup attributes";
container ldp {
description
"LDP signaling setup for IGP-congruent LSPs";
uses igp-tunnel-ldp;
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}