Managing OpenZR+ and OIF ZR transceivers on Cisco routers using OpenConfig

24 minutes read

Revision History

VersionDateComments
1.010/10/2022Initial Publication


Routed Optical Networking

Routed Optical Networking introduced by Cisco in 2020 introduced a fundamental shift in how IP+Optical networks are built. Collapsing previously disparate network layers and services into a single unified domain, Routed Optical Networking simplifies operations and lowers overall network TCO. More information on Routed Optical Networking can be found at the following locations:

In this blog we will discuss one major component of Routed Optical Networking, the pluggable digital coherent optics, and how they are managed using open models from the OpenConfig consortium. Management includes both provisioning the transceivers as well as monitoring them via telemetry. OpenConfig support is found in IOS-XR 7.7.1 or later across all IOS-XR routers supporting ZR/ZR+ DCO transceivers. As you will see, the optical provisioning is distinct from the IP interface configuration and can be configured independently.

We will focus primarily on constructs such as OpenConfig YANG models and provisioning via NETCONF or gNMI. For users looking for a more UI-driven approach to managing Routed Optical Networking services, the Crosswork Hierarchical Controller application provides a point and click user interface, but still using open models to interface with Cisco routers. More information on the Crosswork family of products can be found at https://www.cisco.com/c/en/us/products/cloud-systems-management/crosswork-network-automation/index.html

Pluggable Digital Coherent Optics

One of the foundations of Routed Optical Networking is the use of small form factor pluggable digital coherent optics. These optics can be used in a wide variety of network applications, reducing CapEx/OpEx cost and reducing complexity vs. using traditional external transponder equipment.

OIF 400ZR and OpenZR+ Standards using QSFP-DD Transceivers

The networking industry saw a point to improve network efficiency by shifting coherent DWDM functions to router pluggables. Technology advancements have shrunk the DCO components into the standard QSFP-DD form factor, meaning no specialized hardware and the ability to use the highest capacity routers available today. ZR/OpenZR+ QSFP-DD optics can be used in the same ports as the highest speed 400G non-DCO transceivers.

Cisco OpenZR+ Transceiver (QDD-400G-ZRP-S)

Cisco OIF 400ZR Transceiver (QDD-400G-ZR-S)

Two industry optical standards have emerged to cover a variety of use cases. The OIF created the 400ZR specification, https://www.oiforum.com/technical-work/hot-topics/400zr-2 as a 400G interopable standard for metro reach coherent optics. The industry saw the benefit of the approach, but wanted to cover longer distances and have flexibility in wavelength rates, so the OpenZR+ MSA was created, https://www.openzrplus.org. The following table outlines the specs of each standard. ZR400 and OpenZR+ transceivers are tunable across the ITU C-Band, 196.1 To 191.3 THz.

The following part numbers are used for Cisco’s ZR400 and OpenZR+ MSA transceivers

StandardPart
400ZRQDD-400G-ZR-S
OpenZR+QDD-400G-ZRP-S

The Cisco datasheet for these transceivers can be found at https://www.cisco.com/c/en/us/products/collateral/interfaces-modules/transceiver-modules/datasheet-c78-744377.html

Cisco Hardware Support for 400G ZR/ZR+ DCO Transceivers

Cisco supports the OpenZR+ and OIF ZR transceivers across all IOS-XR product lines with 400G QSFP-DD ports, including the ASR 9000, NCS 540, NCS 5500, NCS 5700, and Cisco 8000. Please see the Routed Optical Networking Design or the individual product pages below for more information on each platform.

Cisco 8000

https://www.cisco.com/c/en/us/products/collateral/routers/8000-series-routers/datasheet-c78-742571.html

NCS 500

https://www.cisco.com/c/en/us/products/collateral/routers/network-convergence-system-500-series-routers/ncs-540-large-density-router-ds.html

Cisco ASR 9000

https://www.cisco.com/c/en/us/products/collateral/routers/asr-9000-series-aggregation-services-routers/data_sheet_c78-501767.html

NCS 5500 and NCS 5700

https://www.cisco.com/c/en/us/products/collateral/routers/network-convergence-system-5500-series/datasheet-c78-736270.html

https://www.cisco.com/c/en/us/products/collateral/routers/network-convergence-system-5500-series/datasheet-c78-744698.html

Optical Provisioning Parameters

Optical transceivers are responsible for taking information on their electrical “host” interface and translating it into a format suitable for transmission across an analog medium, and vice versa. Thus the name “transceiver”. The aforementioned standards bodies have defined the electrical host interface and optical line interface specifications. The resulting configuration of those internal transceiver interfaces and parameters are driven by user configuration. The following represents the user-configurable attributes for Cisco ZR/ZR+ DCO transceivers.

ParameterUnitsMeaning
Output FrequencyHzFrequency is another method to define the DWDM wavelength being used on the line side of the transceiver
Transmit PowerdBmThe transmit power defines the signal power level. dBm is the power ratio of dB referenced to 1mW using the expression dBm = 10log(mW). As an example 0dBm = 1mW, -3dBm=.50mW, +3dBM=2mW
Line RateGbpsThis is the output trunk rate of the signal, and may be determined by configuration or implicitly by the number of channels assigned
Operational ModeIntegerThe operational mode is an integer representing optical parameters specific to the transceiver. This includes settings such as the line rate, modulation, FEC type, and other vendor specific settings.

