blob: 5b65dff52ffda7962d7a4ac93303fa59334aa61d [file] [log] [blame]
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +05301 module ietf-te-topology {
2 yang-version 1;
3 namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
4 // replace with IANA namespace when assigned
5
6 prefix "tet";
7
8 import ietf-inet-types {
9 prefix "inet";
10 }
11
12 import ietf-schedule {
13 prefix "sch";
14 }
15
16 import ietf-te-types {
17 prefix "te-types";
18 }
19
20 import ietf-network {
21 prefix "nw";
22 }
23
24 import ietf-network-topology {
25 prefix "nt";
26 }
27
28 organization
29 "Traffic Engineering Architecture and Signaling (TEAS)
30 Working Group";
31
32 contact
33 "WG Web: <http://tools.ietf.org/wg/teas/>
34 WG List: <mailto:teas@ietf.org>
35
36 WG Chair: Lou Berger
37 <mailto:lberger@labn.net>
38
39 WG Chair: Vishnu Pavan Beeram
40 <mailto:vbeeram@juniper.net>
41
42 Editor: Xufeng Liu
43 <mailto:xliu@kuatrotech.com>
44
45 Editor: Igor Bryskin
46 <mailto:Igor.Bryskin@huawei.com>
47
48 Editor: Vishnu Pavan Beeram
49 <mailto:vbeeram@juniper.net>
50
51 Editor: Tarek Saad
52 <mailto:tsaad@cisco.com>
53
54 Editor: Himanshu Shah
55 <mailto:hshah@ciena.com>
56
57 Editor: Oscar Gonzalez De Dios
58 <mailto:oscar.gonzalezdedios@telefonica.com>";
59
60 description "TE topology model";
61
62 revision "2016-03-17" {
63 description "Initial revision";
64 reference "TBD";
65 }
66
67 /*
68 * Features
69 */
70
Vidyashree Ramadeac28b2016-06-20 15:12:43 +053071 feature configuration-schedule {
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +053072 description
73 "This feature indicates that the system supports
74 configuration scheduling.";
75 }
76
77 feature te-topology-hierarchy {
78 description
79 "This feature indicates that the system allows underlay
80 and/or overlay TE topology hierarchy.";
81 }
82
83 feature te-performance-metric {
84 description
85 "This feature indicates that the system supports
86 TE performance metric defined in
87 RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
88 }
89
90 feature template {
91 description
92 "This feature indicates that the system supports
93 template configuration.";
Vidyashree Ramadeac28b2016-06-20 15:12:43 +053094 }
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +053095
96 /*
97 * Typedefs
98 */
99 typedef performance-metric-normality {
100 type enumeration {
101 enum "unknown" {
102 value 0;
103 description
104 "Unknown.";
105 }
106 enum "normal" {
107 value 1;
108 description
109 "Normal.";
110 }
111 enum "abnormal" {
112 value 2;
113 description
114 "Abnormal. The anomalous bit is set.";
115 }
116 }
117 description
118 "Indicates whether a performance metric is normal, abnormal, or
119 unknown.";
120 reference
121 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
122 }
123
124 typedef te-admin-status {
125 type enumeration {
126 enum up {
127 description
128 "Enabled.";
129 }
130 enum down {
131 description
132 "Disabled.";
133 }
134 enum testing {
135 description
136 "In some test mode.";
137 }
138 enum preparing-maintenance {
139 description
140 "Resource is disabled in the control plane to prepare for
141 graceful shutdown for maintenance purposes.";
142 reference
143 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
144 Traffic Engineering Networks";
145 }
146 enum maintenance {
147 description
148 "Resource is disabled in the data plane for maintenance
149 purposes.";
150 }
151 }
152 description
153 "Defines a type representing the administrative status of
154 a TE resource.";
155 }
156 typedef te-global-id {
157 type uint32;
158 description
159 "An identifier to uniquely identify an operator, which can be
160 either a provider or a client.
161 The definition of this type is taken from RFC6370 and RFC5003.
162 This attribute type is used solely to provide a globally
163 unique context for TE topologies.";
164 }
165
166 typedef te-link-access-type {
167 type enumeration {
168 enum point-to-point {
169 description
170 "The link is point-to-point.";
171 }
172 enum multi-access {
173 description
174 "The link is multi-access, including broacast and NBMA.";
175 }
176 }
177 description
178 "Defines a type representing the access type of a TE link.";
179 reference
180 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
181 Version 2.";
182 }
183
184 typedef te-node-id {
185 type inet:ip-address;
186 description
187 "An identifier for a node in a topology.
188 The identifier is represented as an IPv4 or IPv6 address.
189 This attribute is mapped to Router ID in
190 RFC3630, RFC5329, RFC5305, and RFC 6119.";
191 }
192
193 typedef te-oper-status {
194 type enumeration {
195 enum up {
196 description
197 "Operational up.";
198 }
199 enum down {
200 description
201 "Operational down.";
202 }
203 enum testing {
204 description
205 "In some test mode.";
206 }
207 enum unknown {
208 description
209 "Status cannot be determined for some reason.";
210 }
211 enum preparing-maintenance {
212 description
213 "Resource is disabled in the control plane to prepare for
214 graceful shutdown for maintenance purposes.";
215 reference
216 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
217 Traffic Engineering Networks";
218 }
219 enum maintenance {
220 description
221 "Resource is disabled in the data plane for maintenance
222 purposes.";
223 }
224 }
225 description
226 "Defines a type representing the operational status of
227 a TE resource.";
228 }
229
230 typedef te-recovery-status {
231 type enumeration {
232 enum normal {
233 description
234 "Both the recovery and working spans are fully
235 allocated and active, data traffic is being
236 transported over (or selected from) the working
237 span, and no trigger events are reported.";
238 }
239 enum recovery-started {
240 description
241 "The recovery action has been started, but not completed.";
242 }
243 enum recovery-succeeded {
244 description
245 "The recovery action has succeeded. The working span has
246 reported a failure/degrade condition and the user traffic
247 is being transported (or selected) on the recovery span.";
248 }
249 enum recovery-failed {
250 description
251 "The recovery action has failed.";
252 }
253 enum reversion-started {
254 description
255 "The reversion has started.";
256 }
257 enum reversion-failed {
258 description
259 "The reversion has failed.";
260 }
261 enum recovery-unavailable {
262 description
263 "The recovery is unavailable -- either as a result of an
264 operator Lockout command or a failure condition detected
265 on the recovery span.";
266 }
267 enum recovery-admin {
268 description
269 "The operator has issued a command switching the user
270 traffic to the recovery span.";
271 }
272 enum wait-to-restore {
273 description
274 "The recovery domain is recovering from a failuer/degrade
275 condition on the working span that is being controlled by
276 the Wait-to-Restore (WTR) timer.";
277 }
278 }
279 description
280 "Defines the status of a recovery action.";
281 reference
282 "RFC4427: Recovery (Protection and Restoration) Terminology
283 for Generalized Multi-Protocol Label Switching (GMPLS).
284 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
285 }
286
287 typedef te-template-name {
288 type string {
289 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
290 }
291 description
292 "A type for the name of a TE node template or TE link
293 template.";
294 }
295
296 typedef te-topology-event-type {
297 type enumeration {
298 enum "add" {
299 value 0;
300 description
301 "A TE node or te-link has been added.";
302 }
303 enum "remove" {
304 value 1;
305 description
306 "A TE node or te-link has been removed.";
307 }
308 enum "update" {
309 value 2;
310 description
311 "A TE node or te-link has been updated.";
312 }
313 }
314 description "TE Event type for notifications";
315 } // te-topology-event-type
316 typedef te-topology-id {
317 type string {
318 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
319 }
320 description
321 "An identifier for a topology.";
322 }
323
324 typedef te-tp-id {
325 type union {
326 type uint32; // Unnumbered
327 type inet:ip-address; // IPv4 or IPv6 address
328 }
329 description
330 "An identifier for a TE link endpoint on a node.
331 This attribute is mapped to local or remote link identifier in
332 RFC3630 and RFC5305.";
333 }
334
335 /*
336 * Identities
337 */
338
339 /*
340 * Groupings
341 */
342 grouping information-source-attributes {
343 description
344 "The attributes identifying source that has provided the
345 related information, and the source credibility.";
346 leaf information-source {
347 type enumeration {
348 enum "unknown" {
349 description "The source is unknown.";
350 }
351 enum "locally-configured" {
352 description "Configured entity.";
353 }
354 enum "ospfv2" {
355 description "OSPFv2.";
356 }
357 enum "ospfv3" {
358 description "OSPFv3.";
359 }
360 enum "isis" {
361 description "ISIS.";
362 }
363 enum "system-processed" {
364 description "System processed entity.";
365 }
366 enum "other" {
367 description "Other source.";
368 }
369 }
370 description
371 "Indicates the source of the information.";
372 }
373 container information-source-state {
374 description
375 "The container contains state attributes related to
376 the information source.";
377 leaf credibility-preference {
378 type uint16;
379 description
380 "The preference value to calculate the traffic
381 engineering database credibility value used for
382 tie-break selection between different
383 information-source values.
384 Higher value is more preferable.";
385 }
386 container topology {
387 description
388 "When the information is processed by the system,
389 the attributes in this container indicate which topology
390 is used to process to generate the result information.";
391 uses te-topology-ref;
392 } // topology
393 leaf routing-instance {
394 type string;
395 description
396 "When applicable, this is the name of a routing instance
397 from which the information is learned.";
398 } // routing-information
399 }
400 } // information-source-attributes
401
402 grouping performance-metric-attributes {
403 description
404 "Link performance information in real time.";
405 reference
406 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
407 leaf unidirectional-delay {
408 type uint32 {
409 range 0..16777215;
410 }
411 description "Delay or latency in micro seconds.";
412 }
413 leaf unidirectional-min-delay {
414 type uint32 {
415 range 0..16777215;
416 }
417 description "Minimum delay or latency in micro seconds.";
418 }
419 leaf unidirectional-max-delay {
420 type uint32 {
421 range 0..16777215;
422 }
423 description "Maximum delay or latency in micro seconds.";
424 }
425 leaf unidirectional-delay-variation {
426 type uint32 {
427 range 0..16777215;
428 }
429 description "Delay variation in micro seconds.";
430 }
431 leaf unidirectional-packet-loss {
432 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530433 fraction-digits 6;
434 range "0 .. 50.331642";
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530435 }
436 description
437 "Packet loss as a percentage of the total traffic sent
438 over a configurable interval. The finest precision is
439 0.000003%.";
440 }
441 leaf unidirectional-residual-bandwidth {
442 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530443 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530444 }
445 description
446 "Residual bandwidth that subtracts tunnel
447 reservations from Maximum Bandwidth (or link capacity)
448 [RFC3630] and provides an aggregated remainder across QoS
449 classes.";
450 }
451 leaf unidirectional-available-bandwidth {
452 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530453 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530454 }
455 description
456 "Available bandwidth that is defined to be residual
457 bandwidth minus the measured bandwidth used for the
458 actual forwarding of non-RSVP-TE LSP packets. For a
459 bundled link, available bandwidth is defined to be the
460 sum of the component link available bandwidths.";
461 }
462 leaf unidirectional-utilized-bandwidth {
463 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530464 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530465 }
466 description
467 "Bandwidth utilization that represents the actual
468 utilization of the link (i.e. as measured in the router).
469 For a bundled link, bandwidth utilization is defined to
470 be the sum of the component link bandwidth
471 utilizations.";
472 }
473 } // performance-metric-attributes
474 grouping performance-metric-normality-attributes {
475 description
476 "Link performance metric normality attributes.";
477 reference
478 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
479 leaf unidirectional-delay {
480 type performance-metric-normality;
481 description "Delay normality.";
482 }
483 leaf unidirectional-min-delay {
484 type performance-metric-normality;
485 description "Minimum delay or latency normality.";
486 }
487 leaf unidirectional-max-delay {
488 type performance-metric-normality;
489 description "Maximum delay or latency normality.";
490 }
491 leaf unidirectional-delay-variation {
492 type performance-metric-normality;
493 description "Delay variation normality.";
494 }
495 leaf unidirectional-packet-loss {
496 type performance-metric-normality;
497 description "Packet loss normality.";
498 }
499 leaf unidirectional-residual-bandwidth {
500 type performance-metric-normality;
501 description "Residual bandwidth normality.";
502 }
503 leaf unidirectional-available-bandwidth {
504 type performance-metric-normality;
505 description "Available bandwidth normality.";
506 }
507 leaf unidirectional-utilized-bandwidth {
508 type performance-metric-normality;
509 description "Bandwidth utilization normality.";
510 }
511 } // performance-metric-normality-attributes
512
513 grouping performance-metric-throttle-container {
514 description
515 "A container controlling performance metric throttle.";
516 container performance-metric-throttle {
517 if-feature te-performance-metric;
518 /*must "suppression-interval >= measure-interval" {
519 error-message
520 "suppression-interval cannot be less then
521 measure-interval.";
522 description
523 "Constraint on suppression-interval and
524 measure-interval.";
525 }*/
526 description
527 "Link performance information in real time.";
528 reference
529 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
530 leaf unidirectional-delay-offset {
531 type uint32 {
532 range 0..16777215;
533 }
534 description
535 "Offset value to be added to the measured delay value.";
536 }
537 leaf measure-interval {
538 type uint32;
539 default 30;
540 description
541 "Interval in seconds to measure the extended metric
542 values.";
543 }
544 leaf advertisement-interval {
545 type uint32;
546 description
547 "Interval in seconds to advertise the extended metric
548 values.";
549 }
550 leaf suppression-interval {
551 type uint32 {
552 range "1..max";
553 }
554 default 120;
555 description
556 "Interval in seconds to suppress advertising the extended
557 metric values.";
558 }
559 container threshold-out {
560 uses performance-metric-attributes;
561 description
562 "If the measured parameter falls outside an upper bound
563 for all but the min delay metric (or lower bound for
564 min-delay metric only) and the advertised value is not
565 already outside that bound, anomalous announcement will be
566 triggered.";
567 }
568 container threshold-in {
569 uses performance-metric-attributes;
570 description
571 "If the measured parameter falls inside an upper bound
572 for all but the min delay metric (or lower bound for
573 min-delay metric only) and the advertised value is not
574 already inside that bound, normal (anomalous-flag cleared)
575 announcement will be triggered.";
576 }
577 container threshold-accelerated-advertisement {
578 description
579 "When the difference between the last advertised value and
580 current measured value exceed this threshold, anomalous
581 announcement will be triggered.";
582 uses performance-metric-attributes;
583 }
584 }
585 } // performance-metric-throttle-container
586
587 grouping te-link-augment {
588 description
589 "Augmentation for TE link.";
590
591 container te {
592 presence "TE support.";
593 description
594 "Indicates TE support.";
595
596 container config {
597 description
598 "Configuration data.";
599 uses te-link-config;
600 } // config
601 container state {
602 config false;
603 description
604 "Operational state data.";
605 uses te-link-config;
606 uses te-link-state-derived;
607 } // state
608 } // te
609 } // te-link-augment
610
611 grouping te-link-config {
612 description
613 "TE link configuration grouping.";
614 choice bundle-stack-level {
615 description
616 "The TE link can be partitioned into bundled
617 links, or component links.";
618 case bundle {
619 container bundled-links {
620 description
621 "A set of bundled links.";
622 reference
623 "RFC4201: Link Bundling in MPLS Traffic Engineering
624 (TE).";
625 list bundled-link {
626 key "sequence";
627 description
628 "Specify a bundled interface that is
629 further partitioned.";
630 leaf sequence {
631 type uint32;
632 description
633 "Identify the sequence in the bundle.";
634 }
635 leaf src-tp-ref {
636 type nt:tp-id;
637 description
638 "Reference to another TE termination point on the
639 same souruce node.";
640 }
641 leaf des-tp-ref {
642 type nt:tp-id;
643 description
644 "Reference to another TE termination point on the
645 same destination node.";
646 }
647 } // list bundled-link
648 }
649 }
650 case component {
651 container component-links {
652 description
653 "A set of component links";
654 list component-link {
655 key "sequence";
656 description
657 "Specify a component interface that is
658 sufficient to unambiguously identify the
659 appropriate resources";
660
661 leaf sequence {
662 type uint32;
663 description
664 "Identify the sequence in the bundle.";
665 }
666 leaf src-interface-ref {
667 type string;
668 description
669 "Reference to component link interface on the
670 source node.";
671 }
672 leaf des-interface-ref {
673 type string;
674 description
675 "Reference to component link interface on the
676 destinatioin node.";
677 }
678 }
679 }
680 }
681 } // bundle-stack-level
682
683 leaf-list te-link-template {
684 if-feature template;
685 type te-template-name;
686 description
687 "The reference to a TE link template.";
688 }
689 uses te-link-config-attributes;
690 } // te-link-config
691
692 grouping te-link-config-attributes {
693 description
694 "Link configuration attributes in a TE topology.";
695 container te-link-attributes {
696 description "Link attributes in a TE topology.";
697 uses sch:schedules;
698 leaf access-type {
699 type te-link-access-type;
700 description
701 "Link access type, which can be point-to-point or
702 multi-access.";
703 }
704 leaf is-abstract {
705 type empty;
706 description "Present if the link is abstract.";
707 }
708 leaf name {
709 type string;
710 description "Link Name.";
711 }
712 container underlay {
713 if-feature te-topology-hierarchy;
714 presence
715 "Indicates the underlay exists for this link.";
716 description "Attributes of the te-link underlay.";
717 reference
718 "RFC4206: Label Switched Paths (LSP) Hierarchy with
719 Generalized Multi-Protocol Label Switching (GMPLS)
720 Traffic Engineering (TE)";
721
722 uses te-link-underlay-attributes;
723 } // underlay
724 leaf admin-status {
725 type te-admin-status;
726 description
727 "The administrative state of the link.";
728 }
729
730 uses performance-metric-throttle-container;
731 uses te-link-info-attributes;
732 } // te-link-attributes
733 } // te-link-config-attributes
734
735 grouping te-link-info-attributes {
736 description
737 "Advertised TE information attributes.";
738 leaf link-index {
739 type uint64;
740 description
741 "The link identifier. If OSPF is used, this represents an
742 ospfLsdbID. If IS-IS is used, this represents an isisLSPID.
743 If a locally configured link is used, this object represents
744 a unique value, which is locally defined in a router.";
745 }
746 leaf administrative-group {
747 type te-types:admin-groups;
748 description
749 "Administrative group or color of the link.
750 This attribute covers both administrative group (defined in
751 RFC3630, RFC5329, and RFC5305), and extended administrative
752 group (defined in RFC7308).";
753 }
754 leaf max-link-bandwidth {
755 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530756 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530757 }
758 description
759 "Maximum bandwidth that can be seen on this link in this
760 direction. Units in bytes per second.";
761 reference
762 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
763 Version 2.
764 RFC5305: IS-IS Extensions for Traffic Engineering.";
765 }
766 leaf max-resv-link-bandwidth {
767 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530768 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530769 }
770 description
771 "Maximum amount of bandwidth that can be reserved in this
772 direction in this link. Units in bytes per second.";
773 reference
774 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
775 Version 2.
776 RFC5305: IS-IS Extensions for Traffic Engineering.";
777 }
778 list unreserved-bandwidth {
779 key "priority";
780 max-elements "8";
781 description
782 "Unreserved bandwidth for 0-7 priority levels. Units in
783 bytes per second.";
784 reference
785 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
786 Version 2.
787 RFC5305: IS-IS Extensions for Traffic Engineering.";
788 leaf priority {
789 type uint8 {
790 range "0..7";
791 }
792 description "Priority.";
793 }
794 leaf bandwidth {
795 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530796 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530797 }
798 description
799 "Unreserved bandwidth for this level.";
800 }
801 }
802 leaf te-default-metric {
803 type uint32;
804 description
805 "Traffic Engineering Metric.";
806 }
807 container performance-metric {
808 if-feature te-performance-metric;
809 description
810 "Link performance information in real time.";
811 reference
812 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
813 container measurement {
814 description
815 "Measured performance metric values. Static configuration
816 and manual overrides of these measurements are also
817 allowed.";
818 uses performance-metric-attributes;
819 }
820 container normality
821 {
822 description
823 "Performance metric normality values.";
824 uses performance-metric-normality-attributes;
825 }
826 }
827 leaf link-protection-type {
828 type enumeration {
829 enum "unprotected" {
830 description "Unprotected.";
831 }
832 enum "extra-traffic" {
833 description "Extra traffic.";
834 }
835 enum "shared" {
836 description "Shared.";
837 }
838 enum "1-for-1" {
839 description "One for one protection.";
840 }
841 enum "1-plus-1" {
842 description "One plus one protection.";
843 }
844 enum "enhanced" {
845 description "Enhanced protection.";
846 }
847 }
848 description
849 "Link Protection Type desired for this link.";
850 reference
851 "RFC4202: Routing Extensions in Support of
852 Generalized Multi-Protocol Label Switching (GMPLS).";
853 }
854 list interface-switching-capability {
855 key "switching-capability";
856 description
857 "List of Interface Switching Capabilities Descriptors (ISCD)
858 for this link.";
859 reference
860 "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS)
861 Signaling Functional Description.
862 RFC4203: OSPF Extensions in Support of Generalized
863 Multi-Protocol Label Switching (GMPLS).";
864 leaf switching-capability {
865 type string;
866 description
867 "Switching Capability for this interface.";
868 }
869 leaf encoding {
870 type string;
871 description
872 "Encoding supported by this interface.";
873 }
874 list max-lsp-bandwidth {
875 key "priority";
876 max-elements "8";
877 description
878 "Maximum LSP Bandwidth at priorities 0-7.";
879 leaf priority {
880 type uint8 {
881 range "0..7";
882 }
883 description "Priority.";
884 }
885 leaf bandwidth {
886 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530887 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530888 }
889 description
890 "Max LSP Bandwidth for this level";
891 }
892 }
893 container time-division-multiplex-capable {
894 when "../switching-capability = 'TDM'" {
895 description "Valid only for TDM";
896 }
897 description
898 "Interface has time-division multiplex capabilities.";
899
900 leaf minimum-lsp-bandwidth {
901 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530902 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530903 }
904 description
905 "Minimum LSP Bandwidth. Units in bytes per second.";
906 }
907 leaf indication {
908 type enumeration {
909 enum "standard" {
910 description
911 "Indicates support of standard SONET/SDH.";
912 }
913 enum "arbitrary" {
914 description
915 "Indicates support of arbitrary SONET/SDH.";
916 }
917 }
918 description
919 "Indication whether the interface supports Standard or
920 Arbitrary SONET/SDH";
921 }
922 }
923 list interface-adjustment-capability {
924 key "upper-sc";
925 description
926 "List of Interface Adjustment Capability Descriptors (IACD)
927 for this link.";
928 reference
929 "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions
930 for Multi-Layer and Multi-Region Networks (MLN/MRN).";
931 leaf upper-sc {
932 type string;
933 description
934 "Switching Capability for this interface.";
935 }
936 leaf upper-encoding {
937 type string;
938 description
939 "Encoding supported by this interface.";
940 }
941 list max-lsp-bandwidth {
942 key "priority";
943 max-elements "8";
944 description
945 "Maximum LSP Bandwidth at priorities 0-7.";
946 leaf priority {
947 type uint8 {
948 range "0..7";
949 }
950 description "Priority.";
951 }
952 leaf bandwidth {
953 type decimal64 {
Mahesh Poojary Huawei46fb4db2016-07-14 12:38:17 +0530954 fraction-digits 2;
VinodKumarS-Huawei2ee9e7e2016-06-01 14:30:22 +0530955 }
956 description
957 "Max LSP Bandwidth for this level.";
958 }
959 }
960 } // interface-adjustment-capability
961 } // interface-switching-capability
962 container te-srlgs {
963 description
964 "A list of SLRGs.";
965 leaf-list values {
966 type te-types:srlg;
967 description "SRLG value.";
968 reference
969 "RFC4202: Routing Extensions in Support of
970 Generalized Multi-Protocol Label Switching (GMPLS).";
971 }
972 }
973 } // te-link-info-attributes
974
975 grouping te-link-state-derived {
976 description
977 "Link state attributes in a TE topology.";
978 leaf oper-status {
979 type te-oper-status;
980 description
981 "The current operational state of the link.";
982 }
983 uses information-source-attributes;
984 list alt-information-sources {
985 key "information-source";
986 description
987 "A list of information sources learned but not used.";
988 uses information-source-attributes;
989 uses te-link-info-attributes;
990 }
991 container recovery {
992 description
993 "Status of the recovery process.";
994 leaf restoration-status {
995 type te-recovery-status;
996 description
997 "Restoration status.";
998 }
999 leaf protection-status {
1000 type te-recovery-status;
1001 description
1002 "Protection status.";
1003 }
1004 }
1005 container underlay {
1006 if-feature te-topology-hierarchy;
1007 description "State attributes for te-link underlay.";
1008 uses te-link-state-underlay-attributes;
1009 }
1010 } // te-link-state-derived
1011 grouping te-link-state-underlay-attributes {
1012 description "State attributes for te-link underlay.";
1013 leaf dynamic {
1014 type boolean;
1015 description
1016 "true if the underlay is dynamically created.";
1017 }
1018 leaf committed {
1019 type boolean;
1020 description
1021 "true if the underlay is committed.";
1022 }
1023 } // te-link-state-underlay-attributes
1024
1025 grouping te-link-underlay-attributes {
1026 description "Attributes for te-link underlay.";
1027 reference
1028 "RFC4206: Label Switched Paths (LSP) Hierarchy with
1029 Generalized Multi-Protocol Label Switching (GMPLS)
1030 Traffic Engineering (TE)";
1031 container underlay-primary-path {
1032 description
1033 "The service path on the underlay topology that
1034 supports this link.";
1035 uses te-topology-ref;
1036 list path-element {
1037 key "path-element-id";
1038 description
1039 "A list of path elements describing the service path.";
1040 leaf path-element-id {
1041 type uint32;
1042 description "To identify the element in a path.";
1043 }
1044 uses te-path-element;
1045 }
1046 } // underlay-primary-path
1047 list underlay-backup-path {
1048 key "index";
1049 description
1050 "A list of backup service paths on the underlay topology that
1051 protect the underlay primary path. If the primary path is
1052 not protected, the list contains zero elements. If the
1053 primary path is protected, the list contains one or more
1054 elements.";
1055 leaf index {
1056 type uint32;
1057 description
1058 "A sequence number to identify a backup path.";
1059 }
1060 uses te-topology-ref;
1061 list path-element {
1062 key "path-element-id";
1063 description
1064 "A list of path elements describing the backup service
1065 path";
1066 leaf path-element-id {
1067 type uint32;
1068 description "To identify the element in a path.";
1069 }
1070 uses te-path-element;
1071 }
1072 } // underlay-backup-path
1073 leaf underlay-protection-type {
1074 type uint16;
1075 description
1076 "Underlay protection type desired for this link";
1077 }
1078 container underlay-trail-src {
1079 uses nt:tp-ref;
1080 description
1081 "Source TE link of the underlay trail.";
1082 }
1083 container underlay-trail-des {
1084 uses nt:tp-ref;
1085 description
1086 "Destination TE link of the underlay trail.";
1087 }
1088 } // te-link-underlay-attributes
1089
1090 grouping te-node-augment {
1091 description
1092 "Augmentation for TE node.";
1093
1094 container te {
1095 presence "TE support.";
1096 description
1097 "Indicates TE support.";
1098
1099 leaf te-node-id {
1100 type te-node-id;
1101 mandatory true;
1102 description
1103 "The identifier of a node in the TE topology.
1104 A node is specific to a topology to which it belongs.";
1105 }
1106
1107 container config {
1108 description
1109 "Configuration data.";
1110 uses te-node-config;
1111 } // config
1112 container state {
1113 config false;
1114 description
1115 "Operational state data.";
1116
1117 uses te-node-config;
1118 uses te-node-state-derived;
1119 } // state
1120
1121 list tunnel-termination-point {
1122 key "tunnel-tp-id";
1123 description
1124 "A termination point can terminate a tunnel.";
1125 leaf tunnel-tp-id {
1126 type binary;
1127 description
1128 "Tunnel termination point identifier.";
1129 }
1130 container config {
1131 description
1132 "Configuration data.";
1133 uses te-node-tunnel-termination-capability;
1134 }
1135
1136 container state {
1137 config false;
1138 description
1139 "Operational state data.";
1140
1141 uses te-node-tunnel-termination-capability;
1142 leaf switching-capability {
1143 type string;
1144 mandatory true;
1145 description
1146 "Switching Capability.";
1147 }
1148 leaf encoding {
1149 type string;
1150 mandatory true;
1151 description
1152 "Encoding type.";
1153 }
1154 } // state
1155
1156 } // tunnel-termination-point
1157 } // te
1158 } // te-node-augment
1159
1160 grouping te-node-config {
1161 description "TE node configuration grouping.";
1162
1163 leaf-list te-node-template {
1164 if-feature template;
1165 type te-template-name;
1166 description
1167 "The reference to a TE node template.";
1168 }
1169 uses te-node-config-attributes;
1170 } // te-node-config
1171
1172 grouping te-node-config-attributes {
1173 description "Configuration node attributes in a TE topology.";
1174 container te-node-attributes {
1175 description "Containing node attributes in a TE topology.";
1176 uses sch:schedules;
1177 leaf admin-status {
1178 type te-admin-status;
1179 description
1180 "The administrative state of the link.";
1181 }
1182 uses te-node-connectivity-matrix;
1183 uses te-node-info-attributes;
1184 } // te-node-attributes
1185 } // te-node-config-attributes
1186
1187 grouping te-node-config-attributes-notification {
1188 description
1189 "Configuration node attributes for template in a TE topology.";
1190 container te-node-attributes {
1191 description "Containing node attributes in a TE topology.";
1192 uses sch:schedules;
1193 leaf admin-status {
1194 type te-admin-status;
1195 description
1196 "The administrative state of the link.";
1197 }
1198 uses te-node-connectivity-matrix-abs;
1199 uses te-node-info-attributes;
1200 } // te-node-attributes
1201 } // te-node-config-attributes-notification
1202
1203 grouping te-node-config-attributes-template {
1204 description
1205 "Configuration node attributes for template in a TE topology.";
1206 container te-node-attributes {
1207 description "Containing node attributes in a TE topology.";
1208 uses sch:schedules;
1209 leaf admin-status {
1210 type te-admin-status;
1211 description
1212 "The administrative state of the link.";
1213 }
1214 uses te-node-info-attributes;
1215 } // te-node-attributes
1216 } // te-node-config-attributes-template
1217
1218 grouping te-node-connectivity-matrix {
1219 description "Connectivity matrix on a TE node.";
1220 list connectivity-matrix {
1221 key "id";
1222 description
1223 "Represents node's switching limitations, i.e. limitations
1224 in interconnecting network TE links across the node.";
1225 reference
1226 "RFC7579: General Network Element Constraint Encoding
1227 for GMPLS-Controlled Networks.";
1228 leaf id {
1229 type uint32;
1230 description "Identifies the connectivity-matrix entry.";
1231 }
1232 container from {
1233 leaf tp-ref {
1234 type nt:tp-id;
1235 description
1236 "Relative reference to source termination point.";
1237 }
1238 description
1239 "Reference to source NTP.";
1240 }
1241 container to {
1242 leaf tp-ref {
1243 type nt:tp-id;
1244 description
1245 "Relative reference to destination termination point.";
1246 }
1247 description
1248 "Reference to destination NTP.";
1249 }
1250 leaf is-allowed {
1251 type boolean;
1252 description
1253 "true - switching is allowed,
1254 false - switching is disallowed.";
1255 }
1256 }
1257 } // te-node-connectivity-matrix
1258
1259 grouping te-node-connectivity-matrix-abs {
1260 description
1261 "Connectivity matrix on a TE node, using absolute
1262 paths to reference termination points.";
1263 list connectivity-matrix {
1264 key "id";
1265 description
1266 "Represents node's switching limitations, i.e. limitations
1267 in interconnecting network TE links across the node.";
1268 reference
1269 "RFC7579: General Network Element Constraint Encoding
1270 for GMPLS-Controlled Networks.";
1271 leaf id {
1272 type uint32;
1273 description "Identifies the connectivity-matrix entry.";
1274 }
1275 container from {
1276 uses nt:tp-ref;
1277 description
1278 "Reference to source NTP.";
1279 }
1280 container to {
1281 uses nt:tp-ref;
1282 description
1283 "Reference to destination NTP.";
1284 }
1285 leaf is-allowed {
1286 type boolean;
1287 description
1288 "true - switching is allowed,
1289 false - switching is disallowed.";
1290 }
1291 }
1292 } // te-node-connectivity-matrix-abs
1293
1294 grouping te-node-info-attributes {
1295 description
1296 "Advertised TE information attributes.";
1297 leaf domain-id {
1298 type uint32;
1299 description
1300 "Identifies the domain that this node belongs.
1301 This attribute is used to support inter-domain links.";
1302 reference
1303 "RFC5152: A Per-Domain Path Computation Method for
1304 Establishing Inter-Domain Traffic Engineering (TE)
1305 Label Switched Paths (LSPs).
1306 RFC5392: OSPF Extensions in Support of Inter-Autonomous
1307 System (AS) MPLS and GMPLS Traffic Engineering.
1308 RFC5316: ISIS Extensions in Support of Inter-Autonomous
1309 System (AS) MPLS and GMPLS Traffic Engineering.";
1310 }
1311 leaf is-abstract {
1312 type empty;
1313 description
1314 "Present if the node is abstract, not present if the node
1315 is actual.";
1316 }
1317 leaf name {
1318 type inet:domain-name;
1319 description "Node name.";
1320 }
1321 leaf-list signaling-address {
1322 type inet:ip-address;
1323 description "Node signaling address.";
1324 }
1325 container underlay-topology {
1326 if-feature te-topology-hierarchy;
1327 description
1328 "When an abstract node encapsulates a topology,
1329 the attributes in this container point to said topology.";
1330 uses te-topology-ref;
1331 }
1332 } // te-node-info-attributes
1333
1334 grouping te-node-state-derived {
1335 description "Node state attributes in a TE topology.";
1336 leaf oper-status {
1337 type te-oper-status;
1338 description
1339 "The current operational state of the node.";
1340 }
1341 leaf is-multi-access-dr {
1342 type empty;
1343 description
1344 "The presence of this attribute indicates that this TE node
1345 is a pseudonode elected as a designated router.";
1346 reference
1347 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
1348 Version 2.
1349 RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
1350 Environments.";
1351 }
1352 uses information-source-attributes;
1353 list alt-information-sources {
1354 key "information-source";
1355 description
1356 "A list of information sources learned but not used.";
1357 uses information-source-attributes;
1358 uses te-node-connectivity-matrix;
1359 uses te-node-info-attributes;
1360 }
1361 } // te-node-state-derived
1362
1363 grouping te-node-state-derived-notification {
1364 description "Node state attributes in a TE topology.";
1365 leaf oper-status {
1366 type te-oper-status;
1367 description
1368 "The current operational state of the node.";
1369 }
1370 leaf is-multi-access-dr {
1371 type empty;
1372 description
1373 "The presence of this attribute indicates that this TE node
1374 is a pseudonode elected as a designated router.";
1375 reference
1376 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
1377 Version 2.
1378 RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
1379 Environments.";
1380 }
1381 uses information-source-attributes;
1382 list alt-information-sources {
1383 key "information-source";
1384 description
1385 "A list of information sources learned but not used.";
1386 uses information-source-attributes;
1387 uses te-node-connectivity-matrix-abs;
1388 uses te-node-info-attributes;
1389 }
1390 } // te-node-state-derived-notification
1391
1392 grouping te-node-tunnel-termination-capability {
1393 description
1394 "Termination capability of a tunnel termination point on a
1395 TE node.";
1396
1397 list termination-capability {
1398 key "link-tp";
1399 description
1400 "The termination capabilities between
1401 tunnel-termination-point and link termination-point.
1402 The capability information can be used to compute
1403 the tunnel path.";
1404 leaf link-tp {
1405 type nt:tp-id;
1406 description
1407 "Link termination point.";
1408 }
1409 } // termination-capability
1410 } // te-node-tunnel-termination-capability
1411
1412 grouping te-path-element {
1413 description
1414 "A group of attributes defining an element in a TE path
1415 such as TE node, TE link, TE atomic resource or label.";
1416 uses te-types:explicit-route-subobject;
1417 } // te-path-element
1418
1419 grouping te-termination-point-augment {
1420 description
1421 "Augmentation for TE termination point.";
1422
1423 container te {
1424 presence "TE support.";
1425 description
1426 "Indicates TE support.";
1427
1428 leaf te-tp-id {
1429 type te-tp-id;
1430 mandatory true;
1431 description
1432 "An identifier to uniquely identify a TE termination
1433 point.";
1434 }
1435
1436 container config {
1437 description
1438 "Configuration data.";
1439 uses te-termination-point-config;
1440 } // config
1441 container state {
1442 config false;
1443 description
1444 "Operational state data.";
1445 uses te-termination-point-config;
1446 } // state
1447 } // te
1448 } // te-termination-point-augment
1449
1450 grouping te-termination-point-config {
1451 description
1452 "TE termination point configuration grouping.";
1453 uses sch:schedules;
1454 } // te-termination-point-config
1455
1456 grouping te-topologies-augment {
1457 description
1458 "Augmentation for TE topologies.";
1459
1460 container te {
1461 presence "TE support.";
1462 description
1463 "Indicates TE support.";
1464
1465 container templates {
1466 description
1467 "Configuration parameters for templates used for TE
1468 topology.";
1469
1470 list node-template {
1471 if-feature template;
1472 key "name";
1473 leaf name {
1474 type te-template-name;
1475 description
1476 "The name to identify a TE node template.";
1477 }
1478 description
1479 "The list of TE node templates used to define sharable
1480 and reusable TE node attributes.";
1481 uses template-attributes;
1482 uses te-node-config-attributes-template;
1483 } // node-template
1484
1485 list link-template {
1486 if-feature template;
1487 key "name";
1488 leaf name {
1489 type te-template-name;
1490 description
1491 "The name to identify a TE link template.";
1492 }
1493 description
1494 "The list of TE link templates used to define sharable
1495 and reusable TE link attributes.";
1496 uses template-attributes;
1497 uses te-link-config-attributes;
1498 } // link-template
1499 } // templates
1500 } // te
1501 } // te-topologies-augment
1502
1503 grouping te-topology-augment {
1504 description
1505 "Augmentation for TE topology.";
1506
1507 container te {
1508 presence "TE support.";
1509 description
1510 "Indicates TE support.";
1511
1512 leaf provider-id {
1513 type te-global-id;
1514 mandatory true;
1515 description
1516 "An identifier to uniquely identify a provider.";
1517 }
1518 leaf client-id {
1519 type te-global-id;
1520 mandatory true;
1521 description
1522 "An identifier to uniquely identify a client.";
1523 }
1524 leaf te-topology-id {
1525 type te-topology-id;
1526 mandatory true;
1527 description
1528 "It is presumed that a datastore will contain many
1529 topologies. To distinguish between topologies it is
1530 vital to have UNIQUE topology identifiers.";
1531 }
1532
1533 container config {
1534 description
1535 "Configuration data.";
1536 uses te-topology-config;
1537 } // config
1538 container state {
1539 config false;
1540 description
1541 "Operational state data.";
1542 uses te-topology-config;
1543 } // state
1544 } // te
1545 } // te-topology-augment
1546
1547 grouping te-topology-config {
1548 description
1549 "TE topology configuration grouping.";
1550 uses sch:schedules;
1551 leaf preference {
1552 type uint8 {
1553 range "1..255";
1554 }
1555 description
1556 "Specifies a preference for this topology. A lower number
1557 indicates a higher preference.";
1558 }
1559 } // te-topology-config
1560
1561 grouping te-topology-ref {
1562 description
1563 "References a TE topology.";
1564 leaf provider-id-ref {
1565 type te-global-id;
1566 description
1567 "A reference to a provider-id.";
1568 }
1569 leaf client-id-ref {
1570 type te-global-id;
1571 description
1572 "A reference to a client-id.";
1573 }
1574 leaf te-topology-id-ref {
1575 type tet:te-topology-id;
1576 description
1577 "A reference to a te-topology-id.";
1578 }
1579 leaf network-id-ref {
1580 type nw:network-id;
1581 description
1582 "A reference to a network-id in base ietf-network module.";
1583 }
1584 } // te-topology-ref
1585
1586 grouping te-topology-type {
1587 description
1588 "Identifies the TE topology type.";
1589 container te-topology {
1590 presence "Indicates TE topology.";
1591 description
1592 "Its presence identifies the TE topology type.";
1593 }
1594 } // te-topology-type
1595
1596 grouping template-attributes {
1597 description
1598 "Common attributes for all templates.";
1599
1600 leaf priority {
1601 type uint16;
1602 description
1603 "The preference value to resolve conflicts between different
1604 templates. When two or more templates specify values for
1605 one configuration attribute, the value from the template
1606 with the highest priority is used.";
1607 }
1608 leaf reference-change-policy {
1609 type enumeration {
1610 enum no-action {
1611 description
1612 "When an attribute changes in this template, the
1613 configuration node referring to this template does
1614 not take any action.";
1615 }
1616 enum not-allowed {
1617 description
1618 "When any configuration object has a reference to this
1619 template, changing this template is not allowed.";
1620 }
1621 enum cascade {
1622 description
1623 "When an attribute changes in this template, the
1624 configuration object referring to this template applies
1625 the new attribute value to the corresponding
1626 configuration.";
1627 }
1628 }
1629 description
1630 "This attribute specifies the action taken to a configuration
1631 node that has a reference to this template.";
1632 }
1633 } // template-attributes
1634
1635 /*
1636 * Configuration data nodes
1637 */
1638 augment "/nw:networks/nw:network/nw:network-types" {
1639 description
1640 "Introduce new network type for TE topology.";
1641 uses te-topology-type;
1642 }
1643
1644 augment "/nw:networks" {
1645 description
1646 "Augmentation parameters for TE topologies.";
1647 uses te-topologies-augment;
1648 }
1649
1650 augment "/nw:networks/nw:network" {
1651 when "nw:network-types/te-topology" {
1652 description
1653 "Augmentation parameters apply only for networks with
1654 TE topology type.";
1655 }
1656 description
1657 "Configuration parameters for TE topology.";
1658 uses te-topology-augment;
1659 }
1660
1661 augment "/nw:networks/nw:network/nw:node" {
1662 when "../nw:network-types/te-topology" {
1663 description
1664 "Augmentation parameters apply only for networks with
1665 TE topology type.";
1666 }
1667 description
1668 "Configuration parameters for TE at node level.";
1669 uses te-node-augment;
1670 }
1671
1672 augment "/nw:networks/nw:network/nt:link" {
1673 when "../nw:network-types/te-topology" {
1674 description
1675 "Augmentation parameters apply only for networks with
1676 TE topology type.";
1677 }
1678 description
1679 "Configuration parameters for TE at link level";
1680 uses te-link-augment;
1681 }
1682
1683 augment "/nw:networks/nw:network/nw:node/"
1684 + "nt:termination-point" {
1685 when "../../nw:network-types/te-topology" {
1686 description
1687 "Augmentation parameters apply only for networks with
1688 TE topology type.";
1689 }
1690 description
1691 "Configuration parameters for TE at termination point level";
1692 uses te-termination-point-augment;
1693 }
1694
1695 /*
1696 * Operational state data nodes
1697 */
1698
1699 /*
1700 * Notifications
1701 */
1702 notification te-node-event {
1703 description "Notification event for TE node.";
1704 leaf event-type {
1705 type te-topology-event-type;
1706 description "Event type.";
1707 }
1708 uses nw:node-ref;
1709 uses te-topology-type;
1710 uses tet:te-node-config-attributes-notification;
1711 uses tet:te-node-state-derived-notification;
1712 }
1713
1714 notification te-link-event {
1715 description "Notification event for TE link.";
1716 leaf event-type {
1717 type te-topology-event-type;
1718 description "Event type";
1719 }
1720 uses nt:link-ref;
1721 uses te-topology-type;
1722 uses tet:te-link-config-attributes;
1723 uses tet:te-link-state-derived;
1724 }
1725
1726 augment "/te-link-event/te-link-attributes/underlay" {
1727 description "Add state attributes to te-link underlay.";
1728 uses te-link-state-underlay-attributes;
1729 }
1730 }