Files
oopt-gnpy-api/gnpyapi/yang/ietf-optical-impairment-topology@2024-05-21.yang
EstherLerouzic 34df7f5fc1 Feat: create project skeleton using CANDI POC experimental api
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
Change-Id: I44c9c96c58fabb79e2b569f7b404036b475b4fde
2025-02-25 17:42:50 +01:00

1776 lines
61 KiB
YANG

module ietf-optical-impairment-topology {
yang-version 1.1;
namespace "urn:ietf:params:xml"
+ ":ns:yang:ietf-optical-impairment-topology";
prefix "oit";
import ietf-network {
prefix "nw";
reference
"RFC 8345: A YANG Data Model for Network Topologies";
}
import ietf-network-topology {
prefix "nt";
reference
"RFC 8345: A YANG Data Model for Network Topologies";
}
import ietf-te-topology {
prefix "tet";
reference
"RFC 8795: YANG Data Model for Traffic Engineering (TE)
Topologies";
}
import ietf-te-types {
prefix "te-types";
reference
"RFC YYYY: Updated Common YANG Data Types for Traffic
Engineering";
}
/* Note: The RFC Editor will replace YYYY with the number assigned
to the RFC once draft-ietf-teas-rfc8776-update becomes an RFC.*/
import ietf-layer0-types {
prefix "l0-types";
reference
"RFC ZZZZ: A YANG Data Model for Layer 0 Types";
}
/* Note: The RFC Editor will replace ZZZZ with the number assigned
to the RFC once draft-ietf-ccamp-rfc9093-bis becomes an RFC.*/
organization
"IETF CCAMP Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/ccamp/>
WG List: <mailto:ccamp@ietf.org>
Editor: Young Lee <younglee.tx@gmail.com>
Editor: Haomian Zheng <zhenghaomian@huawei.com>
Editor: Nicola Sambo <nicosambo@gmail.com>
Editor: Victor Lopez <victor.lopez@nokia.com>
Editor: Gabriele Galimberti <ggalimbe@cisco.com>
Editor: Giovanni Martinelli <giomarti@cisco.com>
Editor: Jean-Luc Auge <jeanluc.auge@orange.com>
Editor: Le Rouzic Esther <esther.lerouzic@orange.com>
Editor: Julien Meuric <julien.meuric@orange.com>
Editor: Italo Busi <Italo.Busi@huawei.com>
Editor: Dieter Beller <dieter.beller@nokia.com>
Editor: Sergio Belotti <Sergio.belotti@nokia.com>
Editor: Griseri Enrico <enrico.griseri@nokia.com>
Editor: Gert Grammel <ggrammel@juniper.net>";
description
"This module contains a collection of YANG definitions for
impairment-aware optical networks.
Copyright (c) 2024 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD
License set forth in Section 4.c of the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove
// this note
// replace the revision date with the module publication date
// the format is (year-month-day)
revision 2024-05-21 {
description
"Initial Version";
reference
"RFC XXXX: A Yang Data Model for Impairment-aware
Optical Networks";
}
/*
* Identities
*/
identity otsi-protection {
base te-types:lsp-protection-type;
description
"Individual OTSi(G) protection LSP protection type.";
reference
"ITU-T G.873.1 v5.2 (02/2022): Optical transport network:
Linear protection";
}
/*
* Groupings
*/
grouping amplifier-params {
description "describes parameters for an amplifier";
container amplifier {
description
"amplifier type, operatonal parameters are described.";
leaf type-variety {
type string;
mandatory true ;
description
"String identifier of amplifier type referencing
a specification in a separate equipment catalog";
}
container operational {
description "amplifier operational parameters";
list amplifier-element {
key "frequency-range-id stage-order";
description
"The list of parallel amplifier elements within an
amplifier used to amplify different frequency ranges.
Two elements in the list must not have the same range
or overlapping ranges.";
leaf frequency-range-id {
type uint16;
description
"The identifier of the frequency range.";
}
leaf stage-order {
type uint8;
description
"It allows defining for each spectrum badwidth the
cascade order of each amplifier-element.";
}
leaf name {
type string;
description
"The name of the amplifier element as specified in
the vendor's specification associated with the
type-variety.";
}
leaf type-variety {
type string;
description
"String identifier of amplifier element type
referencing a specification in a separate equipment
catalog.
This attributes applies only when the type-variety of
the amplifier is not sufficient to describe the
amplifier element type.";
}
container frequency-range {
description
"The frequency range amplified by the amplifier
element.";
uses l0-types:frequency-range;
}
container power-param {
description
"The optical power after the out-voa of each amplifier
element.";
choice power-param {
mandatory true;
description
"Select the mode: channel power or power spectral
density (PSD).";
case channel-power {
leaf nominal-carrier-power {
type l0-types:power-dbm-or-null;
mandatory true;
description
"Reference channel power.";
}
}
case power-spectral-density {
leaf nominal-psd {
type l0-types:psd-or-null;
mandatory true;
description
"Reference power spectral density (PSD).";
}
}
}
} // container power-param
leaf pdl {
type l0-types:power-loss-or-null;
description "Polarization Dependent Loss (PDL)";
}
choice amplifier-element-type {
mandatory true;
description
"Identifies whether the amplifier element is an
Optical Amplifier (OA) or a Dynamic Gain Equalizer
(DGE).";
container optical-amplifier {
description
"The attributes applicable only to amplifier
elements";
leaf actual-gain {
type l0-types:power-gain-or-null;
mandatory true;
description
"The value of the gain provided by the
amplification stage of the optical amplifier.";
}
leaf in-voa {
type l0-types:power-loss-or-null;
description
"Loss introduced by the Variable Optical Attenuator
(VOA) at the input of the amplification stage of
the amplifier, if present";
}
leaf out-voa {
type l0-types:power-loss-or-null;
description
"Loss introduced by the Variable Optical Attenuator
(VOA) at the output of the amplification stage of
the amplifier, if present.";
}
leaf tilt-target {
type l0-types:decimal-2-or-null;
units "dB";
mandatory true ;
description
"The tilt target defined between lower and upper
frequency of the amplifier frequency range.";
}
leaf total-output-power {
type l0-types:power-dbm-or-null;
mandatory true;
description
"It represent total output power measured in the
range specified by the frequency-range.
Optical power is especially needed to
re-compute/check consistency of span
(fiber + concentrated loss) loss value, with
respect to loss/gain information on elements.";
}
leaf raman-direction {
type enumeration {
enum co-propagating {
description
"Co-propagating indicates that optical pump
light is injected in the same direction to the
optical signal that is amplified
(forward pump).";
}
enum counter-propagating {
description
"Counter-propagating indicates that optical
pump light is injected in opposite direction
to the optical signal that is amplified
(backward pump).";
}
}
description
"The direction of injection of the raman pump.";
}
list raman-pump {
key pump-id;
description
"The list of pumps for the Raman amplifier.";
leaf pump-id {
type uint16;
description
"The identifier of a pump within an amplifier
element.";
}
leaf frequency {
type l0-types:frequency-thz;
description
"The raman pump central frequency.";
}
leaf power {
type l0-types:decimal-2-or-null;
units "Watts";
description
"The total pump power considering a depolarized
pump at the raman pump central frequency.";
}
}
} // container optical-amplifier
container dynamic-gain-equalizer {
presence
"When present it indicates that the amplifier element
is a Dynamic Gain Equalizer (DGE)";
description
"The attributes applicable only to DEG amplifier
elements.";
list media-channel {
key "flexi-n";
description
"List of media channels represented as (n,m)";
uses l0-types:flexi-grid-frequency-slot {
refine flexi-m {
mandatory true;
}
}
leaf delta-power {
type l0-types:power-ratio-or-null;
description
" Deviation from the reference carrier power
defined for the OMS.";
}
} // media channels list
} // container dynamic-gain-equalizer
} // choice amplifier-element-type
} // list amplifier-element
} // container operational
} // container amplifier
} // grouping amplifier-params
grouping fiber-params {
description
"String identifier of fiber type referencing a
specification in a separate equipment catalog";
container fiber {
description "fiber characteristics";
leaf type-variety {
type string ;
mandatory true ;
description "fiber type";
}
leaf length {
type l0-types:decimal-2-or-null;
units km;
mandatory true ;
description "length of fiber";
}
leaf loss-coef {
type l0-types:decimal-2-or-null;
units dB/km;
mandatory true ;
description "loss coefficient of the fiber";
}
leaf total-loss {
type l0-types:power-loss-or-null;
description
"The measured total loss of the fiber, which includes
all possible losses: fiber loss and conn-in and conn-out
losses.
This attribute is not present when the total loss cannot
be measured.";
}
leaf pmd {
type l0-types:decimal-2-or-null;
units "ps";
description "pmd of the fiber";
}
leaf conn-in{
type l0-types:power-loss-or-null;
description "connector-in";
}
leaf conn-out{
type l0-types:power-loss-or-null;
description "connector-out";
}
}
}
grouping roadm-common-path {
description
"The optical impairments of a ROADM which are common to all
its paths (express path, add path or drop path).";
leaf roadm-pmd {
type union {
type decimal64 {
fraction-digits 8;
range "0..max";
}
type empty;
}
units "ps";
description
"Polarization Mode Dispersion (PMD), when known, or an
empty value when unknown.";
}
leaf roadm-cd {
type l0-types:decimal-5-or-null;
units "ps/nm";
description "Chromatic Dispersion (CD)";
}
leaf roadm-pdl {
type l0-types:power-loss-or-null;
description "Polarization Dependent Loss (PDL)";
}
leaf roadm-inband-crosstalk {
type l0-types:decimal-2-or-null;
units "dB";
description
"In-band crosstalk, or coherent crosstalk, can occur in
components that can have multiple same wavelength inputs
with the inputs either routed to different output ports,
or all but one blocked";
}
leaf roadm-maxloss {
type l0-types:power-loss-or-null;
description
"This is the maximum expected path loss from the
ROADM ingress to the ROADM egress
assuming no additional path loss is added";
}
} // grouping roadm-common-path
grouping roadm-express-path {
description
"The optical impairments of a ROADM express path.";
uses roadm-common-path;
} // grouping roadm-express-path
grouping roadm-add-path {
description
"The optical impairments of a ROADM add path.";
uses roadm-common-path {
refine roadm-inband-crosstalk {
description
"In-band crosstalk, or coherent crosstalk,
can occur in components that can have multiple same
wavelength inputs,with the inputs either
routed to different output ports,
or all but one blocked.
In the case of add path it is the total
of the add block + egress WSS crosstalk contributions.";
}
refine roadm-maxloss {
description
"This is the maximum expected add path loss from
the add/drop port input to the ROADM egress,
assuming no additional add path loss is added.
This is used to establish the minimum required
transponder output power required
to hit the ROADM egress target power
levels and preventing
to hit the WSS attenuation limits.
If the add path contains an internal amplifier
this loss value should be based
on worst case expected amplifier gain due to
ripple or gain uncertainty";
}
}
leaf roadm-pmax {
type l0-types:power-dbm-or-null;
description
"This is the maximum (per carrier) power level
permitted at the add block input ports,
that can be handled by the ROADM node.
This may reflect either add amplifier power
contraints or WSS adjustment limits.
Higher power transponders would need to have
their launch power reduced
to this value or lower";
}
leaf roadm-osnr {
type l0-types:snr-or-null;
description
"Optical Signal-to-Noise Ratio (OSNR).
If the add path contains the ability to adjust the
carrier power levels into an add path amplifier
(if present) to a target value,
this reflects the OSNR contribution of the
add amplifier assuming this target value is obtained.
The worst case OSNR based on the input power and
NF calculation method, and this value, should be used
(if both are defined).";
}
leaf roadm-noise-figure {
type l0-types:decimal-5-or-null;
units "dB";
description
"Noise Figure. If the add path contains an amplifier,
this is the noise figure of that amplifier inferred
to the add port.
This permits add path OSNR calculation based
on the input power levels to the add block
without knowing the ROADM path losses to
the add amplifier.";
}
} // grouping roadm-add-path
grouping roadm-drop-path {
description
"The optical impairments of a ROADM drop path";
uses roadm-common-path {
refine roadm-inband-crosstalk {
description
"In-band crosstalk, or coherent crosstalk, can occur in
components that can have multiple same wavelength
inputs,with the inputs either routed to different
output ports,or all but one blocked.
In the case of drop path it is the total
of the ingress
to drop e.g. WSS and drop block crosstalk
contributions.";
}
refine roadm-maxloss {
description
"The net loss from the ROADM input,to the output
of the drop block.
If ROADM ingress to drop path includes an amplifier,
the amplifier gain reduces the net loss.
This is before any additional drop path attenuation
that may be required
due to drop amplifier power contraints.
The max value correspond to worst case expected loss,
including amplifier gain ripple or uncertainty.
It is the maximum output power of the drop
amplifier.";
}
}
leaf roadm-minloss {
type l0-types:power-loss-or-null;
description
"The net loss from the ROADM input, to the
output of the drop block.
If this ROADM ingress to drop path includes
an amplifier,the amplifier gain reduces the net loss.
This is before any additional drop path attenuation
that may be required due to drop amplifier power
contraints.
The min value correspond to best case expected loss,
including amplifier gain ripple or uncertainty.";
}
leaf roadm-typloss {
type l0-types:power-loss-or-null;
description
"The net loss from the ROADM input,
to the output of the drop block.
If this ROADM ingress to drop path
includes an amplifier,
the amplifier gain reduces the net loss.
This is before any additional drop path
attenuation
that may be required due to drop amplifier
power contraints.
The typ value correspond to typical case
expected loss.";
}
leaf roadm-pmin {
type l0-types:power-dbm-or-null;
description
"If the drop path has additional loss
that is added, for example,
to hit target power levels into a
drop path amplifier, or simply, to reduce the
power of a strong carrier
(due to ripple,for example),
then the use of the ROADM input power levels and
the above drop losses is not appropriate.
This parameter corresponds to the min per
carrier power levels
expected at the output of the drop block.
A detail example of the comparison using
these parameters is
detailed in section xxx of the document yyy.";
}
leaf roadm-pmax {
type l0-types:power-dbm-or-null;
description
"If the drop path has additional loss that is added,
for example, to hit target power levels into a
drop path amplifier,or simply,to reduce the power
of a strong carrier(due to ripple,for example),
then the use of the ROADM input power levels and the
above drop losses is not appropriate.
This parameter corresponds to the best case per
carrier power levels expected at the output of the
drop block.
A detail example of the comparison using
these parameters
is detailed in section xxx of the document yyy";
}
leaf roadm-ptyp {
type l0-types:power-dbm-or-null;
description
"If the drop path has additional loss that is added,
for example, to hit target power levels into a
drop path amplifier,or simply,to reduce the
power of a strong carrier(due to ripple,for example),
then the use of the ROADM input power levels and
the above drop losses is not appropriate.
This parameter corresponds to the typical case
per carrier power levels expected
at the output of the drop block.";
}
leaf roadm-osnr {
type l0-types:snr-or-null;
description
"Optical Signal-to-Noise Ratio (OSNR).
Expected OSNR contribution of the drop path
amplifier(if present)
for the case of additional drop path loss
(before this amplifier)
in order to hit a target power level (per carrier).
If both, the OSNR based on the ROADM
input power level
(Pcarrier =
Pref+10Log(carrier-baudrate/ref-baud) + delta-power)
and the input inferred NF(NF.drop),
and this OSNR value, are defined,
the minimum value between these two should be used";
}
leaf roadm-noise-figure {
type l0-types:decimal-5-or-null;
units "dB";
description
"Drop path Noise Figure.
If the drop path contains an amplifier,
this is the noise figure
of that amplifier, inferred to the
ROADM ingress port.
This permits to determine
amplifier OSNR contribution
without having to specify the
ROADM node's losses to that amplifier.
This applies for the case of no
additional drop path loss,
before the amplifier, in order to reduce the power
of the carriers to a target value";
}
} // grouping roadm-drop-path
grouping concentratedloss-params {
description "concentrated loss";
container concentratedloss{
description "concentrated loss";
leaf loss {
type l0-types:power-loss-or-null;
mandatory true;
description
"Loss introduced by the concentrated loss element.";
}
}
}
grouping oms-general-optical-params {
description "OMS link optical parameters";
leaf generalized-snr {
type l0-types:snr;
description "generalized snr";
}
leaf equalization-mode{
type identityref {
base l0-types:type-power-mode;
}
description
"The equalization mode.
When not present it indicates that the information about
the equalization mode is not reported.
Reporting this value is needed to support optical
impairments applications.";
}
container power-param {
description
"Optical channel power or power spectral densitity (PSD)
after the ROADM.";
leaf nominal-carrier-power {
when "derived-from-or-self(../../equalization-mode, "
+ "'l0-types:carrier-power')";
type l0-types:power-dbm-or-null;
description
"Reference channel power.";
}
leaf nominal-psd {
when "derived-from-or-self(../../equalization-mode, "
+ "'l0-types:power-spectral-density')";
type l0-types:psd-or-null;
description
" Reference power spectral density (PSD).";
}
} // container power-param
} // grouping oms-general-optical-params
grouping otsi-group {
description "OTSiG definition , representing client
digital information stream supported by one or more OTSi";
list otsi {
key "otsi-carrier-id";
config false;
description
"list of OTSi contained in one OTSiG.
The list could also be of only one element";
leaf otsi-carrier-id {
type uint16;
description "OTSi carrier-id";
}
leaf otsi-carrier-frequency {
type union {
type l0-types:frequency-thz;
type empty;
}
description
"OTSi carrier frequency, equivalent to the
actual configured transmitter frequency, when known, or
an empty value when unknown.";
}
leaf-list e2e-mc-path-id {
type uint16;
description
"The list of the possible end-to-end Media Channel
(e2e-MC) paths associated with the OTSi which have
different optical impairments.
This list is meaningful in case the OTSi can be associated
with multiple end-to-end Media Channel (e2e-MC) paths
(e.g., when OPS protection is configured).
The list can be empty when the OTSi has only one
e2e-MC path.";
}
} // OTSi list
} // OTSiG grouping
grouping media-channel-groups {
description
"media channel groups.
This grouping is not intended to be reused outside of this
module.";
container media-channel-groups {
presence
"When present, it indicates that the list media channel
groups is reported.";
description
"The top level container for the list of media channel
groups.";
list media-channel-group {
key "otsi-group-ref";
description
"The list of media channel groups";
leaf otsi-group-ref {
type leafref {
path "../../../../../../../otsis/" +
"otsi-group/otsi-group-id";
}
description
"Reference to the OTSiG to which the OTSis carried by
this media channel group belong to.";
}
list media-channel {
// key "flexi-n";
key "media-channel-id";
unique "flexi-n";
description
"list of media channels represented as (n,m)";
leaf media-channel-id {
type int16;
description
"The identifier of media channel within media channel
group.
It may be equal to the flexi-n attribute, when the
flexi-n attribute is present.";
}
// this grouping add both n.m values
uses l0-types:flexi-grid-frequency-slot;
list otsi-ref {
key "otsi-carrier-ref";
description
"The list of references to the OTSis and their
end-to-end Media Channel (e2e-MC) paths within the
OTSiG carried by this media channel.";
leaf otsi-carrier-ref {
type leafref {
path "../../../../../../../../../otsis/" +
"otsi-group[otsi-group-id=current()" +
"/../../../otsi-group-ref]/" +
"otsi/otsi-carrier-id" ;
}
description
"Reference to the OTSi within the OTSiG carried
by this media channel.";
}
leaf-list e2e-mc-path-ref {
type leafref {
path "../../../../../../../../../otsis/" +
"otsi-group[otsi-group-id=current()" +
"/../../../otsi-group-ref]/" +
"otsi[otsi-carrier-id=current()" +
"/../otsi-carrier-ref]/e2e-mc-path-id";
}
description
"References to the end-to-end Media Channel (e2e-MC)
paths of this OTSi which are routed through this
media channel.";
}
}
leaf delta-power {
type l0-types:power-ratio-or-null;
description
" Deviation from the reference carrier power defined
for the OMS.";
}
} // media channels list
} // media-channel-groups list
}
} // media media-channel-groups grouping
grouping oms-element {
description "OMS description";
container OMS-elements {
presence
"When present, it indicates that the list of OMS elements
is reported.";
description
"The top level container for the list of OMS elements.";
list OMS-element {
key "elt-index";
description
"defines the spans and the amplifier blocks of
the amplified lines";
leaf elt-index {
type uint16;
description
"ordered list of Index of OMS element
(whether it's a Fiber, an EDFA or a
Concentratedloss)";
}
leaf oms-element-uid {
type union {
type string;
type empty;
}
description
"Unique id of the element, if it exists and it is known.
When unknown, an empty value is reported.
When it does not exist, the attribute is not present.";
}
container reverse-element-ref {
description
"It contains references to the elements which are
associated with this element in the reverse
direction.";
leaf link-ref {
type leafref {
path "../../../../../../../../nt:link/nt:link-id";
}
description
"The reference to the OMS link which the OMS elements
belongs to.";
}
leaf-list oms-element-ref {
type leafref {
path "../../../../../../../../nt:link[nt:link-id="
+ "current()/../link-ref]/tet:te/"
+ "tet:te-link-attributes/OMS-attributes/"
+ "OMS-elements/OMS-element/elt-index";
}
description
"The references to the OMS elements.";
}
}
choice element {
mandatory true;
description "OMS element type";
case amplifier {
uses tet:geolocation-container;
uses amplifier-params;
}
case fiber {
uses fiber-params;
}
case concentratedloss {
uses concentratedloss-params ;
}
}
}
}
}
grouping otsi-ref {
description
"References to an OTSi.
This grouping is intended to be reused within the
transceiver's list only.";
leaf otsi-group-ref {
type leafref {
path "../../../../../../otsis/otsi-group/" +
"otsi-group-id";
}
description
"The OTSi generated by the transceiver's transmitter.";
}
leaf otsi-ref {
type leafref {
path "../../../../../../otsis/otsi-group" +
"[otsi-group-id=current()/../otsi-group-ref]/otsi/" +
"otsi-carrier-id";
}
description
"The OTSi generated by the transceiver's transmitter.";
}
}
/*
* Data nodes
*/
augment "/nw:networks/nw:network/nw:network-types"
+ "/tet:te-topology" {
description "optical-impairment topology augmented";
container optical-impairment-topology {
presence
"Indicates an impairment-aware topology of optical networks";
description
"Container to identify impairment-aware topology type";
reference
"RFC8345: A YANG Data Model for Network Topologies.";
}
}
augment "/nw:networks/nw:network" {
when "./nw:network-types/tet:te-topology" +
"/oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology.";
}
description
"Network augmentation for optical impairments data.";
container otsis {
presence
"When present, it indicates that OTSi information is
reported.";
description
"The information about the OTSis configured on the WDM-TE
link.";
list otsi-group {
key "otsi-group-id";
config false;
description
"the list of possible OTSiG representing client digital
stream";
leaf otsi-group-id {
type string;
description
"A network-wide unique identifier of otsi-group element.
It could be structured e.g., as an URI or as an UUID.";
}
uses otsi-group;
} // list of OTSiG
}
container templates {
config false;
description
"Templates for set of parameters which can be common to
multiple elements.";
container roadm-path-impairments {
description
"The top level container for the list of the set of
optical impairments related to ROADM paths.";
list roadm-path-impairment {
key "roadm-path-impairments-id";
description
"The list of the set of optical impairments related to
ROADM paths.";
leaf roadm-path-impairments-id {
type string;
description
"The identifier of the set of optical impairments
related to a ROADM path.";
}
choice impairment-type {
description "type path impairment";
case roadm-express-path {
list roadm-express-path {
key frequency-range-id;
description
"The list of optical impairments on a ROADM express
path for different frequency ranges.
Two elements in the list must not have the same
range or overlapping ranges.";
leaf frequency-range-id {
type uint16;
description
"The identifier of the frequency range.";
}
container frequency-range {
description
"The frequency range for which these optical
impairments apply.";
uses l0-types:frequency-range;
}
uses roadm-express-path;
}
}
case roadm-add-path {
list roadm-add-path {
key frequency-range-id;
description
"The list of optical impairments on a ROADM add
path for different frequency ranges.
Two elements in the list must not have the same
range or overlapping ranges.";
leaf frequency-range-id {
type uint16;
description
"The identifier of a frequency range.";
}
container frequency-range {
description
"The frequency range for which these optical
impairments apply.";
uses l0-types:frequency-range;
}
uses roadm-add-path;
}
}
case roadm-drop-path {
list roadm-drop-path {
key frequency-range-id;
description
"The list of optical impairments on a ROADM add
path for different frequency ranges.
Two elements in the list must not have the same
range or overlapping ranges.";
leaf frequency-range-id {
type uint16;
description
"The identifier of a frequency range.";
}
container frequency-range {
description
"The frequency range for which these optical
impairments apply.";
uses l0-types:frequency-range;
}
uses roadm-drop-path;
}
}
}
} // list roadm-path-impairments
} // container roadm-path-impairments
container explicit-transceiver-modes {
description
"The top level container for the list of the
transceivers' explicit modes.";
list explicit-transceiver-mode {
key explicit-transceiver-mode-id;
description
"The list of the transceivers' explicit modes.";
leaf explicit-transceiver-mode-id {
type string;
description
"The identifier of the transceivers' explicit mode.";
}
uses l0-types:explicit-mode;
} // list explicit-transceiver-mode
} // container explicit-transceiver-modes
} // container templates
} // augment network
augment "/nw:networks/nw:network/nw:node" {
when "../nw:network-types/tet:te-topology" +
"/oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment.";
}
description
"Node augmentation for optical impairments data.";
container transponders {
presence
"If present, it indicates that the list of transponders is
reported.";
description
"The top level container for the list of transponders.";
list transponder {
key "transponder-id";
config false;
description "The list of transponders.";
leaf transponder-id {
type uint32;
description "transponder identifier";
}
leaf termination-type-capabilities {
type enumeration {
enum tunnel-only {
description
"The transponder can only be used in an Optical
Tunnel termination configuration.";
}
enum 3r-only {
description
"The transponder can only be used in a 3R
configuration.";
}
enum 3r-or-tunnel {
description
"The transponder can be configure to be used either
in an Optical Tunnel termination configuration or in
a 3R configuration.";
}
}
description
"Describes whether the transponder can be used in an
Optical Tunnel termination configuration or in a 3R
configuration (or both).";
}
leaf supported-3r-mode {
when '(../termination-type-capabilities = "3r-only") or
(../termination-type-capabilities = "3r-or-tunnel")'
{
description
"Applies only when the transponder supports 3R
configuration.";
}
type enumeration {
enum unidir {
description
"Unidirectional 3R configuration.";
}
enum bidir {
description
"Bidirectional 3R configuration.";
}
}
description
"Describes the supported 3R configuration type.";
}
list transceiver {
key "transceiver-id";
config false;
min-elements 1;
description "list of transceiver related to a transponder";
leaf transceiver-id {
type uint32;
description "transceiver identifier";
}
uses l0-types:transceiver-capabilities {
augment "supported-modes/supported-mode/mode/"
+ "explicit-mode/explicit-mode" {
description
"Augment the explicit-mode container with the
proper leafref.";
leaf explicit-transceiver-mode-ref {
type leafref {
path "../../../../../../../../oit:templates"
+ "/oit:explicit-transceiver-modes"
+ "/oit:explicit-transceiver-mode"
+ "/oit:explicit-transceiver-mode-id";
}
description
"The refernce to the explicit transceiver
mode template.";
}
}
}
leaf configured-mode {
type union {
type empty;
type leafref {
path "../supported-modes/supported-mode/mode-id";
}
}
description
"Reference to the configured mode for transceiver
compatibility approach.
The empty value is used to report that no mode has
been configured and there is no default mode.
When not present, the configured-mode is not reported
by the server.";
}
uses l0-types:common-transceiver-param;
container outgoing-otsi {
when "../../../../../otsis" {
description
"It applies only when the OTSi information is
reported.";
}
description
"The OTSi generated by the transceiver's transmitter.";
uses otsi-ref;
}
container incoming-otsi {
when "../../../../../otsis" {
description
"It applies only when the OTSi information is
reported.";
}
description
"The OTSi received by the transceiver's received.";
uses otsi-ref;
}
leaf configured-termination-type {
type enumeration {
enum unused-transceiver {
description
"The transcevier is not used.";
}
enum tunnel-termination {
description
"The transceiver is currently used in an Optical
Tunnel termination configuration.";
}
enum 3r-regeneration {
description
"The transceiver is currently used in a 3R
configuration.";
}
}
description
"Describes whether the current configuration of the
transceiver is used in an Optical Tunnel termination
configuration or in a 3R configuration.
If empty, it means that the information about the
configured-termination-type is not reported.";
}
} // end of list of transceiver
} // end list of transponder
}
container regen-groups {
presence
"When present, it indicates that the list of 3R groups
is reported.";
description
"The top level container for the list of 3R groups.";
list regen-group {
key "group-id";
config false;
description
"The list of 3R groups.
Any 3R group represent a group of transponder in which an
a an electrical connectivity is either in place or could
be dynamically provided, to associated transponders used
for 3R regeneration.";
leaf group-id {
type uint32;
description
"Group identifier used an index to access elements in the
list of 3R groups.";
}
leaf regen-metric {
type uint32;
description
"The cost permits choice among different group of
transponders during path computation";
}
leaf-list transponder-ref {
type leafref {
path "../../../transponders/transponder/transponder-id";
}
description
"The list of transponder belonging to this 3R group.";
}
} // end 3R-group
}
}
augment "/nw:networks/nw:network/nt:link/tet:te"
+ "/tet:te-link-attributes" {
when "../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology.";
}
description "Optical Link augmentation for impairment data.";
container OMS-attributes {
config false;
description "OMS attributes";
uses oms-general-optical-params;
uses media-channel-groups;
uses oms-element;
}
}
augment "/nw:networks/nw:network/nw:node/tet:te"
+ "/tet:tunnel-termination-point" {
when "../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology.";
}
description
"Tunnel termination point augmentation for impairment data.";
list ttp-transceiver {
when "../../../transponders" {
description
"It applies only when the list of transponders is
reported.";
}
key "transponder-ref transceiver-ref";
config false;
min-elements 1;
description
"The list of the transceivers used by the TTP.";
leaf transponder-ref {
type leafref {
path "../../../../transponders/transponder/transponder-id";
}
description
"The reference to the transponder hosting the transceiver
of the TTP.";
}
leaf transceiver-ref {
type leafref {
path "../../../../transponders/transponder" +
"[transponder-id=current()/../transponder-ref]/" +
"transceiver/transceiver-id";
}
description
"The reference to the transceiver of the TTP.";
}
} // list of transceivers
} // end of augment
// Should this leaf be moved to te-topology?
augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
when "../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology";
}
description
"Augment LTP";
leaf protection-type {
type identityref {
base te-types:lsp-protection-type;
}
description
"The protection type that this LTP is capable of.
When not present it indicates that the information about
the protection type is not reported.";
}
}
augment "/nw:networks/nw:network/nw:node/nt:termination-point"
+ "/tet:te" {
when "../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology";
}
description
"Augment TE attributes of an LTP";
leaf inter-layer-sequence-number {
type uint32;
description
"The inter-layer-sequence-number (ILSN) is used to report
additional connectivity constraints between a client layer
Link Termination Point (LTP), such as a muxponder port, and
the server layer Tunnel Termination Point (TTP).
A client service cannot be setup between two client layer
LTPs which report different values of the ILSN.
This attribute is not reported when there are no additional
connectivity constraints.
Therefore, a client service can be setup when at least one
of the two client layer LTPs does not report any ILSN or
both client layer LTPs report the same ILSN value and the
corresponding server layer TTPs have at least one common
server-layer switching capability and at least one common
client-layer switching capability.";
}
}
augment "/nw:networks/nw:network/nw:node/tet:te"
+ "/tet:te-node-attributes" {
when "../../../nw:network-types/tet:te-topology"
+ "/oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology";
}
description
"node attributes augmentantion for optical-impairment ROADM
node";
} // augmentation for optical-impairment ROADM
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:information-source-entry/tet:connectivity-matrices"{
when "../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology ";
}
description
"Augment default TE node connectivity matrix information
source.";
leaf roadm-path-impairments {
type leafref {
path "../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
config false;
description
"Pointer to the list set of ROADM optical impairments";
}
} // augmentation connectivity-matrices information-source
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:information-source-entry/tet:connectivity-matrices/"
+ "tet:connectivity-matrix" {
when "../../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology ";
}
description
"Augment TE node connectivity matrix entry information
source.";
leaf roadm-path-impairments {
type leafref {
path "../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
config false;
description
"Pointer to the list set of ROADM optical impairments";
}
} // augmentation connectivity-matrix information-source
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes/tet:connectivity-matrices" {
when "../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment
topology ";
}
description
"Augment default TE node connectivity matrix.";
leaf roadm-path-impairments {
type leafref {
path "../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
config false; /*the identifier in the list */
/*"roadm-path-impairments" of ROADM optical impairment*/
/*is read-only as the rest of attributes*/
description "pointer to the list set of ROADM optical
impairments";
}
} // augmentation connectivity-matrices
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes/"
+ "tet:connectivity-matrices/tet:connectivity-matrix" {
when "../../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for
Optical Impairment topology ";
}
description
"Augment TE node connectivity matrix entry.";
leaf roadm-path-impairments {
type leafref {
path "../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
config false;
description "pointer to the list set of ROADM optical
impairments";
}
} // augmentation connectivity-matrix
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes/tet:connectivity-matrices/"
+ "tet:connectivity-matrix/tet:from" {
when "../../../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for
Optical Impairment topology ";
}
description
"Augment the attributes for the 'from' LTP for the TE node
connectivity matrix entry.";
list additional-ltp {
when "derived-from-or-self(../../../../../../"
+ "nt:termination-point"
+ "[nt:tp-id=current()/../../tet:to/tet:tp-ref]/"
+ "oit:protection-type,"
+ "'oit:otsi-protection')" {
description
"This list applies only when the 'to' LTP for this
connectivity matrix entry supports individual OTSi(G)
protection.";
}
key "ltp-ref";
config false;
description
"The restricted list of the potential secondary LTPs that
can be selected when the 'from' LTP of this connectivity
matrix entry is selected as a working LTP.
If this list is empty, all the other LTPs that can reach
the 'to' LTP of this connectivity matrix entry can be
selected as secondary LTPs.";
leaf ltp-ref {
type leafref {
path "../../../../../../../nt:termination-point/nt:tp-id";
}
description
"The reference to the potential secondary LTP that can be
selected when the 'from' LTP of this connectivity matrix
entry is selected as a working LTP";
}
leaf roadm-path-impairments {
type leafref {
path "../../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
description
"Pointer to ROADM optical impairments of the ROADM path
between this secondary 'from' LTP and the 'to' LTP of
this connectivity matrix entry.";
}
}
} // augmentation connectivity-matrix from
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:te-node-attributes/tet:connectivity-matrices/"
+ "tet:connectivity-matrix/tet:to" {
when "../../../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for
Optical Impairment topology ";
}
description
"Augment the attributes for the 'to' LTP for the TE node
connectivity matrix entry.";
list additional-ltp {
when "derived-from-or-self(../../../../../../"
+ "nt:termination-point"
+ "[nt:tp-id=current()/../../tet:from/tet:tp-ref]/"
+ "oit:protection-type,"
+ "'oit:otsi-protection')" {
description
"This list applies only when the 'from' LTP for this
connectivity matrix entry supports individual OTSi(G)
protection.";
}
key "ltp-ref";
config false;
description
"The restricted list of the potential secondary LTPs that
can be selected when the 'to' LTP of this connectivity
matrix entry is selected as a working LTP.
If this list is empty, all the other LTPs that can be
reached from the 'from' LTP of this connectivity matrix
entry can be selected as secondary LTPs.";
leaf ltp-ref {
type leafref {
path "../../../../../../../nt:termination-point/nt:tp-id";
}
description
"The reference to the potential secondary LTP that can be
selected when the 'to' LTP of this connectivity matrix
entry is selected as a working LTP";
}
leaf roadm-path-impairments {
type leafref {
path "../../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id";
}
description
"Pointer to ROADM optical impairments of the ROADM path
between the 'from' LTP of this connectivity matrix entry
and this secondary LTP.";
}
}
} // augmentation connectivity-matrix to
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:tunnel-termination-point/"
+ "tet:local-link-connectivities" {
when "../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for Optical Impairment topology ";
}
description
"Augment default TTP LLC.";
leaf add-path-impairments {
type leafref {
path "../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
config false;
description "pointer to the list set of ROADM optical
impairments";
}
leaf drop-path-impairments {
type leafref {
path "../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
config false;
description "pointer to the list set of ROADM
optical impairments";
}
} // augmentation local-link-connectivities
augment "/nw:networks/nw:network/nw:node/tet:te/"
+ "tet:tunnel-termination-point/"
+ "tet:local-link-connectivities/"
+ "tet:local-link-connectivity" {
when "../../../../../nw:network-types/tet:te-topology/"
+ "oit:optical-impairment-topology" {
description
"This augment is only valid for
Optical Impairment topology ";
}
description
"Augment TTP LLC entry.";
leaf add-path-impairments {
type leafref {
path "../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
config false;
description "pointer to the list set of ROADM optical
impairments";
}
leaf drop-path-impairments {
type leafref {
path "../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
config false;
description "pointer to the list set of ROADM optical
impairments";
}
list llc-transceiver {
key "ttp-transponder-ref ttp-transceiver-ref";
config false;
description
"The list of transceivers having a LLC different from the
default LLC.";
leaf ttp-transponder-ref {
type leafref {
path "../../../../ttp-transceiver/transponder-ref";
}
description
"The reference to the transponder hosting the transceiver
of this LLCL entry.";
}
leaf ttp-transceiver-ref {
type leafref {
path "../../../../ttp-transceiver/transceiver-ref";
}
description
"The reference to the the transceiver of this LLCL entry.";
}
leaf is-allowed {
type boolean;
description
"'true' - connectivity from this transceiver is allowed;
'false' - connectivity from this transceiver is
disallowed.";
}
leaf add-path-impairments {
type leafref {
path "../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
description "pointer to the list set of ROADM optical
impairments";
}
leaf drop-path-impairments {
type leafref {
path "../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
description "pointer to the list set of ROADM
optical impairments";
}
}
list additional-ltp {
when "derived-from-or-self(../../../tet:protection-type,"
+ "'oit:otsi-protection')" {
description
"This list applies only to TTPs that support individual
OTSi(G) protection.";
}
key "ltp-ref";
config false;
description
"The restricted list of the potential secondary LTPs that
can be selected when the LTP associated with this LLCP
entry is selected as a working LTP.
If this list is empty, all the other LTPs that can be
reached by this TTP can be selected as secondary LTPs.";
leaf ltp-ref {
type leafref {
path "../../../../../../nt:termination-point/nt:tp-id";
}
description
"The reference to potential secondary LTP that can be
selected when the LTP associated with this LLCP entry is
selected as a working LTP";
}
leaf add-path-impairments {
type leafref {
path "../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
description "pointer to the list set of ROADM optical
impairments";
}
leaf drop-path-impairments {
type leafref {
path "../../../../../../../oit:templates"
+ "/oit:roadm-path-impairments/oit:roadm-path-impairment"
+ "/oit:roadm-path-impairments-id" ;
}
description "pointer to the list set of ROADM
optical impairments";
}
}
} // augmentation local-link-connectivity
}