The Frequency, Line Rate, and Operational Mode are required components. The Transmit Power is optional, a default power will be used based on the operational mode if none is supplied.

Operational Mode Details

It’s worth expanding on the role of the “Operational Mode” used in provisioning the transceivers. Cisco has defined a set of integer values used provision the QDD-400G-ZRP-S and QDD-400G-ZR-S optics based on standard parameters and Cisco Acacia specific parameters. The following table lists these modes.

PIDOperational ModeLine RateFEC TypeModulationBaud RatePulse Shaping
QDD-400G-ZR-S5003400cFEC16QAM59.84No
QDD-400G-ZRP-S5004400cFEC16QAM59.84No
QDD-400G-ZRP-S5005400oFEC16QAM60.14Yes
QDD-400G-ZRP-S5006400oFEC16QAM60.14No
QDD-400G-ZRP-S5007300oFEC8QAM60.14Yes
QDD-400G-ZRP-S5008300oFEC8QAM60.14No
QDD-400G-ZRP-S5009200oFECQPSK60.14Yes
QDD-400G-ZRP-S5010200oFECQPSK60.14No
QDD-400G-ZRP-S5011200oFEC8QAM40.10Yes
QDD-400G-ZRP-S5012200oFEC16QAM30.08Yes
QDD-400G-ZRP-S5013100oFECQPSK30.08No

OpenConfig

Taken from https://www.openconfig.net

OpenConfig defines and implements a common, vendor-independent software layer for managing network devices. OpenConfig operates as an open source project with contributions from network operators, equipment vendors, and the wider community. OpenConfig is led by an Operator Working Group consisting of network operators from multiple segments of the industry.

OpenConfig is advancing the paradigm of an abstract set of YANG models used to perform device configuration and monitoring regardless of vendor. Cisco has worked with the OpenConfig consortium since its inception to implement these open community models across IOS-XR, IOS-XE, and NX-OS devices. In IOS-XR 7.7.1 more than 100 OpenConfig models and sub-models are implemented covering a wide variety of network configuration including device management, routing protocols, and optical transceiver configuration. We will focus on the models specific to configuring the ZR/ZR+ DCO transceivers.

The official repository for all OpenConfig models can be found at https://github.com/openconfig/public/

OpenConfig Models for DCO provisioning

This list is only the parent models utilized, and does include imported models.

ModelUse
openconfig-terminal-devicePrimary model used to configure input interface to output line port structure and add optical parameters to oc-platform
openconfig-platformUsed to provision optical channel parameters and for monitoring optical channel state
openconfig-platform-transceiverUsed for monitoring physical channel state data such as RX/TX power, and output frequency

Note on Operational Mode Discovery

There is new work in OpenConfig to enable the discovery of the operational modes dynamically from the device/transceiver. As of this writing it’s still a relatively new concept and has not been implemented in IOS-XR. This is implemented through the openconfig-terminal-device-properties model. Once implemented a management application can learn the supported optical parameters and constraints to be used in path calculation and provisioning.

OpenConfig Platform Component

The optical parameters used to provision the parent optical-channel and subsequent physical channel are applied at the component level of the openconfig-platform model. The OpticalChannel component type is a logical component with a 1:1 correlation to a physical port. In Cisco routers The OpticalChannel component is populated when a transceiver capable of supporting it is inserted.

The OpticalChannel will always be represented as [Rack]/[Slot]-OpticalChannel[Rack][Slot][Instance][Port]. The rack component will always be 0. As an example on the 8201-32FH the OpticalChannel for port 20 is represented as 0/0-OpticalChannel0/0/0/20. On the NCS-57C3-MOD router with a QSFP-DD MPA in MPA slot 3 and DCO transceiver in Port 3 the OpticalChannel is 0/0-OpticalChannel0/0/3/2. On a Cisco 9904 modular router with a A9K-8HG-FLEX-TR line card in slot 1 and DCO transceiver in port 0, the OpticalChannel is 0/1-OpticalChannel-0/1/0/0.

Component Optical Provisioning Parameters

|Parameter|Units| |——–|—-| |frequency|Mhz | |target-output-power| dBm to two decimal places expressed in increments of .01dBm (+1dBM=100) | |operational-mode|Integer|

OpticalChannel Component Example

QDD-400G-ZRP-S in port 0/0/0/10 on Cisco 8201

<components xmlns="http://openconfig.net/yang/platform">
    <component>
        <name>0/0-OpticalChannel0/0/0/10</name>
        <config>
            <name>0/0-OpticalChannel0/0/0/10</name>
        </config>
        <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
        <config>
            <target-output-power>-10.00</target-output-power>
            <frequency>196100000</frequency>
            <operational-mode>5005</operational-mode>
        </config>
        </optical-channel> 
    </component>
</components>

Openconfig Terminal Device

