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