Internet-Draft Opt. Impairment-Aware Topo YANG Model October 2024
Beller, et al. Expires 24 April 2025 [Page]
Workgroup:
CCAMP Working Group
Internet-Draft:
draft-ietf-ccamp-optical-impairment-topology-yang-17
Published:
Intended Status:
Standards Track
Expires:
Authors:
D. Beller, Ed.
Nokia
E. Le Rouzic
Orange
S. Belotti
Nokia
G. Galimberti
Individual
I. Busi
Huawei Technologies

A YANG Data Model for Optical Impairment-aware Topology

Abstract

In order to provision an optical connection through optical networks, a combination of path continuity, resource availability, and impairment constraints must be met to determine viable and optimal paths through the network. The determination of appropriate paths is known as Impairment-Aware Routing and Wavelength Assignment (IA-RWA) for WSON, while it is known as Impairment-Aware Routing and Spectrum Assignment (IA-RSA) for SSON.

This document provides a YANG data model for the impairment-aware TE topology in optical networks.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 24 April 2025.

Table of Contents

1. Introduction

In order to provision an optical connection (an optical path) through a wavelength switched optical networks (WSONs) or spectrum switched optical networks (SSONs), a combination of path continuity, resource availability, and impairment constraints must be met to determine viable and optimal paths through the network. The determination of appropriate paths is known as Impairment-Aware Routing and Wavelength Assignment (IA-RWA) [RFC6566] for WSON, while it is known as IA-Routing and Spectrum Assigment (IA-RSA) for SSON.

This document provides a YANG data model for the impairment-aware Traffic Engineering (TE) topology in WSONs and SSONs. The YANG model described in this document is a WSON/SSON technology-specific Yang model based on the information model developed in [RFC7446] and the two encoding documents [RFC7581] and [RFC7579] that developed protocol independent encodings based on [RFC7446].

The intent of this document is to provide a YANG data model, which can be utilized by a Multi-Domain Service Coordinator (MDSC) to collect states of WSON impairment data from the Transport PNCs to enable impairment-aware optical path computation according to the ACTN Architecture [RFC8453]. The communication between controllers is done via a NETCONF [RFC8341] or a RESTCONF [RFC8040]. Similarly,this model can also be exported by the MDSC to a Customer Network Controller (CNC), which can run an offline planning process to map latter the services in the network.

It is worth noting that optical data plane interoperability is a complex topic especially in a multi vendor environment and usually requires joint engineering, which is independent from control plane and management plane capabilities. The YANG data model defined in this draft is providing sufficient information to enable optical impairment aware path computation.

Optical data plane interoperability is outside the scope of this draft.

This document augments the generic TE topology YANG model defined in [RFC8795] where possible.

The optical impairment aware topology for a WSON/SSON network based on the YANG data model defined in this document is intended to be used for exposing the network topology including optical impairments. Therefore, the topology information that is typically provided by a Transport PNC is assumed to be read-only (ro) data, i.e., not configurable (read-write). This may change when the same optical impairment-aware topology model is used for other use cases than exposing the network topology. E.g, for a path computation engine, where topological elements could be added in the context of a what-if scenario analysis. This is outside of the scope of this document.

This document defines one YANG module: ietf-optical-impairment- topology (Section 3) according to the new Network Management Datastore Architecture [RFC8342].

1.1. Terminology

Refer to [RFC6566], [RFC7698], and [G.807] for the key terms used in this document.

The following terms are defined in [RFC7950] and are not redefined here:

  • client

  • server

  • augment

  • data model

  • data node

The following terms are defined in [RFC6241] and are not redefined here:

  • configuration data

  • state data

The terminology for describing YANG data models is found in [RFC7950].

The term ROADM in this document refers to the term "multi-degree reconfigurable optical add/drop multiplexer (MD-ROADM)" as defined in [G.672]. It does not include local optical transponders, which can be co-located in the same physical device (managed entity).

The term WDM-node refers to a physical device, which is managed as a single network element.

The term WDM-TE-node refers to those parts of a WDM-node (physical device) that are modeled as a TE-node as defined in [RFC8795], which may include a ROADM and/or multiple local optical transponders(OTs). Hence, a WDM-TE-node may only contain OTs.

The term "WDM-TE-network" refers to a set of WDM-TE-nodes as defined above that are interconnected via TE-links carrying WDM signals. These TE-links may include optical amplifiers.

The term "add/drop TE-link" refers to a TE-link representing the media channel between a transceiver's media port of a remote optical transponder (OT) and an add/drop port of the ROADM in the adjacent WDM-node. The add/drop TE-link typically carries a single OTSi signal (modulated optical carrier).

The term "bundled add/drop TE-link" refers to the TE-link bundling concept as defined in [RFC8795]. Multiple component links, add/drop TE-links in this case, are bundled into a single bundled add/drop TE-Link.

1.2. Tree Diagram

A simplified graphical representation of the data model is used in Section 2 of this this document. The meaning of the symbols in these diagrams is defined in [RFC8340].

1.3. Prefixes in Data Node Names

In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.

Table 1: Prefixes and corresponding YANG modules
Prefix YANG module Reference
oit ietf-optical-impairment-topology [RFCXXXX]
l0-types ietf-layer0-types [I-D.ietf-ccamp-rfc9093-bis]
nw ietf-network [RFC8345]
nt ietf-network-topology [RFC8345]
tet ietf-te-topology [RFC8795]

[Editor's note: The RFC Editor will replace XXXX with the number assigned to the RFC once this draft becomes an RFC.]

2. Reference Architecture

2.1. Control Plane Architecture

Figure 1 shows the control plane architecture.

                          +--------+
                          |  MDSC  |
                          +--------+
 Scope of this ID  ------->   ||
               |              ||
               |  +------------------------+
               |  |        OPTICAL         |
  +---------+  |  |         DOMAIN         |     +---------+
  | Device  |  |  |       CONTROLLER       |     | Device  |
  | config. |  |  +------------------------+     | config. |
  +---------+  v  //          ||          \\     +---------+
 ______|______   //           ||           \\   ______|______
/      OT     \ //            ||            \\ /      OT     \
| +--------+  |//           __--__           \\|  +--------+ |
| |Vend. A |--|----+       (      )       +----|--| Vend. A| |
| +--------+  |    |    ~-(        )-~    |    |  +--------+ |
| +--------+  |    +---/              \---+    |  +--------+ |
| |Vend. B |--|--+    /                \    +--|--| Vend. B| |
| +--------+  |  +---(   OLS Segment    )---+  |  +--------+ |
| +--------+  |  +---(                  )---+  |  +--------+ |
| |Vend. C |--|--+    \                /    +--|--| Vend. C| |
| +--------+  |    +---\              /---+    |  +--------+ |
| +--------+  |    |    ~-(        )-~    |    |  +--------+ |
| |Vend. D |--|----+       (__  __)       +----|--| Vend. D| |
| +--------+  |               --               |  +--------+ |
\_____________/                                \_____________/
          ^                                        ^
          |                                        |
          |                                        |
 Scope of RFC AAAA                        Scope of RFC AAAA

Figure 1: Scope of RFC AAAA

Note: The RFC Editor will replace AAAA above with the number assigned to the RFC once draft-ietf-ccamp-dwdm-if-param-yang will become an RFC.

The topology model developed in this document is an abstracted topology YANG model that can be used at the interfaces between the MDSC and the Optical Domain Controller (aka MPI) and between the Optical Domain Controller and the Optical Device (aka SBI) in Figure 1. It is not intended to support a detailed low-level DWDM interface model. DWDM interface model is supported by the models presented in [I-D.ietf-ccamp-dwdm-if-param-yang].

2.2. Optical Transport Network Data Plane

This section provides the description of the optical transport network reference architecture and its relevant components to support optical impairment-aware path computation.

Figure 2 shows the reference architecture.

  +-------------------+                      +-------------------+
  |     WDM-Node 1    |                      |     WDM-Node 2    |
  |                   |                      |                   |
  | PA  +-------+ BA  |         ILA          | PA  +-------+ BA  |
  | +-+ |       | +-+ |  _____  +--+  _____  | +-+ |       | +-+ |
--|-| |-| ROADM |-| |-|-()____)-|  |-()____)-|-| |-| ROADM |-| |-|--
  | +-+ |       | +-+ |         +--+         | +-+ |       | +-+ |
  |     +-------+     | optical              |     +-------+     |
  |       | | |       |  fiber               |       | | |       |
  |       o o o       |                      |       o o o       |
  |    local          |                      |    local          |
  |    transponders   |                      |    transponders   |
  +-------------------+                      +-------------------+

                       OTS MCG        OTS MCG
                     <--------->    <--------->
                         OMS MCG = TE-link
                 <-------------------------------->

   BA: Booster Amplifier (or egress amplifier)
   PA: Pre-Amplifier (or ingress amplifier)
   ILA: In-Line Amplifier
   MCG: Media Channel Group
Figure 2: Reference Architecture for Optical Transport Network

BA (WDM-node 1) is the egress Amplifier and PA (WDM-node 2) is the ingress amplifier for the OMS Media Channel Group (MCG) in the direction from left to right in Figure 2.

According to [G.807], a Media Channel Group (MCG) represents "a unidirectional point-to-point management/control abstraction that represents a set of one or more media channels that are co-routed. A media channel group (MCG) is bounded by a pair of media ports."

2.3. OTS and OMS Media Channel Group

According to [G.807], an OTS Media Channel Group (MCG) represents a topological construct between two adjacent amplifiers, such as:

  (i)  between a WDM-TE-node's BA and the adjacent ILA,
 (ii)  between a pair of ILAs,
(iii)  between an ILA and the adjacent WDM-TE-node's PA.

[G.807] defines an OMS MCG as "The topological relationship between the media port on a filter or coupler where a set of media channels are aggregated and the media port on a filter or coupler where one or more media channel is added to or removed from that aggregate. All of the media channels that are represented by the OMS MCG must be carried over the same serial concatenation of OTS MCGs and amplifiers."

An OMS MCG originates at the ROADM in the source WDM-node and terminates at the ROADM in the destination WDM-node traversing the Booster Amplifier (BA) and the Pre-Amplifier (PA) in the WDM-nodes as well as the In-Line Amplifiers (ILAs) between the two WDM-nodes.

An OMS MCG can be decomposed into a sequence of OTS MCGs and amplifiers.

An OMS MCG traverses a sequence of elements such as BA, fiber section, ILA, PA, and concentrated loss wherever there is an insertion loss caused for example by a fiber connector.

In TE-topology terms, the OMS MCG is modeled as a WDM TE-link interconnecting two WDM-TE-nodes. A network controller can retrieve the optical impairment data for all the WDM TE-link elements defined in the layer-0 topology YANG model.

The optical impairments related to the link between remote optical transponders, located in a different WDM-TE-node (an IP router with integrated optical transponders for example), can also be modeled as a WDM TE-link using the same optical impairments as those defined for a WDM TE-link between WDM-TE-nodes (OMS MCG). In this scenario, the node containing the remote optical transponders can be considered as WDM-TE-node with termination capability only and no switching capabilities.

A WDM TE-link is terminated on both ends by a link termination point (LTP) as defined in [RFC8795]. Links between WDM nodes in optical transport networks are typically bidirectional. Generally, they have different impairments in the two directions and hence they have to be modeled as a pair of two unidirectional TE-links following the [RFC8795] modeling approach. Unlike TE-links, which are unidirectional, the LTPs on either end of the TE-link pair forming the bidirectional link, are bidirectional as described in [I-D.ietf-teas-te-topo-and-tunnel-modeling] and the pair of unidirectional links are connected to the same bidirectional LTP on either end of the link pair.

2.3.1. Optical Tributary Signal (OTSi)

The OTSi is defined in ITU-T Recommendation G.959.1, section 3.2.4 [G.959.1] as "Optical signal that is placed within a network media channel for transport across the optical network. This may consist of a single modulated optical carrier or a group of modulated optical carriers or subcarriers." The YANG model defined below assumes that a single OTSi consists of a single modulated optical carrier. This single modulated optical carrier conveys digital information. Characteristics of the OTSi signal are modulation scheme (e.g. QPSK, 8-QAM, 16-QAM, etc.), baud rate (measure of the symbol rate), pulse shaping (e.g. raised cosine - complying with the Nyquist inter symbol interference criterion), etc.

Path computation needs to know the existing OTSi signals for each OMS link in the topology to determine the optical impairment impact of the existing OTSi signals on the optical feasibility of a new OTSi signal and vice versa, i.e., the impact of the new OTSi on the existing OTSi signals. For determining the optical feasibility of the new OTSi, it is necessary to know the OTSi properties like carrier frequency, baud rate, and signal power for all existing OTSi signals on each OMS link.

Additionally, it is necessary for each WDM-TE-node in the network to know the OTSi signals that are added to or dropped from an WDM TE-link (OMS MCG)link as well as the optical power of these OTSi signals to check whether the WDM-TE-node's optical power constraints are met.

The optical impairment-aware topology YANG model below defines the OTSi properties needed for optical impairment-aware path computation including the spectrum occupied by each OTSi signal. The model also defines a pointer (leafref) from the OTSi to the transceiver module terminating the OTSi signal.

The OTSi signals in the YANG model are described by augmenting the network and each OTSi signal is uniquely identified by its otsi-carrier-id, which is unique within the scope the OTSiG [see Section 2.3.2 below] the OTSi belongs to.

2.3.2. Optical Tributary Signal Group (OTSiG)

The OTSiG is defined in ITU-T Recommendation G.807 [G.807] as a "set of optical tributary signals (OTSi) that supports a single digital client". Hence, the OTSiG is an electrical signal that is carried by one or more OTSi's. The relationship between the OTSiG and the the OTSi's is described in [G.807], section 10.2. The YANG model below supports both cases: the single OTSi case where the OTSiG contains a single OTSi (see [G.807], Figure 10-2) and the multiple OTSi case where the OTSiG consists of more than one OTSi (see [G.807], Figure 10-3). From a layer 0 topology YANG model perspective, the OTSiG is a logical construct that associates the OTSi's, which belong to the same OTSiG. The typical application of an OTSiG consisting of more than one OTSi is inverse multiplexing. Constraints exist for the OTSi's belonging to the same OTSiG such as: (i) all OTSi's must be co-routed over the same optical fibers and nodes and (ii) the differential delay between the different OTSi's may not exceed a certain limit. Example: a 400Gbps client signal may be carried by 4 OTSi's where each OTSi carries 100Gbps of client traffic.

All OTSiGs are described in the YANG model by augmenting the network and each OTSiG is uniquely identified by its otsi-group-id, which is unique within the network. Each OTSiG also contains a list of the OTSi signals belonging to the OTSiG.

                               OTSiG
        _________________________/\__________________________
       /                                                     \
                                 m=7
- - - +---------------------------X---------------------------+ - - -
/ / / |                                                       | / / /
 / / /|      OTSi         OTSi         OTSi         OTSi      |/ / /
/ / / |        ^            ^            ^            ^       | / / /
 / / /|        |            |            |            |       |/ / /
/ / / |        |            |            |            |       | / / /
 / / /|        |            |            |            |       |/ / /
 -4  -3  -2  -1   0   1   2   3   4   5   6   7   8   9  10  11  12
--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---
                                n = 4
               K1           K2           K3           K4

Figure 3: MC Example containing all 4 OTSi signals of an OTSiG

2.3.3. Media Channel (MC)

[G.807] defines a "media channel" as "A media association that represents both the topology (i.e., the path through the media) and the resource (i.e., frequency slot or effective frequency slot) that it occupies." In this document, the term "channel" is occasionally used to indicate the resource of an MC (i.e., frequency slot or effective frequency slot), without representing topology.

In this document, an end-to-end MC is defined as a type of MC, which is formed by the serial concatenation of all the MCs from source Transceiver media ports to destination transceiver media ports. This end-to-end MC is defined across all the ROADM nodes along the end-to-end optical path with the same nominal central frequency n and frequency slot of width m, which represents the effective frequency slot of the end-to-end MC. An end-to-end MC can carry a single OTSi, or multiple OTSi signals belonging to the same OTSiG.