In the context of optical device provisioning, one OpenConfig model used is the Terminal Device model. The original intent of the model was to provision external optical transponders, and has been implemented by Cisco for use with the Cisco NCS 1004 muxponder. The model has been recently enhanced to cover the router pluggable DCO use cases where the “clients” are not physical external facing ports, but internal to the host router and always associated with a single external line facing interface. The Terminal Device model augments the Platform model to add the additional optical provisioning configuration parameters to the OpticalChannel component type.

Logical Channel Configuration

The logical channel has several configuration components, which will be the same across all similar configurations.

Each logical-channel created must be assigned an integer value. It is up to the user to determine the best overall values to use, but the values should not overlap between configuration on two different ports.

Traditional Muxponder Use Case

A traditional muxponder maps client physical interfaces to framed output timeslots, which can then be further aggregated or mapped to a physical output channel on the DWDM line side. There is no connection between the client port and line port until the mapping is created. The Terminal Device model follows this structure by using a hierarchical structure of channels from client to eventually output line port. Physical client channels are mapped to intermediate logical channels, which are ultimately mapped to a physical line output channel. The model is flexible based on the multiplexing/aggregation required.

The example below shows the mapping for a 2x100G muxponder application where the two client ports each map to a 100G logical channel, those map to a 200G logical channel, and ultimately to a 200G line port associated with the output optical channel. Note the numbers assigned to the logical channels are arbitrary integers.

Pluggable in Router Use Case

In the case where a pluggable coherent optic is inserted into a router, the hierarchical model can be simplified. In the traditional muxponder use case above, there is a physical client transceiver with its own properties which must be mapped into an intermediate logical channel. In the case of a router pluggable, there is no physical client component, only the logical components associated with the host side of the DCO transceiver. In Cisco routers, it is represented as one more Ethernet interfaces depending on the configuration.

Looking at a picture of the two optics is helpful in showing how the hierarchical structure is configured for the DCO optics.

The example below shows a similar 200G application, but instead of two client physical ports, there are two HundredGigE interfaces created which are implicitly connected to the line port since they are integrated into the same transceiver. This is a fundamental difference from the muxponder use case where there is no implicit mapping between client and output port. The host side Ethernet interfaces of the DCO cannot be mapped to another line port.

Note this example is only possible with the OpenZR+ transceiver since it supports line rates of 100G, 200G, 300G, and 400G where the OIF 400ZR only supports 400G.

OpenConfig Provisioning Examples

The following examples are used to illustrate the complete provisioning payloads used. The payloads are given in XML for use with NETCONF, supported by all IOS-XR routers. We will go through two examples in detail and then the rest for the standard modes will provided in the appendix.

Standard OIF 400G ZR Example

OIF 400ZR transceivers, Cisco PID QDD-400G-ZR-S, can be configured in either 1x400G or 4x100G mode. In this example we will show the 1x400G mode, which is the most common configuration. The details of the configuration are:

Router TypePort UsedOperational ModeFrequencyTX Power
8201-32FH0/0/0/205003194300000-100

Note the 5003 operational mode code which can be expanded as:

PIDRateFECModulationBaud RatePulse Shaping
QDD-400G-ZR-S400GcFEC16QAM60.14No
<config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>100</index>
                    <config>
                        <index>100</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_400G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_400GE</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>400</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>200</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>200</index>
                    <config>
                        <index>200</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>400</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <target-output-power>-100</target-output-power>
                        <operational-mode>5003</operational-mode>
                        <frequency>194300000</frequency>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

Let’s examine some specific portions of the config in more detail.

              <logical-channels>
                <channel>
                    <index>100</index>
                    <config>
                        <index>100</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_400G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_400GE</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>

Here we create the first logical channel, associated with the host Ethernet interface, FourHundredGigE0/0/0/20. Since our application has a single 400G interface, the following is configured. The types following the idx: YANG component are defined in openconfig-transport-types.yang.

User-Defined IndexTributary Rate ClassTributary ProtocolChannel Type
100400G400GEETHERNET

Next we must map this logical-channel to either a parent logical-channel or output OpticalChannel. Cisco uses a specific “CoherentDSP” interface to represent the framing layer of the DCO transceiver, so there is a parent logical channel representing that layer of the connection. In this case I have a single 400G child interface, so all 400G is mapped to the parent logical channel.

<logical-channel-assignments>
    <assignment>
        <index>1</index>
        <config>
            <index>1</index>
            <allocation>400</allocation>
            <assignment-type>LOGICAL_CHANNEL</assignment-type>
            <description>ETH to Coherent assignment</description>
            <logical-channel>200</logical-channel>
        </config>
    </assignment>
</logical-channel-assignments>
</channel>

Next we must define the parent logical-channel associated with the internal interface CoherentDSP0/0/0/20, and map that to the output OpticalChannel associated with the physical port. The rate is configured as 400 to represent 400G.

<channel>
    <index>200</index>
    <config>
        <index>200</index>
        <admin-state>ENABLED</admin-state>
        <description>Coherent Logical Channel</description>
        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
    </config>
    <logical-channel-assignments>
        <assignment>
            <index>1</index>
            <config>
                <index>1</index>
                <allocation>400</allocation>
                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                <description>Coherent to optical assignment</description>
                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
            </config>
        </assignment>
    </logical-channel-assignments>
</channel>

We will use the PROT_OTN encapsulation type for the channel, even though it’s not technically a traditional G.709 OTN frame.

