blob: 7feb012da22b67aabc3b990427e98ad0d25e722c [file] [log] [blame]
Thomas Vachuska8ca75a22017-08-24 16:12:59 -07001submodule openconfig-mpls-te {
2
3 yang-version "1";
4
5 belongs-to "openconfig-mpls" {
6 prefix "oc-mpls";
7 }
8
9
10 // import some basic types
11 import openconfig-inet-types { prefix inet; }
12 import openconfig-mpls-rsvp { prefix oc-rsvp; }
13 import openconfig-mpls-sr { prefix oc-sr; }
14 import openconfig-mpls-types {prefix oc-mplst; }
15 import openconfig-types { prefix oc-types; }
16 import openconfig-yang-types { prefix yang; }
17 import openconfig-extensions { prefix oc-ext; }
18
19
20 // meta
21 organization "OpenConfig working group";
22
23 contact
24 "OpenConfig working group
25 netopenconfig@googlegroups.com";
26
27 description
28 "Configuration related to constrained-path LSPs and traffic
29 engineering. These definitions are not specific to a particular
30 signaling protocol or mechanism (see related submodules for
31 signaling protocol-specific configuration).";
32
33 oc-ext:openconfig-version "2.4.0";
34
35 revision "2017-06-21" {
36 description
37 "Add TC bits typedef.";
38 reference "2.4.0";
39 }
40
41 revision "2017-03-22" {
42 description
43 "Add RSVP calculated-absolute-subscription-bw";
44 reference "2.3.0";
45 }
46
47 revision "2017-01-26" {
48 description
49 "Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
50 reference "2.2.0";
51 }
52
53 revision "2016-12-15" {
54 description
55 "Add additional MPLS parameters";
56 reference "2.1.0";
57 }
58
59 revision "2016-09-01" {
60 description
61 "Revisions based on implementation feedback";
62 reference "2.0.0";
63 }
64
65 revision "2016-08-08" {
66 description
67 "Public release of MPLS models";
68 reference "1.0.1";
69 }
70
71 // typedef statements
72
73 typedef te-bandwidth-type {
74 type enumeration {
75 enum SPECIFIED {
76 description
77 "Bandwidth is explicitly specified";
78 }
79 enum AUTO {
80 description
81 "Bandwidth is automatically computed";
82 }
83 }
84 description
85 "enumerated type for specifying whether bandwidth is
86 explicitly specified or automatically computed";
87 }
88
89 typedef mpls-srlg-flooding-type {
90 type enumeration {
91 enum FLOODED_SRLG {
92 description
93 "SRLG is flooded in the IGP";
94 }
95 enum STATIC_SRLG {
96 description
97 "SRLG is not flooded, the members are
98 statically configured";
99 }
100 }
101 description
102 "Enumerated bype for specifying how the SRLG is flooded";
103 }
104
105 typedef mpls-hop-type {
106 type enumeration {
107 enum LOOSE {
108 description
109 "loose hop in an explicit path";
110 }
111 enum STRICT {
112 description
113 "strict hop in an explicit path";
114 }
115 }
116 description
117 "enumerated type for specifying loose or strict
118 paths";
119 }
120
121 typedef te-metric-type {
122 type union {
123 type enumeration {
124 enum IGP {
125 description
126 "set the LSP metric to track the underlying
127 IGP metric";
128 }
129 }
130 type uint32;
131 }
132 description
133 "union type for setting the LSP TE metric to a
134 static value, or to track the IGP metric";
135 }
136
137 typedef cspf-tie-breaking {
138 type enumeration {
139 enum RANDOM {
140 description
141 "CSPF calculation selects a random path among
142 multiple equal-cost paths to the destination";
143 }
144 enum LEAST_FILL {
145 description
146 "CSPF calculation selects the path with greatest
147 available bandwidth";
148 }
149 enum MOST_FILL {
150 description
151 "CSPF calculation selects the path with the least
152 available bandwidth";
153 }
154 }
155 default RANDOM;
156 description
157 "type to indicate the CSPF selection policy when
158 multiple equal cost paths are available";
159 }
160
161
162 // grouping statements
163
164 grouping te-tunnel-reoptimize_config {
165 description
166 "Definition for reoptimize timer configuration";
167
168 leaf reoptimize-timer {
169 type uint16;
170 units seconds;
171 description
172 "frequency of reoptimization of
173 a traffic engineered LSP";
174 }
175 }
176
177
178 grouping te-lsp-auto-bandwidth_config {
179 description
180 "Configuration parameters related to autobandwidth";
181
182 leaf enabled {
183 type boolean;
184 default false;
185 description
186 "enables mpls auto-bandwidth on the
187 lsp";
188 }
189
190 leaf min-bw {
191 type oc-mplst:bandwidth-kbps;
192 description
193 "set the minimum bandwidth in Kbps for an
194 auto-bandwidth LSP";
195 }
196
197 leaf max-bw {
198 type oc-mplst:bandwidth-kbps;
199 description
200 "set the maximum bandwidth in Kbps for an
201 auto-bandwidth LSP";
202 }
203
204 leaf adjust-interval {
205 type uint32;
206 description
207 "time in seconds between adjustments to
208 LSP bandwidth";
209 }
210
211 leaf adjust-threshold {
212 type oc-types:percentage;
213 description
214 "percentage difference between the LSP's
215 specified bandwidth and its current bandwidth
216 allocation -- if the difference is greater than the
217 specified percentage, auto-bandwidth adjustment is
218 triggered";
219 }
220 }
221
222 grouping te-lsp-overflow_config {
223 description
224 "configuration for mpls lsp bandwidth
225 overflow adjustment";
226
227 leaf enabled {
228 type boolean;
229 default false;
230 description
231 "enables mpls lsp bandwidth overflow
232 adjustment on the lsp";
233 }
234
235 leaf overflow-threshold {
236 type oc-types:percentage;
237 description
238 "bandwidth percentage change to trigger
239 an overflow event";
240
241 }
242
243 leaf trigger-event-count {
244 type uint16;
245 description
246 "number of consecutive overflow sample
247 events needed to trigger an overflow adjustment";
248 }
249 }
250
251 grouping te-lsp-underflow_config {
252 description
253 "configuration for mpls lsp bandwidth
254 underflow adjustment";
255
256 leaf enabled {
257 type boolean;
258 default false;
259 description
260 "enables bandwidth underflow
261 adjustment on the lsp";
262 }
263
264 leaf underflow-threshold {
265 type oc-types:percentage;
266 description
267 "bandwidth percentage change to trigger
268 and underflow event";
269 }
270
271 leaf trigger-event-count {
272 type uint16;
273 description
274 "number of consecutive underflow sample
275 events needed to trigger an underflow adjustment";
276 }
277 }
278
279 grouping te-path-placement-constraints-config {
280 description
281 "Configuration data for link affinities";
282
283 leaf-list exclude-group {
284 type leafref {
285 path "../../../../../../../../../../te-global-attributes" +
286 "/mpls-admin-groups/admin-group/admin-group-name";
287 }
288 description
289 "list of references to named admin-groups to exclude in
290 path calculation.";
291 }
292
293 leaf-list include-all-group {
294 type leafref {
295 path "../../../../../../../../../../te-global-attributes" +
296 "/mpls-admin-groups/admin-group/admin-group-name";
297 }
298 description
299 "list of references to named admin-groups of which all must
300 be included";
301 }
302
303 leaf-list include-any-group {
304 type leafref {
305 path "../../../../../../../../../../te-global-attributes" +
306 "/mpls-admin-groups/admin-group/admin-group-name";
307 }
308 description
309 "list of references to named admin-groups of which one must
310 be included";
311 }
312 }
313
314 grouping te-path-placement-constraints-state {
315 description
316 "Operational state data for link affinities";
317 //TODO: currently a placeholder
318 }
319
320 grouping te-path-placement-constraints-top {
321 description
322 "Top-level grouping ";
323
324 container admin-groups {
325 description
326 "Top-level container for include/exclude constraints for
327 link affinities";
328
329 container config {
330 description
331 "Configuration data ";
332
333 uses te-path-placement-constraints-config;
334 }
335
336 container state {
337 config false;
338
339 description
340 "Operational state data ";
341
342 uses te-path-placement-constraints-config;
343 uses te-path-placement-constraints-state;
344 }
345 }
346 }
347
348 grouping te-tunnel-protection_config {
349 description
350 "Configuration parameters related to LSP
351 protection";
352 leaf protection-style-requested {
353 type identityref {
354 base oc-mplst:PROTECTION_TYPE;
355 }
356 default oc-mplst:UNPROTECTED;
357 description
358 "style of mpls frr protection desired: can be
359 link, link-node or unprotected.";
360 }
361 }
362
363 grouping explicit-route-subobject-config {
364 description
365 "The explicit route subobject grouping";
366
367 leaf address {
368 type inet:ip-address;
369 description
370 "router hop for the LSP path";
371 }
372
373 leaf hop-type {
374 type mpls-hop-type;
375 description
376 "strict or loose hop";
377 }
378
379 leaf index {
380 type uint8 {
381 range "0..255";
382 }
383 description
384 "Index of this explicit route object to express
385 the order of hops in the path";
386 }
387
388 }
389
390 grouping named-explicit-path-config {
391 description
392 "Configuration parameters relating to a named
393 explicit path";
394
395 leaf name {
396 type string;
397 description
398 "A string name that uniquely identifies an explicit
399 path";
400 }
401 }
402
403 // Explicit paths config somewhat following the IETF model
404 grouping explicit-paths_top {
405 description
406 "Top level global explicit path configuration
407 grouping";
408
409 container named-explicit-paths {
410 description
411 "Enclosing container for the named explicit paths";
412 list named-explicit-path {
413 key "name";
414 description
415 "A list of explicit paths";
416
417 leaf name {
418 type leafref {
419 path "../config/name";
420 }
421 description
422 "A string name that uniquely identifies
423 an explicit path";
424 }
425
426 container config {
427 description
428 "Configuration parameters relating to named explicit
429 paths";
430 uses named-explicit-path-config;
431 uses oc-sr:sr-path-attributes_config;
432 }
433
434 container state {
435 config false;
436 description
437 "Operational state parameters relating to the named
438 explicit paths";
439 uses named-explicit-path-config;
440 uses oc-sr:sr-path-attributes_config;
441 }
442
443 container explicit-route-objects {
444 description
445 "Enclosing container for EROs";
446
447 list explicit-route-object {
448 key "index";
449 description
450 "List of explicit route objects";
451
452 leaf index {
453 type leafref {
454 path "../config/index";
455 }
456
457 description
458 "Index of this explicit route object,
459 to express the order of hops in path";
460 }
461
462 container config {
463 description
464 "Configuration parameters relating to an explicit
465 route";
466 uses explicit-route-subobject-config;
467 }
468
469
470 container state {
471 config false;
472 description
473 "State parameters relating to an explicit route";
474 uses explicit-route-subobject-config;
475 }
476 }
477 }
478 }
479 }
480 }
481
482 grouping mpls-te-srlg_config {
483 description
484 "Configuration of various attributes associated
485 with the SRLG";
486
487 leaf name {
488 type string;
489 description
490 "SRLG group identifier";
491 }
492
493 leaf value {
494 type uint32;
495 description
496 "group ID for the SRLG";
497 }
498
499 leaf cost {
500 type uint32;
501 description
502 "The cost of the SRLG to the computation
503 algorithm";
504 }
505
506 leaf flooding-type {
507 type mpls-srlg-flooding-type;
508 default FLOODED_SRLG;
509 description
510 "The type of SRLG, either flooded in the IGP or
511 statically configured";
512 }
513 }
514
515 grouping mpls-te-srlg-members_config {
516 description
517 "Configuration of the membership of the SRLG";
518
519 leaf from-address {
520 type inet:ip-address;
521 description
522 "IP address of the a-side of the SRLG link";
523 }
524
525 leaf to-address {
526 type inet:ip-address;
527 description
528 "IP address of the z-side of the SRLG link";
529 }
530 }
531
532 grouping mpls-te-srlg-top {
533 description
534 "Top level grouping for MPLS shared
535 risk link groups.";
536
537 container srlgs {
538 description
539 "Shared risk link groups attributes";
540 list srlg {
541 key "name";
542 description
543 "List of shared risk link groups";
544
545 leaf name {
546 type leafref {
547 path "../config/name";
548 // Requires YANG 1.1
549 //require-instance true;
550 }
551 description
552 "The SRLG group identifier";
553 }
554
555 container config {
556 description
557 "Configuration parameters related to the SRLG";
558 uses mpls-te-srlg_config;
559 }
560
561 container state {
562 config false;
563 description
564 "State parameters related to the SRLG";
565 uses mpls-te-srlg_config;
566 }
567
568 container static-srlg-members {
569 when "../config/flooding-type = 'STATIC_SRLG'" {
570 description
571 "Include this container for static
572 SRLG specific configuration";
573 }
574 description
575 "SRLG members for static (not flooded) SRLGs ";
576
577 list members-list {
578 key "from-address";
579 description
580 "List of SRLG members, which are expressed
581 as IP address endpoints of links contained in the
582 SRLG";
583
584 leaf from-address {
585 type leafref {
586 path "../config/from-address";
587 // Requires YANG 1.1
588 //require-instance true;
589 }
590 description
591 "The from address of the link in the SRLG";
592 }
593
594 container config {
595 description
596 "Configuration parameters relating to the
597 SRLG members";
598 uses mpls-te-srlg-members_config;
599 }
600
601 container state {
602 config false;
603 description
604 "State parameters relating to the SRLG
605 members";
606 uses mpls-te-srlg-members_config;
607 }
608 }
609 }
610 }
611 }
612 }
613
614 grouping te-global-tunnel_config {
615 description
616 "Configuration parameters relevant to a single
617 traffic engineered tunnel.";
618
619 leaf name {
620 type string;
621 description
622 "The tunnel name";
623 }
624
625 leaf type {
626 type identityref {
627 base oc-mplst:TUNNEL_TYPE;
628 }
629 description
630 "Tunnel type, p2p or p2mp";
631 }
632
633 leaf signaling-protocol {
634 type identityref {
635 base oc-mplst:PATH_SETUP_PROTOCOL;
636 }
637 description
638 "Signaling protocol used to set up this tunnel";
639 }
640
641 leaf description {
642 type string;
643 description
644 "optional text description for the tunnel";
645 }
646
647 leaf admin-status {
648 type identityref {
649 base oc-mplst:TUNNEL_ADMIN_STATUS;
650 }
651 default oc-mplst:ADMIN_UP;
652 description
653 "TE tunnel administrative state.";
654 }
655
656 leaf preference {
657 type uint8 {
658 range "1..255";
659 }
660 description
661 "Specifies a preference for this tunnel.
662 A lower number signifies a better preference";
663 }
664
665 leaf metric-type {
666 type identityref {
667 base oc-mplst:LSP_METRIC_TYPE;
668 }
669 default oc-mplst:LSP_METRIC_INHERITED;
670 description
671 "The type of metric specification that should be used to set
672 the LSP(s) metric";
673 }
674
675 leaf metric {
676 type int32;
677 description
678 "The value of the metric that should be specified. The value
679 supplied in this leaf is used in conjunction with the metric
680 type to determine the value of the metric used by the system.
681 Where the metric-type is set to LSP_METRIC_ABSOLUTE - the
682 value of this leaf is used directly; where it is set to
683 LSP_METRIC_RELATIVE, the relevant (positive or negative)
684 offset is used to formulate the metric; where metric-type
685 is LSP_METRIC_INHERITED, the value of this leaf is not
686 utilised";
687 }
688
689 leaf shortcut-eligible {
690 type boolean;
691 default "true";
692 description
693 "Whether this LSP is considered to be eligible for us as a
694 shortcut in the IGP. In the case that this leaf is set to
695 true, the IGP SPF calculation uses the metric specified to
696 determine whether traffic should be carried over this LSP";
697 }
698
699 leaf protection-style-requested {
700 type identityref {
701 base oc-mplst:PROTECTION_TYPE;
702 }
703 default oc-mplst:UNPROTECTED;
704 description
705 "style of mpls frr protection desired: can be
706 link, link-node or unprotected.";
707 }
708
709 uses te-tunnel-reoptimize_config;
710 uses oc-rsvp:rsvp-p2p-tunnel-attributes_config;
711
712 }
713
714 grouping tunnel-p2p-attributes_config {
715 description
716 "Configuration related to p2p LSPs";
717 leaf destination {
718 type inet:ip-address;
719 description
720 "P2P tunnel destination address";
721 }
722 }
723
724 grouping p2p-path_state {
725 description
726 "Operational state parameters for p2p paths";
727
728 leaf associated-rsvp-session {
729 type leafref {
730 path "../../../../../../../../../signaling-protocols/" +
731 "rsvp-te/sessions/session/local-index";
732 }
733 description
734 "If the signalling protocol specified for this path is
735 RSVP-TE, this leaf provides a reference to the associated
736 session within the RSVP-TE protocol sessions list, such
737 that details of the signaling can be retrieved.";
738 }
739 }
740
741 grouping p2p-path_config {
742 description
743 "Configuration parameters for p2p paths";
744
745 leaf name {
746 type string;
747 description
748 "Path name";
749 }
750
751 leaf path-computation-method {
752 type identityref {
753 base oc-mplst:PATH_COMPUTATION_METHOD;
754 }
755 default oc-mplst:LOCALLY_COMPUTED;
756 description
757 "The method used for computing the path, either
758 locally computed, queried from a server or not
759 computed at all (explicitly configured).";
760 }
761
762 leaf use-cspf {
763 when "../path-computation-method = 'LOCALLY_COMPUTED'" {
764 description
765 "The use of cspf when the path-computation method is
766 local computation";
767 }
768 type boolean;
769 description
770 "Flag to enable CSPF for locally computed LSPs";
771 }
772
773 leaf cspf-tiebreaker {
774 when "../path-computation-method = 'LOCALLY_COMPUTED'" {
775 description
776 "The cspf tiebreaking method when the path is
777 locally computed";
778 }
779 type cspf-tie-breaking;
780 description
781 "Determine the tie-breaking method to choose between
782 equally desirable paths during CSFP computation";
783 }
784
785
786 leaf path-computation-server {
787 when "../path-computation-method = 'EXTERNALLY_QUERIED'" {
788 description
789 "The path-computation server when the path is
790 externally queried";
791 }
792 type inet:ip-address;
793 description
794 "Address of the external path computation
795 server";
796 }
797
798 leaf explicit-path-name {
799 when "../path-computation-method = 'EXPLICITLY_DEFINED'" {
800 description
801 "The name of the explicitly defined path used";
802 }
803
804 type leafref {
805 path "../../../../../../../"
806 + "named-explicit-paths/named-explicit-path/"
807 + "config/name";
808 // Requires YANG 1.1
809 //require-instance true;
810 }
811 description
812 "reference to a defined path";
813 }
814
815 leaf preference {
816 type uint8 {
817 range "1..255";
818 }
819 description
820 "Specifies a preference for this path. The lower the
821 number higher the preference";
822 }
823
824 uses oc-rsvp:rsvp-p2p-path-attributes_config;
825 }
826
827
828 grouping te-tunnel-p2p_top {
829 description
830 "Top level grouping for p2p configuration";
831
832 container p2p-tunnel-attributes {
833 when "../config/type = 'P2P'" {
834 description
835 "Include this container for LSPs of type P2P";
836 }
837 description
838 "Parameters related to LSPs of type P2P";
839
840 container config {
841 description
842 "Configuration parameters for P2P LSPs";
843 uses tunnel-p2p-attributes_config;
844 }
845
846 container state {
847 config false;
848 description
849 "State parameters for P2P LSPs";
850 uses tunnel-p2p-attributes_config;
851 }
852
853 uses p2p-primary-paths_top;
854 uses p2p-secondary-paths_top;
855 }
856 }
857
858
859 grouping te-tunnel_state {
860 description
861 "Counters and statistical data relevent to a single
862 tunnel.";
863
864 leaf oper-status {
865 type identityref {
866 base oc-mplst:LSP_OPER_STATUS;
867 }
868 description
869 "The operational status of the TE tunnel";
870 }
871
872 leaf role {
873 type identityref {
874 base oc-mplst:LSP_ROLE;
875 }
876 description
877 "The lsp role at the current node, whether it is headend,
878 transit or tailend.";
879 }
880
881 container counters {
882 description
883 "State data for MPLS label switched paths. This state
884 data is specific to a single label switched path.";
885
886 leaf bytes {
887 type yang:counter64;
888 description
889 "Number of bytes that have been forwarded over the
890 label switched path.";
891 }
892
893 leaf packets {
894 type yang:counter64;
895 description
896 "Number of pacets that have been forwarded over the
897 label switched path.";
898 }
899
900 leaf path-changes {
901 type yang:counter64;
902 description
903 "Number of path changes for the label switched path";
904 }
905
906 leaf state-changes {
907 type yang:counter64;
908 description
909 "Number of state changes for the label switched path";
910 }
911
912 leaf online-time {
913 type yang:date-and-time;
914 description
915 "Indication of the time the label switched path
916 transitioned to an Oper Up or in-service state";
917 }
918
919 leaf current-path-time {
920 type yang:date-and-time;
921 description
922 "Indicates the time the LSP switched onto its
923 current path. This is reset upon a LSP path
924 change.";
925 }
926
927 leaf next-reoptimization-time {
928 type yang:date-and-time;
929 description
930 "Indicates the next scheduled time the LSP
931 will be reoptimized.";
932 }
933 }
934 }
935
936 grouping te-tunnel-bandwidth_config {
937 description
938 "Configuration parameters related to bandwidth for a tunnel";
939
940 leaf specification-type {
941 type te-bandwidth-type;
942 default SPECIFIED;
943 description
944 "The method used for settign the bandwidth, either explicitly
945 specified or configured";
946 }
947
948 leaf set-bandwidth {
949 when "../specification-type = 'SPECIFIED'" {
950 description
951 "The bandwidth value when bandwidth is explicitly
952 specified";
953 }
954 type oc-mplst:bandwidth-kbps;
955 description
956 "set bandwidth explicitly, e.g., using
957 offline calculation";
958 }
959 }
960
961 grouping te-tunnel-bandwidth_state {
962 description
963 "Operational state parameters relating to bandwidth for a tunnel";
964
965 leaf signaled-bandwidth {
966 type oc-mplst:bandwidth-kbps;
967 description
968 "The currently signaled bandwidth of the LSP. In the case where
969 the bandwidth is specified explicitly, then this will match the
970 value of the set-bandwidth leaf; in cases where the bandwidth is
971 dynamically computed by the system, the current value of the
972 bandwidth should be reflected.";
973 }
974 }
975
976 grouping te-tunnel-bandwidth_top {
977 description
978 "Top level grouping for specifying bandwidth for a tunnel";
979
980 container bandwidth {
981 description
982 "Bandwidth configuration for TE LSPs";
983
984 container config {
985 description
986 "Configuration parameters related to bandwidth on TE
987 tunnels:";
988 uses te-tunnel-bandwidth_config;
989 }
990
991 container state {
992 config false;
993 description
994 "State parameters related to bandwidth
995 configuration of TE tunnels";
996 uses te-tunnel-bandwidth_config;
997 uses te-tunnel-bandwidth_state;
998 }
999
1000 container auto-bandwidth {
1001 when "../config/specification-type = 'AUTO'" {
1002 description
1003 "Include this container for auto bandwidth
1004 specific configuration";
1005 }
1006 description
1007 "Parameters related to auto-bandwidth";
1008
1009 container config {
1010 description
1011 "Configuration parameters relating to MPLS
1012 auto-bandwidth on the tunnel.";
1013 uses te-lsp-auto-bandwidth_config;
1014 }
1015
1016 container state {
1017 config false;
1018 description
1019 "State parameters relating to MPLS
1020 auto-bandwidth on the tunnel.";
1021 uses te-lsp-auto-bandwidth_config;
1022 }
1023
1024 container overflow {
1025 description
1026 "configuration of MPLS overflow bandwidth
1027 adjustement for the LSP";
1028
1029 container config {
1030 description
1031 "Config information for MPLS overflow bandwidth
1032 adjustment";
1033 uses te-lsp-overflow_config;
1034 }
1035
1036 container state {
1037 config false;
1038 description
1039 "Config information for MPLS overflow bandwidth
1040 adjustment";
1041 uses te-lsp-overflow_config;
1042 }
1043 }
1044
1045 container underflow {
1046 description
1047 "configuration of MPLS underflow bandwidth
1048 adjustement for the LSP";
1049
1050 container config {
1051 description
1052 "Config information for MPLS underflow bandwidth
1053 adjustment";
1054 uses te-lsp-underflow_config;
1055 }
1056
1057 container state {
1058 config false;
1059 description
1060 "State information for MPLS underflow bandwidth
1061 adjustment";
1062 uses te-lsp-underflow_config;
1063 }
1064 }
1065 }
1066 }
1067 }
1068
1069 grouping p2p-path-candidate-secondary-path-config {
1070 description
1071 "Configuration parameters relating to a secondary path which
1072 is a candidate for a particular primary path";
1073
1074 leaf secondary-path {
1075 type leafref {
1076 path "../../../../../../p2p-secondary-paths/" +
1077 "p2p-secondary-path/config/name";
1078 }
1079 description
1080 "A reference to the secondary path that should be utilised
1081 when the containing primary path option is in use";
1082 }
1083
1084 leaf priority {
1085 type uint16;
1086 description
1087 "The priority of the specified secondary path option. Higher
1088 priority options are less preferable - such that a secondary
1089 path reference with a priority of 0 is the most preferred";
1090 }
1091 }
1092
1093 grouping p2p-path-candidate-secondary-path-state {
1094 description
1095 "Operational state parameters relating to a secondary path
1096 which is a candidate for a particular primary path";
1097
1098 leaf active {
1099 type boolean;
1100 description
1101 "Indicates the current active path option that has
1102 been selected of the candidate secondary paths";
1103 }
1104 }
1105
1106 grouping p2p-primary-paths_top {
1107 description
1108 "Top level grouping for p2p primary paths";
1109
1110 container p2p-primary-path {
1111 description
1112 "Primary paths associated with the LSP";
1113
1114 list p2p-primary-path {
1115 key "name";
1116 description
1117 "List of p2p primary paths for a tunnel";
1118
1119 leaf name {
1120 type leafref {
1121 path "../config/name";
1122 // Requires YANG 1.1
1123 //require-instance true;
1124 }
1125 description
1126 "Path name";
1127 }
1128
1129 container config {
1130 description
1131 "Configuration parameters related to paths";
1132 uses p2p-path_config;
1133 }
1134
1135 container state {
1136 config false;
1137 description
1138 "State parameters related to paths";
1139 uses p2p-path_config;
1140 uses p2p-path_state;
1141 }
1142
1143 container candidate-secondary-paths {
1144 description
1145 "The set of candidate secondary paths which may be used
1146 for this primary path. When secondary paths are specified
1147 in the list the path of the secondary LSP in use must be
1148 restricted to those path options referenced. The
1149 priority of the secondary paths is specified within the
1150 list. Higher priority values are less preferred - that is
1151 to say that a path with priority 0 is the most preferred
1152 path. In the case that the list is empty, any secondary
1153 path option may be utilised when the current primary path
1154 is in use.";
1155
1156 list candidate-secondary-path {
1157 key "secondary-path";
1158
1159 description
1160 "List of secondary paths which may be utilised when the
1161 current primary path is in use";
1162
1163 leaf secondary-path {
1164 type leafref {
1165 path "../config/secondary-path";
1166 }
1167 description
1168 "A reference to the secondary path option reference
1169 which acts as the key of the candidate-secondary-path
1170 list";
1171 }
1172
1173 container config {
1174 description
1175 "Configuration parameters relating to the candidate
1176 secondary path";
1177
1178 uses p2p-path-candidate-secondary-path-config;
1179 }
1180
1181 container state {
1182 config false;
1183 description
1184 "Operational state parameters relating to the candidate
1185 secondary path";
1186
1187 uses p2p-path-candidate-secondary-path-config;
1188 uses p2p-path-candidate-secondary-path-state;
1189 }
1190 }
1191 }
1192
1193 uses te-path-placement-constraints-top;
1194
1195 }
1196 }
1197 }
1198
1199 grouping p2p-secondary-paths_top {
1200 description
1201 "Top level grouping for p2p secondary paths";
1202
1203 container p2p-secondary-paths {
1204 description
1205 "Secondary paths for the LSP";
1206
1207 list p2p-secondary-path {
1208 key "name";
1209 description
1210 "List of p2p primary paths for a tunnel";
1211
1212 leaf name {
1213 type leafref {
1214 path "../config/name";
1215 // Requires YANG 1.1
1216 //require-instance true;
1217 }
1218 description
1219 "Path name";
1220 }
1221
1222 container config {
1223 description
1224 "Configuration parameters related to paths";
1225 uses p2p-path_config;
1226 }
1227
1228 container state {
1229 config false;
1230 description
1231 "State parameters related to paths";
1232 uses p2p-path_config;
1233 uses p2p-path_state;
1234 }
1235
1236 uses te-path-placement-constraints-top;
1237 }
1238 }
1239 }
1240
1241 grouping te-tunnels_top {
1242 description
1243 "Top level grouping for TE tunnels";
1244
1245 container tunnels {
1246 description
1247 "Enclosing container for tunnels";
1248 list tunnel {
1249 key "name";
1250 description
1251 "List of TE tunnels. This list contains only the LSPs that the
1252 current device originates (i.e., for which it is the head-end).
1253 Where the signaling protocol utilised for an LSP allows a mid-point
1254 or tail device to be aware of the LSP (e.g., RSVP-TE), then the
1255 associated sessions are maintained per protocol";
1256
1257 leaf name {
1258 type leafref {
1259 path "../config/name";
1260 // Requires YANG 1.1
1261 //require-instance true;
1262 }
1263 description
1264 "The tunnel name";
1265 }
1266
1267 container config {
1268 description
1269 "Configuration parameters related to TE tunnels:";
1270 uses te-global-tunnel_config;
1271 }
1272
1273 container state {
1274 config false;
1275 description
1276 "State parameters related to TE tunnels";
1277 uses te-global-tunnel_config;
1278 uses te-tunnel_state;
1279
1280 }
1281
1282 uses te-tunnel-bandwidth_top;
1283 uses te-tunnel-p2p_top;
1284 // TODO - add the p2mp configuration
1285 }
1286 }
1287 }
1288
1289// data definition statements
1290
1291// augment statements
1292
1293// rpc statements
1294
1295// notification statements
1296
1297}