3 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
5 /* Replace with IANA when assigned */
8 import ietf-inet-types {
12 import ietf-yang-types {
16 import ietf-routing-types {
21 "IETF Traffic Engineering Architecture and Signaling (TEAS)
25 "WG Web: <http://tools.ietf.org/wg/teas/>
26 WG List: <mailto:teas@ietf.org>
28 <mailto:lberger@labn.net>
29 WG Chair: Vishnu Pavan Beeram
30 <mailto:vbeeram@juniper.net>
32 <mailto:tsaad@cisco.com>
34 <mailto:rgandhi@cisco.com>
35 Editor: Vishnu Pavan Beeram
36 <mailto:vbeeram@juniper.net>
38 <mailto:hshah@ciena.com>
40 <mailto:xufeng.liu@ericsson.com>
42 <mailto:Igor.Bryskin@huawei.com>";
45 "This module contains a collection of generally
46 useful TE specific YANG data type defintions.";
48 revision "2018-07-01" {
49 description "Latest revision of TE types";
56 identity association-type {
57 description "Base identity for tunnel association";
58 reference "RFC6780, RFC4872, RFC4873";
60 identity association-type-recovery {
61 base association-type;
63 "Association Type Recovery used to association LSPs of
64 same tunnel for recovery";
67 identity association-type-resource-sharing {
68 base association-type;
70 "Association Type Resource Sharing used to enable resource
71 sharing during make-before-break.";
74 identity association-type-double-sided-bidir {
75 base association-type;
77 "Association Type Double Sided bidirectional used to associate
78 two LSPs of two tunnels that are independently configured on
82 identity association-type-single-sided-bidir {
83 base association-type;
85 "Association Type Single Sided bidirectional used to associate
86 two LSPs of two tunnels, where a tunnel is configured on one
87 side/endpoint, and the other tunnel is dynamically created on
92 identity objective-function-type {
93 description "Base objective function type";
96 identity of-minimize-cost-path {
97 base objective-function-type;
99 "Mimimuze cost of path objective function";
101 identity of-minimize-load-path {
102 base objective-function-type;
104 "Minimize the load on path(s) objective
107 identity of-maximize-residual-bandwidth {
108 base objective-function-type;
110 "Maximize the residual bandwidth objective
113 identity of-minimize-agg-bandwidth-consumption {
114 base objective-function-type;
116 "minimize the aggregate bandwidth consumption
119 identity of-minimize-load-most-loaded-link {
120 base objective-function-type;
122 "Minimize the load on the most loaded link
125 identity of-minimize-cost-path-set {
126 base objective-function-type;
128 "Minimize the cost on a path set objective
132 identity path-computation-method {
134 "base identity for supported path computation
138 identity path-locally-computed {
139 base path-computation-method;
141 "indicates a constrained-path LSP in which the
142 path is computed by the local LER";
145 identity path-externally-queried {
146 base path-computation-method;
148 "Constrained-path LSP in which the path is
149 obtained by querying an external source, such as a PCE server.
150 In the case that an LSP is defined to be externally queried, it
151 may also have associated explicit definitions (provided
152 to the external source to aid computation); and the path that is
153 returned by the external source is not required to provide a
154 wholly resolved path back to the originating system - that is to
155 say, some local computation may also be required";
158 identity path-explicitly-defined {
159 base path-computation-method;
161 "constrained-path LSP in which the path is
162 explicitly specified as a collection of strict or/and loose
169 typedef te-bandwidth {
172 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
173 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
174 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
175 + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
176 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
177 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
180 "This is the generic bandwidth type that is a string containing
181 a list of numbers separated by commas, with each of these
182 number can be non-negative decimal, hex integer, or hex float:
183 (dec | hex | float)[*(','(dec | hex | float))]
184 For packet switching type, a float number is used, such as
186 For OTN switching type, a list of integers can be used, such
187 as '0,2,3,1', indicating 2 odu0's and 1 odu3.
188 For DWDM, a list of pairs of slot number and width can be
189 used, such as '0, 2, 3, 3', indicating a frequency slot 0 with
190 slot width 2 and a frequency slot 3 with slot width 3.";
193 typedef te-ds-class {
198 "The Differentiatied Class-Type of traffic.";
199 reference "RFC4124: section-4.3.1";
202 typedef te-link-direction {
206 "explicit route represents an incoming link on a node";
210 "explicit route represents an outgoing link on a node";
214 "enumerated type for specifying direction of link on a node";
217 typedef te-label-direction {
221 "Label allocated for the forward LSP direction";
225 "Label allocated for the reverse LSP direction";
229 "enumerated type for specifying the forward or reverse
233 typedef te-hop-type {
237 "loose hop in an explicit path";
241 "strict hop in an explicit path";
245 "enumerated type for specifying loose or strict
247 reference "RFC3209: section-4.3.2";
250 identity LSP_METRIC_TYPE {
252 "Base identity for types of LSP metric specification";
255 identity LSP_METRIC_RELATIVE {
256 base LSP_METRIC_TYPE;
258 "The metric specified for the LSPs to which this identity refers
259 is specified as a relative value to the IGP metric cost to the
263 identity LSP_METRIC_ABSOLUTE {
264 base LSP_METRIC_TYPE;
266 "The metric specified for the LSPs to which this identity refers
267 is specified as an absolute value";
270 identity LSP_METRIC_INHERITED {
271 base LSP_METRIC_TYPE;
273 "The metric for for the LSPs to which this identity refers is
274 not specified explicitly - but rather inherited from the IGP
278 identity tunnel-type {
280 "Base identity from which specific tunnel types are
284 identity tunnel-p2p {
287 "TE point-to-point tunnel type.";
290 identity tunnel-p2mp {
293 "TE point-to-multipoint tunnel type.";
297 identity tunnel-action-type {
299 "Base identity from which specific tunnel action types
303 identity tunnel-action-resetup {
304 base tunnel-action-type;
306 "TE tunnel action resetup. Tears the
307 tunnel's current LSP (if any) and
308 attempts to re-establish a new LSP";
311 identity tunnel-action-reoptimize {
312 base tunnel-action-type;
314 "TE tunnel action reoptimize.
315 Reoptimizes placement of the tunnel LSP(s)";
318 identity tunnel-action-switchpath {
319 base tunnel-action-type;
321 "TE tunnel action reoptimize
322 Switches the tunnel's LSP to use the specified path";
325 identity te-action-result {
327 "Base identity from which specific TE action results
331 identity te-action-success {
332 base te-action-result;
333 description "TE action successul.";
336 identity te-action-fail {
337 base te-action-result;
338 description "TE action failed.";
341 identity tunnel-action-inprogress {
342 base te-action-result;
343 description "TE action inprogress.";
346 identity tunnel-admin-state-type {
348 "Base identity for TE tunnel admin states";
351 identity tunnel-admin-state-up {
352 base tunnel-admin-state-type;
353 description "Tunnel administratively state up";
356 identity tunnel-admin-state-down {
357 base tunnel-admin-state-type;
358 description "Tunnel administratively state down";
361 identity tunnel-state-type {
363 "Base identity for TE tunnel states";
366 identity tunnel-state-up {
367 base tunnel-state-type;
368 description "Tunnel state up";
371 identity tunnel-state-down {
372 base tunnel-state-type;
373 description "Tunnel state down";
376 identity lsp-state-type {
378 "Base identity for TE LSP states";
381 identity lsp-path-computing {
384 "State path compute in progress";
387 identity lsp-path-computation-ok {
390 "State path compute successful";
393 identity lsp-path-computatione-failed {
396 "State path compute failed";
399 identity lsp-state-setting-up {
405 identity lsp-state-setup-ok {
408 "State setup successful";
411 identity lsp-state-setup-failed {
414 "State setup failed";
417 identity lsp-state-up {
419 description "State up";
422 identity lsp-state-tearing-down {
425 "State tearing down";
428 identity lsp-state-down {
430 description "State down";
433 identity path-invalidation-action-type {
435 "Base identity for TE path invalidation action types";
438 identity path-invalidation-action-drop-type {
439 base path-invalidation-action-type;
441 "TE path invalidation action drop";
444 identity path-invalidation-action-drop-tear {
445 base path-invalidation-action-type;
447 "TE path invalidation action tear";
450 identity lsp-restoration-type {
452 "Base identity from which LSP restoration types are
456 identity lsp-restoration-restore-any {
457 base lsp-restoration-type;
459 "Restores when any of the LSPs is affected by a failure";
462 identity lsp-restoration-restore-all {
463 base lsp-restoration-type;
465 "Restores when all the tunnel LSPs are affected by failure";
468 identity restoration-scheme-type {
470 "Base identity for LSP restoration schemes";
474 identity restoration-scheme-preconfigured {
475 base restoration-scheme-type;
477 "Restoration LSP is preconfigured prior to the failure";
480 identity restoration-scheme-precomputed {
481 base restoration-scheme-type;
483 "Restoration LSP is precomputed prior to the failure";
486 identity restoration-scheme-presignaled {
487 base restoration-scheme-type;
489 "Restoration LSP is presignaledd prior to the failure";
492 identity lsp-protection-type {
494 "Base identity from which LSP protection types are
498 identity lsp-protection-unprotected {
499 base lsp-protection-type;
501 "LSP protection 'Unprotected'";
505 identity lsp-protection-reroute-extra {
506 base lsp-protection-type;
508 "LSP protection '(Full) Rerouting'";
512 identity lsp-protection-reroute {
513 base lsp-protection-type;
515 "LSP protection 'Rerouting without Extra-Traffic'";
519 identity lsp-protection-1-for-n {
520 base lsp-protection-type;
522 "LSP protection '1:N Protection with Extra-Traffic'";
526 identity lsp-protection-unidir-1-to-1 {
527 base lsp-protection-type;
529 "LSP protection '1+1 Unidirectional Protection'";
533 identity lsp-protection-bidir-1-to-1 {
534 base lsp-protection-type;
536 "LSP protection '1+1 Bidirectional Protection'";
540 identity lsp-protection-extra-traffic {
541 base lsp-protection-type;
543 "LSP protection 'Extra-Traffic'";
545 "ITU-T G.808, RFC 4427.";
548 identity lsp-protection-state {
550 "Base identity of protection states for reporting
555 base lsp-protection-state;
556 description "Normal state.";
559 identity signal-fail-of-protection {
560 base lsp-protection-state;
562 "There is a SF condition on the protection transport
563 entity which has higher priority than the FS command.";
565 "ITU-T G.873.1, G.8031, G.8131";
568 identity lockout-of-protection {
569 base lsp-protection-state;
571 "A Loss of Protection (LoP) command is active.";
573 "ITU-T G.808, RFC 4427";
576 identity forced-switch {
577 base lsp-protection-state;
579 "A forced switch (FS) command is active.";
581 "ITU-T G.808, RFC 4427";
584 identity signal-fail {
585 base lsp-protection-state;
587 "There is a SF condition on either the working
588 or the protection path.";
590 "ITU-T G.808, RFC 4427";
593 identity signal-degrade {
594 base lsp-protection-state;
596 "There is an SD condition on either the working or the
599 "ITU-T G.808, RFC 4427";
602 identity manual-switch {
603 base lsp-protection-state;
605 "A manual switch (MS) command is active.";
607 "ITU-T G.808, RFC 4427";
610 identity wait-to-restore {
611 base lsp-protection-state;
613 "A wait time to restore (WTR) is running.";
615 "ITU-T G.808, RFC 4427";
618 identity do-not-revert {
619 base lsp-protection-state;
621 "A DNR condition is active because of a non-revertive
624 "ITU-T G.808, RFC 4427";
627 identity failure-of-protocol {
628 base lsp-protection-state;
630 "The protection is not working because of a failure of
631 protocol condition.";
633 "ITU-T G.873.1, G.8031, G.8131";
636 identity protection-external-commands {
638 "Protection external commands for trouble shooting
642 identity action-freeze {
643 base protection-external-commands;
645 "A temporary configuration action initiated by an operator
646 command to prevent any switch action to be taken and as such
647 freezes the current state.";
649 "ITU-T G.808, RFC 4427";
652 identity clear-freeze {
653 base protection-external-commands;
655 "An action that clears the active freeze state.";
657 "ITU-T G.808, RFC 4427";
660 identity action-lockout-of-normal {
661 base protection-external-commands;
663 "A temporary configuration action initiated by an operator
664 command to ensure that the normal traffic is not allowed
665 to use the protection transport entity.";
667 "ITU-T G.808, RFC 4427";
670 identity clear-lockout-of-normal {
671 base protection-external-commands;
673 "An action that clears the active lockout of normal state.";
675 "ITU-T G.808, RFC 4427";
678 identity action-lockout-of-protection {
679 base protection-external-commands;
681 "A temporary configuration action initiated by an operator
682 command to ensure that the protection transport entity is
683 temporarily not available to transport a traffic signal
684 (either normal or extra traffic).";
686 "ITU-T G.808, RFC 4427";
689 identity action-forced-switch {
690 base protection-external-commands;
692 "A switch action initiated by an operator command to swith
693 the extra traffic signal, the normal traffic signal, or the
694 null signal to the protection transport entity, unless an
695 equal or higher priority switch command is in effect.";
697 "ITU-T G.808, RFC 4427";
700 identity action-manual-switch {
701 base protection-external-commands;
703 "A switch action initiated by an operator command to swith
704 the extra traffic signal, the normal traffic signal #i, or
705 the null signal to the protection transport entity, unless
706 a fault condition exists on other transport entities or an
707 equal or higher priority switch command is in effect.";
709 "ITU-T G.808, RFC 4427";
712 identity action-exercise {
713 base protection-external-commands;
715 "An action to start testing if the APS communication is
716 operating correctly. It is lower priority than any other
719 "ITU-T G.808, RFC 4427";
723 base protection-external-commands;
725 "An action that clears the active near-end lockout of
726 protection, forced switch, manual switch, WTR state,
727 or exercise command.";
729 "ITU-T G.808, RFC 4427";
732 identity switching-capabilities {
734 "Base identity for interface switching capabilities";
738 identity switching-psc1 {
739 base switching-capabilities;
741 "Packet-Switch Capable-1 (PSC-1)";
745 identity switching-evpl {
746 base switching-capabilities;
748 "Ethernet Virtual Private Line (EVPL)";
751 identity switching-l2sc {
752 base switching-capabilities;
754 "Layer-2 Switch Capable (L2SC)";
758 identity switching-tdm {
759 base switching-capabilities;
761 "Time-Division-Multiplex Capable (TDM)";
765 identity switching-otn {
766 base switching-capabilities;
771 identity switching-dcsc {
772 base switching-capabilities;
774 "Data Channel Switching Capable (DCSC)";
777 identity switching-lsc {
778 base switching-capabilities;
780 "Lambda-Switch Capable (LSC)";
784 identity switching-fsc {
785 base switching-capabilities;
787 "Fiber-Switch Capable (FSC)";
791 identity lsp-encoding-types {
793 "Base identity for encoding types";
797 identity lsp-encoding-packet {
798 base lsp-encoding-types;
800 "Packet LSP encoding";
804 identity lsp-encoding-ethernet {
805 base lsp-encoding-types;
807 "Ethernet LSP encoding";
811 identity lsp-encoding-pdh {
812 base lsp-encoding-types;
814 "ANSI/ETSI LSP encoding";
818 identity lsp-encoding-sdh {
819 base lsp-encoding-types;
821 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
825 identity lsp-encoding-digital-wrapper {
826 base lsp-encoding-types;
828 "Digital Wrapper LSP encoding";
832 identity lsp-encoding-lambda {
833 base lsp-encoding-types;
835 "Lambda (photonic) LSP encoding";
839 identity lsp-encoding-fiber {
840 base lsp-encoding-types;
842 "Fiber LSP encoding";
846 identity lsp-encoding-fiber-channel {
847 base lsp-encoding-types;
849 "FiberChannel LSP encoding";
853 identity lsp-encoding-oduk {
854 base lsp-encoding-types;
856 "G.709 ODUk (Digital Path)LSP encoding";
859 identity lsp-encoding-optical-channel {
860 base lsp-encoding-types;
862 "Line (e.g., 8B/10B) LSP encoding";
865 identity lsp-encoding-line {
866 base lsp-encoding-types;
868 "Line (e.g., 8B/10B) LSP encoding";
871 identity path-signaling-type {
873 "base identity from which specific LSPs path
874 setup types are derived";
877 identity path-setup-static {
878 base path-signaling-type;
880 "Static LSP provisioning path setup";
883 identity path-setup-rsvp {
884 base path-signaling-type;
886 "RSVP-TE signaling path setup";
890 identity path-setup-sr {
891 base path-signaling-type;
893 "Segment-routing path setup";
896 identity path-scope-type {
898 "base identity from which specific path
899 scope types are derived";
902 identity path-scope-segment {
903 base path-scope-type;
905 "Path scope segment";
908 identity path-scope-end-to-end {
909 base path-scope-type;
911 "Path scope end to end";
914 /* TE basic features */
917 "Indicates support for P2MP-TE";
923 "Indicates support for TE FastReroute (FRR)";
927 feature extended-admin-groups {
929 "Indicates support for TE link extended admin
934 feature named-path-affinities {
936 "Indicates support for named path affinities";
939 feature named-extended-admin-groups {
941 "Indicates support for named extended admin groups";
944 feature named-srlg-groups {
946 "Indicates support for named SRLG groups";
949 feature named-path-constraints {
951 "Indicates support for named path constraints";
954 feature path-optimization-metric {
956 "Indicates support for path optimization metric";
959 feature path-optimization-objective-function {
961 "Indicates support for path optimization objective function";
964 identity route-usage-type {
966 "Base identity for route usage";
969 identity route-include-ero {
970 base route-usage-type;
972 "Include ERO from route";
975 identity route-exclude-ero {
976 base route-usage-type;
978 "Exclude ERO from route";
981 identity route-exclude-srlg {
982 base route-usage-type;
984 "Exclude SRLG from route";
987 identity path-metric-type {
989 "Base identity for path metric type";
992 identity path-metric-te {
993 base path-metric-type;
999 identity path-metric-igp {
1000 base path-metric-type;
1003 reference "RFC3785";
1006 identity path-metric-hop {
1007 base path-metric-type;
1012 identity path-metric-delay-average {
1013 base path-metric-type;
1015 "Unidirectional average link delay";
1016 reference "RFC7471";
1019 identity path-metric-residual-bandwidth {
1020 base path-metric-type;
1022 "Unidirectional Residual Bandwidth, which is defined to be
1023 Maximum Bandwidth [RFC3630] minus the bandwidth currently
1024 allocated to LSPs.";
1025 reference "RFC7471";
1027 identity path-metric-optimize-includes {
1028 base path-metric-type;
1030 "A metric that optimizes the number of included resources
1031 specified in a set";
1034 identity path-metric-optimize-excludes {
1035 base path-metric-type;
1037 "A metric that optimizes the number of excluded resources
1038 specified in a set";
1041 identity path-tiebreaker-type {
1043 "Base identity for path tie-breaker type";
1046 identity path-tiebreaker-minfill {
1047 base path-tiebreaker-type;
1049 "Min-Fill LSP path placement";
1052 identity path-tiebreaker-maxfill {
1053 base path-tiebreaker-type;
1055 "Max-Fill LSP path placement";
1058 identity path-tiebreaker-randoom {
1059 base path-tiebreaker-type;
1061 "Random LSP path placement";
1064 identity bidir-provisioning-mode {
1066 "Base identity for bidirectional provisioning
1068 reference "RFC7551";
1071 identity bidir-provisioning-single-sided {
1072 base bidir-provisioning-mode;
1074 "Single-sided bidirectional provioning mode";
1075 reference "RFC7551";
1078 identity bidir-provisioning-double-sided {
1079 base bidir-provisioning-mode;
1081 "Double-sided bidirectional provioning mode";
1082 reference "RFC7551";
1085 identity bidir-association-type {
1087 "Base identity for bidirectional association type";
1088 reference "RFC7551";
1091 identity bidir-assoc-corouted {
1092 base bidir-association-type;
1094 "Co-routed bidirectional association type";
1095 reference "RFC7551";
1098 identity bidir-assoc-non-corouted {
1099 base bidir-association-type;
1101 "Non co-routed bidirectional association type";
1102 reference "RFC7551";
1105 identity resource-affinities-type {
1107 "Base identity for resource affinities";
1108 reference "RFC2702";
1111 identity resource-aff-include-all {
1112 base resource-affinities-type;
1114 "The set of attribute filters associated with a
1115 tunnel all of which must be present for a link
1117 reference "RFC2702 and RFC3209";
1120 identity resource-aff-include-any {
1121 base resource-affinities-type;
1123 "The set of attribute filters associated with a
1124 tunnel any of which must be present for a link
1126 reference "RFC2702 and RFC3209";
1129 identity resource-aff-exclude-any {
1130 base resource-affinities-type;
1132 "The set of attribute filters associated with a
1133 tunnel any of which renders a link unacceptable";
1134 reference "RFC2702 and RFC3209";
1137 typedef optimization-goal {
1140 description "Pick lowest path metric goal";
1143 description "Pick highest path metric goal";
1147 "Pick a path at random from list of
1148 equally favorable ones";
1151 description "TE optimization goal";
1154 identity te-optimization-criterion {
1156 "Base identity for TE optimization criterion.";
1158 "RFC3272: Overview and Principles of Internet Traffic
1162 identity not-optimized {
1163 base te-optimization-criterion;
1164 description "Optimization is not applied.";
1168 base te-optimization-criterion;
1169 description "Optimized on cost.";
1172 base te-optimization-criterion;
1173 description "Optimized on delay.";
1180 typedef percentage {
1185 "Integer indicating a percentage value";
1188 typedef performance-metric-normality {
1203 "Abnormal. The anomalous bit is set.";
1207 "Indicates whether a performance metric is normal, abnormal, or
1210 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
1211 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
1212 RFC7823: Performance-Based Path Selection for Explicitly
1213 Routed Label Switched Paths (LSPs) Using TE Metric
1217 typedef te-admin-status {
1229 "In some test mode.";
1231 enum preparing-maintenance {
1233 "Resource is disabled in the control plane to prepare for
1234 graceful shutdown for maintenance purposes.";
1236 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
1237 Traffic Engineering Networks";
1241 "Resource is disabled in the data plane for maintenance
1246 "Defines a type representing the administrative status of
1250 typedef te-global-id {
1253 "An identifier to uniquely identify an operator, which can be
1254 either a provider or a client.
1255 The definition of this type is taken from RFC6370 and RFC5003.
1256 This attribute type is used solely to provide a globally
1257 unique context for TE topologies.";
1260 typedef te-link-access-type {
1262 enum point-to-point {
1264 "The link is point-to-point.";
1268 "The link is multi-access, including broacast and NBMA.";
1272 "Defines a type representing the access type of a TE link.";
1274 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
1278 typedef te-node-id {
1279 type yang:dotted-quad;
1281 "An identifier for a node in a topology.
1282 The identifier is represented as 32-bit unsigned integer in
1283 the dotted-quad notation.
1284 This attribute is mapped to Router ID in
1285 RFC3630, RFC5329, RFC5305, and RFC6119.";
1288 typedef te-oper-status {
1296 "Operational down.";
1300 "In some test mode.";
1304 "Status cannot be determined for some reason.";
1306 enum preparing-maintenance {
1308 "Resource is disabled in the control plane to prepare for
1309 graceful shutdown for maintenance purposes.";
1311 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
1312 Traffic Engineering Networks";
1316 "Resource is disabled in the data plane for maintenance
1321 "Defines a type representing the operational status of
1325 typedef te-path-disjointness {
1329 description "Node disjoint.";
1333 description "Link disjoint.";
1337 description "SRLG (Shared Risk Link Group) disjoint.";
1341 "Type of the resource disjointness for a TE tunnel path.";
1343 "RFC4872: RSVP-TE Extensions in Support of End-to-End
1344 Generalized Multi-Protocol Label Switching (GMPLS)
1346 } // te-path-disjointness
1348 typedef te-recovery-status {
1352 "Both the recovery and working spans are fully
1353 allocated and active, data traffic is being
1354 transported over (or selected from) the working
1355 span, and no trigger events are reported.";
1357 enum recovery-started {
1359 "The recovery action has been started, but not completed.";
1361 enum recovery-succeeded {
1363 "The recovery action has succeeded. The working span has
1364 reported a failure/degrade condition and the user traffic
1365 is being transported (or selected) on the recovery span.";
1367 enum recovery-failed {
1369 "The recovery action has failed.";
1371 enum reversion-started {
1373 "The reversion has started.";
1375 enum reversion-failed {
1377 "The reversion has failed.";
1379 enum recovery-unavailable {
1381 "The recovery is unavailable -- either as a result of an
1382 operator Lockout command or a failure condition detected
1383 on the recovery span.";
1385 enum recovery-admin {
1387 "The operator has issued a command switching the user
1388 traffic to the recovery span.";
1390 enum wait-to-restore {
1392 "The recovery domain is recovering from a failuer/degrade
1393 condition on the working span that is being controlled by
1394 the Wait-to-Restore (WTR) timer.";
1398 "Defines the status of a recovery action.";
1400 "RFC4427: Recovery (Protection and Restoration) Terminology
1401 for Generalized Multi-Protocol Label Switching (GMPLS).
1402 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
1405 typedef te-template-name {
1407 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
1410 "A type for the name of a TE node template or TE link
1414 typedef te-topology-event-type {
1419 "A TE node or te-link has been added.";
1424 "A TE node or te-link has been removed.";
1429 "A TE node or te-link has been updated.";
1432 description "TE Event type for notifications";
1433 } // te-topology-event-type
1435 typedef te-topology-id {
1438 '([a-zA-Z0-9\-_.]+:)*'
1439 + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
1442 "An identifier for a topology.
1443 It is optional to have one or more prefixes at the begining,
1444 separated by colons. The prefixes can be the network-types,
1445 defined in ietf-network.yang, to help user to understand the
1446 topology better before further inquiry.";
1451 type uint32; // Unnumbered
1452 type inet:ip-address; // IPv4 or IPv6 address
1455 "An identifier for a TE link endpoint on a node.
1456 This attribute is mapped to local or remote link identifier in
1457 RFC3630 and RFC5305.";
1459 typedef admin-group {
1464 "Administrative group/Resource class/Color.";
1465 reference "RFC3630 and RFC5305";
1468 typedef extended-admin-group {
1471 "Extended administrative group/Resource class/Color.";
1472 reference "RFC7308";
1475 typedef admin-groups {
1478 type extended-admin-group;
1480 description "TE administrative group derived type";
1485 description "SRLG type";
1486 reference "RFC4203 and RFC5307";
1489 identity path-computation-srlg-type {
1491 "Base identity for SRLG path computation";
1494 identity srlg-ignore {
1495 base path-computation-srlg-type;
1497 "Ignores SRLGs in path computation";
1500 identity srlg-strict {
1501 base path-computation-srlg-type;
1503 "Include strict SRLG check in path computation";
1506 identity srlg-preferred {
1507 base path-computation-srlg-type;
1509 "Include preferred SRLG check in path computation";
1512 identity srlg-weighted {
1513 base path-computation-srlg-type;
1515 "Include weighted SRLG check in path computation";
1522 reference "RFC3785";
1526 * TE bandwidth groupings
1528 identity otn-rate-type {
1530 "Base type to identify OTN bit rates of various information
1532 reference "RFC7139";
1572 "ODUflex bit rate.";
1575 identity wdm-spectrum-type {
1577 "Base type to identify WDM spectrum type.";
1580 base wdm-spectrum-type;
1581 description "CWDM.";
1582 reference "RFC6205";
1585 base wdm-spectrum-type;
1586 description "DWDM.";
1587 reference "RFC6205";
1589 identity flexible-grid {
1590 base wdm-spectrum-type;
1591 description "Flexible grid.";
1592 reference "RFC6205";
1595 grouping te-bandwidth {
1597 "This grouping defines the generic TE bandwidth.
1598 For some known data plane technologies, specific modeling
1599 structures are specified. The string encoded te-bandwidth
1600 type is used for un-specified technologies.
1601 The modeling structure can be augmented later for other
1603 container te-bandwidth {
1605 "Container that specifies TE bandwidth.";
1609 "Data plane technology type.";
1614 "Bandwidth specified in a generic format.";
1622 * TE label groupings
1626 "This grouping defines the generic TE label.
1627 The modeling structure can be augmented for each technology.
1628 For un-specified technologies, rt-types:generalized-label
1630 container te-label {
1632 "Container that specifies TE label.";
1636 "Data plane technology type.";
1639 type rt-types:generalized-label;
1641 "TE label specified in a generic format.";
1646 type te-label-direction;
1647 description "Label direction";
1652 * TE performance metric groupings
1654 grouping performance-metric-container {
1656 "A container containing performance metric attributes.";
1657 container performance-metric {
1659 "Link performance information in real time.";
1661 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
1662 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
1663 RFC7823: Performance-Based Path Selection for Explicitly
1664 Routed Label Switched Paths (LSPs) Using TE Metric
1666 container measurement {
1668 "Measured performance metric values. Static configuration
1669 and manual overrides of these measurements are also
1671 uses performance-metric-attributes;
1676 "Performance metric normality values.";
1677 uses performance-metric-normality-attributes;
1679 uses performance-metric-throttle-container;
1681 } // performance-metric-container
1683 grouping te-topology-identifier {
1685 "Augmentation for TE topology.";
1686 container te-topology-identifier {
1687 description "TE topology identifier container";
1689 type te-types:te-global-id;
1691 "An identifier to uniquely identify a provider.";
1694 type te-types:te-global-id;
1696 "An identifier to uniquely identify a client.";
1699 type te-types:te-topology-id;
1701 "It is presumed that a datastore will contain many
1702 topologies. To distinguish between topologies it is
1703 vital to have UNIQUE topology identifiers.";
1708 grouping performance-metric-attributes {
1710 "Link performance information in real time.";
1712 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
1713 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
1714 RFC7823: Performance-Based Path Selection for Explicitly
1715 Routed Label Switched Paths (LSPs) Using TE Metric
1717 leaf unidirectional-delay {
1721 description "Delay or latency in micro seconds.";
1723 leaf unidirectional-min-delay {
1727 description "Minimum delay or latency in micro seconds.";
1729 leaf unidirectional-max-delay {
1733 description "Maximum delay or latency in micro seconds.";
1735 leaf unidirectional-delay-variation {
1739 description "Delay variation in micro seconds.";
1741 leaf unidirectional-packet-loss {
1744 range "0 .. 50.331642";
1747 "Packet loss as a percentage of the total traffic sent
1748 over a configurable interval. The finest precision is
1751 leaf unidirectional-residual-bandwidth {
1752 type rt-types:bandwidth-ieee-float32;
1754 "Residual bandwidth that subtracts tunnel
1755 reservations from Maximum Bandwidth (or link capacity)
1756 [RFC3630] and provides an aggregated remainder across QoS
1759 leaf unidirectional-available-bandwidth {
1760 type rt-types:bandwidth-ieee-float32;
1762 "Available bandwidth that is defined to be residual
1763 bandwidth minus the measured bandwidth used for the
1764 actual forwarding of non-RSVP-TE LSP packets. For a
1765 bundled link, available bandwidth is defined to be the
1766 sum of the component link available bandwidths.";
1768 leaf unidirectional-utilized-bandwidth {
1769 type rt-types:bandwidth-ieee-float32;
1771 "Bandwidth utilization that represents the actual
1772 utilization of the link (i.e. as measured in the router).
1773 For a bundled link, bandwidth utilization is defined to
1774 be the sum of the component link bandwidth
1777 } // performance-metric-attributes
1779 grouping performance-metric-normality-attributes {
1781 "Link performance metric normality attributes.";
1783 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
1784 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
1785 RFC7823: Performance-Based Path Selection for Explicitly
1786 Routed Label Switched Paths (LSPs) Using TE Metric
1788 leaf unidirectional-delay {
1789 type te-types:performance-metric-normality;
1790 description "Delay normality.";
1792 leaf unidirectional-min-delay {
1793 type te-types:performance-metric-normality;
1794 description "Minimum delay or latency normality.";
1796 leaf unidirectional-max-delay {
1797 type te-types:performance-metric-normality;
1798 description "Maximum delay or latency normality.";
1800 leaf unidirectional-delay-variation {
1801 type te-types:performance-metric-normality;
1802 description "Delay variation normality.";
1804 leaf unidirectional-packet-loss {
1805 type te-types:performance-metric-normality;
1806 description "Packet loss normality.";
1808 leaf unidirectional-residual-bandwidth {
1809 type te-types:performance-metric-normality;
1810 description "Residual bandwidth normality.";
1812 leaf unidirectional-available-bandwidth {
1813 type te-types:performance-metric-normality;
1814 description "Available bandwidth normality.";
1816 leaf unidirectional-utilized-bandwidth {
1817 type te-types:performance-metric-normality;
1818 description "Bandwidth utilization normality.";
1820 } // performance-metric-normality-attributes
1822 grouping performance-metric-throttle-container {
1824 "A container controlling performance metric throttle.";
1825 container throttle {
1826 must "suppression-interval >= measure-interval" {
1828 "suppression-interval cannot be less then
1831 "Constraint on suppression-interval and
1835 "Link performance information in real time.";
1837 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
1838 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
1839 RFC7823: Performance-Based Path Selection for Explicitly
1840 Routed Label Switched Paths (LSPs) Using TE Metric
1842 leaf unidirectional-delay-offset {
1847 "Offset value to be added to the measured delay value.";
1849 leaf measure-interval {
1853 "Interval in seconds to measure the extended metric
1856 leaf advertisement-interval {
1859 "Interval in seconds to advertise the extended metric
1862 leaf suppression-interval {
1868 "Interval in seconds to suppress advertising the extended
1871 container threshold-out {
1872 uses performance-metric-attributes;
1874 "If the measured parameter falls outside an upper bound
1875 for all but the min delay metric (or lower bound for
1876 min-delay metric only) and the advertised value is not
1877 already outside that bound, anomalous announcement will be
1880 container threshold-in {
1881 uses performance-metric-attributes;
1883 "If the measured parameter falls inside an upper bound
1884 for all but the min delay metric (or lower bound for
1885 min-delay metric only) and the advertised value is not
1886 already inside that bound, normal (anomalous-flag cleared)
1887 announcement will be triggered.";
1889 container threshold-accelerated-advertisement {
1891 "When the difference between the last advertised value and
1892 current measured value exceed this threshold, anomalous
1893 announcement will be triggered.";
1894 uses performance-metric-attributes;
1897 } // performance-metric-throttle-container
1900 * TE tunnel generic groupings
1903 /* Tunnel path selection parameters */
1904 grouping explicit-route-hop {
1906 "The explicit route subobject grouping";
1909 description "ERO subobject index";
1913 "The explicit route subobject type";
1914 case num-unnum-hop {
1915 container num-unnum-hop {
1917 type te-types:te-node-id;
1919 "The identifier of a node in the TE topology.";
1922 type te-types:te-tp-id;
1924 "TE link termination point identifier. The combination
1925 of TE link ID and the TE node ID is used to identify an
1926 unnumbered TE link.";
1930 description "strict or loose hop";
1933 type te-link-direction;
1934 description "Unnumbered Link ERO direction";
1937 "Numbered and Unnumbered link/node explicit route
1940 "RFC3209: section 4.3 for EXPLICIT_ROUTE in RSVP-TE
1941 RFC3477: Signalling Unnumbered Links in RSVP-TE";
1945 container as-number-hop {
1950 description "AS number";
1955 "strict or loose hop";
1958 "Autonomous System explicit route subobject";
1962 container label-hop {
1963 description "Label hop type";
1967 "The Label ERO subobject";
1972 grouping record-route-subobject_state {
1974 "The record route subobject grouping";
1977 description "RRO subobject index";
1981 "The record route subobject type";
1984 type te-types:te-tp-id;
1986 "Numbered link TE termination point address.";
1993 "RRO IP address sub-object flags";
1994 reference "RFC3209";
1999 type te-types:te-node-id;
2001 "The identifier of a node in the TE topology.";
2004 type te-types:te-tp-id;
2006 "TE link termination point identifier, used
2007 together with te-node-id to identify the
2008 link termination point";
2011 "Unnumbered link record route subobject";
2013 "RFC3477: Signalling Unnumbered Links in
2017 container label-hop {
2018 description "Label hop type";
2025 "Label sub-object flags";
2026 reference "RFC3209";
2030 "The Label RRO subobject";
2035 grouping label-restriction-info {
2036 description "Label set item info";
2040 description "The label or label range is inclusive.";
2043 description "The label or label range is exclusive.";
2047 "Whether the list item is inclusive or exclusive.";
2052 "Then index of the label restriction list entry.";
2054 container label-start {
2056 "This is the starting label if a label range is specified.
2057 This is the label value if a single label is specified,
2058 in which case, attribute 'label-end' is not set.";
2061 container label-end {
2063 "The ending label if a label range is specified;
2064 This attribute is not set, If a single label is
2071 "When there are gaps between label-start and label-end,
2072 this attribute is used to specified the possitions
2073 of the used labels.";
2077 grouping label-set-info {
2079 "Grouping for List of label restrictions specifying what labels
2080 may or may not be used on a link connectivity.";
2081 container label-restrictions {
2083 "The label restrictions container";
2084 list label-restriction {
2087 "The absence of label-set implies that all labels are
2088 acceptable; otherwise only restricted labels are
2091 "RFC7579: General Network Element Constraint Encoding
2092 for GMPLS-Controlled Networks";
2093 uses label-restriction-info;
2098 /*** End of TE tunnel groupings ***/
2099 grouping optimizations_config {
2100 description "Optimization metrics configuration grouping";
2103 base te-types:path-metric-type;
2105 description "TE path metric type";
2109 description "TE path metric normalization weight";
2111 container explicit-route-exclude-objects {
2112 when "../metric-type = " +
2113 "'te-types:path-metric-optimize-excludes'";
2115 "Container for the exclude route object list";
2116 uses path-route-exclude-objects;
2118 container explicit-route-include-objects {
2119 when "../metric-type = " +
2120 "'te-types:path-metric-optimize-includes'";
2122 "Container for the include route object list";
2123 uses path-route-include-objects;
2127 grouping common-constraints_config {
2129 "Common constraints grouping that can be set on
2130 a constraint set or directly on the tunnel";
2132 uses te-types:te-bandwidth {
2134 "A requested bandwidth to use for path computation";
2137 leaf setup-priority {
2142 "TE LSP requested setup priority";
2143 reference "RFC3209";
2145 leaf hold-priority {
2150 "TE LSP requested hold priority";
2151 reference "RFC3209";
2153 leaf signaling-type {
2155 base te-types:path-signaling-type;
2157 description "TE tunnel path signaling type";
2161 grouping tunnel-constraints_config {
2163 "Tunnel constraints grouping that can be set on
2164 a constraint set or directly on the tunnel";
2165 uses te-types:te-topology-identifier;
2166 uses te-types:common-constraints_config;
2169 grouping path-metrics-bounds_config {
2170 description "TE path metric bounds grouping";
2173 base te-types:path-metric-type;
2175 description "TE path metric type";
2179 description "Upper bound on end-to-end TE path metric";
2183 grouping path-objective-function_config {
2184 description "Optimization metrics configuration grouping";
2185 leaf objective-function-type {
2187 base te-types:objective-function-type;
2190 "Objective function entry";
2195 * TE interface generic groupings
2197 grouping path-route-objects {
2199 "List of EROs to be included or excluded when performing
2200 the path computation.";
2201 container explicit-route-objects {
2203 "Container for the exclude route object list";
2204 list route-object-exclude-always {
2207 "List of explicit route objects to always exclude
2208 from path computation";
2209 uses te-types:explicit-route-hop;
2211 list route-object-include-exclude {
2214 "List of explicit route objects to include or
2215 exclude in path computation";
2216 leaf explicit-route-usage {
2218 base te-types:route-usage-type;
2220 description "Explicit-route usage.";
2222 uses te-types:explicit-route-hop {
2226 description "SRLG container";
2229 description "SRLG value";
2232 description "An SRLG value to be included or excluded";
2235 "Augmentation to generic explicit route for SRLG
2243 grouping path-route-include-objects {
2245 "List of EROs to be included when performing
2246 the path computation.";
2247 list route-object-include-object {
2250 "List of explicit route objects to be included
2251 in path computation";
2252 uses te-types:explicit-route-hop;
2256 grouping path-route-exclude-objects {
2258 "List of EROs to be included when performing
2259 the path computation.";
2260 list route-object-exclude-object {
2263 "List of explicit route objects to be excluded
2264 in path computation";
2265 uses te-types:explicit-route-hop {
2269 description "SRLG container";
2272 description "SRLG value";
2275 description "An SRLG value to be included or excluded";
2278 "Augmentation to generic explicit route for SRLG exclusion";
2284 grouping generic-path-metric-bounds {
2285 description "TE path metric bounds grouping";
2286 container path-metric-bounds {
2287 description "TE path metric bounds container";
2288 list path-metric-bound {
2290 description "List of TE path metric bounds";
2291 uses path-metrics-bounds_config;
2296 grouping generic-path-optimization {
2297 description "TE generic path optimization grouping";
2299 container optimizations {
2301 "The objective function container that includes
2302 attributes to impose when computing a TE path";
2305 description "Optimizations algorithm.";
2307 if-feature path-optimization-metric;
2308 /* Optimize by metric */
2309 list optimization-metric {
2311 description "TE path metric type";
2312 uses optimizations_config;
2315 container tiebreakers {
2317 "The list of tiebreaker criterion to apply
2318 on an equally favored set of paths to pick best";
2320 key "tiebreaker-type";
2322 "The list of tiebreaker criterion to apply
2323 on an equally favored set of paths to pick best";
2324 leaf tiebreaker-type {
2326 base te-types:path-metric-type;
2328 description "The objective function";
2333 case objective-function {
2334 if-feature path-optimization-objective-function;
2335 /* Objective functions */
2336 container objective-function {
2338 "The objective function container that includes
2339 attributes to impose when computing a TE path";
2340 uses path-objective-function_config;
2347 grouping generic-path-affinities {
2349 "Path affinities grouping";
2350 container path-affinities {
2352 "Path affinities container";
2356 "List of named affinity constraints";
2359 base resource-affinities-type;
2361 description "Affinities usage";
2365 description "Affinity value";
2371 grouping generic-path-srlgs {
2373 "Path SRLG grouping";
2374 container path-srlgs {
2376 "Path SRLG properties container";
2379 base te-types:route-exclude-srlg;
2381 description "SRLG usage";
2385 description "SRLG value";
2390 grouping generic-path-disjointness {
2391 description "Path disjointness grouping";
2393 type te-types:te-path-disjointness;
2395 "The type of resource disjointness.
2396 Under primary path, disjointness level applies to
2397 all secondary LSPs. Under secondary, disjointness
2398 level overrides the one under primary";
2402 grouping common-path-constraints-attributes {
2404 "Common path constraints configuration grouping";
2405 uses common-constraints_config;
2406 uses generic-path-metric-bounds;
2407 uses generic-path-affinities;
2408 uses generic-path-srlgs;
2411 grouping generic-path-constraints {
2413 "Global named path constraints configuration
2415 container path-constraints {
2416 description "TE named path constraints container";
2417 uses common-path-constraints-attributes;
2418 uses generic-path-disjointness;
2422 grouping generic-path-properties {
2423 description "TE generic path properties grouping";
2424 container path-properties {
2426 description "The TE path properties";
2429 description "TE path metric type";
2432 base te-types:path-metric-type;
2434 description "TE path metric type";
2436 leaf accumulative-value {
2438 description "TE path metric accumulative value";
2441 uses generic-path-affinities;
2442 uses generic-path-srlgs;
2443 container path-route-objects {
2445 "Container for the list of route objects either returned by
2446 the computation engine or actually used by an LSP";
2447 list path-route-object {
2450 "List of route objects either returned by the computation
2451 engine or actually used by an LSP";
2452 uses explicit-route-hop;