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 rsvp { prefix rsvp; revision-date 2013-08-20; }
10 organization "Cisco Systems, Inc.";
11 contact "Robert Varga <rovarga@cisco.com>";
14 "This module contains the base data model of a PCEP message.
15 It rolls up the definitions contained in RFC5440, RFC5520
18 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
20 This program and the accompanying materials are made available
21 under the terms of the Eclipse Public License v1.0 which
22 accompanies this distribution, and is available at
23 http://www.eclipse.org/legal/epl-v10.html";
25 revision "2013-10-05" {
31 // NOTE: this model uses counts bits in fields from left to right,
32 // just as IANA does for PCEP protocol.
35 typedef protocol-version {
53 typedef srp-id-number {
76 description "Marker grouping for TLV groupings.";
79 grouping no-path-vector-tlv {
80 description "NO-PATH-VECTOR TLV";
81 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
86 bit p2mp-unreachable {
92 bit no-gco-migration {
96 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
99 bit chain-unavailable {
105 bit unknown-destination {
108 bit pce-unavailable {
116 grouping overload-duration-tlv {
117 description "OVERLOAD-DURATION TLV";
118 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
127 grouping req-missing-tlv {
128 description "REQ-MISSING TLV";
129 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
137 grouping p2mp-capable-tlv {
138 description "P2MP CAPABLE TLV";
139 reference "https://tools.ietf.org/html/rfc6006#section-3.1.2";
148 grouping stateful-capability-tlv {
149 description "Stateful PCE Capability TLV";
150 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.1";
155 bit lsp-update-capability {
158 bit include-db-version {
169 grouping lsp-db-version-tlv {
170 description "LSP State Database Version TLV";
171 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.2";
180 grouping predundancy-group-id-tlv {
181 description "PCE Redundancy Group Identifier TLV";
182 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.3";
191 grouping lsp-identifiers-tlv {
192 description "LSP Identifiers TLV";
193 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.1";
206 choice address-family {
208 leaf ipv4-tunnel-sender-address {
209 type inet:ipv4-address;
212 leaf ipv4-extended-tunnel-id {
213 type rsvp:ipv4-extended-tunnel-id;
218 leaf ipv6-tunnel-sender-address {
219 type inet:ipv6-address;
222 leaf ipv6-extended-tunnel-id {
223 type rsvp:ipv6-extended-tunnel-id;
230 grouping symbolic-path-name-tlv {
231 description "Symbolic Path Name TLV";
232 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.2";
241 grouping lsp-error-code-tlv {
242 description "LSP Error Code TLV";
243 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.3";
252 grouping rsvp-error-spec-tlv {
253 description "RSVP Error Spec TLV";
254 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.4";
259 container rsvp-error {
260 uses rsvp:error-spec;
264 container user-error {
265 uses rsvp:user-error-spec;
271 grouping of-list-tlv {
272 description "OF-List TLV";
273 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
282 description "Order TLV";
283 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
298 grouping object-header {
299 description "Common Object Header";
300 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
302 leaf processing-rule {
314 description "Core object structure with optional TLVs";
318 grouping open-object {
319 description "OPEN Object";
320 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
329 uses p2mp-capable-tlv;
333 uses stateful-capability-tlv;
336 container predundancy-group-id {
337 uses predundancy-group-id-tlv;
340 container lsp-db-version {
341 uses lsp-db-version-tlv;
346 type protocol-version;
351 // Note: non-presence is equal to '0'
359 // Note: non-presence is equal to '0'
372 description "RP Object";
373 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
393 leaf reoptimization {
398 leaf bi-directional {
411 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
417 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
423 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
426 leaf ero-compression {
429 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
435 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
441 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
444 leaf make-before-break {
447 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
451 grouping no-path-object {
452 description "NO-PATH Object";
453 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
457 leaf nature-of-issue {
462 leaf unsatisfied-constraints {
463 when "nature-of-issue = 0" {
465 "The C flag has no meaning
466 and is ignored unless the NI
467 field is set to 0x00.";
474 grouping endpoints-object {
475 description "END-POINTS Object";
476 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
480 choice address-family {
482 leaf source-ipv4-address {
483 type inet:ipv4-address;
487 leaf destination-ipv4-address {
488 type inet:ipv4-address;
493 leaf source-ipv6-address {
494 type inet:ipv6-address;
498 leaf destination-ipv6-address {
499 type inet:ipv6-address;
506 grouping bandwidth-object {
507 description "BANDWIDTH Object";
508 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
512 // No possibility to carry TLVs
514 type ieee754:float32;
518 grouping metric-object {
519 description "METRIC Object";
520 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
540 type ieee754:float32;
544 grouping exclude-route-object {
545 description "Exclude Route Object";
546 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
560 uses rsvp:exclude-route-subobjects;
564 grouping explicit-route-object {
565 description "Explicit Route Object";
566 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
568 // No possibility of TLVs
577 uses rsvp:route-subobjects;
581 grouping include-route-object {
582 description "Include Route Object";
583 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
585 // No possibility of TLVs
589 uses rsvp:route-subobjects {
590 augment subobject-type {
591 case explicit-exclusion-route {
592 uses rsvp:exclude-route-subobjects;
599 grouping reported-route-object {
600 description "Reported Route Object";
601 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
603 // No possibility of TLVs
607 uses rsvp:record-route-subobjects;
611 grouping lspa-object {
612 description "LSPA Object";
613 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
622 leaf setup-priority {
627 leaf local-protection-desired {
632 uses rsvp:attribute-filters;
635 grouping svec-object {
636 description "Synchronization Vector Object";
637 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
639 // No possibility of TLVs
657 leaf-list requests-ids {
662 grouping notification-object {
663 description "NOTIFICATION Object";
664 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
666 // No possibility of TLVs
669 container overload-duration {
670 when "../type = 2 and ../value = 1";
672 uses overload-duration-tlv;
687 grouping pcep-error-object {
688 description "PCEP-ERROR Object";
689 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
691 // No possibility of TLVs
694 container req-missing {
696 uses req-missing-tlv;
711 grouping load-balancing-object {
712 description "LOAD-BALANCING Object";
713 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
715 // No possibility of TLVs
724 type ieee754:float32;
728 grouping close-object {
729 description "CLOSE Object";
730 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
743 grouping path-key-object {
744 description "PATH-KEY Object";
745 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
764 grouping srp-object {
765 description "SRP Object";
766 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.2";
784 grouping lsp-object {
785 description "SRP Object";
786 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
790 container lsp-error-code {
791 uses lsp-error-code-tlv;
794 container lsp-identifiers {
795 uses lsp-identifiers-tlv;
798 container rsvp-error-spec {
799 uses rsvp-error-spec-tlv;
802 container symblic-path-name {
803 uses symbolic-path-name-tlv;
827 leaf administrative {
853 leaf signaling-type {
860 description "OF Object";
861 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
877 grouping classtype-object {
878 description "CLASSTYPE Object";
879 reference "https://tools.ietf.org/html/rfc5455#section-3";
890 description "GLOBAL CONSTRAINTS (GC) Object";
891 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
900 leaf max-utilization {
908 leaf min-utilization {
916 leaf over-booking-factor {
927 description "Marker grouping for message groupings.";
930 grouping message-header {
931 description "Common Header";
932 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
935 type protocol-version;
940 grouping open-message {
943 container open-message {
944 description "Open Message";
945 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
955 grouping keepalive-message {
958 container keepalive-message {
959 description "Keepalive Message";
960 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
966 grouping lsp-attributes {
971 container bandwidth {
972 uses bandwidth-object;
979 container include-route {
980 uses include-route-object;
987 container class-type {
988 uses classtype-object;
992 grouping pcreq-message {
995 container pcreq-message {
996 description "Path Computation Request Message";
997 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1006 container path-key-expansion {
1007 when "rp/path-key = true";
1008 container path-key {
1009 uses path-key-object;
1013 container segment-computation {
1014 when "rp/path-key = false";
1017 when "../rp/p2mp = false";
1019 container endpoints {
1020 uses endpoints-object;
1023 container reported-route {
1024 uses reported-route-object;
1026 container bandwidth {
1027 uses bandwidth-object;
1031 container load-balancing {
1032 uses load-balancing-object;
1035 uses lsp-attributes;
1038 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.4";
1063 grouping path-definition {
1064 container explicit-route {
1065 uses explicit-route-object;
1068 uses lsp-attributes;
1071 grouping pcrep-message {
1074 container pcrep-message {
1075 description "Path Computation Reply Message";
1076 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1078 uses message-header;
1086 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.5";
1092 uses lsp-attributes;
1095 uses path-definition;
1100 uses no-path-object;
1102 container no-path-vector {
1103 uses no-path-vector-tlv;
1113 grouping pcntf-message {
1116 container pcntf-message {
1117 description "Notification Message";
1118 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1120 uses message-header;
1122 list notifications {
1127 list notifications {
1128 uses notification-object;
1134 grouping pcerr-message {
1137 container pcerr-message {
1138 description "Error Message";
1139 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1141 uses message-header;
1144 uses pcep-error-object;
1162 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.3";
1170 grouping close-message {
1173 container c-close-message {
1174 description "Close Message";
1175 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1177 uses message-header;
1185 grouping pcupd-message {
1188 container pcupd-message {
1189 description "State Update Request Message";
1190 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.2";
1192 uses message-header;
1204 uses path-definition;
1210 grouping pcrpt-message {
1213 container pcrpt-message {
1214 description "State Report Message";
1215 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.1";
1217 uses message-header;
1229 uses path-definition;
1235 grouping pcinitiate-message {
1238 container pcinitiate-message {
1239 description "LSP Initiate Message";
1240 reference "https://tools.ietf.org/html/draft-crabbe-pce-pce-initiated-lsp-02#section-5.1";
1242 uses message-header;
1253 container endpoints {
1254 uses endpoints-object;
1258 uses explicit-route-object;
1261 uses lsp-attributes;