3 namespace "urn:opendaylight:params:xml:ns:yang:pcep:types";
6 import ieee754 { prefix ieee754; revision-date 2013-08-19; }
7 import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
8 import network-concepts { prefix netc; revision-date 2013-11-25; }
9 import rsvp { prefix rsvp; revision-date 2015-08-20; }
10 import iana { prefix iana; revision-date 2013-08-16; }
12 organization "Cisco Systems, Inc.";
13 contact "Robert Varga <rovarga@cisco.com>";
16 "This module contains the base data model of a PCEP message.
17 It rolls up the definitions contained in RFC5440, RFC7896, RFC5520
20 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
22 This program and the accompanying materials are made available
23 under the terms of the Eclipse Public License v1.0 which
24 accompanies this distribution, and is available at
25 http://www.eclipse.org/legal/epl-v10.html";
27 revision "2018-11-09" {
33 revision "2013-10-05" {
39 // NOTE: this model uses counts bits in fields from left to right,
40 // just as IANA does for PCEP protocol.
43 typedef protocol-version {
59 grouping vendor-information {
60 description "VENDOR-INFORMATION format";
61 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-4";
63 leaf enterprise-number {
64 type iana:enterprise-number;
67 choice enterprise-specific-information {
73 description "Marker grouping for TLV groupings.";
76 grouping no-path-vector-tlv {
77 description "NO-PATH-VECTOR TLV";
78 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
83 bit p2mp-unreachable {
89 bit no-gco-migration {
93 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
96 bit chain-unavailable {
102 bit unknown-destination {
105 bit pce-unavailable {
113 grouping overload-duration-tlv {
114 description "OVERLOAD-DURATION TLV";
115 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
116 container overload-duration {
125 grouping req-missing-tlv {
126 description "REQ-MISSING TLV";
127 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
128 container req-missing {
136 grouping of-list-tlv {
137 description "OF-List TLV";
138 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
148 description "Order TLV";
149 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
165 description "Vendor-specific TLV.";
168 description "This model is obsolete, please use vendor-information-tlvs instead";
172 leaf enterprise-number {
173 type iana:enterprise-number;
176 choice vendor-payload {
181 grouping path-setup-type-tlv {
182 description "PATH-SETUP-TYPE TLV";
183 reference "https://tools.ietf.org/html/draft-ietf-pce-lsp-setup-type-00#section-3";
185 container path-setup-type {
188 description "PST=0: Path is setup via RSVP-TE signaling protocol(default).";
196 grouping object-header {
197 description "Common Object Header";
198 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
200 leaf processing-rule {
212 description "Core object structure with optional TLVs";
216 grouping vendor-information-tlvs {
217 list vendor-information-tlv {
218 description "VENDOR-INFORMATION-TLV";
219 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-3";
221 uses vendor-information;
225 grouping vendor-information-objects {
226 list vendor-information-object {
227 description "VENDOR-INFORMATION-OBJECT";
228 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-2";
230 uses vendor-information;
234 grouping open-object {
235 description "OPEN Object";
236 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
242 uses vendor-information-tlvs;
246 type protocol-version;
271 description "RP Object";
272 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
277 uses vendor-information-tlvs;
278 uses path-setup-type-tlv;
292 leaf reoptimization {
297 leaf bi-directional {
310 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
316 reference "https://tools.ietf.org/html/rfc8306#section-3.3.1";
322 reference "https://tools.ietf.org/html/rfc8306#section-3.3.1";
325 leaf ero-compression {
328 reference "https://tools.ietf.org/html/rfc8306#section-3.3.1";
334 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
340 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
343 leaf make-before-break {
346 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
351 grouping no-path-object {
352 description "NO-PATH Object";
353 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
357 leaf nature-of-issue {
362 leaf unsatisfied-constraints {
363 when "nature-of-issue = 0" {
365 "The C flag has no meaning
366 and is ignored unless the NI
367 field is set to 0x00.";
374 typedef p2mp-leaves {
375 reference "https://tools.ietf.org/html/rfc8306#section-3.3.2";
376 description "Types of leaves in a P2MP request.";
378 enum new-leaves-to-add {
381 enum old-leaves-to-remove {
384 enum old-leaves-path-modified-reoptimized {
387 enum old-leaves-path-unchanged {
393 grouping p2mp-leaves-leaf {
400 grouping endpoints-ipv4-source {
401 leaf source-ipv4-address {
402 type inet:ipv4-address-no-zone;
407 grouping endpoints-ipv6-source {
408 leaf source-ipv6-address {
409 type inet:ipv6-address-no-zone;
414 grouping ipv6-destinations {
415 leaf-list destination-ipv6-address {
416 type inet:ipv6-address-no-zone;
421 grouping ipv4-destinations {
422 leaf-list destination-ipv4-address {
423 type inet:ipv4-address-no-zone;
429 choice address-family {
434 uses endpoints-ipv4-source;
435 leaf destination-ipv4-address {
436 type inet:ipv4-address-no-zone;
443 uses endpoints-ipv6-source;
444 leaf destination-ipv6-address {
445 type inet:ipv6-address-no-zone;
450 case p2mp-ipv4-case {
451 container p2mp-ipv4 {
452 uses p2mp-leaves-leaf;
453 uses endpoints-ipv4-source;
454 uses ipv4-destinations;
457 case p2mp-ipv6-case {
458 container p2mp-ipv6 {
459 uses p2mp-leaves-leaf;
460 uses endpoints-ipv6-source;
461 uses ipv6-destinations;
467 grouping endpoints-object {
468 description "END-POINTS Object";
469 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
471 container endpoints-obj {
479 // No possibility of TLVs
486 uses rsvp:ip-prefix-subobject;
491 grouping branch-node-object {
492 description "Branch Node Object";
493 reference "https://tools.ietf.org/html/rfc8306#section-3.11.1";
495 container branch-node-list {
500 grouping non-branch-node-object {
501 description "Branch Node Object";
502 reference "https://tools.ietf.org/html/rfc8306#section-3.11.1";
504 container non-branch-node-list {
509 grouping bnc-object {
510 choice branch-node-type {
511 case branch-node-case {
512 uses branch-node-object;
514 case non-branch-node-case {
515 uses non-branch-node-object;
521 // No possibility to carry TLVs
527 grouping bandwidth-object {
528 description "BANDWIDTH Object";
529 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
530 container bandwidth {
536 grouping reoptimization-bandwidth-object {
537 description "BANDWIDTH Object";
538 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
539 container reoptimization-bandwidth {
545 grouping metric-object {
546 description "METRIC Object";
547 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
567 type ieee754:float32;
572 grouping exclude-route-object {
573 description "Exclude Route Object";
574 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
589 uses rsvp:exclude-route-subobjects;
595 grouping explicit-route-object {
596 description "Explicit Route Object";
597 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
600 // No possibility of TLVs
609 uses rsvp:explicit-route-subobjects;
615 grouping secondary-explicit-route-object {
616 description "Secondary Explicit Route Object";
617 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
619 // No possibility of TLVs
628 uses rsvp:secondary-explicit-route-subobjects;
634 grouping include-route-object {
635 description "Include Route Object";
636 reference "https://tools.ietf.org/html/rfc7896#section-2.1";
639 // No possibility of TLVs
648 uses rsvp:explicit-route-subobjects;
654 grouping reported-route-object {
655 description "Reported Route Object";
656 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
659 // No possibility of TLVs
663 uses rsvp:record-route-subobjects;
669 grouping secondary-reported-route-object {
670 description "Reported Route Object";
671 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
674 // No possibility of TLVs
678 uses rsvp:secondary-record-route-subobjects;
684 grouping lspa-object {
685 description "LSPA Object";
686 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
690 uses rsvp:tunnel-attributes;
692 uses vendor-information-tlvs;
697 grouping svec-object {
698 description "Synchronization Vector Object";
699 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
702 // No possibility of TLVs
720 leaf partial-path-diverse {
725 leaf link-direction-diverse {
730 leaf-list requests-ids {
736 grouping notification-object {
737 description "NOTIFICATION Object";
738 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
739 container c-notification {
742 when "../type = 2 and ../value = 1";
744 uses overload-duration-tlv;
745 uses vendor-information-tlvs;
760 grouping pcep-error-object {
761 description "PCEP-ERROR Object";
762 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
763 container error-object {
767 uses req-missing-tlv;
768 uses vendor-information-tlvs;
783 grouping load-balancing-object {
784 description "LOAD-BALANCING Object";
785 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
787 container load-balancing {
788 // No possibility of TLVs
802 grouping close-object {
803 description "CLOSE Object";
804 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
815 uses vendor-information-tlvs;
822 grouping path-key-object {
823 description "PATH-KEY Object";
824 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
836 uses rsvp:path-key-subobject;
843 description "OF Object";
844 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
854 uses vendor-information-tlvs;
859 grouping monitoring-object {
860 description "The MONITORING object is used to specify the
861 set of requested PCEP state metrics.";
862 reference "https://tools.ietf.org/html/rfc5886#section-4.1";
863 container monitoring {
869 description "Indicates that PCE cannot provide any of
870 the set of requested performance metrics for unspecified reasons.";
874 description "Indicates that the overload status is
875 a metric of interest.";
878 bit processing-time {
879 description "Indicates that the processing times is
880 a metric of interest.";
884 description "Indicates that the monitoring
885 request is a general monitoring request.";
889 description "Indicates that the state metric
890 of interest is the PCE's liveness.";
897 description "The Monitoring-id-number combined with
898 the PCC-REQ-ID identifying the requesting PCC uniquely
899 identifies the monitoring request context.";
905 description "Optional TLV(s).";
906 uses vendor-information-tlvs;
911 grouping pcc-id-req-object {
912 description "The PCC-ID-REQ object is used to specify the IP
913 address of the requesting PCC.";
914 reference "https://tools.ietf.org/html/rfc5886#section-4.2";
915 container pcc-id-req {
918 type inet:ip-address-no-zone;
923 grouping pce-id-object {
924 description "The PCE-ID object is used to specify a PCE's IP address.";
925 reference "https://tools.ietf.org/html/rfc5886#section-4.3";
929 type inet:ip-address-no-zone;
934 grouping proc-time-object {
935 description "The PROC-TIME object is used to report various processing time
937 reference "https://tools.ietf.org/html/rfc5886#section-4.4";
938 container proc-time {
942 description "Indicates that the reported metric value is
943 based on estimated processing time as opposed to
944 actual computations.";
949 leaf current-proc-time {
950 description "Indicates, in milliseconds, the
951 processing time for the path computation of interest
952 characterized in the corresponding PCMonReq message.";
957 description "The minimum processing time in milliseconds";
963 description "The maximum processing time in milliseconds";
968 leaf average-proc-time {
969 description "The average processing time in milliseconds";
974 leaf variance-proc-time {
975 description "The variance of processing times in milliseconds";
982 grouping overload-object {
983 description "The OVERLOAD object is used to report a PCE processing
985 reference "https://tools.ietf.org/html/rfc5886#section-4.5";
989 description "This field indicates the amount of time,
990 in seconds, that the responding PCE expects that it may continue to
991 be overloaded from the time that the response message was generated.";
1004 grouping classtype-object {
1005 description "CLASSTYPE Object";
1006 reference "https://tools.ietf.org/html/rfc5455#section-3";
1008 container class-type {
1018 grouping gc-object {
1019 description "GLOBAL CONSTRAINTS (GC) Object";
1020 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
1029 leaf max-utilization {
1037 leaf min-utilization {
1045 leaf over-booking-factor {
1054 uses vendor-information-tlvs;
1061 description "Marker grouping for message groupings.";
1064 grouping message-header {
1065 description "Common Header";
1066 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
1069 type protocol-version;
1074 grouping open-message {
1077 container open-message {
1078 description "Open Message";
1079 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
1081 uses message-header;
1087 grouping keepalive-message {
1090 container keepalive-message {
1091 description "Keepalive Message";
1092 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
1094 uses message-header;
1098 grouping lsp-attributes {
1101 uses bandwidth-object;
1102 uses reoptimization-bandwidth-object;
1107 uses include-route-object;
1109 uses reported-route-object;
1111 uses exclude-route-object;
1115 uses classtype-object;
1118 grouping pcreq-message {
1121 container pcreq-message {
1122 description "Path Computation Request Message";
1123 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1125 uses message-header;
1130 container path-key-expansion {
1131 when "rp/path-key = true";
1132 uses path-key-object;
1135 container segment-computation {
1136 when "rp/path-key = false";
1139 when "../rp/p2mp = false";
1141 uses endpoints-object;
1143 container reported-route {
1144 uses reported-route-object;
1146 uses reoptimization-bandwidth-object;
1149 uses vendor-information-objects;
1151 uses load-balancing-object;
1153 uses lsp-attributes;
1157 uses vendor-information-objects;
1167 uses exclude-route-object;
1173 uses vendor-information-objects;
1176 container monitoring-request {
1186 grouping path-definition {
1187 uses explicit-route-object;
1189 uses lsp-attributes;
1192 grouping monitoring {
1193 uses monitoring-object;
1194 uses pcc-id-req-object;
1197 grouping monitoring-metrics {
1200 uses proc-time-object;
1201 uses overload-object;
1205 grouping monitoring-response {
1207 choice monitoring-metrics-list {
1208 case specific-metrics-list {
1209 list specific-metrics {
1211 uses monitoring-metrics;
1215 case general-metrics-list {
1216 uses monitoring-metrics;
1221 grouping pcmonrep-message {
1222 description "The PCMonRep message is used to provide PCE
1223 state metrics back to the requester for out-of-band monitoring requests.";
1224 reference "https://tools.ietf.org/html/rfc5886#section-9.2";
1227 container pcmonrep-message {
1228 uses monitoring-response;
1232 grouping pcrep-message {
1235 container pcrep-message {
1236 description "Path Computation Reply Message";
1237 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1239 uses message-header;
1243 uses vendor-information-objects;
1245 uses monitoring-metrics;
1251 uses path-definition;
1253 uses vendor-information-objects;
1258 uses no-path-object;
1260 uses vendor-information-tlvs;
1261 container no-path-vector {
1262 uses no-path-vector-tlv;
1266 uses lsp-attributes;
1273 grouping pcntf-message {
1276 container pcntf-message {
1277 description "Notification Message";
1278 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1280 uses message-header;
1282 list notifications {
1287 list notifications {
1288 uses notification-object;
1294 grouping pcerr-message {
1297 container pcerr-message {
1298 description "Error Message";
1299 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1301 uses message-header;
1304 uses pcep-error-object;
1325 grouping close-message {
1328 container c-close-message {
1329 description "Close Message";
1330 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1332 uses message-header;
1338 grouping start-tls-message {
1341 container start-tls-message {
1342 description "StartTLS Message";
1343 reference "https://tools.ietf.org/html/draft-ietf-pce-pceps-02#section-3.3";
1345 uses message-header;