WIP: Transponder penalties - Telecominfraproject/oopt-gnpy GitHub Wiki
Transponder penalties
So far, GNPy has ignored the cumulative effects of CD, PMD, PDL, RX power at the transceiver's input, etc, on the transceiver's performance. In reality, once these effects exceed a certain threshold, the required level of GSNR at the transceiver's input increases. Typically, vendors and MSAs define either just some hard performance limits ("this can do up to XYZ ps/nm of CD"), or a finer-grained function ("CD up to ABC ps/nm is negligible, however starting at DEF ps/nm it starts to contribute; at GHI ps/nm it is JKL dB of extra GSNR required, at MNO ps/nm it is PQR dB, and the hard limit is STU ps/nm after which you're out of luck").
GNPy needs a machine readable model which tells us what the penalty ("performance de-rating") is for a given set of parameters.
The OpenROADM MSA v5 defines the following list of contributing factors to these penalties:
- CD
- PMD
- speed of rotation of the polarization vector
- PDL
- RX power
- RX power transient
- presence of other channels (filterless Drop)
- crosstalk from other channels at a filterless Drop
All of these eight sources are tracked individually. If the CD imposes a penalty of 1dB and the PMD imposes a penalty of 1.2dB, the resulting penalty is 2.2dB. There's no way to say that the penalty is different than a simple sum of all individual contributors.
In the IETF CCAMP WG, the penalty is determined as a function of:
- a combination of CD and PMD
- PDL
This appears to originate in a PR from Esther. However, Esther does not remember the reason why CD and PMD were combined together in this way. At the TIP OOPT PSE we have limited understanding of DSP performance, but it struck some of us as odd that combining CD+PMD is needed (at least for some vendors), but PMD and PDL are apparently always independent.
In response to this concern, a case was made that vendors are free to provide "CCAMP-formatted data" which only provide penalty for CD=x, PMD=0 and CD=0, PMD=y (in other words, just the "on axes" values for this 2D function). However, if GNPy wants to reuse the CCAMP model, we will require a well-defined semantics on how to interpret these data. In effect, using the CCAMP way, GNPy requires that a number of data points is always defined in order to be able to properly interpolate the data. For example, the OpenROADMv5 performance of a 400G mode would be defined like this (each dot represents a data point that is required; the red ones 🔴
are those which are explicitly mentioned in the MSA, while the blue and green ones 🔵
🟢
are those which are required so that the interpolation provides meaningful results):
0 ps/nm 4000 ps/nm 12000 ps/nm
| | |
v v v
0 ps --> 🔴------------🔴--------------------------------🔴-------------> CD
|
|
10 ps --> 🔴 🟢 🔵
|
|
|
|
|
30 ps --> 🔴 🔵 🔵
|
|
v
PMD
If CCAMP used a simpler model which tracks CD and PMD separately, we would require fewer data points:
0 ps/nm 4000 ps/nm 12000 ps/nm
| | |
v v v
🔴------------🔴--------------------------------🔴-------------> CD
0 ps 10 ps 30 ps
| | |
v v v
🔴--------🔴----------------🔴------> PMD
- Can someone from CCAMP clarify why CD and PMD were combined?
- Can the vendor who originally proposed this idea provide more details?
- What is the typical accuracy improvement compared to providing the CD and PMD separately?
- Has someone confirmed that the CD+PMD combination provides the largest accuracy improvement compared to other combination of parameters, e.g., that CD+PMD brings a greater improvement compared to, say, a combination of PMD+PDL?