[G.807_Amd1] defines a "network media channel (NMC)" as "a type of media channel that is formed by the serial concatenation of all media channels between the media port of a modulator and the media port of a demodulator". The modulator and demodulator are integral functions of a transceiver and their media ports do not necessarily coincide with the media port of the transceiver, which is associated with the transceiver's physical optical port. Due to this difference, the end-to-end MC is defined above and is used in this document.

In section Section 2.11, the term "end-to-end MC path" is used to describe the topological aspect of the end-to-end MC, i.e., the path through the media (see: [G.807_Amd1], section 7.1.2). This is in line with the TE path defined in [RFC8795], section 3.9, where the TE path is defined as "an ordered list of TE links and/or TE nodes on the TE topology graph" interconnecting a pair of tunnel termination points (TTPs).

                                 m=8
  +-------------------------------X-------------------------------+
  |                               |                               |
  |     +----------X----------+   |   +----------X----------+     |
  |     |        OTSi         |       |        OTSi         |     |
  |     |          ^          |   |   |          ^          |     |
  |     |          |          |       |          |          |     |
 -4  -3  -2  -1   0   1   2   3   4   5   6   7   8   9  10  11  12
--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-
                   |             n=4             |
                   K1                            K2

  <------------------------ Media Channel ----------------------->

Figure 4: MC Example containing both OTSi signals of an OTSiG

The frequency slot of the MC is defined by the n value defining the central frequency of the MC and the m value that defines the width of the MC following the flexible grid definition in [G.694.1]. In this model, the effective frequency slot as defined in [G.807] is equal to the frequency slot of this MC. It is also assumed that ROADM devices can switch MCs. For various reasons (e.g. differential delay), it is preferred to use a single MC for all OTSi's of the same OTSiG. It may however not always be possible to find a single MC for carrying all OTSi's of an OTSiG due to spectrum occupation along the OTSiG path.

2.3.4. Media Channel Group (MCG)

ITU-T [G.807] defines the Media Channel Group MCG as "A unidirectional point to point management/control abstraction that represents a set of one or more media channels that are co-routed." The YANG model below assumes that the MCG is a logical grouping of one or more MCs that are used to to carry all OTSi's belonging to the same OTSiG.

The MCG can be considered as an association of MCs without defining a hierarchy where each MC is defined by its (n,m) value pair. An MCG consists of more than one MC when no single MC can be found from source to destination that is wide enough to accommodate all OTSi's (modulated carriers) that belong to the same OTSiG. In such a case the set of OTSi's belonging to a single OTSiG have to be split across 2 or more MCs.

                                MCG1 = {M1.1, M1.2}
       __________________________/\________________________
      /                                                    \
                  M1.1                  M2          M1.2
       ____________/\____________  _____/\_____  ____/\____
      /                          \/            \/          \
- - - +---------------------------+-------------+-----------+ - - -
/ / / |                           | / / / / / / |           | / / /
 / / /|    OTSi    OTSi    OTSi   |/ / / / / / /|    OTSi   |/ / /
/ / / |     ^       ^       ^     | / / / / / / |     ^     | / / /
 / / /|     |       |       |     |/ / / / / / /|     |     |/ / /
/ / / |     |       |       |     | / / / / / / |     |     | / / /
 / / /|     |       |       |     |/ / / / / / /|     |     |/ / /
     -7    -4    -1 0 1 2 3 4 5 6 7 8    ...    14    17    20
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    n=0                               n=17
            K1      K2      K3                        K4

Figure 5: MCG Example with 2 MCs

The MCG is relevant for path computation because all end-to-end MCs belonging to the same MCG have to be co-routed, i.e., have to follow the same path. Additional constraints may exist (e.g. differential delay).

2.4. Optical Amplifiers

Optical amplifiers are used in WDM networks for amplifying the optical signal in the optical domain without any optical to electrical and electrical to optical conversion. Three main optical amplifier technologies are existing today:

  • Erbium Doped Fiber Amplifiers (EDFAs)
  • Raman Amplifiers
  • Semiconductor Optical Amplifiers (SOAs)

In today's WDM networks EDFAs and Raman amplifiers are widely used. Raman amplifiers have become attractive due to their large spectral gain bandwidth, which can be quite flat, with similar or even lower noise figures compared to EDFAs. On the other hand, Raman amplifiers consume more power and are usually more expensive than EDFAs.

Raman amplifiers are distributed amplifiers where an optical pump signal is injected typically in opposite direction to the optical signal that is amplified (backward pump, counter-propagating pump light). Injecting the optical pump signal in the same direction is also possible (forward pump, co-propagating pump light). For optical amplifiers, the YANG model defines Raman pump light attributes describing the direction (raman-direction) with respect to the signal that is amplified and optical frequency and power for the pump light source(s) contained in the raman-pump list. These Raman amplifier-specific attributes are optional as they are only applicable to Raman amplifiers. For determining the optical amplifier type, i.e., to figure out whether an optical amplifier is a Raman amplifier, the type-variety attribute is used. Due to the distributed nature of the Raman amplifier it is difficult to clearly separate the amplifier from the fiber span into which the pump signal is injected. From a topology modeling perspective, the Raman amplifier is modeled as two OMS line elements:

  1. a passive fiber element accounting for the fiber loss only and not the resulting loss including the Raman gain

  2. an amplifier element providing all optical amplifier properties (gain, tilt, etc.). On the OMS-link, the amplifier element is placed where the pump is located and the geolocation information also indicates the location of the pump.

Amplifiers can be classified according to their location along the TE-link (OMS MCG). There are three basic amplifier types: In-Line Amplifiers (ILAs), Pre-Amplifiers and Booster Amplifiers. ILAs are separate physical devices while Pre-Amplifiers and Booster Amplifiers are integral elements of a WDM-node. From a data modeling perspective, node-internal details should not be modeled and should be abstracted as much as possible. For Pre-Amplifiers and Booster Amplifiers, however, a different approach has been taken and they are modeled as TE-link elements as they have the same optical impairments as ILAs.

ILAs may have a variable optical attenuator on the ingress side (in-voa attribute) allowing to control the input power of the WDM signal (OMS MCG) entering the gain stage of the ILA. It may also have a variable optical attenuator on the egress side, which allows to control the optical power of the WDM output signal (OMS MCG) of the ILA. The actual-gain attribute reflects the gain of the ILA gain stage and does not include the attenuation of the in-voa and/or out-voa.

To support the modeling of multi-band (e.g., C + L band) and multi-stage (cascaded) amplifiers as depicted in Figure 6, the OMS element that describes an optical amplifier may contain an unordered list of amplifier-elements. The position of the element is based on the following attributes:

  • lower-frequency and upper-frequency describing the frequency band the set of amplifier-elements are operating in.
  • stage-order describing the sequential order of the cascaded amplifier-elements for the frequency band.

The detailed representation of the amplifier stages is not always mandatory. Abstraction is allowed as long as the optical impairments of the multi-stage amplifier are modeled properly. For example, the detailed representation of the cascaded elements is needed in case the amplifier supports both amplification of the signal as well as the DGE function described in Section 2.5.

Multi-band amplifiers like the dual-band amplifier depicted in Figure 6 have a band-separating filter at the input and a band-combining multiplexer combining all the bands at the output. This filter and multiplexer functions are not modeled explicitly and their optical impairments are subsumed in the optical impairments of the amplifier components.


        Dual-band, Multi-stage Amplifier with DGE
    +-----------------------------------------------+
    |                                               |
    |                         C BAND                |
    |                  lower/upper-frequency        |
    |                            |                  |
    |                +-----------+----------+       |
    |                |                      |       |
    |                  OA1      DGE      OA2        |
    |                  |\      +---+     |\         |
    |                  | \     |   |     | \        |
--->o---+------------->|  +----+   +-----+  +-->+---o--->
    |   |              | /     |   |     | /    |   |
    |   |              |/      +---+     |/     |   |
    |   | stage-order = 1        2        3     |   |
    |   |                                       |   |
    |   |                                       |   |
    |   | stage-order = 1        2        3     |   |
    |   |              |\      +---+     |\     |   |
    |   |              | \     |   |     | \    |   |
    |   +------------->|  +----+   +-----+  +-->+   |
    |                  | /     |   |     | /        |
    |                  |/      +---+     |/         |
    |                  OA1      DGE      OA2        |
    |                |                       |      |
    |                +-----------+-----------+      |
    |                            |                  |
    |                  lower/upper-frequency        |
    |                         L BAND                |
    |                                               |
    +-----------------------------------------------+

Figure 6: Example of a Dual-band, Multi-stage Amplifier with DGE Functionality

ILAs are placed at locations where the optical amplification of the WDM signal is required on the TE-link (OMS MCG) between two WDM-TE-nodes nodes. Geolocation information is already defined for TE nodes in [RFC8795] and is also beneficial for ILAs. Therefore, the same geolocation container has been added to the amplifier element on an OMS link containing altitude, latitude, and longitude as optional attributes.

One modeling consideration of the ROADM internal is to model power parameter through the ROADM, factoring the output power from the Pre-Amplifier minus the ROADM power loss would give the input power to the Booster Amplifier. In other words, Power_in (@ ROADM Booster) = Power_out (@ ROADM Pre-Amplifier) - Power_loss (@ ROADM WSS/Filter).

2.5. Dynamic Gain Equalizers

A Dynamic Gain Equalizer (DGE) is an optical equipment that is capable of adjusting the optical power on a per channel basis in order to compensate the channel power variation as a result of variable gain or loss the DWDM signals experienced while propagating through the network. The channel power can be configured explicitly or in the form of power-spectral-density.

