Introducing the new YANG model for ietf-te-topology and modifying the converter utility
for TE-NBI app to match the latest YANG model.
Change-Id: I8b3a2c4204f9b91a402a8fdfeeb6ba74d7316a7a
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang
index e5305e2..5c3efb1 100644
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang
+++ b/apps/tenbi/yangmodel/src/main/yang/ietf-te-topology.yang
@@ -1,18 +1,17 @@
module ietf-te-topology {
//yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
- // replace with IANA namespace when assigned
-
+
prefix "tet";
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
import ietf-inet-types {
prefix "inet";
}
- import ietf-schedule {
- prefix "sch";
- }
-
import ietf-te-types {
prefix "te-types";
}
@@ -58,8 +57,8 @@
<mailto:oscar.gonzalezdedios@telefonica.com>";
description "TE topology model";
-
- revision "2016-07-08" {
+
+ revision "2017-01-10" {
description "Initial revision";
reference "TBD";
}
@@ -67,11 +66,10 @@
/*
* Features
*/
-
- feature configuration-schedule {
+ feature nsrlg {
description
- "This feature indicates that the system supports
- configuration scheduling.";
+ "This feature indicates that the system supports NSRLG
+ (Not Sharing Risk Link Group).";
}
feature te-topology-hierarchy {
@@ -80,31 +78,105 @@
and/or overlay TE topology hierarchy.";
}
- feature te-performance-metric {
- description
- "This feature indicates that the system supports
- TE performance metric.";
- reference
- "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
- RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
- RFC7823: Performance-Based Path Selection for Explicitly
- Routed Label Switched Paths (LSPs) Using TE Metric
- Extensions";
- }
-
feature template {
description
- "This feature indicates that the system supports
+ "This feature indicates that the system supports
template configuration.";
}
/*
* Typedefs
*/
+ typedef geographic-coordinate-degree {
+ type decimal64 {
+ fraction-digits 8;
+ }
+ description
+ "Decimal degree (DD) used to express latitude and longitude
+ geographic coordinates.";
+ } // geographic-coordinate-degree
- /*
- * Identities
- */
+ typedef te-bandwidth {
+ type string {
+ pattern
+ '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+ + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
+ + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+ + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
+ }
+ description
+ "This is the generic bandwidth type that is a string containing
+ a list of numbers separated by commas, with each of these
+ number can be non-negative decimal, hex integer, or hex float:
+ (dec | hex | float)[*(','(dec | hex | float))]
+ For packet switching type, a float number is used, such as
+ 0x1p10.
+ For OTN switching type, a list of integers can be used, such
+ as '0,2,3,1', indicating 2 odu0's and 1 odu3.
+ For DWDM, a list of pairs of slot number and width can be
+ used, such as '0, 2, 3, 3', indicating a frequency slot 0 with
+ slot width 2 and a frequency slot 3 with slot width 3.";
+ } // te-bandwidth
+
+ typedef te-info-source {
+ type enumeration {
+ enum "unknown" {
+ description "The source is unknown.";
+ }
+ enum "locally-configured" {
+ description "Configured entity.";
+ }
+ enum "ospfv2" {
+ description "OSPFv2.";
+ }
+ enum "ospfv3" {
+ description "OSPFv3.";
+ }
+ enum "isis" {
+ description "ISIS.";
+ }
+ enum "bgp-ls" {
+ description "BGP-LS.";
+ reference
+ "RFC7752: North-Bound Distribution of Link-State and
+ Traffic Engineering (TE) Information Using BGP";
+ }
+ enum "system-processed" {
+ description "System processed entity.";
+ }
+ enum "other" {
+ description "Other source.";
+ }
+ }
+ description
+ "Describining the type of source that has provided the
+ related information, and the source credibility.";
+ } // te-info-source
+
+ typedef te-path-disjointness {
+ type bits {
+ bit node {
+ position 0;
+ description "Node disjoint.";
+ }
+ bit link {
+ position 1;
+ description "Link disjoint.";
+ }
+ bit srlg {
+ position 2;
+ description "SRLG (Shared Risk Link Group) disjoint.";
+ }
+ }
+ description
+ "Type of the resource disjointness for a TE tunnel path.";
+ reference
+ "RFC4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ } // te-path-disjointness
/*
* Groupings
@@ -144,77 +216,168 @@
type te-types:generalized-label;
description
"The ending lable if a lable range is specified;
- This attribute is not set, If a single lable is specified.";
+ This attribute is not set, If a single lable is
+ specified.";
}
leaf range-bitmap {
type binary;
description
- "When there are gaps between label-start and label-end,
+ "When there are gaps between label-start and label-end,
this attribute is used to specified the possitions
of the used labels.";
}
}
- } // connectivity-label-restrictions
+ } // connectivity-label-restrictions
- grouping information-source-attributes {
+ grouping connectivity-matrix-entry-attributes {
description
- "The attributes identifying source that has provided the
- related information, and the source credibility.";
- leaf information-source {
- type enumeration {
- enum "unknown" {
- description "The source is unknown.";
- }
- enum "locally-configured" {
- description "Configured entity.";
- }
- enum "ospfv2" {
- description "OSPFv2.";
- }
- enum "ospfv3" {
- description "OSPFv3.";
- }
- enum "isis" {
- description "ISIS.";
- }
- enum "system-processed" {
- description "System processed entity.";
- }
- enum "other" {
- description "Other source.";
- }
+ "Attributes of connectivity matrix entry.";
+ leaf is-allowed {
+ type boolean;
+ description
+ "true - switching is allowed,
+ false - switching is disallowed.";
+ }
+ uses connectivity-label-restriction-list;
+ container underlay {
+ if-feature te-topology-hierarchy;
+ presence
+ "Indicates the underlay exists for this link.";
+ description "Attributes of the te-link underlay.";
+ reference
+ "RFC4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+
+ uses te-link-underlay-attributes;
+ } // underlay
+ uses te-link-iscd-attributes;
+ uses te-link-connectivity-attributes;
+ } // connectivity-matrix-entry-attributes
+
+ grouping geolocation-container {
+ description
+ "A container containing a GPS location.";
+ container geolocation{
+ description
+ "A container containing a GPS location.";
+ leaf altitude {
+ type int64;
+ units millimeter;
+ description
+ "Distance above the sea level.";
}
- description
+ leaf latitude {
+ type geographic-coordinate-degree {
+ range "-90..90";
+ }
+ description
+ "Relative position north or south on the Earth's surface.";
+ }
+ leaf longitude {
+ type geographic-coordinate-degree {
+ range "-180..180";
+ }
+ description
+ "Angular distance east or west on the Earth's surface.";
+ }
+ } // gps-location
+ } // geolocation-container
+
+ grouping information-source-state-attributes {
+ description
+ "The attributes identifying source that has provided the
+ related information, and the source credibility.";
+ leaf credibility-preference {
+ type uint16;
+ description
+ "The preference value to calculate the traffic
+ engineering database credibility value used for
+ tie-break selection between different
+ information-source values.
+ Higher value is more preferable.";
+ }
+ leaf logical-network-element {
+ type string;
+ description
+ "When applicable, this is the name of a logical network
+ element from which the information is learned.";
+ } // logical-network-element
+ leaf network-instance {
+ type string;
+ description
+ "When applicable, this is the name of a network-instance
+ from which the information is learned.";
+ } // network-instance
+ } // information-source-state-attributes
+
+ grouping information-source-per-link-attributes {
+ description
+ "Per node container of the attributes identifying source that
+ has provided the related information, and the source
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ description
"Indicates the source of the information.";
}
container information-source-state {
description
- "The container contains state attributes related to
+ "The container contains state attributes related to
the information source.";
- leaf credibility-preference {
- type uint16;
- description
- "The preference value to calculate the traffic
- engineering database credibility value used for
- tie-break selection between different
- information-source values.
- Higher value is more preferable.";
- }
+ uses information-source-state-attributes;
container topology {
- description
+ description
"When the information is processed by the system,
the attributes in this container indicate which topology
is used to process to generate the result information.";
uses te-topology-ref;
+ leaf link-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id = "
+ + "current()/../network-ref]/nt:link/nt:link-id";
+ require-instance false;
+ }
+ description
+ "A reference to a link-id.";
+ }
} // topology
- leaf routing-instance {
- type string;
- description
- "When applicable, this is the name of a routing instance
- from which the information is learned.";
- } // routing-information
+ } // information-source-state
+ } // information-source-per-link-attributes
+
+ grouping information-source-per-node-attributes {
+ description
+ "Per node container of the attributes identifying source that
+ has provided the related information, and the source
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ description
+ "Indicates the source of the information.";
}
- } // information-source-attributes
+ container information-source-state {
+ description
+ "The container contains state attributes related to
+ the information source.";
+ uses information-source-state-attributes;
+ container topology {
+ description
+ "When the information is processed by the system,
+ the attributes in this container indicate which topology
+ is used to process to generate the result information.";
+ uses te-topology-ref;
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id = "
+ + "current()/../network-ref]/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "A reference to a node-id.";
+ }
+ } // topology
+ } // information-source-state
+ } // information-source-per-node-attributes
grouping interface-switching-capability-list {
description
@@ -228,7 +391,7 @@
reference
"RFC3471: Generalized Multi-Protocol Label Switching (GMPLS)
Signaling Functional Description.
- RFC4203: OSPF Extensions in Support of Generalized
+ RFC4203: OSPF Extensions in Support of Generalized
Multi-Protocol Label Switching (GMPLS).";
leaf switching-capability {
type identityref {
@@ -244,263 +407,324 @@
description
"Encoding supported by this interface.";
}
- list max-lsp-bandwidth {
- key "priority";
- max-elements "8";
- description
- "Maximum LSP Bandwidth at priorities 0-7.";
- leaf priority {
- type uint8 {
- range "0..7";
- }
- description "Priority.";
- }
- leaf bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
- description
- "Max LSP Bandwidth for this level";
- }
- }
- container time-division-multiplex-capable {
- when "../switching-capability = 'TDM'" {
- description "Valid only for TDM";
- }
- description
- "Interface has time-division multiplex capabilities.";
-
- leaf minimum-lsp-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
- description
- "Minimum LSP Bandwidth. Units in bytes per second.";
- }
- leaf indication {
- type enumeration {
- enum "standard" {
- description
- "Indicates support of standard SONET/SDH.";
- }
- enum "arbitrary" {
- description
- "Indicates support of arbitrary SONET/SDH.";
- }
- }
- description
- "Indication whether the interface supports Standard or
- Arbitrary SONET/SDH";
- }
- } // time-division-multiplex-capable
+ uses te-link-iscd-attributes;
} // interface-switching-capability
} // interface-switching-capability-list
- grouping performance-metric-attributes {
+ grouping statistics-per-link {
description
- "Link performance information in real time.";
- reference
- "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
- RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
- RFC7823: Performance-Based Path Selection for Explicitly
- Routed Label Switched Paths (LSPs) Using TE Metric
- Extensions";
- leaf unidirectional-delay {
- type uint32 {
- range 0..16777215;
- }
- description "Delay or latency in micro seconds.";
- }
- leaf unidirectional-min-delay {
- type uint32 {
- range 0..16777215;
- }
- description "Minimum delay or latency in micro seconds.";
- }
- leaf unidirectional-max-delay {
- type uint32 {
- range 0..16777215;
- }
- description "Maximum delay or latency in micro seconds.";
- }
- leaf unidirectional-delay-variation {
- type uint32 {
- range 0..16777215;
- }
- description "Delay variation in micro seconds.";
- }
- leaf unidirectional-packet-loss {
- type decimal64 {
- fraction-digits 6;
- range "0 .. 50.331642";
- }
- description
- "Packet loss as a percentage of the total traffic sent
- over a configurable interval. The finest precision is
- 0.000003%.";
- }
- leaf unidirectional-residual-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
- description
- "Residual bandwidth that subtracts tunnel
- reservations from Maximum Bandwidth (or link capacity)
- [RFC3630] and provides an aggregated remainder across QoS
- classes.";
- }
- leaf unidirectional-available-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
- description
- "Available bandwidth that is defined to be residual
- bandwidth minus the measured bandwidth used for the
- actual forwarding of non-RSVP-TE LSP packets. For a
- bundled link, available bandwidth is defined to be the
- sum of the component link available bandwidths.";
- }
- leaf unidirectional-utilized-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
+ "Statistics attributes per TE link.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ mandatory true;
description
- "Bandwidth utilization that represents the actual
- utilization of the link (i.e. as measured in the router).
- For a bundled link, bandwidth utilization is defined to
- be the sum of the component link bandwidth
- utilizations.";
+ "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.";
}
- } // performance-metric-attributes
-
- grouping performance-metric-normality-attributes {
- description
- "Link performance metric normality attributes.";
- reference
- "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
- RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
- RFC7823: Performance-Based Path Selection for Explicitly
- Routed Label Switched Paths (LSPs) Using TE Metric
- Extensions";
- leaf unidirectional-delay {
- type te-types:performance-metric-normality;
- description "Delay normality.";
- }
- leaf unidirectional-min-delay {
- type te-types:performance-metric-normality;
- description "Minimum delay or latency normality.";
- }
- leaf unidirectional-max-delay {
- type te-types:performance-metric-normality;
- description "Maximum delay or latency normality.";
- }
- leaf unidirectional-delay-variation {
- type te-types:performance-metric-normality;
- description "Delay variation normality.";
- }
- leaf unidirectional-packet-loss {
- type te-types:performance-metric-normality;
- description "Packet loss normality.";
- }
- leaf unidirectional-residual-bandwidth {
- type te-types:performance-metric-normality;
- description "Residual bandwidth normality.";
- }
- leaf unidirectional-available-bandwidth {
- type te-types:performance-metric-normality;
- description "Available bandwidth normality.";
- }
- leaf unidirectional-utilized-bandwidth {
- type te-types:performance-metric-normality;
- description "Bandwidth utilization normality.";
- }
- } // performance-metric-normality-attributes
-
- grouping performance-metric-throttle-container {
- description
- "A container controlling performance metric throttle.";
- container performance-metric-throttle {
- if-feature te-performance-metric;
- must "suppression-interval >= measure-interval" {
- error-message
- "suppression-interval cannot be less then
- measure-interval.";
- description
- "Constraint on suppression-interval and
- measure-interval.";
- }
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
description
- "Link performance information in real time.";
- reference
- "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
- RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
- RFC7823: Performance-Based Path Selection for Explicitly
- Routed Label Switched Paths (LSPs) Using TE Metric
- Extensions";
- leaf unidirectional-delay-offset {
- type uint32 {
- range 0..16777215;
- }
- description
- "Offset value to be added to the measured delay value.";
- }
- leaf measure-interval {
- type uint32;
- default 30;
- description
- "Interval in seconds to measure the extended metric
- values.";
- }
- leaf advertisement-interval {
- type uint32;
- description
- "Interval in seconds to advertise the extended metric
- values.";
- }
- leaf suppression-interval {
- type uint32 {
- range "1 .. max";
- }
- default 120;
- description
- "Interval in seconds to suppress advertising the extended
- metric values.";
- }
- container threshold-out {
- uses performance-metric-attributes;
- description
- "If the measured parameter falls outside an upper bound
- for all but the min delay metric (or lower bound for
- min-delay metric only) and the advertised value is not
- already outside that bound, anomalous announcement will be
- triggered.";
- }
- container threshold-in {
- uses performance-metric-attributes;
- description
- "If the measured parameter falls inside an upper bound
- for all but the min delay metric (or lower bound for
- min-delay metric only) and the advertised value is not
- already inside that bound, normal (anomalous-flag cleared)
- announcement will be triggered.";
- }
- container threshold-accelerated-advertisement {
- description
- "When the difference between the last advertised value and
- current measured value exceed this threshold, anomalous
- announcement will be triggered.";
- uses performance-metric-attributes;
- }
+ "Number of times that link was disabled.";
}
- } // performance-metric-throttle-container
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that link was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that link was put out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that link was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that link was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that link was set to operational down.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that link was set to operational up.";
+ }
+ /* Recovery attributes */
+ leaf fault-clears {
+ type yang:counter32;
+ description
+ "Number of times that link experienced fault clear event.";
+ }
+ leaf fault-detects {
+ type yang:counter32;
+ description
+ "Number of times that link experienced fault detection.";
+ }
+ leaf protection-switches {
+ type yang:counter32;
+ description
+ "Number of times that link experienced protection
+ switchover.";
+ }
+ leaf protection-reverts {
+ type yang:counter32;
+ description
+ "Number of times that link experienced protection
+ reversion.";
+ }
+ leaf restoration-failures {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration
+ failure.";
+ }
+ leaf restoration-starts {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration
+ start.";
+ }
+ leaf restoration-successes {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration
+ success.";
+ }
+ leaf restoration-reversion-failures {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration reversion
+ failure.";
+ }
+ leaf restoration-reversion-starts {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration reversion
+ start.";
+ }
+ leaf restoration-reversion-successes {
+ type yang:counter32;
+ description
+ "Number of times that link experienced restoration reversion
+ success.";
+ }
+ } // statistics-per-link
+
+ grouping statistics-per-node {
+ description
+ "Statistics attributes per TE node.";
+ 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.";
+ }
+ container node {
+ description
+ "Containing TE node level statistics attributes.";
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that node was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that node was enabled.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that node was put in maintenance.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that node was put out of maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that node was modified.";
+ }
+ } // node
+ container connectivity-matrix-entry {
+ description
+ "Containing connectivity matrix entry level statistics
+ attributes.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ created.";
+ reference
+ "RFC6241. Section 7.2 for 'create' operation. ";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ deleted.";
+ reference
+ "RFC6241. Section 7.2 for 'delete' operation. ";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ modified.";
+ }
+ } // connectivity-matrix-entry
+ } // statistics-per-node
+
+ grouping statistics-per-ttp {
+ description
+ "Statistics attributes per TE TTP (Tunnel Termination Point).";
+ 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.";
+ }
+ container tunnel-termination-point {
+ description
+ "Containing TE TTP (Tunnel Termination Point) level
+ statistics attributes.";
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that TTP was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that TTP was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that TTP was put out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that TTP was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that TTP was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that TTP was set to operational down.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that TTP was set to operational up.";
+ }
+ leaf in-service-clears {
+ type yang:counter32;
+ description
+ "Number of times that TTP was taken out of service
+ (TE tunnel was released).";
+ }
+ leaf in-service-sets {
+ type yang:counter32;
+ description
+ "Number of times that TTP was put in service by a TE
+ tunnel (TE tunnel was set up).";
+ }
+ } // tunnel-termination-point
+
+ container local-link-connectivity {
+ description
+ "Containing TE LLCL (Local Link Connectivity List) level
+ statistics attributes.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was created.";
+ reference
+ "RFC6241. Section 7.2 for 'create' operation. ";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was deleted.";
+ reference
+ "RFC6241. Section 7.2 for 'delete' operation.";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was modified.";
+ }
+ } // local-link-connectivity
+ } // statistics-per-ttp
grouping te-link-augment {
- description
+ description
"Augmentation for TE link.";
-
+
container te {
+ must "count(../nt:supporting-link)<=1" {
+ description
+ "For a link in a TE topology, there cannot be more
+ than 1 supporting link. If one or more link paths are
+ abstracted, the underlay is used.";
+ }
presence "TE support.";
- description
+ description
"Indicates TE support.";
container config {
@@ -515,14 +739,20 @@
uses te-link-config;
uses te-link-state-derived;
} // state
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-link;
+ } // statistics
} // te
} // te-link-augment
-
+
grouping te-link-config {
description
"TE link configuration grouping.";
choice bundle-stack-level {
- description
+ description
"The TE link can be partitioned into bundled
links, or component links.";
case bundle {
@@ -579,7 +809,7 @@
"Specify a component interface that is
sufficient to unambiguously identify the
appropriate resources";
-
+
leaf sequence {
type uint32;
description
@@ -601,7 +831,7 @@
}
}
} // bundle-stack-level
-
+
leaf-list te-link-template {
if-feature template;
type leafref {
@@ -614,27 +844,27 @@
} // te-link-config
grouping te-link-config-attributes {
- description
+ description
"Link configuration attributes in a TE topology.";
container te-link-attributes {
description "Link attributes in a TE topology.";
- uses sch:schedules;
leaf access-type {
type te-types:te-link-access-type;
- description
+ description
"Link access type, which can be point-to-point or
multi-access.";
}
container external-domain {
description
- "For an inter-domain link, specify the attributes of
+ "For an inter-domain link, specify the attributes of
the remote end of link, to facilitate the signalling at
local end.";
+ uses te-topology-ref;
leaf remote-te-node-id {
type te-types:te-node-id;
description
"Remote TE node identifier, used together with
- remote-te-link-id to identify the remote link
+ remote-te-link-id to identify the remote link
termination point in a different domain.";
}
leaf remote-te-link-tp-id {
@@ -666,7 +896,7 @@
}
container underlay {
if-feature te-topology-hierarchy;
- presence
+ presence
"Indicates the underlay exists for this link.";
description "Attributes of the te-link underlay.";
reference
@@ -681,8 +911,7 @@
description
"The administrative state of the link.";
}
-
- uses performance-metric-throttle-container;
+
uses te-link-info-attributes;
} // te-link-attributes
} // te-link-config-attributes
@@ -691,9 +920,7 @@
description
"Advertised TE connectivity attributes.";
leaf max-link-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
+ type te-bandwidth;
description
"Maximum bandwidth that can be seen on this link in this
direction. Units in bytes per second.";
@@ -703,9 +930,7 @@
RFC5305: IS-IS Extensions for Traffic Engineering.";
}
leaf max-resv-link-bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
+ type te-bandwidth;
description
"Maximum amount of bandwidth that can be reserved in this
direction in this link. Units in bytes per second.";
@@ -731,9 +956,7 @@
description "Priority.";
}
leaf bandwidth {
- type decimal64 {
- fraction-digits 2;
- }
+ type te-bandwidth;
description
"Unreserved bandwidth for this level.";
}
@@ -741,35 +964,16 @@
leaf te-default-metric {
type uint32;
description
- "Traffic Engineering Metric.";
+ "Traffic engineering metric.";
}
- container performance-metric {
- if-feature te-performance-metric;
+ leaf te-delay-metric {
+ type uint32;
description
- "Link performance information in real time.";
- reference
- "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
- RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
- RFC7823: Performance-Based Path Selection for Explicitly
- Routed Label Switched Paths (LSPs) Using TE Metric
- Extensions";
- container measurement {
- description
- "Measured performance metric values. Static configuration
- and manual overrides of these measurements are also
- allowed.";
- uses performance-metric-attributes;
- }
- container normality
- {
- description
- "Performance metric normality values.";
- uses performance-metric-normality-attributes;
- }
+ "Traffic engineering delay metric.";
}
container te-srlgs {
description
- "A list of SLRGs.";
+ "Containing a list of SLRGs.";
leaf-list value {
type te-types:srlg;
description "SRLG value.";
@@ -778,6 +982,24 @@
Generalized Multi-Protocol Label Switching (GMPLS).";
}
}
+ container te-nsrlgs {
+ if-feature nsrlg;
+ description
+ "Containing a list of NSRLGs (Not Sharing Risk Link
+ Groups).
+ When an abstract TE link is configured, this list specifies
+ the request that underlay TE paths need to be mutually
+ disjoint with other TE links in the same groups.";
+ leaf-list id {
+ type uint32;
+ description
+ "NSRLG ID, uniquely configured within a topology.";
+ reference
+ "RFC4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ }
+ }
} // te-link-connectivity-attributes
grouping te-link-info-attributes {
@@ -794,7 +1016,7 @@
leaf administrative-group {
type te-types:admin-groups;
description
- "Administrative group or color of the link.
+ "Administrative group or color of the link.
This attribute covers both administrative group (defined in
RFC3630, RFC5329, and RFC5305), and extended administrative
group (defined in RFC7308).";
@@ -830,8 +1052,34 @@
uses te-link-connectivity-attributes;
} // te-link-info-attributes
+ grouping te-link-iscd-attributes {
+ description
+ "TE link ISCD (Interface Switching Capability Descriptor)
+ attributes.";
+ reference
+ "Sec 1.4, RFC4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS). Section 1.4.";
+ list max-lsp-bandwidth {
+ key "priority";
+ max-elements "8";
+ description
+ "Maximum LSP Bandwidth at priorities 0-7.";
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description "Priority.";
+ }
+ leaf bandwidth {
+ type te-bandwidth;
+ description
+ "Max LSP Bandwidth for this level";
+ }
+ }
+ } // te-link-iscd-attributes
+
grouping te-link-state-derived {
- description
+ description
"Link state attributes in a TE topology.";
leaf oper-status {
type te-types:te-oper-status;
@@ -840,24 +1088,24 @@
}
leaf is-transitional {
type empty;
- description
- "Present if the link is transitional, used as an
- alternative approach in lieu of inter-layer-lock-id
+ description
+ "Present if the link is transitional, used as an
+ alternative approach in lieu of inter-layer-lock-id
for path computation in a TE topology covering multiple
layers or multiple regions.";
reference
"RFC5212: Requirements for GMPLS-Based Multi-Region and
Multi-Layer Networks (MRN/MLN).
RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
- for Multi-Layer and Multi-Region Networks (MLN/MRN).";
+ for Multi-Layer and Multi-Region Networks (MLN/MRN).";
}
- uses information-source-attributes;
+ uses information-source-per-link-attributes;
list information-source-entry {
key "information-source";
description
"A list of information sources learned, including the one
used.";
- uses information-source-attributes;
+ uses information-source-per-link-attributes;
uses te-link-info-attributes;
}
container recovery {
@@ -872,7 +1120,7 @@
type te-types:te-recovery-status;
description
"Protection status.";
- }
+ }
}
container underlay {
if-feature te-topology-hierarchy;
@@ -885,30 +1133,30 @@
description "State attributes for te-link underlay.";
leaf dynamic {
type boolean;
- description
+ description
"true if the underlay is dynamically created.";
}
leaf committed {
type boolean;
- description
+ description
"true if the underlay is committed.";
}
} // te-link-state-underlay-attributes
-
+
grouping te-link-underlay-attributes {
description "Attributes for te-link underlay.";
reference
"RFC4206: Label Switched Paths (LSP) Hierarchy with
Generalized Multi-Protocol Label Switching (GMPLS)
Traffic Engineering (TE)";
- container underlay-primary-path {
- description
+ container primary-path {
+ description
"The service path on the underlay topology that
supports this link.";
uses te-topology-ref;
list path-element {
key "path-element-id";
- description
+ description
"A list of path elements describing the service path.";
leaf path-element-id {
type uint32;
@@ -916,13 +1164,13 @@
}
uses te-path-element;
}
- } // underlay-primary-path
- list underlay-backup-path {
+ } // primary-path
+ list backup-path {
key "index";
- description
+ description
"A list of backup service paths on the underlay topology that
protect the underlay primary path. If the primary path is
- not protected, the list contains zero elements. If the
+ not protected, the list contains zero elements. If the
primary path is protected, the list contains one or more
elements.";
leaf index {
@@ -933,8 +1181,8 @@
uses te-topology-ref;
list path-element {
key "path-element-id";
- description
- "A list of path elements describing the backup service
+ description
+ "A list of path elements describing the backup service
path";
leaf path-element-id {
type uint32;
@@ -943,39 +1191,69 @@
uses te-path-element;
}
} // underlay-backup-path
- leaf underlay-protection-type {
+ leaf protection-type {
type uint16;
description
"Underlay protection type desired for this link";
}
- container underlay-trail-src {
- uses nt:tp-ref;
+ container tunnel-src {
+ uses te-tunnel-tp-ref;
description
- "Source TE link of the underlay trail.";
+ "Source tunnel termination point of the underlay
+ tunnel.";
}
- container underlay-trail-des {
- uses nt:tp-ref;
+ container tunnel-des {
+ uses te-tunnel-tp-ref;
description
- "Destination TE link of the underlay trail.";
+ "Destination tunnel termination point of the underlay
+ tunnel.";
+ }
+ leaf tunnel-id {
+ type uint16;
+ description
+ "Tunnel identifier used in the SESSION that remains constant
+ over the life of the tunnel.
+ This attribute is used together with underlay tunnel-src
+ and underlay tunnel-src.
+ The detailed information of this tunnel can be retrieved
+ from the ietf-te model.";
+ reference "RFC3209";
+ }
+ leaf tunnel-sharing {
+ type boolean;
+ description
+ "'true' if the underlay tunnel can be shared with other
+ TE links;
+ 'false' if the underlay tunnel is dedicated to this
+ TE link.";
}
} // te-link-underlay-attributes
grouping te-node-augment {
description
"Augmentation for TE node.";
-
- container te {
- presence "TE support.";
- description
- "Indicates TE support.";
- leaf te-node-id {
- type te-types:te-node-id;
- mandatory true;
+ leaf te-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.
+ A node is specific to a topology to which it belongs.";
+ }
+
+ container te {
+ must "../te-node-id" {
description
- "The identifier of a node in the TE topology.
- A node is specific to a topology to which it belongs.";
+ "te-node-id is mandatory.";
}
+ must "count(../nw:supporting-node)<=1" {
+ description
+ "For a node in a TE topology, there cannot be more
+ than 1 supporting node. If multiple nodes are abstracted,
+ the underlay-topology is used.";
+ }
+ presence "TE support.";
+ description
+ "Indicates TE support.";
container config {
description
@@ -990,6 +1268,12 @@
uses te-node-config;
uses te-node-state-derived;
} // state
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-node;
+ } // statistics
list tunnel-termination-point {
key "tunnel-tp-id";
@@ -1004,17 +1288,55 @@
container config {
description
"Configuration data.";
- uses te-node-tunnel-termination-capability;
+ uses te-node-tunnel-termination-attributes;
}
-
container state {
config false;
description
"Operational state data.";
- uses te-node-tunnel-termination-capability;
+ uses te-node-tunnel-termination-attributes;
+ uses geolocation-container;
} // state
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-ttp;
+ } // statistics
+ // Relations to other tunnel termination points
+ list supporting-tunnel-termination-point {
+// key "node-ref tunnel-tp-ref";
+ key "network-ref node-ref tunnel-tp-ref";
+ description
+ "Identifies the tunnel termination points, that this
+ tunnel termination point is depending on.";
+// leaf node-ref {
+// type leafref {
+// path "../../../../nw:supporting-node/nw:node-ref";
+// require-instance false;
+// }
+// description
+// "This leaf identifies in which node the supporting
+// tunnel termination point is present.";
+// }
+ uses nw:node-ref;
+ leaf tunnel-tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network"+
+ "[nw:network-id="+
+ "current()/../../../../nw:supporting-node/"+
+ "nw:network-ref]/"+
+ "nw:node[nw:node-id=current()/../node-ref]/te/"+
+ "tunnel-termination-point/tunnel-tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node, must be in a
+ different topology";
+ }
+ } // supporting-tunnel-termination-point
} // tunnel-termination-point
} // te
} // te-node-augment
@@ -1037,7 +1359,6 @@
description "Configuration node attributes in a TE topology.";
container te-node-attributes {
description "Containing node attributes in a TE topology.";
- uses sch:schedules;
leaf admin-status {
type te-types:te-admin-status;
description
@@ -1047,29 +1368,12 @@
uses te-node-info-attributes;
} // te-node-attributes
} // te-node-config-attributes
-
- grouping te-node-config-attributes-notification {
- description
- "Configuration node attributes for template in a TE topology.";
- container te-node-attributes {
- description "Containing node attributes in a TE topology.";
- uses sch:schedules;
- leaf admin-status {
- type te-types:te-admin-status;
- description
- "The administrative state of the link.";
- }
- uses te-node-connectivity-matrix-abs;
- uses te-node-info-attributes;
- } // te-node-attributes
- } // te-node-config-attributes-notification
grouping te-node-config-attributes-template {
- description
+ description
"Configuration node attributes for template in a TE topology.";
container te-node-attributes {
description "Containing node attributes in a TE topology.";
- uses sch:schedules;
leaf admin-status {
type te-types:te-admin-status;
description
@@ -1081,53 +1385,63 @@
grouping te-node-connectivity-matrix {
description "Connectivity matrix on a TE node.";
- list connectivity-matrix {
- key "id";
+ container connectivity-matrices {
description
- "Represents node's switching limitations, i.e. limitations
- in interconnecting network TE links across the node.";
- reference
- "RFC7579: General Network Element Constraint Encoding
- for GMPLS-Controlled Networks.";
- leaf id {
- type uint32;
- description "Identifies the connectivity-matrix entry.";
- }
- container from {
- leaf tp-ref {
- type leafref {
- path "../../../../../../nt:termination-point/nt:tp-id";
- }
- description
- "Relative reference to source termination point.";
- }
- description
- "Reference to source NTP.";
- }
- container to {
- leaf tp-ref {
- type leafref {
- path "../../../../../../nt:termination-point/nt:tp-id";
- }
- description
- "Relative reference to destination termination point.";
- }
- description
- "Reference to destination NTP.";
- }
- leaf is-allowed {
- type boolean;
+ "Containing connectivity matrix on a TE node.";
+ leaf number-of-entries {
+ type uint16;
description
- "true - switching is allowed,
- false - switching is disallowed.";
+ "The number of connectivity matrix entries.
+ If this number is speficied in the configuration request,
+ the number is requested number of entries, which may not
+ all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
}
- uses connectivity-label-restriction-list;
- uses te-link-connectivity-attributes;
- }
+ uses connectivity-matrix-entry-attributes;
+ list connectivity-matrix {
+ key "id";
+ description
+ "Represents node's switching limitations, i.e. limitations
+ in interconnecting network TE links across the node.";
+ reference
+ "RFC7579: General Network Element Constraint Encoding
+ for GMPLS-Controlled Networks.";
+ leaf id {
+ type uint32;
+ description "Identifies the connectivity-matrix entry.";
+ }
+ container from {
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../../nt:termination-point/"+
+ "nt:tp-id";
+ }
+ description
+ "Relative reference to source termination point.";
+ }
+ description
+ "Reference to source NTP.";
+ }
+ container to {
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../../nt:termination-point/"+
+ "nt:tp-id";
+ }
+ description
+ "Relative reference to destination termination point.";
+ }
+ description
+ "Reference to destination NTP.";
+ }
+ uses connectivity-matrix-entry-attributes;
+ } // connectivity-matrix
+ } // connectivity-matrices
} // te-node-connectivity-matrix
-
+
grouping te-node-connectivity-matrix-abs {
- description
+ description
"Connectivity matrix on a TE node, using absolute
paths to reference termination points.";
list connectivity-matrix {
@@ -1144,18 +1458,18 @@
}
container from {
uses nt:tp-ref;
- description
+ description
"Reference to source NTP.";
}
container to {
uses nt:tp-ref;
- description
+ description
"Reference to destination NTP.";
}
leaf is-allowed {
type boolean;
description
- "true - switching is allowed,
+ "true - switching is allowed,
false - switching is disallowed.";
}
}
@@ -1180,7 +1494,7 @@
}
leaf is-abstract {
type empty;
- description
+ description
"Present if the node is abstract, not present if the node
is actual.";
}
@@ -1194,13 +1508,13 @@
}
container underlay-topology {
if-feature te-topology-hierarchy;
- description
- "When an abstract node encapsulates a topology,
+ description
+ "When an abstract node encapsulates a topology,
the attributes in this container point to said topology.";
uses te-topology-ref;
}
} // te-node-info-attributes
-
+
grouping te-node-state-derived {
description "Node state attributes in a TE topology.";
leaf oper-status {
@@ -1208,6 +1522,7 @@
description
"The current operational state of the node.";
}
+ uses geolocation-container;
leaf is-multi-access-dr {
type empty;
description
@@ -1219,13 +1534,13 @@
RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
Environments.";
}
- uses information-source-attributes;
+ uses information-source-per-node-attributes;
list information-source-entry {
key "information-source";
description
"A list of information sources learned, including the one
used.";
- uses information-source-attributes;
+ uses information-source-per-node-attributes;
uses te-node-connectivity-matrix;
uses te-node-info-attributes;
}
@@ -1249,20 +1564,20 @@
RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
Environments.";
}
- uses information-source-attributes;
+ uses information-source-per-node-attributes;
list information-source-entry {
key "information-source";
description
"A list of information sources learned, including the one
used.";
- uses information-source-attributes;
+ uses information-source-per-node-attributes;
uses te-node-connectivity-matrix-abs;
uses te-node-info-attributes;
}
} // te-node-state-derived-notification
- grouping te-node-tunnel-termination-capability {
- description
+ grouping te-node-tunnel-termination-attributes {
+ description
"Termination capability of a tunnel termination point on a
TE node.";
@@ -1289,7 +1604,7 @@
"RFC5212: Requirements for GMPLS-Based Multi-Region and
Multi-Layer Networks (MRN/MLN).
RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
- for Multi-Layer and Multi-Region Networks (MLN/MRN).";
+ for Multi-Layer and Multi-Region Networks (MLN/MRN).";
}
leaf protection-type {
type identityref {
@@ -1300,53 +1615,46 @@
is capable of.";
}
- list termination-capability {
- key "link-tp";
+ container local-link-connectivities {
description
- "The termination capabilities between
- tunnel-termination-point and link termination-point.
- The capability information can be used to compute
- the tunnel path.
- The Interface Adjustment Capability Descriptors (IACD)
- [RFC6001] on each link-tp can be derived from this
- termination-capability list.";
- reference
- "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
- for Multi-Layer and Multi-Region Networks (MLN/MRN).";
- leaf link-tp {
- type leafref {
- path "../../../../../nt:termination-point/nt:tp-id";
- }
+ "Containing local link connectivity list for
+ a tunnel termination point on a TE node.";
+ leaf number-of-entries {
+ type uint16;
description
- "Link termination point.";
+ "The number of local link connectivity list entries.
+ If this number is speficied in the configuration request,
+ the number is requested number of entries, which may not
+ all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
}
-
- uses connectivity-label-restriction-list;
-
- list max-lsp-bandwidth {
- key "priority";
- max-elements "8";
+ uses connectivity-matrix-entry-attributes;
+ list local-link-connectivity {
+ key "link-tp-ref";
description
- "Maximum LSP Bandwidth at priorities 0-7.";
+ "The termination capabilities between
+ tunnel-termination-point and link termination-point.
+ The capability information can be used to compute
+ the tunnel path.
+ The Interface Adjustment Capability Descriptors (IACD)
+ [RFC6001] on each link-tp can be derived from this
+ local-link-connectivity list.";
reference
"RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
for Multi-Layer and Multi-Region Networks (MLN/MRN).";
- leaf priority {
- type uint8 {
- range "0..7";
- }
- description "Priority.";
- }
- leaf bandwidth {
- type decimal64 {
- fraction-digits 2;
+ leaf link-tp-ref {
+ type leafref {
+ path "../../../../../../nt:termination-point/nt:tp-id";
}
description
- "Max LSP Bandwidth for this level.";
+ "Link termination point.";
}
- } // max-lsp-bandwidth
- } // termination-capability
- } // te-node-tunnel-termination-capability
+
+ uses connectivity-matrix-entry-attributes;
+ } // local-link-connectivity
+ } // local-link-connectivities
+ } // te-node-tunnel-termination-attributes
grouping te-path-element {
description
@@ -1354,23 +1662,23 @@
such as TE node, TE link, TE atomic resource or label.";
uses te-types:explicit-route-subobject;
} // te-path-element
-
+
grouping te-termination-point-augment {
description
"Augmentation for TE termination point.";
-
- container te {
- presence "TE support.";
- description
- "Indicates TE support.";
- leaf te-tp-id {
- type te-types:te-tp-id;
- mandatory true;
- description
- "An identifier to uniquely identify a TE termination
- point.";
- }
+ leaf te-tp-id {
+ type te-types:te-tp-id;
+ description
+ "An identifier to uniquely identify a TE termination
+ point.";
+ }
+
+ container te {
+ must "../te-tp-id";
+ presence "TE support.";
+ description
+ "Indicates TE support.";
container config {
description
@@ -1382,14 +1690,14 @@
description
"Operational state data.";
uses te-termination-point-config;
+ uses geolocation-container;
} // state
} // te
} // te-termination-point-augment
grouping te-termination-point-config {
- description
+ description
"TE termination point configuration grouping.";
- uses sch:schedules;
uses interface-switching-capability-list;
leaf inter-layer-lock-id {
type uint32;
@@ -1400,17 +1708,17 @@
"RFC5212: Requirements for GMPLS-Based Multi-Region and
Multi-Layer Networks (MRN/MLN).
RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
- for Multi-Layer and Multi-Region Networks (MLN/MRN).";
+ for Multi-Layer and Multi-Region Networks (MLN/MRN).";
}
} // te-termination-point-config
grouping te-topologies-augment {
description
"Augmentation for TE topologies.";
-
+
container te {
presence "TE support.";
- description
+ description
"Indicates TE support.";
container templates {
@@ -1432,7 +1740,7 @@
uses template-attributes;
uses te-node-config-attributes-template;
} // node-template
-
+
list link-template {
if-feature template;
key "name";
@@ -1454,32 +1762,30 @@
grouping te-topology-augment {
description
"Augmentation for TE topology.";
-
- container te {
- presence "TE support.";
- description
- "Indicates TE support.";
- leaf provider-id {
- type te-types:te-global-id;
- mandatory true;
- description
- "An identifier to uniquely identify a provider.";
- }
- leaf client-id {
- type te-types:te-global-id;
- mandatory true;
- description
- "An identifier to uniquely identify a client.";
- }
- leaf te-topology-id {
- type te-types:te-topology-id;
- mandatory true;
- description
- "It is presumed that a datastore will contain many
- topologies. To distinguish between topologies it is
- vital to have UNIQUE topology identifiers.";
- }
+ leaf provider-id {
+ type te-types:te-global-id;
+ description
+ "An identifier to uniquely identify a provider.";
+ }
+ leaf client-id {
+ type te-types:te-global-id;
+ description
+ "An identifier to uniquely identify a client.";
+ }
+ leaf te-topology-id {
+ type te-types:te-topology-id;
+ description
+ "It is presumed that a datastore will contain many
+ topologies. To distinguish between topologies it is
+ vital to have UNIQUE topology identifiers.";
+ }
+
+ container te {
+ must "../provider-id and ../client-id and ../te-topology-id";
+ presence "TE support.";
+ description
+ "Indicates TE support.";
container config {
description
@@ -1491,14 +1797,14 @@
description
"Operational state data.";
uses te-topology-config;
+ uses geolocation-container;
} // state
} // te
} // te-topology-augment
grouping te-topology-config {
- description
+ description
"TE topology configuration grouping.";
- uses sch:schedules;
leaf preference {
type uint8 {
range "1..255";
@@ -1517,39 +1823,32 @@
"RFC3272: Overview and Principles of Internet Traffic
Engineering.";
}
+ list nsrlg {
+ if-feature nsrlg;
+ key "id";
+ description
+ "List of NSRLGs (Not Sharing Risk Link Groups).";
+ reference
+ "RFC4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ leaf id {
+ type uint32;
+ description
+ "Identify the NSRLG entry.";
+ }
+ leaf disjointness {
+ type te-path-disjointness;
+ description
+ "The type of resource disjointness.";
+ }
+ } // nsrlg
} // te-topology-config
grouping te-topology-ref {
description
"References a TE topology.";
- leaf provider-id-ref {
- type leafref {
- path "/nw:networks/nw:network[nw:network-id = "
- + "current()/../network-id-ref]/tet:te/tet:provider-id";
- require-instance false;
- }
- description
- "A reference to a provider-id.";
- }
- leaf client-id-ref {
- type leafref {
- path "/nw:networks/nw:network[nw:network-id = "
- + "current()/../network-id-ref]/tet:te/tet:client-id";
- require-instance false;
- }
- description
- "A reference to a client-id.";
- }
- leaf te-topology-id-ref {
- type leafref {
- path "/nw:networks/nw:network[nw:network-id = "
- + "current()/../network-id-ref]/tet:te/tet:te-topology-id";
- require-instance false;
- }
- description
- "A reference to a te-topology-id.";
- }
- leaf network-id-ref {
+ leaf network-ref {
type leafref {
path "/nw:networks/nw:network/nw:network-id";
require-instance false;
@@ -1568,16 +1867,34 @@
"Its presence identifies the TE topology type.";
}
} // te-topology-type
-
+
+ grouping te-tunnel-tp-ref {
+ description
+ "References a tunnel termination point in a TE topology.";
+ leaf tunnel-tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nw:node[nw:node-id=current()/../node-ref]/"+
+ "te/tunnel-termination-point/tunnel-tp-id";
+ require-instance false;
+ }
+ description
+ "An absolute reference to a tunnel termination point.
+ (This should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw:node-ref;
+ } // te-tunnel-tp-ref
+
grouping template-attributes {
- description
+ description
"Common attributes for all templates.";
leaf priority {
type uint16;
description
"The preference value to resolve conflicts between different
- templates. When two or more templates specify values for
+ templates. When two or more templates specify values for
one configuration attribute, the value from the template
with the highest priority is used.";
}
@@ -1585,8 +1902,8 @@
type enumeration {
enum no-action {
description
- "When an attribute changes in this template, the
- configuration node referring to this template does
+ "When an attribute changes in this template, the
+ configuration node referring to this template does
not take any action.";
}
enum not-allowed {
@@ -1596,9 +1913,9 @@
}
enum cascade {
description
- "When an attribute changes in this template, the
+ "When an attribute changes in this template, the
configuration object referring to this template applies
- the new attribute value to the corresponding
+ the new attribute value to the corresponding
configuration.";
}
}
@@ -1633,7 +1950,7 @@
"Configuration parameters for TE topology.";
uses te-topology-augment;
}
-
+
augment "/nw:networks/nw:network/nw:node" {
when "../nw:network-types/te-topology" {
description
@@ -1669,12 +1986,22 @@
}
/*
- * Operational state data nodes
- */
-
- /*
* Notifications
*/
+ grouping te-node-config-attributes-notification {
+ description
+ "Configuration node attributes for template in a TE topology.";
+ container te-node-attributes {
+ description "Containing node attributes in a TE topology.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-node-connectivity-matrix-abs;
+ uses te-node-info-attributes;
+ } // te-node-attributes
+ } // te-node-config-attributes-notification
notification te-node-event {
description "Notification event for TE node.";
@@ -1687,7 +2014,7 @@
uses tet:te-node-config-attributes-notification;
uses tet:te-node-state-derived-notification;
}
-
+
notification te-link-event {
description "Notification event for TE link.";
leaf event-type {
@@ -1704,4 +2031,5 @@
description "Add state attributes to te-link underlay.";
uses te-link-state-underlay-attributes;
}
+
}
diff --git a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang b/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang
index 265e21e..2e76380 100644
--- a/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang
+++ b/apps/tenbi/yangmodel/src/main/yang/ietf-te-types.yang
@@ -892,6 +892,28 @@
}
description "TE Event type for notifications";
} // te-topology-event-type
+
+
+ typedef te-tunnel-event-type {
+ type enumeration {
+ enum "add" {
+ value 0;
+ description
+ "A TE tunnel has been added.";
+ }
+ enum "remove" {
+ value 1;
+ description
+ "A TE tunnel has been removed.";
+ }
+ enum "update" {
+ value 2;
+ description
+ "A TE tunnel has been updated.";
+ }
+ }
+ description "TE Event type for notifications";
+ } // te-tunnel-event-type
typedef te-topology-id {
type string {