1 module tapi-path-computation {
\r
2 namespace "urn:onf:otcc:yang:tapi-path-computation";
\r
3 prefix tapi-path-computation;
\r
4 import tapi-topology {
\r
5 prefix tapi-topology;
\r
10 organization "ONF OTCC (Open Transport Configuration & Control) Project";
\r
12 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
\r
13 Project List: <mailto:transport-api@opennetworking.org>
\r
14 Editor: Karthik Sethuraman
\r
15 <mailto:karthik.sethuraman@necam.com>";
\r
17 This module contains TAPI Path Computation Model definitions.
\r
18 Source: TapiPathComputation.uml
\r
19 - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
\r
20 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
\r
21 <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
\r
22 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
\r
23 <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
\r
24 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
\r
25 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
\r
26 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
\r
27 The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
\r
28 YANG models included in this release may not be backward compatible with previous TAPI releases.
\r
29 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
\r
30 License: This module is distributed under the Apache License 2.0";
\r
31 revision 2018-12-10 {
\r
32 description "ONF Transport API version 2.1.1.
\r
33 Changes included in this TAPI release (v2.1.1) are listed in
\r
34 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
\r
35 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
36 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
\r
38 revision 2018-10-16 {
\r
39 description "ONF Transport API version 2.1.0.
\r
40 Changes included in this TAPI release (v2.1.0) are listed in
\r
41 <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
\r
42 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
43 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
\r
45 revision 2018-03-07 {
\r
46 description "ONF Transport API version 2.0.2
\r
47 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
48 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
\r
49 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
50 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
\r
52 revision 2018-02-16 {
\r
53 description "ONF Transport API version 2.0.1
\r
54 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
55 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
\r
56 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
57 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
\r
59 revision 2018-01-02 {
\r
60 description "ONF Transport API version 2.0.0
\r
61 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
62 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
\r
63 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
64 <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
\r
66 augment "/tapi-common:context" {
\r
67 container path-computation-context {
\r
68 uses path-computation-context;
\r
69 description "Augments the base TAPI Context with PathComputationService information";
\r
71 description "Augments the base TAPI Context with PathComputationService information";
\r
74 /**************************
\r
75 * definitions of refrences
\r
76 **************************/
\r
80 path '/tapi-common:context/tapi-path-computation:path-computation-context/tapi-path-computation:path/tapi-path-computation:uuid';
\r
87 /**************************
\r
88 * package object-classes
\r
89 **************************/
\r
92 uses tapi-topology:link-ref;
\r
93 key 'topology-uuid link-uuid';
\r
98 container routing-constraint {
\r
100 uses routing-constraint;
\r
101 description "none";
\r
104 type tapi-common:forwarding-direction;
\r
106 description "none";
\r
108 leaf layer-protocol-name {
\r
109 type tapi-common:layer-protocol-name;
\r
111 description "none";
\r
113 uses tapi-common:resource-spec;
\r
114 description "Path is described by an ordered list of TE Links. A TE Link is defined by a pair of Node/NodeEdgePoint IDs. A Connection is realized by concatenating link resources (associated with a Link) and the lower-level connections (cross-connections) in the different nodes";
\r
116 grouping path-service-end-point {
\r
117 container service-interface-point {
\r
118 uses tapi-common:service-interface-point-ref;
\r
119 description "none";
\r
121 leaf layer-protocol-name {
\r
122 type tapi-common:layer-protocol-name;
\r
123 description "none";
\r
125 leaf layer-protocol-qualifier {
\r
126 type tapi-common:layer-protocol-qualifier;
\r
127 description "none";
\r
129 container capacity {
\r
130 uses tapi-common:capacity;
\r
131 description "none";
\r
134 type tapi-common:port-role;
\r
135 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function. ";
\r
138 type tapi-common:port-direction;
\r
139 description "The orientation of defined flow at the EndPoint.";
\r
141 uses tapi-common:local-class;
\r
142 description "The association of the FC to LTPs is made via EndPoints.
\r
143 The EndPoint (EP) object class models the access to the FC function.
\r
144 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
\r
145 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
\r
146 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
\r
147 The EP replaces the Protection Unit of a traditional protection model.
\r
148 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
\r
150 grouping path-computation-service {
\r
156 description "none";
\r
162 uses path-service-end-point;
\r
163 description "none";
\r
165 container routing-constraint {
\r
166 uses routing-constraint;
\r
167 description "none";
\r
169 container topology-constraint {
\r
170 uses topology-constraint;
\r
171 description "none";
\r
173 container objective-function {
\r
174 uses path-objective-function;
\r
175 description "none";
\r
177 container optimization-constraint {
\r
178 uses path-optimization-constraint;
\r
179 description "none";
\r
181 uses tapi-common:service-spec;
\r
182 description "none";
\r
184 grouping path-objective-function {
\r
185 leaf bandwidth-optimization {
\r
186 type tapi-common:directive-value;
\r
187 description "none";
\r
189 leaf concurrent-paths {
\r
190 type tapi-common:directive-value;
\r
191 description "none";
\r
193 leaf cost-optimization {
\r
194 type tapi-common:directive-value;
\r
195 description "none";
\r
197 leaf link-utilization {
\r
198 type tapi-common:directive-value;
\r
199 description "none";
\r
201 leaf resource-sharing {
\r
202 type tapi-common:directive-value;
\r
203 description "none";
\r
205 uses tapi-common:local-class;
\r
206 description "none";
\r
208 grouping path-optimization-constraint {
\r
209 leaf traffic-interruption {
\r
210 type tapi-common:directive-value;
\r
211 description "none";
\r
213 uses tapi-common:local-class;
\r
214 description "none";
\r
216 grouping routing-constraint {
\r
217 list cost-characteristic {
\r
219 uses tapi-topology:cost-characteristic;
\r
220 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
\r
222 list latency-characteristic {
\r
223 key 'traffic-property-name';
\r
224 uses tapi-topology:latency-characteristic;
\r
225 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
\r
227 list risk-diversity-characteristic {
\r
228 key 'risk-characteristic-name';
\r
229 uses tapi-topology:risk-characteristic;
\r
230 description "none";
\r
232 leaf diversity-policy {
\r
233 type diversity-policy;
\r
234 description "none";
\r
236 leaf route-objective-function {
\r
237 type route-objective-function;
\r
238 description "none";
\r
240 leaf route-direction {
\r
241 type tapi-common:forwarding-direction;
\r
242 description "none";
\r
244 leaf is-exclusive {
\r
247 description "To distinguish if the resources are to be exclusive to the service";
\r
249 description "none";
\r
251 grouping path-computation-context {
\r
252 list path-comp-service {
\r
254 uses path-computation-service;
\r
255 description "none";
\r
261 description "none";
\r
263 description "none";
\r
265 grouping topology-constraint {
\r
266 leaf-list include-topology {
\r
267 type tapi-common:uuid;
\r
268 description "none";
\r
270 leaf-list avoid-topology {
\r
271 type tapi-common:uuid;
\r
272 description "none";
\r
274 leaf-list include-path {
\r
275 type tapi-common:uuid;
\r
276 description "none";
\r
278 leaf-list exclude-path {
\r
279 type tapi-common:uuid;
\r
280 description "none";
\r
282 leaf-list include-link {
\r
283 type tapi-common:uuid;
\r
284 description "This is a loose constraint - that is it is unordered and could be a partial list ";
\r
286 leaf-list exclude-link {
\r
287 type tapi-common:uuid;
\r
288 description "none";
\r
290 leaf-list include-node {
\r
291 type tapi-common:uuid;
\r
292 description "This is a loose constraint - that is it is unordered and could be a partial list";
\r
294 leaf-list exclude-node {
\r
295 type tapi-common:uuid;
\r
296 description "none";
\r
298 leaf-list preferred-transport-layer {
\r
299 type tapi-common:layer-protocol-name;
\r
300 description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";
\r
302 description "none";
\r
305 /**************************
\r
306 * package type-definitions
\r
307 **************************/
\r
308 typedef route-objective-function {
\r
310 enum MIN_WORK_ROUTE_HOP {
\r
311 description "none";
\r
313 enum MIN_WORK_ROUTE_COST {
\r
314 description "none";
\r
316 enum MIN_WORK_ROUTE_LATENCY {
\r
317 description "none";
\r
319 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
\r
320 description "none";
\r
322 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
\r
323 description "none";
\r
325 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
\r
326 description "none";
\r
328 enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
\r
329 description "none";
\r
332 description "none";
\r
334 typedef diversity-policy {
\r
337 description "none";
\r
340 description "none";
\r
343 description "none";
\r
346 description "none";
\r
349 description "none";
\r
352 description "none";
\r
355 /**************************
\r
356 * package interfaces
\r
357 **************************/
\r
358 rpc compute-p-2-p-path {
\r
359 description "none";
\r
365 uses path-service-end-point;
\r
366 description "none";
\r
368 container routing-constraint {
\r
369 uses routing-constraint;
\r
370 description "none";
\r
372 container topology-constraint {
\r
373 uses topology-constraint;
\r
374 description "none";
\r
376 container objective-function {
\r
377 uses path-objective-function;
\r
378 description "none";
\r
382 container service {
\r
383 uses path-computation-service;
\r
384 description "none";
\r
388 rpc optimize-p-2-p-path {
\r
389 description "none";
\r
391 leaf path-id-or-name {
\r
393 description "none";
\r
395 container routing-constraint {
\r
396 uses routing-constraint;
\r
397 description "none";
\r
399 container optimization-constraint {
\r
400 uses path-optimization-constraint;
\r
401 description "none";
\r
403 container objective-function {
\r
404 uses path-objective-function;
\r
405 description "none";
\r
409 container service {
\r
410 uses path-computation-service;
\r
411 description "none";
\r
415 rpc delete-p-2-p-path {
\r
416 description "none";
\r
418 leaf path-id-or-name {
\r
420 description "none";
\r
424 container service {
\r
425 uses path-computation-service;
\r
426 description "none";
\r