User-Defined IndexChannel Type
200PROT_OTN

This completes the configuration of the mappings between logical Ethernet and physical output port. Now we must configure the optical parameters using the openconfig-platform model.

<components xmlns="http://openconfig.net/yang/platform">
    <component>
        <name>0/0-OpticalChannel0/0/0/20</name>
        <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
            <config>
                <target-output-power>-100</target-output-power>
                <operational-mode>5003</operational-mode>
                <frequency>194300000</frequency>
            </config>
        </optical-channel>
    </component>
</components>

As you can see the configuration is relatively straightforward, applying the target-output-power, operational-mode, and frequency configuration.

300G Line Rate Configuration

When we configure ZR+ optics in a 300G line rate configuration, we must map individual 100G channels and Ethernet interfaces to a parent 300G container. There is no 300G Ethernet interface type defined, and based on how modern router NPUs are designed they are not typically well suited for creating intermediate containers of arbitrary size. The same is true of the 200G line rate as well.

Parameters of configuration are:

Router TypePort UsedOperational ModeFrequencyTX Power
8201-32FH0/0/0/205007195200000Default

Note the 5007 operational mode code which can be expanded as:

PIDRateFECModulationBaud RatePulse Shaping
QDD-400G-ZRP-S300GoFEC8QAM60.14Yes

The full XML payload is:

<config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>100</index>
                    <config>
                        <index>200</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>200</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>101</index>
                    <config>
                        <index>101</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>200</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>102</index>
                    <config>
                        <index>102</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>200</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>200</index>
                    <config>
                        <index>200</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>300</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <operational-mode>5007</operational-mode>
                        <frequency>195200000</frequency>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

First we will inspect the channel configuration for the child logical channel associated with the router Ethernet interface HundredGigE0/0/0/20/0. Inspecting the first one we see the following:

<channel>
    <index>201</index>
    <config>
        <index>201</index>
        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
        <admin-state>ENABLED</admin-state>
        <description>ETH Logical Channel</description>
        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
    </config>
    <logical-channel-assignments>
        <assignment>
            <index>1</index>
            <config>
                <index>1</index>
                <allocation>100</allocation>
                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                <description>ETH to Coherent assignment</description>
                <logical-channel>100</logical-channel>
            </config>
        </assignment>
    </logical-channel-assignments>
</channel>

Here are the attributes used for the logical channel configuration:

User-Defined IndexTributary Rate ClassTributary ProtocolChannel Type 
 100100G100G_MLGETHERNET
 101100G100G_MLGETHERNET
 102100G100G_MLGETHERNET

Note the Tributary Protocol type is now 100G_MLG. MLG stands for Multi-Link Group meaning this logical-channel is part of a larger MLG. The logical channel is still mapped to the upstream CoherentDSP0/0/0/20 logical-channel representing the channel responsible for multiplexing the child signals into a single output frame. Details on how this is done in OpenZR+ can be found in the OpenZR+ specifications at https://openzrplus.org. When IOS-XR receives the payload it will use the structured channel assignment information to properly allocate the child Ethernet interfaces.

The second logical channel associated with HundredGigE0/0/0/20/1 is similar with the only difference being the index of 101 instead of 100.

<channel>
    <index>202</index>
    <config>
        <index>202</index>
        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
        <admin-state>ENABLED</admin-state>
        <description>ETH Logical Channel</description>
        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
    </config>
    <logical-channel-assignments>
        <assignment>
            <index>1</index>
            <config>
                <index>1</index>
                <allocation>100</allocation>
                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                <description>ETH to Coherent assignment</description>
                <logical-channel>100</logical-channel>
            </config>
        </assignment>
    </logical-channel-assignments>
</channel>

The Coherent DSP level logical-channel configuration is similar to the first example, except the allocation is now configured as 300 instead of 400 to reflect the 300G line rate.

<channel>
    <index>100</index>
    <config>
        <index>100</index>
        <admin-state>ENABLED</admin-state>
        <description>Coherent Logical Channel</description>
        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
    </config>
    <logical-channel-assignments>
        <assignment>
            <index>1</index>
            <config>
                <index>1</index>
                <allocation>300</allocation>
                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                <description>Coherent to optical assignment</description>
                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
            </config>
        </assignment>
    </logical-channel-assignments>
</channel>

The OpticalChannel configuration is also similar with the exception the target-output-power setting has been omitted. In this case the device default power of -1000 (-10dBM) will be used.

<components xmlns="http://openconfig.net/yang/platform">
    <component>
        <name>0/0-OpticalChannel0/0/0/20</name>
        <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
            <config>
                <operational-mode>5007</operational-mode>
                <frequency>195200000</frequency>
            </config>
        </optical-channel>
    </component>
</components>

OpenConfig Monitoring Examples

The optics may also be monitored using the same OpenConfig models used for provisioning, as in OpenConfig models both config and state have leafs in the same model. We will look at two methods for retrieving operational state data, using a NETCONF GET and using GNMi which can be used in different ways to retrieve operational state data.

Using NETCONF

Optical Channel Information

Request from openconfig-platform for OpticalChannel 0/0-OpticalChannel0/0/0/8 associated with port 0/0/0/8.

