Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terminal-device-properties-v2 initial commit #911

Merged
merged 26 commits into from
Jul 11, 2024

Conversation

arthurMll
Copy link
Contributor

This initial commit push the proposal consolidated from TIP OOPT community where it addresses the issues reported in Issue #910.

Change Scope

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 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.

This initial commit push the proposal consolidated from TIP OOPT community where it addresses the issues reported in Issue openconfig#910.
@arthurMll arthurMll requested a review from a team as a code owner July 13, 2023 10:24
@OpenConfigBot
Copy link

OpenConfigBot commented Jul 13, 2023

No major YANG version changes in commit 01cbc37

Changes to openconfig-terminal-device-properties.yang
- Transceiver compatible modes inner list under the transceiver descriptor list items.
- Missing description of "compatible-transceiver" list item.

openconfig-terminal-device-property-type.yang
- Include v.0.2.0 and revision statement.
@arthurMll
Copy link
Contributor Author

@dplore @oscargdd @ejbrever could you take a look to this? I can attend next public call to try to answer some questions as per your review. Thanks

@dplore
Copy link
Member

dplore commented Jul 18, 2023

Thanks @arthurMll . Two requests for you:

  • Can you also provide reference to any vendor implementations, or invite vendors to comment who are planning to support this?
  • Can you refer any network operators who are implementing and/or want to consume these models?

@EstherLerouzic
Copy link

Dear @dplore
I can comment on this one:

Can you refer any network operators who are implementing and/or want to consume these models?

Orange plans to consume this model once it is made available northbound from devices.

I hope this helps!

regards

Esther

@renzodiazp
Copy link

renzodiazp commented Aug 9, 2023

Dear @dplore,
Regarding your comment:

  • Can you refer any network operators who are implementing and/or want to consume these models?

From Telia Company side, there are plans to consume the proposed model in the future once it is available.
Best regards,
/Renzo Díaz

@vaugais
Copy link

vaugais commented Aug 31, 2023

Hi @dplore, all

To answer this question:

* Can you refer any network operators who are implementing and/or want to consume these models?

Yes we confirm from Colt Technology Services that we are actively working on SDN architecture for packet-optical services and technologies where openconfig for open optical terminals will be one key building block.

Thanks,

Valéry Augais

@dplore
Copy link
Member

dplore commented Aug 31, 2023

Thanks for all the comments on interest. I would like to see a review of the model by at least one operator. The review of the yang syntax is not critical, but the content is. The OC Operators who are regularly attending our calls and participating in reviews do not have a deep familiarity with this use case.

@arthurMll if you find it helpful, may I suggest you organize a call with interested operators for a live review. We can utilize the weekly Operator call (at 09:00 PST on Tuesdays) or if needed, we could create a call just for this PR review.

Also, @arthurMll perhaps you could create a tree view which in my experience helps reviewers more easily understand the model (reading only the yang it is difficult to understand the structure of the model).

@jbouqui153
Copy link

Dear @dplore ,

regarding your question:

  • Can you refer any network operators who are implementing and/or want to consume these models?

Vodafone is interested in this model to be made available on optical terminal devices.

Kind regards,

Jeff Bouquier

@dplore
Copy link
Member

dplore commented Sep 12, 2023

@arthurMll thanks for presenting this today. I more clearly understand the intent of this model now. Action items from the live review were:

  • Suggest adding a diagram showing the O-OT System vendor is responsible for delivering an implementation of the model. which contains multiple manufacturer's transceiver modules.
  • Please provide 2 examples of data from implementations (O-OT) which describe data that matches or is similar to the data modeled in this PR. These examples can be references to documentation, or sample output from show commands, craft interface, TL1 command output, etc.

@github-actions github-actions bot added the Stale label May 9, 2024
@matias-schneeberger
Copy link

Nokia is in agreement with the last model version. We didn’t discover any issues with it yet and we are planning to support it.

CC: @arthurMll

@dplore
Copy link
Member

dplore commented May 16, 2024

@arthurMll thanks for your updates. Can you rebase this to the latest comment on the master branch and resolve any conflicts? Then I will take a pass at review.

@arthurMll
Copy link
Contributor Author

@dplore conflicts resolved and code ready for the final review

@dplore
Copy link
Member

dplore commented May 30, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Jun 4, 2024

/gcbrun

@arthurMll
Copy link
Contributor Author

Hi @dplore ,

In the last commit, I tried to resolve the following errors. Unfortunately,  I cannot reproduce it locally so I am kind of blind until you do the next /gbcrun command.

