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 "2013-10-05" {
33 // NOTE: this model uses counts bits in fields from left to right,
34 // just as IANA does for PCEP protocol.
37 typedef protocol-version {
53 grouping vendor-information {
54 description "VENDOR-INFORMATION format";
55 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-4";
57 leaf enterprise-number {
58 type iana:enterprise-number;
61 choice enterprise-specific-information {
67 description "Marker grouping for TLV groupings.";
70 grouping no-path-vector-tlv {
71 description "NO-PATH-VECTOR TLV";
72 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
77 bit p2mp-unreachable {
83 bit no-gco-migration {
87 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
90 bit chain-unavailable {
96 bit unknown-destination {
107 grouping overload-duration-tlv {
108 description "OVERLOAD-DURATION TLV";
109 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
110 container overload-duration {
119 grouping req-missing-tlv {
120 description "REQ-MISSING TLV";
121 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
122 container req-missing {
130 grouping of-list-tlv {
131 description "OF-List TLV";
132 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
142 description "Order TLV";
143 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
159 description "Vendor-specific TLV.";
162 description "This model is obsolete, please use vendor-information-tlvs instead";
166 leaf enterprise-number {
167 type iana:enterprise-number;
170 choice vendor-payload {
175 grouping path-setup-type-tlv {
176 description "PATH-SETUP-TYPE TLV";
177 reference "https://tools.ietf.org/html/draft-ietf-pce-lsp-setup-type-00#section-3";
179 container path-setup-type {
182 description "PST=0: Path is setup via RSVP-TE signaling protocol(default).";
190 grouping object-header {
191 description "Common Object Header";
192 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
194 leaf processing-rule {
206 description "Core object structure with optional TLVs";
210 grouping vendor-information-tlvs {
211 list vendor-information-tlv {
212 description "VENDOR-INFORMATION-TLV";
213 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-3";
215 uses vendor-information;
219 grouping vendor-information-objects {
220 list vendor-information-object {
221 description "VENDOR-INFORMATION-OBJECT";
222 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-2";
224 uses vendor-information;
228 grouping open-object {
229 description "OPEN Object";
230 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
236 uses vendor-information-tlvs;
240 type protocol-version;
265 description "RP Object";
266 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
271 uses vendor-information-tlvs;
272 uses path-setup-type-tlv;
286 leaf reoptimization {
291 leaf bi-directional {
304 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
310 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
316 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
319 leaf ero-compression {
322 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
328 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
334 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
337 leaf make-before-break {
340 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
345 grouping no-path-object {
346 description "NO-PATH Object";
347 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
351 leaf nature-of-issue {
356 leaf unsatisfied-constraints {
357 when "nature-of-issue = 0" {
359 "The C flag has no meaning
360 and is ignored unless the NI
361 field is set to 0x00.";
369 choice address-family {
374 leaf source-ipv4-address {
375 type inet:ipv4-address-no-zone;
379 leaf destination-ipv4-address {
380 type inet:ipv4-address-no-zone;
387 leaf source-ipv6-address {
388 type inet:ipv6-address-no-zone;
392 leaf destination-ipv6-address {
393 type inet:ipv6-address-no-zone;
401 grouping endpoints-object {
402 description "END-POINTS Object";
403 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
405 container endpoints-obj {
412 // No possibility to carry TLVs
418 grouping bandwidth-object {
419 description "BANDWIDTH Object";
420 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
421 container bandwidth {
427 grouping reoptimization-bandwidth-object {
428 description "BANDWIDTH Object";
429 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
430 container reoptimization-bandwidth {
436 grouping metric-object {
437 description "METRIC Object";
438 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
458 type ieee754:float32;
463 grouping exclude-route-object {
464 description "Exclude Route Object";
465 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
480 uses rsvp:exclude-route-subobjects;
486 grouping explicit-route-object {
487 description "Explicit Route Object";
488 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
491 // No possibility of TLVs
500 uses rsvp:explicit-route-subobjects;
506 grouping secondary-explicit-route-object {
507 description "Secondary Explicit Route Object";
508 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
510 // No possibility of TLVs
519 uses rsvp:secondary-explicit-route-subobjects;
525 grouping include-route-object {
526 description "Include Route Object";
527 reference "https://tools.ietf.org/html/rfc7896#section-2.1";
530 // No possibility of TLVs
539 uses rsvp:explicit-route-subobjects;
545 grouping reported-route-object {
546 description "Reported Route Object";
547 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
550 // No possibility of TLVs
554 uses rsvp:record-route-subobjects;
560 grouping secondary-reported-route-object {
561 description "Reported Route Object";
562 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
565 // No possibility of TLVs
569 uses rsvp:secondary-record-route-subobjects;
575 grouping lspa-object {
576 description "LSPA Object";
577 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
581 uses rsvp:tunnel-attributes;
583 uses vendor-information-tlvs;
588 grouping svec-object {
589 description "Synchronization Vector Object";
590 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
593 // No possibility of TLVs
611 leaf-list requests-ids {
617 grouping notification-object {
618 description "NOTIFICATION Object";
619 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
620 container c-notification {
623 when "../type = 2 and ../value = 1";
625 uses overload-duration-tlv;
626 uses vendor-information-tlvs;
641 grouping pcep-error-object {
642 description "PCEP-ERROR Object";
643 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
644 container error-object {
648 uses req-missing-tlv;
649 uses vendor-information-tlvs;
664 grouping load-balancing-object {
665 description "LOAD-BALANCING Object";
666 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
668 container load-balancing {
669 // No possibility of TLVs
683 grouping close-object {
684 description "CLOSE Object";
685 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
696 uses vendor-information-tlvs;
703 grouping path-key-object {
704 description "PATH-KEY Object";
705 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
717 uses rsvp:path-key-subobject;
724 description "OF Object";
725 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
735 uses vendor-information-tlvs;
740 grouping monitoring-object {
741 description "The MONITORING object is used to specify the
742 set of requested PCEP state metrics.";
743 reference "https://tools.ietf.org/html/rfc5886#section-4.1";
744 container monitoring {
750 description "Indicates that PCE cannot provide any of
751 the set of requested performance metrics for unspecified reasons.";
755 description "Indicates that the overload status is
756 a metric of interest.";
759 bit processing-time {
760 description "Indicates that the processing times is
761 a metric of interest.";
765 description "Indicates that the monitoring
766 request is a general monitoring request.";
770 description "Indicates that the state metric
771 of interest is the PCE's liveness.";
778 description "The Monitoring-id-number combined with
779 the PCC-REQ-ID identifying the requesting PCC uniquely
780 identifies the monitoring request context.";
786 description "Optional TLV(s).";
787 uses vendor-information-tlvs;
792 grouping pcc-id-req-object {
793 description "The PCC-ID-REQ object is used to specify the IP
794 address of the requesting PCC.";
795 reference "https://tools.ietf.org/html/rfc5886#section-4.2";
796 container pcc-id-req {
799 type inet:ip-address-no-zone;
804 grouping pce-id-object {
805 description "The PCE-ID object is used to specify a PCE's IP address.";
806 reference "https://tools.ietf.org/html/rfc5886#section-4.3";
810 type inet:ip-address-no-zone;
815 grouping proc-time-object {
816 description "The PROC-TIME object is used to report various processing time
818 reference "https://tools.ietf.org/html/rfc5886#section-4.4";
819 container proc-time {
823 description "Indicates that the reported metric value is
824 based on estimated processing time as opposed to
825 actual computations.";
830 leaf current-proc-time {
831 description "Indicates, in milliseconds, the
832 processing time for the path computation of interest
833 characterized in the corresponding PCMonReq message.";
838 description "The minimum processing time in milliseconds";
844 description "The maximum processing time in milliseconds";
849 leaf average-proc-time {
850 description "The average processing time in milliseconds";
855 leaf variance-proc-time {
856 description "The variance of processing times in milliseconds";
863 grouping overload-object {
864 description "The OVERLOAD object is used to report a PCE processing
866 reference "https://tools.ietf.org/html/rfc5886#section-4.5";
870 description "This field indicates the amount of time,
871 in seconds, that the responding PCE expects that it may continue to
872 be overloaded from the time that the response message was generated.";
885 grouping classtype-object {
886 description "CLASSTYPE Object";
887 reference "https://tools.ietf.org/html/rfc5455#section-3";
889 container class-type {
900 description "GLOBAL CONSTRAINTS (GC) Object";
901 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
910 leaf max-utilization {
918 leaf min-utilization {
926 leaf over-booking-factor {
935 uses vendor-information-tlvs;
942 description "Marker grouping for message groupings.";
945 grouping message-header {
946 description "Common Header";
947 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
950 type protocol-version;
955 grouping open-message {
958 container open-message {
959 description "Open Message";
960 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
968 grouping keepalive-message {
971 container keepalive-message {
972 description "Keepalive Message";
973 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
979 grouping lsp-attributes {
982 uses bandwidth-object;
983 uses reoptimization-bandwidth-object;
988 uses include-route-object;
990 uses reported-route-object;
992 uses exclude-route-object;
996 uses classtype-object;
999 grouping pcreq-message {
1002 container pcreq-message {
1003 description "Path Computation Request Message";
1004 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1006 uses message-header;
1011 container path-key-expansion {
1012 when "rp/path-key = true";
1013 uses path-key-object;
1016 container segment-computation {
1017 when "rp/path-key = false";
1020 when "../rp/p2mp = false";
1022 uses endpoints-object;
1024 container reported-route {
1025 uses reported-route-object;
1027 uses reoptimization-bandwidth-object;
1030 uses vendor-information-objects;
1032 uses load-balancing-object;
1034 uses lsp-attributes;
1038 uses vendor-information-objects;
1048 uses exclude-route-object;
1054 uses vendor-information-objects;
1057 container monitoring-request {
1067 grouping path-definition {
1068 uses explicit-route-object;
1070 uses lsp-attributes;
1073 grouping monitoring {
1074 uses monitoring-object;
1075 uses pcc-id-req-object;
1078 grouping monitoring-metrics {
1081 uses proc-time-object;
1082 uses overload-object;
1086 grouping monitoring-response {
1088 choice monitoring-metrics-list {
1089 case specific-metrics-list {
1090 list specific-metrics {
1092 uses monitoring-metrics;
1096 case general-metrics-list {
1097 uses monitoring-metrics;
1102 grouping pcmonrep-message {
1103 description "The PCMonRep message is used to provide PCE
1104 state metrics back to the requester for out-of-band monitoring requests.";
1105 reference "https://tools.ietf.org/html/rfc5886#section-9.2";
1108 container pcmonrep-message {
1109 uses monitoring-response;
1113 grouping pcrep-message {
1116 container pcrep-message {
1117 description "Path Computation Reply Message";
1118 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1120 uses message-header;
1124 uses vendor-information-objects;
1126 uses monitoring-metrics;
1132 uses path-definition;
1134 uses vendor-information-objects;
1139 uses no-path-object;
1141 uses vendor-information-tlvs;
1142 container no-path-vector {
1143 uses no-path-vector-tlv;
1147 uses lsp-attributes;
1154 grouping pcntf-message {
1157 container pcntf-message {
1158 description "Notification Message";
1159 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1161 uses message-header;
1163 list notifications {
1168 list notifications {
1169 uses notification-object;
1175 grouping pcerr-message {
1178 container pcerr-message {
1179 description "Error Message";
1180 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1182 uses message-header;
1185 uses pcep-error-object;
1206 grouping close-message {
1209 container c-close-message {
1210 description "Close Message";
1211 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1213 uses message-header;
1219 grouping start-tls-message {
1222 container start-tls-message {
1223 description "StartTLS Message";
1224 reference "https://tools.ietf.org/html/draft-ietf-pce-pceps-02#section-3.3";
1226 uses message-header;