1 module org-openroadm-controller-customization {
3 namespace "http://org/openroadm/controller/customization";
4 prefix org-openroadm-controller-customization;
6 import org-openroadm-common-link-types {
7 prefix org-openroadm-common-link-types;
8 revision-date 2019-11-29;
10 import org-openroadm-common-node-types {
11 prefix org-openroadm-common-node-types;
12 revision-date 2021-05-28;
14 import org-openroadm-common-service-types {
15 prefix org-openroadm-common-service-types;
16 revision-date 2021-12-10;
18 import org-openroadm-common-optical-channel-types {
19 prefix org-openroadm-common-optical-channel-types;
20 revision-date 2021-12-10;
28 "YANG definitions of services.
30 Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
31 All other rights reserved.
33 Redistribution and use in source and binary forms, with or without modification,
34 are permitted provided that the following conditions are met:
36 * Redistributions of source code must retain the above copyright notice, this
37 list of conditions and the following disclaimer.
38 * Redistributions in binary form must reproduce the above copyright notice,
39 this list of conditions and the following disclaimer in the documentation and/or
40 other materials provided with the distribution.
41 * Neither the Members of the Open ROADM MSA Agreement nor the names of its
42 contributors may be used to endorse or promote products derived from this software
43 without specific prior written permission.
45 THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
46 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
47 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
48 IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
49 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
50 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
51 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
52 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
53 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
54 POSSIBILITY OF SUCH DAMAGE";
89 typedef notification-events {
91 enum roadm-to-roadm-link-creation {
94 enum roadm-to-roadm-link-deletion {
97 enum otn-link-creation {
100 enum otn-link-deletion {
103 enum xpdr-in-out-link-creation {
106 enum xpdr-in-out-link-deletion {
109 enum link-state-change {
112 enum otn-link-bandwidth-usage-change {
121 enum node-state-change {
130 enum tp-state-change {
133 enum ila-state-change {
144 "Define possible notification events.";
147 typedef rmsa-policy {
149 enum maximize-capacity {
152 enum maximize-reach {
155 enum minimize-margins {
158 enum maximize-margins {
161 enum customer-spectrum-partitioning {
164 enum fragmentation-limiting-partitioning {
169 "Defines Routing Modulation and and Spectrum Allocation policies.";
172 typedef non-rpc-related-notification-type {
174 enum service-state-change {
177 enum topology-change {
180 enum exceeded-attenuation-crossing-warning {
183 enum insufficient-margin-crossing-alarm {
186 enum autonomous-optical-restoration-triggered {
191 "Defines notification types for non rpc related notifications.";
194 typedef restriction-scope {
196 "Used to indicate the scope of global restrictions";
198 enum service-create {
201 enum service-create-bulk {
204 enum temp-service-create {
207 enum temp-service-create-bulk {
210 enum service-feasibility-check {
213 enum service-feasibility-check-bulk {
219 enum service-reconfigure {
222 enum service-restoration {
225 enum service-reroute {
228 enum network-re-optimization {
237 typedef restriction-type {
239 "Used to indicate type of restriction for site or node";
244 "Add/drops are forbidden at the associated node (or site).
245 No service may add or drop at site/node";
250 "Routing through the associated node (or site) is forbidden.
251 No service may pass-through at site/node";
256 "Both adds/drops and through routing are forbidden for
257 the associated node (or site).";
262 typedef regeneration-restriction-type {
264 "Used to indicate the type of restriction for the regeneration type";
266 enum do-not-propose {
269 "Proposing new regens (via a feasibility check)
270 at the associated node (or site) is forbidden.";
272 enum do-not-use-existing {
275 "Use of an existing regen at the associated node
276 (or site) is forbidden.";
281 "Both use of existing regens and proposal of new regens
282 are forbidden at the associated node (or site).";
287 grouping spectrum-portion {
289 "Specifies a portion of the spectrum and its characteristics.";
290 leaf spectrum-portion-id {
293 "Identifies a spectrum portion with specific characteristics.";
295 leaf start-edge-frequency {
296 type org-openroadm-common-optical-channel-types:frequency-THz;
298 "If present, this parameter states the lowest frequency to start
299 filling the spectrum, or a spectrum portion if stop-bandwidth
302 leaf stop-edge-frequency {
303 type org-openroadm-common-optical-channel-types:frequency-THz;
305 "If present and associated with a start frequency, this parameter
306 states the upper frequency broundary to fill the spectrum portion.
307 If present, in the absence of a start frequency, this parameter
308 states the highest frequency to start filling the spectrum.";
310 leaf-list dedicated-customer {
313 "Applies only to spectrum-portion (both start and stop edge frequencies
314 defined), when the spectrum-portion is dedicated to some customers.
315 This list shall includes customer-codes identifying specific customers.
316 No customer out of this list can share the bandwidth of this spectrum
319 leaf-list non-authorized-customer {
322 "Applies only to spectrum-portion (both start and stop edge frequencies
323 defined), when the spectrum-portion is dedicated to some customers.
324 This list shall includes customer-codes identifying specific customers,
325 that are not allowed to share the bandwidth of this spectrum portion";
329 grouping controller-parameters {
331 "Defines the structure of Service/controller-behaviour-settings container,
332 as well as the structure of controller-parameters-setting rpc input";
333 container non-rpc-related-notification-settings {
335 "Defines url, notification-type and type of events that shall / shall not
336 trigger notifications";
337 list non-rpc-related-notification-url-list {
338 key "non-rpc-related-notification-type";
340 "Used to record url to be used when forwarding non rpc related
342 leaf non-rpc-related-notification-type {
343 type non-rpc-related-notification-type;
345 "Type of notification will trigger specific leaves.";
347 leaf notification-url {
350 "Defines the url the notification is sent to.";
352 leaf-list events-disabling-notification {
353 when "../non-rpc-related-notification-type = 'topology-change'";
354 type notification-events;
356 "List of events for which notifications to SDN-Controller are
357 not desirabled. The filtering is currently activated only on topological
358 changes which could lead to large volumes of data.";
360 leaf-list events-triggering-notification {
361 when "../non-rpc-related-notification-type = 'topology-change'";
362 type notification-events;
364 "List of events for which notifications to SDN-Controller are
365 desirabled. Has the priority with regards to events-disabling-notification.
366 As an example if events-disabling-notification is set to all,
367 events set in events-triggering-notification will be the only
368 events to be notified";
372 container spectrum-filling {
374 "Spectrum may be filled according to specific rules to limit partitionning
375 or to dedicate part of the spectrum to some specific clients (customer-code)";
376 list spectrum-filling-rules {
379 "Defines a set of rules used to fill the spectrum";
383 "defines the rule identifier";
388 "The rules shall be applied sequentially according to their defined
389 priority (Highest:1, lowest:255). Rules with highest priority
390 will be applied first";
395 "Defines the Routing, Spectrum & Mode assignment policy to be applied";
397 container spectrum-range-of-appliance {
398 when "../RMSA-policy = 'customer-spectrum-partitioning' or ../RMSA-policy
399 = 'fragmentation-limiting-partitioning'";
401 "Defines, when needed, the spectrum range to which the rule applies";
402 uses spectrum-portion;
403 leaf dedicated-signal-bandwidth-multiple {
404 when "../../RMSA-policy = 'fragmentation-limiting-partitioning'" {
406 "For fragmentation partitioning, defines which part of the spectrum
407 will be used according to the signal spectral occupation";
411 "Used for spectrum partitioning to reduce fragmentation. Defines
412 the width of the service to be provisioned in the spectrum portion.
413 As an example a spectrum portion can be dedicated to signals with
414 a 50 GHz multiple spectral occupation, whereas another portion
415 of the spectrum is dedicated to signal with a 75 GHz multiple
416 spectral occupation";
423 "defines all margins operator may want to specify";
424 leaf minimum-fiber-attenuation-bol-margin {
425 type org-openroadm-common-link-types:ratio-dB;
427 "Minimum fiber-attenuation margin to be considered for path calculation
428 at begining of life. The path calculation shall be made considering on
429 each link the engineered-spanloss (provided by an external sytem)
430 _The RNC shall raise an ALARM to the northbound Controller through
431 an insufficient-margin-crossing-alarm as soon as:
432 (span-loss-base + minimum-fiber-attenuation-bol-margin) - engineered-spanloss >
433 threshold-observed-vs-design-margin
434 _The RNC shall raise a WARNING to the northbound Controller through
435 an exceeded-attenuation-crossing-warning as soon as : (engineered-spanloss
436 - spanloss-current) < threshold-observed-vs-design-attenuation.";
438 leaf threshold-observed-vs-design-attenuation {
439 type org-openroadm-common-link-types:ratio-dB;
441 "Defines the threshold used to raise an alarm when fiber initial attenuation
442 is too close to the engineered-spanloss, meaning the value accounted for the
443 design has been underestimated and a new design shall triggered.";
445 leaf threshold-observed-vs-design-margin {
446 type org-openroadm-common-link-types:ratio-dB;
448 "Defines the threshold used to raise a warning when fiber measured attenuation
449 comes too close to the engineered-spanloss, so that remaining margin is considered
452 list minimum-osnr-margins {
455 "osnr margins to be considered may differ according to the rate and the modulation format";
459 "defines a margin for specific line-rates and modulation formats";
461 leaf minimum-osnr-margin-value {
462 type org-openroadm-common-link-types:ratio-dB;
464 "Minimum OSNR margin to be considered to keep an acceptable OSNR value
465 at end of life for the associated line-rates and modulation-formats";
467 leaf-list line-rates {
470 "Line-rates to which the osnr-margin applies";
472 leaf-list modulation-formats {
473 type org-openroadm-common-optical-channel-types:modulation-format;
475 "Modulation-formats to which the osnr-margin applies";
479 container metrics-policy {
481 "Defines how the RNC shall interpret the routing-metrics";
482 leaf composite-metric-versus-selective {
485 "Defines the way the RNC shall interpret the priorities defined
486 for the metrics: _ True corresponds to a weighted composite metric,
487 _ False corresponds to a selective priority based metric";
490 container regeneration-policy {
492 "Defines rules to place regenerators when a service-feasibility-check
493 rpc is invoked, or when a service-create rpc is invoked if spare
494 regenerators are already in place";
495 leaf global-placement {
497 enum regenerator-banks {
505 "To priviledge the positioning in specific locations";
507 leaf on-path-positioning {
512 enum latest-convenient-hop {
517 "To position regenerators as far as possible on the path or optimizing
523 "True corresponds to same location on A to Z and Z to A paths
524 False allows positioning regenerators in different nodes for A
525 to Z and Z to A paths";
527 leaf-list preferred-sites {
530 "CLLI's of the sites to be privileged when positioning regenerators
531 in specific locations";
534 container global-restriction {
535 container site-restriction {
536 leaf-list restriction-scopes {
538 "Set of the restriction scopes applicable for the site-restriction.
539 Default scope is set to all RPCs";
540 type restriction-scope;
546 "List of sites to be excluded from paths when routing.";
550 leaf restriction-type {
551 type restriction-type;
556 container node-restriction {
557 leaf-list restriction-scopes {
559 "Set of the restriction scopes applicable for the node-restriction.
560 Default scope is set to all RPCs";
561 type restriction-scope;
567 "List of equipment nodes to be excluded from paths when routing.";
569 type org-openroadm-common-node-types:node-id-type;
571 leaf restriction-type {
572 type restriction-type;
577 container regeneration-site-restriction {
578 leaf-list restriction-scopes {
580 "Set of the restriction scopes applicable for the regeneration-restriction.
581 Default scope is set to all RPCs";
582 type restriction-scope;
585 list forbidden-site {
588 "List of forbidden sites where regenerators shall not be placed";
592 leaf regeneration-restriction-type {
593 type regeneration-restriction-type;
598 container regeneration-node-restriction {
599 leaf-list restriction-scopes {
601 "Set of the restriction scopes applicable for the regeneration-restriction.
602 Default scope is set to all RPCs";
603 type restriction-scope;
606 list forbidden-node {
609 "List of forbidden nodes where regenerators shall not be placed";
611 type org-openroadm-common-node-types:node-id-type;
613 leaf regeneration-restriction-type {
614 type regeneration-restriction-type;
619 container link-restriction {
620 leaf-list restriction-scopes {
622 "Set of the resctriction scopes applicable for the link-restriction.
623 Default scope is set to all RPCs";
624 type restriction-scope;
630 "List of links to be excluded from paths when routing.";
633 container supporting-service-restriction {
634 leaf-list restriction-scopes {
636 "Set of the resctriction scopes applicable for the supporting-services.
637 Default scope is set to all RPCs";
638 type restriction-scope;
641 leaf-list supporting-services {
644 "List of supporting services to be excluded from paths when routing";
648 container default-behaviour {
650 "Parameters in this container are used to define default behaviour
651 in case optional parameters in rpc have not been defined";
652 leaf default-backup-path-number {
655 "0 means on the fly path calculation. Higher number corresponds
656 to backup path pre-calculation, and states the number of paths
662 "Concerns reversion for service that have a resiliency defined
663 as restorable (restoration handled autonomously by the controller
664 at the WDM/OTN layer)";
666 leaf wait-to-restore {
670 "time delay to revert to initial path after conditions for reversion
677 "time delay to initiate a protection or restoration event";
680 container sla-definition {
682 "Definition of Service Level Agreements parameters";
683 list sla-parameters {
686 "Defines several SLA profiles and associated expected behaviour";
690 "sla-id as defined by the operator";
695 "False : service shall never be preempted True : preemption of
696 the service is allowed";
698 leaf restoration-priority {
701 "The service shall be restored according to the defined priority
702 (First:1, latest:255). Services with highest priority will be restored first";
706 container failure-case-list {
708 "Use to provide information on failure cases associated with backup-path
709 pre-calculation: If PCE supports the calculation of multiple backup-paths,
710 these might be identified through a failure case-id corresponding
711 to a node, physical-link or logical-link failure";
713 key "failure-case-id";
715 "Describes and identifies different failure-cases. Each of them can be
716 associated with one or several backup-paths in the context of backup-path
718 leaf failure-case-id {
721 "Identifies a failure case";
728 enum logical-link-failure {
731 enum physiscal-link-failure {
736 "describes failure type that can be simulated in a planner or by a PCE
737 to calculate a backup path";
740 when "../failure-type = 'node-failure'" {
742 "List of nodes impacted by the failure (not only single failures
747 "Nodes as they appear in the openroadm-topology or otn-topology
750 leaf-list logical-links {
751 when "../failure-type = 'logical-link-failure'" {
753 "List of logical links impacted by the failure (not only single
754 failures may be envisaged).";
758 "logical links as they appear in the otn-topology layer";
760 leaf-list physical-links {
761 when "../failure-type = 'physical-link-failure'" {
763 "List of physical links impacted by the failure (not only single
764 failures may be envisaged).";
768 "physical-links as they appear in the openroadm-topology layer";
774 rpc controller-parameters-setting {
776 "Rpc used to populate controller parameters in the Data Store
779 uses org-openroadm-common-service-types:sdnc-request-header;
780 uses controller-parameters;
783 uses org-openroadm-common-service-types:configuration-response-common;
784 leaf-list unsupported-customization-options {
787 "Provides a list of customization parameters that are not supported by
788 the RNC controller. Leaflist items corresponds to the yang nodes of
789 controller-parameters that the RNC does not handle. It is assumed that
790 for a yang node provided in the list, all nodes/leaves at a lower level
791 in the hierarchy are also not supported by the RNC";