blob: 51348838138d2ecf6079034145f28addd5434e8b [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-topology {
2 namespace "urn:onf:params:xml:ns:yang:tapi-topology";
3 prefix tapi-topology;
4 import tapi-common {
5 prefix tapi-common;
6 }
7 organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
8 contact "
9 WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
10 WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
11 WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
12 Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
13 description "none";
14 revision 2017-05-31 {
15 description "TAPI SDK 2.0-alpha";
16 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
17 }
18 augment "/tapi-common:context" {
19 uses topology-context;
20 description "Augments the base TAPI Context with TopologyService information";
21 }
22 /***********************
23 * package object-classes
24 **********************/
25 grouping link {
26 leaf-list node-edge-point {
27 type leafref {
28 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
29 }
30 config false;
31 min-elements 2;
32 description "none";
33 }
Toru Furusawa28988892017-10-30 17:28:40 -070034 leaf-list layer-protocol-name {
35 type tapi-common:layer-protocol-name;
36 config false;
37 min-elements 1;
38 description "none";
39 }
40 leaf direction {
41 type tapi-common:forwarding-direction;
42 config false;
43 description "The directionality of the Link.
44 Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).
45 Is not present in more complex cases.";
46 }
47 container resilience-type {
48 uses resilience-type;
49 description "none";
50 }
51 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -050052 uses tapi-common:admin-state-pac;
53 uses tapi-common:capacity-pac;
54 uses tapi-topology:transfer-cost-pac;
55 uses tapi-topology:transfer-integrity-pac;
56 uses tapi-topology:transfer-timing-pac;
57 uses tapi-topology:risk-parameter-pac;
58 uses tapi-topology:validation-pac;
59 uses tapi-topology:layer-protocol-transition-pac;
Toru Furusawa28988892017-10-30 17:28:40 -070060 description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
61 }
62 grouping node {
63 list owned-node-edge-point {
64 key 'uuid';
65 config false;
66 uses node-edge-point;
67 description "none";
68 }
69 leaf-list aggregated-node-edge-point {
70 type leafref {
71 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
72 }
73 config false;
74 description "none";
75 }
76 list node-rule-group {
77 key 'uuid';
78 uses node-rule-group;
79 description "none";
80 }
81 leaf encap-topology {
82 type leafref {
83 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
84 }
85 config false;
86 description "none";
87 }
Toru Furusawa28988892017-10-30 17:28:40 -070088 leaf-list layer-protocol-name {
89 type tapi-common:layer-protocol-name;
90 config false;
91 min-elements 1;
92 description "none";
93 }
94 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -050095 uses tapi-common:admin-state-pac;
96 uses tapi-common:capacity-pac;
97 uses tapi-topology:transfer-cost-pac;
98 uses tapi-topology:transfer-integrity-pac;
99 uses tapi-topology:transfer-timing-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700100 description "The ForwardingDomain (FD) object class models the “ForwardingDomain” topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
101 At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
102 }
103 grouping topology {
104 list node {
105 key 'uuid';
106 config false;
107 uses node;
108 description "none";
109 }
110 list link {
111 key 'uuid';
112 config false;
113 uses link;
114 description "none";
115 }
116 leaf-list layer-protocol-name {
117 type tapi-common:layer-protocol-name;
118 config false;
119 min-elements 1;
120 description "none";
121 }
122 uses tapi-common:resource-spec;
123 description "The ForwardingDomain (FD) object class models the “ForwardingDomain” topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
124 At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
125 }
126 grouping layer-protocol-transition-pac {
127 leaf-list transitioned-layer-protocol-name {
128 type string;
129 min-elements 2;
130 description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
131 }
132 description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.
133 This abstraction is relevant when considering multi-layer routing.
134 The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
135 This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
136 Links that included details in this Pac are often referred to as Transitional Links.";
137 }
138 grouping node-edge-point {
wu6a418d22018-02-02 01:49:21 -0500139 leaf layer-protocol-name {
140 type tapi-common:layer-protocol-name;
Toru Furusawa28988892017-10-30 17:28:40 -0700141 config false;
Toru Furusawa28988892017-10-30 17:28:40 -0700142 description "none";
143 }
144 leaf-list aggregated-node-edge-point {
145 type leafref {
146 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
147 }
148 config false;
149 description "none";
150 }
151 leaf-list mapped-service-interface-point {
152 type leafref {
153 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
154 }
155 description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";
156 }
Toru Furusawa28988892017-10-30 17:28:40 -0700157 leaf link-port-direction {
158 type tapi-common:port-direction;
159 config false;
160 description "The orientation of defined flow at the LinkEnd.";
161 }
162 leaf link-port-role {
163 type tapi-common:port-role;
164 config false;
165 description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root) in the context of the Link with respect to the Link function. ";
166 }
167 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500168 uses tapi-common:admin-state-pac;
169 uses tapi-common:termination-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700170 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
171 The structure of LTP supports all transport protocols including circuit and packet forms.";
172 }
173 grouping risk-parameter-pac {
174 list risk-characteristic {
175 key 'risk-characteristic-name';
176 config false;
177 min-elements 1;
178 uses risk-characteristic;
179 description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
180 }
181 description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.
182 The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
183 A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
184 The realization can be partitioned into segments which have some relevant common failure modes.
185 There is a risk of failure/degradation of each segment of the underlying realization.
186 Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
187 Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
188 Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
189 The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
190 A segment has one or more risk characteristic.
191 Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
192 Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
193 }
194 grouping transfer-cost-pac {
195 list cost-characteristic {
196 key 'cost-name';
197 config false;
198 min-elements 1;
199 uses cost-characteristic;
200 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
201 }
202 description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.
203 They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
204 There may be many perspectives from which cost may be considered for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.
205 Using an entity will incur a cost. ";
206 }
207 grouping transfer-integrity-pac {
208 leaf error-characteristic {
209 type string;
210 config false;
211 description "Describes the degree to which the signal propagated can be errored.
212 Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
213 }
214 leaf loss-characteristic {
215 type string;
216 config false;
217 description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
218 Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
219 }
220 leaf repeat-delivery-characteristic {
221 type string;
222 config false;
223 description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).
224 It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
225 }
226 leaf delivery-order-characteristic {
227 type string;
228 config false;
229 description "Describes the degree to which packets will be delivered out of sequence.
230 Does not apply to TDM as the TDM protocols maintain strict order.";
231 }
232 leaf unavailable-time-characteristic {
233 type string;
234 config false;
235 description "Describes the duration for which there may be no valid signal propagated.";
236 }
237 leaf server-integrity-process-characteristic {
238 type string;
239 config false;
240 description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
241 }
242 description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
243 It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
244 Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
245 }
246 grouping transfer-timing-pac {
247 list latency-characteristic {
248 key 'traffic-property-name';
249 config false;
250 min-elements 1;
251 uses latency-characteristic;
252 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
253 }
254 description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
255 }
256 grouping validation-pac {
257 list validation-mechanism {
258 key 'validation-mechanism';
259 config false;
260 min-elements 1;
261 uses validation-mechanism;
262 description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
263 }
264 description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
265 }
266 grouping network-topology-service {
267 leaf-list topology {
268 type leafref {
269 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
270 }
271 config false;
272 description "none";
273 }
274 uses tapi-common:service-spec;
275 description "none";
276 }
277 grouping topology-context {
278 container nw-topology-service {
279 config false;
280 uses network-topology-service;
281 description "none";
282 }
283 list topology {
284 key 'uuid';
285 config false;
286 uses topology;
287 description "none";
288 }
289 description "none";
290 }
291 grouping inter-rule-group {
292 list rule {
293 key 'local-id';
294 min-elements 1;
295 uses rule;
296 description "none";
297 }
298 leaf-list associated-node-rule-group {
299 type leafref {
300 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';
301 }
302 min-elements 2;
303 description "none";
304 }
Toru Furusawa28988892017-10-30 17:28:40 -0700305 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500306 uses tapi-common:capacity-pac;
307 uses tapi-topology:transfer-cost-pac;
308 uses tapi-topology:transfer-timing-pac;
309 uses tapi-topology:risk-parameter-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700310 description "none";
311 }
312 grouping node-rule-group {
313 list rule {
314 key 'local-id';
315 min-elements 1;
316 uses rule;
317 description "none";
318 }
319 leaf-list node-edge-point {
320 type leafref {
321 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
322 }
323 min-elements 1;
324 description "none";
325 }
326 leaf-list node-rule-group {
327 type leafref {
328 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';
329 }
330 description "none";
331 }
332 list inter-rule-group {
333 key 'uuid';
334 uses inter-rule-group;
335 description "none";
336 }
Toru Furusawa28988892017-10-30 17:28:40 -0700337 uses tapi-common:resource-spec;
wu6a418d22018-02-02 01:49:21 -0500338 uses tapi-common:capacity-pac;
339 uses tapi-topology:transfer-cost-pac;
340 uses tapi-topology:transfer-timing-pac;
341 uses tapi-topology:risk-parameter-pac;
Toru Furusawa28988892017-10-30 17:28:40 -0700342 description "none";
343 }
344 grouping rule {
345 leaf rule-type {
346 type rule-type;
347 description "none";
348 }
349 leaf forwarding-rule {
350 type forwarding-rule;
351 description "none";
352 }
353 leaf override-priority {
354 type uint64;
355 description "none";
356 }
357 uses tapi-common:local-class;
358 description "none";
359 }
360
361 /***********************
362 * package type-definitions
363 **********************/
364 grouping cost-characteristic {
365 leaf cost-name {
366 type string;
367 description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
368 }
369 leaf cost-value {
370 type string;
371 description "The specific cost.";
372 }
373 leaf cost-algorithm {
374 type string;
375 description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
376 }
377 description "The information for a particular cost characteristic.";
378 }
379 grouping latency-characteristic {
380 leaf traffic-property-name {
381 type string;
382 description "The identifier of the specific traffic property to which the queuing latency applies.";
383 }
384 leaf fixed-latency-characteristic {
385 type string;
386 config false;
387 description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
388 }
389 leaf queing-latency-characteristic {
390 type string;
391 description "The specific queuing latency for the traffic property.";
392 }
393 leaf jitter-characteristic {
394 type string;
395 config false;
396 description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
397 Applies to TDM systems (and not packet).";
398 }
399 leaf wander-characteristic {
400 type string;
401 config false;
402 description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
403 Applies to TDM systems (and not packet).";
404 }
405 description "Provides information on latency characteristic for a particular stated trafficProperty.";
406 }
407 grouping risk-characteristic {
408 leaf risk-characteristic-name {
409 type string;
410 description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.
411 For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
412 Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
413 }
414 leaf-list risk-identifier-list {
415 type string;
416 min-elements 1;
417 description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
418 }
419 description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
420 }
421 grouping validation-mechanism {
422 leaf validation-mechanism {
423 type string;
424 description "Name of mechanism used to validate adjacency";
425 }
426 leaf layer-protocol-adjacency-validated {
427 type string;
428 description "State of validatiion";
429 }
430 leaf validation-robustness {
431 type string;
432 description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
433 }
434 description "Identifies the validation mechanism and describes the characteristics of that mechanism";
435 }
436 typedef forwarding-rule {
437 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500438 enum MAY_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700439 description "none";
440 }
wu6a418d22018-02-02 01:49:21 -0500441 enum MUST_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700442 description "none";
443 }
wu6a418d22018-02-02 01:49:21 -0500444 enum CANNOT_FORWARD_ACROSS_GROUP {
Toru Furusawa28988892017-10-30 17:28:40 -0700445 description "none";
446 }
wu6a418d22018-02-02 01:49:21 -0500447 enum NO_STATEMENT_ON_FORWARDING {
Toru Furusawa28988892017-10-30 17:28:40 -0700448 description "none";
449 }
450 }
451 description "none";
452 }
453 typedef rule-type {
454 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500455 enum FORWARDING {
Toru Furusawa28988892017-10-30 17:28:40 -0700456 description "none";
457 }
wu6a418d22018-02-02 01:49:21 -0500458 enum CAPACITY {
Toru Furusawa28988892017-10-30 17:28:40 -0700459 description "none";
460 }
wu6a418d22018-02-02 01:49:21 -0500461 enum COST {
Toru Furusawa28988892017-10-30 17:28:40 -0700462 description "none";
463 }
wu6a418d22018-02-02 01:49:21 -0500464 enum TIMING {
Toru Furusawa28988892017-10-30 17:28:40 -0700465 description "none";
466 }
wu6a418d22018-02-02 01:49:21 -0500467 enum RISK {
Toru Furusawa28988892017-10-30 17:28:40 -0700468 description "none";
469 }
wu6a418d22018-02-02 01:49:21 -0500470 enum GROUPING {
Toru Furusawa28988892017-10-30 17:28:40 -0700471 description "none";
472 }
473 }
474 description "none";
475 }
476 grouping resilience-type {
477 leaf restoration-policy {
478 type restoration-policy;
479 description "none";
480 }
481 leaf protection-type {
482 type protection-type;
483 description "none";
484 }
485 description "none";
486 }
487 typedef restoration-policy {
488 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500489 enum PER_DOMAIN_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700490 description "none";
491 }
wu6a418d22018-02-02 01:49:21 -0500492 enum END_TO_END_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700493 description "none";
494 }
wu6a418d22018-02-02 01:49:21 -0500495 enum NA {
Toru Furusawa28988892017-10-30 17:28:40 -0700496 description "none";
497 }
498 }
499 description "none";
500 }
501 typedef protection-type {
502 type enumeration {
wu6a418d22018-02-02 01:49:21 -0500503 enum NO_PROTECTON {
Toru Furusawa28988892017-10-30 17:28:40 -0700504 description "none";
505 }
wu6a418d22018-02-02 01:49:21 -0500506 enum ONE_PLUS_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700507 description "none";
508 }
wu6a418d22018-02-02 01:49:21 -0500509 enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700510 description "none";
511 }
wu6a418d22018-02-02 01:49:21 -0500512 enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700513 description "none";
514 }
wu6a418d22018-02-02 01:49:21 -0500515 enum ONE_FOR_ONE_PROTECTION {
Toru Furusawa28988892017-10-30 17:28:40 -0700516 description "none";
517 }
wu6a418d22018-02-02 01:49:21 -0500518 enum DYNAMIC_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700519 description "none";
520 }
wu6a418d22018-02-02 01:49:21 -0500521 enum PRE_COMPUTED_RESTORATION {
Toru Furusawa28988892017-10-30 17:28:40 -0700522 description "none";
523 }
524 }
525 description "none";
526 }
527
528 /***********************
529 * package interfaces
530 **********************/
531 rpc get-topology-details {
532 description "none";
533 input {
534 leaf topology-id-or-name {
535 type string;
536 description "none";
537 }
538 }
539 output {
540 container topology {
541 uses topology;
542 description "none";
543 }
544 }
545 }
546 rpc get-node-details {
547 description "none";
548 input {
549 leaf topology-id-or-name {
550 type string;
551 description "none";
552 }
553 leaf node-id-or-name {
554 type string;
555 description "none";
556 }
557 }
558 output {
559 container node {
560 uses node;
561 description "none";
562 }
563 }
564 }
565 rpc get-node-edge-point-details {
566 description "none";
567 input {
568 leaf topology-id-or-name {
569 type string;
570 description "none";
571 }
572 leaf node-id-or-name {
573 type string;
574 description "none";
575 }
576 leaf ep-id-or-name {
577 type string;
578 description "none";
579 }
580 }
581 output {
582 container node-edge-point {
583 uses node-edge-point;
584 description "none";
585 }
586 }
587 }
588 rpc get-link-details {
589 description "none";
590 input {
591 leaf topology-id-or-name {
592 type string;
593 description "none";
594 }
595 leaf link-id-or-name {
596 type string;
597 description "none";
598 }
599 }
600 output {
601 container link {
602 uses link;
603 description "none";
604 }
605 }
606 }
607 rpc get-topology-list {
608 description "none";
609 output {
610 list topology {
611 uses topology;
612 description "none";
613 }
614 }
615 }
616
617}