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 {
80 description "Marker grouping for TLV groupings.";
83 grouping no-path-vector-tlv {
84 description "NO-PATH-VECTOR TLV";
85 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
90 bit p2mp-unreachable {
96 bit no-gco-migration {
100 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
103 bit chain-unavailable {
109 bit unknown-destination {
112 bit pce-unavailable {
120 grouping overload-duration-tlv {
121 description "OVERLOAD-DURATION TLV";
122 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
131 grouping req-missing-tlv {
132 description "REQ-MISSING TLV";
133 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
141 grouping p2mp-capable-tlv {
142 description "P2MP CAPABLE TLV";
143 reference "https://tools.ietf.org/html/rfc6006#section-3.1.2";
152 grouping stateful-capability-tlv {
153 description "Stateful PCE Capability TLV";
154 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.1";
159 bit lsp-update-capability {
162 bit include-db-version {
173 grouping lsp-db-version-tlv {
174 description "LSP State Database Version TLV";
175 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.2";
184 grouping predundancy-group-id-tlv {
185 description "PCE Redundancy Group Identifier TLV";
186 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.3";
195 grouping lsp-identifiers-tlv {
196 description "LSP Identifiers TLV";
197 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.1";
210 choice address-family {
212 leaf ipv4-tunnel-sender-address {
213 type inet:ipv4-address;
216 leaf ipv4-extended-tunnel-id {
217 type rsvp:ipv4-extended-tunnel-id;
222 leaf ipv6-tunnel-sender-address {
223 type inet:ipv6-address;
226 leaf ipv6-extended-tunnel-id {
227 type rsvp:ipv6-extended-tunnel-id;
234 grouping symbolic-path-name-tlv {
235 description "Symbolic Path Name TLV";
236 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.2";
245 grouping lsp-error-code-tlv {
246 description "LSP Error Code TLV";
247 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.3";
256 grouping rsvp-error-spec-tlv {
257 description "RSVP Error Spec TLV";
258 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.4";
263 container rsvp-error {
264 uses rsvp:error-spec;
268 container user-error {
269 uses rsvp:user-error-spec;
275 grouping of-list-tlv {
276 description "OF-List TLV";
277 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
286 description "Order TLV";
287 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
302 grouping object-header {
303 description "Common Object Header";
304 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
306 leaf processing-rule {
318 description "Core object structure with optional TLVs";
322 grouping open-object {
323 description "OPEN Object";
324 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
333 uses p2mp-capable-tlv;
337 uses stateful-capability-tlv;
340 container predundancy-group-id {
341 uses predundancy-group-id-tlv;
344 container lsp-db-version {
345 uses lsp-db-version-tlv;
350 type protocol-version;
355 // Note: non-presence is equal to '0'
363 // Note: non-presence is equal to '0'
376 description "RP Object";
377 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
397 leaf reoptimization {
402 leaf bi-directional {
415 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
421 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
427 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
430 leaf ero-compression {
433 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
439 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
445 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
448 leaf make-before-break {
451 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
455 grouping no-path-object {
456 description "NO-PATH Object";
457 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
461 leaf nature-of-issue {
466 leaf unsatisfied-constraints {
467 when "nature-of-issue = 0" {
469 "The C flag has no meaning
470 and is ignored unless the NI
471 field is set to 0x00.";
478 grouping endpoints-object {
479 description "END-POINTS Object";
480 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
484 choice address-family {
486 leaf source-ipv4-address {
487 type inet:ipv4-address;
491 leaf destination-ipv4-address {
492 type inet:ipv4-address;
497 leaf source-ipv6-address {
498 type inet:ipv6-address;
502 leaf destination-ipv6-address {
503 type inet:ipv6-address;
510 grouping bandwidth-object {
511 description "BANDWIDTH Object";
512 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
516 // No possibility to carry TLVs
518 type ieee754:float32;
522 grouping metric-object {
523 description "METRIC Object";
524 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
544 type ieee754:float32;
548 grouping exclude-route-object {
549 description "Exclude Route Object";
550 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
564 uses rsvp:exclude-route-subobjects;
568 grouping explicit-route-object {
569 description "Explicit Route Object";
570 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
572 // No possibility of TLVs
581 uses rsvp:explicit-route-subobjects {
582 // FIXME: yangtools bug
583 // augment "subobject-type" {
585 // container path-key {
586 // uses path-key-subobject;
594 grouping include-route-object {
595 description "Include Route Object";
596 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
598 // No possibility of TLVs
602 uses rsvp:explicit-route-subobjects;
606 grouping reported-route-object {
607 description "Reported Route Object";
608 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
610 // No possibility of TLVs
614 uses rsvp:record-route-subobjects;
618 grouping lspa-object {
619 description "LSPA Object";
620 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
629 leaf setup-priority {
634 leaf local-protection-desired {
639 uses rsvp:attribute-filters;
642 grouping svec-object {
643 description "Synchronization Vector Object";
644 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
646 // No possibility of TLVs
664 leaf-list requests-ids {
669 grouping notification-object {
670 description "NOTIFICATION Object";
671 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
673 // No possibility of TLVs
676 container overload-duration {
677 when "../type = 2 and ../value = 1";
679 uses overload-duration-tlv;
694 grouping pcep-error-object {
695 description "PCEP-ERROR Object";
696 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
698 // No possibility of TLVs
701 container req-missing {
703 uses req-missing-tlv;
718 grouping load-balancing-object {
719 description "LOAD-BALANCING Object";
720 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
722 // No possibility of TLVs
731 type ieee754:float32;
735 grouping close-object {
736 description "CLOSE Object";
737 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
751 grouping path-key-subobject {
752 reference "https://tools.ietf.org/html/rfc5520#section-3.1";
753 uses rsvp:c-subobject;
766 grouping path-key-object {
767 description "PATH-KEY Object";
768 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
780 uses path-key-subobject;
784 grouping srp-object {
785 description "SRP Object";
786 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.2";
804 grouping lsp-object {
805 description "SRP Object";
806 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
810 container lsp-error-code {
811 uses lsp-error-code-tlv;
814 container lsp-identifiers {
815 uses lsp-identifiers-tlv;
818 container rsvp-error-spec {
819 uses rsvp-error-spec-tlv;
822 container symblic-path-name {
823 uses symbolic-path-name-tlv;
847 leaf administrative {
873 leaf signaling-type {
880 description "OF Object";
881 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
897 grouping classtype-object {
898 description "CLASSTYPE Object";
899 reference "https://tools.ietf.org/html/rfc5455#section-3";
910 description "GLOBAL CONSTRAINTS (GC) Object";
911 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
920 leaf max-utilization {
928 leaf min-utilization {
936 leaf over-booking-factor {
947 description "Marker grouping for message groupings.";
950 grouping message-header {
951 description "Common Header";
952 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
955 type protocol-version;
960 grouping open-message {
963 container open-message {
964 description "Open Message";
965 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
975 grouping keepalive-message {
978 container keepalive-message {
979 description "Keepalive Message";
980 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
986 grouping lsp-attributes {
991 container bandwidth {
992 uses bandwidth-object;
999 container exclude-route {
1000 uses exclude-route-object;
1003 container include-route {
1004 uses include-route-object;
1011 container class-type {
1012 uses classtype-object;
1016 grouping pcreq-message {
1019 container pcreq-message {
1020 description "Path Computation Request Message";
1021 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1023 uses message-header;
1030 container path-key-expansion {
1031 when "rp/path-key = true";
1032 container path-key {
1033 uses path-key-object;
1037 container segment-computation {
1038 when "rp/path-key = false";
1041 when "../rp/p2mp = false";
1043 container endpoints {
1044 uses endpoints-object;
1047 container reported-route {
1048 uses reported-route-object;
1050 container bandwidth {
1051 uses bandwidth-object;
1055 container load-balancing {
1056 uses load-balancing-object;
1059 uses lsp-attributes;
1062 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.4";
1079 uses exclude-route-object;
1088 grouping path-definition {
1089 container explicit-route {
1090 uses explicit-route-object;
1093 uses lsp-attributes;
1096 grouping pcrep-message {
1099 container pcrep-message {
1100 description "Path Computation Reply Message";
1101 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1103 uses message-header;
1111 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.5";
1117 uses lsp-attributes;
1120 uses path-definition;
1125 uses no-path-object;
1127 container no-path-vector {
1128 uses no-path-vector-tlv;
1138 grouping pcntf-message {
1141 container pcntf-message {
1142 description "Notification Message";
1143 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1145 uses message-header;
1147 list notifications {
1152 list notifications {
1153 uses notification-object;
1159 grouping pcerr-message {
1162 container pcerr-message {
1163 description "Error Message";
1164 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1166 uses message-header;
1169 uses pcep-error-object;
1187 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.3";
1195 grouping close-message {
1198 container c-close-message {
1199 description "Close Message";
1200 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1202 uses message-header;
1210 grouping pcupd-message {
1213 container pcupd-message {
1214 description "State Update Request Message";
1215 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.2";
1217 uses message-header;
1229 uses path-definition;
1235 grouping pcrpt-message {
1238 container pcrpt-message {
1239 description "State Report Message";
1240 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.1";
1242 uses message-header;
1254 uses path-definition;
1260 grouping pcinitiate-message {
1263 container pcinitiate-message {
1264 description "LSP Initiate Message";
1265 reference "https://tools.ietf.org/html/draft-crabbe-pce-pce-initiated-lsp-02#section-5.1";
1267 uses message-header;
1278 container endpoints {
1279 uses endpoints-object;
1283 uses explicit-route-object;
1286 uses lsp-attributes;