mirror of
https://github.com/Telecominfraproject/oopt-gnpy-api.git
synced 2025-10-29 09:02:39 +00:00
Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com> Change-Id: I44c9c96c58fabb79e2b569f7b404036b475b4fde
771 lines
18 KiB
YANG
771 lines
18 KiB
YANG
module gnpy-eqpt-config {
|
|
yang-version 1.1;
|
|
namespace "urn:ns:gnpy:equipment_library";
|
|
|
|
prefix "gnpyeqpt";
|
|
|
|
import ietf-optical-impairment-topology {
|
|
prefix "oit";
|
|
revision-date 2024-05-21;
|
|
reference
|
|
"RFC 8345: A YANG Data Model for Network Topologies";
|
|
}
|
|
import ietf-layer0-types {
|
|
prefix "l0-types";
|
|
revision-date 2024-03-04;
|
|
reference
|
|
"RFC 8345: A YANG Data Model for Network Topologies";
|
|
}
|
|
organization
|
|
"Telecom Infra Project OOPT PSE
|
|
Working Group";
|
|
|
|
contact
|
|
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
|
contact: <mailto:ahmed.triki@orange.com>
|
|
contact: <mailto:esther.lerouzic@orange.com>
|
|
";
|
|
|
|
description "Base YANG model for gnpy equipment library input for path computation - 2020 - candi preversion";
|
|
|
|
revision 2025-01-20 {
|
|
description
|
|
"Add RamanFiber, design bands, tx_power";
|
|
reference
|
|
"Base YANG model for equipment library input for detecon, libyang validation, GNPy4Ofr API";
|
|
}
|
|
revision "2024-02-21" {
|
|
description "add roadm, fix identity-ref, fix leafref";
|
|
reference "Base YANG model for equipment library input for detecon, libyang validatio, GNPy4Ofr API";
|
|
}
|
|
|
|
revision "2023-02-04" {
|
|
description "fix pdl, pmd fraction-digit, add advanced_model type def, remove no-type-def";
|
|
reference "Base YANG model for equipment library input for detecon - GNPy";
|
|
}
|
|
revision "2022-11-21" {
|
|
description "draft for toaster detecon - GNPy API";
|
|
reference "Base YANG model for equipment library input for detecon - GNPy";
|
|
}
|
|
revision "2020-10-22" {
|
|
description "draft for experimental/2020-candi";
|
|
reference "Base YANG model for equipment library input for path computation with gnpy";
|
|
}
|
|
|
|
/*
|
|
* Identities
|
|
*/
|
|
|
|
identity edfa-type-def {
|
|
description "base identity for variable gain and fixed gain";
|
|
}
|
|
|
|
identity variable_gain {
|
|
base edfa-type-def;
|
|
description "'variable_gain' is a simplified model simulating a 2-coil
|
|
EDFA with internal, input and output VOAs. The NF vs gain response is calculated
|
|
accordingly based on the input parameters: nf_min, nf_max, and gain_flatmax. It
|
|
is not a simple interpolation but a 2-stage NF calculation.";
|
|
}
|
|
|
|
identity fixed_gain {
|
|
base edfa-type-def;
|
|
description "'fixed_gain' is a fixed gain model. NF == Cte == nf0 if gain_min < gain < gain_flatmax";
|
|
}
|
|
|
|
identity openroadm {
|
|
base edfa-type-def;
|
|
description "'openroadm' is an openroadm amplifier type.";
|
|
}
|
|
|
|
identity multi_band {
|
|
base edfa-type-def;
|
|
description "multi_band has a combination of amp per frequency band defined with their f_min f_max range";
|
|
}
|
|
|
|
identity dual_stage {
|
|
base edfa-type-def;
|
|
description "dual-stage has two amps defined";
|
|
}
|
|
|
|
identity advanced_model {
|
|
base edfa-type-def;
|
|
description "advanced_model has a combination of amp per frequency band defined with their f_min f_max range";
|
|
}
|
|
|
|
identity fiber-variety {
|
|
description "base identity for fiber variety";
|
|
}
|
|
|
|
identity transceiver-variety {
|
|
description "base identity for transceiver variety";
|
|
}
|
|
|
|
grouping variable_gain {
|
|
leaf nf_min {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf nf_max {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
}
|
|
|
|
grouping fixed_gain{
|
|
leaf nf0 {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
}
|
|
|
|
grouping openroadm{
|
|
leaf-list nf_coef {
|
|
type decimal64 {
|
|
fraction-digits 8;
|
|
}
|
|
//default [8.1e-4,6.142e-2,1.558,19.97] ;
|
|
}
|
|
}
|
|
|
|
grouping dual-stage {
|
|
leaf preamp_variety {
|
|
type union {
|
|
type leafref {
|
|
path "../../Edfa/type_variety";
|
|
}
|
|
type leafref {
|
|
path "../../Edfa/other_name";
|
|
}
|
|
}
|
|
}
|
|
leaf booster_variety {
|
|
type union {
|
|
type leafref {
|
|
path "../../Edfa/type_variety";
|
|
}
|
|
type leafref {
|
|
path "../../Edfa/other_name";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping multi_band {
|
|
leaf-list amplifiers {
|
|
type string;
|
|
description "list of amplifier type-variety picked in other type-def";
|
|
}
|
|
}
|
|
|
|
grouping advanced_model {
|
|
leaf advanced_config_from_json {
|
|
type string;
|
|
description
|
|
"file name where all noise interp coef, gain ripple, dgt, nf_ripple are detailed";
|
|
}
|
|
}
|
|
|
|
grouping edfa-common {
|
|
leaf allowed_for_design{
|
|
type boolean ;
|
|
description "If false, the amplifier will not be picked by auto-design but it can still be used as a
|
|
manual input (from JSON or Excel template topology files.)";
|
|
}
|
|
leaf gain_flatmax {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf gain_min {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf gain_extended {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf p_max {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dBm;
|
|
}
|
|
leaf type_def {
|
|
type identityref{
|
|
base edfa-type-def;
|
|
}
|
|
}
|
|
leaf raman {
|
|
type boolean;
|
|
}
|
|
leaf out_voa_auto{
|
|
type boolean ;
|
|
description "auto_design feature to optimize the amplifier output VOA. If true, output VOA is present
|
|
and will be used to push amplifier gain to its maximum, within EOL power margins.";
|
|
}
|
|
leaf in_voa_auto{
|
|
type boolean ;
|
|
description "auto_design feature to optimize the amplifier input VOA. If true, input VOA is present.
|
|
TODO: code the function in GNPy";
|
|
}
|
|
choice type_of_model {
|
|
case variable_gain {
|
|
when "type_def = 'gnpyeqpt:variable_gain'";
|
|
uses variable_gain ;
|
|
}
|
|
case fixed_gain{
|
|
when "type_def = 'gnpyeqpt:fixed_gain'";
|
|
uses fixed_gain;
|
|
}
|
|
case openroadm{
|
|
when "type_def = 'gnpyeqpt:openroadm'";
|
|
uses openroadm;
|
|
}
|
|
case dual_stage {
|
|
when "type_def = 'gnpyeqpt:dual_stage'";
|
|
uses dual-stage ;
|
|
}
|
|
case multi_band {
|
|
when "type_def = 'gnpyeqpt:multi_band'";
|
|
uses multi_band ;
|
|
}
|
|
case advanced_model {
|
|
when "type_def = 'gnpyeqpt:advanced_model'";
|
|
uses advanced_model;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping common-fiber {
|
|
description "common parameters for fiber and raman fiber";
|
|
leaf type_variety {
|
|
type string ;
|
|
description "a unique name to ID the fiber in the JSON or Excel template topology input file";
|
|
}
|
|
leaf dispersion{
|
|
type decimal64 {
|
|
fraction-digits 8;
|
|
}
|
|
units s.m-1.m-1;
|
|
}
|
|
leaf gamma{
|
|
type decimal64 {
|
|
fraction-digits 8;
|
|
}
|
|
units w-1.m-1 ;
|
|
description "2pi.n2/(lambda*Aeff) (w-2.m-1)";
|
|
}
|
|
leaf pmd_coef{
|
|
type decimal64 {
|
|
fraction-digits 18;
|
|
}
|
|
units s.sqrt(m)-1;
|
|
}
|
|
leaf effective_area{
|
|
type decimal64 {
|
|
fraction-digits 14;
|
|
}
|
|
units m-2;
|
|
}
|
|
}
|
|
|
|
grouping range {
|
|
leaf min_value {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf max_value {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf step {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping eqpt{
|
|
list Edfa {
|
|
config false ;
|
|
key type_variety;
|
|
leaf type_variety {
|
|
type string;
|
|
description "a unique name to ID the amplifier in the JSON/Excel template topology input file";
|
|
}
|
|
leaf-list other_name {
|
|
type string;
|
|
description "a list of alternative names for the equipment";
|
|
}
|
|
leaf f_min {
|
|
type decimal64 {
|
|
fraction-digits 1;
|
|
}
|
|
}
|
|
leaf f_max {
|
|
type decimal64 {
|
|
fraction-digits 1;
|
|
} }
|
|
uses edfa-common;
|
|
}
|
|
|
|
grouping frequency-range {
|
|
description
|
|
"This grouping defines the lower and upper bounds of a
|
|
frequency range (e.g., a band).
|
|
|
|
This grouping SHOULD NOT be used to define a frequency slot,
|
|
which SHOULD be defined using the n and m values instead.
|
|
copied from ietf-layer0-types except for units which must be Hz";
|
|
leaf lower-frequency {
|
|
type union {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
range "0..max";
|
|
}
|
|
type empty;
|
|
}
|
|
units Hz;
|
|
mandatory true;
|
|
description
|
|
"The lower frequency boundary of the
|
|
frequency range.";
|
|
}
|
|
leaf upper-frequency {
|
|
type union {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
range "0..max";
|
|
}
|
|
type empty;
|
|
}
|
|
units Hz;
|
|
must '. > ../lower-frequency' {
|
|
error-message
|
|
"The upper frequency must be greater than the lower
|
|
frequency.";
|
|
}
|
|
mandatory true;
|
|
description
|
|
"The upper frequency boundary of the
|
|
frequency range.";
|
|
}
|
|
}
|
|
|
|
list Fiber {
|
|
config false ;
|
|
key type_variety;
|
|
uses common-fiber;
|
|
}
|
|
|
|
list RamanFiber {
|
|
config false ;
|
|
uses common-fiber;
|
|
container raman_efficiency {
|
|
leaf-list cr {
|
|
type decimal64 {
|
|
fraction-digits 9;
|
|
}
|
|
}
|
|
leaf-list frequency_offset {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
list Span {
|
|
config false ;
|
|
leaf power_mode {
|
|
type boolean ;
|
|
}
|
|
container delta_power_range_dict_db {
|
|
uses range ;
|
|
}
|
|
leaf max_length {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units km;
|
|
default 150.0 ;
|
|
}
|
|
leaf max_loss {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf max_fiber_lineic_loss_for_raman {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB.km-1;
|
|
}
|
|
leaf target_extended_gain {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB;
|
|
}
|
|
leaf length_units{
|
|
type string ;
|
|
default "km";
|
|
}
|
|
leaf padding{
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
default 10.0 ;
|
|
}
|
|
leaf EOL{
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
default 0.0 ;
|
|
}
|
|
leaf con_in{
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
default 0.0 ;
|
|
}
|
|
leaf con_out{
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
default 0.0 ;
|
|
}
|
|
}
|
|
|
|
list Roadm {
|
|
config false ;
|
|
leaf type_variety {
|
|
type string;
|
|
}
|
|
leaf target_pch_out_db {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf target_psd_out_mWperGHz {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf target_out_mWperSlotWidth {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf add_drop_osnr {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf pmd {
|
|
type decimal64 {
|
|
fraction-digits 15;
|
|
}
|
|
}
|
|
leaf pdl {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
container restrictions {
|
|
leaf-list preamp_variety_list {
|
|
type string;
|
|
}
|
|
leaf-list booster_variety_list {
|
|
type string;
|
|
}
|
|
}
|
|
|
|
list roadm-path-impairments {
|
|
key "roadm-path-impairments-id";
|
|
config false;
|
|
description
|
|
"The set of optical impairments related to a ROADM path.";
|
|
|
|
leaf roadm-path-impairments-id {
|
|
type uint32;
|
|
description "index of the ROADM path-impairment list";
|
|
}
|
|
choice impairment-type {
|
|
description "type path impairment";
|
|
case roadm-express-path {
|
|
list roadm-express-path {
|
|
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.";
|
|
container frequency-range {
|
|
description
|
|
"The frequency range for which these optical
|
|
impairments apply.";
|
|
uses frequency-range;
|
|
}
|
|
// todo: augment express to allow transit OSNR//
|
|
uses oit:roadm-express-path;
|
|
}
|
|
}
|
|
case roadm-add-path {
|
|
list roadm-add-path {
|
|
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.";
|
|
container frequency-range {
|
|
description
|
|
"The frequency range for which these optical
|
|
impairments apply.";
|
|
uses frequency-range;
|
|
}
|
|
uses oit:roadm-add-path;
|
|
}
|
|
}
|
|
case roadm-drop-path {
|
|
list roadm-drop-path {
|
|
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.";
|
|
container frequency-range {
|
|
description
|
|
"The frequency range for which these optical
|
|
impairments apply.";
|
|
uses frequency-range;
|
|
}
|
|
uses oit:roadm-drop-path;
|
|
}
|
|
}
|
|
}
|
|
} // list path impairments
|
|
|
|
}
|
|
|
|
list SI {
|
|
config false ;
|
|
leaf f_min {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf f_max {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf baud_rate {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf spacing {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf power_dbm {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
container power_range_dict_db {
|
|
uses range;
|
|
}
|
|
leaf roll_off {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf tx_osnr {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf tx_power_dbm {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
leaf type_variety {
|
|
type string ;
|
|
description "a unique name to ID the SI band";
|
|
}
|
|
leaf sys_margins {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
list Transceiver {
|
|
config false ;
|
|
leaf type_variety {
|
|
type string ;
|
|
description "a unique name to ID the transceiver in the JSON or Excel template topology input file";
|
|
}
|
|
leaf-list other_name {
|
|
type string;
|
|
description "a list of alternative names for the equipment";
|
|
}
|
|
leaf comment {
|
|
type string;
|
|
description "free string";
|
|
}
|
|
container frequency {
|
|
leaf min {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units Hz ;
|
|
}
|
|
leaf max {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units Hz ;
|
|
}
|
|
description "Min/max frequency of transponder eg 191.35e12 and 196.1e12";
|
|
}
|
|
list mode {
|
|
config false ;
|
|
leaf format {
|
|
type string ;
|
|
description "unique name of the mode";
|
|
}
|
|
leaf-list other_name {
|
|
type string;
|
|
description "a list of alternative names for the mode";
|
|
}
|
|
leaf baud_rate {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units baud ;
|
|
description "baud_rate";
|
|
}
|
|
leaf OSNR {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB ;
|
|
description "min required OSNR in 0.1nm (dB)";
|
|
}
|
|
leaf tx_osnr {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units dB ;
|
|
description "min required OSNR in 0.1nm (dB)";
|
|
}
|
|
leaf min_spacing {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units GHz ;
|
|
description "...";
|
|
}
|
|
leaf bit_rate {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
units bit/s ;
|
|
description "bit rate";
|
|
}
|
|
leaf roll_off {
|
|
type union {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
type empty;
|
|
}
|
|
description "...";
|
|
}
|
|
leaf cost {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
description "arbitrary unit";
|
|
}
|
|
list penalties {
|
|
leaf chromatic_dispersion {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
description "chromatic dispersion";
|
|
}
|
|
leaf pmd {
|
|
type decimal64 {
|
|
fraction-digits 15;
|
|
}
|
|
description "Polarization mode dispersion";
|
|
}
|
|
leaf pdl {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
description "Polarization dependant loss";
|
|
}
|
|
leaf penalty_value {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
}
|
|
}
|
|
leaf equalization_offset_db {
|
|
type decimal64 {
|
|
fraction-digits 4;
|
|
}
|
|
description "Power offset for equalizing this mode in ROADM compared to reference channel";
|
|
}
|
|
leaf equalization_slot_width {
|
|
type decimal64 {
|
|
fraction-digits 2;
|
|
}
|
|
description "slot width used for equalization instead of min_spacing in case of
|
|
equalization per slot width";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
augment "/gnpyeqpt:equipment/gnpyeqpt:Roadm/gnpyeqpt:roadm-path-impairments/"
|
|
+ "gnpyeqpt:impairment-type/gnpyeqpt:roadm-express-path/"
|
|
+ "gnpyeqpt:roadm-express-path" {
|
|
leaf roadm-osnr {
|
|
type l0-types:snr-or-null;
|
|
description
|
|
"Optical Signal-to-Noise Ratio (OSNR).
|
|
If the express path contains an integrated amplifier,
|
|
this reflects its OSNR contribution.";
|
|
}
|
|
}
|
|
|
|
container equipment {
|
|
description
|
|
"Describe the equipment library of gnpy release 2.6";
|
|
uses eqpt;
|
|
}
|
|
}
|
|
|