<get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter>
    <components xmlns="http://openconfig.net/yang/platform">
      <component>
        <name/>
        <name>0/0-OpticalChannel0/0/0/8</name>
      </component>
    </components>
  </filter>
</get>

Response

<component>
    <name>0/0-OpticalChannel0/0/0/1</name>
    <config>
     <name>0/0-OpticalChannel0/0/0/1</name>
    </config>
    <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
     <config>
      <frequency>1600</frequency>
      <target-output-power>0.00</target-output-power>
     </config>
     <state>
      <target-output-power>0.00</target-output-power>
     </state>
     <extended xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-openconfig-terminal-device-ext">
      <state>
       <optics-cd-low-threshold>0</optics-cd-low-threshold>
       <optics-cd-high-threshold>0</optics-cd-high-threshold>
      </state>
     </extended>
    </optical-channel>
   </component>
   <component>
    <name>0/0-OpticalChannel0/0/0/8</name>
    <config>
     <name>0/0-OpticalChannel0/0/0/8</name>
    </config>
    <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
     <config>
      <target-output-power>-115</target-output-power>
      <frequency>193700000</frequency>
      <operational-mode>5005</operational-mode>
     </config>
     <state>
      <target-output-power>-10.64</target-output-power>
      <frequency>193700000</frequency>
      <chromatic-dispersion>
       <instant>-2</instant>
       <interval>30000000000</interval>
       <min>-4</min>
       <avg>-2</avg>
       <max>0</max>
       <min-time>1664642812995785263</min-time>
       <max-time>1664642792995781327</max-time>
      </chromatic-dispersion>
      <second-order-polarization-mode-dispersion>
       <instant>37.00</instant>
       <interval>30000000000</interval>
       <min>35.00</min>
       <avg>39.00</avg>
       <max>42.00</max>
       <min-time>1664642817995790775</min-time>
       <max-time>1664642802995783064</max-time>
      </second-order-polarization-mode-dispersion>
      <polarization-dependent-loss>
       <instant>1.10</instant>
       <interval>30000000000</interval>
       <min>1.10</min>
       <avg>1.12</avg>
       <max>1.20</max>
       <min-time>1664642790996011456</min-time>
       <max-time>1664642812995785263</max-time>
      </polarization-dependent-loss>
      <operational-mode>5005</operational-mode>
     </state>
     <extended xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-openconfig-terminal-device-ext">
      <state>
       <optics-cd-min>-13000</optics-cd-min>
       <optics-cd-max>13000</optics-cd-max>
       <optics-cd-low-threshold>-160000</optics-cd-low-threshold>
       <optics-cd-high-threshold>160000</optics-cd-high-threshold>
      </state>
     </extended>
    </optical-channel>
   </component>

Physical Channel Information

Additional data from physical channel located as part of the openconfig-platform transceiver data. This is associated with the physical optics port referenced by 0/0-Optics0/0/0/8. ZR/ZR+ optics will always have a single physical channel.

Request

  <get xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <filter>
    <components xmlns="http://openconfig.net/yang/platform">
      <component>
        <name/>
        <name>0/0-Optics0/0/0/8</name>
      </component>
    </components>
  </filter>
</get>

Response

  <component>
    <name>0/0-Optics0/0/0/8</name>
    <transceiver xmlns="http://openconfig.net/yang/platform/transceiver">
     <physical-channels>
      <channel>
       <index>1</index>
       <config>
        <index>1</index>
       </config>
       <state>
        <index>1</index>
        <laser-bias-current>
         <instant>65.67</instant>
         <interval>30000000000</interval>
         <min>0.07</min>
         <avg>0.07</avg>
         <max>0.07</max>
         <min-time>1664642790996011456</min-time>
         <max-time>1664642790996011456</max-time>
        </laser-bias-current>
        <output-power>
         <instant>-10.64</instant>
         <interval>30000000000</interval>
         <min>-10.76</min>
         <avg>-10.74</avg>
         <max>-10.69</max>
         <min-time>1664642790996011456</min-time>
         <max-time>1664642817995790775</max-time>
        </output-power>
        <input-power>
         <instant>-6.25</instant>
         <interval>30000000000</interval>
         <min>-6.34</min>
         <avg>-6.27</avg>
         <max>-6.21</max>
         <min-time>1664642812995785263</min-time>
         <max-time>1664642790996011456</max-time>
        </input-power>
        <output-frequency>193700000</output-frequency>
       </state>
      </channel>
     </physical-channels>
     <state>
      <present>PRESENT</present>
      <form-factor xmlns:idx="http://openconfig.net/yang/transport-types">idx:OTHER</form-factor>
      <date-code>2021-01-09T00:00:00Z+00:00</date-code>
      <vendor-rev>01</vendor-rev>
      <serial-no>ACA2501003X</serial-no>
      <vendor-part>DP04QSDD-E30-19E</vendor-part>
      <vendor>CISCO-ACACIA</vendor>
      <connector-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:LC_CONNECTOR</connector-type>
      <otn-compliance-code xmlns:idx="http://openconfig.net/yang/transport-types">idx:OTN_UNDEFINED</otn-compliance-code>
      <sonet-sdh-compliance-code xmlns:idx="http://openconfig.net/yang/transport-types">idx:SONET_UNDEFINED</sonet-sdh-compliance-code>
      <fault-condition>false</fault-condition>
     </state>
    </transceiver>
   </component>

