mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-30 09:42:22 +00:00
YANG: Equipment Library
The first step in adding YANG description for GNPy's input is the equipment library (`tip-photonic-equipment`). It contains data about all defined EDFA and Fiber types. This is supposed to be functionally equivalent to the `eqpt_config.json`, but the actual JSON structure is different. The core idea of this model is to describe capabilities of the simulation engine as it exists, which means that the individual choice/case statements mirror our different "simulation input parameters". The user is not expected to do any augmentations of the YANG model -- just describe the amplifiers, fiber, etc, with data. This means that the user just *uses* the YANG model, which is unlike another proposal that was floated around back in 2019 which used YANG-level augmentations for the equipment library. The pre-YANG code actually split stuff from `eqpt_config.json` into additional JSON files for "fancy bits", such as the DGT LUT. That's something that, IMHO, does not make sense when we're willing to ship with machine-validation of the complete input set. So instead of deferring to another JSON file for the NF-/gain-ripple/DGT, let's move everything in-line into the input data. This has one obvious downside in making the amplifier data a bit too verbose. There were several options: - Ignore the human-friendliness and push everything into the amplifier description. This is nice and self-contained, but the data are going to be very, very long, and the majority of the WG was worried that it would make human editing too difficult. - Move everything to a side-loaded JSON file. This option separates out some numerical parameters from the equipment library, and therefore splits the configuration into two places. One of these places would be exempt from the YANG validation, and loaded via unspecified means. That's a no-go. - Put stuff into a YANG model, but use one level of indirection between the amplifier description and the numerical data. This took us quite some time to decide, but ultimately on 2020-09-01 we decided that the numbers that we have been shipping are *probably* specific to a given EDFA model they were measured on. The actual *slope* of the DGT looks very similar between, say, the Juniper/Lumentum measurements and the data from Orange, but the multiplication factor is different. So the outcome was that we will probably have to ship with some sane default, *but* any measurements done by the user will apply only to a specific amplifier model. The YANG model reflects that, and it uses per-type lists. They are now indexed by frequency as agreed on the 2020-09-01 coders call. In the real world, some "common fiber types" are well-defined by ITU, such as the SSMF. Esther tried to model this via a set of identities and YANG `identityref`s. I think that there's no disadvantage in shipping these data as a default content of the YANG-formatted datastore, similarly to how the equipment library used to be structured prior to this patch. Once again, I'm following the pattern where the user can change any *data* without augmenting the YANG model. The only reason for editing/augmenting the (equipment) YANG model should be changes in our simulation *engine*, such as when adding different input parameters for NF calculations, or adding Raman amplification, etc. The amplifier model has been reworked a bit. I've reduced the number of available "simulation parameters" to a reasonable minimum as suggested by Jean-Luc (cf. issue #227): - a polynomial NF model - a simplified model for operators with NF_min and NF_max - a dual-stage amplifier comprising two individual sub-amplifiers that are each any of the above - a faux-Raman - three OpenROADM-specific models In terms of correspondence to the previous code, the "polynomial NF" is used for current `advanced_model` (which uses yet another external JSON file) and the `fixed_gain` model. The simplified, min-max-NF is what Jean-Luc called "operator model"; the wording is a compromise of various suggestions done via GitHub. The OpenROADM models are, unfortunately, magic, especially the preamp+booster simulation. But it reflects how it's been implemented in GNPy. The values which are stored in the YANG-formatted JSON files have different units than what was stored in the legacy JSON files. We are now using the "customary units", such as ps/km, instead of s/m. This is largely a matter of taste, but the technical reason behind this is that YANG only defines a decimal64 data type with a limited precision, and we were running out of fraction-digits for certain parameters where the SI representation is "too low" (the pmd-coefficient is one example). Other "subtle" changes have been done as well, such as clarifying that the amplifier's band boundaries refer to the edges of the passband and not the central frequencies, etc. Change-Id: I449d66e952834011b3ec476023c9cc353dfca5c0
This commit is contained in:
@@ -13,6 +13,7 @@ in real-world mesh optical networks. It is based on the Gaussian Noise Model.
|
||||
install
|
||||
json
|
||||
excel
|
||||
yang
|
||||
extending
|
||||
about-project
|
||||
model
|
||||
|
||||
325
docs/yang.md
Normal file
325
docs/yang.md
Normal file
@@ -0,0 +1,325 @@
|
||||
(yang)=
|
||||
# YANG-formatted data
|
||||
|
||||
(yang-equipment)=
|
||||
## Equipment Library
|
||||
|
||||
The [equipment library](concepts-equipment) is defined via the `tip-photonic-equipment` YANG model.
|
||||
The database describes all [amplifier models](yang-equipment-amplifier), all [types of fiber](yang-equipment-fiber), all possible [ROADM models](yang-equipment-roadm), etc.
|
||||
|
||||
(yang-equipment-amplifier)=
|
||||
### Amplifiers
|
||||
|
||||
Amplifiers introduce noise to the signal during amplification, and care must be taken to describe their performance correctly.
|
||||
There are some common input parameters:
|
||||
|
||||
`type`
|
||||
|
||||
: A free-form name which must be unique within the whole equipment library.
|
||||
It will be used in the network topology to specify which amplifier model is deployed at the given place in the network.
|
||||
|
||||
`frequency-min` and `frequency-max`
|
||||
|
||||
: Operating range of the amplifier.
|
||||
|
||||
`gain-flatmax`
|
||||
|
||||
: The optimal operating point of the amplifier.
|
||||
This is the place where the gain tilt and the NF of the amplifier are at its best.
|
||||
|
||||
`gain-min`
|
||||
|
||||
: Minimal possible gain that can be set for the EDFA.
|
||||
Any lower gain requires adding a physical attenuator.
|
||||
|
||||
`max-power-out`
|
||||
|
||||
: Total power cap at the output of the amplifier, measured across the whole spectrum.
|
||||
|
||||
`has-output-voa`
|
||||
|
||||
: Specifies if there's a Variable Optical Attenuator (VOA) at the EDFA's output port.
|
||||
|
||||
One of the key parameters of an amplifier is the method to use for [computing the Noise Figure (NF)](concepts-nf-model).
|
||||
Here's how they are represented in YANG data:
|
||||
|
||||
(yang-equipment-amplifier-polynomial-NF)=
|
||||
#### `polynomial-NF`
|
||||
|
||||
The [Polynomial NF model](ext-nf-model-polynomial-NF) requires four coefficients for the polynomial function: `a`, `b`, `c` and `d`.
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "Juniper-BoosterHG",
|
||||
"gain-min": "10",
|
||||
"gain-flatmax": "25",
|
||||
"max-power-out": "21",
|
||||
"frequency-min": "191.35",
|
||||
"frequency-max": "196.1",
|
||||
"polynomial-NF": {
|
||||
"a": "0.0008",
|
||||
"b": "0.0272",
|
||||
"c": "-0.2249",
|
||||
"d": "6.4902"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(yang-equipment-amplifier-min-max-NF)=
|
||||
#### `min-max-NF`
|
||||
|
||||
This is an operator-focused model.
|
||||
Performance is defined by the [minimal and maximal NF](nf-model-min-max-NF).
|
||||
|
||||
`nf-min`
|
||||
|
||||
: Minimal Noise Figure.
|
||||
This is achieved when the EDFA operates at its maximal flat gain (see the `gain-flatmax` parameter).
|
||||
|
||||
`nf-max`
|
||||
|
||||
: Maximal Noise Figure.
|
||||
This worst-case scenario applies when the EDFA operates at its minimal gain (see the `gain-min` parameter).
|
||||
|
||||
(yang-equipment-amplifier-openroadm)=
|
||||
#### OpenROADM
|
||||
|
||||
NF models for preamps, boosters and inline amplifiers as defined via the OpenROADM group.
|
||||
|
||||
(yang-equipment-amplifier-polynomial-OSNR-OpenROADM)=
|
||||
##### `OpenROADM-ILA`
|
||||
|
||||
This model is useful for [amplifiers compliant to the OpenROADM specification for ILA](ext-nf-model-polynomial-OSNR-OpenROADM).
|
||||
The input parameters to this model are once again four coefficients `a`. `b`, `c` and `d`:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "low-noise",
|
||||
"gain-min": "12",
|
||||
"gain-flatmax": "27",
|
||||
"max-power-out": "22",
|
||||
"frequency-min": "191.35",
|
||||
"frequency-max": "196.1",
|
||||
"OpenROADM-ILA": {
|
||||
"a": "-8.104e-4",
|
||||
"b": "-6.221e-2",
|
||||
"c": "-5.889e-1",
|
||||
"d": "37.62",
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(yang-equipment-amplifier-OpenROADM-preamp-booster)=
|
||||
##### `OpenROADM-preamp` and `OpenROADM-booster`
|
||||
|
||||
No extra parameters are defined for these NF models.
|
||||
See the [model documentation](ext-nf-model-noise-mask-OpenROADM) for details.
|
||||
|
||||
(yang-equipment-amplifier-composite)=
|
||||
#### `composite`
|
||||
|
||||
A [composite](ext-nf-model-dual-stage-amplifier) amplifier combines two distinct amplifiers.
|
||||
The first amplifier will be always operated at its maximal gain (and therefore its best NF).
|
||||
|
||||
`preamp`
|
||||
|
||||
: Reference to the first amplifier model
|
||||
|
||||
`booster`
|
||||
|
||||
: Reference to the second amplifier model
|
||||
|
||||
(yang-equipment-amplifier-raman-approximation)=
|
||||
#### `raman-approximation`
|
||||
|
||||
A fixed-NF amplifier, especially suitable for emulating Raman amplifiers
|
||||
in scenarios where the Raman-aware engine cannot be used.
|
||||
|
||||
`nf`
|
||||
|
||||
: Noise Figure of the amplifier.
|
||||
|
||||
(yang-equipment-amplifier-fine-tuning)=
|
||||
#### Advanced EDFA parameters
|
||||
|
||||
In addition to all parameters specified above, it is also possible to describe the EDFA\'s performance in higher detail.
|
||||
All of the following parameters are given as measurement points at arbitrary frequencies.
|
||||
The more data points provided, the more accurate is the simulation.
|
||||
The underlying model uses piecewise linear approximation to estimate values which are laying in between the provided values.
|
||||
|
||||
`dynamic-gain-tilt`
|
||||
|
||||
: FIXME: document this
|
||||
|
||||
`gain-ripple`
|
||||
|
||||
: Difference of the amplifier gain for a specified frequency, as compared to the typical gain over the whole spectrum
|
||||
|
||||
`nf-ripple`
|
||||
|
||||
: Difference in the resulting Noise Figure (NF) as a function of a carrier frequency
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "vg-15-26",
|
||||
"gain-min": "15",
|
||||
"gain-flatmax": "26",
|
||||
"dynamic-gain-tilt": [
|
||||
{
|
||||
"frequency": "191.35",
|
||||
"dynamic-gain-tilt": "0"
|
||||
},
|
||||
{
|
||||
"frequency": "196.1",
|
||||
"dynamic-gain-tilt": "2.4"
|
||||
}
|
||||
],
|
||||
"max-power-out": "23",
|
||||
"min-max-NF": {
|
||||
"nf-min": "6.0",
|
||||
"nf-max": "10.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
These values are optional. If not provided, gain and NF is assumed to not vary with carrier frequency.
|
||||
|
||||
(yang-equipment-fiber)=
|
||||
### Fiber
|
||||
|
||||
An optical fiber attenuates the signal and acts as a medium for non-linear interference (NLI) for all signals in the propagated spectrum.
|
||||
When using the Raman-aware simulation engine, the Raman effect is also considered.
|
||||
|
||||
`type`
|
||||
|
||||
: A free-form name which must be unique within the whole equipment library, such as `G.652`.
|
||||
|
||||
`chromatic-dispersion`
|
||||
|
||||
: Chromatic dispersion, in $\frac{ps}{nm\times km}$.
|
||||
|
||||
`chromatic-dispersion-slope`
|
||||
|
||||
: Dispersion slope is related to the $\beta _3$ coefficient.
|
||||
In $\frac{ps}{nm^{2}\times km}$.
|
||||
|
||||
`gamma`
|
||||
|
||||
: Fiber\'s $\gamma$ coefficient.
|
||||
In $\frac{1}{W\times km}$.
|
||||
|
||||
`pmd-coefficient`
|
||||
|
||||
: Coefficient for the Polarization Mode Dispersion (PMD).
|
||||
In $\frac{ps}{\sqrt{km}}$.
|
||||
|
||||
`raman-efficiency`
|
||||
|
||||
: Normalized efficiency of the Raman amplification per operating frequency.
|
||||
This is a required parameter if using Rama-aware simulation engine.
|
||||
The data type is a YANG list keyed by `delta-frequency` (in $\text{THz}$).
|
||||
For each `delta-frequency`, provide the `cr` parameter which is a dimensionless number indicating how effective the Raman transfer of energy is at that particular frequency offset from the pumping signal.
|
||||
|
||||
```javascript
|
||||
{
|
||||
"type": "SSMF",
|
||||
"dispersion": "16.7",
|
||||
"gamma": "1.27",
|
||||
"pmd-coefficient": "0.0400028124",
|
||||
"raman-efficiency": [
|
||||
{
|
||||
"delta-frequency": "0",
|
||||
"cr": "0"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "0.5",
|
||||
"cr": "9.4e-06"
|
||||
},
|
||||
|
||||
// more frequencies go here
|
||||
|
||||
{
|
||||
"delta-frequency": "42.0",
|
||||
"cr": "1e-07"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
(yang-equipment-roadm)=
|
||||
### ROADMs
|
||||
|
||||
Compared to EDFAs and fibers, ROADM descriptions are simpler.
|
||||
In GNPy, ROADM mainly acts as a smart, spectrum-specific attenuator which equalizes carrier power to a specified power level.
|
||||
The PMD contribution is also taken into account, and the Add and Drop stages affect signal\'s OSNR as well.
|
||||
|
||||
`type`
|
||||
|
||||
: Unique model identification, used when cross-referencing from the network topology.
|
||||
|
||||
`add-drop-osnr`
|
||||
|
||||
: OSNR penalty introduced by the Add stage or the Drop stage of this ROADM type.
|
||||
|
||||
`target-channel-out-power`
|
||||
|
||||
: Per-channel target TX power towards the egress amplifier.
|
||||
Within GNPy, a ROADM is expected to attenuate any signal that enters the ROADM node to this level.
|
||||
This can be overridden on a per-link in the network topology.
|
||||
|
||||
`pmd`
|
||||
|
||||
: Polarization mode dispersion (PMD) penalty of the express path within this ROADM model.
|
||||
In $\text{s}$.
|
||||
|
||||
`compatible-preamp` and `compatible-booster`
|
||||
|
||||
: List of all allowed booster/preamplifier types.
|
||||
Useful for specifying constraints on what amplifier modules fit into ROADM chassis, and when using fully disaggregated ROADM topologies as well.
|
||||
|
||||
(yang-equipment-transponder)=
|
||||
### Transponders
|
||||
|
||||
Transponders (or transceivers) are sources and detectors of optical signals.
|
||||
There are a few parameters which apply to a transponder model:
|
||||
|
||||
`type`
|
||||
|
||||
: Unique name, for corss-referencing from the topology data.
|
||||
|
||||
`frequency-min` and `frequency-max`
|
||||
|
||||
: Minimal and maximal operating frequencies of the receiver and transmitter.
|
||||
|
||||
A lot of transponders can operate in a variety of modes, which are described via the `transceiver/mode` list:
|
||||
|
||||
`name`
|
||||
|
||||
: Identification of the transmission mode.
|
||||
Free form, has to be unique within one transponder type.
|
||||
|
||||
`bit-rate`
|
||||
|
||||
: Data bit rate, in $\text{Gbits}\times s^{-1}$.
|
||||
|
||||
`baud-rate`
|
||||
|
||||
: Symbol modulation rate, in $\text{Gbaud}$.
|
||||
|
||||
`required-osnr`
|
||||
|
||||
: Minimal allowed OSNR for the receiver.
|
||||
|
||||
`in-band-tx-osnr`
|
||||
|
||||
: Worst-case guaranteed initial OSNR at the Tx port per 0.1nm of bandwidth
|
||||
Only the in-band OSNR is considered.
|
||||
|
||||
`grid-spacing`
|
||||
|
||||
: Minimal grid spacing, i.e., an effective channel spectral bandwidth.
|
||||
In $\text{Hz}$.
|
||||
|
||||
`tx-roll-off`
|
||||
|
||||
: Roll-off parameter ($\beta$) of the TX pulse shaping filter.
|
||||
This assumes a raised-cosine filter.
|
||||
685
gnpy/yang/tip/tip-photonic-equipment.yang
Normal file
685
gnpy/yang/tip/tip-photonic-equipment.yang
Normal file
@@ -0,0 +1,685 @@
|
||||
module tip-photonic-equipment {
|
||||
yang-version 1.1;
|
||||
namespace "https://oopt.telecominfraproject.com/yang/equipment";
|
||||
prefix "tip-pe";
|
||||
|
||||
organization "Telecom Infrastructure Project";
|
||||
contact "https://github.com/Telecominfraproject/oopt-gnpy";
|
||||
description "Catalog of photonic equipment for simulating signal propagation via the OOPT-PSE GNPy tool";
|
||||
|
||||
revision 2020-09-01 {
|
||||
description "Initial release";
|
||||
reference "Internal documentation";
|
||||
}
|
||||
|
||||
typedef db-ratio {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
}
|
||||
units "dB";
|
||||
description "Decibels";
|
||||
}
|
||||
|
||||
typedef noise-figure {
|
||||
type db-ratio {
|
||||
range "3.0 .. 20.0";
|
||||
}
|
||||
description "Noise Figure of an amplifier";
|
||||
}
|
||||
|
||||
typedef gain {
|
||||
type db-ratio {
|
||||
range "0 .. 40.0";
|
||||
}
|
||||
description "Gain of an amplifier";
|
||||
}
|
||||
|
||||
typedef power {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
range "-99.9 .. 30.0";
|
||||
}
|
||||
units "dBm";
|
||||
description "Optical power in dBm";
|
||||
}
|
||||
|
||||
typedef carrier-frequency {
|
||||
type decimal64 {
|
||||
fraction-digits 7;
|
||||
range "191.0 .. 197.0";
|
||||
}
|
||||
units "THz";
|
||||
description "Optical frequency of a signal";
|
||||
}
|
||||
|
||||
typedef frequency-channel-spacing {
|
||||
type decimal64 {
|
||||
fraction-digits 7;
|
||||
range "6.25 .. 200.0";
|
||||
}
|
||||
units "GHz";
|
||||
description "Channel spacing";
|
||||
}
|
||||
|
||||
typedef baud-rate {
|
||||
type decimal64 {
|
||||
fraction-digits 4;
|
||||
range "10 .. 130";
|
||||
}
|
||||
units "Gbaud";
|
||||
description "Symbol rate";
|
||||
}
|
||||
|
||||
typedef roll-off {
|
||||
type decimal64 {
|
||||
fraction-digits 4;
|
||||
range "0 .. 1";
|
||||
}
|
||||
description "Roll-off parameter (β) of the TX pulse shaping filter. This assumes a raised-cosine filter.";
|
||||
}
|
||||
|
||||
typedef cd {
|
||||
type decimal64 {
|
||||
fraction-digits 2;
|
||||
range "-50000 .. 50000";
|
||||
}
|
||||
units "ps × nm⁻¹";
|
||||
description "Chromatic Dispersion (CD).";
|
||||
}
|
||||
|
||||
typedef pmd {
|
||||
type decimal64 {
|
||||
fraction-digits 4;
|
||||
}
|
||||
units "ps";
|
||||
description "Polarization mode dispersion (PMD).";
|
||||
}
|
||||
|
||||
typedef polynomial-coefficient {
|
||||
type decimal64 {
|
||||
fraction-digits 12;
|
||||
}
|
||||
description "One coefficient within a polynomial";
|
||||
}
|
||||
|
||||
grouping cubic-polynomial-coefficients {
|
||||
description "Coefficients for a polynomial of a third degree: f(x) = a*x³ + b*x² + c*x + d";
|
||||
leaf a {
|
||||
type polynomial-coefficient;
|
||||
mandatory true;
|
||||
description "Cubic (x³) coefficient";
|
||||
}
|
||||
leaf b {
|
||||
type polynomial-coefficient;
|
||||
mandatory true;
|
||||
description "Quadratic (x²) coefficient";
|
||||
}
|
||||
leaf c {
|
||||
type polynomial-coefficient;
|
||||
mandatory true;
|
||||
description "Linear (x) coefficient";
|
||||
}
|
||||
leaf d {
|
||||
type polynomial-coefficient;
|
||||
mandatory true;
|
||||
description "Offset (+) coefficient";
|
||||
}
|
||||
}
|
||||
|
||||
grouping amp-spectrum-profile {
|
||||
description "Changes in amplifier's operation as a function of frequency";
|
||||
|
||||
list gain-ripple {
|
||||
leaf frequency {
|
||||
type carrier-frequency;
|
||||
description "Frequency for the specific gain ripple deviation";
|
||||
}
|
||||
|
||||
leaf gain-ripple {
|
||||
type db-ratio;
|
||||
mandatory true;
|
||||
description "Gain ripple deviation at a given frequency";
|
||||
}
|
||||
|
||||
key "frequency";
|
||||
|
||||
description "Amplifier gain ripple excursion comb list in dB across the frequency range";
|
||||
}
|
||||
|
||||
list nf-ripple {
|
||||
leaf frequency {
|
||||
type carrier-frequency;
|
||||
description "Frequency for the specific NF ripple deviation";
|
||||
}
|
||||
|
||||
leaf nf-ripple {
|
||||
type db-ratio;
|
||||
mandatory true;
|
||||
description "NF ripple deviation at a given frequency";
|
||||
}
|
||||
|
||||
key "frequency";
|
||||
|
||||
description "Amplifier NF ripple excursion comb list in dB across the frequency range";
|
||||
}
|
||||
|
||||
list dynamic-gain-tilt {
|
||||
leaf frequency {
|
||||
type carrier-frequency;
|
||||
description "Frequency for the specific NF ripple deviation";
|
||||
}
|
||||
|
||||
leaf dynamic-gain-tilt {
|
||||
type db-ratio;
|
||||
mandatory true;
|
||||
description "DGT at a specified frequency";
|
||||
}
|
||||
|
||||
key "frequency";
|
||||
|
||||
description "Dynamic Gain Tilt (DGT) refers to a relative change of gain
|
||||
at a given frequency when compared to a reference frequency.
|
||||
|
||||
Intro about the model: https://telecominfraproject.workplace.com/groups/OOPT.PSE/permalink/957144244450445/
|
||||
Relevant paper: https://www.osapublishing.org/jlt/abstract.cfm?uri=JLT-18-3-343";
|
||||
}
|
||||
}
|
||||
|
||||
grouping amp-common {
|
||||
description "Properties common to all EDFAs except the composite models";
|
||||
|
||||
leaf frequency-min {
|
||||
type carrier-frequency;
|
||||
default 191.325;
|
||||
description "Minimal frequency supported by this amplifier
|
||||
|
||||
This refers to the edge of the optical spectrum, not to a central frequency of a fixed grid.";
|
||||
}
|
||||
|
||||
leaf frequency-max {
|
||||
type carrier-frequency;
|
||||
default 196.125;
|
||||
description "Maximal frequency supported by this amplifier
|
||||
|
||||
This refers to the edge of the optical spectrum, not to a central frequency of a fixed grid.";
|
||||
}
|
||||
|
||||
leaf has-output-voa {
|
||||
type boolean;
|
||||
default false;
|
||||
description "If true, output VOA is present.
|
||||
|
||||
An amplifier with an output VOA can be pushed to operate at its the max-power-out if the output VOA is available.";
|
||||
}
|
||||
|
||||
leaf gain-flatmax {
|
||||
type gain;
|
||||
mandatory true;
|
||||
description "Maximal gain of the nominal range (without entering the extended range)
|
||||
|
||||
Once the amplifier's gain gets pushed into the extended range, it begins to tilt as specified in the dynamic-gain-tilt.";
|
||||
}
|
||||
|
||||
leaf max-power-out {
|
||||
type power;
|
||||
mandatory true;
|
||||
description "Maximal output power at the amplifier's output port
|
||||
|
||||
The total signal output power will not be allowed beyond this value.";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
list amplifier {
|
||||
key "type";
|
||||
description "Available amplifier (EDFA) models";
|
||||
|
||||
leaf type {
|
||||
type string;
|
||||
description "Brief identification of the amplifier model. This is used for cross-referencing from topology data.";
|
||||
}
|
||||
|
||||
uses amp-common {
|
||||
when "count(composite) = 0";
|
||||
description "Common parameters for all EDFAs except aggregated ones";
|
||||
}
|
||||
|
||||
leaf gain-min {
|
||||
type gain;
|
||||
mandatory true;
|
||||
description "Minimal possible gain of the amplifier
|
||||
|
||||
If the amplifier's gain is set below this value, the amplifier's input is automatically padded with an attenuator,
|
||||
and the NF is increased by the attenuation of this padding.";
|
||||
}
|
||||
|
||||
choice noise-model {
|
||||
mandatory true;
|
||||
description "What simulation algorithm to use for this amplifier model";
|
||||
|
||||
case polynomial-NF {
|
||||
container polynomial-NF {
|
||||
description "Whitebox model with detailed information about gain ripple, NF ripple and dynamic gain tilt
|
||||
|
||||
Polynomial coefficients for NF calculation:
|
||||
|
||||
f(x) = a*x³ + b*x² + c*x + d
|
||||
|
||||
NF = f(gain_max - gain)
|
||||
|
||||
This model can be also used for fixed-gain fixed-NF amplifiers. In that case, use:
|
||||
|
||||
a = b = c = 0
|
||||
d = NF";
|
||||
|
||||
uses cubic-polynomial-coefficients;
|
||||
}
|
||||
}
|
||||
|
||||
case min-max-NF {
|
||||
container min-max-NF {
|
||||
description "Operator-focused model
|
||||
|
||||
Performance is defined by the minimal and maximal NF. These are especially suited to model a dual-coil
|
||||
EDFA with a VOA in between.";
|
||||
|
||||
leaf nf-min {
|
||||
type noise-figure;
|
||||
mandatory true;
|
||||
description "Minimal Noise Figure (operating at the point of the maximal flat gain)
|
||||
|
||||
See gain-flatmax.";
|
||||
}
|
||||
|
||||
leaf nf-max {
|
||||
type noise-figure;
|
||||
mandatory true;
|
||||
description "Maximal Noise Figure (operating at the minimal gain)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case OpenROADM-ILA {
|
||||
container OpenROADM-ILA {
|
||||
description "EDFA model based on the OpenROADM specification for an ILA
|
||||
|
||||
OpenROADM describes amplifier performance in terms of an incremental OSNR as a function of input power:
|
||||
|
||||
Incremental OSNR = a*Pᵢₙ³ + b*Pᵢₙ² + c*Pᵢₙ + d
|
||||
";
|
||||
|
||||
uses cubic-polynomial-coefficients;
|
||||
}
|
||||
}
|
||||
|
||||
case OpenROADM-preamp {
|
||||
container OpenROADM-preamp {
|
||||
presence true;
|
||||
description "Linear impairments of the MW-MW path within an OpenROADM ROADM node
|
||||
|
||||
Unlike GNPy which simulates the preamplifier and the booster separately as two amplifiers for best accuracy,
|
||||
the OpenROADM specification mandates a certain performance level for a combination of these two amplifiers.
|
||||
For the express path, the effective noise mask comprises the preamplifier and the booster.
|
||||
When terminating a channel, the same effective noise mask is mandated for a combination of the preamplifier
|
||||
and the drop stage.
|
||||
|
||||
This NF model provides all of the linear impairments to the signal, including those which are incurred by
|
||||
the booster in a real network.";
|
||||
}
|
||||
}
|
||||
|
||||
case OpenROADM-booster {
|
||||
container OpenROADM-booster {
|
||||
presence true;
|
||||
description "A faux, \"zero-noise\" amplifier for use along with OpenROADM-preamp as a booster.";
|
||||
}
|
||||
}
|
||||
|
||||
case composite {
|
||||
container composite {
|
||||
description "Dual-stage amplifier combines two distinct amplifiers
|
||||
|
||||
The first amplifier will be always operated at its maximal gain (and therefore its best NF).";
|
||||
|
||||
leaf preamp {
|
||||
type leafref {
|
||||
path "/tip-pe:amplifier/type";
|
||||
}
|
||||
must "count(deref(.)/../composite) = 0" {
|
||||
error-message "First (preamp) stage of a composite amplifier cannot be a composite amplifier";
|
||||
}
|
||||
must "../../gain-min >= deref(.)/../gain-min" {
|
||||
error-message "Minimal total gain of a composite EDFA cannot be lower that the minimal gain of the preamp";
|
||||
}
|
||||
mandatory true;
|
||||
description "Amplifier type used as a preamplifier, i.e., the first stage";
|
||||
}
|
||||
|
||||
leaf booster {
|
||||
type leafref {
|
||||
path "/tip-pe:amplifier/type";
|
||||
}
|
||||
must "count(deref(.)/../composite) = 0" {
|
||||
error-message "Second (booster) stage of a composite amplifier cannot be a composite amplifier";
|
||||
}
|
||||
must "(deref(.)/../frequency-min <= deref(../preamp)/../frequency-max) and
|
||||
(deref(.)/../frequency-max >= deref(../preamp)/../frequency-min)" {
|
||||
error-message "booster/preamp operating frequencies do not overlap";
|
||||
}
|
||||
mandatory true;
|
||||
description "Amplifier type used as a booster, i.e., the second stage";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case raman-approximation {
|
||||
container raman-approximation {
|
||||
description "Emulate a Raman amplifier with a possibly negative NF
|
||||
|
||||
This NF model assumes a particular, fixed NF. It is similar to the polynomial-NF model, except that the
|
||||
effective NF value is fixed (and therefore it does not vary with the amplifier's operating point), and
|
||||
that the effective NF can be described as a negative value.
|
||||
|
||||
Use this for model to (roughly) emulate a Raman amplifier when the detailed description of Raman pumps
|
||||
is not available from the equipment vendor.";
|
||||
|
||||
leaf nf {
|
||||
type db-ratio {
|
||||
range "-5.0 .. 20.0";
|
||||
}
|
||||
mandatory true;
|
||||
description "Noise Figure (NF) of the amplifier";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uses amp-spectrum-profile {
|
||||
when "count(deref(.)/composite) = 0";
|
||||
}
|
||||
|
||||
leaf model-precision {
|
||||
type enumeration {
|
||||
enum public-approximation {
|
||||
description "These data come from a publicly available datasheet, and as such might be only an approximate representation";
|
||||
}
|
||||
enum reasonably-precise {
|
||||
description "The GNPy team believes that these are reasonably accurate";
|
||||
}
|
||||
}
|
||||
default reasonably-precise;
|
||||
description "How precise are the modeling data
|
||||
|
||||
If a simulation runs with only approximate inputs, the simulation results might be \"tainted\" with inaccuracies.";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
list fiber {
|
||||
key "type";
|
||||
description "Available fiber types";
|
||||
|
||||
leaf type {
|
||||
type string;
|
||||
description "Unique identification of the fiber type. This is used for cross-referencing from topology data.";
|
||||
}
|
||||
|
||||
leaf chromatic-dispersion {
|
||||
type decimal64 {
|
||||
fraction-digits 6;
|
||||
range "-25 .. 25";
|
||||
}
|
||||
units "ps × nm⁻¹ × km⁻¹";
|
||||
mandatory true;
|
||||
description "Chromatic dispersion";
|
||||
}
|
||||
|
||||
leaf chromatic-dispersion-slope {
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
range "0 .. 0.1";
|
||||
}
|
||||
units "ps × nm⁻² × km⁻¹";
|
||||
default "0.07";
|
||||
description "Chromatic dispersion slope is related to the β₃ coefficient
|
||||
|
||||
Cf. Abramczyk, Halina. Dispersion phenomena in optical fibers. Virtual European University on Lasers, 2005.
|
||||
|
||||
http://mitr.p.lodz.pl/evu/lectures/Abramczyk3.pdf";
|
||||
}
|
||||
|
||||
leaf gamma {
|
||||
type decimal64 {
|
||||
fraction-digits 8;
|
||||
range "0.5 .. 2.5";
|
||||
}
|
||||
units "W⁻¹ × km⁻¹";
|
||||
mandatory true;
|
||||
description "Fiber's γ coefficient
|
||||
|
||||
See, e.g., A. Carena, G. Bosco, V. Curri, P. Poggiolini, M. Tapia Taiba, and F. Forghieri. Statistical characterization
|
||||
of PM-QPSK signals after propagation in uncompensated fiber links. In European Conference on Optical Communications,
|
||||
2010, 1–3. IEEE, 2010-09.
|
||||
|
||||
URL: http://ieeexplore.ieee.org/document/5621509/
|
||||
doi:10.1109/ECOC.2010.5621509";
|
||||
}
|
||||
|
||||
leaf pmd-coefficient {
|
||||
type decimal64 {
|
||||
fraction-digits 10;
|
||||
range "0 .. 10";
|
||||
}
|
||||
units "ps × √(km)⁻¹";
|
||||
mandatory true;
|
||||
description "Polarization mode dispersion (PMD) coefficient";
|
||||
}
|
||||
|
||||
list raman-efficiency {
|
||||
key "delta-frequency";
|
||||
description "Efficiency of Raman amplification in the fiber medium per operating frequency
|
||||
|
||||
See, e.g., J. Bromage. Raman Amplification for Fiber Communications Systems. In J. Lightwave Technol. 22, 79- (2004).";
|
||||
|
||||
leaf delta-frequency {
|
||||
type decimal64 {
|
||||
fraction-digits 3;
|
||||
range "0 .. 60";
|
||||
}
|
||||
units "THz";
|
||||
description "Spectral difference between the pumping photon and the one receiving energy";
|
||||
}
|
||||
|
||||
leaf cr {
|
||||
type decimal64 {
|
||||
fraction-digits 12;
|
||||
range "0 .. 1";
|
||||
}
|
||||
mandatory true;
|
||||
description "Normalized Raman efficiency (the Cᵣ parameter)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
list transceiver {
|
||||
key "type";
|
||||
description "Available transceivers";
|
||||
|
||||
leaf type {
|
||||
type string;
|
||||
description "Unique identification of the transceiver type. This is used for cross-referencing from topology data.";
|
||||
}
|
||||
|
||||
leaf frequency-min {
|
||||
type carrier-frequency;
|
||||
default 191.35;
|
||||
description "Minimal frequency supported by this transceiver model";
|
||||
}
|
||||
|
||||
leaf frequency-max {
|
||||
type carrier-frequency;
|
||||
default 196.1;
|
||||
description "Maximal frequency supported by this transceiver model";
|
||||
}
|
||||
|
||||
list mode {
|
||||
key "name";
|
||||
min-elements 1;
|
||||
description "Operating mode of a transceiver";
|
||||
|
||||
leaf name {
|
||||
type string;
|
||||
description "Name of this operating mode";
|
||||
}
|
||||
|
||||
leaf bit-rate {
|
||||
type uint16 {
|
||||
range "100 .. 1000";
|
||||
}
|
||||
units "Gbits * s⁻¹";
|
||||
description "Data bit rate";
|
||||
}
|
||||
|
||||
leaf baud-rate {
|
||||
type baud-rate;
|
||||
mandatory true;
|
||||
description "Symbol baud rate";
|
||||
}
|
||||
|
||||
leaf required-osnr {
|
||||
type db-ratio {
|
||||
range "10..40";
|
||||
}
|
||||
mandatory true;
|
||||
description "Minimal required OSNR at the Rx port per 0.1nm of bandwidth";
|
||||
}
|
||||
|
||||
leaf in-band-tx-osnr {
|
||||
type db-ratio;
|
||||
mandatory true;
|
||||
description "Worst-case guaranteed initial OSNR at the Tx port per 0.1nm of bandwidth
|
||||
|
||||
Only the in-band OSNR is considered.";
|
||||
}
|
||||
|
||||
leaf grid-spacing {
|
||||
type frequency-channel-spacing;
|
||||
mandatory true;
|
||||
description "Minimal grid spacing
|
||||
|
||||
This includes the effective channel spectral bandwidth as well as any operational constraints and policies.";
|
||||
}
|
||||
|
||||
leaf tx-roll-off {
|
||||
type roll-off;
|
||||
mandatory true;
|
||||
description "Roll-off parameter (β) of the TX pulse shaping filter. This assumes a raised-cosine filter.";
|
||||
}
|
||||
|
||||
leaf max-chromatic-dispersion {
|
||||
type cd;
|
||||
description "Maximal allowed CD (a hard limit)";
|
||||
}
|
||||
|
||||
leaf max-polarization-mode-dispersion {
|
||||
type pmd {
|
||||
range "0 .. 500";
|
||||
}
|
||||
description "Maximal allowed PMD (a hard limit)";
|
||||
}
|
||||
|
||||
list chromatic-and-polarization-dispersion-penalty {
|
||||
key "chromatic-dispersion polarization-mode-dispersion";
|
||||
|
||||
leaf chromatic-dispersion {
|
||||
type cd;
|
||||
must ". <= ../../max-chromatic-dispersion" {
|
||||
error-message "CD in the penalty matrix exceeds receiver tolerance";
|
||||
}
|
||||
description "CD for a given penalty";
|
||||
}
|
||||
|
||||
leaf polarization-mode-dispersion {
|
||||
type pmd {
|
||||
range "0 .. 500";
|
||||
}
|
||||
must ". <= ../../max-polarization-mode-dispersion" {
|
||||
error-message "PMD in the penalty matrix exceeds receiver tolerance";
|
||||
}
|
||||
description "PMD for a given penalty";
|
||||
}
|
||||
|
||||
leaf penalty {
|
||||
type db-ratio {
|
||||
range "-5 .. 10";
|
||||
}
|
||||
mandatory true;
|
||||
description "Resulting GSNR penalty at the specified CD and PMD";
|
||||
}
|
||||
|
||||
description "GSNR penalty for a combination of a CD and PMD
|
||||
|
||||
The receiver performance should be de-rated by a given `penalty` for a specified combination of CD and PMD.
|
||||
GNPy will use linear approximation between the provided datapoints in the CD/PMD matrix.
|
||||
";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
list roadm {
|
||||
key "type";
|
||||
description "ROADM - Reconfigurable Optical Add/Drop Multiplexer";
|
||||
|
||||
leaf type {
|
||||
type string;
|
||||
description "Unique identification of the transponder type. This is used for cross-referencing from topology data.";
|
||||
}
|
||||
|
||||
leaf add-drop-osnr {
|
||||
type db-ratio;
|
||||
mandatory true;
|
||||
description "OSNR penalty introduced by the Add stage and the Drop stage of this ROADM model
|
||||
|
||||
Effective degradation of the signal, taking into account both the Add and the Drop stages of this ROADM model.";
|
||||
}
|
||||
|
||||
leaf target-channel-out-power {
|
||||
type power;
|
||||
mandatory true;
|
||||
description "Per-channel target TX power towards the egress amplifier
|
||||
|
||||
Within GNPy, a ROADM is expected to attenuate any signal that enters the ROADM node to this level. This can be
|
||||
overridden on a per-link basis in the network topology.";
|
||||
}
|
||||
|
||||
leaf polarization-mode-dispersion {
|
||||
type pmd {
|
||||
range "0 .. 5";
|
||||
}
|
||||
mandatory true;
|
||||
description "Polarization mode dispersion (PMD) penalty of the express path within this ROADM model";
|
||||
}
|
||||
|
||||
leaf-list compatible-preamp {
|
||||
type leafref {
|
||||
path "/tip-pe:amplifier/type";
|
||||
}
|
||||
description "A set of allowed amplifier types to be used in the ingress direction
|
||||
|
||||
If empty, autodesign is allowed to pick any amplifier as a preamp.";
|
||||
}
|
||||
|
||||
leaf-list compatible-booster {
|
||||
type leafref {
|
||||
path "/tip-pe:amplifier/type";
|
||||
}
|
||||
description "A set of allowed amplifier types to be used in the egress direction
|
||||
|
||||
If empty, autodesign is allowed to pick any amplifier as a booster.";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,6 +25,12 @@
|
||||
"revision": "2018-02-26",
|
||||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-network",
|
||||
"conformance-type": "implement"
|
||||
},
|
||||
{
|
||||
"name": "tip-photonic-equipment",
|
||||
"revision": "2020-09-01",
|
||||
"namespace": "https://oopt.telecominfraproject.com/yang/equipment",
|
||||
"conformance-type": "implement"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
486
tests/yang/01-dummy.json
Normal file
486
tests/yang/01-dummy.json
Normal file
@@ -0,0 +1,486 @@
|
||||
{
|
||||
"tip-photonic-equipment:amplifier": [
|
||||
{
|
||||
"type": "fixed-27",
|
||||
"gain-min": "27",
|
||||
"gain-flatmax": "27",
|
||||
"max-power-out": "21.9",
|
||||
"polynomial-NF": {
|
||||
"a": "0",
|
||||
"b": "0",
|
||||
"c": "0",
|
||||
"d": "4.9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "fixed-22",
|
||||
"gain-min": "22",
|
||||
"gain-flatmax": "22",
|
||||
"max-power-out": "21.9",
|
||||
"polynomial-NF": {
|
||||
"a": "0",
|
||||
"b": "0",
|
||||
"c": "0",
|
||||
"d": "4.8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vg-15-30",
|
||||
"gain-min": "15",
|
||||
"gain-flatmax": "26",
|
||||
"dynamic-gain-tilt": [
|
||||
{
|
||||
"frequency": "191.35",
|
||||
"dynamic-gain-tilt": "0"
|
||||
},
|
||||
{
|
||||
"frequency": "196.1",
|
||||
"dynamic-gain-tilt": "2.4"
|
||||
}
|
||||
],
|
||||
"max-power-out": "23",
|
||||
"min-max-NF": {
|
||||
"nf-min": "6.0",
|
||||
"nf-max": "10.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "vg-8-16",
|
||||
"gain-min": "8",
|
||||
"gain-flatmax": "15",
|
||||
"max-power-out": "23",
|
||||
"min-max-NF": {
|
||||
"nf-min": "6.5",
|
||||
"nf-max": "11.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "dual--vg-15-30--vg-8-16",
|
||||
"gain-min": "25.0",
|
||||
"composite": {
|
||||
"preamp": "vg-15-30",
|
||||
"booster": "vg-8-16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Juniper-BoosterHG",
|
||||
"gain-min": "10",
|
||||
"gain-flatmax": "25",
|
||||
"max-power-out": "21",
|
||||
"frequency-min": "191.35",
|
||||
"frequency-max": "196.1",
|
||||
"polynomial-NF": {
|
||||
"a": "0.0008",
|
||||
"b": "0.0272",
|
||||
"c": "-0.2249",
|
||||
"d": "6.4902"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tip-photonic-equipment:fiber": [
|
||||
{
|
||||
"type": "SSMF",
|
||||
"chromatic-dispersion": "16.7",
|
||||
"gamma": "1.27",
|
||||
"pmd-coefficient": "0.0400028124",
|
||||
"raman-efficiency": [
|
||||
{
|
||||
"delta-frequency": "0.0",
|
||||
"cr": "0"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "0.5",
|
||||
"cr": "9.4e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "1.0",
|
||||
"cr": "2.92e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "1.5",
|
||||
"cr": "4.88e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "2.0",
|
||||
"cr": "6.82e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "2.5",
|
||||
"cr": "8.31e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "3.0",
|
||||
"cr": "9.4e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "3.5",
|
||||
"cr": "0.0001014"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "4.0",
|
||||
"cr": "0.0001069"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "4.5",
|
||||
"cr": "0.0001119"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "5.0",
|
||||
"cr": "0.0001217"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "5.5",
|
||||
"cr": "0.0001268"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "6.0",
|
||||
"cr": "0.0001365"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "6.5",
|
||||
"cr": "0.000149"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "7.0",
|
||||
"cr": "0.000165"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "7.5",
|
||||
"cr": "0.000181"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "8.0",
|
||||
"cr": "0.0001977"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "8.5",
|
||||
"cr": "0.0002192"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "9.0",
|
||||
"cr": "0.0002469"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "9.5",
|
||||
"cr": "0.0002749"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "10.0",
|
||||
"cr": "0.0002999"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "10.5",
|
||||
"cr": "0.0003206"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "11.0",
|
||||
"cr": "0.0003405"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "11.5",
|
||||
"cr": "0.0003592"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "12.0",
|
||||
"cr": "0.000374"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "12.5",
|
||||
"cr": "0.0003826"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "12.75",
|
||||
"cr": "0.0003841"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "13.0",
|
||||
"cr": "0.0003826"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "13.25",
|
||||
"cr": "0.0003802"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "13.5",
|
||||
"cr": "0.0003756"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "14.0",
|
||||
"cr": "0.0003549"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "14.5",
|
||||
"cr": "0.0003795"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "14.75",
|
||||
"cr": "0.000344"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "15.0",
|
||||
"cr": "0.0002933"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "15.5",
|
||||
"cr": "0.0002024"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "16.0",
|
||||
"cr": "0.0001158"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "16.5",
|
||||
"cr": "8.46e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "17.0",
|
||||
"cr": "7.14e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "17.5",
|
||||
"cr": "6.86e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "18.0",
|
||||
"cr": "8.5e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "18.25",
|
||||
"cr": "8.93e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "18.5",
|
||||
"cr": "9.01e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "18.75",
|
||||
"cr": "8.15e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "19.0",
|
||||
"cr": "6.67e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "19.5",
|
||||
"cr": "4.37e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "20.0",
|
||||
"cr": "3.28e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "20.5",
|
||||
"cr": "2.96e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "21.0",
|
||||
"cr": "2.65e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "21.5",
|
||||
"cr": "2.57e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "22.0",
|
||||
"cr": "2.81e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "22.5",
|
||||
"cr": "3.08e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "23.0",
|
||||
"cr": "3.67e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "23.5",
|
||||
"cr": "5.85e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "24.0",
|
||||
"cr": "6.63e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "24.5",
|
||||
"cr": "6.36e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "25.0",
|
||||
"cr": "5.5e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "25.5",
|
||||
"cr": "4.06e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "26.0",
|
||||
"cr": "2.77e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "26.5",
|
||||
"cr": "2.42e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "27.0",
|
||||
"cr": "1.87e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "27.5",
|
||||
"cr": "1.6e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "28.0",
|
||||
"cr": "1.4e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "28.5",
|
||||
"cr": "1.13e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "29.0",
|
||||
"cr": "1.05e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "29.5",
|
||||
"cr": "9.8e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "30.0",
|
||||
"cr": "9.8e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "30.5",
|
||||
"cr": "1.13e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "31.0",
|
||||
"cr": "1.64e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "31.5",
|
||||
"cr": "1.95e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "32.0",
|
||||
"cr": "2.38e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "32.5",
|
||||
"cr": "2.26e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "33.0",
|
||||
"cr": "2.03e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "33.5",
|
||||
"cr": "1.48e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "34.0",
|
||||
"cr": "1.09e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "34.5",
|
||||
"cr": "9.8e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "35.0",
|
||||
"cr": "1.05e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "35.5",
|
||||
"cr": "1.17e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "36.0",
|
||||
"cr": "1.25e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "36.5",
|
||||
"cr": "1.21e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "37.0",
|
||||
"cr": "1.09e-05"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "37.5",
|
||||
"cr": "9.8e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "38.0",
|
||||
"cr": "8.2e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "38.5",
|
||||
"cr": "6.6e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "39.0",
|
||||
"cr": "4.7e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "39.5",
|
||||
"cr": "2.7e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "40.0",
|
||||
"cr": "1.9e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "40.5",
|
||||
"cr": "1.2e-06"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "41.0",
|
||||
"cr": "4e-07"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "41.5",
|
||||
"cr": "2e-07"
|
||||
},
|
||||
{
|
||||
"delta-frequency": "42.0",
|
||||
"cr": "1e-07"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "NZDF",
|
||||
"chromatic-dispersion": "5.0",
|
||||
"gamma": "1.46",
|
||||
"pmd-coefficient": "0.0400028124"
|
||||
},
|
||||
{
|
||||
"type": "LOF",
|
||||
"chromatic-dispersion": "22",
|
||||
"gamma": "0.843",
|
||||
"pmd-coefficient": "0.0400028124"
|
||||
}
|
||||
],
|
||||
"tip-photonic-equipment:transceiver": [
|
||||
{
|
||||
"type": "Voyager",
|
||||
"mode": [
|
||||
{
|
||||
"name": "DP-QPSK",
|
||||
"bit-rate": 100,
|
||||
"baud-rate": "32",
|
||||
"required-osnr": "12",
|
||||
"in-band-tx-osnr": "40",
|
||||
"grid-spacing": "37.5",
|
||||
"tx-roll-off": "0.15"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"tip-photonic-equipment:roadm": [
|
||||
{
|
||||
"type": "default",
|
||||
"add-drop-osnr": "50.0",
|
||||
"target-channel-out-power": "-20",
|
||||
"polarization-mode-dispersion": "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user