[Editor's note: This sub-section needs to be completed and is still work in progress.]

2.6. Transponders

[Editor's note: The relationship between the transponder and the OTSi in the YANG model described in Section 3 needs further clarification and refinement.]

A Transponder is the element that sends and receives the optical signal from a DWDM network. A transponder can comprise one or more transceivers. A transceiver represents a transmitter/receiver (Tx/Rx) pair as defined in ITU-T Recommendation G.698.2 [G.698.2]. In addition to the transceiver, which is terminating an OTSi signal, a transponder typically provides additional layer 1 functionality like for example aggregation (multiplexing) of client layer signals, which is outside the scope of this document addressing layer 0 aspects of transponders.

The termination of an OTSi signal by a transceiver is modeled as a function of the tunnel termination point (TTP) as defined in [RFC8795]. Due to the fact that optical transport services (TE tunnels) are typically bidirectional, a TTP is also modeled as a bidirectional entity like the LTP described above. Moreover, a TTP can terminate one or several OTSiG signals (tunnels) as described in [I-D.ietf-teas-te-topo-and-tunnel-modeling] and each OTSiG consists of one or multiple OTSi signals as described in Section 2.3.2. Therefore, a TTP may be associated with multiple transceivers.

A transponder is typically characterized by its data/symbol rate and the maximum distance the signal can travel. Other transponder properties are: carrier frequency for the optical channels, output power per channel, measured input power, modulation scheme, FEC, etc.

From a path computation perspective, the selection of the compatible configuration of the source and the destination transceivers is an important factor for optical signals to traverse through the DWDM network.

The YANG model defines three different approaches to describe the transceiver capabilities (called "modes") that are needed to determine optical signal compatibility:

  • Standard Modes

  • Organizational Modes

  • Explicit Modes

2.6.1. Standard Modes

A standard mode is related to an optical specification developed by an SDO organization. Currently, the "Standard Modes" can only be referred to ITU-T Recommendation G.698.2 [G.698.2] since ITU-T Recommendation G.698.2 is the only standard defining "Standard Modes" today. Nothing is precluding, however, to consider other specifications provided by any other SDO in the Standard Mode context as soon as such specifications will be available. An application code as defined in ITU-T G.698.2 [G.698.2] is representing a standard ITU-T G.698.2 optical interface specification towards the realization of transversely compatible DWDM systems. Two transceivers supporting the same application code and a line system matching the constraints, defined in ITU-T G.698.2, for that application code will interoperate. As the characteristics are encoded in the application code, the YANG model in this document only defines a string, which represents that application code.

For the standard modes, some additional attributes are defined. The most important one is the line-coding-bitrate attribute, which was added because [G.698.2] lists 100gpbs application codes supporting two data formats, an OTU4 related data format and a Flex-O related data format. The supported data formats for an application code can be described by listing the supported data formats via the line-coding-bitrate attribute as transceiver capability.

Moreover, the transceiver properties like optical carrier frequency range, optical carrier tunability, and transmitter/receiver optical power ranges can be described as optional attributes in case they differ from the specification for the standard mode, i.e., as defined in [G.698.2]. A transceiver may support extended optical frequency ranges or optical power ranges or a finer optical carrier tunability. These capabilities can be described explicitly if needed.

2.6.2. Organizational Modes

Organizations like operator groups, industry fora, or equipment vendors can define their own optical interface specifications and make use of transceiver capabilities going beyond existing standards.

An organizational mode is identified by the organization-identifier attribute defining the scope and an operational-mode that is meaningful within the scope of the organization. Hence, the two attributes must always be considered together. It is the responsibility of the organization to assign operational modes and to ensure that operational modes are unique and unambiguous within the scope of the organization.

Two transceivers can be interconnected, if they have at least one (organization-identifier, operational-mode) pair in common and if the supported carrier frequency and power attributes have a matching range. This is a necessary condition for path computation in the context of organizational modes.

An operational mode is a transceiver preset (a configuration with well-defined parameter values) subsuming several transceiver properties defined by the optical interface specification - these properties are not provided for an operational mode and are therefore not defined in the YANG model. Examples of these properties are:

  • FEC type

  • Modulation scheme

  • Encoding (mapping of bit patterns (code words) to symbols in the constellation diagram)

  • Baud rate (symbol rate)

  • Carrier bandwidth (typically measured in GHz)

The major reason for these transceiver presets is the fact that the attribute values typically cannot be configured independently and are therefore advertised as supported operational mode capabilities. It is the responsibility of the organization to assign operational modes and to ensure that operational modes are unique and not ambiguous within the scope of the organization.

In addition to the transceiver properties subsumed by the operational mode, optical power and carrier frequency related properties are modeled separately, i.e., outside of the operational mode. This modeling approach allows transponders using different transceiver variants (e.g. optical modules) with slightly different power and/or frequency range properties to interoperate without defining separate operational modes. Different optical modules (pluggables) from different suppliers typically have slightly different input and output power ranges or may have slightly different carrier frequency tuning ranges.

The received channel power and the received total power are two parameters that can be measured by the receiver and can be provided by the transceiver in order to allow a controller to determine the expected performance of the end-to-end service taking into account the optical impairments along the path.

An organization may define the operational modes to include the optical power and carrier frequency related properties following the application code approach as defined in ITU-T Recommendation G.698.2 [G.698.2]. In such a case, the explicit optical power and carrier frequency related optional attributes shall be omitted in order to avoid redundant information in the description of the transceiver capabilities. If these attributes are provided in addition to the operational modes including these attribute values implicitly, the parameter values provided explicitly replace the implicit values and take precedence. This shall, however, only be an done in exceptional cases and shall be avoided whenever possible. In case an implicitly given range is extended utilizing the explicit optional attributes, a path computation policy rule may be applied to select a value preferably from the range defined implicitly and to only select a value from the extended range if no path can be found for values in the implicitly defined range. Path computation policy is outside the scope of this topology YANG model.

In summary, the optical power and carrier frequency related attributes shall either be described implicitly by the operational mode following the definition provided by that organization or shall be described explicitly when the optical power and carrier frequency related properties are not included in the operational mode definition.

2.6.3. Explicit Modes

The explicit mode allows to encode, explicitly, any subset of parameters e.g., FEC type, Modulation type, etc, to enable a controller entity to check for interoperability by means outside of this draft. It shall be noted that using the explicit encoding does not guarantee interoperability between two transceivers even in case of identical parameter definitions. The explicit mode shall therefore be used with care, but it could be useful when no common Application Codes or Organizational Modes exist or the constraints of common Application Codes or Organizational Modes cannot be met by the line system.

2.6.4. Transponder Capabilities and Current Configuration

The YANG model described in Section 3 defines the optical transceiver properties. They are divided between:

  1. Optical transceiver capabilities, describing how it can be configured

  2. Current transceiver setting, indicating how it is currently configured

The transceiver capabilities are described by the set of modes the transceiver is supporting. Each mode MUST follow only one of the three mode options defined above (choice in the YANG model). The YANG model allows to describe the transceiver capabilities by mixing different modes. A transceiver may support some ITU-T application codes and in addition some organizational or explicit modes.

A transceiver mode description comprises the following properties:

  • Supported transmitter tuning range with min/max nominal carrier frequency [f_tx_min, f_tx_max]

  • Supported transmitter tunability describing the transmitter's frequency fine tuning steps (the minimum distance between two adjacent carrier frequencies in GHz)

  • Supported transmitter power range [p_tx-min, p_tx_max]

  • Supported receiver channel power range [p_rx-min, p_rx_max]

  • Supported maximum total power, rx power for all channels fed into the receiver

These optical transceiver properties are explicitly defined in the model for explicit and organizational modes, while they are implicitly defined for the application codes (see ITU-T G698.2 [G.698.2]).

The set of optical impairment limits, e.g., min OSNR, max PMD, max CD, max PDL, Q-factor limit, are explicitly defined for the explicit modes while they are defined implicitly for the application codes and organizational modes.

It is possible that the set of parameter values defined for an explicit mode may also be represented in form of an organizational mode or one or more application codes. The "compatible-modes" container may provide two different lists with pointers to application codes and organizational modes, respectively.

The current transponder configuration describes the properties of the OTSi transmitted or received by the transceiver attached to a specific transponder port.

Each OTSi has the following three pointer attributes modeled as leafrefs:

  • Pointer to the transponder instance containing the transceiver terminating the OTSi

  • Pointer to the transceiver instance terminating the OTSi

  • Pointer to the currently configured transceiver mode

Additionally, the OTSi is described by the following frequency and optical power related attributes:

  • current carrier-frequency

  • currently transmitted channel power

  • currently received channel power

  • currently received total power

2.7. 3R Regenerators

Optical transponders are usually used to terminate a layer 0 tunnel (layer 0 service) in the WDM layer. If, however, no optical path can be found from the source transponder to the destination transponder that is optically feasible due to the optical impairments, one or more 3R regenerators are needed for regenerating the optical signal in intermediate nodes. The term "3R" regenerator means: reamplification, reshaping, retiming. As described in [G.807], Appendix IV, a 3R regenerator terminates the OTSi and generates a new OTSi. Depending on the 3R regenerator capabilities, it can provide functions such as carrier frequency translation (carrier-frequency), changes in the modulation scheme (modulation-type) and FEC (FEC-type) while passing through the digital signal except the FEC (the FEC is processed and errors are corrected).

The 3R regeneration compound function is illustrated in section 10.1 of [G.798.1], and sections 10.3 and 10.4 provide examples of a ROADM architecture and a photonic cross-connect architecture including 3R regenerators. Based on the provided functionality, 3R regenerators are considered as topological layer 0 entities because they are needed for layer 0 path computation in case the optical impairments make it impossible to find an optically feasible end-to-end path from the source transponder to the destination transponder without 3R regeneration. When an end-to-end path includes one or more 3R regenerators, the corresponding layer 0 tunnel is subdivided into 2 or more segments between the source transponder and the destination transponder terminating the layer 0 tunnel.

3R regenerators are usually realized by a pair of optical transponders, which are described in Section 2.6 above. If a pair of optical transponders is used to perform a 3R regeneratator function, two different configurations are possible involving the pair of optical transceivers of the two optical transponders:

  • The two transponders can be operated in a back-to-back configuration where the transceiver of each optical transponder receives and transmits the optical signal from/to the same segment of the end-to-end tunnel. This means that each transceiver is operated in a bi-directional mode.


          Optical Transponder 1        Optical Transponder 2
        +-----------------------+    +-----------------------+
        | Transceiver           |    |           Transceiver |
        |-------------+   +-----|    |-----+   +-------------|
    --->| Receiver    |---|Sig. |--->|Sig. |---| Transmitter |--->
        |-------------+   |     |    |     |   +-------------|
    <---| Transmitter |---|Proc.|<---|Proc.|---|    Receiver |<---
        |-------------+   +-----|    |-----+   +-------------|
        |                       |    |                       |
        +-----------------------+    +-----------------------+

        Sig. Proc. = Signal Processing

Figure 7: Back-to-back 3R Regenerator Example
  • The two transponders can be operated in a configuration where each transponder performs the 3R regeneration function in one direction, one in forward direction (from source to destination) and the other in the reverse direction. In this configuration, the transceiver of each optical transponder receives the signal from one segment and transmits the regenerated optical signal into the adjacent segment. This configuration is also called cross-regeneration and each transceiver is operated in an uni-directional mode.

  • Implemantations may support the change of the carrier frequency where the receiver may operate at a different optical frequency as the transmitter. The transceiver mode is a property of the transceiver and is applied to the transmitter and the receiver. Therefore, the transceiver mode is the same for the two segments on the two sides of the 3R regenaretor realised by two transceivers operated in the uni-directional mode.


                   Optical Transponder 1
                   3R in forward direction
               +-----------------------------+
               | Transceiver                 |
               |-------------+   +---------+ |
       ------->| Receiver    |---|Sig. --+ | |
               |-------------+   |       | | |
           +---| Transmitter |---|Proc.<-+ | |
           |   |-------------+   +---------+ |
           |   |                             |
           |   +-----------------------------+
           |
           +----------------------------------------->

       <-----------------------------------------+
                                                 |
               +-----------------------------+   |
               |                 Transceiver |   |
               | +---------+   +-------------|   |
               | | +->Sig. |---| Transmitter |---+
               | | |       |   +-------------|
               | | +--Proc.|---| Receiver    |<-------
               | +---------+   +-------------|
               |                             |
               +-----------------------------+
                   Optical Transponder 2
                   3R in backward direction

               Sig. Proc. = Signal Processing

Figure 8: Cross-3R Regenerator Example

Due to the fact that 3R regenerators are composed of an optical transponder pair, the capability whether an optical transponder can be used as a 3R regenerator is is added to the transponder capabilities. Hence, no additional entity is required for describing 3R regenerators in the TE-topology YANG model. The optical transponder capabilities regarding the 3R regenerator function are described by the following two YANG model attributes:

  • supported-termination-type

  • supported-3r-mode

The supported-termination-type attribute describes whether the optical transponder can be used as tunnel terminating transponder only, as 3R regenerator only, or whether it can support both functions. The supported-3r-mode attribute describes the configuration of the transponder pair forming the 3R regenerator as described above.

More text to be added here!

2.8. WSS/Filter

WSS separates the incoming light input spectrally as well as spatially, then chooses the wavelength that is of interest by deflecting it from the original optical path and then couple it to another optical fibre port. WSS/Filter is internal to ROADM. So this document does not model the inside of ROADM.

2.9. Optical Fiber

There are various optical fiber types defined by ITU-T. There are several fiber-level parameters that need to be factored in, such as, fiber-type, length, loss coefficient, pmd, connectors (in/out).

The loss of a fiber span can be described in two ways:

  1. As calculated loss using the provided loss coefficient (loss-coef) and length of the fiber.
  2. As measured loss provided by the total-loss attribute.

The total-loss should be provided when it can be measured with a power measurement facility at the output of the upstream node (input of the fiber span) and a power measurement facility at the input of the downstream node (output of the fiber span). This measured loss typically differs from the calculated loss because it includes all loss contributions including possible accumulated loss due to imperfect fiber splices and connector losses. It can also change over time due to changing fiber conditions, e.g., in case of a fiber cut. In case the total-loss cannot be measured (no power measurement facilities in place), the total-loss defined as optional leaf in the YANG model shall be omitted.

N.B.: In case of Raman amplifiers, the Raman gain shall not be included in the measured loss to properly reflect only the loss of the fiber span in the total-loss attribute.

ITU-T G.652 defines Standard Singlemode Fiber; G.654 Cutoff Shifted Fiber; G.655 Non-Zero Dispersion Shifted Fiber; G.656 Non-Zero Dispersion for Wideband Optical Transport; G.657 Bend-Insensitive Fiber. There may be other fiber-types that need to be considered.

2.10. WDM-Node Architectures

The WDM-node architectures in today's dense wavelength division multiplexing (DWDM) networks can be categorized as follows:

  • Integrated WDM-node architecture with local optical transponders

  • Integrated WDM-node architecture with local optical transponders and single channel add/drop ports for remote optical transponders

  • Disaggregated WDM-node architecture where the WDM-TE-node is composed of degree, add/drop, and optical transponder subsystems handled as separate WDM-nodes

The TE topology YANG model augmentations including optical impairments for DWDM networks defined below intend to cover all the 3 categories of WDM-node architectures listed above. In the case of a disaggregated WDM-node architecture, it is assumed that the optical domain controller already performs some form of abstraction and presents the WDM-TE-node representing the disaggregated WDM-node in the same way as an integrated WDM-TE-node with local optical transponders if the optical transponder subsystems and the add/drop subsystems are collocated (short fiber links not imposing any significant optical impairments).

The different WDM-node architectures are briefly described and illustrated in the following subsections.

[Editor's note: The modeling of remote optical transponders located for example in the client device with a single channel link between the OT and the add/drop port of the WDM-TE-node requires further investigations and will be addressed in a future revision of this document.]

2.10.1. Integrated WDM-node Architecture with Local Optical Transponders

Figure 2 and Figure 9 below show the typical architecture of an integrated WDM-node, which contains the optical transponders as an integral part of the WDM-node. Such an integrated WDM-node provides DWDM interfaces as external interfaces for interconnecting the device with its neighboring WDM-node (see OMS MCG above). The number of these interfaces denote also the degree of the WDM-node. A degree 3 WDM-node for example has 3 DWDM links that interconnect the WDM-node with 3 neighboring WDM-nodes. Additionally, the WDM-node provides client interfaces for interconnecting the WDM-node with client devices such as IP routers or Ethernet switches. These client interfaces are the client interfaces of the integrated optical transponders.

            . . . . . . . . . . . . . . . . . .
            .           WDM-TE-Node           .
      +-----.-------------------------------- .-----+
      |     .             WDM-Node            .     |
      |     .   /|  +-----------------+  |\   .     |
 Line |     .  / |--|                 |--| \  .     | Line
 WEST |  /| . |  |--|                 |--|  | . |\  | EAST
------+-/ |-.-|  |--|  photonic       |--|  |-.-| \-+-----
------+-\ |-.-|  |--|  cross-connect  |--|  |-.-| /-+-----
      |  \| . |  |--|                 |--|  | . |/  |
      |     .  \ |--|                 |--| /  .     |
      |     .   \|  +-----------------+  |/   .     |
      |     .                                 .     |
      |     .     +---+ +---+ +---+ +---+     .     |
      |     .     | O | | O | | O | | O |     .     |
      |     .     | T | | T | | T | | T |     .     |
      |     .     +---+ +---+ +---+ +---+     .     |
      |     .      | |   | |   | |   | |      .     |
      +-----.------+-+---+-+---+-+---+-+------.-----+
            . . . .|.| . |.| . |.| . |.|. . . .
                   | |   | |   | |   | |
                     Client Interfaces
Figure 9: Integrated WDM-node Architectiure with Local Transponders

2.10.2. Integrated WDM-node with Integrated Optical Transponders and Single Channel Add/Drop Interfaces for Remote Optical Transponders

Figure 10 below shows the extreme case where all optical transponders are not integral parts of the WDM-node but are separate devices that are connected to the add/drop ports of the WDM-node. If the optical transponders and the WDM-node are collocated and if short single channel fiber links are used to interconnect the optical transponders with an add/drop port of the WDM-node, the optical domain controller may present these optical transponders in the same way as local optical transponders. If, however, the optical impairments of the single channel fiber link between the optical transponder and the add/drop port of the WDM-node cannot be neglected, it is necessary to represent the fiber link with its optical impairments in the topology model This also implies that the optical transponders belong to a separate TE-node.

[Editor's note: this requires further study].

            . . . . . . . . . . . . . . . . . .
            .           WDM-TE-Node           .
      +-----.-------------------------------- .-----+
      |     .            WDM-Node             .     |
      |     .   /|  +-----------------+  |\   .     |
 Line |     .  / |--|                 |--| \  .     | Line
 WEST |  /| . |  |--|                 |--|  | . |\  | EAST
------+-/ |-.-|  |--|  photonic       |--|  |-.-| \-+-----
------+-\ |-.-|  |--|  cross-connect  |--|  |-.-| /-+-----
      |  \| . |  |--|                 |--|  | . |/  |
      |     .  \ |--|                 |--| /  .     |
      |     .   \|  +-----------------+  |/   .     |
      +-----.---------|----|---|----|---------.-----|
 Colored OT .       +-+   ++   ++   +-+       .
 line I/F   .       |     |     |     |       .
            .     +---+ +---+ +---+ +---+     .
            .     | O | | O | | O | | O |     .
            .     | T | | T | | T | | T |     .
            .     +---+ +---+ +---+ +---+     .
            . . . .|.| . |.| . |.| . |.|. . . .
                   | |   | |   | |   | |
                     Client Interfaces
Figure 10: Integrated WDM-node Architectiure with Remote Transponders

2.10.3. Disaggregated WDM-TE-node Subdivided into Degree, Add/Drop, and Optical Transponder Subsystems

Recently, some DWDM network operators started demanding WDM subsystems from their vendors. An example is the OpenROADM project where multiple operators and vendors are developing related YANG models. The subsystems of a disaggregated WDM-TE-node are:

  • Single degree subsystems

  • Add/drop subsystems

  • Optical transponder subsystems

These subsystems are separate network elements and each network element provides a separate management and control interface. The subsystems are typically interconnected using short fiber patch cables and form together a disaggregated WDM-TE-node. This disaggregated WDM-TE-node architecture is depicted in Figure 11 below.

As this document defines TE topology YANG model augmentations [RFC8795] for the TE topology YANG model provided at the north-bound interface of the optical domain controller, it is a valid assumption that the optical domain controller abstracts the subsystems of a disaggregated WDM-TE-node and presents the disaggregated WDM-TE-node in the same way as an integrated WDM-node hiding all the interconnects that are not relevant from an external TE topology view.

           . . . . . . . . . . . . . . . . .  .
           .            WDM-TE-Node           .
     +-----.----------+            +----------.-----+
     | Degree 1       |            |       Degree 2 |
Line |     .  +-----+ |            + +-----+  .     | Line
 1   |  /| .  |  W  |-|------------|-|  W  |  . |\  |  2
-----+-/ |-.--|  S  ********  ********  S  |--.-| \-+-----
-----+-\ |-.--|  S  | |    *  *    | |  S  |--.-| /-+-----
     |  \| .  |     |-|-+  *  *  +-|-|     |  . |/  |
     |     .  +-+-+-+ | |  *  *  | | +-+-+-+  .     |
     +-----.----|-----+ |  *  *  | +-----|----.-----+
           .    |       |  *  *  |       |    .
     +-----.----|-----+ |  *  *  | +-----|----.-----+
     | Degree 4 |     | |  *  *  | |     | Degree 3 |
Line |     .  +-----+ | |  *  *  | | +-----+  .     | Line
 4   |  /| .  |  W  |-|-|--*--*--+ | |  W  |  . |\  |  3
-----+-/ |-.--|  S  | | +--*--*----|-|  S  |--.-| \-+-----
-----+-\ |-.--|  S  |-|----*--*----|-|  S  |--.-| /-+-----
     |  \| .  |     | |    *  *    | |     |  . |/  |
     |     .  +--*--+ |    *  *    | +--*--+  .     |
     +-----.-----*----+    *  *    +----*-----.-----+
           .     *         *  *         *     .
           .  +--*---------*--*---------*--+  .
           .  |          ADD               |  .
           .  |          DROP              |  .
           .  +----------------------------+  .
 Colored OT  .     |     |     |     |     .
  Line I/F   .   +---+ +---+ +---+ +---+   .
             .   | O | | O | | O | | O |   .
             .   | T | | T | | T | | T |   .
             .   +---+ +---+ +---+ +---+   .
             . . .|.| . |.| . |.| . |.|. . .
                  | |   | |   | |   | |
                    Client Interfaces
Figure 11: Disaggregated WDM-TE-node Architecture with Remote Transponders

2.10.4. Optical Impairments Imposed by WDM-TE-Nodes

[Editor's note: the following text still needs to be updated based on the agreed terminology]

When an optical OTSi signal traverses a ROADM node, optical impairments are imposed on the signal by various passive or active optical components inside the ROADM node. Examples of optical impairments are:

  • Chromatic dispersion (CD)

  • Polarization mode dispersion (PMD)

  • Polarization dependent loss (PDL)

  • Optical amplifier noise due to amplified spontaneous emission (ASE)

  • In-band cross-talk

  • Filtering effects (for further study)

A ROADM node contains a wavelength selective photonic switching function (WSS)that is capable of switching media channels (MCs) described in Section 2.3.4. These MCs can be established between two line ports of the ROADM or between a line port and an Add/Drop port of the ROADM. The Add/Drop ports of a ROADM are those ports to which optical transponders are connected. Typically, add/drop ports deal with a single channel signal (single OTSi), but principally this could also be a group of OTSi signals (OTSiG). The optical impairments associated with these MCs are different and the paths of the MCs inside the ROADM node can be categorized as follows:

  • Express path: MC path between two line ports of the ROADM (unidirectional)

  • Add Path: MC path from an Add port to a line port of the ROADM

  • Drop path: MC path from a line port to a Drop port of the ROADM

Due to the symmetrical architecture of the ROADM node, the optical impairments associated with the express path are typically the same between any two line ports of the ROADM whereas the optical impairments for the add and drop paths are different and therefore have to be modeled separately.

The optical impairments associated with each of the three types of ROADM-node-internal paths described above are modeled as optical impairment parameter sets. These parameter sets are modeled as an augmentation of the te-node-attributes defined in [RFC8795]. The te-node-attributes are augmented with a list of roadm-path-impairments for the three ROADM path types distinguished by the impairment-type. Each roadm-path-impairments list entry contains the set of optical impairment parameters for one of the three path types indicated by the impairment-type. For the optical feasibility calculation based on the optical impairments, it is necessary to know whether the optical power of the OTSi stays within a certain power window. This is reflected by some optical power related parameters such as loss parameters or power parameters, which are included in the optical impairment parameter sets (see tree view in Section 3).

[RFC8795] defines a connectivity matrix and a local link connectivity list for the TE node. The connectivity matrix describes the connectivity for the express paths between the different lines of the ROADM and the local link connectivity list describes the connectivity for the Add and Drop paths of the ROADM. These matrices are augmented with a new roadm-path-impairment matrix element, an add-path-impairment, and drop-path-impairment matrix element, respectively, which are defined as a pointer to the corresponding entry in the roadm-path-impairments list (leaf-ref).

2.11. Optical Protection Architectures

The YANG model defined in this document supports the following optical protection architectures:

  • Individual OTSi protection
  • OMS MCG protection = TE-link protection between adjacent WDM-TE-nodes

2.11.1. Individual OTSi Protection

Individual OTSi protection is a protection architecture where an individual OTSi signal is protected as described in Appendix III of ITU-T Recommendation G.873.1 [G.873.1]. This protection architecture requires dedicated photonic protection functions in the optical domain that are typically provided by dedicated protection hardware. These photonic protection functions are a photonic splitter function splitting the OTSi signal in transmit direction and a photonic selector function selecting the OTSi signal in receive direction from one of the two protection legs between the two protection functions terminating the individual OTSi protection. This individual OTSi protection scheme can be considered as a photonic 1+1 protection scheme (1+1 sub-network connection protection (SNCP) in ITU-T terminology).

In order to achieve short protection switching times, it is necessary that the OTSi signals of the two legs are identical in terms of wavelength, modulation format, FEC, etc., which means no receiver configuration changes when a protection switch at the selector occurs selecting the other leg. This is important when 3R regenerators are needed between the two end-points terminating the protected segment, which typically is end-to-end.

In case of individual OTSi protection without 3R regenerators, two end-to-end MC paths are associated with the OTSi signal. In the YANG model, this is modeled as leaf list of the otsi providing the e2e-mc-path-id for the two end-to-end MC paths associated with the individually 1+1 protected OTSi. This scenario is depicted in Figure 12 (forward direction) and Figure 13 (reverse direction)below.


                         end-to-end MC path1
      |------------------------------------------------------->|

 +-----------+                                          +-----------+
 | WDM Node1 |           +-----+      +-----+           | WDM Node2 |
 |      +----|           | WDM |      | WDM |           |----+      |
 |      |   -o---------->o-----o----->o-----o---------->o-   |      |
 |  OT  |  / |           |Node3|      |Node4|           | \  |  OT  |
 | +--+ | /  |           +-----+      +-----+           |  \ | +--+ |
-o-o  o-o-   |                                          |   -o-o  o-o-
 | +--+ | \  |     +-----+     +------+     +-----+     |  / | +--+ |
 |      |  \ |     | WDM |     | WDM  |     | WDM |     | /  |      |
 |      |   -o---->o-----o---->o------o---->o-----o---->o-   |      |
 |      +----|     |Node5|     | Node6|     |Node7|     |----+      |
 |   Splitter|     +-----+     +------+     +-----+     |Selector   |
 +-----------+                                          +-----------+

      |------------------------------------------------------->|
                         end-to-end MC path2

Figure 12: Individual OTSi Protection without 3R regenerators (forward direction)

                         end-to-end MC path1'
      |<-------------------------------------------------------|

 +-----------+                                          +-----------+
 | WDM Node1 |           +-----+      +-----+           | WDM Node2 |
 |      +----|           | WDM |      | WDM |           |----+      |
 |      |   -o<----------o-----o<-----o-----o<----------o-   |      |
 |  OT  |  / |           |Node3|      |Node4|           | \  |  OT  |
 | +--+ | /  |           +-----+      +-----+           |  \ | +--+ |
-o-o  o-o-   |                                          |   -o-o  o-o-
 | +--+ | \  |     +-----+     +------+     +-----+     |  / | +--+ |
 |      |  \ |     | WDM |     | WDM  |     | WDM |     | /  |      |
 |      |   -o<----o-----o<----o------o<----o-----o<----o-   |      |
 |      +----|     |Node5|     | Node6|     |Node7|     |----+      |
 |   Selector|     +-----+     +------+     +-----+     |Splitter   |
 +-----------+                                          +-----------+

      |<-------------------------------------------------------|
                         end-to-end MC path2'

Figure 13: Individual OTSi Protection without 3R regenerators (reverse direction)

For each OMS MCG (TE-link) along the two end-to-end MC paths in forward direction (end-to-end MC path1 and end-to-end MC path2) as well as the two end-to-end MC paths in reverse direction (end-to-end MC path1' and end-to-end MC path2'), the e2e-mc-path-id is provided for the individually protected OTSi signal. Based on this information, it is possible to construct the end-to-end MC paths between the optical transponders terminating the individually 1+1 protected OTSi.

In the scenario depicted in Figure 12 and Figure 13, the e2e-mc-path-id of end-to-end MC path1 and end-to-end MC path1' is provided for the TE-links between WDM Node1 and WDM Node3, WDM Node3 and WDM Node4 as well as WDM Node4 and WDM Node2 while the e2e-mc-path-id of end-to-end MC path2 and end-to-end MC path2' is provided for the TE-links between WDM Node1 and WDM Node5, WDM Node5 and WDM Node6, WDM Node6 and WDM Node7 as well as WDM Node7 and WDM Node2.

If a 3R regenerator is crossed on one of the two legs or even on both legs, the end-to-end MCs are terminated on both sides of the 3R regenerator. The configured-termination-type attribute set to "3r-regeneration" shall be used to indicate that the transceivers are forming a 3R regenerator instead of terminating the layer 0 tunnel (layer 0 service). At WDM-nodes containing a 3R regenerator, the end-2-end MCs are stitched together forming the end-to-end path for the layer 0 tunnel (layer 0 service). This is reflected in the leaf list of the OTSi, which now lists all e2e-mc-path-ids of the end-to-end MC paths on the two legs of the individually 1+1 protected OTSi signal.

In the scenario depicted in Figure 14 and Figure 15 below where a 3R regenerator is crossed in WDM Node6 on the lower leg, the e2e-mc-path-id leaf list has 3 entries (assumption: the same e2e-mc-path-id can be used for the path in forward and reverse direction):

  1. The e2e-mc-path-id identifying end-to-end MC path1 from WDM Node1 via WDM Node3 and WDM Node4 to WDM Node2 as well as end-to-end MC path1' in reverse direction (upper leg)
  2. The e2e-mc-path-id identifying end-to-end MC path2 from WDM Node1 via WDM Node5 to WDM Node6 containing the 3R regenerator as well as end-to-end MC path2' in reverse direction (left hand segment of the lower leg)
  3. The e2e-mc-path-id identifying end-to-end MC path3 from WDM Node6 containing the 3R regenerator via WDM Node7 to WDM Node2 as well as end-to-end MC path3' in reverse direction (right hand segment of the lower leg)

Based on this modeling approach it is possible to identify the end-2-end MCs stitched together at 3R regenerators on each of the two legs of the individually protected 1+1 OTSi signal. Like for the case without 3R regenerators is also possible to associate two end-to-end paths in forward and reverse direction for the two legs between the optical transponders terminating the individually 1+1 protected OTSi in WDM Node1 and WDM Node2, respectively:

  1. end-to-end MC path1 and end-to-end MC path1' (upper leg)
  2. end-to-end MC path2 and end-to-end MC path2' stitched together with end-to-end MC path3 and end-to-end MC path3' (lower leg)

                         end-to-end MC path1
      |------------------------------------------------------->|

 +-----------+                                          +-----------+
 | WDM Node1 |           +-----+      +-----+           | WDM Node2 |
 |      +----|           | WDM |      | WDM |           |----+      |
 |      |   -o---------->o-----o----->o-----o---------->o-   |      |
 |  OT  |  / |           |Node3|      |Node4|           | \  |  OT  |
 | +--+ | /  |           +-----+      +-----+           |  \ | +--+ |
-o-o  o-o-   |                                          |   -o-o  o-o-
 | +--+ | \  |     +-----+     +------+     +-----+     |  / | +--+ |
 |      |  \ |     |     |     | +--+ |     |     |     | /  |      |
 |      |   -o---->o-----o---->o-o  o-o---->o-----o---->o-   |      |
 |      +----|     | WDM |     | +--+ |     | WDM |     |----+      |
 |   Splitter|     |Node5|     |  3R  |     |Node7|     |Selector   |
 +-----------+     +-----+     +------+     +-----+     +-----------+
                               WDM Node6
                               with 3R
                               Regenerator

      |------------------------->|  |------------------------->|
          end-to-end MC path2           end-to-end MC path3

Figure 14: Individual OTSi Protection with a 3R regenerator (forward direction)

                         end-to-end MC path1'
      |<-------------------------------------------------------|

 +-----------+                                          +-----------+
 | WDM Node1 |           +-----+      +-----+           | WDM Node2 |
 |      +----|           | WDM |      | WDM |           |----+      |
 |      |   -o<----------o-----o<-----o-----o<----------o-   |      |
 |  OT  |  / |           |Node3|      |Node4|           | \  |  OT  |
 | +--+ | /  |           +-----+      +-----+           |  \ | +--+ |
-o-o  o-o-   |                                          |   -o-o  o-o-
 | +--+ | \  |     +-----+     +------+     +-----+     |  / | +--+ |
 |      |  \ |     |     |     | +--+ |     |     |     | /  |      |
 |      |   -o<----o-----o<----o-o  o-o<----o-----o<----o-   |      |
 |      +----|     | WDM |     | +--+ |     | WDM |     |----+      |
 |   Selector|     |Node5|     |  3R  |     |Node7|     |Splitter   |
 +-----------+     +-----+     +------+     +-----+     +-----------+
                               WDM Node6
                               with 3R
                               Regenerator

      |<-------------------------|  |<-------------------------|
          end-to-end MC path2'          end-to-end MC path3'

Figure 15: Individual OTSi Protection with a 3R regenerator (reverse direction)

Individual OTSi protection use cases:

(i)
OT and OTSi protection function are an integral part of the WDM-TE-node
(ii)
OT and OTSi protection/ROADM functions are in two adjacent WDM-TE-node (remote OT)
(iii)
OT and OTSi protection function are both in an adjacent WDM-TE-node (protected remote OT)

The different use cases are described in following sub-sections and examples are provided how these uses cases can be modeled properly using the optical impairment aware TE-topology YANG data model.

2.11.1.1. OT and OTSi protection function are an integral part of the WDM-TE-node

This use case is based on the architecture illustrated in Figure 9 and the following entities are all integral parts of the WDM-TE-node:

  • Local optical transponder
  • Splitter/selector protection function
  • ROADM function

Figure 16 illustrates such a WDM-TE-node configuration in transmit/forward direction where the protection function is an optical splitter and Figure 17 illustrates the same WDM-TE-node configuration in receive/reverse direction where the protection function is an optical selector selecting one of the two incoming OTSi signals and switching to the other incoming OTSi signal when the optical power of the selected OTSi signal drops below a pre-defined threshold.

The TE-topology YANG model has been augmented to describe this protection architecture. The already existing optional protection-type leaf of the TTP associated with the optical transceiver is used to indicate whether the TTP is protected, i.e., whether it is connected to a protection function or whether it is unprotected, i.e., whether it is directly connected to an add-drop port of the ROADM function in the WDM-TE-node.

For unprotected TTPs associated with an optical transceiver, the local-link-connectivity list describes the potential connectivity between the TTP and the LTPs of the WDM-TE-node that are the local end-points of the TE-links (OMS MCGs) interconnecting the WDM-TE-node with its neighbors, also often called degrees of the WDM-TE-node as opposed to its add-drop ports.

For protected TTPs, the local-link-connectivity list has been augmented such that is is capable of describing the potential connectivity not only between the TTP and a single LTP a (unprotected case) but is now capable to describe the potential connectivity to additional LTPs including the related optical impairments. If the optical impairments are the same for all local-link-connectivity list entries for a particular TTP, which is usually the case, the optical impairments shall be omitted for the additional LTPs leading to a more compact topology description. If the optical impairments are different, however, they can be described for each additional LTP entry separately.

A local-link-connectivity list example for a protected TTP in JSON format is provided in Appendix A.

                            WDM-TE-Node
   +---------------------------------------------------------+
   |                                       ROADM             |
   |      Local OT        Splitter    +--------------+       |
   |   +------------+    +--------+   |              | Line  |
   |   |         TTP|    |     ---o-->o------\       | LTP 1 |
   |   |       +----|    |    /   |   |       \------o-------o->
 --o-->|       | Tx o--->o---o    |   |              |       |
   |   |       +----|    |    \   |   |              |       |
 <-o---|       | Rx o    |     ---o-->o---\          | Line  |
   |   |       +----|    +--------+   |    \         | LTP 2 |
   |   |            |                 |     \        o-------o->
   |   +------------+        internal |      \       |       |
   |                         AD ports o       \      |       |
   |                                  |        \     | Line  |
   |                                  |         \    | LTP 3 |
   |                                  |          \---o-------o->
   |                                  o              |       |
   |                                  |              |       |
   |                                  +--------------+       |
   +---------------------------------------------------------+

Figure 16: OT and OTSi protection function are an integral part of the WDM-TE-node (transmit direction)
                            WDM-TE-Node
   +---------------------------------------------------------+
   |      Local OT                                           |
   |   +------------+                      ROADM             |
   |   |            |     Selector    +--------------+       |
   |   |       +----|    +--------+   |              | Line  |
 --o-->|       | Tx o    |     ---o<--o------\       | LPT 1 |
   |   |       +----|    |    /   |   |       \------o-------o<-
 <-o---|       | Rx o<---o---o    |   |              |       |
   |   |       +----|    |    \   |   |              |       |
   |   |         TTP|    |     ---o<--o---\          | Line  |
   |   +------------+    +--------+   |    \         | LTP 2 |
   |                                  |     \        o-------o<-
   |                         internal |      \       |       |
   |                         AD ports o       \      |       |
   |                                  |        \     | Line  |
   |                                  |         \    | LTP 3 |
   |                                  |          \---o-------o<-
   |                                  o              |       |
   |                                  |              |       |
   |                                  +--------------+       |
   +---------------------------------------------------------+

Figure 17: OT and OTSI protection function are an integral part of the WDM-TE-node (receive direction)
2.11.1.2. OT and OTSi protection/ROADM functions are in two adjacent WDM-TE-node (remote OT)

This use case is based on the architecture illustrated in Figure 10 where the optical transponder is not part of the WDM-TE-node containing the ROADM function (WDM-TE-Node-2) but is part of a separate WDM-TE-node (WDM-TE-Node-1) containing one or more optical transponders (remote OTs). WDM-TE-Node-2 contains:

  • Splitter/selector protection function
  • ROADM function

Figure 18 illustrates such a network configuration in transmit/forward direction showing the two WDM-TE-nodes where the protection function is the optical splitter in WDM-TE-Node-2 and Figure 19 illustrates the same network configuration in receive/reverse direction where the protection function is the optical selector in WDM-TE-Node-2 selecting one of the two incoming OTSi signals and switching to the other incoming OTSi signal when the optical power of the selected OTSi signal drops below a pre-defined threshold.

In the network configuration shown in Figure 18 and Figure 19, respectively, the two WDM-TE-nodes are interconnected via a TE-link carrying a single OTSi signal. This TE-link interconnects the remote OT with an add-drop port of WDM-TE-Node-2 and in the following the qualifier "add-drop" is used to refer to that LTP as opposed to the line LTPs representing degrees of WDM-TE-Node-2. Similar to the protected TTP in Section 2.11.1.1, the optional protection-type leaf is used to indicate whether the add-drop LTP is connected to a protection function and then to two line LTPs via the ROADM function inside WDM-TE-Node-2 or whether it is connected to a single line LTP via the ROADM function inside WDM-TE-Node-2 (unprotected add-drop LTP). While the protection-type attribute was already defined for the TTP, the YANG model has been augmented to also support this optional attribute for the LTP.

For protected LTPs, the connectivity-matrix has been augmented such that it is capable of describing the potential connectivity not only from an add-drop LTP to a single line LTP (unprotected case) but is now capable to describe the potential connectivity to additional line LTPs (protected case) including the related optical impairments. If the optical impairments are the same from the protected ad-drop LTP to all line LTPs, which is usually the case, the optical impairments shall be omitted for the additional LTPs leading to a more compact connectivity matrix description. If the optical impairments are different, however, they can be described for each additional LTP separately.


      WDM-TE-Node-1                      WDM-TE-Node-2
   +----------------+      +---------------------------------------+
   |                |      |                     ROADM             |
   |      Remote OT |      |    Splitter    +--------------+       |
   |   +------------+      |   +--------+   |              | Line  |
   |   |         TTP|      |AD |     ---o-->o------\       | LTP 1 |
   |   |       +----|      |LTP|    /   |   |       \------o-------o->
 --o-->|       | Tx o----->o-->o---o    |   |              |       |
   |   |       +----|      |   |    \   |   |              |       |
 <-o---|       | Rx o      |   |     ---o-->o---\          | Line  |
   |   |       +----|      |   +--------+   |    \         | LTP 2 |
   |   |            |      |                |     \        o-------o->
   |   +------------+      |AD LTP          |      \       |       |
   |                |      o----------------o       \      |       |
   |                |      |                |        \     | Line  |
   |                |      |unprot. AD LTPs |         \    | LTP 3 |
   |                |      |                |          \---o-------o->
   |                |      o----------------o              |       |
   |                |      |AD LTP          |              |       |
   |                |      |                +--------------+       |
   +----------------+      +---------------------------------------+

Figure 18: OT and OTSi protection/ROADM functions are in two adjacent WDM-TE-node (remote OT, transmit direction)

      WDM-TE-Node-1                      WDM-TE-Node-2
   +----------------+      +---------------------------------------+
   |      Remote OT |      |                                       |
   |   +------------+      |                     ROADM             |
   |   |            |      |    Selector    +--------------+       |
   |   |       +----|      |   +--------+   |              | Line  |
 --o-->|       | Tx o      |   |     ---o<--o------\       | LTP 1 |
   |   |       +----|      |   |    /   |   |       \------o-------o<-
 <-o---|       | Rx o<-----o<--o---o    |   |              |       |
   |   |       +----|      |AD |    \   |   |              |       |
   |   |         TTP|      |LTP|     ---o<--o---\          | Line  |
   |   +------------+      |   +--------+   |    \         | LTP 2 |
   |                |      |                |     \        o-------o<-
   |                |      |AD LTP          |      \       |       |
   |                |      o----------------o       \      |       |
   |                |      |                |        \     | Line  |
   |                |      |unprot. AD LTPs |         \    | LTP 3 |
   |                |      |                |          \---o-------o<-
   |                |      o----------------o              |       |
   |                |      |AD LTP          |              |       |
   |                |      |                +--------------+       |
   +----------------+      +---------------------------------------+

Figure 19: OT and OTSi protection/ROADM functions are in two adjacent WDM-TE-node (remote OT, receive direction)
2.11.1.3. OT and protection function are both in an adjacent WDM-TE-node (protected remote OT)

The use case illustrated in Figure 20 is similar to the use case in Section 2.11.1.1. The difference compared to use case (i) is that WDM-TE-Node-1 does not contain the ROADM function but contains:

  • Optical transponder function including the transceiver
  • Splitter/selector protection function

WDM-TE-Node-1 can be a data center device or a router router device that supporting 1+1 OTSi protection for its OTs while WDM-TE-Node-2 is a WDM-TE-node providing add-drop ports for remote OTs as depicted in Figure 10. WDM-TE-Node-1 and WDM-TE-Node-2 are interconnected via two separate TE-links, each carrying a single OTSi signal. The protection configuration for the protected TTP in WDM-TE-Node-1 can be described in the same way as for use case (i) using the local-link-connectivity list.


           WDM-TE-Node-1                        WDM-TE-Node-2
   +-----------------------------+      +---------------------------+
   |      protected              |      |         ROADM             |
   |      remote OT      Splitter|      |    +--------------+       |
   |   +------------+   +--------+      |AD  |              | Line  |
   |   |         TTP|   |     ---o----->o----o------\       | LTP 1 |
   |   |       +----|   |    /LTP|      |LTP |       \------o-------o->
 --o-->|       | Tx o-->o---o    |      |    |              |       |
   |   |       +----|   |    \   |      |AD  |              |       |
 <-o---|       | Rx o   |     ---o----->o----o---\          | Line  |
   |   |       +----|   |     LTP|      |LTP |    \         | LTP 2 |
   |   |            |   +--------+      |    |     \        o-------o->
   |   +------------+            |      |    |      \       |       |
   |                             |      o----o       \      |       |
   |                             |      |AD  |        \     | Line  |
   |                             |      |LTPs|         \    | LTP 3 |
   |                             |      |    |          \---o-------o->
   |                             |      o----o              |       |
   |                             |      |    |              |       |
   |                             |      |    +--------------+       |
   +-----------------------------+      +---------------------------+

Figure 20: OT and OTSI protection function are both in an adjacent WDM-TE-node (protected remote OT, transmit direction)

3. YANG Model (Tree Structure)

[Editor's note: tree view below always has to be updated before submitting a new revision!]


module: ietf-optical-impairment-topology

  augment /nw:networks/nw:network/nw:network-types/tet:te-topology:
    +--rw optical-impairment-topology!
  augment /nw:networks/nw:network:
    +--rw otsis!
    |  +--ro otsi-group* [otsi-group-id]
    |     +--ro otsi-group-id    string
    |     +--ro otsi* [otsi-carrier-id]
    |        +--ro otsi-carrier-id           uint16
    |        +--ro otsi-carrier-frequency?   union
    |        +--ro e2e-mc-path-id*           uint16
    +--ro templates
       +--ro roadm-path-impairments
       |  +--ro roadm-path-impairment* [roadm-path-impairments-id]
       |     +--ro roadm-path-impairments-id    string
       |     +--ro (impairment-type)?
       |        +--:(roadm-express-path)
       |        |  +--ro roadm-express-path* [frequency-range-id]
       |        |     +--ro frequency-range-id        uint16
       |        |     +--ro frequency-range
       |        |     |  +--ro lower-frequency    frequency-thz
       |        |     |  +--ro upper-frequency    frequency-thz
       |        |     +--ro roadm-pmd?                union
       |        |     +--ro roadm-cd?
       |        |     |       l0-types:decimal-5-or-null
       |        |     +--ro roadm-pdl?
       |        |     |       l0-types:power-loss-or-null
       |        |     +--ro roadm-inband-crosstalk?
       |        |     |       l0-types:decimal-2-or-null
       |        |     +--ro roadm-maxloss?
       |        |             l0-types:power-loss-or-null
       |        +--:(roadm-add-path)
       |        |  +--ro roadm-add-path* [frequency-range-id]
       |        |     +--ro frequency-range-id        uint16
       |        |     +--ro frequency-range
       |        |     |  +--ro lower-frequency    frequency-thz
       |        |     |  +--ro upper-frequency    frequency-thz
       |        |     +--ro roadm-pmd?                union
       |        |     +--ro roadm-cd?
       |        |     |       l0-types:decimal-5-or-null
       |        |     +--ro roadm-pdl?
       |        |     |       l0-types:power-loss-or-null
       |        |     +--ro roadm-inband-crosstalk?
       |        |     |       l0-types:decimal-2-or-null
       |        |     +--ro roadm-maxloss?
       |        |     |       l0-types:power-loss-or-null
       |        |     +--ro roadm-pmax?
       |        |     |       l0-types:power-dbm-or-null
       |        |     +--ro roadm-osnr?
       |        |     |       l0-types:snr-or-null
       |        |     +--ro roadm-noise-figure?
       |        |             l0-types:decimal-5-or-null
       |        +--:(roadm-drop-path)
       |           +--ro roadm-drop-path* [frequency-range-id]
       |              +--ro frequency-range-id        uint16
       |              +--ro frequency-range
       |              |  +--ro lower-frequency    frequency-thz
       |              |  +--ro upper-frequency    frequency-thz
       |              +--ro roadm-pmd?                union
       |              +--ro roadm-cd?
       |              |       l0-types:decimal-5-or-null
       |              +--ro roadm-pdl?
       |              |       l0-types:power-loss-or-null
       |              +--ro roadm-inband-crosstalk?
       |              |       l0-types:decimal-2-or-null
       |              +--ro roadm-maxloss?
       |              |       l0-types:power-loss-or-null
       |              +--ro roadm-minloss?
       |              |       l0-types:power-loss-or-null
       |              +--ro roadm-typloss?
       |              |       l0-types:power-loss-or-null
       |              +--ro roadm-pmin?
       |              |       l0-types:power-dbm-or-null
       |              +--ro roadm-pmax?
       |              |       l0-types:power-dbm-or-null
       |              +--ro roadm-ptyp?
       |              |       l0-types:power-dbm-or-null
       |              +--ro roadm-osnr?
       |              |       l0-types:snr-or-null
       |              +--ro roadm-noise-figure?
       |                      l0-types:decimal-5-or-null
       +--ro explicit-transceiver-modes
          +--ro explicit-transceiver-mode*
                  [explicit-transceiver-mode-id]
             +--ro explicit-transceiver-mode-id        string
             +--ro line-coding-bitrate?                identityref
             +--ro bitrate?                            uint16
             +--ro max-diff-group-delay?               decimal-2
             +--ro max-chromatic-dispersion?           decimal-2
             +--ro cd-penalty* [cd-value]
             |  +--ro cd-value         decimal-2
             |  +--ro penalty-value    union
             +--ro max-polarization-mode-dispersion?   decimal-2
             +--ro pmd-penalty* [pmd-value]
             |  +--ro pmd-value        decimal-2
             |  +--ro penalty-value    union
             +--ro max-polarization-dependant-loss
             |       power-loss-or-null
             +--ro pdl-penalty* [pdl-value]
             |  +--ro pdl-value        power-loss
             |  +--ro penalty-value    union
             +--ro available-modulation-type?          identityref
             +--ro min-OSNR?                           snr
             +--ro rx-ref-channel-power?               power-dbm
             +--ro rx-channel-power-penalty* [rx-channel-power-value]
             |  +--ro rx-channel-power-value    power-dbm
             |  +--ro penalty-value             union
             +--ro min-Q-factor?                       decimal-2
             +--ro available-baud-rate?                decimal64
             +--ro roll-off?                           decimal64
             +--ro min-carrier-spacing?                frequency-ghz
             +--ro available-fec-type?                 identityref
             +--ro fec-code-rate?                      decimal64
             +--ro fec-threshold?                      decimal64
             +--ro in-band-osnr?                       snr
             +--ro out-of-band-osnr?                   snr
             +--ro tx-polarization-power-difference?   power-ratio
             +--ro polarization-skew?                  decimal-2
  augment /nw:networks/nw:network/nw:node:
    +--rw transponders!
    |  +--ro transponder* [transponder-id]
    |     +--ro transponder-id                   uint32
    |     +--ro termination-type-capabilities?   enumeration
    |     +--ro supported-3r-mode?               enumeration
    |     +--ro transceiver* [transceiver-id]
    |        +--ro transceiver-id                 uint32
    |        +--ro supported-modes!
    |        |  +--ro supported-mode* [mode-id]
    |        |     +--ro mode-id                         string
    |        |     +--ro (mode)
    |        |        +--:(G.698.2)
    |        |        |  +--ro standard-mode?
    |        |        |  |       standard-mode
    |        |        |  +--ro line-coding-bitrate*      identityref
    |        |        |  +--ro min-central-frequency?
    |        |        |  |       frequency-thz
    |        |        |  +--ro max-central-frequency?
    |        |        |  |       frequency-thz
    |        |        |  +--ro transceiver-tunability?
    |        |        |  |       frequency-ghz
    |        |        |  +--ro tx-channel-power-min?     power-dbm
    |        |        |  +--ro tx-channel-power-max?     power-dbm
    |        |        |  +--ro rx-channel-power-min?     power-dbm
    |        |        |  +--ro rx-channel-power-max?     power-dbm
    |        |        |  +--ro rx-total-power-max?       power-dbm
    |        |        +--:(organizational-mode)
    |        |        |  +--ro organizational-mode
    |        |        |     +--ro operational-mode?
    |        |        |     |       operational-mode
    |        |        |     +--ro organization-identifier?
    |        |        |     |       organization-identifier
    |        |        |     +--ro line-coding-bitrate*
    |        |        |     |       identityref
    |        |        |     +--ro min-central-frequency?
    |        |        |     |       frequency-thz
    |        |        |     +--ro max-central-frequency?
    |        |        |     |       frequency-thz
    |        |        |     +--ro transceiver-tunability?
    |        |        |     |       frequency-ghz
    |        |        |     +--ro tx-channel-power-min?
    |        |        |     |       power-dbm
    |        |        |     +--ro tx-channel-power-max?
    |        |        |     |       power-dbm
    |        |        |     +--ro rx-channel-power-min?
    |        |        |     |       power-dbm
    |        |        |     +--ro rx-channel-power-max?
    |        |        |     |       power-dbm
    |        |        |     +--ro rx-total-power-max?
    |        |        |             power-dbm
    |        |        +--:(explicit-mode)
    |        |           +--ro explicit-mode
    |        |              +--ro min-central-frequency?
    |        |              |       frequency-thz
    |        |              +--ro max-central-frequency?
    |        |              |       frequency-thz
    |        |              +--ro transceiver-tunability?
    |        |              |       frequency-ghz
    |        |              +--ro tx-channel-power-min?
    |        |              |       power-dbm
    |        |              +--ro tx-channel-power-max?
    |        |              |       power-dbm
    |        |              +--ro rx-channel-power-min?
    |        |              |       power-dbm
    |        |              +--ro rx-channel-power-max?
    |        |              |       power-dbm
    |        |              +--ro rx-total-power-max?
    |        |              |       power-dbm
    |        |              +--ro compatible-modes
    |        |              |  +--ro supported-application-codes*
    |        |              |  |       leafref
    |        |              |  +--ro supported-organizational-modes*
    |        |              |          leafref
    |        |              +--ro explicit-transceiver-mode-ref?
    |        |                      leafref
    |        +--ro configured-mode?               union
    |        +--ro line-coding-bitrate?           identityref
    |        +--ro tx-channel-power?              power-dbm-or-null
    |        +--ro rx-channel-power?              power-dbm-or-null
    |        +--ro rx-total-power?                power-dbm-or-null
    |        +--ro outgoing-otsi
    |        |  +--ro otsi-group-ref?   leafref
    |        |  +--ro otsi-ref?         leafref
    |        +--ro incoming-otsi
    |        |  +--ro otsi-group-ref?   leafref
    |        |  +--ro otsi-ref?         leafref
    |        +--ro configured-termination-type?   enumeration
    +--rw regen-groups!
       +--ro regen-group* [group-id]
          +--ro group-id           uint32
          +--ro regen-metric?      uint32
          +--ro transponder-ref*
                  -> ../../../transponders/transponder/transponder-id
  augment /nw:networks/nw:network/nt:link/tet:te
            /tet:te-link-attributes:
    +--ro OMS-attributes
       +--ro generalized-snr?        l0-types:snr
       +--ro equalization-mode?      identityref
       +--ro power-param
       |  +--ro nominal-carrier-power?   l0-types:power-dbm-or-null
       |  +--ro nominal-psd?             l0-types:psd-or-null
       +--ro media-channel-groups!
       |  +--ro media-channel-group* [otsi-group-ref]
       |     +--ro otsi-group-ref    leafref
       |     +--ro media-channel* [media-channel-id]
       |        +--ro media-channel-id    int16
       |        +--ro flexi-n?            l0-types:flexi-n
       |        +--ro flexi-m?            l0-types:flexi-m
       |        +--ro otsi-ref* [otsi-carrier-ref]
       |        |  +--ro otsi-carrier-ref    leafref
       |        |  +--ro e2e-mc-path-ref*    leafref
       |        +--ro delta-power?
       |                l0-types:power-ratio-or-null
       +--ro OMS-elements!
          +--ro OMS-element* [elt-index]
             +--ro elt-index                 uint16
             +--ro oms-element-uid?          union
             +--ro reverse-element-ref
             |  +--ro link-ref?
             |  |       -> ../../../../../../../../nt:link/link-id
             |  +--ro oms-element-ref*   leafref
             +--ro (element)
                +--:(amplifier)
                |  +--ro geolocation
                |  |  +--ro altitude?    int64
                |  |  +--ro latitude?    geographic-coordinate-degree
                |  |  +--ro longitude?   geographic-coordinate-degree
                |  +--ro amplifier
                |     +--ro type-variety    string
                |     +--ro operational
                |        +--ro amplifier-element*
                |                [frequency-range-id stage-order]
                |           +--ro frequency-range-id
                |           |       uint16
                |           +--ro stage-order
                |           |       uint8
                |           +--ro name?
                |           |       string
                |           +--ro type-variety?
                |           |       string
                |           +--ro frequency-range
                |           |  +--ro lower-frequency    frequency-thz
                |           |  +--ro upper-frequency    frequency-thz
                |           +--ro power-param
                |           |  +--ro (power-param)
                |           |     +--:(channel-power)
                |           |     |  +--ro nominal-carrier-power
                |           |     |          l0-types:power-dbm-or-n\
ull
                |           |     +--:(power-spectral-density)
                |           |        +--ro nominal-psd
                |           |                l0-types:psd-or-null
                |           +--ro pdl?
                |           |       l0-types:power-loss-or-null
                |           +--ro (amplifier-element-type)
                |              +--:(optical-amplifier)
                |              |  +--ro optical-amplifier
                |              |     +--ro actual-gain
                |              |     |       l0-types:power-gain-or-\
null
                |              |     +--ro in-voa?
                |              |     |       l0-types:power-loss-or-\
null
                |              |     +--ro out-voa?
                |              |     |       l0-types:power-loss-or-\
null
                |              |     +--ro tilt-target
                |              |     |       l0-types:decimal-2-or-n\
ull
                |              |     +--ro total-output-power
                |              |     |       l0-types:power-dbm-or-n\
ull
                |              |     +--ro raman-direction?
                |              |     |       enumeration
                |              |     +--ro raman-pump* [pump-id]
                |              |        +--ro pump-id      uint16
                |              |        +--ro frequency?
                |              |        |       l0-types:frequency-t\
hz
                |              |        +--ro power?
                |              |                l0-types:decimal-2-o\
r-null
                |              +--:(dynamic-gain-equalizer)
                |                 +--ro dynamic-gain-equalizer!
                |                    +--ro media-channel* [flexi-n]
                |                       +--ro flexi-n
                |                       |       l0-types:flexi-n
                |                       +--ro flexi-m
                |                       |       l0-types:flexi-m
                |                       +--ro delta-power?
                |                               l0-types:power-ratio\
-or-null
                +--:(fiber)
                |  +--ro fiber
                |     +--ro type-variety    string
                |     +--ro length
                |     |       l0-types:decimal-2-or-null
                |     +--ro loss-coef
                |     |       l0-types:decimal-2-or-null
                |     +--ro total-loss?
                |     |       l0-types:power-loss-or-null
                |     +--ro pmd?
                |     |       l0-types:decimal-2-or-null
                |     +--ro conn-in?
                |     |       l0-types:power-loss-or-null
                |     +--ro conn-out?
                |             l0-types:power-loss-or-null
                +--:(concentratedloss)
                   +--ro concentratedloss
                      +--ro loss    l0-types:power-loss-or-null
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point:
    +--ro ttp-transceiver* [transponder-ref transceiver-ref]
       +--ro transponder-ref
       |       -> ../../../../transponders/transponder/transponder-id
       +--ro transceiver-ref    leafref
  augment /nw:networks/nw:network/nw:node/nt:termination-point:
    +--rw protection-type?   identityref
  augment /nw:networks/nw:network/nw:node/nt:termination-point
            /tet:te:
    +--rw inter-layer-sequence-number?   uint32
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes:
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices:
    +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:information-source-entry/tet:connectivity-matrices
            /tet:connectivity-matrix:
    +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices:
    +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix:
    +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:from:
    +--ro additional-ltp* [ltp-ref]
       +--ro ltp-ref
       |       -> ../../../../../../../nt:termination-point/tp-id
       +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:te-node-attributes/tet:connectivity-matrices
            /tet:connectivity-matrix/tet:to:
    +--ro additional-ltp* [ltp-ref]
       +--ro ltp-ref
       |       -> ../../../../../../../nt:termination-point/tp-id
       +--ro roadm-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities:
    +--ro add-path-impairments?    leafref
    +--ro drop-path-impairments?   leafref
  augment /nw:networks/nw:network/nw:node/tet:te
            /tet:tunnel-termination-point
            /tet:local-link-connectivities
            /tet:local-link-connectivity:
    +--ro add-path-impairments?    leafref
    +--ro drop-path-impairments?   leafref
    +--ro llc-transceiver* [ttp-transponder-ref ttp-transceiver-ref]
    |  +--ro ttp-transponder-ref
    |  |       -> ../../../../ttp-transceiver/transponder-ref
    |  +--ro ttp-transceiver-ref
    |  |       -> ../../../../ttp-transceiver/transceiver-ref
    |  +--ro is-allowed?              boolean
    |  +--ro add-path-impairments?    leafref
    |  +--ro drop-path-impairments?   leafref
    +--ro additional-ltp* [ltp-ref]
       +--ro ltp-ref
       |       -> ../../../../../../nt:termination-point/tp-id
       +--ro add-path-impairments?    leafref
       +--ro drop-path-impairments?   leafref

4. Optical Impairment Topology YANG Model

[Editor's note: YANG code below always has to be updated before submitting a new revision!]

<CODE BEGINS> file "ietf-optical-impairment-topology.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
}


<CODE ENDS>

5. Security Considerations

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

The YANG module specified in this document imports the ietf-network and ietf-network-topology models defined in [RFC8345]. This YANG module augments te-topology defined in [RFC8795] and consequently inherits te-topology subtrees and data nodes and their potential sensitivities and vulnerabilities. Therefore, the security considerations from [RFC8345] also apply to the YANG module defined in this document.

The data nodes defined in this YANG module are not writable/ creatable/deletable (i.e., "config true", which is the default) and are therefore only readable (i.e., config false). Although the data nodes are not susceptible to write operations or attacks (for instance, thought "edit-config"), some data nodes accessible for reading might be considered sensitive or prone to vulnerabilities as they expose network topology information, which may be confidential information for some operators. Therefore, it is critical to manage access to these readable nodes carefully (for instance, through "get", "get-config", or "notification" commands) to safeguard them.

These are the subtrees and data nodes and their sensitivity/vulnerability:

/nw:networks/nw:network/nw:network-types/tet:te-topology
Unauthorized access to this subtree can disclose the TE topology type.
/nw:networks/tet:te
Unauthorized access to this subtree can disclose the TE node templates and TE link templates.
/nw:networks/nw:network
Unauthorized access to this subtree can disclose the topology-wide configurations, including the TE topology ID, the topology-wide policies, and the topology geolocation.
/nw:networks/nw:network/nw:node
Unauthorized access to this subtree can disclose the operational state information of TE nodes.
/nw:networks/nw:network/nt:link/tet:te
Unauthorized access to this subtree can disclose the operational state information of TE links.
/nw:networks/nw:network/nw:node/nt:termination-point
Unauthorized access to this subtree can disclose the operational state information of TE link termination points.
/nw:networks/nw:network/nt:link/tet:te/tet:te-link-attributes
Unauthorized access to this subtree can disclose the operational state information of TE link attributes.
/nw:networks/nw:network/nw:node/tet:te/tet:tunnel-termination-point
Unauthorized access to this subtree can disclose the operational state information of TE link tunnel termination points.
/nw:networks/nw:network/nw:node/tet:te/tet:te-node-attributes
Unauthorized access to this subtree can disclose the operational state information of TE node attributes.

6. IANA Considerations

This document registers the following namespace URIs in the IETF XML registry [RFC3688]:

--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-optical-impairment-topology
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------

This document registers the following YANG modules in the YANG Module Names registry [RFC7950]:

--------------------------------------------------------------------
name:      ietf-optical-impairment-topology
namespace: urn:ietf:params:xml:ns:yang:ietf-optical-impairment-
topology
prefix:    oit
reference: RFC XXXX (TDB)
--------------------------------------------------------------------

7. Acknowledgments

We thank Daniele Ceccarelli and Oscar G. De Dios for useful discussions and motivation for this work.

8. References

8.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/info/rfc6242>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC8345]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, , <https://www.rfc-editor.org/info/rfc8345>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
[I-D.ietf-teas-rfc8776-update]
Busi, I., Guo, A., Liu, X., Saad, T., and I. Bryskin, "Common YANG Data Types for Traffic Engineering", Work in Progress, Internet-Draft, draft-ietf-teas-rfc8776-update-13, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-rfc8776-update-13>.
[RFC8795]
Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, "YANG Data Model for Traffic Engineering (TE) Topologies", RFC 8795, DOI 10.17487/RFC8795, , <https://www.rfc-editor.org/info/rfc8795>.
[I-D.ietf-ccamp-rfc9093-bis]
Belotti, S., Busi, I., Beller, D., Le Rouzic, E., and A. Guo, "Common YANG Data Types for Layer 0 Networks", Work in Progress, Internet-Draft, draft-ietf-ccamp-rfc9093-bis-11, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-rfc9093-bis-11>.

8.2. Informative References

[RFC6566]
Lee, Y., Ed., Bernstein, G., Ed., Li, D., and G. Martinelli, "A Framework for the Control of Wavelength Switched Optical Networks (WSONs) with Impairments", RFC 6566, DOI 10.17487/RFC6566, , <https://www.rfc-editor.org/info/rfc6566>.
[RFC7446]
Lee, Y., Ed., Bernstein, G., Ed., Li, D., and W. Imajuku, "Routing and Wavelength Assignment Information Model for Wavelength Switched Optical Networks", RFC 7446, DOI 10.17487/RFC7446, , <https://www.rfc-editor.org/info/rfc7446>.
[RFC7579]
Bernstein, G., Ed., Lee, Y., Ed., Li, D., Imajuku, W., and J. Han, "General Network Element Constraint Encoding for GMPLS-Controlled Networks", RFC 7579, DOI 10.17487/RFC7579, , <https://www.rfc-editor.org/info/rfc7579>.
[RFC7581]
Bernstein, G., Ed., Lee, Y., Ed., Li, D., Imajuku, W., and J. Han, "Routing and Wavelength Assignment Information Encoding for Wavelength Switched Optical Networks", RFC 7581, DOI 10.17487/RFC7581, , <https://www.rfc-editor.org/info/rfc7581>.
[RFC7698]
Gonzalez de Dios, O., Ed., Casellas, R., Ed., Zhang, F., Fu, X., Ceccarelli, D., and I. Hussain, "Framework and Requirements for GMPLS-Based Control of Flexi-Grid Dense Wavelength Division Multiplexing (DWDM) Networks", RFC 7698, DOI 10.17487/RFC7698, , <https://www.rfc-editor.org/info/rfc7698>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC8342]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8453]
Ceccarelli, D., Ed. and Y. Lee, Ed., "Framework for Abstraction and Control of TE Networks (ACTN)", RFC 8453, DOI 10.17487/RFC8453, , <https://www.rfc-editor.org/info/rfc8453>.
[RFC8792]
Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, "Handling Long Lines in Content of Internet-Drafts and RFCs", RFC 8792, DOI 10.17487/RFC8792, , <https://www.rfc-editor.org/info/rfc8792>.
[RFC9094]
Zheng, H., Lee, Y., Guo, A., Lopez, V., and D. King, "A YANG Data Model for Wavelength Switched Optical Networks (WSONs)", RFC 9094, DOI 10.17487/RFC9094, , <https://www.rfc-editor.org/info/rfc9094>.
[I-D.ietf-ccamp-dwdm-if-param-yang]
Galimberti, G., Hiremagalur, D., Grammel, G., Manzotti, R., and D. Breuer, "A YANG model to manage the optical interface parameters for an external transponder in a WDM network", Work in Progress, Internet-Draft, draft-ietf-ccamp-dwdm-if-param-yang-11, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-dwdm-if-param-yang-11>.
[I-D.ietf-teas-te-topo-and-tunnel-modeling]
Bryskin, I., Beeram, V. P., Saad, T., and X. Liu, "TE Topology and Tunnel Modeling for Transport Networks", Work in Progress, Internet-Draft, draft-ietf-teas-te-topo-and-tunnel-modeling-06, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-te-topo-and-tunnel-modeling-06>.
[G.672]
"Characteristics of multi-degree reconfigurable optical add/drop multiplexers", ITU-T Recommendation G.672, .
[G.807]
"Generic functional architecture of the optical media network", ITU-T Recommendation G.807, .
[G.807_Amd1]
"Generic functional architecture of the optical media network Amendment 1", ITU-T Recommendation G.807 Amendment 1, .
[G.873.1_Amd1]
"Optical transport network: Linear protection Amendment 1", ITU-T Recommendation G.873.1 Amendment 1, .
[G.709]
"Interfaces for the Optical Transport Network (OTN)", ITU-T Recommendation G.709, .
[G.694.1]
"Spectral grids for WDM applications: DWDM frequency grid", ITU-T Recommendation G.694.1, .
[G.959.1]
"Optical transport network physical layer interfaces", ITU-T Recommendation G.959.1, .
[G.872]
"Architecture of optical transport networks", ITU-T Recommendation G.872, .
[G.698.2]
"Amplified multichannel dense wavelength division multiplexing applications with single channel optical interfaces", ITU-T Recommendation G.698.2, .
[G.798.1]
"Types and characteristics of optical transport network equipment", ITU-T Recommendation G.798.1, .
[G.873.1]
"Optical transport network: Linear protection", ITU-T Recommendation G.873.1, .

Appendix A. JSON Code Examples for Optical Protection Uses Cases

(1)
JSON example for use case in Section 2.11.1.1 with full and with restricted connectivity:

The JSON example below addresses the optical protection use case for TTPs associated with local optical transponders (integrated WDM-TE-node):

Note that Figure 28 and Figure 29 illustrate the connectivity for a single TTP only, i.e., the figures are not showing TTP-1, TTP-2, TTP-3, and TTP-4, which are used in the JSON code example below.

The connectivity is reflected in the local-link-connectivities between the TTP associated with the transceiver of the local OT and the LTPs that can be reached including the optical impairments for the different paths.


   +--------------------------------------------------------------+
   |                                       ROADM                  |
   |                          +--------------------------------+  |
   |  Local OT     Splitter   |                        ___     |  |
   |  +-------+   +-------+  AD1      ___             |   \  Line |
   |  |    TTP|   |    ---o-->o-     /   |       /----o    | LTP 1|
   |  |  +----|   |   /   |   | \   |    o------/     | 1  o------o->
 --o->|  | Tx o-->o--o  5 |   |  \  |    |           -o    |   |  |
   |  |  +----|   |   \   |  AD2  --o  4 o-\        / |___/    |  |
 <-o--|  | Rx o   |    ---o-->o-    |    |  \      /       DEG1|  |
   |  |  +----|   +-------+   | \   |    o-  \    /    ___     |  |
   |  |       |               |  |   \___| \  \  /    |   \  Line |
   |  +-------+      internal |  |          \  \------o    | LTP 2|
   |                 AD ports |  |           \ /      | 2  o------o->
   |                          |  |    ___     \   /---o    |   |  |
   |                          o  |   /   |   / \ /    |___/    |  |
   |                          |  |  |    o--/   \          DEG2|  |
   |                          |   \ |    |     / \     ___     |  |
   |                          |    -o  6 o----/   \   |   \  Line |
   |                          |     |    |         \--o    | LTP 3|
   |                          |     |    o----\       | 3  o------o->
   |                          o      \___|     \------o    |   |  |
   |                          |                       |___/    |  |
   |                          |                            DEG3|  |
   |                          +--------------------------------+  |
   +--------------------------------------------------------------+

Figure 28: Protected TTP with Full Connectivity between ROADM Add-Drop Ports and ROADM Degree Ports

   +--------------------------------------------------------------+
   |                                       ROADM                  |
   |                          +--------------------------------+  |
   |  Local OT     Splitter   |                        ___     |  |
   |  +-------+   +-------+  AD1       ___            |   \  Line |
   |  |    TTP|   |    ---o-->o--     /   |       /---o    | LTP 1|
   |  |  +----|   |   /   |   |  \   |    o------/    | 1  o------o->
 --o->|  | Tx o-->o--o  5 |   |   ---o  4 |         /-o    |   |  |
   |  |  +----|   |   \   |  AD2     |    o-\      /  |___/    |  |
 <-o--|  | Rx o   |    ---o-->o--     \___|  \    /        DEG1|  |
   |  |  +----|   +-------+   |  \     ___    \   |    ___     |  |
   |  |       |               |   \   /   |    \  |   |   \  Line |
   |  +-------+      internal |    \ |    o-------/   o    | LTP 2|
   |                 AD ports |     -o  6 |      \    | 2  o------o->
   |                          |      |    o-------\---o    |   |  |
   |                          o       \___|        |  |___/    |  |
   |                          |                    |       DEG2|  |
   |                          |                    |   ___     |  |
   |                          |                    |  |   \  Line |
   |                          |                    \--o    | LTP 3|
   |                          |                       | 3  o------o->
   |                          o                       o    |   |  |
   |                          |                       |___/    |  |
   |                          |                            DEG3|  |
   |                          +--------------------------------+  |
   +--------------------------------------------------------------+

Figure 29: Protected TTP with Restricted Connectivity between ROADM Add-Drop Ports and ROADM Degree Ports

{
  "roadm-path-impairments": [
    {
      "roadm-path-impairments-id": "1",
      "roadm-add-path":
      "Add path impairments from TTP 1 or TTP 2 to any LTP."
    },
    {
      "roadm-path-impairments-id": "2",
      "roadm-add-path": "Add path impairments from TTP 3 or TTP 4
      to LTP 1 or LTP 3, through AD1."
    },
    {
      "roadm-path-impairments-id": "3",
      "roadm-add-path": "Add path impairments from TTP 3 or TTP 4
      to LTP 1 or LTP 2, through AD2."
    }
  ],
  "tunnel-termination-point": [
    {
      "tunnel-tp-id": "MQ==",
      "protection-type": "otsi-protection",
      "local-link-connectivities": {
        "is-allowed": true,
        "add-path-impairments": 1
      }
    },
    {
      "tunnel-tp-id": "Mg==",
      "local-link-connectivities": {
        "is-allowed": true,
        "add-path-impairments": 1,
        "local-link-connectivity": [
          {
            "link-tp-ref": "LTP-1",
            "additional-ltp": [
              {
                "ltp-ref": "LTP-2",
              },{
                "ltp-ref": "LTP-3"
              }
            ]
          },
          {
            "link-tp-ref": "LTP-2",
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
              },{
                "ltp-ref": "LTP-3"
              }
            ]
          },
          {
            "link-tp-ref": "LTP-3",
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
              },{
                "ltp-ref": "LTP-2"
              }
            ]
          }
        ]
      }
    },
    {
      "tunnel-tp-id": "Mw==",
      "protection-type": "otsi-protection",
      "local-link-connectivities": {
        "is-allowed": false,
        "local-link-connectivity": [
          {
            "link-tp-ref": "LTP-1",
            "is-allowed": true,
            "add-path-impairments": 2,
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
                "add-path-impairments": 3
              },
              {
                "ltp-ref": "LTP-2",
                "add-path-impairments": 3
              }
            ]
          },
          {
            "link-tp-ref": "LTP-3",
            "is-allowed": true,
            "add-path-impairments": 2,
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
                "add-path-impairments": 3
              },
              {
                "ltp-ref": "LTP-2",
                "add-path-impairments": 3
              }
            ]
          }
        ]
      }
    },
    {
      "tunnel-tp-id": "NA==",
      "protection-type": "otsi-protection",
      "local-link-connectivities": {
        "is-allowed": false,
        "local-link-connectivity": [
          {
            "link-tp-ref": "LTP-1",
            "is-allowed": true,
            "add-path-impairments": 2,
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
                "add-path-impairments": 3
              },
              {
                "ltp-ref": "LTP-2",
                "add-path-impairments": 3
              }
            ]
          },
          {
            "link-tp-ref": "LTP-2",
            "is-allowed": true,
            "add-path-impairments": 3,
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
                "add-path-impairments": 2
              },
              {
                "ltp-ref": "LTP-3",
                "add-path-impairments": 2
              }
            ]
          },
          {
            "link-tp-ref": "LTP-3",
            "is-allowed": true,
            "add-path-impairments": 2,
            "additional-ltp": [
              {
                "ltp-ref": "LTP-1",
                "add-path-impairments": 3
              },
              {
                "ltp-ref": "LTP-2",
                "add-path-impairments": 3
              }
            ]
          }
        ]
      }
    }
  ]
}

