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 2010-09-24; }
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, 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.";
163 leaf enterprise-number {
164 type iana:enterprise-number;
167 choice vendor-payload {
172 grouping path-setup-type-tlv {
173 description "PATH-SETUP-TYPE TLV";
174 reference "https://tools.ietf.org/html/draft-ietf-pce-lsp-setup-type-00#section-3";
176 container path-setup-type {
179 description "PST=0: Path is setup via RSVP-TE signaling protocol(default).";
187 grouping object-header {
188 description "Common Object Header";
189 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
191 leaf processing-rule {
203 description "Core object structure with optional TLVs";
207 grouping vendor-information-tlvs {
208 list vendor-information-tlv {
209 description "VENDOR-INFORMATION-TLV";
210 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-3";
212 uses vendor-information;
216 grouping vendor-information-objects {
217 list vendor-information-object {
218 description "VENDOR-INFORMATION-OBJECT";
219 reference "http://tools.ietf.org/html/draft-ietf-pce-rfc7150bis-00#section-2";
221 uses vendor-information;
225 grouping open-object {
226 description "OPEN Object";
227 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
233 uses vendor-information-tlvs;
237 type protocol-version;
262 description "RP Object";
263 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
268 uses vendor-information-tlvs;
269 uses path-setup-type-tlv;
283 leaf reoptimization {
288 leaf bi-directional {
301 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
307 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
313 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
316 leaf ero-compression {
319 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
325 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
331 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
334 leaf make-before-break {
337 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
342 grouping no-path-object {
343 description "NO-PATH Object";
344 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
348 leaf nature-of-issue {
353 leaf unsatisfied-constraints {
354 when "nature-of-issue = 0" {
356 "The C flag has no meaning
357 and is ignored unless the NI
358 field is set to 0x00.";
366 choice address-family {
371 leaf source-ipv4-address {
372 type inet:ipv4-address;
376 leaf destination-ipv4-address {
377 type inet:ipv4-address;
384 leaf source-ipv6-address {
385 type inet:ipv6-address;
389 leaf destination-ipv6-address {
390 type inet:ipv6-address;
398 grouping endpoints-object {
399 description "END-POINTS Object";
400 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
402 container endpoints-obj {
409 // No possibility to carry TLVs
415 grouping bandwidth-object {
416 description "BANDWIDTH Object";
417 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
418 container bandwidth {
424 grouping reoptimization-bandwidth-object {
425 description "BANDWIDTH Object";
426 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
427 container bandwidth {
433 grouping metric-object {
434 description "METRIC Object";
435 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
455 type ieee754:float32;
460 grouping exclude-route-object {
461 description "Exclude Route Object";
462 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
477 uses rsvp:exclude-route-subobjects;
483 grouping explicit-route-object {
484 description "Explicit Route Object";
485 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
488 // No possibility of TLVs
497 uses rsvp:explicit-route-subobjects;
503 grouping include-route-object {
504 description "Include Route Object";
505 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
508 // No possibility of TLVs
512 uses rsvp:explicit-route-subobjects;
518 grouping reported-route-object {
519 description "Reported Route Object";
520 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
523 // No possibility of TLVs
527 uses rsvp:record-route-subobjects;
533 grouping lspa-object {
534 description "LSPA Object";
535 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
539 uses rsvp:tunnel-attributes;
541 uses vendor-information-tlvs;
546 grouping svec-object {
547 description "Synchronization Vector Object";
548 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
551 // No possibility of TLVs
569 leaf-list requests-ids {
575 grouping notification-object {
576 description "NOTIFICATION Object";
577 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
578 container c-notification {
581 when "../type = 2 and ../value = 1";
583 uses overload-duration-tlv;
584 uses vendor-information-tlvs;
599 grouping pcep-error-object {
600 description "PCEP-ERROR Object";
601 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
602 container error-object {
606 uses req-missing-tlv;
607 uses vendor-information-tlvs;
622 grouping load-balancing-object {
623 description "LOAD-BALANCING Object";
624 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
626 container load-balancing {
627 // No possibility of TLVs
641 grouping close-object {
642 description "CLOSE Object";
643 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
654 uses vendor-information-tlvs;
661 grouping path-key-object {
662 description "PATH-KEY Object";
663 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
675 uses rsvp:path-key-subobject;
682 description "OF Object";
683 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
693 uses vendor-information-tlvs;
698 grouping monitoring-object {
699 description "The MONITORING object is used to specify the
700 set of requested PCEP state metrics.";
701 reference "https://tools.ietf.org/html/rfc5886#section-4.1";
702 container monitoring {
708 description "Indicates that PCE cannot provide any of
709 the set of requested performance metrics for unspecified reasons.";
713 description "Indicates that the overload status is
714 a metric of interest.";
717 bit processing-time {
718 description "Indicates that the processing times is
719 a metric of interest.";
723 description "Indicates that the monitoring
724 request is a general monitoring request.";
728 description "Indicates that the state metric
729 of interest is the PCE's liveness.";
736 description "The Monitoring-id-number combined with
737 the PCC-REQ-ID identifying the requesting PCC uniquely
738 identifies the monitoring request context.";
744 description "Optional TLV(s).";
745 uses vendor-information-tlvs;
750 grouping pcc-id-req-object {
751 description "The PCC-ID-REQ object is used to specify the IP
752 address of the requesting PCC.";
753 reference "https://tools.ietf.org/html/rfc5886#section-4.2";
754 container pcc-id-req {
757 type inet:ip-address;
762 grouping pce-id-object {
763 description "The PCE-ID object is used to specify a PCE's IP address.";
764 reference "https://tools.ietf.org/html/rfc5886#section-4.3";
768 type inet:ip-address;
773 grouping proc-time-object {
774 description "The PROC-TIME object is used to report various processing time
776 reference "https://tools.ietf.org/html/rfc5886#section-4.4";
777 container proc-time {
781 description "Indicates that the reported metric value is
782 based on estimated processing time as opposed to
783 actual computations.";
788 leaf current-proc-time {
789 description "Indicates, in milliseconds, the
790 processing time for the path computation of interest
791 characterized in the corresponding PCMonReq message.";
796 description "The minimum processing time in milliseconds";
802 description "The maximum processing time in milliseconds";
807 leaf average-proc-time {
808 description "The average processing time in milliseconds";
813 leaf variance-proc-time {
814 description "The variance of processing times in milliseconds";
821 grouping overload-object {
822 description "The OVERLOAD object is used to report a PCE processing
824 reference "https://tools.ietf.org/html/rfc5886#section-4.5";
828 description "This field indicates the amount of time,
829 in seconds, that the responding PCE expects that it may continue to
830 be overloaded from the time that the response message was generated.";
843 grouping classtype-object {
844 description "CLASSTYPE Object";
845 reference "https://tools.ietf.org/html/rfc5455#section-3";
847 container class-type {
858 description "GLOBAL CONSTRAINTS (GC) Object";
859 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
868 leaf max-utilization {
876 leaf min-utilization {
884 leaf over-booking-factor {
893 uses vendor-information-tlvs;
900 description "Marker grouping for message groupings.";
903 grouping message-header {
904 description "Common Header";
905 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
908 type protocol-version;
913 grouping open-message {
916 container open-message {
917 description "Open Message";
918 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
926 grouping keepalive-message {
929 container keepalive-message {
930 description "Keepalive Message";
931 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
937 grouping lsp-attributes {
940 uses bandwidth-object;
945 uses include-route-object;
947 uses reported-route-object;
949 uses exclude-route-object;
953 uses classtype-object;
956 grouping pcreq-message {
959 container pcreq-message {
960 description "Path Computation Request Message";
961 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
968 container path-key-expansion {
969 when "rp/path-key = true";
970 uses path-key-object;
973 container segment-computation {
974 when "rp/path-key = false";
977 when "../rp/p2mp = false";
979 uses endpoints-object;
981 container reported-route {
982 uses reported-route-object;
984 uses reoptimization-bandwidth-object;
987 uses vendor-information-objects;
989 uses load-balancing-object;
995 uses vendor-information-objects;
1005 uses exclude-route-object;
1011 uses vendor-information-objects;
1014 container monitoring-request {
1024 grouping path-definition {
1025 uses explicit-route-object;
1027 uses lsp-attributes;
1030 grouping monitoring {
1031 uses monitoring-object;
1032 uses pcc-id-req-object;
1035 grouping monitoring-metrics {
1038 uses proc-time-object;
1039 uses overload-object;
1043 grouping monitoring-response {
1045 choice monitoring-metrics-list {
1046 case specific-metrics-list {
1047 list specific-metrics {
1049 uses monitoring-metrics;
1053 case general-metrics-list {
1054 uses monitoring-metrics;
1059 grouping pcmonrep-message {
1060 description "The PCMonRep message is used to provide PCE
1061 state metrics back to the requester for out-of-band monitoring requests.";
1062 reference "https://tools.ietf.org/html/rfc5886#section-9.2";
1065 container pcmonrep-message {
1066 uses monitoring-response;
1070 grouping pcrep-message {
1073 container pcrep-message {
1074 description "Path Computation Reply Message";
1075 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1077 uses message-header;
1081 uses vendor-information-objects;
1083 uses monitoring-metrics;
1089 uses path-definition;
1091 uses vendor-information-objects;
1096 uses no-path-object;
1098 uses vendor-information-tlvs;
1099 container no-path-vector {
1100 uses no-path-vector-tlv;
1104 uses lsp-attributes;
1111 grouping pcntf-message {
1114 container pcntf-message {
1115 description "Notification Message";
1116 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1118 uses message-header;
1120 list notifications {
1125 list notifications {
1126 uses notification-object;
1132 grouping pcerr-message {
1135 container pcerr-message {
1136 description "Error Message";
1137 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1139 uses message-header;
1142 uses pcep-error-object;
1163 grouping close-message {
1166 container c-close-message {
1167 description "Close Message";
1168 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1170 uses message-header;
1176 grouping start-tls-message {
1179 container start-tls-message {
1180 description "StartTLS Message";
1181 reference "https://tools.ietf.org/html/draft-ietf-pce-pceps-02#section-3.3";
1183 uses message-header;