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 nps-concepts { prefix nps-c; }
9 import rsvp { prefix rsvp; revision-date 2013-08-20; }
11 organization "Cisco Systems, Inc.";
12 contact "Robert Varga <rovarga@cisco.com>";
15 "This module contains the base data model of a PCEP message.
16 It rolls up the definitions contained in RFC5440, RFC5520
19 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
21 This program and the accompanying materials are made available
22 under the terms of the Eclipse Public License v1.0 which
23 accompanies this distribution, and is available at
24 http://www.eclipse.org/legal/epl-v10.html";
26 revision "2013-10-05" {
32 // NOTE: this model uses counts bits in fields from left to right,
33 // just as IANA does for PCEP protocol.
36 typedef protocol-version {
54 typedef srp-id-number {
79 typedef symbolic-path-name {
83 typedef operational-status {
105 description "Marker grouping for TLV groupings.";
108 grouping no-path-vector-tlv {
109 description "NO-PATH-VECTOR TLV";
110 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
115 bit p2mp-unreachable {
118 bit no-gco-solution {
121 bit no-gco-migration {
125 reference "https://tools.ietf.org/html/rfc5520#section-7.4";
128 bit chain-unavailable {
134 bit unknown-destination {
137 bit pce-unavailable {
145 grouping overload-duration-tlv {
146 description "OVERLOAD-DURATION TLV";
147 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
148 container overload-duration {
157 grouping req-missing-tlv {
158 description "REQ-MISSING TLV";
159 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
160 container req-missing {
168 grouping stateful-capability-tlv {
169 description "Stateful PCE Capability TLV";
170 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.1";
176 bit lsp-update-capability {
179 bit include-db-version {
190 grouping lsp-db-version-tlv {
191 description "LSP State Database Version TLV";
192 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.2";
194 container lsp-db-version {
203 grouping predundancy-group-id-tlv {
204 description "PCE Redundancy Group Identifier TLV";
205 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.1.3";
207 container predundancy-group-id {
216 grouping lsp-identifiers-tlv {
217 description "LSP Identifiers TLV";
218 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.1";
219 container lsp-identifiers {
231 choice address-family {
233 leaf ipv4-tunnel-sender-address {
234 type inet:ipv4-address;
237 leaf ipv4-extended-tunnel-id {
238 type rsvp:ipv4-extended-tunnel-id;
243 leaf ipv6-tunnel-sender-address {
244 type inet:ipv6-address;
247 leaf ipv6-extended-tunnel-id {
248 type rsvp:ipv6-extended-tunnel-id;
253 // FIXME: add tunnel endpoint (from stateful-07)
257 grouping symbolic-path-name-tlv {
258 description "Symbolic Path Name TLV";
259 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.2";
260 container symbolic-path-name {
263 type symbolic-path-name;
269 grouping lsp-error-code-tlv {
270 description "LSP Error Code TLV";
271 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.3";
272 container lsp-error-code {
281 grouping rsvp-error-spec-tlv {
282 description "RSVP Error Spec TLV";
283 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3.4";
284 container rsvp-error-spec {
288 container rsvp-error {
289 uses rsvp:error-spec;
293 container user-error {
294 uses rsvp:user-error-spec;
301 grouping of-list-tlv {
302 description "OF-List TLV";
303 reference "https://tools.ietf.org/html/rfc5541#section-2.1";
313 description "Order TLV";
314 reference "https://tools.ietf.org/html/rfc5557#section-5.4";
330 grouping object-header {
331 description "Common Object Header";
332 reference "https://tools.ietf.org/html/rfc5440#section-7.2";
334 leaf processing-rule {
346 description "Core object structure with optional TLVs";
350 grouping open-object {
351 description "OPEN Object";
352 reference "https://tools.ietf.org/html/rfc5440#section-7.3";
359 uses stateful-capability-tlv;
361 uses predundancy-group-id-tlv;
363 uses lsp-db-version-tlv;
367 type protocol-version;
372 // Note: non-presence is equal to '0'
380 // Note: non-presence is equal to '0'
394 description "RP Object";
395 reference "https://tools.ietf.org/html/rfc5440#section-7.4";
413 leaf reoptimization {
418 leaf bi-directional {
431 reference "https://tools.ietf.org/html/rfc5520#section-3.2.1";
437 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
443 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
446 leaf ero-compression {
449 reference "https://tools.ietf.org/html/rfc6006#section-3.3.1";
455 reference "https://tools.ietf.org/html/rfc5541#section-3.3";
461 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
464 leaf make-before-break {
467 reference "https://tools.ietf.org/html/rfc5557#section-5.3";
472 grouping no-path-object {
473 description "NO-PATH Object";
474 reference "https://tools.ietf.org/html/rfc5440#section-7.5";
478 leaf nature-of-issue {
483 leaf unsatisfied-constraints {
484 when "nature-of-issue = 0" {
486 "The C flag has no meaning
487 and is ignored unless the NI
488 field is set to 0x00.";
496 choice address-family {
500 leaf source-ipv4-address {
501 type inet:ipv4-address;
505 leaf destination-ipv4-address {
506 type inet:ipv4-address;
511 leaf source-ipv6-address {
512 type inet:ipv6-address;
516 leaf destination-ipv6-address {
517 type inet:ipv6-address;
524 grouping endpoints-object {
525 description "END-POINTS Object";
526 reference "https://tools.ietf.org/html/rfc5440#section-7.6";
528 container endpoints-obj {
534 grouping bandwidth-object {
535 description "BANDWIDTH Object";
536 reference "https://tools.ietf.org/html/rfc5440#section-7.7";
537 container bandwidth {
540 // No possibility to carry TLVs
542 type nps-c:bandwidth;
547 grouping metric-object {
548 description "METRIC Object";
549 reference "https://tools.ietf.org/html/rfc5440#section-7.8";
569 type ieee754:float32;
574 grouping exclude-route-object {
575 description "Exclude Route Object";
576 reference "https://tools.ietf.org/html/rfc5521#section-2.1.1";
591 uses rsvp:exclude-route-subobjects;
596 grouping explicit-route-object {
597 description "Explicit Route Object";
598 reference "https://tools.ietf.org/html/rfc5440#section-7.9";
601 // No possibility of TLVs
610 uses rsvp:explicit-route-subobjects {
611 augment "subobject-type" {
614 uses path-key-subobject;
623 grouping include-route-object {
624 description "Include Route Object";
625 reference "https://tools.ietf.org/html/rfc5440#section-7.12";
628 // No possibility of TLVs
632 uses rsvp:explicit-route-subobjects;
637 grouping reported-route-object {
638 description "Reported Route Object";
639 reference "https://tools.ietf.org/html/rfc5440#section-7.10";
642 // No possibility of TLVs
646 uses rsvp:record-route-subobjects {
647 augment "subobject-type" {
650 uses path-key-subobject;
659 grouping lspa-object {
660 description "LSPA Object";
661 reference "https://tools.ietf.org/html/rfc5440#section-7.11";
665 uses rsvp:tunnel-attributes;
669 grouping svec-object {
670 description "Synchronization Vector Object";
671 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
674 // No possibility of TLVs
692 leaf-list requests-ids {
698 grouping notification-object {
699 description "NOTIFICATION Object";
700 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
701 container c-notification {
704 when "../type = 2 and ../value = 1";
706 uses overload-duration-tlv;
721 grouping pcep-error-object {
722 description "PCEP-ERROR Object";
723 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
724 container error-object {
728 uses req-missing-tlv;
743 grouping load-balancing-object {
744 description "LOAD-BALANCING Object";
745 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
747 container load-balancing {
748 // No possibility of TLVs
757 type nps-c:bandwidth;
762 grouping close-object {
763 description "CLOSE Object";
764 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
780 grouping path-key-subobject {
781 reference "https://tools.ietf.org/html/rfc5520#section-3.1";
782 uses rsvp:c-subobject;
795 grouping path-key-object {
796 description "PATH-KEY Object";
797 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
809 uses path-key-subobject;
814 grouping srp-object {
815 description "SRP Object";
816 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.2";
836 grouping lsp-object {
837 description "LSP Object";
838 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
843 uses lsp-error-code-tlv;
845 uses lsp-identifiers-tlv;
847 uses rsvp-error-spec-tlv;
849 uses symbolic-path-name-tlv;
872 leaf administrative {
878 type operational-status;
885 description "OF Object";
886 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
903 grouping classtype-object {
904 description "CLASSTYPE Object";
905 reference "https://tools.ietf.org/html/rfc5455#section-3";
907 container class-type {
918 description "GLOBAL CONSTRAINTS (GC) Object";
919 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
928 leaf max-utilization {
936 leaf min-utilization {
944 leaf over-booking-factor {
956 description "Marker grouping for message groupings.";
959 grouping message-header {
960 description "Common Header";
961 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
964 type protocol-version;
969 grouping open-message {
972 container open-message {
973 description "Open Message";
974 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
982 grouping keepalive-message {
985 container keepalive-message {
986 description "Keepalive Message";
987 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
993 grouping lsp-attributes {
996 uses bandwidth-object;
1002 uses exclude-route-object;
1004 uses include-route-object;
1008 uses classtype-object;
1011 grouping pcreq-message {
1014 container pcreq-message {
1015 description "Path Computation Request Message";
1016 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1018 uses message-header;
1023 container path-key-expansion {
1024 when "rp/path-key = true";
1025 uses path-key-object;
1028 container segment-computation {
1029 when "rp/path-key = false";
1032 when "../rp/p2mp = false";
1034 uses endpoints-object;
1036 container reported-route {
1037 uses reported-route-object;
1039 uses bandwidth-object;
1042 uses load-balancing-object;
1044 uses lsp-attributes;
1058 uses exclude-route-object;
1067 grouping path-definition {
1068 uses explicit-route-object;
1070 uses lsp-attributes;
1073 grouping pcrep-message {
1076 container pcrep-message {
1077 description "Path Computation Reply Message";
1078 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1080 uses message-header;
1089 uses lsp-attributes;
1092 uses path-definition;
1097 uses no-path-object;
1099 container no-path-vector {
1100 uses no-path-vector-tlv;
1110 grouping pcntf-message {
1113 container pcntf-message {
1114 description "Notification Message";
1115 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1117 uses message-header;
1119 list notifications {
1124 list notifications {
1125 uses notification-object;
1131 grouping pcerr-message {
1134 container pcerr-message {
1135 description "Error Message";
1136 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1138 uses message-header;
1141 uses pcep-error-object;
1156 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.3";
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 pcupd-message {
1179 container pcupd-message {
1180 description "State Update Request Message";
1181 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.2";
1183 uses message-header;
1191 uses path-definition;
1197 grouping pcrpt-message {
1200 container pcrpt-message {
1201 description "State Report Message";
1202 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.1";
1204 uses message-header;
1212 uses path-definition;
1218 grouping pcinitiate-message {
1221 container pcinitiate-message {
1222 description "LSP Initiate Message";
1223 reference "https://tools.ietf.org/html/draft-crabbe-pce-pce-initiated-lsp-02#section-5.1";
1225 uses message-header;
1232 uses endpoints-object;
1234 uses explicit-route-object;
1236 uses lsp-attributes;