(2)
JSON example for use case in Section 2.11.1.2 with restricted connectivity:

The JSON example below addresses the optical protection use case where the optical transponder is not part of the WDM-TE-node containing the ROADM function (WDM-TE-Node-2) but is part of a separate WDM-TE-node (WDM-TE-Node-1) containing one or more optical transponders (remote OTs). As described in Section 2.11.1.2, a TE-link interconnects the remote OT with an add-drop port of WDM-TE-Node-2. This is illustrated in Figure 30.

In this use case, the connectivity is reflected in the connectivity-matrix describing the connectivity between the LTPs representing an add-drop port in WDM-TE-Node-2 connected to the transceiver of a remote OT and the LTPs associated with the different ROADM degrees including the optical impairments for the different paths.


  WDM-TE-node 1                   WDM-TE-node 2

               +--------------------------------------------------+
               |  LTP 20                               ___        |
   +-------+   |  +-------+     AD 1  ___             |   \  Line |
   |   TTP1|   |  |    ---o-----     /   |       /----o    | LTP 1|
   |  +----|   |  |   /   |     \   |    o------/     | 1  o------o->
 --o->| Tx o---o->o--o  5 |      \--o    |           -o    |      |
   |  +----|   |  |   \   |         |  4 |          / |___/       |
 <-o--| Rx o   |  |    ---o-\    /--o    |         /         DEG 1|
   |  +----|   |  +-------+  \   |  |    o-       /    ___        |
   |       |   |   Splitter   \  |   \___| \     /    |   \  Line |
   |       |   |  +-------+   |  |          \         o    | LTP 2|
   |   TTP2|   |  |    ---o---|--/           \ /      | 2  o------o->
   |  +----|   |  |   /   |   |       ___     \   /---o    |      |
 --o->| Tx o---o->o--o  5 |    \     /   |   / \ /    |___/       |
   |  +----|   |  |   \   |     \   |    o--/   \           DEG 2 |
 <-o--| Rx o   |  |    ---o--\   \--o    |     / \     ___        |
   |  +----|   |  +-------+   \     |    |    /   \   |   \  Line |
   |       |   |  LTP 30       \----o  6 |   /     \--o    | LTP 3|
   |   TTP3|   |                    |    o--/         | 3  o------o->
   |  +----|   |          /-------->o    |            o    |      |
 --o->| Tx o---o---------/          |    |            |___/       |
   |  +----|   |  LTP 40             \___|                  DEG 3 |
 <-o--| Rx o   |                AD 2                              |
   |  +----|   |                                                  |
   |       |   |                                                  |
   +-------+   |                                                  |
               |                                                  |
               +--------------------------------------------------+

