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";
671 leaf setup-priority {
676 leaf local-protection-desired {
681 uses rsvp:attribute-filters;
685 grouping svec-object {
686 description "Synchronization Vector Object";
687 reference "https://tools.ietf.org/html/rfc5440#section-7.13";
690 // No possibility of TLVs
708 leaf-list requests-ids {
714 grouping notification-object {
715 description "NOTIFICATION Object";
716 reference "https://tools.ietf.org/html/rfc5440#section-7.14";
717 container c-notification {
720 when "../type = 2 and ../value = 1";
722 uses overload-duration-tlv;
737 grouping pcep-error-object {
738 description "PCEP-ERROR Object";
739 reference "https://tools.ietf.org/html/rfc5440#section-7.15";
740 container error-object {
744 uses req-missing-tlv;
759 grouping load-balancing-object {
760 description "LOAD-BALANCING Object";
761 reference "https://tools.ietf.org/html/rfc5440#section-7.16";
763 container load-balancing {
764 // No possibility of TLVs
773 type nps-c:bandwidth;
778 grouping close-object {
779 description "CLOSE Object";
780 reference "https://tools.ietf.org/html/rfc5440#section-7.17";
796 grouping path-key-subobject {
797 reference "https://tools.ietf.org/html/rfc5520#section-3.1";
798 uses rsvp:c-subobject;
811 grouping path-key-object {
812 description "PATH-KEY Object";
813 reference "https://tools.ietf.org/html/rfc5520#section-3.2.2";
825 uses path-key-subobject;
830 grouping srp-object {
831 description "SRP Object";
832 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.2";
852 grouping lsp-object {
853 description "LSP Object";
854 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-7.3";
859 uses lsp-error-code-tlv;
861 uses lsp-identifiers-tlv;
863 uses rsvp-error-spec-tlv;
865 uses symbolic-path-name-tlv;
888 leaf administrative {
894 type operational-status;
901 description "OF Object";
902 reference "https://tools.ietf.org/html/rfc5541#section-3.1";
919 grouping classtype-object {
920 description "CLASSTYPE Object";
921 reference "https://tools.ietf.org/html/rfc5455#section-3";
923 container class-type {
934 description "GLOBAL CONSTRAINTS (GC) Object";
935 reference "https://tools.ietf.org/html/rfc5557#section-5.5";
944 leaf max-utilization {
952 leaf min-utilization {
960 leaf over-booking-factor {
972 description "Marker grouping for message groupings.";
975 grouping message-header {
976 description "Common Header";
977 reference "https://tools.ietf.org/html/rfc5440#section-6.1";
980 type protocol-version;
985 grouping open-message {
988 container open-message {
989 description "Open Message";
990 reference "https://tools.ietf.org/html/rfc5440#section-6.2";
998 grouping keepalive-message {
1001 container keepalive-message {
1002 description "Keepalive Message";
1003 reference "https://tools.ietf.org/html/rfc5440#section-6.3";
1005 uses message-header;
1009 grouping lsp-attributes {
1012 uses bandwidth-object;
1018 uses exclude-route-object;
1020 uses include-route-object;
1024 uses classtype-object;
1027 grouping pcreq-message {
1030 container pcreq-message {
1031 description "Path Computation Request Message";
1032 reference "https://tools.ietf.org/html/rfc5440#section-6.4";
1034 uses message-header;
1039 container path-key-expansion {
1040 when "rp/path-key = true";
1041 uses path-key-object;
1044 container segment-computation {
1045 when "rp/path-key = false";
1048 when "../rp/p2mp = false";
1050 uses endpoints-object;
1052 container reported-route {
1053 uses reported-route-object;
1055 uses bandwidth-object;
1058 uses load-balancing-object;
1060 uses lsp-attributes;
1074 uses exclude-route-object;
1083 grouping path-definition {
1084 uses explicit-route-object;
1086 uses lsp-attributes;
1089 grouping pcrep-message {
1092 container pcrep-message {
1093 description "Path Computation Reply Message";
1094 reference "https://tools.ietf.org/html/rfc5440#section-6.5";
1096 uses message-header;
1105 uses lsp-attributes;
1108 uses path-definition;
1113 uses no-path-object;
1115 container no-path-vector {
1116 uses no-path-vector-tlv;
1126 grouping pcntf-message {
1129 container pcntf-message {
1130 description "Notification Message";
1131 reference "https://tools.ietf.org/html/rfc5440#section-6.6";
1133 uses message-header;
1135 list notifications {
1140 list notifications {
1141 uses notification-object;
1147 grouping pcerr-message {
1150 container pcerr-message {
1151 description "Error Message";
1152 reference "https://tools.ietf.org/html/rfc5440#section-6.7";
1154 uses message-header;
1157 uses pcep-error-object;
1172 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.3";
1179 grouping close-message {
1182 container c-close-message {
1183 description "Close Message";
1184 reference "https://tools.ietf.org/html/rfc5440#section-6.8";
1186 uses message-header;
1192 grouping pcupd-message {
1195 container pcupd-message {
1196 description "State Update Request Message";
1197 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.2";
1199 uses message-header;
1207 uses path-definition;
1213 grouping pcrpt-message {
1216 container pcrpt-message {
1217 description "State Report Message";
1218 reference "https://tools.ietf.org/html/draft-ietf-pce-stateful-pce-05#section-6.1";
1220 uses message-header;
1228 uses path-definition;
1234 grouping pcinitiate-message {
1237 container pcinitiate-message {
1238 description "LSP Initiate Message";
1239 reference "https://tools.ietf.org/html/draft-crabbe-pce-pce-initiated-lsp-02#section-5.1";
1241 uses message-header;
1248 uses endpoints-object;
1250 uses explicit-route-object;
1252 uses lsp-attributes;