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";
85 bit p2mp-unreachable {
91 bit no-gco-migration {
95 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
98 bit chain-unavailable {
104 bit unknown-destination {
107 bit pce-unavailable {
115 grouping overload-duration-tlv {
116 description "OVERLOAD-DURATION TLV";
117 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
125 grouping req-missing-tlv {
126 description "REQ-MISSING TLV";
127 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
134 grouping p2mp-capable-tlv {
135 description "P2MP CAPABLE TLV";
136 reference "https://tools.ietf.org/html/rfc6006#section-3.1.2";
144 grouping stateful-capability-tlv {
145 description "Stateful PCE Capability TLV";
146 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.1";
150 bit lsp-update-capability {
153 bit include-db-version {
164 grouping lsp-db-version-tlv {
165 description "LSP State Database Version TLV";
166 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.2";
174 grouping predundancy-group-id-tlv {
175 description "PCE Redundancy Group Identifier TLV";
176 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.3";
184 grouping lsp-identifiers-tlv {
185 description "LSP Identifiers TLV";
186 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.1";
198 choice address-family {
200 leaf ipv4-tunnel-sender-address {
201 type inet:ipv4-address;
204 leaf ipv4-extended-tunnel-id {
205 type rsvp:ipv4-extended-tunnel-id;
210 leaf ipv6-tunnel-sender-address {
211 type inet:ipv6-address;
214 leaf ipv6-extended-tunnel-id {
215 type rsvp:ipv6-extended-tunnel-id;
222 grouping symbolic-path-name-tlv {
223 description "Symbolic Path Name TLV";
224 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.2";
232 grouping lsp-error-code-tlv {
233 description "LSP Error Code TLV";
234 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.3";
242 grouping rsvp-error-spec-tlv {
243 description "RSVP Error Spec TLV";
244 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.4";
248 container rsvp-error {
249 uses rsvp:error-spec;
253 container user-error {
254 uses rsvp:user-error-spec;
260 grouping of-list-tlv {
261 description "OF-List TLV";
262 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
270 description "Order TLV";
271 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
285 grouping object-header {
286 description "Common Object Header";
287 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
289 leaf processing-rule {
301 description "Core object structure with optional TLVs";
305 grouping open-object {
306 description "OPEN Object";
307 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
316 uses p2mp-capable-tlv;
320 uses stateful-capability-tlv;
323 container predundancy-group-id {
324 uses predundancy-group-id-tlv;
327 container lsp-db-version {
328 uses lsp-db-version-tlv;
333 type protocol-version;
338 // Note: non-presence is equal to '0'
346 // Note: non-presence is equal to '0'
359 description "RP Object";
360 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
380 leaf reoptimization {
385 leaf bi-directional {
398 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
404 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
410 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
413 leaf ero-compression {
416 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
422 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
428 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
431 leaf make-before-break {
434 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
438 grouping no-path-object {
439 description "NO-PATH Object";
440 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
444 leaf nature-of-issue {
449 leaf unsatisfied-constraints {
450 when "nature-of-issue = 0" {
452 "The C flag has no meaning
453 and is ignored unless the NI
454 field is set to 0x00.";
461 grouping endpoints-object {
462 description "END-POINTS Object";
463 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
467 choice address-family {
469 leaf source-ipv4-address {
470 type inet:ipv4-address;
474 leaf destination-ipv4-address {
475 type inet:ipv4-address;
480 leaf source-ipv6-address {
481 type inet:ipv6-address;
485 leaf destination-ipv6-address {
486 type inet:ipv6-address;
493 grouping bandwidth-object {
494 description "BANDWIDTH Object";
495 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
497 // No possibility to carry TLVs
501 type ieee754:float32;
505 grouping metric-object {
506 description "METRIC Object";
507 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
527 type ieee754:float32;
531 grouping explicit-route-object {
532 description "Explicit Route Object";
533 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
535 // No possibility of TLVs
544 uses rsvp:route-subobjects;
548 grouping include-route-object {
549 description "Include Route Object";
550 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
552 // No possibility of TLVs
556 uses rsvp:route-subobjects;
560 grouping reported-route-object {
561 description "Reported Route Object";
562 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
564 // No possibility of TLVs
568 uses rsvp:record-route-subobjects;
572 grouping lspa-object {
573 description "LSPA Object";
574 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
583 leaf setup-priority {
588 leaf local-protection-desired {
593 uses rsvp:attribute-filters;
596 grouping svec-object {
597 description "Synchronization Vector Object";
598 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
600 // No possibility of TLVs
618 leaf-list requests-ids {
623 grouping notification-object {
624 description "NOTIFICATION Object";
625 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
627 // No possibility of TLVs
630 container overload-duration {
631 when "../type = 2 and ../value = 1";
633 uses overload-duration-tlv;
648 grouping pcep-error-object {
649 description "PCEP-ERROR Object";
650 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
652 // No possibility of TLVs
655 container req-missing {
657 uses req-missing-tlv;
672 grouping load-balancing-object {
673 description "LOAD-BALANCING Object";
674 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
676 // No possibility of TLVs
685 type ieee754:float32;
689 grouping close-object {
690 description "CLOSE Object";
691 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
693 // No possibility of TLVs
702 grouping path-key-object {
703 description "PATH-KEY Object";
704 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
723 grouping srp-object {
724 description "SRP Object";
725 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.2";
743 grouping lsp-object {
744 description "SRP Object";
745 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
749 container lsp-error-code {
750 uses lsp-error-code-tlv;
753 container lsp-identifiers {
754 uses lsp-identifiers-tlv;
757 container rsvp-error-spec {
758 uses rsvp-error-spec-tlv;
761 container symblic-path-name {
762 uses symbolic-path-name-tlv;
786 leaf administrative {
812 leaf signaling-type {
819 description "OF Object";
820 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
836 grouping classtype-object {
837 description "CLASSTYPE Object";
838 reference "https://tools.ietf.org/html/rfc5455#section-3";
849 description "GLOBAL CONSTRAINTS (GC) Object";
850 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
859 leaf max-utilization {
867 leaf min-utilization {
875 leaf over-booking-factor {
886 description "Marker grouping for message groupings.";
889 grouping message-header {
890 description "Common Header";
891 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
894 type protocol-version;
899 grouping open-message {
902 container open-message {
903 description "Open Message";
904 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
914 grouping keepalive-message {
917 container keepalive-message {
918 description "Keepalive Message";
919 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
925 grouping lsp-attributes {
930 container bandwidth {
931 uses bandwidth-object;
938 container include-route {
939 uses include-route-object;
946 container class-type {
947 uses classtype-object;
951 grouping pcreq-message {
954 container pcreq-message {
955 description "Path Computation Request Message";
956 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
965 container path-key-expansion {
966 when "rp/path-key = true";
968 uses path-key-object;
972 container segment-computation {
973 when "rp/path-key = false";
976 when "../rp/p2mp = false";
978 container endpoints {
979 uses endpoints-object;
982 container reported-route {
983 uses reported-route-object;
985 container bandwidth {
986 uses bandwidth-object;
990 container load-balancing {
991 uses load-balancing-object;
997 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.4";
1003 when "../rp/p2mp = true";
1006 container endpoints {
1007 uses endpoints-object;
1010 // FIXME: finish this
1034 grouping path-definition {
1035 container explicit-route {
1036 uses explicit-route-object;
1039 uses lsp-attributes;
1042 grouping pcrep-message {
1045 container pcrep-message {
1046 description "Path Computation Reply Message";
1047 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1049 uses message-header;
1057 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.5";
1063 uses lsp-attributes;
1066 uses path-definition;
1071 uses no-path-object;
1073 container no-path-vector {
1074 uses no-path-vector-tlv;
1084 grouping pcntf-message {
1087 container pcntf-message {
1088 description "Notification Message";
1089 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1091 uses message-header;
1093 list notifications {
1098 list notifications {
1099 uses notification-object;
1105 grouping pcerr-message {
1108 container pcerr-message {
1109 description "Error Message";
1110 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1112 uses message-header;
1115 uses pcep-error-object;
1133 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.3";
1141 grouping close-message {
1144 container close-message {
1145 description "Close Message";
1146 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1148 uses message-header;
1156 grouping pcupd-message {
1159 container pcupd-message {
1160 description "State Update Request Message";
1161 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.2";
1163 uses message-header;
1175 uses path-definition;
1181 grouping pcrpt-message {
1184 container pcrpt-message {
1185 description "State Report Message";
1186 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.1";
1188 uses message-header;
1200 uses path-definition;
1206 grouping pcinitiate-message {
1209 container pcinitiate-message {
1210 description "LSP Initiate Message";
1211 reference "https://tools.ietf.org/html/draft-crabbe-pce-pce-initiated-lsp-02#section-5.1";
1213 uses message-header;
1224 container endpoints {
1225 uses endpoints-object;
1229 uses explicit-route-object;
1232 uses lsp-attributes;