1 module tapi-connectivity {
2 namespace "urn:onf:otcc:yang:tapi-connectivity";
3 prefix tapi-connectivity;
10 import tapi-path-computation {
11 prefix tapi-path-computation;
13 organization "ONF OTCC (Open Transport Configuration & Control) Project";
15 Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
16 Project List: <mailto:transport-api@opennetworking.org>
17 Editor: Karthik Sethuraman
18 <mailto:karthik.sethuraman@necam.com>";
20 This module contains TAPI Connectivity Model definitions.
21 Source: TapiConnectivity.uml
22 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
23 License: This module is distributed under the Apache License 2.0";
25 description "ONF Transport API version 2.0.2
26 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool version .
27 <https://wiki.opennetworking.org/display/OIMT/IISOMI>
28 Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/change-log.md>";
29 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
30 <https://github.com/OpenNetworkingFoundation/TAPI/tree/develop/UML>";
32 augment "/tapi-common:context" {
33 uses connectivity-context;
34 description "Augments the base TAPI Context with ConnectivityService information";
36 augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
41 /*************************
42 * definitions of refrences
43 *************************/
44 grouping connectivity-service-ref {
45 leaf connectivity-service-id {
47 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
52 grouping connection-end-point-ref {
53 uses tapi-topology:owned-node-edge-point-ref;
54 leaf connection-end-point-id {
56 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
61 grouping connection-ref {
64 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
69 grouping switch-control-ref {
71 leaf switch-control-id {
73 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
78 /***********************
79 * package object-classes
80 **********************/
82 list connection-end-point {
83 uses connection-end-point-ref;
84 key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
89 leaf-list lower-connection {
91 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
93 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
94 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
95 Connection aggregation reflects Node/Topology aggregation.
96 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
104 list switch-control {
111 type tapi-common:forwarding-direction;
115 leaf layer-protocol-name {
116 type tapi-common:layer-protocol-name;
120 uses tapi-common:resource-spec;
121 uses tapi-common:operational-state-pac;
122 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
123 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
125 grouping connection-end-point {
126 leaf layer-protocol-name {
127 type tapi-common:layer-protocol-name;
131 leaf connectivity-service-end-point {
133 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
137 list parent-node-edge-point {
138 uses tapi-topology:owned-node-edge-point-ref;
139 key 'topology-id node-id owned-node-edge-point-id';
144 list client-node-edge-point {
145 uses tapi-topology:owned-node-edge-point-ref;
146 key 'topology-id node-id owned-node-edge-point-id';
150 leaf connection-port-direction {
151 type tapi-common:port-direction;
153 description "The orientation of defined flow at the EndPoint.";
155 leaf connection-port-role {
156 type tapi-common:port-role;
158 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. ";
160 uses tapi-common:resource-spec;
161 uses tapi-common:operational-state-pac;
162 uses tapi-common:termination-pac;
163 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
164 The structure of LTP supports all transport protocols including circuit and packet forms.";
166 grouping connectivity-constraint {
173 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
178 description "To distinguish if the resources are exclusive to the service - for example between EPL(isExclusive=true) and EVPL (isExclusive=false), or between EPLAN (isExclusive=true) and EVPLAN (isExclusive=false)";
180 container requested-capacity {
181 uses tapi-common:capacity;
185 uses tapi-common:time-range;
188 list cost-characteristic {
190 uses tapi-topology:cost-characteristic;
191 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
193 list latency-characteristic {
194 key 'traffic-property-name';
195 uses tapi-topology:latency-characteristic;
196 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
198 leaf coroute-inclusion {
200 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
204 list diversity-exclusion {
205 uses connectivity-service-ref;
206 key 'connectivity-service-id';
209 uses route-compute-policy;
212 grouping connectivity-service {
216 uses connectivity-service-end-point;
219 leaf-list connection {
221 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
227 type tapi-common:forwarding-direction;
230 leaf layer-protocol-name {
231 type tapi-common:layer-protocol-name;
234 uses tapi-common:service-spec;
235 uses connectivity-constraint;
236 uses topology-constraint;
237 uses tapi-common:admin-state-pac;
238 uses resilience-constraint;
239 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
240 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
242 grouping connectivity-service-end-point {
243 leaf layer-protocol-name {
244 type tapi-common:layer-protocol-name;
247 container service-interface-point {
248 uses tapi-common:service-interface-point-ref;
252 uses tapi-common:capacity;
256 type tapi-common:port-direction;
257 description "The orientation of defined flow at the EndPoint.";
260 type tapi-common:port-role;
261 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. ";
263 leaf protection-role {
264 type protection-role;
265 description "To specify the protection role of this Port when create or update ConnectivityService.";
267 uses tapi-common:local-class;
268 uses tapi-common:admin-state-pac;
269 description "The association of the FC to LTPs is made via EndPoints.
270 The EndPoint (EP) object class models the access to the FC function.
271 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
272 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
273 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
274 The EP replaces the Protection Unit of a traditional protection model.
275 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
278 leaf-list connection-end-point {
280 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
286 uses tapi-common:local-class;
287 description "The FC Route (FcRoute) object class models the individual routes of an FC.
288 The route of an FC object is represented by a list of FCs at a lower level.
289 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
291 grouping connectivity-context {
292 list connectivity-service {
294 uses connectivity-service;
306 list selected-connection-end-point {
307 uses connection-end-point-ref;
308 key 'topology-id node-id owned-node-edge-point-id connection-end-point-id';
312 leaf-list selected-route {
314 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
319 leaf selection-control {
320 type selection-control;
321 description "Degree of administrative control applied to the switch selection.";
323 leaf selection-reason {
324 type selection-reason;
326 description "The reason for the current switch selection.";
328 leaf switch-direction {
329 type tapi-common:port-direction;
330 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
332 uses tapi-common:local-class;
333 description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
334 If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
335 The FC switch represents and defines a protection switch structure encapsulated in the FC.
336 Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
337 One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
338 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
339 It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
340 It may be locked out (prevented from switching), force switched or manual switched.
341 It will indicate switch state and change of state.
342 The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
343 The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
344 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
346 grouping switch-control {
347 list sub-switch-control {
348 uses switch-control-ref;
349 key 'connection-id switch-control-id';
357 uses tapi-common:resource-spec;
358 uses resilience-constraint;
359 description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
361 grouping resilience-constraint {
362 container resilience-type {
363 uses tapi-topology:resilience-type;
366 leaf restoration-coordinate-type {
367 type coordinate-type;
368 description " The coordination mechanism between multi-layers.";
370 leaf restore-priority {
374 leaf reversion-mode {
376 description "Indcates whether the protection scheme is revertive or non-revertive.";
378 leaf wait-to-revert-time {
381 description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
385 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
389 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
390 This overrides all other protection control states including forced.
391 If the item is locked out then it cannot be used under any circumstances.
392 Note: Only relevant when part of a protection scheme.";
396 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
397 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
398 All administrative controls of any aspect of protection are rejected.";
400 leaf is-coordinated-switching-both-ends {
402 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
404 leaf max-switch-times {
406 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
408 leaf layer-protocol {
409 type tapi-common:layer-protocol-name;
410 description "Indicate which layer this resilience parameters package configured for.";
412 description "A list of control parameters to apply to a switch.";
414 grouping topology-constraint {
415 list include-topology {
416 uses tapi-topology:topology-ref;
421 list avoid-topology {
422 uses tapi-topology:topology-ref;
428 uses tapi-path-computation:path-ref;
434 uses tapi-path-computation:path-ref;
440 uses tapi-topology:link-ref;
441 key 'topology-id link-id';
443 description "This is a loose constraint - that is it is unordered and could be a partial list ";
446 uses tapi-topology:link-ref;
447 key 'topology-id link-id';
452 uses tapi-topology:node-ref;
453 key 'topology-id node-id';
455 description "This is a loose constraint - that is it is unordered and could be a partial list";
458 uses tapi-topology:node-ref;
459 key 'topology-id node-id';
463 leaf-list preferred-transport-layer {
464 type tapi-common:layer-protocol-name;
466 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";
471 list connection-end-point {
473 uses connection-end-point;
478 grouping route-compute-policy {
479 leaf route-objective-function {
480 type route-objective-function;
483 leaf diversity-policy {
484 type diversity-policy;
490 /***********************
491 * package type-definitions
492 **********************/
493 typedef service-type {
495 enum POINT_TO_POINT_CONNECTIVITY {
498 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
501 enum MULTIPOINT_CONNECTIVITY {
504 enum ROOTED_MULTIPOINT_CONNECTIVITY {
510 typedef reversion-mode {
513 description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
516 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
519 description "The reversion mode associated with protection.";
521 typedef selection-control {
524 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
525 This overrides all other protection control states including forced.
526 If the item is locked out then it cannot be used under any circumstances.
527 Note: Only relevant when part of a protection scheme.";
539 description "Possible degrees of administrative control applied to the Route selection.";
541 typedef selection-reason {
555 enum WAIT_TO_REVERT {
558 enum SIGNAL_DEGRADE {
565 description "The cause of the current route selection.";
567 typedef coordinate-type {
575 enum WAIT_FOR_NOTIFICATION {
581 typedef route-objective-function {
583 enum MIN_WORK_ROUTE_HOP {
586 enum MIN_WORK_ROUTE_COST {
589 enum MIN_WORK_ROUTE_LATENCY {
592 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_HOP {
595 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_COST {
598 enum MIN_SUM_OF_WORK_AND_PROTECTION_ROUTE_LATENCY {
601 enum LOAD_BALANCE_MAX_UNUSED_CAPACITY {
607 typedef diversity-policy {
627 typedef protection-role {
644 enum PROTECT_RESTORE {
651 /***********************
653 **********************/
654 rpc get-connection-details {
657 leaf service-id-or-name {
661 leaf connection-id-or-name {
667 container connection {
673 rpc get-connectivity-service-list {
677 uses connectivity-service;
682 rpc get-connectivity-service-details {
685 leaf service-id-or-name {
692 uses connectivity-service;
697 rpc create-connectivity-service {
702 uses connectivity-service-end-point;
705 container conn-constraint {
706 uses connectivity-constraint;
709 container topo-constraint {
710 uses topology-constraint;
713 list resilience-constraint {
714 uses resilience-constraint;
724 uses connectivity-service;
729 rpc update-connectivity-service {
732 leaf service-id-or-name {
736 container end-point {
737 uses connectivity-service-end-point;
740 container conn-constraint {
741 uses connectivity-constraint;
744 container topo-constraint {
745 uses topology-constraint;
748 list resilience-constraint {
749 uses resilience-constraint;
759 uses connectivity-service;
764 rpc delete-connectivity-service {
767 leaf service-id-or-name {
774 uses connectivity-service;