F0604 16:17:22.769055 888 generator.go:384] ERROR Generating GoStruct Code: key transceiver-descriptor-id had a leafref key (/openconfig-terminal-device-properties/linecard-descriptors/linecard-descriptor/compatible-transceivers/compatible-transceiver/transceiver-descriptor-id) in dir state that did not exist ([ oc-opt-term-properties:transceiver-descriptors oc-opt-term-properties:transceiver-descriptor oc-opt-term-properties:state oc-opt-term-properties:component-descriptor-id])
key mode-id had a leafref key (/openconfig-terminal-device-properties/linecard-descriptors/linecard-descriptor/compatible-transceivers/compatible-transceiver/constrained-compatible-modes/constrained-compatible-mode/mode-id) in dir operational-modes that did not exist ([ oc-opt-term-properties:operational-mode-descriptors operational-modes mode-id])
key mode-id had a leafref key (/openconfig-terminal-device-properties/transceiver-descriptors/transceiver-descriptor/transceiver-compatible-modes/transceiver-compatible-mode/mode-id) in dir operational-modes that did not exist ([ oc-opt-term-properties:operational-mode-descriptors operational-modes mode-id])

@dplore
Copy link
Member

dplore commented Jun 6, 2024

/gcbrun

Sorry this is not automatic

@m1k10h
Copy link

m1k10h commented Jun 11, 2024

NEC optical transport team supports this proposal. We have a plan to release our software that implements the proposed properties.

/CC @arthurMll

@dplore dplore self-assigned this Jun 11, 2024
@dplore
Copy link
Member

dplore commented Jun 11, 2024

/gcbrun

@dplore dplore removed the Stale label Jun 12, 2024
@dplore
Copy link
Member

dplore commented Jun 12, 2024

/gcbrun

Due to some issues compiling the mode. Those containers which contain a "state" subcontainer" needs to be out of the parent state container.
…ransceiver-compatible-modes" lists

Keys of "compatible-transceiver" and "transceiver-compatible-modes" lists cannot reference an existing key leaf (a leaf which is being used as a key in another list) such as the case of the "mode-id" in "operational-mode-descriptors" list and the "component-descriptor-id" in "transceiver-descriptors" list.
Thus, the leafrefs have been substituted by String or UINT16 leafs to accomodate an absolute reference attribute.
Moreover, the keys have been modeled as leafref of the state leafs, following the tranditional openconfig style for lists modelling.
@arthurMll
Copy link
Contributor Author

/gcbrun

@dplore can you build it one more time?

@dplore
Copy link
Member

dplore commented Jun 14, 2024

/gcbrun

@arthurMll
Copy link
Contributor Author

@dplore can you make a final gcbrun and if everything ok the PR is ready to be merged in master

Including in the descriptions of the transceivers-compatible-modes and linecard-descriptors/constrained-compatibles-modes, the need of referencing mode-ids which are present in the operational-mode-descriptors list.
Adding YANG MUST statements to the /transceiver-descriptors/.../transceiver-compatible-modes/mode-id and /linecard-descriptors/.../constrained-compatible-modes/mode-id
leafs to enforce that values are present at : /operational-mode-descriptors/operational-modes
@dplore
Copy link
Member

dplore commented Jul 11, 2024

/gcbrun

@arthurMll
Copy link
Contributor Author

All checks are passed so from our side the PR is ready to be merged to public. @dplore please approve

@dplore
Copy link
Member

dplore commented Jul 11, 2024

Final tree output:

