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;
520 grouping unreach-destination-object {
521 description "UNREACH-DESTINATION Object";
522 reference "https://tools.ietf.org/html/rfc8306#section-3.14";
524 container unreach-destination-obj {
528 case ipv4-destination-case {
529 uses ipv4-destinations;
531 case ipv6-destination-case {
532 uses ipv6-destinations;
539 // No possibility to carry TLVs
545 grouping bandwidth-object {
546 description "BANDWIDTH Object";
547 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
548 container bandwidth {
554 grouping reoptimization-bandwidth-object {
555 description "BANDWIDTH Object";
556 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
557 container reoptimization-bandwidth {
563 grouping metric-object {
564 description "METRIC Object";
565 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
585 type ieee754:float32;
590 grouping exclude-route-object {
591 description "Exclude Route Object";
592 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
607 uses rsvp:exclude-route-subobjects;
613 grouping explicit-route-object {
614 description "Explicit Route Object";
615 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
618 // No possibility of TLVs
627 uses rsvp:explicit-route-subobjects;
633 grouping secondary-explicit-route-object {
634 description "Secondary Explicit Route Object";
635 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
637 // No possibility of TLVs
646 uses rsvp:secondary-explicit-route-subobjects;
652 grouping include-route-object {
653 description "Include Route Object";
654 reference "https://tools.ietf.org/html/rfc7896#section-2.1";
657 // No possibility of TLVs
666 uses rsvp:explicit-route-subobjects;
672 grouping reported-route-object {
673 description "Reported Route Object";
674 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
677 // No possibility of TLVs
681 uses rsvp:record-route-subobjects;
687 grouping secondary-reported-route-object {
688 description "Reported Route Object";
689 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
692 // No possibility of TLVs
696 uses rsvp:secondary-record-route-subobjects;
702 grouping lspa-object {
703 description "LSPA Object";
704 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
708 uses rsvp:tunnel-attributes;
710 uses vendor-information-tlvs;
715 grouping svec-object {
716 description "Synchronization Vector Object";
717 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
720 // No possibility of TLVs
738 leaf partial-path-diverse {
743 leaf link-direction-diverse {
748 leaf-list requests-ids {
754 grouping notification-object {
755 description "NOTIFICATION Object";
756 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
757 container c-notification {
760 when "../type = 2 and ../value = 1";
762 uses overload-duration-tlv;
763 uses vendor-information-tlvs;
778 grouping pcep-error-object {
779 description "PCEP-ERROR Object";
780 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
781 container error-object {
785 uses req-missing-tlv;
786 uses vendor-information-tlvs;
801 grouping load-balancing-object {
802 description "LOAD-BALANCING Object";
803 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
805 container load-balancing {
806 // No possibility of TLVs
820 grouping close-object {
821 description "CLOSE Object";
822 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
833 uses vendor-information-tlvs;
840 grouping path-key-object {
841 description "PATH-KEY Object";
842 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
854 uses rsvp:path-key-subobject;
861 description "OF Object";
862 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
872 uses vendor-information-tlvs;
877 grouping monitoring-object {
878 description "The MONITORING object is used to specify the
879 set of requested PCEP state metrics.";
880 reference "https://tools.ietf.org/html/rfc5886#section-4.1";
881 container monitoring {
887 description "Indicates that PCE cannot provide any of
888 the set of requested performance metrics for unspecified reasons.";
892 description "Indicates that the overload status is
893 a metric of interest.";
896 bit processing-time {
897 description "Indicates that the processing times is
898 a metric of interest.";
902 description "Indicates that the monitoring
903 request is a general monitoring request.";
907 description "Indicates that the state metric
908 of interest is the PCE's liveness.";
915 description "The Monitoring-id-number combined with
916 the PCC-REQ-ID identifying the requesting PCC uniquely
917 identifies the monitoring request context.";
923 description "Optional TLV(s).";
924 uses vendor-information-tlvs;
929 grouping pcc-id-req-object {
930 description "The PCC-ID-REQ object is used to specify the IP
931 address of the requesting PCC.";
932 reference "https://tools.ietf.org/html/rfc5886#section-4.2";
933 container pcc-id-req {
936 type inet:ip-address-no-zone;
941 grouping pce-id-object {
942 description "The PCE-ID object is used to specify a PCE's IP address.";
943 reference "https://tools.ietf.org/html/rfc5886#section-4.3";
947 type inet:ip-address-no-zone;
952 grouping proc-time-object {
953 description "The PROC-TIME object is used to report various processing time
955 reference "https://tools.ietf.org/html/rfc5886#section-4.4";
956 container proc-time {
960 description "Indicates that the reported metric value is
961 based on estimated processing time as opposed to
962 actual computations.";
967 leaf current-proc-time {
968 description "Indicates, in milliseconds, the
969 processing time for the path computation of interest
970 characterized in the corresponding PCMonReq message.";
975 description "The minimum processing time in milliseconds";
981 description "The maximum processing time in milliseconds";
986 leaf average-proc-time {
987 description "The average processing time in milliseconds";
992 leaf variance-proc-time {
993 description "The variance of processing times in milliseconds";
1000 grouping overload-object {
1001 description "The OVERLOAD object is used to report a PCE processing
1003 reference "https://tools.ietf.org/html/rfc5886#section-4.5";
1004 container overload {
1007 description "This field indicates the amount of time,
1008 in seconds, that the responding PCE expects that it may continue to
1009 be overloaded from the time that the response message was generated.";
1016 typedef class-type {
1022 grouping classtype-object {
1023 description "CLASSTYPE Object";
1024 reference "https://tools.ietf.org/html/rfc5455#section-3";
1026 container class-type {
1036 grouping gc-object {
1037 description "GLOBAL CONSTRAINTS (GC) Object";
1038 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
1047 leaf max-utilization {
1055 leaf min-utilization {
1063 leaf over-booking-factor {
1072 uses vendor-information-tlvs;
1079 description "Marker grouping for message groupings.";
1082 grouping message-header {
1083 description "Common Header";
1084 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
1087 type protocol-version;
1092 grouping open-message {
1095 container open-message {
1096 description "Open Message";
1097 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
1099 uses message-header;
1105 grouping keepalive-message {
1108 container keepalive-message {
1109 description "Keepalive Message";
1110 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
1112 uses message-header;
1116 grouping lsp-attributes {
1119 uses bandwidth-object;
1120 uses reoptimization-bandwidth-object;
1125 uses include-route-object;
1127 uses reported-route-object;
1129 uses exclude-route-object;
1133 uses classtype-object;
1136 grouping pcreq-message {
1139 container pcreq-message {
1140 description "Path Computation Request Message";
1141 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1143 uses message-header;
1148 container path-key-expansion {
1149 when "rp/path-key = true";
1150 uses path-key-object;
1153 container segment-computation {
1154 when "rp/path-key = false";
1157 when "../rp/p2mp = false";
1159 uses endpoints-object;
1161 container reported-route {
1162 uses reported-route-object;
1164 uses reoptimization-bandwidth-object;
1167 uses vendor-information-objects;
1169 uses load-balancing-object;
1171 uses lsp-attributes;
1175 when "../rp/p2mp = true";
1177 reference "https://tools.ietf.org/html/rfc8306#section-3.4";
1179 list endpoint-rro-pair {
1180 uses endpoints-object;
1183 choice route-object {
1184 case reported-route-object-case {
1185 uses reported-route-object;
1187 case secondary-reported-route-object-case {
1188 uses secondary-reported-route-object;
1193 uses reoptimization-bandwidth-object;
1202 uses bandwidth-object;
1208 choice iro-bnc-choice {
1210 uses include-route-object;
1217 uses load-balancing-object;
1221 uses vendor-information-objects;
1231 uses exclude-route-object;
1237 uses vendor-information-objects;
1240 container monitoring-request {
1250 grouping path-definition {
1251 uses explicit-route-object;
1253 uses lsp-attributes;
1256 grouping monitoring {
1257 uses monitoring-object;
1258 uses pcc-id-req-object;
1261 grouping monitoring-metrics {
1264 uses proc-time-object;
1265 uses overload-object;
1269 grouping monitoring-response {
1271 choice monitoring-metrics-list {
1272 case specific-metrics-list {
1273 list specific-metrics {
1275 uses monitoring-metrics;
1279 case general-metrics-list {
1280 uses monitoring-metrics;
1285 grouping pcmonrep-message {
1286 description "The PCMonRep message is used to provide PCE
1287 state metrics back to the requester for out-of-band monitoring requests.";
1288 reference "https://tools.ietf.org/html/rfc5886#section-9.2";
1291 container pcmonrep-message {
1292 uses monitoring-response;
1296 grouping pcrep-message {
1299 container pcrep-message {
1300 description "Path Computation Reply Message";
1301 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1303 uses message-header;
1307 uses vendor-information-objects;
1309 uses monitoring-metrics;
1315 uses path-definition;
1317 uses vendor-information-objects;
1322 uses no-path-object;
1324 uses vendor-information-tlvs;
1325 container no-path-vector {
1326 uses no-path-vector-tlv;
1330 uses lsp-attributes;
1337 grouping pcntf-message {
1340 container pcntf-message {
1341 description "Notification Message";
1342 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1344 uses message-header;
1346 list notifications {
1351 list notifications {
1352 uses notification-object;
1358 grouping pcerr-message {
1361 container pcerr-message {
1362 description "Error Message";
1363 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1365 uses message-header;
1368 uses pcep-error-object;
1389 grouping close-message {
1392 container c-close-message {
1393 description "Close Message";
1394 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1396 uses message-header;
1402 grouping start-tls-message {
1405 container start-tls-message {
1406 description "StartTLS Message";
1407 reference "https://tools.ietf.org/html/draft-ietf-pce-pceps-02#section-3.3";
1409 uses message-header;