aboutsummaryrefslogtreecommitdiffstats
path: root/platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang
diff options
context:
space:
mode:
Diffstat (limited to 'platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang')
-rw-r--r--platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang2457
1 files changed, 2457 insertions, 0 deletions
diff --git a/platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang b/platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang
new file mode 100644
index 00000000..7a50210e
--- /dev/null
+++ b/platform-logic/restconfapi-yang/src/main/yang/ietf-te-types@2018-07-01.yang
@@ -0,0 +1,2457 @@
+module ietf-te-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
+
+ /* Replace with IANA when assigned */
+ prefix "te-types";
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import ietf-routing-types {
+ prefix "rt-types";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+ WG Chair: Lou Berger
+ <mailto:lberger@labn.net>
+ WG Chair: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+ Editor: Tarek Saad
+ <mailto:tsaad@cisco.com>
+ Editor: Rakesh Gandhi
+ <mailto:rgandhi@cisco.com>
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu@ericsson.com>
+ Editor: Igor Bryskin
+ <mailto:Igor.Bryskin@huawei.com>";
+
+ description
+ "This module contains a collection of generally
+ useful TE specific YANG data type defintions.";
+
+ revision "2018-07-01" {
+ description "Latest revision of TE types";
+ reference "RFC3209";
+ }
+
+ /*
+ * Identities
+ */
+ identity association-type {
+ description "Base identity for tunnel association";
+ reference "RFC6780, RFC4872, RFC4873";
+ }
+ identity association-type-recovery {
+ base association-type;
+ description
+ "Association Type Recovery used to association LSPs of
+ same tunnel for recovery";
+ reference "RFC4872";
+ }
+ identity association-type-resource-sharing {
+ base association-type;
+ description
+ "Association Type Resource Sharing used to enable resource
+ sharing during make-before-break.";
+ reference "RFC4873";
+ }
+ identity association-type-double-sided-bidir {
+ base association-type;
+ description
+ "Association Type Double Sided bidirectional used to associate
+ two LSPs of two tunnels that are independently configured on
+ either endpoint";
+ reference "RFC7551";
+ }
+ identity association-type-single-sided-bidir {
+ base association-type;
+ description
+ "Association Type Single Sided bidirectional used to associate
+ two LSPs of two tunnels, where a tunnel is configured on one
+ side/endpoint, and the other tunnel is dynamically created on
+ the other endpoint";
+ reference "RFC7551";
+ }
+
+ identity objective-function-type {
+ description "Base objective function type";
+ reference "RFC4657";
+ }
+ identity of-minimize-cost-path {
+ base objective-function-type;
+ description
+ "Mimimuze cost of path objective function";
+ }
+ identity of-minimize-load-path {
+ base objective-function-type;
+ description
+ "Minimize the load on path(s) objective
+ function";
+ }
+ identity of-maximize-residual-bandwidth {
+ base objective-function-type;
+ description
+ "Maximize the residual bandwidth objective
+ function";
+ }
+ identity of-minimize-agg-bandwidth-consumption {
+ base objective-function-type;
+ description
+ "minimize the aggregate bandwidth consumption
+ objective function";
+ }
+ identity of-minimize-load-most-loaded-link {
+ base objective-function-type;
+ description
+ "Minimize the load on the most loaded link
+ objective function";
+ }
+ identity of-minimize-cost-path-set {
+ base objective-function-type;
+ description
+ "Minimize the cost on a path set objective
+ function";
+ }
+
+ identity path-computation-method {
+ description
+ "base identity for supported path computation
+ mechanisms";
+ }
+
+ identity path-locally-computed {
+ base path-computation-method;
+ description
+ "indicates a constrained-path LSP in which the
+ path is computed by the local LER";
+ }
+
+ identity path-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 (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 path-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";
+ }
+ /**
+ * Typedefs
+ */
+
+ 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-ds-class {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "The Differentiatied Class-Type of traffic.";
+ reference "RFC4124: section-4.3.1";
+ }
+
+ typedef te-link-direction {
+ type enumeration {
+ enum INCOMING {
+ description
+ "explicit route represents an incoming link on a node";
+ }
+ enum OUTGOING {
+ description
+ "explicit route represents an outgoing link on a node";
+ }
+ }
+ description
+ "enumerated type for specifying direction of link on a node";
+ }
+
+ typedef te-label-direction {
+ type enumeration {
+ enum FORWARD {
+ description
+ "Label allocated for the forward LSP direction";
+ }
+ enum REVERSE {
+ description
+ "Label allocated for the reverse LSP direction";
+ }
+ }
+ description
+ "enumerated type for specifying the forward or reverse
+ label";
+ }
+
+ typedef te-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";
+ reference "RFC3209: section-4.3.2";
+ }
+
+ 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";
+ }
+
+ identity tunnel-type {
+ description
+ "Base identity from which specific tunnel types are
+ derived.";
+ }
+
+ identity tunnel-p2p {
+ base tunnel-type;
+ description
+ "TE point-to-point tunnel type.";
+ }
+
+ identity tunnel-p2mp {
+ base tunnel-type;
+ description
+ "TE point-to-multipoint tunnel type.";
+ reference "RFC4875";
+ }
+
+ identity tunnel-action-type {
+ description
+ "Base identity from which specific tunnel action types
+ are derived.";
+ }
+
+ identity tunnel-action-resetup {
+ base tunnel-action-type;
+ description
+ "TE tunnel action resetup. Tears the
+ tunnel's current LSP (if any) and
+ attempts to re-establish a new LSP";
+ }
+
+ identity tunnel-action-reoptimize {
+ base tunnel-action-type;
+ description
+ "TE tunnel action reoptimize.
+ Reoptimizes placement of the tunnel LSP(s)";
+ }
+
+ identity tunnel-action-switchpath {
+ base tunnel-action-type;
+ description
+ "TE tunnel action reoptimize
+ Switches the tunnel's LSP to use the specified path";
+ }
+
+ identity te-action-result {
+ description
+ "Base identity from which specific TE action results
+ are derived.";
+ }
+
+ identity te-action-success {
+ base te-action-result;
+ description "TE action successul.";
+ }
+
+ identity te-action-fail {
+ base te-action-result;
+ description "TE action failed.";
+ }
+
+ identity tunnel-action-inprogress {
+ base te-action-result;
+ description "TE action inprogress.";
+ }
+
+ identity tunnel-admin-state-type {
+ description
+ "Base identity for TE tunnel admin states";
+ }
+
+ identity tunnel-admin-state-up {
+ base tunnel-admin-state-type;
+ description "Tunnel administratively state up";
+ }
+
+ identity tunnel-admin-state-down {
+ base tunnel-admin-state-type;
+ description "Tunnel administratively state down";
+ }
+
+ identity tunnel-state-type {
+ description
+ "Base identity for TE tunnel states";
+ }
+
+ identity tunnel-state-up {
+ base tunnel-state-type;
+ description "Tunnel state up";
+ }
+
+ identity tunnel-state-down {
+ base tunnel-state-type;
+ description "Tunnel state down";
+ }
+
+ identity lsp-state-type {
+ description
+ "Base identity for TE LSP states";
+ }
+
+ identity lsp-path-computing {
+ base lsp-state-type;
+ description
+ "State path compute in progress";
+ }
+
+ identity lsp-path-computation-ok {
+ base lsp-state-type;
+ description
+ "State path compute successful";
+ }
+
+ identity lsp-path-computatione-failed {
+ base lsp-state-type;
+ description
+ "State path compute failed";
+ }
+
+ identity lsp-state-setting-up {
+ base lsp-state-type;
+ description
+ "State setting up";
+ }
+
+ identity lsp-state-setup-ok {
+ base lsp-state-type;
+ description
+ "State setup successful";
+ }
+
+ identity lsp-state-setup-failed {
+ base lsp-state-type;
+ description
+ "State setup failed";
+ }
+
+ identity lsp-state-up {
+ base lsp-state-type;
+ description "State up";
+ }
+
+ identity lsp-state-tearing-down {
+ base lsp-state-type;
+ description
+ "State tearing down";
+ }
+
+ identity lsp-state-down {
+ base lsp-state-type;
+ description "State down";
+ }
+
+ identity path-invalidation-action-type {
+ description
+ "Base identity for TE path invalidation action types";
+ }
+
+ identity path-invalidation-action-drop-type {
+ base path-invalidation-action-type;
+ description
+ "TE path invalidation action drop";
+ }
+
+ identity path-invalidation-action-drop-tear {
+ base path-invalidation-action-type;
+ description
+ "TE path invalidation action tear";
+ }
+
+ identity lsp-restoration-type {
+ description
+ "Base identity from which LSP restoration types are
+ derived.";
+ }
+
+ identity lsp-restoration-restore-any {
+ base lsp-restoration-type;
+ description
+ "Restores when any of the LSPs is affected by a failure";
+ }
+
+ identity lsp-restoration-restore-all {
+ base lsp-restoration-type;
+ description
+ "Restores when all the tunnel LSPs are affected by failure";
+ }
+
+ identity restoration-scheme-type {
+ description
+ "Base identity for LSP restoration schemes";
+ reference "RFC4872";
+ }
+
+ identity restoration-scheme-preconfigured {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is preconfigured prior to the failure";
+ }
+
+ identity restoration-scheme-precomputed {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is precomputed prior to the failure";
+ }
+
+ identity restoration-scheme-presignaled {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is presignaledd prior to the failure";
+ }
+
+ identity lsp-protection-type {
+ description
+ "Base identity from which LSP protection types are
+ derived.";
+ }
+
+ identity lsp-protection-unprotected {
+ base lsp-protection-type;
+ description
+ "LSP protection 'Unprotected'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-reroute-extra {
+ base lsp-protection-type;
+ description
+ "LSP protection '(Full) Rerouting'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-reroute {
+ base lsp-protection-type;
+ description
+ "LSP protection 'Rerouting without Extra-Traffic'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-1-for-n {
+ base lsp-protection-type;
+ description
+ "LSP protection '1:N Protection with Extra-Traffic'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-unidir-1-to-1 {
+ base lsp-protection-type;
+ description
+ "LSP protection '1+1 Unidirectional Protection'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-bidir-1-to-1 {
+ base lsp-protection-type;
+ description
+ "LSP protection '1+1 Bidirectional Protection'";
+ reference "RFC4872";
+ }
+
+ identity lsp-protection-extra-traffic {
+ base lsp-protection-type;
+ description
+ "LSP protection 'Extra-Traffic'";
+ reference
+ "ITU-T G.808, RFC 4427.";
+ }
+
+ identity lsp-protection-state {
+ description
+ "Base identity of protection states for reporting
+ purposes.";
+ }
+
+ identity normal {
+ base lsp-protection-state;
+ description "Normal state.";
+ }
+
+ identity signal-fail-of-protection {
+ base lsp-protection-state;
+ description
+ "There is a SF condition on the protection transport
+ entity which has higher priority than the FS command.";
+ reference
+ "ITU-T G.873.1, G.8031, G.8131";
+ }
+
+ identity lockout-of-protection {
+ base lsp-protection-state;
+ description
+ "A Loss of Protection (LoP) command is active.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity forced-switch {
+ base lsp-protection-state;
+ description
+ "A forced switch (FS) command is active.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity signal-fail {
+ base lsp-protection-state;
+ description
+ "There is a SF condition on either the working
+ or the protection path.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity signal-degrade {
+ base lsp-protection-state;
+ description
+ "There is an SD condition on either the working or the
+ protection path.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity manual-switch {
+ base lsp-protection-state;
+ description
+ "A manual switch (MS) command is active.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity wait-to-restore {
+ base lsp-protection-state;
+ description
+ "A wait time to restore (WTR) is running.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity do-not-revert {
+ base lsp-protection-state;
+ description
+ "A DNR condition is active because of a non-revertive
+ behavior.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity failure-of-protocol {
+ base lsp-protection-state;
+ description
+ "The protection is not working because of a failure of
+ protocol condition.";
+ reference
+ "ITU-T G.873.1, G.8031, G.8131";
+ }
+
+ identity protection-external-commands {
+ description
+ "Protection external commands for trouble shooting
+ purposes.";
+ }
+
+ identity action-freeze {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command to prevent any switch action to be taken and as such
+ freezes the current state.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity clear-freeze {
+ base protection-external-commands;
+ description
+ "An action that clears the active freeze state.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity action-lockout-of-normal {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command to ensure that the normal traffic is not allowed
+ to use the protection transport entity.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity clear-lockout-of-normal {
+ base protection-external-commands;
+ description
+ "An action that clears the active lockout of normal state.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity action-lockout-of-protection {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command to ensure that the protection transport entity is
+ temporarily not available to transport a traffic signal
+ (either normal or extra traffic).";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity action-forced-switch {
+ base protection-external-commands;
+ description
+ "A switch action initiated by an operator command to swith
+ the extra traffic signal, the normal traffic signal, or the
+ null signal to the protection transport entity, unless an
+ equal or higher priority switch command is in effect.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity action-manual-switch {
+ base protection-external-commands;
+ description
+ "A switch action initiated by an operator command to swith
+ the extra traffic signal, the normal traffic signal #i, or
+ the null signal to the protection transport entity, unless
+ a fault condition exists on other transport entities or an
+ equal or higher priority switch command is in effect.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity action-exercise {
+ base protection-external-commands;
+ description
+ "An action to start testing if the APS communication is
+ operating correctly. It is lower priority than any other
+ state or command.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity clear {
+ base protection-external-commands;
+ description
+ "An action that clears the active near-end lockout of
+ protection, forced switch, manual switch, WTR state,
+ or exercise command.";
+ reference
+ "ITU-T G.808, RFC 4427";
+ }
+
+ identity switching-capabilities {
+ description
+ "Base identity for interface switching capabilities";
+ reference "RFC3471";
+ }
+
+ identity switching-psc1 {
+ base switching-capabilities;
+ description
+ "Packet-Switch Capable-1 (PSC-1)";
+ reference "RFC3471";
+ }
+
+ identity switching-evpl {
+ base switching-capabilities;
+ description
+ "Ethernet Virtual Private Line (EVPL)";
+ }
+
+ identity switching-l2sc {
+ base switching-capabilities;
+ description
+ "Layer-2 Switch Capable (L2SC)";
+ reference "RFC3471";
+ }
+
+ identity switching-tdm {
+ base switching-capabilities;
+ description
+ "Time-Division-Multiplex Capable (TDM)";
+ reference "RFC3471";
+ }
+
+ identity switching-otn {
+ base switching-capabilities;
+ description
+ "OTN-TDM capable";
+ }
+
+ identity switching-dcsc {
+ base switching-capabilities;
+ description
+ "Data Channel Switching Capable (DCSC)";
+ }
+
+ identity switching-lsc {
+ base switching-capabilities;
+ description
+ "Lambda-Switch Capable (LSC)";
+ reference "RFC3471";
+ }
+
+ identity switching-fsc {
+ base switching-capabilities;
+ description
+ "Fiber-Switch Capable (FSC)";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-types {
+ description
+ "Base identity for encoding types";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-packet {
+ base lsp-encoding-types;
+ description
+ "Packet LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-ethernet {
+ base lsp-encoding-types;
+ description
+ "Ethernet LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-pdh {
+ base lsp-encoding-types;
+ description
+ "ANSI/ETSI LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-sdh {
+ base lsp-encoding-types;
+ description
+ "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-digital-wrapper {
+ base lsp-encoding-types;
+ description
+ "Digital Wrapper LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-lambda {
+ base lsp-encoding-types;
+ description
+ "Lambda (photonic) LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-fiber {
+ base lsp-encoding-types;
+ description
+ "Fiber LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-fiber-channel {
+ base lsp-encoding-types;
+ description
+ "FiberChannel LSP encoding";
+ reference "RFC3471";
+ }
+
+ identity lsp-encoding-oduk {
+ base lsp-encoding-types;
+ description
+ "G.709 ODUk (Digital Path)LSP encoding";
+ }
+
+ identity lsp-encoding-optical-channel {
+ base lsp-encoding-types;
+ description
+ "Line (e.g., 8B/10B) LSP encoding";
+ }
+
+ identity lsp-encoding-line {
+ base lsp-encoding-types;
+ description
+ "Line (e.g., 8B/10B) LSP encoding";
+ }
+
+ identity path-signaling-type {
+ description
+ "base identity from which specific LSPs path
+ setup types are derived";
+ }
+
+ identity path-setup-static {
+ base path-signaling-type;
+ description
+ "Static LSP provisioning path setup";
+ }
+
+ identity path-setup-rsvp {
+ base path-signaling-type;
+ description
+ "RSVP-TE signaling path setup";
+ reference "RFC3209";
+ }
+
+ identity path-setup-sr {
+ base path-signaling-type;
+ description
+ "Segment-routing path setup";
+ }
+
+ identity path-scope-type {
+ description
+ "base identity from which specific path
+ scope types are derived";
+ }
+
+ identity path-scope-segment {
+ base path-scope-type;
+ description
+ "Path scope segment";
+ }
+
+ identity path-scope-end-to-end {
+ base path-scope-type;
+ description
+ "Path scope end to end";
+ }
+
+ /* TE basic features */
+ feature p2mp-te {
+ description
+ "Indicates support for P2MP-TE";
+ reference "RFC4875";
+ }
+
+ feature frr-te {
+ description
+ "Indicates support for TE FastReroute (FRR)";
+ reference "RFC4090";
+ }
+
+ feature extended-admin-groups {
+ description
+ "Indicates support for TE link extended admin
+ groups.";
+ reference "RFC7308";
+ }
+
+ feature named-path-affinities {
+ description
+ "Indicates support for named path affinities";
+ }
+
+ feature named-extended-admin-groups {
+ description
+ "Indicates support for named extended admin groups";
+ }
+
+ feature named-srlg-groups {
+ description
+ "Indicates support for named SRLG groups";
+ }
+
+ feature named-path-constraints {
+ description
+ "Indicates support for named path constraints";
+ }
+
+ feature path-optimization-metric {
+ description
+ "Indicates support for path optimization metric";
+ }
+
+ feature path-optimization-objective-function {
+ description
+ "Indicates support for path optimization objective function";
+ }
+
+ identity route-usage-type {
+ description
+ "Base identity for route usage";
+ }
+
+ identity route-include-ero {
+ base route-usage-type;
+ description
+ "Include ERO from route";
+ }
+
+ identity route-exclude-ero {
+ base route-usage-type;
+ description
+ "Exclude ERO from route";
+ }
+
+ identity route-exclude-srlg {
+ base route-usage-type;
+ description
+ "Exclude SRLG from route";
+ }
+
+ identity path-metric-type {
+ description
+ "Base identity for path metric type";
+ }
+
+ identity path-metric-te {
+ base path-metric-type;
+ description
+ "TE path metric";
+ reference "RFC3785";
+ }
+
+ identity path-metric-igp {
+ base path-metric-type;
+ description
+ "IGP path metric";
+ reference "RFC3785";
+ }
+
+ identity path-metric-hop {
+ base path-metric-type;
+ description
+ "Hop path metric";
+ }
+
+ identity path-metric-delay-average {
+ base path-metric-type;
+ description
+ "Unidirectional average link delay";
+ reference "RFC7471";
+ }
+
+ identity path-metric-residual-bandwidth {
+ base path-metric-type;
+ description
+ "Unidirectional Residual Bandwidth, which is defined to be
+ Maximum Bandwidth [RFC3630] minus the bandwidth currently
+ allocated to LSPs.";
+ reference "RFC7471";
+ }
+ identity path-metric-optimize-includes {
+ base path-metric-type;
+ description
+ "A metric that optimizes the number of included resources
+ specified in a set";
+ }
+
+ identity path-metric-optimize-excludes {
+ base path-metric-type;
+ description
+ "A metric that optimizes the number of excluded resources
+ specified in a set";
+ }
+
+ identity path-tiebreaker-type {
+ description
+ "Base identity for path tie-breaker type";
+ }
+
+ identity path-tiebreaker-minfill {
+ base path-tiebreaker-type;
+ description
+ "Min-Fill LSP path placement";
+ }
+
+ identity path-tiebreaker-maxfill {
+ base path-tiebreaker-type;
+ description
+ "Max-Fill LSP path placement";
+ }
+
+ identity path-tiebreaker-randoom {
+ base path-tiebreaker-type;
+ description
+ "Random LSP path placement";
+ }
+
+ identity bidir-provisioning-mode {
+ description
+ "Base identity for bidirectional provisioning
+ mode.";
+ reference "RFC7551";
+ }
+
+ identity bidir-provisioning-single-sided {
+ base bidir-provisioning-mode;
+ description
+ "Single-sided bidirectional provioning mode";
+ reference "RFC7551";
+ }
+
+ identity bidir-provisioning-double-sided {
+ base bidir-provisioning-mode;
+ description
+ "Double-sided bidirectional provioning mode";
+ reference "RFC7551";
+ }
+
+ identity bidir-association-type {
+ description
+ "Base identity for bidirectional association type";
+ reference "RFC7551";
+ }
+
+ identity bidir-assoc-corouted {
+ base bidir-association-type;
+ description
+ "Co-routed bidirectional association type";
+ reference "RFC7551";
+ }
+
+ identity bidir-assoc-non-corouted {
+ base bidir-association-type;
+ description
+ "Non co-routed bidirectional association type";
+ reference "RFC7551";
+ }
+
+ identity resource-affinities-type {
+ description
+ "Base identity for resource affinities";
+ reference "RFC2702";
+ }
+
+ identity resource-aff-include-all {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel all of which must be present for a link
+ to be acceptable";
+ reference "RFC2702 and RFC3209";
+ }
+
+ identity resource-aff-include-any {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel any of which must be present for a link
+ to be acceptable";
+ reference "RFC2702 and RFC3209";
+ }
+
+ identity resource-aff-exclude-any {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel any of which renders a link unacceptable";
+ reference "RFC2702 and RFC3209";
+ }
+
+ typedef optimization-goal {
+ type enumeration {
+ enum minimize {
+ description "Pick lowest path metric goal";
+ }
+ enum maximize {
+ description "Pick highest path metric goal";
+ }
+ enum randomize {
+ description
+ "Pick a path at random from list of
+ equally favorable ones";
+ }
+ }
+ description "TE optimization goal";
+ }
+
+ identity te-optimization-criterion {
+ description
+ "Base identity for TE optimization criterion.";
+ reference
+ "RFC3272: Overview and Principles of Internet Traffic
+ Engineering.";
+ }
+
+ identity not-optimized {
+ base te-optimization-criterion;
+ description "Optimization is not applied.";
+ }
+
+ identity cost {
+ base te-optimization-criterion;
+ description "Optimized on cost.";
+ }
+ identity delay {
+ base te-optimization-criterion;
+ description "Optimized on delay.";
+ }
+
+ /*
+ * Typedefs
+ */
+
+ typedef percentage {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "Integer indicating a percentage value";
+ }
+
+ typedef performance-metric-normality {
+ type enumeration {
+ enum "unknown" {
+ value 0;
+ description
+ "Unknown.";
+ }
+ enum "normal" {
+ value 1;
+ description
+ "Normal.";
+ }
+ enum "abnormal" {
+ value 2;
+ description
+ "Abnormal. The anomalous bit is set.";
+ }
+ }
+ description
+ "Indicates whether a performance metric is normal, abnormal, or
+ unknown.";
+ 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";
+ }
+
+ typedef te-admin-status {
+ type enumeration {
+ enum up {
+ description
+ "Enabled.";
+ }
+ enum down {
+ description
+ "Disabled.";
+ }
+ enum testing {
+ description
+ "In some test mode.";
+ }
+ enum preparing-maintenance {
+ description
+ "Resource is disabled in the control plane to prepare for
+ graceful shutdown for maintenance purposes.";
+ reference
+ "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
+ Traffic Engineering Networks";
+ }
+ enum maintenance {
+ description
+ "Resource is disabled in the data plane for maintenance
+ purposes.";
+ }
+ }
+ description
+ "Defines a type representing the administrative status of
+ a TE resource.";
+ }
+
+ typedef te-global-id {
+ type uint32;
+ description
+ "An identifier to uniquely identify an operator, which can be
+ either a provider or a client.
+ The definition of this type is taken from RFC6370 and RFC5003.
+ This attribute type is used solely to provide a globally
+ unique context for TE topologies.";
+ }
+
+ typedef te-link-access-type {
+ type enumeration {
+ enum point-to-point {
+ description
+ "The link is point-to-point.";
+ }
+ enum multi-access {
+ description
+ "The link is multi-access, including broacast and NBMA.";
+ }
+ }
+ description
+ "Defines a type representing the access type of a TE link.";
+ reference
+ "RFC3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2.";
+ }
+
+ typedef te-node-id {
+ type yang:dotted-quad;
+ description
+ "An identifier for a node in a topology.
+ The identifier is represented as 32-bit unsigned integer in
+ the dotted-quad notation.
+ This attribute is mapped to Router ID in
+ RFC3630, RFC5329, RFC5305, and RFC6119.";
+ }
+
+ typedef te-oper-status {
+ type enumeration {
+ enum up {
+ description
+ "Operational up.";
+ }
+ enum down {
+ description
+ "Operational down.";
+ }
+ enum testing {
+ description
+ "In some test mode.";
+ }
+ enum unknown {
+ description
+ "Status cannot be determined for some reason.";
+ }
+ enum preparing-maintenance {
+ description
+ "Resource is disabled in the control plane to prepare for
+ graceful shutdown for maintenance purposes.";
+ reference
+ "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
+ Traffic Engineering Networks";
+ }
+ enum maintenance {
+ description
+ "Resource is disabled in the data plane for maintenance
+ purposes.";
+ }
+ }
+ description
+ "Defines a type representing the operational status of
+ a TE resource.";
+ }
+
+ 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
+
+ typedef te-recovery-status {
+ type enumeration {
+ enum normal {
+ description
+ "Both the recovery and working spans are fully
+ allocated and active, data traffic is being
+ transported over (or selected from) the working
+ span, and no trigger events are reported.";
+ }
+ enum recovery-started {
+ description
+ "The recovery action has been started, but not completed.";
+ }
+ enum recovery-succeeded {
+ description
+ "The recovery action has succeeded. The working span has
+ reported a failure/degrade condition and the user traffic
+ is being transported (or selected) on the recovery span.";
+ }
+ enum recovery-failed {
+ description
+ "The recovery action has failed.";
+ }
+ enum reversion-started {
+ description
+ "The reversion has started.";
+ }
+ enum reversion-failed {
+ description
+ "The reversion has failed.";
+ }
+ enum recovery-unavailable {
+ description
+ "The recovery is unavailable -- either as a result of an
+ operator Lockout command or a failure condition detected
+ on the recovery span.";
+ }
+ enum recovery-admin {
+ description
+ "The operator has issued a command switching the user
+ traffic to the recovery span.";
+ }
+ enum wait-to-restore {
+ description
+ "The recovery domain is recovering from a failuer/degrade
+ condition on the working span that is being controlled by
+ the Wait-to-Restore (WTR) timer.";
+ }
+ }
+ description
+ "Defines the status of a recovery action.";
+ reference
+ "RFC4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS).
+ RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
+ }
+
+ typedef te-template-name {
+ type string {
+ pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+ }
+ description
+ "A type for the name of a TE node template or TE link
+ template.";
+ }
+
+ typedef te-topology-event-type {
+ type enumeration {
+ enum "add" {
+ value 0;
+ description
+ "A TE node or te-link has been added.";
+ }
+ enum "remove" {
+ value 1;
+ description
+ "A TE node or te-link has been removed.";
+ }
+ enum "update" {
+ value 2;
+ description
+ "A TE node or te-link has been updated.";
+ }
+ }
+ description "TE Event type for notifications";
+ } // te-topology-event-type
+
+ typedef te-topology-id {
+ type string {
+ pattern
+ '([a-zA-Z0-9\-_.]+:)*'
+ + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+ }
+ description
+ "An identifier for a topology.
+ It is optional to have one or more prefixes at the begining,
+ separated by colons. The prefixes can be the network-types,
+ defined in ietf-network.yang, to help user to understand the
+ topology better before further inquiry.";
+ }
+
+ typedef te-tp-id {
+ type union {
+ type uint32; // Unnumbered
+ type inet:ip-address; // IPv4 or IPv6 address
+ }
+ description
+ "An identifier for a TE link endpoint on a node.
+ This attribute is mapped to local or remote link identifier in
+ RFC3630 and RFC5305.";
+ }
+ typedef admin-group {
+ type binary {
+ length 4;
+ }
+ description
+ "Administrative group/Resource class/Color.";
+ reference "RFC3630 and RFC5305";
+ }
+
+ typedef extended-admin-group {
+ type binary;
+ description
+ "Extended administrative group/Resource class/Color.";
+ reference "RFC7308";
+ }
+
+ typedef admin-groups {
+ type union {
+ type admin-group;
+ type extended-admin-group;
+ }
+ description "TE administrative group derived type";
+ }
+
+ typedef srlg {
+ type uint32;
+ description "SRLG type";
+ reference "RFC4203 and RFC5307";
+ }
+
+ identity path-computation-srlg-type {
+ description
+ "Base identity for SRLG path computation";
+ }
+
+ identity srlg-ignore {
+ base path-computation-srlg-type;
+ description
+ "Ignores SRLGs in path computation";
+ }
+
+ identity srlg-strict {
+ base path-computation-srlg-type;
+ description
+ "Include strict SRLG check in path computation";
+ }
+
+ identity srlg-preferred {
+ base path-computation-srlg-type;
+ description
+ "Include preferred SRLG check in path computation";
+ }
+
+ identity srlg-weighted {
+ base path-computation-srlg-type;
+ description
+ "Include weighted SRLG check in path computation";
+ }
+
+ typedef te-metric {
+ type uint32;
+ description
+ "TE link metric";
+ reference "RFC3785";
+ }
+
+ /**
+ * TE bandwidth groupings
+ **/
+ identity otn-rate-type {
+ description
+ "Base type to identify OTN bit rates of various information
+ structures.";
+ reference "RFC7139";
+ }
+ identity odu0 {
+ base otn-rate-type;
+ description
+ "ODU0 bit rate.";
+ }
+ identity odu1 {
+ base otn-rate-type;
+ description
+ "ODU1 bit rate.";
+ }
+ identity odu2 {
+ base otn-rate-type;
+ description
+ "ODU2 bit rate.";
+ }
+ identity odu3 {
+ base otn-rate-type;
+ description
+ "ODU3 bit rate.";
+ }
+ identity odu4 {
+ base otn-rate-type;
+ description
+ "ODU4 bit rate.";
+ }
+ identity odu2e {
+ base otn-rate-type;
+ description
+ "ODU2e bit rate.";
+ }
+ identity oduc {
+ base otn-rate-type;
+ description
+ "ODUCn bit rate.";
+ }
+ identity oduflex {
+ base otn-rate-type;
+ description
+ "ODUflex bit rate.";
+ }
+
+ identity wdm-spectrum-type {
+ description
+ "Base type to identify WDM spectrum type.";
+ }
+ identity cwdm {
+ base wdm-spectrum-type;
+ description "CWDM.";
+ reference "RFC6205";
+ }
+ identity dwdm {
+ base wdm-spectrum-type;
+ description "DWDM.";
+ reference "RFC6205";
+ }
+ identity flexible-grid {
+ base wdm-spectrum-type;
+ description "Flexible grid.";
+ reference "RFC6205";
+ }
+
+ grouping te-bandwidth {
+ description
+ "This grouping defines the generic TE bandwidth.
+ For some known data plane technologies, specific modeling
+ structures are specified. The string encoded te-bandwidth
+ type is used for un-specified technologies.
+ The modeling structure can be augmented later for other
+ technologies.";
+ container te-bandwidth {
+ description
+ "Container that specifies TE bandwidth.";
+ choice technology {
+ default generic;
+ description
+ "Data plane technology type.";
+ case generic {
+ leaf generic {
+ type te-bandwidth;
+ description
+ "Bandwidth specified in a generic format.";
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * TE label groupings
+ **/
+ grouping te-label {
+ description
+ "This grouping defines the generic TE label.
+ The modeling structure can be augmented for each technology.
+ For un-specified technologies, rt-types:generalized-label
+ is used.";
+ container te-label {
+ description
+ "Container that specifies TE label.";
+ choice technology {
+ default generic;
+ description
+ "Data plane technology type.";
+ case generic {
+ leaf generic {
+ type rt-types:generalized-label;
+ description
+ "TE label specified in a generic format.";
+ }
+ }
+ }
+ leaf direction {
+ type te-label-direction;
+ description "Label direction";
+ }
+ }
+ }
+ /**
+ * TE performance metric groupings
+ **/
+ grouping performance-metric-container {
+ description
+ "A container containing performance metric attributes.";
+ container performance-metric {
+ 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;
+ }
+ uses performance-metric-throttle-container;
+ }
+ } // performance-metric-container
+
+ grouping te-topology-identifier {
+ description
+ "Augmentation for TE topology.";
+ container te-topology-identifier {
+ description "TE topology identifier container";
+ 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 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.";
+ }
+ }
+ }
+
+ grouping performance-metric-attributes {
+ 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 rt-types:bandwidth-ieee-float32;
+ 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 rt-types:bandwidth-ieee-float32;
+ 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 rt-types:bandwidth-ieee-float32;
+ 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.";
+ }
+ } // 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 throttle {
+ must "suppression-interval >= measure-interval" {
+ error-message
+ "suppression-interval cannot be less then
+ measure-interval.";
+ description
+ "Constraint on suppression-interval and
+ measure-interval.";
+ }
+ 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;
+ }
+ }
+ } // performance-metric-throttle-container
+
+ /**
+ * TE tunnel generic groupings
+ **/
+
+ /* Tunnel path selection parameters */
+ grouping explicit-route-hop {
+ description
+ "The explicit route subobject grouping";
+ leaf index {
+ type uint32;
+ description "ERO subobject index";
+ }
+ choice type {
+ description
+ "The explicit route subobject type";
+ case num-unnum-hop {
+ container num-unnum-hop {
+ leaf node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf link-tp-id {
+ type te-types:te-tp-id;
+ description
+ "TE link termination point identifier. The combination
+ of TE link ID and the TE node ID is used to identify an
+ unnumbered TE link.";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ description "strict or loose hop";
+ }
+ leaf direction {
+ type te-link-direction;
+ description "Unnumbered Link ERO direction";
+ }
+ description
+ "Numbered and Unnumbered link/node explicit route
+ subobject";
+ reference
+ "RFC3209: section 4.3 for EXPLICIT_ROUTE in RSVP-TE
+ RFC3477: Signalling Unnumbered Links in RSVP-TE";
+ }
+ }
+ case as-number {
+ container as-number-hop {
+ leaf as-number {
+ type binary {
+ length 16;
+ }
+ description "AS number";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ description
+ "strict or loose hop";
+ }
+ description
+ "Autonomous System explicit route subobject";
+ }
+ }
+ case label {
+ container label-hop {
+ description "Label hop type";
+ uses te-label;
+ }
+ description
+ "The Label ERO subobject";
+ }
+ }
+ }
+
+ grouping record-route-subobject_state {
+ description
+ "The record route subobject grouping";
+ leaf index {
+ type uint32;
+ description "RRO subobject index";
+ }
+ choice type {
+ description
+ "The record route subobject type";
+ case numbered {
+ leaf address {
+ type te-types:te-tp-id;
+ description
+ "Numbered link TE termination point address.";
+ }
+ leaf ip-flags {
+ type binary {
+ length 8;
+ }
+ description
+ "RRO IP address sub-object flags";
+ reference "RFC3209";
+ }
+ }
+ case unnumbered {
+ leaf node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf link-tp-id {
+ type te-types:te-tp-id;
+ description
+ "TE link termination point identifier, used
+ together with te-node-id to identify the
+ link termination point";
+ }
+ description
+ "Unnumbered link record route subobject";
+ reference
+ "RFC3477: Signalling Unnumbered Links in
+ RSVP-TE";
+ }
+ case label {
+ container label-hop {
+ description "Label hop type";
+ uses te-label;
+ leaf label-flags {
+ type binary {
+ length 8;
+ }
+ description
+ "Label sub-object flags";
+ reference "RFC3209";
+ }
+ }
+ description
+ "The Label RRO subobject";
+ }
+ }
+ }
+
+ grouping label-restriction-info {
+ description "Label set item info";
+ leaf restriction {
+ type enumeration {
+ enum inclusive {
+ description "The label or label range is inclusive.";
+ }
+ enum exclusive {
+ description "The label or label range is exclusive.";
+ }
+ }
+ description
+ "Whether the list item is inclusive or exclusive.";
+ }
+ leaf index {
+ type uint32;
+ description
+ "Then index of the label restriction list entry.";
+ }
+ container label-start {
+ description
+ "This is the starting label if a label range is specified.
+ This is the label value if a single label is specified,
+ in which case, attribute 'label-end' is not set.";
+ uses te-label;
+ }
+ container label-end {
+ description
+ "The ending label if a label range is specified;
+ This attribute is not set, If a single label is
+ specified.";
+ uses te-label;
+ }
+ leaf range-bitmap {
+ type binary;
+ description
+ "When there are gaps between label-start and label-end,
+ this attribute is used to specified the possitions
+ of the used labels.";
+ }
+ }
+
+ grouping label-set-info {
+ description
+ "Grouping for List of label restrictions specifying what labels
+ may or may not be used on a link connectivity.";
+ container label-restrictions {
+ description
+ "The label restrictions container";
+ list label-restriction {
+ key "index";
+ description
+ "The absence of label-set implies that all labels are
+ acceptable; otherwise only restricted labels are
+ available.";
+ reference
+ "RFC7579: General Network Element Constraint Encoding
+ for GMPLS-Controlled Networks";
+ uses label-restriction-info;
+ }
+ }
+ }
+
+ /*** End of TE tunnel groupings ***/
+ grouping optimizations_config {
+ description "Optimization metrics configuration grouping";
+ leaf metric-type {
+ type identityref {
+ base te-types:path-metric-type;
+ }
+ description "TE path metric type";
+ }
+ leaf weight {
+ type uint8;
+ description "TE path metric normalization weight";
+ }
+ container explicit-route-exclude-objects {
+ when "../metric-type = " +
+ "'te-types:path-metric-optimize-excludes'";
+ description
+ "Container for the exclude route object list";
+ uses path-route-exclude-objects;
+ }
+ container explicit-route-include-objects {
+ when "../metric-type = " +
+ "'te-types:path-metric-optimize-includes'";
+ description
+ "Container for the include route object list";
+ uses path-route-include-objects;
+ }
+ }
+
+ grouping common-constraints_config {
+ description
+ "Common constraints grouping that can be set on
+ a constraint set or directly on the tunnel";
+
+ uses te-types:te-bandwidth {
+ description
+ "A requested bandwidth to use for path computation";
+ }
+
+ leaf setup-priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "TE LSP requested setup priority";
+ reference "RFC3209";
+ }
+ leaf hold-priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "TE LSP requested hold priority";
+ reference "RFC3209";
+ }
+ leaf signaling-type {
+ type identityref {
+ base te-types:path-signaling-type;
+ }
+ description "TE tunnel path signaling type";
+ }
+ }
+
+ grouping tunnel-constraints_config {
+ description
+ "Tunnel constraints grouping that can be set on
+ a constraint set or directly on the tunnel";
+ uses te-types:te-topology-identifier;
+ uses te-types:common-constraints_config;
+ }
+
+ grouping path-metrics-bounds_config {
+ description "TE path metric bounds grouping";
+ leaf metric-type {
+ type identityref {
+ base te-types:path-metric-type;
+ }
+ description "TE path metric type";
+ }
+ leaf upper-bound {
+ type uint64;
+ description "Upper bound on end-to-end TE path metric";
+ }
+ }
+
+ grouping path-objective-function_config {
+ description "Optimization metrics configuration grouping";
+ leaf objective-function-type {
+ type identityref {
+ base te-types:objective-function-type;
+ }
+ description
+ "Objective function entry";
+ }
+ }
+
+ /**
+ * TE interface generic groupings
+ **/
+ grouping path-route-objects {
+ description
+ "List of EROs to be included or excluded when performing
+ the path computation.";
+ container explicit-route-objects {
+ description
+ "Container for the exclude route object list";
+ list route-object-exclude-always {
+ key index;
+ description
+ "List of explicit route objects to always exclude
+ from path computation";
+ uses te-types:explicit-route-hop;
+ }
+ list route-object-include-exclude {
+ key index;
+ description
+ "List of explicit route objects to include or
+ exclude in path computation";
+ leaf explicit-route-usage {
+ type identityref {
+ base te-types:route-usage-type;
+ }
+ description "Explicit-route usage.";
+ }
+ uses te-types:explicit-route-hop {
+ augment "type" {
+ case srlg {
+ container srlg {
+ description "SRLG container";
+ leaf srlg {
+ type uint32;
+ description "SRLG value";
+ }
+ }
+ description "An SRLG value to be included or excluded";
+ }
+ description
+ "Augmentation to generic explicit route for SRLG
+ exclusion";
+ }
+ }
+ }
+ }
+ }
+
+ grouping path-route-include-objects {
+ description
+ "List of EROs to be included when performing
+ the path computation.";
+ list route-object-include-object {
+ key index;
+ description
+ "List of explicit route objects to be included
+ in path computation";
+ uses te-types:explicit-route-hop;
+ }
+ }
+
+ grouping path-route-exclude-objects {
+ description
+ "List of EROs to be included when performing
+ the path computation.";
+ list route-object-exclude-object {
+ key index;
+ description
+ "List of explicit route objects to be excluded
+ in path computation";
+ uses te-types:explicit-route-hop {
+ augment "type" {
+ case srlg {
+ container srlg {
+ description "SRLG container";
+ leaf srlg {
+ type uint32;
+ description "SRLG value";
+ }
+ }
+ description "An SRLG value to be included or excluded";
+ }
+ description
+ "Augmentation to generic explicit route for SRLG exclusion";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-metric-bounds {
+ description "TE path metric bounds grouping";
+ container path-metric-bounds {
+ description "TE path metric bounds container";
+ list path-metric-bound {
+ key metric-type;
+ description "List of TE path metric bounds";
+ uses path-metrics-bounds_config;
+ }
+ }
+ }
+
+ grouping generic-path-optimization {
+ description "TE generic path optimization grouping";
+
+ container optimizations {
+ description
+ "The objective function container that includes
+ attributes to impose when computing a TE path";
+
+ choice algorithm {
+ description "Optimizations algorithm.";
+ case metric {
+ if-feature path-optimization-metric;
+ /* Optimize by metric */
+ list optimization-metric {
+ key "metric-type";
+ description "TE path metric type";
+ uses optimizations_config;
+ }
+ /* Tiebreakers */
+ container tiebreakers {
+ description
+ "The list of tiebreaker criterion to apply
+ on an equally favored set of paths to pick best";
+ list tiebreaker {
+ key "tiebreaker-type";
+ description
+ "The list of tiebreaker criterion to apply
+ on an equally favored set of paths to pick best";
+ leaf tiebreaker-type {
+ type identityref {
+ base te-types:path-metric-type;
+ }
+ description "The objective function";
+ }
+ }
+ }
+ }
+ case objective-function {
+ if-feature path-optimization-objective-function;
+ /* Objective functions */
+ container objective-function {
+ description
+ "The objective function container that includes
+ attributes to impose when computing a TE path";
+ uses path-objective-function_config;
+ }
+ }
+ }
+ }
+ }
+
+ grouping generic-path-affinities {
+ description
+ "Path affinities grouping";
+ container path-affinities {
+ description
+ "Path affinities container";
+ list constraint {
+ key "usage";
+ description
+ "List of named affinity constraints";
+ leaf usage {
+ type identityref {
+ base resource-affinities-type;
+ }
+ description "Affinities usage";
+ }
+ leaf value {
+ type admin-groups;
+ description "Affinity value";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-srlgs {
+ description
+ "Path SRLG grouping";
+ container path-srlgs {
+ description
+ "Path SRLG properties container";
+ leaf usage {
+ type identityref {
+ base te-types:route-exclude-srlg;
+ }
+ description "SRLG usage";
+ }
+ leaf-list values {
+ type srlg;
+ description "SRLG value";
+ }
+ }
+ }
+
+ grouping generic-path-disjointness {
+ description "Path disjointness grouping";
+ leaf disjointness {
+ type te-types:te-path-disjointness;
+ description
+ "The type of resource disjointness.
+ Under primary path, disjointness level applies to
+ all secondary LSPs. Under secondary, disjointness
+ level overrides the one under primary";
+ }
+ }
+
+ grouping common-path-constraints-attributes {
+ description
+ "Common path constraints configuration grouping";
+ uses common-constraints_config;
+ uses generic-path-metric-bounds;
+ uses generic-path-affinities;
+ uses generic-path-srlgs;
+ }
+
+ grouping generic-path-constraints {
+ description
+ "Global named path constraints configuration
+ grouping";
+ container path-constraints {
+ description "TE named path constraints container";
+ uses common-path-constraints-attributes;
+ uses generic-path-disjointness;
+ }
+ }
+
+ grouping generic-path-properties {
+ description "TE generic path properties grouping";
+ container path-properties {
+ config false;
+ description "The TE path properties";
+ list path-metric {
+ key metric-type;
+ description "TE path metric type";
+ leaf metric-type {
+ type identityref {
+ base te-types:path-metric-type;
+ }
+ description "TE path metric type";
+ }
+ leaf accumulative-value {
+ type uint64;
+ description "TE path metric accumulative value";
+ }
+ }
+ uses generic-path-affinities;
+ uses generic-path-srlgs;
+ container path-route-objects {
+ description
+ "Container for the list of route objects either returned by
+ the computation engine or actually used by an LSP";
+ list path-route-object {
+ key index;
+ description
+ "List of route objects either returned by the computation
+ engine or actually used by an LSP";
+ uses explicit-route-hop;
+ }
+ }
+ }
+ }
+} \ No newline at end of file