diff --git a/doc/terminal-device-properties-guide.md b/doc/terminal-device-properties-guide.md index 88f3f0706..682f839d2 100644 --- a/doc/terminal-device-properties-guide.md +++ b/doc/terminal-device-properties-guide.md @@ -36,4 +36,94 @@ Manifest files are a special OpenConfig model category since they do not represe In order to keep separated them from the rest of operational models, the following openconfig extension is included in the model, to enrich the module metadata: ``` oc-ext:origin "openconfig-properties"; -``` \ No newline at end of file +``` +# Extensions introduced in the v0.2.0 release of the model. + +### Motivation + +After the initial release of the [openconfig-terminal-device-properties.yang](https://github.com/openconfig/public/blob/master/release/models/devices-manifest/openconfig-terminal-device-properties.yang), there have been significant technical questions and discussions happening within the Telecom Infra Project (TIP) Open Optical & Packet Transport (OOPT) community between operators and vendors. + +This issue summarizes the motivation and issues detected in the first release of the model and it will serve as an introduction and motivation of a new pull request (#911) with a new proposed comprehensive update of the model which will be accompanied by the relevant explanations on how the new model proposal will try to overcome the detected issues. It is worth mentioning that the current analysis and the new proposal are the outcomes of an extensive technical discussion within the OOPT community between vendors and service providers and that it consolidates an already discussed proposal starting from the issues and motivations explained here. + +### Context + +The current proposed terminal-device-properties model was designed with the objective of allowing the terminal devices' system vendors to expose the intrinsic properties (Modulation Format, FEC, Baud-rate) and performance characteristics (Rx-OSNR, CD/PMD limits) of the device's supported transmission modes. + +The initial version of the model was designed as a flat list of mode properties, where each entry represents a mode supported by the terminal device and includes the list of characteristics of that mode. However, this initial version presents a significant list of limitations. + +### Initial release limitations +- **First issue**: The current model exposes a list of modes available in the device, however, the characteristics of a mode of transmission are affected by the HW transceiver supplying it. In other words, two different transceivers (supported by the same terminal device) might support the same mode, but their mode characteristics are different. + +image + +- **Second issue**: There is not an interoperability matrix within the Terminal Device's which exposes the compatibility between Terminal Device's chassis, linecards, transceivers and modes. Right now there is no compatibility information available in the model, to allow the supplier to properly describe which modes are supported by each transceiver module available in the terminal device. + +#### Operational challenges + +- It is not clear how mode IDs will be assigned and who will assign them. +- Clarification of the bookended solution target by the model. + +### New proposal scope and initial assumptions + +Clarify the target of the next extension targets + +1. Bookended solutions, and interoperability between terminal devices of the same system vendor. +2. Interoperability between different system vendors O-OTs through standard modes + +### Solution proposed + +This pull request covers a proposed solution to the issues described in #910. + +The changes to the existing model **are not backward compatible.** + +The summary of the changes proposed is the following: + +**1. Operational-mode list:** + - The list of the exposed operational modes properties by the Terminal Device is augmented with the set of **CHARacteristic properties** of the operational mode. + - The mode-ids are the same used within the operational datastore of the terminal device (exposed by the [openconfig-terminal-device.yang](https://github.com/openconfig/public/blob/master/release/models/optical-transport/openconfig-terminal-device.yang) model) and have network-wide scope assuming they guarantee interoperability in bookended scenarios (two Terminal Devices of the same system vendor supporting the same mode). + - The mode-ids are defined by the system vendor. + +**2. Mode-descriptors list:** + - The **design properties** of the modes, which are dependent on the transceiver component that implements the mode, are exposed as a nested list within the operational mode list. It is assumed that a single operational mode might be implemented by different transceivers which might have associated different design properties exposed by different mode descriptors. + - The **mode-descriptor-id** is a local index that does not have interoperability meaning outside the specific Terminal device which reports it. In other words, the same mode descriptors might be exported by different Terminal Devices with different IDs. + +**3. Interoperable mode list.** + - A given proprietary operational mode might be capable to comply with a certain number of standards or elsewhere publicly defined operational modes defined by other organizations e.g., ITU-T or OpenROADM. + - This compatibility characteristic shall be assured by the system vendor and imply that the design properties of the implementations of that specific operational mode are a superset of all listed supported standard modes. + - This model block will replace the previous "G.698.2" node tree with a more generic definition able to accommodate multiple standards or MSA-defined modes. + +**4. Transceiver-descriptors list.** + - The Terminal Device exposes the list of the transceiver components which are supported by the device. + - Each transceiver exposes the list of compatible modes and their associated mode descriptor. + - This new model block enhances the previous version by allowing to expose explicitly the compatibility matrix between the Terminal Device, the set of transceiver modules supported and the associated modes supported. + +**5. Linecard-descriptors list.** + - The Terminal Device exposes the list of linecard components which are supported by the device. + - Each linecard component exposes the list of transceivers that are supported. + - Each linecard constrains the list of modes that can be supported among the ones supported by the transceiver. + - Each linecard constrains the optical-channel configuration, e.g., target-output-power and frequency range. + - This new model block enhances the previous version by allowing to expose explicitly the compatibility matrix between the Terminal Device, the line cards, the set of transceiver module per line card and the associated modes supported. + +Following the model tree with the 5 blocks described above. In green the new leaves/containers are added in this proposal; in black the non-modified leaves, even if they have been reallocated within the tree under different containers/lists. + +image + +For more clarity on the above please check the following common definitions and assumptions defined during the design process of this proposal within the Telecom Infra Project (TIP) OOPT MUST project. + +#### Common definitions +- System-vendor = the O-OT host platform provider (e.g. muxponder shelf, router, switch) and system integrator including the network operating system of the O-OT +- Manufacturer = Transceiver manufacturer (pluggable) +- Bookended scenario definition. + - The System Vendor is the same in the two O-OTs. + - The O-OTs of the same system vendor might host different Transceiver manufacturers. + - Mode-ids are defined and maintained by the system vendor. + - Interoperability shall be guaranteed by the system vendor if the same mode-id is configured in the line interfaces /optical-channels of the two O-OTs. + +#### Assumptions +- The **openconfig-terminal-device-properties.yang** is a standalone model which represents static properties of a given terminal device, including: + - **Operational-modes’ characteristic properties** on the transceiver configuration which characterize the mode (modulation-format, baud-rate, bit-rate, fec-format, filter…) + - **Mode-descriptors** which describe the transmission design properties (Tx/Rx properties + CHARacteristic properties) of the implementation of the mode conditioned by the HW platform (transceiver + linecard) (Rx/Tx-OSNR, CD/PMD tolerances, penalties…) + - **optical-channel’s configuration constraints** introduced by the HW implementation (min/max-central-frequency, min/max-output-power…) +- The openconfig-terminal-device-properties.yang is a standalone model representing a given mode’s static properties. We shall avoid any reference btw the manifest files and the operational openconfig trees which change dynamically. In other words, the references between mode-descriptors and operational modes, shall be through absolute identifiers. + + diff --git a/release/models/devices-manifest/openconfig-terminal-device-properties.yang b/release/models/devices-manifest/openconfig-terminal-device-properties.yang index 85bf510a8..862676c40 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-properties.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-properties.yang @@ -35,10 +35,18 @@ module openconfig-terminal-device-properties { the OTSi (OTSiMC). It also includes (optional) aspects such as filter characterization, CD and DGD tolerance."; - oc-ext:openconfig-version "0.1.2"; + oc-ext:openconfig-version "0.2.0"; // Revisions + revision "2024-05-28" { + description "Comprehensive model update to undertake the limitations + of the first version of the model, such the introduction of modes + dependencies on hardware components and the interoperability information + between terminal devices, linecards, transceviers and modes."; + reference "0.2.0"; + } + revision "2024-05-15" { description "Fix yang namespace URI to openconfig.net."; @@ -131,15 +139,6 @@ module openconfig-terminal-device-properties { It may vary depending on the modulation format used in the associated transmission mode (operational-mode)."; } - leaf pre-fec-ber-threshold { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "Threshold on the PRE-FEC-BER, for which FEC code is able to - correct errors."; - } } grouping filter-attributes-top { @@ -237,46 +236,22 @@ module openconfig-terminal-device-properties { } } - grouping operational-mode-descriptor-explicit-capabilities-state { + grouping mode-descriptor-design-properties-state { description - "Operational-mode capabilities leafs."; - - leaf modulation-format { - type union { - type string; - type oc-opt-term-prop-types:modulation-format; - } - description - "Optical modulation format associated to the mode. The - modulation format associated to the optical signal."; - } - - leaf bit-rate { - type oc-opt-term-prop-types:bit-rate; - description - "Rounded bit rate of the tributary signal delivered by the - optical channel associated to the specific operational mode. - Exact bit rate will be refined by protocol selection at the - associated tributary logical channel."; - } - - leaf baud-rate { - type decimal64 { - fraction-digits 2; - } - units Bd; - description - "Baud-rate or symbol rate."; - } - - leaf optical-channel-spectrum-width { - type decimal64 { - fraction-digits 2; - } - units GHz; + "For each given mode supported by the device there might be + one or multiple implementations related to the transceiver hardware + modules which implements the mode. For a given implementation, + a set of design properties are represented within the mode-descriptor + data structure, which is identified by a unique local identifier. + A mode-descriptor shall uniquely characterize a given operational mode + implemented by a given transceiver component described within the + terminal-device manfiest file."; + + leaf mode-descriptor-id { + type uint16; description - "Spectrum width of the optical channel associated to this - operational mode, calculated as the baud-rate*(1+roll-off)."; + "Two-octet encoding of the vendor-defined operational + mode"; } leaf min-tx-osnr { @@ -357,9 +332,19 @@ module openconfig-terminal-device-properties { optical channel associated to the associated transmission mode (operational model), expressed in decibels (dB)"; } + + leaf pre-fec-ber-threshold { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "Threshold on the PRE-FEC-BER, for which FEC code is able to + correct errors."; + } } - grouping operational-mode-descriptor-explicit-top { + grouping operational-mode-descriptor-design-properties-top { description "Definition of proprietary or non-standard operational-modes, which can be uniformly characterized by the set of attributes included in their @@ -369,150 +354,172 @@ module openconfig-terminal-device-properties { allowed values to be configured at the oc-component:optical-channel instance configured to this mode."; - container explicit-mode { + container mode-descriptors { description "Explicit definition of the operational-mode. Typically this is used for non-standard/proprietary modes defined by the terminal-device vendor and it is self-described by the capabilities included in the subtree underneath."; - container operational-mode-capabilities{ + list mode-descriptor{ + key "mode-descriptor-id"; description - "Set of attributes which characterizes the operational-mode for optimal - optical-channel transmission and receiver functions. This attributes - are intending to describe all the relevant data used during the - network planning phase, to estimate the physical-impairment - tolerances which can be introduced by the DWDM optical path, - while assuring optimal transmission function."; + ""; + leaf mode-descriptor-id { + type leafref { + path "../state/mode-descriptor-id"; + } + description + "Reference to mode-descriptor-id"; + } container state { config false; description - "Operational-mode explicit mode capabilities state container."; - - uses operational-mode-descriptor-explicit-capabilities-state; + "Mode-descriptor state attributes top container."; + uses mode-descriptor-design-properties-state; } - container fec { - description - "The Forward Error Coding (FEC) coding schema used, - including the name, overhead, pre-fec-ber threshold and - gain properties."; + uses operational-mode-descriptor-penalties-top; + uses operational-mode-descriptor-interoperable-modes-top; + } + } + } - container state { - config false; - description - "FEC state attributes top container."; + grouping interoperable-mode-properties-state { + description + "System-defined configuration data for component properties"; - uses fec-codes-attributes; - } + leaf name { + type string; + description + "System-supplied name of the property -- this is typically + non-configurable"; + } + + leaf value { + type union { + type string; + type boolean; + type int64; + type uint64; + type decimal64 { + fraction-digits 2; } + } + description + "Property values can take on a variety of types. Signed and + unsigned integer types may be provided in smaller sizes, + e.g., int8, uint16, etc."; + } + } - container penalties { - description - "Enconsing list's container."; + grouping operational-mode-descriptor-interoperable-mode-state { + description + "Interoperable mode features attributes grouping."; - list penalty { - key "parameter-and-unit up-to-boundary"; - description - "Penalties includes contributions from different impairments including - cd, pmd, low RX Power, pdl,... - - For parameter values below lowest up-to-boundary value, the penalty is 0. - - For parameter values between lowest and highest up-to-boundary - values, penalty could be linearly interpolated. - - For parameter values above highest up-to-boundary value, the penalty is the one - included within penalty-value attribute associated to the highest up-to-boundary"; - - leaf parameter-and-unit { - type leafref { - path "../state/parameter-and-unit"; - } - description - "Impairment and unit leading to the penalty (i.e., cd-ps)"; - } - - leaf up-to-boundary { - type leafref { - path "../state/up-to-boundary"; - } - description - "defines the upper (for positive values) and lower (for negative values) - limit for which the penalty value is valid."; - } - - container state { - config false; - description - "Penalties list element's state attributes top container."; - uses penalties-list-element-attributes; - } - } - } + leaf mode-name { + type string; + description + "Public well-know free-format name reference to the mode name."; + } - container filter { - description - "This container includes information which characterises the filter at - transceiver transmission for the given operational-mode."; + leaf publisher-organization { + type union { + type string; + type oc-opt-term-prop-types:interoperability-modes-organization; + } + description + "Name of the organization, standard body, Multi-Source Agreement, or + open source project, responsible of the definition of the interoperable + mode."; + } + } + grouping operational-mode-descriptor-penalties-top { + description + "Top container grouping for operational-mode-descriptor."; + container penalties { + description + "Enconsing list's container."; - container state { - config false; - description - "Filter's state attributes top container."; - uses filter-attributes-top; + list penalty { + key "parameter-and-unit up-to-boundary"; + description + "Penalties includes contributions from different impairments including + cd, pmd, low RX Power, pdl,... + - For parameter values below lowest up-to-boundary value, the penalty is 0. + - For parameter values between lowest and highest up-to-boundary + values, penalty could be linearly interpolated. + - For parameter values above highest up-to-boundary value, the penalty is the one + included within penalty-value attribute associated to the highest up-to-boundary"; + + leaf parameter-and-unit { + type leafref { + path "../state/parameter-and-unit"; } + description + "Impairment and unit leading to the penalty (i.e., cd-ps)"; } - } - container optical-channel-config-value-constraints{ - description - "Set of constraints of the configuration attributes - of the optical-channel associated to the selected - operational-mode."; + leaf up-to-boundary { + type leafref { + path "../state/up-to-boundary"; + } + description + "defines the upper (for positive values) and lower (for negative values) + limit for which the penalty value is valid."; + } container state { config false; description - "Operational-mode explicit mode config value constrains state top - container."; - - uses operational-mode-descriptor-explicit-config-constraints-state; + "Penalties list element's state attributes top container."; + uses penalties-list-element-attributes; } } } } - grouping operational-mode-descriptor-standard-state { + grouping operational-mode-descriptor-interoperable-modes-top { description - "Standard mode features attributes grouping."; + "Each mode-descriptor of a given operational-mode could be compatible + with many interoperable modes which are defined, elsewhere, by standard + bodies, multi-source agreements, vendor forums or any other public forum. + This compatibility characteristic shall be assured by the system-vendor + and imply that the design properties of the implementations of that + specific operational mode are a superset of the all listed supported + standard modes"; - leaf standard-mode { - type oc-opt-term-prop-types:standard-mode; + container interoperable-modes { description - "G.698.2 (11/18) standard mode"; - } - } + "Top level container of interoperable modes."; - grouping operational-mode-descriptor-standard-top { - description - "Standard mode features description grouping. It is used if the - 'mode-type' attribute is set to 'TRANSCEIVER_MODE_TYPE_STANDARD"; + list interoperable-mode { + key "mode-name"; + description + "Each interoperable mode is defined by its public name reference + and a set of free form key-value properties which augments with + the required information provided by the system-vendor."; - container G.698.2 { - description - "ITU-T G.698.2 (11/18) standard mode that guarantees interoperability. - It must be an string with the following format: - B-DScW-ytz(v) where all these attributes are conformant - to the ITU-T G.698.2 (11/18) recommendation."; + leaf mode-name { + type leafref { + path "../state/mode-name"; + } + description + "Reference to mode-name."; + } - container state { + container state { config false; description - "Operational-mode standard mode state top container."; + "Operational-mode interoperbale mode state top container."; - uses operational-mode-descriptor-standard-state; + uses operational-mode-descriptor-interoperable-mode-state; + } } } } + grouping operational-mode-descriptor-state{ description "Top-level operational-mode-features grouping definitions"; @@ -524,13 +531,74 @@ module openconfig-terminal-device-properties { mode"; } - leaf mode-type { - type identityref{ - base oc-opt-term-prop-types:TRANSCEIVER_MODE_TYPE; + leaf modulation-format { + type union { + type string; + type oc-opt-term-prop-types:modulation-format; + } + description + "Optical modulation format associated to the mode. The + modulation format associated to the optical signal."; + } + + leaf bit-rate { + type oc-opt-term-prop-types:bit-rate; + description + "Rounded bit rate of the tributary signal delivered by the + optical channel associated to the specific operational mode. + Exact bit rate will be refined by protocol selection at the + associated tributary logical channel."; + } + + leaf baud-rate { + type decimal64 { + fraction-digits 2; + } + units Bd; + description + "Baud-rate or symbol rate."; + } + + leaf optical-channel-spectrum-width { + type decimal64 { + fraction-digits 2; + } + units GHz; + description + "Spectrum width of the optical channel associated to this + operational mode, calculated as the baud-rate*(1+roll-off)."; + } + } + + grouping operation-mode-filter-and-fec { + description + "Enclosing grouping for Operational Mode filter and FEC attributes."; + + container filter { + description + "This container includes information which characterises the filter at + transceiver transmission for the given operational-mode."; + + container state { + config false; + description + "Filter's state attributes top container."; + uses filter-attributes-top; } + } + container fec { description - "Indicates whether the transceiver's mode is a standard - mode, an organizational mode or an explicit mode."; + "The Forward Error Coding (FEC) coding schema used, + including the name, overhead, pre-fec-ber threshold and + gain properties."; + + container state { + config false; + description + "FEC state attributes top container."; + + uses fec-codes-attributes; + } } } @@ -538,7 +606,7 @@ module openconfig-terminal-device-properties { description "top-level operational-mode definitions"; - container operational-modes { + container operational-mode-descriptors { config false; description "Indicates the transceiver's list of supported operational @@ -546,12 +614,12 @@ module openconfig-terminal-device-properties { reference "https://github.com/openconfig/public/blob/master/doc/terminal-device-properties-guide.md"; - list mode-descriptor { + list operational-modes { key "mode-id"; description - "List of operational modes supported by the platform. - The operational mode provides a platform-defined summary - of information such as symbol rate, modulation, pulse + "List of operational modes supported by the terminal-device. + The operational mode descriptor list provides a platform-defined + summary of the modes' information such as symbol rate, modulation, pulse shaping, etc."; leaf mode-id { @@ -569,11 +637,342 @@ module openconfig-terminal-device-properties { uses operational-mode-descriptor-state; } - uses operational-mode-descriptor-standard-top; - uses operational-mode-descriptor-explicit-top; + uses operation-mode-filter-and-fec; + uses operational-mode-descriptor-design-properties-top; + } + } + } + + // Definition of terminal-device transceiver descriptors. + + grouping terminal-device-component-descriptor-state { + description + "State data for terminal device descriptor components."; + + leaf component-descriptor-id { + type string; + description + "Unique identifier assigned by the system vendor for the + component descriptor."; + } + + leaf system-vendor-name { + type string; + description + "System vendor company name"; + } + + leaf system-vendor-part-no { + type string; + description + "System-vendor assigned part number for the component. This should + be present in particular if the component is also an FRU + (field replaceable unit)"; + } + + leaf mfg-name { + type string; + description + "System-supplied identifier for the manufacturer of the + component. This data is particularly useful when a + component manufacturer is different than the overall + device vendor."; + } + + leaf mfg-part-no { + type string; + description + "Transceiver manufacturer assigned part number for the component."; + } + + leaf hardware-version { + type string; + description + "For hardware components, this is the hardware revision of + the component."; + } + + leaf firmware-version { + type string; + description + "For hardware components, this is the version of associated + firmware that is running on the component, if applicable."; + } + + leaf software-version { + type string; + description + "For software components such as operating system or other + software module, this is the version of the currently + running software."; + } + + leaf clei-code { + type string; + description + "Common Language Equipment Identifier (CLEI) code of the + component. This should be present in particular if the + component is also an FRU (field replaceable unit)"; + } + } + grouping transceiver-compatible-mode-state { + description + "Each compatible mode has associated a mode-descriptor which represents + the operational mode design properties associated to the transceiver which + transmits the mode."; + + container state { + description + "State container of transciever compatible modes."; + + leaf mode-id { + type uint16; + must "../../../../../../operational-mode-descriptors/operational-modes[mode-id=current()]/mode-id"; + + description + "Two-octet encoding of the vendor-defined operational mode. + Each value shall reference a valid mode-id included in the + operational-mode-descriptors list."; + } + + leaf mode-descriptor-id { + type leafref { + path "/oc-opt-term-properties:operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id"; + } + description + "Reference to the associated mode-descriptor-id which describes + the specific design properties of the mode once it is being transmitted + by the parent transceiver component."; + } + } + } + + grouping transceiver-compatible-modes { + description + "Transceiver compatible modes definition."; + + container transceiver-compatible-modes { + config false; + description + "Indicates the set of operatational-modes, present in the terminal- + device manifest, which are compatible with the described transceiver + component."; + + list transceiver-compatible-mode { + key "mode-id"; + description + "List of operational modes supported by the target transceiver."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to a ../state/mode-id."; + } + uses transceiver-compatible-mode-state; + } + } + } + + grouping transceiver-descriptor-top { + description + "top-level transceiver-descriptor definitions"; + + container transceiver-descriptors { + config false; + description + "Indicates the terminal-device's list of compatible transceiver + component and its associated modes and mode descriptors compatibility + matrix."; + + list transceiver-descriptor { + key "component-descriptor-id"; + description + "List of transceiver components supported by the terminal-device. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf component-descriptor-id { + type leafref { + path "../state/component-descriptor-id"; + } + description + "Reference to component-descriptor-id"; + } + + container state { + description + "Static features or properties which characterize the + component descriptor."; + + uses terminal-device-component-descriptor-state; + } + uses transceiver-compatible-modes; + } + } + } + + // Definition of terminal-device linecard descriptors. + + grouping linecards-constrained-compatible-modes-state { + description + "Grouping for the linecards' contrained compatible modes + state attributes."; + + container state { + description + "State container for linecard constrained compatible modes"; + + leaf mode-id { + type uint16; + must "../../../../../../../../operational-mode-descriptors/operational-modes[mode-id=current()]/mode-id"; + + description + "Absolute reference to an operational-mode-id. Each value shall + reference a valid mode-id included in the operational-mode-descriptors + list."; + } + + leaf mode-descriptor-id { + type leafref { + path "/oc-opt-term-properties:operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id"; + } + description + "Reference to the associated mode-descriptor-id which describes + the specific design properties of the mode once it is being transmitted + by the parent transceiver component."; + } + } + } + + grouping constrained-compatible-modes { + description + "Linecards' compatible transceiver list of compatible modes which are + constrained by the integration made by the system vendor of the given + terminal-device."; + + container constrained-compatible-modes { + config false; + description + "Indicates the set of operatational-modes, present in the terminal- + device manifest, which are compatible with the described transceiver + component within the linecard component."; + + list constrained-compatible-mode { + key "mode-id"; + description + "List of operational modes supported by the target transceiver."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to linecard-descriptor/constrained-compatible-mode/state/mode-id."; + } + + uses linecards-constrained-compatible-modes-state; + + container optical-channel-config-value-constraints{ + description + "Set of constraints of the configuration attributes + of the optical-channel associated to the selected + operational-mode."; + + container state { + config false; + description + "Operational-mode explicit mode config value constrains state top + container."; + + uses operational-mode-descriptor-explicit-config-constraints-state; + } + } + } + } + } + + grouping linecard-compatible-transceivers { + description + "Linecard-transceiver compatibility matrix definition."; + + container compatible-transceivers { + config false; + description + "Indicates the set of transceiver component which are compatible + with the described linecard component."; + + list compatible-transceiver { + key "transceiver-descriptor-id"; + description + "List of transceiver descriptor ids."; + + leaf transceiver-descriptor-id { + type leafref { + path "../state/transceiver-descriptor-id"; + } + description + "Reference to transceiver-descriptor-id"; + } + container state { + description + "Static features or properties which characterize the + component descriptor."; + + leaf transceiver-descriptor-id { + type string; + description + "String rerference of the system vendor defined transciever + component descriptor id."; + } + } + uses constrained-compatible-modes; + } + } + } + + grouping linecard-descriptor-top { + description + "top-level linecard-descriptor definitions"; + + container linecard-descriptors { + config false; + description + "Indicates the terminal-device's list of compatible linecard + component and its associated modes and mode descriptors compatibility + matrix."; + + list linecard-descriptor { + key "component-descriptor-id"; + description + "List of linecard components supported by the terminal-device. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf component-descriptor-id { + type leafref { + path "../state/component-descriptor-id"; + } + description + "Reference to component-descriptor-id"; + } + + container state { + description + "Static features or properties which characterize the + component descriptor."; + + uses terminal-device-component-descriptor-state; + } + uses linecard-compatible-transceivers; } } } + uses transceiver-descriptor-top; + uses linecard-descriptor-top; uses operational-mode-top; } diff --git a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang index f389b602c..b1fd0ef9b 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang @@ -29,10 +29,18 @@ module openconfig-terminal-device-property-types { definitions of the set of modulation format, FEC codes and adjustment granularity types use in the reffered model."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.2.0"; // Revisions + revision "2024-05-28" { + description "Comprehensive model update to undertake the limitations + of the first version of the model, such the introduction of modes + dependencies on hardware components and the interoperability information + between terminal devices, linecards, transceviers and modes."; + reference "0.2.0"; + } + revision "2024-05-15" { description "Fix yang namespace URI to openconfig.net."; @@ -62,6 +70,14 @@ module openconfig-terminal-device-property-types { reference "ITU-T G.698.2 (11/2018)"; } + typedef interoperability-modes-organization { + type identityref { + base INTEROPERABILITY_MODES_ORGANIZATION; + } + description + "Optical modulation format associated to the mode"; + } + typedef bit-rate { type identityref { base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE; @@ -123,6 +139,11 @@ module openconfig-terminal-device-property-types { "Definition of impairment type and unit used in penaty list"; } + identity INTEROPERABILITY_MODES_ORGANIZATION { + description + "Base identity for interoperability modes' defining organizations."; + } + identity SHAPING_TYPE { description "Base identity for pulse-shaping-type, to help characterize the @@ -260,7 +281,6 @@ module openconfig-terminal-device-property-types { no minimun spacing between channels is defined."; } - identity FEC { description "Forward Error Correction base identity."; @@ -279,6 +299,7 @@ module openconfig-terminal-device-property-types { "Generic FEC, Reed Solomon (255,239) coding schema, defined in ITU-T G.975 (10/2000)."; } + identity FEC_E { base FEC; description