This module defines configuration and operational state data for transceivers (i.e., pluggable optics). The module should be us...
Version: 2018-11-25
module openconfig-platform-transceiver { yang-version 1; namespace "http://openconfig.net/yang/platform/transceiver"; prefix oc-transceiver; import ietf-yang-types { prefix yang; } import openconfig-platform { prefix oc-platform; } import openconfig-platform-types { prefix oc-platform-types; } import openconfig-platform-port { prefix oc-port; } import openconfig-interfaces { prefix oc-if; } import openconfig-transport-types { prefix oc-opt-types; } import openconfig-types { prefix oc-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-yang-types { prefix oc-yang; } organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net"; description "This module defines configuration and operational state data for transceivers (i.e., pluggable optics). The module should be used in conjunction with the platform model where other physical entity data are represented. In the platform model, a component of type=TRANSCEIVER is expected to be a subcomponent of a PORT component. This module defines a concrete schema for the associated data for components with type=TRANSCEIVER."; revision "2018-11-25" { description "Add augment for leafref to transceiver component; Correct paths in physical channels leafref."; reference "0.7.0"; } revision "2018-11-21" { description "Add OpenConfig module metadata extensions."; reference "0.6.1"; } revision "2018-11-16" { description "Added transceiver FEC configuration and state"; reference "0.6.0"; } revision "2018-05-15" { description "Remove internal-temp state leaf, since we prefer the generic /components/component/state/temperature container for temperature information."; reference "0.5.0"; } revision "2018-01-22" { description "Fixed physical-channel path reference"; reference "0.4.1"; } revision "2017-09-18" { description "Use openconfig-yang-types module"; reference "0.4.0"; } revision "2017-07-08" { description "Adds clarification on aggregate power measurement data"; reference "0.3.0"; } revision "2016-12-22" { description "Adds preconfiguration data and clarified units"; reference "0.2.0"; } oc-ext:openconfig-version "0.7.0"; grouping optical-power-state { description "Reusable leaves related to optical power state -- these are read-only state values. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; container output-power { description "The output optical power of a physical channel in units of 0.01dBm, which may be associated with individual physical channels, or an aggregate of multiple physical channels (i.e., for the overall transceiver). For an aggregate, this may be a measurement from a photodetector or a a calculation performed on the device by summing up all of the related individual physical channels. Values include the instantaneous, average, minimum, and maximum statistics. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; uses oc-types:avg-min-max-instant-stats-precision2-dBm; } // container output-power container input-power { description "The input optical power of a physical channel in units of 0.01dBm, which may be associated with individual physical channels, or an aggregate of multiple physical channels (i.e., for the overall transceiver). For an aggregate, this may be a measurement from a photodetector or a a calculation performed on the device by summing up all of the related individual physical channels. Values include the instantaneous, average, minimum, and maximum statistics. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; uses oc-types:avg-min-max-instant-stats-precision2-dBm; } // container input-power container laser-bias-current { description "The current applied by the system to the transmit laser to achieve the output power. The current is expressed in mA with up to two decimal precision. Values include the instantaneous, average, minimum, and maximum statistics. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; uses oc-types:avg-min-max-instant-stats-precision2-mA; } // container laser-bias-current } // grouping optical-power-state grouping output-optical-frequency { description "Reusable leaves related to optical output power -- this is typically configurable on line side and read-only on the client-side"; leaf output-frequency { type oc-opt-types:frequency-type; description "The frequency in MHz of the individual physical channel (e.g. ITU C50 - 195.0THz and would be reported as 195,000,000 MHz in this model). This attribute is not configurable on most client ports."; } } // grouping output-optical-frequency grouping physical-channel-config { description "Configuration data for physical client channels"; leaf index { type uint16 { range "0..max"; } description "Index of the physical channnel or lane within a physical client port"; } leaf description { type string; description "Text description for the client physical channel"; } leaf tx-laser { type boolean; description "Enable (true) or disable (false) the transmit label for the channel"; } leaf target-output-power { type decimal64 { fraction-digits 2; } units "dBm"; description "Target output optical power level of the optical channel, expressed in increments of 0.01 dBm (decibel-milliwats)"; } } // grouping physical-channel-config grouping physical-channel-state { description "Operational state data for client channels."; uses output-optical-frequency; uses optical-power-state; } // grouping physical-channel-state grouping physical-channel-top { description "Top-level grouping for physical client channels"; container physical-channels { description "Enclosing container for client channels"; list channel { key "index"; description "List of client channels, keyed by index within a physical client port. A physical port with a single channel would have a single zero-indexed element"; leaf index { type leafref { path "../config/index"; } description "Reference to the index number of the channel"; } container config { description "Configuration data for physical channels"; uses physical-channel-config; } // container config container state { config false; description "Operational state data for channels"; uses physical-channel-config; uses physical-channel-state; } // container state } // list channel } // container physical-channels } // grouping physical-channel-top grouping port-transceiver-config { description "Configuration data for client port transceivers"; leaf enabled { type boolean; description "Turns power on / off to the transceiver -- provides a means to power on/off the transceiver (in the case of SFP, SFP+, QSFP,...) or enable high-power mode (in the case of CFP, CFP2, CFP4) and is optionally supported (device can choose to always enable). True = power on / high power, False = powered off"; } leaf form-factor-preconf { type identityref { base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; } description "Indicates the type of optical transceiver used on this port. If the client port is built into the device and not pluggable, then non-pluggable is the corresponding state. If a device port supports multiple form factors (e.g. QSFP28 and QSFP+, then the value of the transceiver installed shall be reported. If no transceiver is present, then the value of the highest rate form factor shall be reported (QSFP28, for example). The form factor is included in configuration data to allow pre-configuring a device with the expected type of transceiver ahead of deployment. The corresponding state leaf should reflect the actual transceiver type plugged into the system."; } leaf ethernet-pmd-preconf { type identityref { base oc-opt-types:ETHERNET_PMD_TYPE; } description "The Ethernet PMD is a property of the optical transceiver used on the port, indicating the type of physical connection. It is included in configuration data to allow pre-configuring a port/transceiver with the expected PMD. The actual PMD is indicated by the ethernet-pmd state leaf."; } leaf fec-mode { type identityref { base oc-platform-types:FEC_MODE_TYPE; } description "The FEC mode indicates the mode of operation for the transceiver's FEC. This defines typical operational modes and does not aim to specify more granular FEC capabilities."; } } // grouping port-transceiver-config grouping port-transceiver-state { description "Operational state data for client port transceivers"; leaf present { type enumeration { enum "PRESENT" { value 0; description "Transceiver is present on the port"; } enum "NOT_PRESENT" { value 1; description "Transceiver is not present on the port"; } } description "Indicates whether a transceiver is present in the specified client port."; } leaf form-factor { type identityref { base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; } description "Indicates the type of optical transceiver used on this port. If the client port is built into the device and not pluggable, then non-pluggable is the corresponding state. If a device port supports multiple form factors (e.g. QSFP28 and QSFP+, then the value of the transceiver installed shall be reported. If no transceiver is present, then the value of the highest rate form factor shall be reported (QSFP28, for example)."; } leaf connector-type { type identityref { base oc-opt-types:FIBER_CONNECTOR_TYPE; } description "Connector type used on this port"; } leaf vendor { type string { length "1..16"; } description "Full name of transceiver vendor. 16-octet field that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h)"; } leaf vendor-part { type string { length "1..16"; } description "Transceiver vendor's part number. 16-octet field that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h). If part number is undefined, all 16 octets = 0h"; } leaf vendor-rev { type string { length "1..2"; } description "Transceiver vendor's revision number. 2-octet field that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h)"; } leaf ethernet-pmd { type identityref { base oc-opt-types:ETHERNET_PMD_TYPE; } description "Ethernet PMD (physical medium dependent sublayer) that the transceiver supports. The SFF/QSFP MSAs have registers for this and CFP MSA has similar."; } leaf sonet-sdh-compliance-code { type identityref { base oc-opt-types:SONET_APPLICATION_CODE; } description "SONET/SDH application code supported by the port"; } leaf otn-compliance-code { type identityref { base oc-opt-types:OTN_APPLICATION_CODE; } description "OTN application code supported by the port"; } leaf serial-no { type string { length "1..16"; } description "Transceiver serial number. 16-octet field that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h). If part serial number is undefined, all 16 octets = 0h"; } leaf date-code { type oc-yang:date-and-time; description "Representation of the transceiver date code, typically stored as YYMMDD. The time portion of the value is undefined and not intended to be read."; } leaf fault-condition { type boolean; description "Indicates if a fault condition exists in the transceiver"; } leaf fec-status { type identityref { base oc-platform-types:FEC_STATUS_TYPE; } description "Operational status of FEC"; } leaf fec-uncorrectable-blocks { type yang:counter64; description "The number of blocks that were uncorrectable by the FEC"; } leaf fec-uncorrectable-words { type yang:counter64; description "The number of words that were uncorrectable by the FEC"; } leaf fec-corrected-bytes { type yang:counter64; description "The number of bytes that were corrected by the FEC"; } leaf fec-corrected-bits { type yang:counter64; description "The number of bits that were corrected by the FEC"; } container pre-fec-ber { description "Bit error rate before forward error correction -- computed value with 18 decimal precision. Note that decimal64 supports values as small as i x 10^-18 where i is an integer. Values smaller than this should be reported as 0 to inidicate error free or near error free performance. Values include the instantaneous, average, minimum, and maximum statistics. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; } // container pre-fec-ber container post-fec-ber { description "Bit error rate after forward error correction -- computed value with 18 decimal precision. Note that decimal64 supports values as small as i x 10^-18 where i is an integer. Values smaller than this should be reported as 0 to inidicate error free or near error free performance. Values include the instantaneous, average, minimum, and maximum statistics. If avg/min/max statistics are not supported, the target is expected to just supply the instant value"; uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; } // container post-fec-ber uses optical-power-state; } // grouping port-transceiver-state grouping port-transceiver-top { description "Top-level grouping for client port transceiver data"; container transceiver { description "Top-level container for client port transceiver data"; container config { description "Configuration data for client port transceivers"; uses port-transceiver-config; } // container config container state { config false; description "Operational state data for client port transceivers"; uses port-transceiver-config; uses port-transceiver-state; } // container state uses physical-channel-top; } // container transceiver } // grouping port-transceiver-top augment /oc-platform:components/oc-platform:component { description "Adding transceiver data to physical inventory"; uses port-transceiver-top { when "current()/oc-platform:state/oc-platform:type = 'TRANSCEIVER'" { description "Augment is active when component is of type TRANSCEIVER"; } } } augment /oc-if:interfaces/oc-if:interface/oc-if:state { description "Adds a reference from an interface to the corresponding transceiver component."; leaf transceiver { type leafref { path "/oc-platform:components/oc-platform:component[oc-platform:name=current()/../oc-port:hardware-port]/oc-platform:subcomponents/oc-platform:subcomponent/oc-platform:name"; } description "Provides a reference to the transceiver subcomponent that corresponds to the physical port component for this interface. The device must only populate this leaf with a reference to a component of type TRANSCEIVER."; } } augment /oc-if:interfaces/oc-if:interface/oc-if:state { description "Adds a reference from the base interface to its corresponding physical channels."; leaf-list physical-channel { type leafref { path "/oc-platform:components/oc-platform:component[oc-platform:name=current()/../oc-transceiver:transceiver]/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel/oc-transceiver:index"; } description "For a channelized interface, list of references to the physical channels (lanes) corresponding to the interface. The physical channels are elements of a transceiver component in the platform model."; } } } // module openconfig-platform-transceiver
© 2023 YumaWorks, Inc. All rights reserved.