Using gNMI

gNMI represents a modern method to manage configuration as well as retrieve state data. gNMI data can be retrieved using different methods including a single GET request or through a subscription. The subscription type can be of types ONCE, STREAM, or POLL. The subsequent mode of the stream can be be SAMPLE, ON_CHANGE, or TARGET_DEFINED. The subscription type and mode commonly used for continuous monitoring is STREAM and SAMPLE. SAMPLE also includes a period value specifying the interval at which the device sends data. Note since we are using the same models, the data will be identical to the NETCONF example.

We will utilize the gNMIc utility found at https://gnmic.kmrd.dev/ for gNMI examples.

gNMI GET for OpticalChannel Data

Request

gnmic -a 172.29.11.20:57733 -u admin -p password --insecure --timeout 1m --encoding JSON_IETF get --path 'openconfig-platform:components/component[name='0/0-OpticalChannel0/0/0/8']'

Response

[
  {
    "source": "172.29.11.20:57733",
    "timestamp": 1664644343717885105,
    "time": "2022-10-01T13:12:23.717885105-04:00",
    "updates": [
      {
        "Path": "openconfig-platform:components/component[name=0/0-OpticalChannel0/0/0/8]",
        "values": {
          "components/component": {
            "config": {
              "name": "0/0-OpticalChannel0/0/0/8"
            },
            "openconfig-terminal-device:optical-channel": {
              "Cisco-IOS-XR-openconfig-terminal-device-ext:extended": {
                "state": {
                  "optics-cd-high-threshold": 160000,
                  "optics-cd-low-threshold": -160000,
                  "optics-cd-max": 13000,
                  "optics-cd-min": -13000
                }
              },
              "config": {
                "frequency": 193700000,
                "operational-mode": 5005,
                "target-output-power": "-115"
              },
              "state": {
                "chromatic-dispersion": {
                  "avg": "-1",
                  "instant": "-2",
                  "interval": "30000000000",
                  "max": "0",
                  "max-time": "1664644292995782101",
                  "min": "-2",
                  "min-time": "1664644307995794039"
                },
                "frequency": 193700000,
                "operational-mode": 5005,
                "polarization-dependent-loss": {
                  "avg": "1.09",
                  "instant": "1.10",
                  "interval": "30000000000",
                  "max": "1.10",
                  "max-time": "1664644290995999741",
                  "min": "1.00",
                  "min-time": "1664644317995786022"
                },
                "second-order-polarization-mode-dispersion": {
                  "avg": "42.37",
                  "instant": "51.00",
                  "interval": "30000000000",
                  "max": "52.00",
                  "max-time": "1664644297995784225",
                  "min": "39.00",
                  "min-time": "1664644307995794039"
                },
                "target-output-power": "-10.75"
              }
            }
          }
        }
      }
    ]
  }
]

gNMI Subscription for OpticalChannel Data

gnmic -a 172.29.11.20:57733 -u cisco -p cisco --insecure --timeout 1h --encoding JSON_IETF subscribe --path 'openconfig-platform:components/component[name='0/0-OpticalChannel0/0/0/8']' --mode stream --stream-mode sample --sample-interval 30s
[
  {
    "source": "172.29.11.20:57733",
    "subscription-name": "default-1664645644",
    "timestamp": 1664645651219000000,
    "time": "2022-10-01T13:34:11.219-04:00",
    "prefix": "openconfig-platform:",
    "updates": [
      {
        "Path": "openconfig-platform:components/component[name=0/0-OpticalChannel0/0/0/8]",
        "values": {
          "components/component": {
            "config": {
              "name": "0/0-OpticalChannel0/0/0/8"
            },
            "openconfig-terminal-device:optical-channel": {
              "Cisco-IOS-XR-openconfig-terminal-device-ext:extended": {
                "state": {
                  "optics-cd-high-threshold": 160000,
                  "optics-cd-low-threshold": -160000,
                  "optics-cd-max": 13000,
                  "optics-cd-min": -13000
                }
              },
              "config": {
                "frequency": 193700000,
                "operational-mode": 5005,
                "target-output-power": "-115"
              },
              "state": {
                "chromatic-dispersion": {
                  "avg": "-1",
                  "instant": "-2",
                  "interval": "30000000000",
                  "max": "0",
                  "max-time": "1664644292995782101",
                  "min": "-2",
                  "min-time": "1664644307995794039"
                },
                "frequency": 193700000,
                "operational-mode": 5005,
                "polarization-dependent-loss": {
                  "avg": "1.09",
                  "instant": "1.10",
                  "interval": "30000000000",
                  "max": "1.10",
                  "max-time": "1664644290995999741",
                  "min": "1.00",
                  "min-time": "1664644317995786022"
                },
                "second-order-polarization-mode-dispersion": {
                  "avg": "42.37",
                  "instant": "51.00",
                  "interval": "30000000000",
                  "max": "52.00",
                  "max-time": "1664644297995784225",
                  "min": "39.00",
                  "min-time": "1664644307995794039"
                },
                "target-output-power": "-10.75"
              }
            }
          }
        }
      }
    ]
  }
]

