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/rfc6006#section-3.3.1";
322 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
325 leaf ero-compression {
328 reference "https://tools.ietf.org/html/rfc6006#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.";
375 choice address-family {
380 leaf source-ipv4-address {
381 type inet:ipv4-address-no-zone;
385 leaf destination-ipv4-address {
386 type inet:ipv4-address-no-zone;
393 leaf source-ipv6-address {
394 type inet:ipv6-address-no-zone;
398 leaf destination-ipv6-address {
399 type inet:ipv6-address-no-zone;
407 grouping endpoints-object {
408 description "END-POINTS Object";
409 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
411 container endpoints-obj {
418 // No possibility to carry TLVs
424 grouping bandwidth-object {
425 description "BANDWIDTH Object";
426 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
427 container bandwidth {
433 grouping reoptimization-bandwidth-object {
434 description "BANDWIDTH Object";
435 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
436 container reoptimization-bandwidth {
442 grouping metric-object {
443 description "METRIC Object";
444 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
464 type ieee754:float32;
469 grouping exclude-route-object {
470 description "Exclude Route Object";
471 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
486 uses rsvp:exclude-route-subobjects;
492 grouping explicit-route-object {
493 description "Explicit Route Object";
494 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
497 // No possibility of TLVs
506 uses rsvp:explicit-route-subobjects;
512 grouping secondary-explicit-route-object {
513 description "Secondary Explicit Route Object";
514 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
516 // No possibility of TLVs
525 uses rsvp:secondary-explicit-route-subobjects;
531 grouping include-route-object {
532 description "Include Route Object";
533 reference "https://tools.ietf.org/html/rfc7896#section-2.1";
536 // No possibility of TLVs
545 uses rsvp:explicit-route-subobjects;
551 grouping reported-route-object {
552 description "Reported Route Object";
553 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
556 // No possibility of TLVs
560 uses rsvp:record-route-subobjects;
566 grouping secondary-reported-route-object {
567 description "Reported Route Object";
568 reference "https://tools.ietf.org/html/rfc8306#section-3.2";
571 // No possibility of TLVs
575 uses rsvp:secondary-record-route-subobjects;
581 grouping lspa-object {
582 description "LSPA Object";
583 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
587 uses rsvp:tunnel-attributes;
589 uses vendor-information-tlvs;
594 grouping svec-object {
595 description "Synchronization Vector Object";
596 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
599 // No possibility of TLVs
617 leaf-list requests-ids {
623 grouping notification-object {
624 description "NOTIFICATION Object";
625 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
626 container c-notification {
629 when "../type = 2 and ../value = 1";
631 uses overload-duration-tlv;
632 uses vendor-information-tlvs;
647 grouping pcep-error-object {
648 description "PCEP-ERROR Object";
649 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
650 container error-object {
654 uses req-missing-tlv;
655 uses vendor-information-tlvs;
670 grouping load-balancing-object {
671 description "LOAD-BALANCING Object";
672 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
674 container load-balancing {
675 // No possibility of TLVs
689 grouping close-object {
690 description "CLOSE Object";
691 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
702 uses vendor-information-tlvs;
709 grouping path-key-object {
710 description "PATH-KEY Object";
711 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
723 uses rsvp:path-key-subobject;
730 description "OF Object";
731 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
741 uses vendor-information-tlvs;
746 grouping monitoring-object {
747 description "The MONITORING object is used to specify the
748 set of requested PCEP state metrics.";
749 reference "https://tools.ietf.org/html/rfc5886#section-4.1";
750 container monitoring {
756 description "Indicates that PCE cannot provide any of
757 the set of requested performance metrics for unspecified reasons.";
761 description "Indicates that the overload status is
762 a metric of interest.";
765 bit processing-time {
766 description "Indicates that the processing times is
767 a metric of interest.";
771 description "Indicates that the monitoring
772 request is a general monitoring request.";
776 description "Indicates that the state metric
777 of interest is the PCE's liveness.";
784 description "The Monitoring-id-number combined with
785 the PCC-REQ-ID identifying the requesting PCC uniquely
786 identifies the monitoring request context.";
792 description "Optional TLV(s).";
793 uses vendor-information-tlvs;
798 grouping pcc-id-req-object {
799 description "The PCC-ID-REQ object is used to specify the IP
800 address of the requesting PCC.";
801 reference "https://tools.ietf.org/html/rfc5886#section-4.2";
802 container pcc-id-req {
805 type inet:ip-address-no-zone;
810 grouping pce-id-object {
811 description "The PCE-ID object is used to specify a PCE's IP address.";
812 reference "https://tools.ietf.org/html/rfc5886#section-4.3";
816 type inet:ip-address-no-zone;
821 grouping proc-time-object {
822 description "The PROC-TIME object is used to report various processing time
824 reference "https://tools.ietf.org/html/rfc5886#section-4.4";
825 container proc-time {
829 description "Indicates that the reported metric value is
830 based on estimated processing time as opposed to
831 actual computations.";
836 leaf current-proc-time {
837 description "Indicates, in milliseconds, the
838 processing time for the path computation of interest
839 characterized in the corresponding PCMonReq message.";
844 description "The minimum processing time in milliseconds";
850 description "The maximum processing time in milliseconds";
855 leaf average-proc-time {
856 description "The average processing time in milliseconds";
861 leaf variance-proc-time {
862 description "The variance of processing times in milliseconds";
869 grouping overload-object {
870 description "The OVERLOAD object is used to report a PCE processing
872 reference "https://tools.ietf.org/html/rfc5886#section-4.5";
876 description "This field indicates the amount of time,
877 in seconds, that the responding PCE expects that it may continue to
878 be overloaded from the time that the response message was generated.";
891 grouping classtype-object {
892 description "CLASSTYPE Object";
893 reference "https://tools.ietf.org/html/rfc5455#section-3";
895 container class-type {
906 description "GLOBAL CONSTRAINTS (GC) Object";
907 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
916 leaf max-utilization {
924 leaf min-utilization {
932 leaf over-booking-factor {
941 uses vendor-information-tlvs;
948 description "Marker grouping for message groupings.";
951 grouping message-header {
952 description "Common Header";
953 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
956 type protocol-version;
961 grouping open-message {
964 container open-message {
965 description "Open Message";
966 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
974 grouping keepalive-message {
977 container keepalive-message {
978 description "Keepalive Message";
979 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
985 grouping lsp-attributes {
988 uses bandwidth-object;
989 uses reoptimization-bandwidth-object;
994 uses include-route-object;
996 uses reported-route-object;
998 uses exclude-route-object;
1002 uses classtype-object;
1005 grouping pcreq-message {
1008 container pcreq-message {
1009 description "Path Computation Request Message";
1010 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1012 uses message-header;
1017 container path-key-expansion {
1018 when "rp/path-key = true";
1019 uses path-key-object;
1022 container segment-computation {
1023 when "rp/path-key = false";
1026 when "../rp/p2mp = false";
1028 uses endpoints-object;
1030 container reported-route {
1031 uses reported-route-object;
1033 uses reoptimization-bandwidth-object;
1036 uses vendor-information-objects;
1038 uses load-balancing-object;
1040 uses lsp-attributes;
1044 uses vendor-information-objects;
1054 uses exclude-route-object;
1060 uses vendor-information-objects;
1063 container monitoring-request {
1073 grouping path-definition {
1074 uses explicit-route-object;
1076 uses lsp-attributes;
1079 grouping monitoring {
1080 uses monitoring-object;
1081 uses pcc-id-req-object;
1084 grouping monitoring-metrics {
1087 uses proc-time-object;
1088 uses overload-object;
1092 grouping monitoring-response {
1094 choice monitoring-metrics-list {
1095 case specific-metrics-list {
1096 list specific-metrics {
1098 uses monitoring-metrics;
1102 case general-metrics-list {
1103 uses monitoring-metrics;
1108 grouping pcmonrep-message {
1109 description "The PCMonRep message is used to provide PCE
1110 state metrics back to the requester for out-of-band monitoring requests.";
1111 reference "https://tools.ietf.org/html/rfc5886#section-9.2";
1114 container pcmonrep-message {
1115 uses monitoring-response;
1119 grouping pcrep-message {
1122 container pcrep-message {
1123 description "Path Computation Reply Message";
1124 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1126 uses message-header;
1130 uses vendor-information-objects;
1132 uses monitoring-metrics;
1138 uses path-definition;
1140 uses vendor-information-objects;
1145 uses no-path-object;
1147 uses vendor-information-tlvs;
1148 container no-path-vector {
1149 uses no-path-vector-tlv;
1153 uses lsp-attributes;
1160 grouping pcntf-message {
1163 container pcntf-message {
1164 description "Notification Message";
1165 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1167 uses message-header;
1169 list notifications {
1174 list notifications {
1175 uses notification-object;
1181 grouping pcerr-message {
1184 container pcerr-message {
1185 description "Error Message";
1186 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1188 uses message-header;
1191 uses pcep-error-object;
1212 grouping close-message {
1215 container c-close-message {
1216 description "Close Message";
1217 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1219 uses message-header;
1225 grouping start-tls-message {
1228 container start-tls-message {
1229 description "StartTLS Message";
1230 reference "https://tools.ietf.org/html/draft-ietf-pce-pceps-02#section-3.3";
1232 uses message-header;