+++ /dev/null
-module org-openroadm-controller-customization {
- yang-version 1.1;
- namespace "http://org/openroadm/controller/customization";
- prefix org-openroadm-controller-customization;
-
- import org-openroadm-common-link-types {
- prefix org-openroadm-common-link-types;
- revision-date 2019-11-29;
- }
- import org-openroadm-common-node-types {
- prefix org-openroadm-common-node-types;
- revision-date 2021-05-28;
- }
- import org-openroadm-common-service-types {
- prefix org-openroadm-common-service-types;
- revision-date 2021-12-10;
- }
- import org-openroadm-common-optical-channel-types {
- prefix org-openroadm-common-optical-channel-types;
- revision-date 2021-12-10;
- }
-
- organization
- "Open ROADM MSA";
- contact
- "OpenROADM.org";
- description
- "YANG definitions of services.
-
- Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
- All other rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
- * Neither the Members of the Open ROADM MSA Agreement nor the names of its
- contributors may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE";
-
- revision 2021-12-10 {
- description
- "Version 10.1";
- }
- revision 2021-09-24 {
- description
- "Version 10.0";
- }
- revision 2021-05-28 {
- description
- "Version 9.1";
- }
- revision 2021-03-26 {
- description
- "Version 9.0";
- }
- revision 2020-12-11 {
- description
- "Version 8.1";
- }
- revision 2020-09-25 {
- description
- "Version 8.0";
- }
- revision 2020-05-29 {
- description
- "Version 7.1.0";
- }
- revision 2020-03-27 {
- description
- "Version 7.0.0";
- }
-
- typedef notification-events {
- type enumeration {
- enum roadm-to-roadm-link-creation {
- value 1;
- }
- enum roadm-to-roadm-link-deletion {
- value 2;
- }
- enum otn-link-creation {
- value 3;
- }
- enum otn-link-deletion {
- value 4;
- }
- enum xpdr-in-out-link-creation {
- value 5;
- }
- enum xpdr-in-out-link-deletion {
- value 6;
- }
- enum link-state-change {
- value 7;
- }
- enum otn-link-bandwidth-usage-change {
- value 8;
- }
- enum node-creation {
- value 9;
- }
- enum node-deletion {
- value 10;
- }
- enum node-state-change {
- value 11;
- }
- enum tp-creation {
- value 12;
- }
- enum tp-deletion {
- value 13;
- }
- enum tp-state-change {
- value 14;
- }
- enum ila-state-change {
- value 15;
- }
- enum none {
- value 16;
- }
- enum all {
- value 17;
- }
- }
- description
- "Define possible notification events.";
- }
-
- typedef rmsa-policy {
- type enumeration {
- enum maximize-capacity {
- value 1;
- }
- enum maximize-reach {
- value 2;
- }
- enum minimize-margins {
- value 3;
- }
- enum maximize-margins {
- value 4;
- }
- enum customer-spectrum-partitioning {
- value 5;
- }
- enum fragmentation-limiting-partitioning {
- value 6;
- }
- }
- description
- "Defines Routing Modulation and and Spectrum Allocation policies.";
- }
-
- typedef non-rpc-related-notification-type {
- type enumeration {
- enum service-state-change {
- value 1;
- }
- enum topology-change {
- value 2;
- }
- enum exceeded-attenuation-crossing-warning {
- value 3;
- }
- enum insufficient-margin-crossing-alarm {
- value 4;
- }
- enum autonomous-optical-restoration-triggered {
- value 5;
- }
- }
- description
- "Defines notification types for non rpc related notifications.";
- }
-
- typedef restriction-scope {
- description
- "Used to indicate the scope of global restrictions";
- type enumeration {
- enum service-create {
- value 1;
- }
- enum service-create-bulk {
- value 2;
- }
- enum temp-service-create {
- value 3;
- }
- enum temp-service-create-bulk {
- value 4;
- }
- enum service-feasibility-check {
- value 5;
- }
- enum service-feasibility-check-bulk {
- value 6;
- }
- enum service-roll {
- value 7;
- }
- enum service-reconfigure {
- value 8;
- }
- enum service-restoration {
- value 9;
- }
- enum service-reroute {
- value 10;
- }
- enum network-re-optimization {
- value 11;
- }
- enum all {
- value 12;
- }
- }
- }
-
- typedef restriction-type {
- description
- "Used to indicate type of restriction for site or node";
- type enumeration {
- enum add-drop {
- value 1;
- description
- "Add/drops are forbidden at the associated node (or site).
- No service may add or drop at site/node";
- }
- enum pass-through {
- value 2;
- description
- "Routing through the associated node (or site) is forbidden.
- No service may pass-through at site/node";
- }
- enum both {
- value 3;
- description
- "Both adds/drops and through routing are forbidden for
- the associated node (or site).";
- }
- }
- }
-
- typedef regeneration-restriction-type {
- description
- "Used to indicate the type of restriction for the regeneration type";
- type enumeration {
- enum do-not-propose {
- value 1;
- description
- "Proposing new regens (via a feasibility check)
- at the associated node (or site) is forbidden.";
- }
- enum do-not-use-existing {
- value 2;
- description
- "Use of an existing regen at the associated node
- (or site) is forbidden.";
- }
- enum both {
- value 3;
- description
- "Both use of existing regens and proposal of new regens
- are forbidden at the associated node (or site).";
- }
- }
- }
-
- grouping spectrum-portion {
- description
- "Specifies a portion of the spectrum and its characteristics.";
- leaf spectrum-portion-id {
- type uint8;
- description
- "Identifies a spectrum portion with specific characteristics.";
- }
- leaf start-edge-frequency {
- type org-openroadm-common-optical-channel-types:frequency-THz;
- description
- "If present, this parameter states the lowest frequency to start
- filling the spectrum, or a spectrum portion if stop-bandwidth
- is also defined.";
- }
- leaf stop-edge-frequency {
- type org-openroadm-common-optical-channel-types:frequency-THz;
- description
- "If present and associated with a start frequency, this parameter
- states the upper frequency broundary to fill the spectrum portion.
- If present, in the absence of a start frequency, this parameter
- states the highest frequency to start filling the spectrum.";
- }
- leaf-list dedicated-customer {
- type string;
- description
- "Applies only to spectrum-portion (both start and stop edge frequencies
- defined), when the spectrum-portion is dedicated to some customers.
- This list shall includes customer-codes identifying specific customers.
- No customer out of this list can share the bandwidth of this spectrum
- portion";
- }
- leaf-list non-authorized-customer {
- type string;
- description
- "Applies only to spectrum-portion (both start and stop edge frequencies
- defined), when the spectrum-portion is dedicated to some customers.
- This list shall includes customer-codes identifying specific customers,
- that are not allowed to share the bandwidth of this spectrum portion";
- }
- }
-
- grouping controller-parameters {
- description
- "Defines the structure of Service/controller-behaviour-settings container,
- as well as the structure of controller-parameters-setting rpc input";
- container non-rpc-related-notification-settings {
- description
- "Defines url, notification-type and type of events that shall / shall not
- trigger notifications";
- list non-rpc-related-notification-url-list {
- key "non-rpc-related-notification-type";
- description
- "Used to record url to be used when forwarding non rpc related
- notifications.";
- leaf non-rpc-related-notification-type {
- type non-rpc-related-notification-type;
- description
- "Type of notification will trigger specific leaves.";
- }
- leaf notification-url {
- type string;
- description
- "Defines the url the notification is sent to.";
- }
- leaf-list events-disabling-notification {
- when "../non-rpc-related-notification-type = 'topology-change'";
- type notification-events;
- description
- "List of events for which notifications to SDN-Controller are
- not desirabled. The filtering is currently activated only on topological
- changes which could lead to large volumes of data.";
- }
- leaf-list events-triggering-notification {
- when "../non-rpc-related-notification-type = 'topology-change'";
- type notification-events;
- description
- "List of events for which notifications to SDN-Controller are
- desirabled. Has the priority with regards to events-disabling-notification.
- As an example if events-disabling-notification is set to all,
- events set in events-triggering-notification will be the only
- events to be notified";
- }
- }
- }
- container spectrum-filling {
- description
- "Spectrum may be filled according to specific rules to limit partitionning
- or to dedicate part of the spectrum to some specific clients (customer-code)";
- list spectrum-filling-rules {
- key "rule-id";
- description
- "Defines a set of rules used to fill the spectrum";
- leaf rule-id {
- type uint16;
- description
- "defines the rule identifier";
- }
- leaf priority {
- type uint8;
- description
- "The rules shall be applied sequentially according to their defined
- priority (Highest:1, lowest:255). Rules with highest priority
- will be applied first";
- }
- leaf RMSA-policy {
- type rmsa-policy;
- description
- "Defines the Routing, Spectrum & Mode assignment policy to be applied";
- }
- container spectrum-range-of-appliance {
- when "../RMSA-policy = 'customer-spectrum-partitioning' or ../RMSA-policy
- = 'fragmentation-limiting-partitioning'";
- description
- "Defines, when needed, the spectrum range to which the rule applies";
- uses spectrum-portion;
- leaf dedicated-signal-bandwidth-multiple {
- when "../../RMSA-policy = 'fragmentation-limiting-partitioning'" {
- description
- "For fragmentation partitioning, defines which part of the spectrum
- will be used according to the signal spectral occupation";
- }
- type uint8;
- description
- "Used for spectrum partitioning to reduce fragmentation. Defines
- the width of the service to be provisioned in the spectrum portion.
- As an example a spectrum portion can be dedicated to signals with
- a 50 GHz multiple spectral occupation, whereas another portion
- of the spectrum is dedicated to signal with a 75 GHz multiple
- spectral occupation";
- }
- }
- }
- }
- container margins {
- description
- "defines all margins operator may want to specify";
- leaf minimum-fiber-attenuation-bol-margin {
- type org-openroadm-common-link-types:ratio-dB;
- description
- "Minimum fiber-attenuation margin to be considered for path calculation
- at begining of life. The path calculation shall be made considering on
- each link the engineered-spanloss (provided by an external sytem)
- _The RNC shall raise an ALARM to the northbound Controller through
- an insufficient-margin-crossing-alarm as soon as:
- (span-loss-base + minimum-fiber-attenuation-bol-margin) - engineered-spanloss >
- threshold-observed-vs-design-margin
- _The RNC shall raise a WARNING to the northbound Controller through
- an exceeded-attenuation-crossing-warning as soon as : (engineered-spanloss
- - spanloss-current) < threshold-observed-vs-design-attenuation.";
- }
- leaf threshold-observed-vs-design-attenuation {
- type org-openroadm-common-link-types:ratio-dB;
- description
- "Defines the threshold used to raise an alarm when fiber initial attenuation
- is too close to the engineered-spanloss, meaning the value accounted for the
- design has been underestimated and a new design shall triggered.";
- }
- leaf threshold-observed-vs-design-margin {
- type org-openroadm-common-link-types:ratio-dB;
- description
- "Defines the threshold used to raise a warning when fiber measured attenuation
- comes too close to the engineered-spanloss, so that remaining margin is considered
- as too limited.";
- }
- list minimum-osnr-margins {
- key "margin-id";
- description
- "osnr margins to be considered may differ according to the rate and the modulation format";
- leaf margin-id {
- type string;
- description
- "defines a margin for specific line-rates and modulation formats";
- }
- leaf minimum-osnr-margin-value {
- type org-openroadm-common-link-types:ratio-dB;
- description
- "Minimum OSNR margin to be considered to keep an acceptable OSNR value
- at end of life for the associated line-rates and modulation-formats";
- }
- leaf-list line-rates {
- type uint64;
- description
- "Line-rates to which the osnr-margin applies";
- }
- leaf-list modulation-formats {
- type org-openroadm-common-optical-channel-types:modulation-format;
- description
- "Modulation-formats to which the osnr-margin applies";
- }
- }
- }
- container metrics-policy {
- description
- "Defines how the RNC shall interpret the routing-metrics";
- leaf composite-metric-versus-selective {
- type boolean;
- description
- "Defines the way the RNC shall interpret the priorities defined
- for the metrics: _ True corresponds to a weighted composite metric,
- _ False corresponds to a selective priority based metric";
- }
- }
- container regeneration-policy {
- description
- "Defines rules to place regenerators when a service-feasibility-check
- rpc is invoked, or when a service-create rpc is invoked if spare
- regenerators are already in place";
- leaf global-placement {
- type enumeration {
- enum regenerator-banks {
- value 1;
- }
- enum distributed {
- value 2;
- }
- }
- description
- "To priviledge the positioning in specific locations";
- }
- leaf on-path-positioning {
- type enumeration {
- enum maximize-rate {
- value 1;
- }
- enum latest-convenient-hop {
- value 2;
- }
- }
- description
- "To position regenerators as far as possible on the path or optimizing
- performances";
- }
- leaf path-symmetry {
- type boolean;
- description
- "True corresponds to same location on A to Z and Z to A paths
- False allows positioning regenerators in different nodes for A
- to Z and Z to A paths";
- }
- leaf-list preferred-sites {
- type string;
- description
- "CLLI's of the sites to be privileged when positioning regenerators
- in specific locations";
- }
- }
- container global-restriction {
- container site-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the restriction scopes applicable for the site-restriction.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- list site {
- key "site-id";
- description
- "List of sites to be excluded from paths when routing.";
- leaf site-id {
- type string;
- }
- leaf restriction-type {
- type restriction-type;
- default "both";
- }
- }
- }
- container node-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the restriction scopes applicable for the node-restriction.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- list node {
- key "node-id";
- description
- "List of equipment nodes to be excluded from paths when routing.";
- leaf node-id {
- type org-openroadm-common-node-types:node-id-type;
- }
- leaf restriction-type {
- type restriction-type;
- default "both";
- }
- }
- }
- container regeneration-site-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the restriction scopes applicable for the regeneration-restriction.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- list forbidden-site {
- key "site-id";
- description
- "List of forbidden sites where regenerators shall not be placed";
- leaf site-id {
- type string;
- }
- leaf regeneration-restriction-type {
- type regeneration-restriction-type;
- default "both";
- }
- }
- }
- container regeneration-node-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the restriction scopes applicable for the regeneration-restriction.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- list forbidden-node {
- key "node-id";
- description
- "List of forbidden nodes where regenerators shall not be placed";
- leaf node-id {
- type org-openroadm-common-node-types:node-id-type;
- }
- leaf regeneration-restriction-type {
- type regeneration-restriction-type;
- default "both";
- }
- }
- }
- container link-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the resctriction scopes applicable for the link-restriction.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- leaf-list link-id {
- type string;
- description
- "List of links to be excluded from paths when routing.";
- }
- }
- container supporting-service-restriction {
- leaf-list restriction-scopes {
- description
- "Set of the resctriction scopes applicable for the supporting-services.
- Default scope is set to all RPCs";
- type restriction-scope;
- default "all";
- }
- leaf-list supporting-services {
- type string;
- description
- "List of supporting services to be excluded from paths when routing";
- }
- }
- }
- container default-behaviour {
- description
- "Parameters in this container are used to define default behaviour
- in case optional parameters in rpc have not been defined";
- leaf default-backup-path-number {
- type uint16;
- description
- "0 means on the fly path calculation. Higher number corresponds
- to backup path pre-calculation, and states the number of paths
- to be calculated";
- }
- leaf reversion {
- type boolean;
- description
- "Concerns reversion for service that have a resiliency defined
- as restorable (restoration handled autonomously by the controller
- at the WDM/OTN layer)";
- }
- leaf wait-to-restore {
- type uint64;
- units "ms";
- description
- "time delay to revert to initial path after conditions for reversion
- are satisfied";
- }
- leaf holdoff-time {
- type uint64;
- units "ms";
- description
- "time delay to initiate a protection or restoration event";
- }
- }
- container sla-definition {
- description
- "Definition of Service Level Agreements parameters";
- list sla-parameters {
- key "sla-id";
- description
- "Defines several SLA profiles and associated expected behaviour";
- leaf sla-id {
- type string;
- description
- "sla-id as defined by the operator";
- }
- leaf preemption {
- type boolean;
- description
- "False : service shall never be preempted True : preemption of
- the service is allowed";
- }
- leaf restoration-priority {
- type uint8;
- description
- "The service shall be restored according to the defined priority
- (First:1, latest:255). Services with highest priority will be restored first";
- }
- }
- }
- container failure-case-list {
- description
- "Use to provide information on failure cases associated with backup-path
- pre-calculation: If PCE supports the calculation of multiple backup-paths,
- these might be identified through a failure case-id corresponding
- to a node, physical-link or logical-link failure";
- list failure-case {
- key "failure-case-id";
- description
- "Describes and identifies different failure-cases. Each of them can be
- associated with one or several backup-paths in the context of backup-path
- pre-calculation";
- leaf failure-case-id {
- type uint32;
- description
- "Identifies a failure case";
- }
- leaf failure-type {
- type enumeration {
- enum node-failure {
- value 1;
- }
- enum logical-link-failure {
- value 2;
- }
- enum physiscal-link-failure {
- value 3;
- }
- }
- description
- "describes failure type that can be simulated in a planner or by a PCE
- to calculate a backup path";
- }
- leaf-list nodes {
- when "../failure-type = 'node-failure'" {
- description
- "List of nodes impacted by the failure (not only single failures
- may be envisaged).";
- }
- type string;
- description
- "Nodes as they appear in the openroadm-topology or otn-topology
- layer";
- }
- leaf-list logical-links {
- when "../failure-type = 'logical-link-failure'" {
- description
- "List of logical links impacted by the failure (not only single
- failures may be envisaged).";
- }
- type string;
- description
- "logical links as they appear in the otn-topology layer";
- }
- leaf-list physical-links {
- when "../failure-type = 'physical-link-failure'" {
- description
- "List of physical links impacted by the failure (not only single
- failures may be envisaged).";
- }
- type string;
- description
- "physical-links as they appear in the openroadm-topology layer";
- }
- }
- }
- }
-
- rpc controller-parameters-setting {
- description
- "Rpc used to populate controller parameters in the Data Store
- of the RNC.";
- input {
- uses org-openroadm-common-service-types:sdnc-request-header;
- uses controller-parameters;
- }
- output {
- uses org-openroadm-common-service-types:configuration-response-common;
- leaf-list unsupported-customization-options {
- type string;
- description
- "Provides a list of customization parameters that are not supported by
- the RNC controller. Leaflist items corresponds to the yang nodes of
- controller-parameters that the RNC does not handle. It is assumed that
- for a yang node provided in the list, all nodes/leaves at a lower level
- in the hierarchy are also not supported by the RNC";
- }
- }
- }
-}