Appendix

Example XML NETCONF config for other ZR+ configuration modes

ZR+ 1x400G 16QAM

<config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>30001</index>
                    <config>
                        <index>30001</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_400G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_400GE</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>400</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30000</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30000</index>
                    <config>
                        <index>30000</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>400</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <target-output-power>-115</target-output-power>
                        <operational-mode>5005</operational-mode>
                        <frequency>194300000</frequency>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

ZR+ 1x100G QPSK

 <config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>30001</index>
                    <config>
                        <index>30001</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30000</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30000</index>
                    <config>
                        <index>30000</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <target-output-power>-115</target-output-power>
                        <operational-mode>5013</operational-mode>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

ZR+ 2x100G QPSK

<config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>30012</index>
                    <config>
                        <index>30012</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30010</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30013</index>
                    <config>
                        <index>30013</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30010</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30010</index>
                    <config>
                        <index>30010</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>200</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <target-output-power>-100</target-output-power>
                        <operational-mode>5009</operational-mode>
                        <frequency>191300000</frequency>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

ZR+ 4x100G 16QAM

This mode does not have widespread applicability in routing applications but is included for completeness.

<config>
        <terminal-device xmlns="http://openconfig.net/yang/terminal-device">
            <logical-channels>
                <channel>
                    <index>30009</index>
                    <config>
                        <index>30009</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30013</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30010</index>
                    <config>
                        <index>30010</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30013</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30011</index>
                    <config>
                        <index>30011</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30013</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30012</index>
                    <config>
                        <index>30012</index>
                        <rate-class xmlns:idx="http://openconfig.net/yang/transport-types">idx:TRIB_RATE_100G</rate-class>
                        <admin-state>ENABLED</admin-state>
                        <description>ETH Logical Channel</description>
                        <trib-protocol xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_100G_MLG</trib-protocol>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_ETHERNET</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>100</allocation>
                                <assignment-type>LOGICAL_CHANNEL</assignment-type>
                                <description>ETH to Coherent assignment</description>
                                <logical-channel>30013</logical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
                <channel>
                    <index>30013</index>
                    <config>
                        <index>30013</index>
                        <admin-state>ENABLED</admin-state>
                        <description>Coherent Logical Channel</description>
                        <logical-channel-type xmlns:idx="http://openconfig.net/yang/transport-types">idx:PROT_OTN</logical-channel-type>
                    </config>
                    <logical-channel-assignments>
                        <assignment>
                            <index>1</index>
                            <config>
                                <index>1</index>
                                <allocation>400</allocation>
                                <assignment-type>OPTICAL_CHANNEL</assignment-type>
                                <description>Coherent to optical assignment</description>
                                <optical-channel>0/0-OpticalChannel0/0/0/20</optical-channel>
                            </config>
                        </assignment>
                    </logical-channel-assignments>
                </channel>
            </logical-channels>
        </terminal-device>
        <components xmlns="http://openconfig.net/yang/platform">
            <component>
                <name>0/0-OpticalChannel0/0/0/20</name>
                <optical-channel xmlns="http://openconfig.net/yang/terminal-device">
                    <config>
                        <target-output-power>-115</target-output-power>
                        <operational-mode>5005</operational-mode>
                        <frequency>191300000</frequency>
                    </config>
                </optical-channel>
            </component>
        </components>
    </config>

Verification of OpenConfig in XR CLI

The IOS-XR CLI does contain configuration commands to either configure or verify OpenConfig configuration. The example below is for a 300G line rate application.

terminal-device
 logical-channel 30000
  admin-state enable
  description Coherent Logical Channel
  logical-channel-type Otn
  assignment-id 1
   allocation 300
   assignment-type optical
   description Coherent to optical assignment
   assigned-optical-channel 0_0-OpticalChannel0_0_0_8
  !
 !
 logical-channel 30001
  rate-class 100G
  admin-state enable
  description ETH Logical Channel
  trib-protocol 400GE
  logical-channel-type Ethernet
  assignment-id 1
   allocation 400
   assignment-type logical
   description ETH to Coherent assignment
   assigned-logical-channel 30000
  !
 !
 logical-channel 30002
  rate-class 100G
  admin-state enable
  description ETH Logical Channel
  trib-protocol 100G-MLG
  logical-channel-type Ethernet
  assignment-id 1
   allocation 100
   assignment-type logical
   description ETH to Coherent assignment
   assigned-logical-channel 30000
  !
 !
 logical-channel 30003
  rate-class 100G
  admin-state enable
  description ETH Logical Channel
  trib-protocol 100G-MLG
  logical-channel-type Ethernet
  assignment-id 1
   allocation 100
   assignment-type logical
   description ETH to Coherent assignment
   assigned-logical-channel 30000
  !
 !
 optical-channel 0_0-OpticalChannel0_0_0_8
  power -115
  frequency 194300000
  line-port Optics0/0/0/8
  operational-mode 5007
 !
!

IOS-XR CLI Operational Data

The main commands used to monitor optical information for the ZR/ZR+ optics is the show controller optics and show controller coherentdsp commands.