module: openconfig-terminal-device-properties
  +--ro transceiver-descriptors
  |  +--ro transceiver-descriptor* [component-descriptor-id]
  |     +--ro component-descriptor-id         -> ../state/component-descriptor-id
  |     +--ro state
  |     |  +--ro component-descriptor-id?   string
  |     |  +--ro system-vendor-name?        string
  |     |  +--ro system-vendor-part-no?     string
  |     |  +--ro mfg-name?                  string
  |     |  +--ro mfg-part-no?               string
  |     |  +--ro hardware-version?          string
  |     |  +--ro firmware-version?          string
  |     |  +--ro software-version?          string
  |     |  +--ro clei-code?                 string
  |     +--ro transceiver-compatible-modes
  |        +--ro transceiver-compatible-mode* [mode-id]
  |           +--ro mode-id    -> ../state/mode-id
  |           +--ro state
  |              +--ro mode-id?              uint16
  |              +--ro mode-descriptor-id?   -> /operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id
  +--ro linecard-descriptors
  |  +--ro linecard-descriptor* [component-descriptor-id]
  |     +--ro component-descriptor-id    -> ../state/component-descriptor-id
  |     +--ro state
  |     |  +--ro component-descriptor-id?   string
  |     |  +--ro system-vendor-name?        string
  |     |  +--ro system-vendor-part-no?     string
  |     |  +--ro mfg-name?                  string
  |     |  +--ro mfg-part-no?               string
  |     |  +--ro hardware-version?          string
  |     |  +--ro firmware-version?          string
  |     |  +--ro software-version?          string
  |     |  +--ro clei-code?                 string
  |     +--ro compatible-transceivers
  |        +--ro compatible-transceiver* [transceiver-descriptor-id]
  |           +--ro transceiver-descriptor-id       -> ../state/transceiver-descriptor-id
  |           +--ro state
  |           |  +--ro transceiver-descriptor-id?   string
  |           +--ro constrained-compatible-modes
  |              +--ro constrained-compatible-mode* [mode-id]
  |                 +--ro mode-id                                     -> ../state/mode-id
  |                 +--ro state
  |                 |  +--ro mode-id?              uint16
  |                 |  +--ro mode-descriptor-id?   -> /operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id
  |                 +--ro optical-channel-config-value-constraints
  |                    +--ro state
  |                       +--ro min-central-frequency?    oc-opt-types:frequency-type
  |                       +--ro max-central-frequency?    oc-opt-types:frequency-type
  |                       +--ro grid-type?                oc-opt-term-prop-types:grid-type
  |                       +--ro adjustment-granularity?   oc-opt-term-prop-types:adjustment-granularity
  |                       +--ro min-channel-spacing?      decimal64
  |                       +--ro min-output-power?         decimal64
  |                       +--ro max-output-power?         decimal64
  +--ro operational-mode-descriptors
     +--ro operational-modes* [mode-id]
        +--ro mode-id             -> ../state/mode-id
        +--ro state
        |  +--ro mode-id?                          uint16
        |  +--ro modulation-format?                union
        |  +--ro bit-rate?                         oc-opt-term-prop-types:bit-rate
        |  +--ro baud-rate?                        decimal64
        |  +--ro optical-channel-spectrum-width?   decimal64
        +--ro filter
        |  +--ro state
        |     +--ro pulse-shaping-type?   union
        |     +--ro roll-off?             decimal64
        +--ro fec
        |  +--ro state
        |     +--ro fec-coding?        union
        |     +--ro coding-overhead?   decimal64
        |     +--ro coding-gain?       decimal64
        +--ro mode-descriptors
           +--ro mode-descriptor* [mode-descriptor-id]
              +--ro mode-descriptor-id     -> ../state/mode-descriptor-id
              +--ro state
              |  +--ro mode-descriptor-id?                uint16
              |  +--ro min-tx-osnr?                       decimal64
              |  +--ro min-rx-osnr?                       decimal64
              |  +--ro min-input-power?                   decimal64
              |  +--ro max-input-power?                   decimal64
              |  +--ro max-chromatic-dispersion?          decimal64
              |  +--ro max-differential-group-delay?      decimal64
              |  +--ro max-polarization-dependent-loss?   decimal64
              |  +--ro pre-fec-ber-threshold?             decimal64
              +--ro penalties
              |  +--ro penalty* [parameter-and-unit up-to-boundary]
              |     +--ro parameter-and-unit    -> ../state/parameter-and-unit
              |     +--ro up-to-boundary        -> ../state/up-to-boundary
              |     +--ro state
              |        +--ro parameter-and-unit?   oc-opt-term-prop-types:impairment-type
              |        +--ro up-to-boundary?       decimal64
              |        +--ro penalty-value?        decimal64
              +--ro interoperable-modes
                 +--ro interoperable-mode* [mode-name]
                    +--ro mode-name    -> ../state/mode-name
                    +--ro state
                       +--ro mode-name?                string
                       +--ro publisher-organization?   union

Copy link
Member

@dplore dplore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you @arthurMll for all your work on this.

@dplore dplore merged commit 1d1edd1 into openconfig:master Jul 11, 2024
14 checks passed
abamberger-arista pushed a commit to abamberger-arista/openconfig-public that referenced this pull request Aug 7, 2024
* Terminal-device-properties-v2 

This initial commit push the proposal consolidated from TIP OOPT community where it addresses the issues reported in Issue openconfig#910.
sallylsy pushed a commit to sallylsy/OC_public that referenced this pull request Sep 5, 2024
* Terminal-device-properties-v2 

This initial commit push the proposal consolidated from TIP OOPT community where it addresses the issues reported in Issue openconfig#910.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

9 participants