Figure 30: JSON Example for Restricted Connectivity between ROADM Add-Drop Ports and ROADM Degree Ports

{
  "roadm-path-impairments": [

    {
      "roadm-path-impairments-id": "2",
      "roadm-add-path":
      "Add path impairments from LTP 20 or LTP 30 to LTP 1 or LTP 3,
       through AD1."
    },
    {
      "roadm-path-impairments-id": "3",
      "roadm-add-path":
      "Add path impairments from LTP 20 or LTP 30 or LTP 40 to LTP 1
      or LTP 2, through AD2."
    }
  ],

"connectivity-matrices": {
    "connectivity-matrix": [
        {
            "id": 1,
            "from": {
                "tp-ref": "20"
            },
            "to": {
                "tp-ref": "1",
                "additional-ltp": [
                    {
                        "ltp-ref": "1",
                        "roadm-path-impairments": "3"
                    },
                    {
                        "ltp-ref": "2",
                        "roadm-path-impairments": "3"
                    }
                ]
            },
            "is-allowed": true,
            "roadm-path-impairments": "2"
        },
        {
            "id": 2,
            "from": {
                "tp-ref": "20"
            },
            "to": {
                "tp-ref": "3",
                "additional-ltp": [
                    {
                        "ltp-ref": "1",
                        "roadm-path-impairments": "3"
                    },
                    {
                        "ltp-ref": "2",
                        "roadm-path-impairments": "3"
                    }
                ]
            },
            "is-allowed": true,
            "roadm-path-impairments": "2"
        },
        {
            "id": 3,
            "from": {
                "tp-ref": "30"
            },
            "to": {
                "tp-ref": "1",
                "additional-ltp": [
                    {
                        "ltp-ref": "1",
                        "roadm-path-impairments": "2"
                    },
                    {
                        "ltp-ref": "2",
                        "roadm-path-impairments": "2"
                    }
                ]
            },
            "is-allowed": true,
            "roadm-path-impairments": "2"
        },
        {
            "id": 4,
            "from": {
                "tp-ref": "30"
            },
            "to": {
                "tp-ref": "2",
                "additional-ltp": [
                    {
                        "ltp-ref": "1",
                        "roadm-path-impairments": "2"
                    },
                    {
                        "ltp-ref": "3",
                        "roadm-path-impairments": "2"
                    }
                ]
            },
            "is-allowed": true,
            "roadm-path-impairments": "3"
        },
        {
            "id": 5,
            "from": {
                "tp-ref": "30"
            },
            "to": {
                "tp-ref": "3",
                "additional-ltp": [
                    {
                        "ltp-ref": "1",
                        "roadm-path-impairments": "3"
                    },
                    {
                        "ltp-ref": "2",
                        "roadm-path-impairments": "3"
                    }
                ]
            },
            "is-allowed": true,
            "roadm-path-impairments": "2"
        },
        {
            "id": 6,
            "from": {
                "tp-ref": "40"
            },
            "to": {
                "tp-ref": "1"
            },
            "is-allowed": true,
            "roadm-path-impairments": "3"
        },
        {
            "id": 7,
            "from": {
                "tp-ref": "40"
            },
            "to": {
                "tp-ref": "2"
            },
            "is-allowed": true,
            "roadm-path-impairments": "3"
        }
    ]
}


"ietf-network-topology:termination-point": [
    {
        "tp-id": "20",
        "protection-type": "otsi-protection"
    }, {
        "tp-id": "30",
        "protection-type": "otsi-protection"
    }, {
        "tp-id": "1",
        "protection-type": "otsi-protection"
    }, {
        "tp-id": "2",
        "protection-type": "otsi-protection"
    }, {
        "tp-id": "3",
        "protection-type": "otsi-protection"
    }, {
        "tp-id": "4",
        "protection-type": "otsi-protection"
    }
]

Appendix B. Optical Transponders in a Remote Shelf (Remote OTs)

Figure 31 illustrates a configuration where the optical transponders and the ROADM are located in a different WDM-TE-nodes.


      WDM-TE-Node-1                    WDM-TE-Node-2
   +----------------+           +--------------------------+
   |     Remote OTs |           |         ROADM            |
   |   +------------+           |     +------------+       |
   |   |            |           | AD  |            |       |
   |   |       +----|           | LTP |            | Line  |
 --o-->|       | Tx o---------->o---->o            | LTP 1 |
   |   | OT 1  +----|           |     |            o-------o<--->
 <-o---|       | Rx o<----------o<----o            |       |
   |   |       +----|           | AD  |            |       |
   |   |            |           | LTP |            |       |
   |   +------------+           |     |            |       |
   |                |           |     |            | Line  |
   |   +------------+           |     |            | LTP 2 |
   |   |            |           | AD  |            o-------o<--->
   |   |       +----|           | LTPs|            |       |
 --o-->|       | Tx o---------->o---->o            |       |
   |   |       +----|           |     |            |       |
 <-o---|       | Rx o<----------o<----o            |       |
   |   | OT 2  +----|           |     |            | Line  |
 --o-->|       | Tx o---------->o---->o            | LTP 3 |
   |   |       +----|           |     |            o-------o<--->
 <-o---|       | Rx o<----------o<----o            |       |
   |   |       +----|           |     |            |       |
   |   |            |           |     |            |       |
   |   +------------+           |     +------------+       |
   |                |           |                          |
   +----------------+           +--------------------------+

Figure 31: Optical Transponders in a Remote Shelf (Remote OTs)

As described in Section 2.3, the external shelf can be modeled as WDM-TE-Node with termination capability only (not switching) and the add/drop link between a remote optical transceiver and a ROADM add/drop port can be modeled as a WDM TE-link with the same optical impairments as those defined for a WDM TE-link between WDM-TE-nodes (OMS MCG).

If the two WDM-TE-Nodes are reported in different network topology instances, the plug-id attribute, defined in [RFC8795], can be used to discover the adjacency for add/drop TE-links.

It is worth noting that there are no standard protocols for automatic discovery of the adjacency between an external transceiver and a ROADM add/drop port and therefore the information reported in the plug-id can be either statically configured or provided through vendor-specific discovery mechanisms.

Each add/drop TE-link carries a single OTSi between the transceiver and ROADM add/drop port and one or more OTSis in the reverse direction (between the ROADM add/drop and the transceiver).

Depending on control architecture (e.g., when the two WDM-TE-Nodes are reported in different network topology instances by different controllers), the controller reporting the WDM-TE-Node, abstracting the external OT shelf, may be not able to provide the information about the end-to-end MC configuration (i.e.,flexi-n and flexi-m) nor of all the received OTSis, within the end-to-end MC, besides the configured incoming OTSi, since the end-to-end MC configuration depends on how the ROADM network is configured and the remote OT shelf is not aware of that.

In this case only the incoming-otsi and outgoing-otsi can be reported within anend-to-end MC with an unspecified frequency-slot (i.e., without reporting flexi-n and flexi-m configuration of the end-to-end MC).

When an OTSiG has more than one OTSi, its OTSis are carried by different parallel add/drop TE-links. In order to represent the fact that these OTSis are co-routed, the add/drop TE-links are bundled together in a bundled add/drop TE-link. The finest granularity for the bundled add/drop TE-link is the set of all the add/drop TE-links terminating on the same OT.

For example, in Figure 31, it is possible to define two bundled add/drop TE-links, one for OT1 and one for OT2 or just one add/drop TE-link both OTs.

The model for a bundled add/drop TE-link and the relationship with its component TE-links is already defined in the bundled-links container of [RFC8795].

In the general case, the optical impairments and connectivity constraints are reported for each add/drop TE-link and therefore no optical impairments are reported in the bundled add/drop TE-link that is used just to model the co-routing aspects of the OTSis belonging to the same OTSiG.

The per-transceiver Local Link Connectivity (LLC) is used in the WDM-TE-Node which abstracts the remote OT shelf (e.g., WDM-TE-Node-1 in Figure 31), to represent the association between each transceiver and each LTP terminating the add/drop TE-link which models the transceiver port.

The connectivity matrix in the WDM-TE-Node which abstract the edge ROADM (e.g., WDM-TE-Node-2 in Figure 31) references the LTPs terminating the add/drop TE-links which models the ROADM add/drop ports.

B.1. JSON Examples for Optical Transponders in a Remote Shelf (Remote OTs)

[Editor's note: Introductory text TBA here.]

The JSON example below describes ... (TBA)

Line-folding as defined in [RFC8792] has been used for the JSON code example below.


{
  "ietf-network:networks": {
    "network": [
      {
        "network-id": "WDM-Network-1",
        "network-types": {
          "ietf-te-topology:te-topology": {
            "ietf-optical-impairment-topology:optical-impairment-top\
ology": {}
          }
        },
        "ietf-te-topology:te-topology-identifier": {
          "topology-id": "WDM-Network-1"
        },
        "ietf-te-topology:te": {},
        "ietf-optical-impairment-topology:otsi-information": {
          "otsi-group": [
            {
              "otsi-group-id": "Red OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Red OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            }
          ]
        },
        "node": [
          {
            "node-id": "WDM-TE-Node-1",
            "ietf-te-topology:te-node-id": "192.0.2.1",
            "ietf-te-topology:te": {
              "ietf-te-topology:tunnel-termination-point": [
                {
                  "tunnel-tp-id": "AQ==",
                  "ietf-optical-impairment-topology:ttp-transceiver"\
: [
                    {
                      "transponder-ref": 1,
                      "transceiver-ref": 1
                    }
                  ],
                  "local-link-connectivities": {
                    "is-allowed": false,
                    "local-link-connectivity": [
                      {
                        "link-tp-ref": "1",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 1,
                            "ttp-transceiver-ref": 1,
                            "is-allowed": true
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "tunnel-tp-id": "Ag==",
                  "ietf-optical-impairment-topology:ttp-transceiver"\
: [
                    {
                      "transponder-ref": 2,
                      "transceiver-ref": 1
                    },
                    {
                      "transponder-ref": 2,
                      "transceiver-ref": 2
                    }
                  ],
                  "local-link-connectivities": {
                    "is-allowed": false,
                    "local-link-connectivity": [
                      {
                        "link-tp-ref": "2",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 2,
                            "ttp-transceiver-ref": 1,
                            "is-allowed": true
                          }
                        ]
                      },
                      {
                        "link-tp-ref": "3",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 2,
                            "ttp-transceiver-ref": 2,
                            "is-allowed": true
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "1",
                "ietf-te-topology:te-tp-id": 1,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "AQ=="
                }
              },
              {
                "tp-id": "2",
                "ietf-te-topology:te-tp-id": 2,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "Ag=="
                }
              },
              {
                "tp-id": "3",
                "ietf-te-topology:te-tp-id": 3,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "Awo="
                }
              },
              {
                "tp-id": "23",
                "ietf-te-topology:te-tp-id": 23
              }
            ],
            "ietf-optical-impairment-topology:transponders": {
              "transponder": [
                {
                  "transponder-id": 1,
                  "transceiver": [
                    {
                      "transceiver-id": 1,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Red OTSiG (Forward)",
                        "otsi-ref": 1
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Red OTSiG (Reverse)",
                        "otsi-ref": 1
                      }
                    }
                  ]
                },
                {
                  "transponder-id": 2,
                  "transceiver": [
                    {
                      "transceiver-id": 1,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Green OTSiG (Forward)",
                        "otsi-ref": 1
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Green OTSiG (Reverse)",
                        "otsi-ref": 1
                      }
                    },
                    {
                      "transceiver-id": 2,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Green OTSiG (Forward)",
                        "otsi-ref": 2
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Green OTSiG (Reverse)",
                        "otsi-ref": 2
                      }
                    }
                  ]
                }
              ]
            }
          }
        ],
        "ietf-network-topology:link": [
          {
            "link-id": "Add-Drop-Link-1-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "1"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "otsi-group-ref": "Red OTSiG (Forward)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-1-Reverse",
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "1"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "2"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Reverse",
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "2"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                    "media-channel-groups": {
                      "media-channel-group": [
                        {
                          "i": 1,
                          "media-channels": [
                            {
                              "otsi-group-ref": "Green OTSiG (Revers\
e)",
                              "otsi-ref": [
                                {
                                  "otsi-carrier-ref": 1
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "3"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Reverse",
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "3"
            },
            "ietf-te-topology:te": {
              "ietf-te-topology:te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Bundled-Link-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "23"
            },
            "ietf-te-topology:te": {
              "bundled-links": {
                "bundled-link": [
                  {
                    "sequence": 1,
                    "src-tp-ref": "2"
                  },
                  {
                    "sequence": 2,
                    "src-tp-ref": "3"
                  }
                ]
              }
            }
          },
          {
            "link-id": "Add-Drop-Bundled-Link-Reverse",
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "23"
            },
            "ietf-te-topology:te": {
              "bundled-links": {
                "bundled-link": [
                  {
                    "sequence": 1,
                    "des-tp-ref": "2"
                  },
                  {
                    "sequence": 2,
                    "des-tp-ref": "3"
                  }
                ]
              }
            }
          }
        ]
      },
      {
        "network-id": "WDM-Network-2",
        "network-types": {
          "ietf-te-topology:te-topology": {
            "ietf-optical-impairment-topology:optical-impairment-top\
ology": {}
          }
        },
        "ietf-te-topology:te-topology-identifier": {
          "topology-id": "WDM-Network-2"
        },
        "ietf-te-topology:te": {},
        "ietf-optical-impairment-topology:otsi-information": {
          "otsi-group": [
            {
              "otsi-group-id": "Red OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Red OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            }
          ]
        },
        "node": [
          {
            "node-id": "WDM-TE-Node-2",
            "ietf-te-topology:te-node-id": "192.0.2.2",
            "ietf-te-topology:te": {},
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "1",
                "ietf-te-topology:te-tp-id": 1,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "2",
                "ietf-te-topology:te-tp-id": 2,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "3",
                "ietf-te-topology:te-tp-id": 3,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "4",
                "ietf-te-topology:te-tp-id": 4,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "AQ=="
                }
              },
              {
                "tp-id": "5",
                "ietf-te-topology:te-tp-id": 5,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "Ag=="
                }
              },
              {
                "tp-id": "6",
                "ietf-te-topology:te-tp-id": 6,
                "ietf-te-topology:te": {
                  "inter-domain-plug-id": "Awo="
                }
              }
            ]
          }
        ],
        "ietf-network-topology:link": [
          {
            "link-id": "Add-Drop-Link-1-Forward",
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "4"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -10,
                            "otsi-group-ref": "Red OTSiG (Forward)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-1-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "4"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Forward",
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "5"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -20,
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "5"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Forward",
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "6"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -20,
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "6"
            },
            "ietf-te-topology:te": {
              "ietf-te-topology:te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        ]
      },
      {
        "network-id": "WDM-Network-Complete",
        "network-types": {
          "ietf-te-topology:te-topology": {
            "ietf-optical-impairment-topology:optical-impairment-top\
ology": {}
          }
        },
        "ietf-te-topology:te-topology-identifier": {
          "topology-id": "WDM-Network-Complete"
        },
        "ietf-te-topology:te": {},
        "ietf-optical-impairment-topology:otsi-information": {
          "otsi-group": [
            {
              "otsi-group-id": "Red OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Red OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Forward)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            },
            {
              "otsi-group-id": "Green OTSiG (Reverse)",
              "otsi": [
                {
                  "otsi-carrier-id": 1
                },
                {
                  "otsi-carrier-id": 2
                }
              ]
            }
          ]
        },
        "node": [
          {
            "node-id": "WDM-TE-Node-1",
            "ietf-te-topology:te-node-id": "192.0.2.1",
            "ietf-te-topology:te": {
              "ietf-te-topology:tunnel-termination-point": [
                {
                  "tunnel-tp-id": "AQ==",
                  "ietf-optical-impairment-topology:ttp-transceiver"\
: [
                    {
                      "transponder-ref": 1,
                      "transceiver-ref": 1
                    }
                  ],
                  "local-link-connectivities": {
                    "is-allowed": false,
                    "local-link-connectivity": [
                      {
                        "link-tp-ref": "1",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 1,
                            "ttp-transceiver-ref": 1,
                            "is-allowed": true
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "tunnel-tp-id": "Ag==",
                  "ietf-optical-impairment-topology:ttp-transceiver"\
: [
                    {
                      "transponder-ref": 2,
                      "transceiver-ref": 1
                    },
                    {
                      "transponder-ref": 2,
                      "transceiver-ref": 2
                    }
                  ],
                  "local-link-connectivities": {
                    "is-allowed": false,
                    "local-link-connectivity": [
                      {
                        "link-tp-ref": "2",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 2,
                            "ttp-transceiver-ref": 1,
                            "is-allowed": true
                          }
                        ]
                      },
                      {
                        "link-tp-ref": "3",
                        "ietf-optical-impairment-topology:llc-transc\
eiver": [
                          {
                            "ttp-transponder-ref": 2,
                            "ttp-transceiver-ref": 2,
                            "is-allowed": true
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "1",
                "ietf-te-topology:te-tp-id": 1,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "2",
                "ietf-te-topology:te-tp-id": 2,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "3",
                "ietf-te-topology:te-tp-id": 3,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "23",
                "ietf-te-topology:te-tp-id": 23
              }
            ],
            "ietf-optical-impairment-topology:transponders": {
              "transponder": [
                {
                  "transponder-id": 1,
                  "transceiver": [
                    {
                      "transceiver-id": 1,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Red OTSiG (Forward)",
                        "otsi-ref": 1
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Red OTSiG (Reverse)",
                        "otsi-ref": 1
                      }
                    }
                  ]
                },
                {
                  "transponder-id": 2,
                  "transceiver": [
                    {
                      "transceiver-id": 1,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Green OTSiG (Forward)",
                        "otsi-ref": 1
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Green OTSiG (Reverse)",
                        "otsi-ref": 1
                      }
                    },
                    {
                      "transceiver-id": 2,
                      "outgoing-otsi": {
                        "otsi-group-ref": "Green OTSiG (Forward)",
                        "otsi-ref": 2
                      },
                      "incoming-otsi": {
                        "otsi-group-ref": "Green OTSiG (Reverse)",
                        "otsi-ref": 2
                      }
                    }
                  ]
                }
              ]
            }
          },
          {
            "node-id": "WDM-TE-Node-2",
            "ietf-te-topology:te-node-id": "192.0.2.2",
            "ietf-te-topology:te": {},
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "1",
                "ietf-te-topology:te-tp-id": 1,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "2",
                "ietf-te-topology:te-tp-id": 2,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "3",
                "ietf-te-topology:te-tp-id": 3,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "4",
                "ietf-te-topology:te-tp-id": 4,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "5",
                "ietf-te-topology:te-tp-id": 5,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "6",
                "ietf-te-topology:te-tp-id": 6,
                "ietf-te-topology:te": {}
              },
              {
                "tp-id": "56",
                "ietf-te-topology:te-tp-id": 56,
                "ietf-te-topology:te": {}
              }
            ]
          }
        ],
        "ietf-network-topology:link": [
          {
            "link-id": "Add-Drop-Link-1-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "1"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "4"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -10,
                            "otsi-group-ref": "Red OTSiG (Forward)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-1-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "4"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "1"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Forward",
            "source": {
              "source-node": "WDM-TE-Node-1",
              "source-tp": "2"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "5"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -20,
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-2-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "5"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "2"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Forward",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "4"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-2",
              "dest-tp": "6"
            },
            "ietf-te-topology:te": {
              "te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": -20,
                            "otsi-group-ref": "Green OTSiG (Forward)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          {
            "link-id": "Add-Drop-Link-3-Reverse",
            "source": {
              "source-node": "WDM-TE-Node-2",
              "source-tp": "6"
            },
            "destination": {
              "dest-node": "WDM-TE-Node-1",
              "dest-tp": "3"
            },
            "ietf-te-topology:te": {
              "ietf-te-topology:te-link-attributes": {
                "ietf-optical-impairment-topology:OMS-attributes": {
                  "media-channel-groups": {
                    "media-channel-group": [
                      {
                        "i": 1,
                        "media-channels": [
                          {
                            "flexi-n": 10,
                            "otsi-group-ref": "Red OTSiG (Reverse)",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "i": 2,
                        "media-channels": [
                          {
                            "flexi-n": 20,
                            "otsi-group-ref": "Green OTSiG (Reverse)\
",
                            "otsi-ref": [
                              {
                                "otsi-carrier-ref": 1
                              },
                              {
                                "otsi-carrier-ref": 2
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        ]
      }
    ]
  }
}

Contributors

Thanks to all of the contributors.

Aihua Guo
Huawei Technologies
Jonas Martensson
Smartoptics

Additional Authors

Young Lee
Samsung Electronics
Haomian Zheng
Huawei Technologies
Nicola Sambo
Scuola Superiore Sant'Anna
Giovanni Martinelli
Cisco
Jean-Luc Auge
Orange
Julien Meuric
Orange
Victor Lopez
Nokia
Enrico Griseri
Nokia
Gert Grammel
Juniper
Roberto Manzotti
Cisco

Authors' Addresses

Dieter Beller (editor)
Nokia
Esther Le Rouzic
Orange
Sergio Belotti
Nokia
G. Galimberti
Individual
Italo Busi
Huawei Technologies