Example for QDD-400G-ZR-S

RP/0/RP0/CPU0:ron-8201-1#show controllers optics 0/0/0/20
Thu Oct  6 14:31:25.413 PDT

 Controller State: Down

 Transport Admin State: In Service

 Laser State: On

 LED State: Yellow

 FEC State: FEC ENABLED

 Optics Status

         Optics Type:  QSFPDD 400G ZR
         DWDM carrier Info: C BAND, MSA ITU Channel=61, Frequency=193.10THz,
         Wavelength=1552.524nm

         Alarm Status:
         -------------
         Detected Alarms: None


         LOS/LOL/Fault Status:

         Alarm Statistics:

         -------------
         HIGH-RX-PWR = 0            LOW-RX-PWR = 0
         HIGH-TX-PWR = 0            LOW-TX-PWR = 5
         HIGH-LBC = 0               HIGH-DGD = 0
         OOR-CD = 0                 OSNR = 9
         WVL-OOL = 0                MEA  = 0
         IMPROPER-REM = 0
         TX-POWER-PROV-MISMATCH = 0
         Laser Bias Current = 52.5 mA
         Actual TX Power = -10.06 dBm
         RX Power = -40.00 dBm
         RX Signal Power = -40.00 dBm
         Frequency Offset = 0 MHz
         Laser Temperature = 40.40 Celsius
         Laser Age = 0 %
         DAC Rate = 1x1

         Performance Monitoring: Enable

         THRESHOLD VALUES
         ----------------

         Parameter                 High Alarm  Low Alarm  High Warning  Low Warning
         ------------------------  ----------  ---------  ------------  -----------
         Rx Power Threshold(dBm)         13.0      -23.0          10.0        -21.0
         Rx Power Threshold(mW)          19.9        0.0          10.0          0.0
         Tx Power Threshold(dBm)          0.0      -18.0          -2.0        -16.0
         Tx Power Threshold(mW)           1.0        0.0           0.6          0.0
         LBC Threshold(mA)               0.00       0.00          0.00         0.00
         Temp. Threshold(celsius)       80.00      -5.00         75.00        15.00
         Voltage Threshold(volt)         3.46       3.13          3.43         3.16

         LBC High Threshold = 98 %
         Configured Tx Power = -10.00 dBm
         Configured Tx Power(mW) = 0.10 mW
         Configured CD High Threshold = 160000 ps/nm
         Configured CD lower Threshold = -160000 ps/nm
         Configured OSNR lower Threshold = 9.00 dB
         Configured DGD Higher Threshold = 80.00 ps
         Baud Rate =  59.8437500000 GBd
         Modulation Type: 16QAM
         Chromatic Dispersion 0 ps/nm
         Configured CD-MIN -2400 ps/nm  CD-MAX 2400 ps/nm
         Second Order Polarization Mode Dispersion = 0.00 ps^2
         Optical Signal to Noise Ratio = 0.00 dB
         SNR = 0.00 dB
         Polarization Dependent Loss = 0.00 dB
         Polarization Change Rate = 0.00 rad/s
         Differential Group Delay = 0.00 ps

         Temperature = 42.00 Celsius
         Voltage = 3.34 V

 Transceiver Vendor Details

         Form Factor            : QSFP-DD
         Optics type            : QSFPDD 400G ZR
         Name                   : CISCO-ACACIA
         OUI Number             : 7c.b2.5c
         Part Number            : DP04QSDD-E20-19E
         Rev Number             : 10
         Serial Number          : ACA245100ET
         PID                    : QDD-400G-ZR-S
         VID                    : ES03
         Firmware Version       : Major.Minor.Build
                 Active         : 61.20.13
                 Inactive       : 61.10.12
         Date Code(yy/mm/dd)    : 20/12/28
         Fiber Connector Type: LC
         Otn Application Code: Undefined
         Sonet Application Code: Undefined
RP/0/RP0/CPU0:ron-8201-1#show controllers coherentDSP 0/0/0/10
Thu Oct  6 14:31:55.222 PDT

Port                                            : CoherentDSP 0/0/0/10
Controller State                                : Down
Inherited Secondary State                       : Normal
Configured Secondary State                      : Normal
Derived State                                   : In Service
Loopback mode                                   : None
BER Thresholds                                  : SF = 1.0E-5  SD = 1.0E-7
Performance Monitoring                          : Enable
Bandwidth                                       : 400.0Gb/s

Alarm Information:
LOS = 1 LOF = 0 LOM = 0
OOF = 0 OOM = 0 AIS = 0
IAE = 0 BIAE = 0        SF_BER = 0
SD_BER = 0      BDI = 0 TIM = 0
FECMISMATCH = 0 FEC-UNC = 0     FLEXO_GIDM = 0
FLEXO-MM = 0    FLEXO-LOM = 0   FLEXO-RDI = 0
FLEXO-LOF = 0
Detected Alarms                                 : LOS

Bit Error Rate Information
PREFEC  BER                                     : 5.0E-01
POSTFEC BER                                     : 0.0E+00
Q-Factor                                        : 0.00 dB

Q-Margin                                        : 0.00dB

OTU TTI Received

FEC mode                                        : C_FEC

Leave a Comment