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

IEEE 802.1AG CFM connectivity management + ITU Y1731 Performance management #1182

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

AnnamalaiRajeev
Copy link

@AnnamalaiRajeev AnnamalaiRajeev commented Sep 17, 2024

Change Scope

  • 802.1AG CFM + Y1731 Performance Management profiles are being added.
  • Backward compatibility: True

Platform Implementations

// Vendor 1 CiscoXR:

// Vendor 2 Juniper:
https://www.juniper.net/documentation/us/en/software/junos/network-mgmt/topics/topic-map/cfm-configuring.html

// Vendor 3 Nokia:

[Note: Please provide at least two references to implementations which are relevant to the model changes proposed. Each implementation should be from separate organizations.].

// references

[Note: If the feature being proposed is new - and something that is being
proposed as an enhancement to device functionality, it is sufficient to have
reviewers from the producers of two different implementations].

@AnnamalaiRajeev AnnamalaiRajeev requested a review from a team as a code owner September 17, 2024 16:15
Copy link

google-cla bot commented Sep 17, 2024

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@dplore dplore self-assigned this Sep 17, 2024
* Adds references to the following leaf nodes

[1] "remote-mep-id"
[2] "mac-address"
[2] "direction"

* Updates description to "maintenance-domain" and adds a reference.

* Adds  leaf "group-name" to support Ciscoxr vendor implementation of xconnect/bridgedomains to support Ciscoxr implementation
* https://github.com/YangModels/yang/blob/main/vendor/cisco/xr/613/Cisco-IOS-XR-ethernet-cfm-cfg.yang#L776C22-L776C33

* Adds "routing-disable" action to support Arista's implementation of link loss forwarding.

* Merges ETH-SLM and ETH-LM into loss-measurement config and state.

* Creates a common performance-measurement container for all performance-measurement functions i.e. delay & loss.

* Moves "loss-measurement" and "delay-measurement" configs and states into a common performance-measurement container.

* Moves the  previously modeled loss measurement and delay measurement states into a "pm-profiles" container

• Adds leaf-ref for "policy-name" associated with the endpoint to refer to the global policy
@AnnamalaiRajeev
Copy link
Author

// Tree view - Commit 4

anamalai@gokussg:~$ path/to/venv/bin/pyang -f tree -p /google/src/cloud/anamalai/yang_p/google3/third_party/openconfig/public/release/models/ /google/src/cloud/anamalai/yang_p/google3/third_party/openconfig/public/release/models/cfm/openconfig-cfm.yang
module: openconfig-cfm
  +--rw cfm
     +--rw domains
     |  +--rw maintenance-domain* [md-id]
     |     +--rw md-id                       -> ../config/md-id
     |     +--rw config
     |     |  +--rw md-id?           oc-cfm-types:name-key-type
     |     |  +--rw level?           uint8
     |     |  +--rw md-name-type?    enumeration
     |     |  +--rw none?            boolean
     |     |  +--rw dns_like_name?   string
     |     |  +--rw address          oc-yang:mac-address
     |     |  +--rw unsigned-int     uint16
     |     |  +--rw char-string?     string
     |     +--ro state
     |     |  +--ro md-id?           oc-cfm-types:name-key-type
     |     |  +--ro level?           uint8
     |     |  +--ro md-name-type?    enumeration
     |     |  +--ro none?            boolean
     |     |  +--ro dns_like_name?   string
     |     |  +--ro address          oc-yang:mac-address
     |     |  +--ro unsigned-int     uint16
     |     |  +--ro char-string?     string
     |     +--rw maintenance-associations
     |        +--rw maintenance-association* [ma-id]
     |           +--rw ma-id            -> ../config/ma-id
     |           +--rw config
     |           |  +--rw ma-id?            oc-cfm-types:name-key-type
     |           |  +--rw group-name?       string
     |           |  +--rw ma-name-type?     enumeration
     |           |  +--rw primary-vid       oc-vlan-types:vlan-id
     |           |  +--rw char-string       string
     |           |  +--rw unsigned-int16    uint16
     |           |  +--rw vpn-oui           uint32
     |           |  +--rw vpn-index         uint32
     |           |  +--rw ccm-interval?     enumeration
     |           |  +--rw loss-threshold?   uint16
     |           +--ro state
     |           |  +--ro ma-id?            oc-cfm-types:name-key-type
     |           |  +--ro group-name?       string
     |           |  +--ro ma-name-type?     enumeration
     |           |  +--ro primary-vid       oc-vlan-types:vlan-id
     |           |  +--ro char-string       string
     |           |  +--ro unsigned-int16    uint16
     |           |  +--ro vpn-oui           uint32
     |           |  +--ro vpn-index         uint32
     |           |  +--ro ccm-interval?     enumeration
     |           |  +--ro loss-threshold?   uint16
     |           +--rw mep-endpoints
     |              +--rw mep-endpoint* [local-mep-id]
     |                 +--rw local-mep-id            -> ../config/local-mep-id
     |                 +--rw config
     |                 |  +--rw ccm-enabled?                           boolean
     |                 |  +--rw lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
     |                 |  +--rw fng-alarm-time?                        uint16
     |                 |  +--rw fng-reset-time?                        uint16
     |                 |  +--rw local-mep-id?                          oc-cfm-types:mep-id-type
     |                 |  +--rw interface?                             -> /oc-if:interfaces/interface/name
     |                 |  +--rw include-mep-port-status-in-tlv?        boolean
     |                 |  +--rw include-mep-interface-status-in-tlv?   boolean
     |                 |  +--rw direction?                             enumeration
     |                 +--ro state
     |                 |  +--ro ccm-enabled?                           boolean
     |                 |  +--ro lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
     |                 |  +--ro fng-alarm-time?                        uint16
     |                 |  +--ro fng-reset-time?                        uint16
     |                 |  +--ro local-mep-id?                          oc-cfm-types:mep-id-type
     |                 |  +--ro interface?                             -> /oc-if:interfaces/interface/name
     |                 |  +--ro include-mep-port-status-in-tlv?        boolean
     |                 |  +--ro include-mep-interface-status-in-tlv?   boolean
     |                 |  +--ro direction?                             enumeration
     |                 |  +--ro oper-state?                            oc-cfm-types:operational-state-type
     |                 |  +--ro interface-state?                       oc-cfm-types:interface-status-type
     |                 |  +--ro fng-state?                             oc-cfm-types:fng-state-type
     |                 |  +--ro highest-priority-defect?               oc-cfm-types:highest-defect-priority-type
     |                 |  +--ro mep-defects*                           oc-cfm-types:mep-defects-type
     |                 |  +--ro present-rdi?                           boolean
     |                 |  +--ro config-errors-detected*                oc-cfm-types:config-error-type
     |                 |  +--ro error-ccm-last-failure?                binary
     |                 |  +--ro counters
     |                 |     +--ro mep-ccm-sequence-errors    oc-yang:counter64
     |                 |     +--ro mep-ccms-sent              oc-yang:counter64
     |                 +--rw pm-profiles
     |                 |  +--rw pm-profile* [profile-name]
     |                 |     +--rw profile-name    -> ../../../../../../../../../performance-measurement-profiles-global/performance-measurement-profile/config/profile-name
     |                 |     +--rw config
     |                 |     +--ro state
     |                 |        +--ro loss-measurement-state
     |                 |        |  +--ro far-end-min-frame-loss-ratio?        uint32
     |                 |        |  +--ro far-end-max-frame-loss-ratio?        uint32
     |                 |        |  +--ro far-end-average-frame-loss-ratio?    uint32
     |                 |        |  +--ro near-end-min-frame-loss-ratio?       uint32
     |                 |        |  +--ro near-end-max-frame-loss-ratio?       uint32
     |                 |        |  +--ro near-end-average-frame-loss-ratio?   uint32
     |                 |        |  +--ro counters
     |                 |        |     +--ro slm-sent?       oc-yang:counter64
     |                 |        |     +--ro slm-received?   oc-yang:counter64
     |                 |        |     +--ro slr-sent?       oc-yang:counter64
     |                 |        |     +--ro slr-received?   oc-yang:counter64
     |                 |        +--ro delay-measurement-state
     |                 |           +--ro frame-delay-two-way-min?       uint32
     |                 |           +--ro frame-delay-two-way-max?       uint32
     |                 |           +--ro frame-delay-two-way-average?   uint32
     |                 |           +--ro frame-delay-two-way-stddev?    uint32
     |                 |           +--ro counters
     |                 |              +--ro dmm-sent?       oc-yang:counter64
     |                 |              +--ro dmm-received?   oc-yang:counter64
     |                 |              +--ro dmr-sent?       oc-yang:counter64
     |                 |              +--ro dmr-received?   oc-yang:counter64
     |                 +--rw rdi
     |                 |  +--rw config
     |                 |  |  +--rw transmit-on-defect?   boolean
     |                 |  +--ro state
     |                 |     +--ro transmit-on-defect?   boolean
     |                 +--rw link-loss-forwarding
     |                 |  +--rw config
     |                 |  |  +--rw enable?   boolean
     |                 |  |  +--rw action?   enumeration
     |                 |  +--ro state
     |                 |     +--ro enable?   boolean
     |                 |     +--ro action?   enumeration
     |                 +--rw remote-meps
     |                    +--rw remote-mep* [id]
     |                       +--rw id        -> ../config/id
     |                       +--rw config
     |                       |  +--rw id?            oc-cfm-types:mep-id-type
     |                       |  +--rw mac-address?   oc-yang:mac-address
     |                       +--ro state
     |                          +--ro id?                        oc-cfm-types:mep-id-type
     |                          +--ro mac-address?               oc-yang:mac-address
     |                          +--ro oper-state?                oc-cfm-types:operational-state-type
     |                          +--ro interface-state?           oc-cfm-types:interface-status-type
     |                          +--ro fng-state?                 oc-cfm-types:fng-state-type
     |                          +--ro highest-priority-defect?   oc-cfm-types:highest-defect-priority-type
     |                          +--ro mep-defects*               oc-cfm-types:mep-defects-type
     |                          +--ro present-rdi?               boolean
     |                          +--ro config-errors-detected*    oc-cfm-types:config-error-type
     |                          +--ro error-ccm-last-failure?    binary
     |                          +--ro counters
     |                             +--ro mep-ccm-sequence-errors    oc-yang:counter64
     |                             +--ro mep-ccms-sent              oc-yang:counter64
     +--ro state
     |  +--ro local-meps?                    uint32
     |  +--ro local-meps-operational?        uint32
     |  +--ro cfm-domains?                   uint32
     |  +--ro cfm-services?                  uint32
     |  +--ro down-meps?                     uint32
     |  +--ro up-meps?                       uint32
     |  +--ro disabled-misconfigured?        uint32
     |  +--ro disabled-operational-errors?   uint32
     |  +--ro disabled-out-of-resources?     uint32
     |  +--ro peer-meps?                     uint32
     |  +--ro operational-peer-meps?         uint32
     |  +--ro peer-meps-with-defects?        uint32
     |  +--ro peer-meps-timed-out?           uint32
     +--rw performance-measurement-profiles-global
        +--rw performance-measurement-profile* [profile-name]
           +--rw profile-name    -> ../config/profile-name
           +--rw config
           |  +--rw profile-name?                    string
           |  +--rw enable?                          boolean
           |  +--rw measurement-type?                enumeration
           |  +--rw protocol-type?                   enumeration
           |  +--rw frame-size?                      uint16
           |  +--rw measurement-interval?            uint32
           |  +--rw repetition-period?               uint32
           |  +--rw intervals-archived?              uint16
           |  +--rw packets-per-meaurement-period?   uint16
           |  +--rw burst-interval?                  uint32
           |  +--rw packet-per-burst?                uint32
           +--ro state
              +--ro profile-name?                    string
              +--ro enable?                          boolean
              +--ro measurement-type?                enumeration
              +--ro protocol-type?                   enumeration
              +--ro frame-size?                      uint16
              +--ro measurement-interval?            uint32
              +--ro repetition-period?               uint32
              +--ro intervals-archived?              uint16
              +--ro packets-per-meaurement-period?   uint16
              +--ro burst-interval?                  uint32
              +--ro packet-per-burst?                uint32
              +--ro loss-measurement-state
              |  +--ro far-end-min-frame-loss-ratio?        uint32
              |  +--ro far-end-max-frame-loss-ratio?        uint32
              |  +--ro far-end-average-frame-loss-ratio?    uint32
              |  +--ro near-end-min-frame-loss-ratio?       uint32
              |  +--ro near-end-max-frame-loss-ratio?       uint32
              |  +--ro near-end-average-frame-loss-ratio?   uint32
              |  +--ro counters
              |     +--ro slm-sent?       oc-yang:counter64
              |     +--ro slm-received?   oc-yang:counter64
              |     +--ro slr-sent?       oc-yang:counter64
              |     +--ro slr-received?   oc-yang:counter64
              +--ro delay-measurement-state
                 +--ro frame-delay-two-way-min?       uint32
                 +--ro frame-delay-two-way-max?       uint32
                 +--ro frame-delay-two-way-average?   uint32
                 +--ro frame-delay-two-way-stddev?    uint32
                 +--ro counters
                    +--ro dmm-sent?       oc-yang:counter64
                    +--ro dmm-received?   oc-yang:counter64
                    +--ro dmr-sent?       oc-yang:counter64
                    +--ro dmr-received?   oc-yang:counter64

}
}

uses cfm-top;
Copy link
Contributor

Choose a reason for hiding this comment

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

Should there be some hierarchical structure to group OAM vs. CFM directly at the root?

Copy link

Choose a reason for hiding this comment

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

I support this to hopefully get a Juniper LFM augmentation.

Copy link
Author

Choose a reason for hiding this comment

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

earies are you suggesting we have an umbrella node; i.e "openconfig/EthernetOAM/cfm"?

Copy link
Member

Choose a reason for hiding this comment

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

Yes, how about adding a top level container for /oam and nesting cfm under that as: /oam/cfm

Copy link
Member

Choose a reason for hiding this comment

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

So a specific proposal is to create a openconfig-oam.yang file with the top level /oam container. Then another file for openconfig-oam-cfm.yang which augments the /oam path.

@dplore
Copy link
Member

dplore commented Sep 18, 2024

/gcbrun

@OpenConfigBot
Copy link

OpenConfigBot commented Sep 18, 2024

No major YANG version changes in commit 8773950

* removes trailing spaces.
* removes unused and non OC flavoured imports (ietf).
* moves leaf nomenclature from "_" to "-" .
* add damping timer leaf to LLF feature.
@AnnamalaiRajeev
Copy link
Author

Tree view Commit 7

module: openconfig-cfm
  +--rw cfm
     +--rw domains
     |  +--rw maintenance-domain* [md-id]
     |     +--rw md-id                       -> ../config/md-id
     |     +--rw config
     |     |  +--rw md-id?           oc-cfm-types:name-key-type
     |     |  +--rw level?           uint8
     |     |  +--rw md-name-type?    enumeration
     |     |  +--rw none?            boolean
     |     |  +--rw dns-like-name?   string
     |     |  +--rw address          oc-yang:mac-address
     |     |  +--rw unsigned-int     uint16
     |     |  +--rw char-string?     string
     |     +--ro state
     |     |  +--ro md-id?           oc-cfm-types:name-key-type
     |     |  +--ro level?           uint8
     |     |  +--ro md-name-type?    enumeration
     |     |  +--ro none?            boolean
     |     |  +--ro dns-like-name?   string
     |     |  +--ro address          oc-yang:mac-address
     |     |  +--ro unsigned-int     uint16
     |     |  +--ro char-string?     string
     |     +--rw maintenance-associations
     |        +--rw maintenance-association* [ma-id]
     |           +--rw ma-id            -> ../config/ma-id
     |           +--rw config
     |           |  +--rw ma-id?            oc-cfm-types:name-key-type
     |           |  +--rw group-name?       string
     |           |  +--rw ma-name-type?     enumeration
     |           |  +--rw primary-vid       oc-vlan-types:vlan-id
     |           |  +--rw char-string       string
     |           |  +--rw unsigned-int16    uint16
     |           |  +--rw vpn-oui           uint32
     |           |  +--rw vpn-index         uint32
     |           |  +--rw ccm-interval?     enumeration
     |           |  +--rw loss-threshold?   uint16
     |           +--ro state
     |           |  +--ro ma-id?            oc-cfm-types:name-key-type
     |           |  +--ro group-name?       string
     |           |  +--ro ma-name-type?     enumeration
     |           |  +--ro primary-vid       oc-vlan-types:vlan-id
     |           |  +--ro char-string       string
     |           |  +--ro unsigned-int16    uint16
     |           |  +--ro vpn-oui           uint32
     |           |  +--ro vpn-index         uint32
     |           |  +--ro ccm-interval?     enumeration
     |           |  +--ro loss-threshold?   uint16
     |           +--rw mep-endpoints
     |              +--rw mep-endpoint* [local-mep-id]
     |                 +--rw local-mep-id            -> ../config/local-mep-id
     |                 +--rw config
     |                 |  +--rw ccm-enabled?                           boolean
     |                 |  +--rw lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
     |                 |  +--rw fng-alarm-time?                        uint16
     |                 |  +--rw fng-reset-time?                        uint16
     |                 |  +--rw local-mep-id?                          oc-cfm-types:mep-id-type
     |                 |  +--rw interface?                             -> /oc-if:interfaces/interface/name
     |                 |  +--rw include-mep-port-status-in-tlv?        boolean
     |                 |  +--rw include-mep-interface-status-in-tlv?   boolean
     |                 |  +--rw direction?                             enumeration
     |                 +--ro state
     |                 |  +--ro ccm-enabled?                           boolean
     |                 |  +--ro lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
     |                 |  +--ro fng-alarm-time?                        uint16
     |                 |  +--ro fng-reset-time?                        uint16
     |                 |  +--ro local-mep-id?                          oc-cfm-types:mep-id-type
     |                 |  +--ro interface?                             -> /oc-if:interfaces/interface/name
     |                 |  +--ro include-mep-port-status-in-tlv?        boolean
     |                 |  +--ro include-mep-interface-status-in-tlv?   boolean
     |                 |  +--ro direction?                             enumeration
     |                 |  +--ro oper-state?                            oc-cfm-types:operational-state-type
     |                 |  +--ro interface-state?                       oc-cfm-types:interface-status-type
     |                 |  +--ro fng-state?                             oc-cfm-types:fng-state-type
     |                 |  +--ro highest-priority-defect?               oc-cfm-types:highest-defect-priority-type
     |                 |  +--ro mep-defects*                           oc-cfm-types:mep-defects-type
     |                 |  +--ro present-rdi?                           boolean
     |                 |  +--ro config-errors-detected*                oc-cfm-types:config-error-type
     |                 |  +--ro error-ccm-last-failure?                binary
     |                 |  +--ro counters
     |                 |     +--ro mep-ccm-sequence-errors    oc-yang:counter64
     |                 |     +--ro mep-ccms-sent              oc-yang:counter64
     |                 +--rw pm-profiles
     |                 |  +--rw pm-profile* [profile-name]
     |                 |     +--rw profile-name    -> ../../../../../../../../../performance-measurement-profiles-global/performance-measurement-profile/config/profile-name
     |                 |     +--rw config
     |                 |     +--ro state
     |                 |        +--ro loss-measurement-state
     |                 |        |  +--ro far-end-min-frame-loss-ratio?        uint32
     |                 |        |  +--ro far-end-max-frame-loss-ratio?        uint32
     |                 |        |  +--ro far-end-average-frame-loss-ratio?    uint32
     |                 |        |  +--ro near-end-min-frame-loss-ratio?       uint32
     |                 |        |  +--ro near-end-max-frame-loss-ratio?       uint32
     |                 |        |  +--ro near-end-average-frame-loss-ratio?   uint32
     |                 |        |  +--ro counters
     |                 |        |     +--ro slm-sent?       oc-yang:counter64
     |                 |        |     +--ro slm-received?   oc-yang:counter64
     |                 |        |     +--ro slr-sent?       oc-yang:counter64
     |                 |        |     +--ro slr-received?   oc-yang:counter64
     |                 |        +--ro delay-measurement-state
     |                 |           +--ro frame-delay-two-way-min?       uint32
     |                 |           +--ro frame-delay-two-way-max?       uint32
     |                 |           +--ro frame-delay-two-way-average?   uint32
     |                 |           +--ro frame-delay-two-way-stddev?    uint32
     |                 |           +--ro counters
     |                 |              +--ro dmm-sent?       oc-yang:counter64
     |                 |              +--ro dmm-received?   oc-yang:counter64
     |                 |              +--ro dmr-sent?       oc-yang:counter64
     |                 |              +--ro dmr-received?   oc-yang:counter64
     |                 +--rw rdi
     |                 |  +--rw config
     |                 |  |  +--rw transmit-on-defect?   boolean
     |                 |  +--ro state
     |                 |     +--ro transmit-on-defect?   boolean
     |                 +--rw link-loss-forwarding
     |                 |  +--rw config
     |                 |  |  +--rw enable?          boolean
     |                 |  |  +--rw damping-timer?   uint64
     |                 |  |  +--rw action?          enumeration
     |                 |  +--ro state
     |                 |     +--ro enable?          boolean
     |                 |     +--ro damping-timer?   uint64
     |                 |     +--ro action?          enumeration
     |                 +--rw remote-meps
     |                    +--rw remote-mep* [id]
     |                       +--rw id        -> ../config/id
     |                       +--rw config
     |                       |  +--rw id?            oc-cfm-types:mep-id-type
     |                       |  +--rw mac-address?   oc-yang:mac-address
     |                       +--ro state
     |                          +--ro id?                        oc-cfm-types:mep-id-type
     |                          +--ro mac-address?               oc-yang:mac-address
     |                          +--ro oper-state?                oc-cfm-types:operational-state-type
     |                          +--ro interface-state?           oc-cfm-types:interface-status-type
     |                          +--ro fng-state?                 oc-cfm-types:fng-state-type
     |                          +--ro highest-priority-defect?   oc-cfm-types:highest-defect-priority-type
     |                          +--ro mep-defects*               oc-cfm-types:mep-defects-type
     |                          +--ro present-rdi?               boolean
     |                          +--ro config-errors-detected*    oc-cfm-types:config-error-type
     |                          +--ro error-ccm-last-failure?    binary
     |                          +--ro counters
     |                             +--ro mep-ccm-sequence-errors    oc-yang:counter64
     |                             +--ro mep-ccms-sent              oc-yang:counter64
     +--ro state
     |  +--ro local-meps?                    uint32
     |  +--ro local-meps-operational?        uint32
     |  +--ro cfm-domains?                   uint32
     |  +--ro cfm-services?                  uint32
     |  +--ro down-meps?                     uint32
     |  +--ro up-meps?                       uint32
     |  +--ro disabled-misconfigured?        uint32
     |  +--ro disabled-operational-errors?   uint32
     |  +--ro disabled-out-of-resources?     uint32
     |  +--ro peer-meps?                     uint32
     |  +--ro operational-peer-meps?         uint32
     |  +--ro peer-meps-with-defects?        uint32
     |  +--ro peer-meps-timed-out?           uint32
     +--rw performance-measurement-profiles-global
        +--rw performance-measurement-profile* [profile-name]
           +--rw profile-name    -> ../config/profile-name
           +--rw config
           |  +--rw profile-name?                    string
           |  +--rw enable?                          boolean
           |  +--rw measurement-type?                enumeration
           |  +--rw protocol-type?                   enumeration
           |  +--rw frame-size?                      uint16
           |  +--rw measurement-interval?            uint32
           |  +--rw repetition-period?               uint32
           |  +--rw intervals-archived?              uint16
           |  +--rw packets-per-meaurement-period?   uint16
           |  +--rw burst-interval?                  uint32
           |  +--rw packet-per-burst?                uint32
           +--ro state
              +--ro profile-name?                    string
              +--ro enable?                          boolean
              +--ro measurement-type?                enumeration
              +--ro protocol-type?                   enumeration
              +--ro frame-size?                      uint16
              +--ro measurement-interval?            uint32
              +--ro repetition-period?               uint32
              +--ro intervals-archived?              uint16
              +--ro packets-per-meaurement-period?   uint16
              +--ro burst-interval?                  uint32
              +--ro packet-per-burst?                uint32
              +--ro loss-measurement-state
              |  +--ro far-end-min-frame-loss-ratio?        uint32
              |  +--ro far-end-max-frame-loss-ratio?        uint32
              |  +--ro far-end-average-frame-loss-ratio?    uint32
              |  +--ro near-end-min-frame-loss-ratio?       uint32
              |  +--ro near-end-max-frame-loss-ratio?       uint32
              |  +--ro near-end-average-frame-loss-ratio?   uint32
              |  +--ro counters
              |     +--ro slm-sent?       oc-yang:counter64
              |     +--ro slm-received?   oc-yang:counter64
              |     +--ro slr-sent?       oc-yang:counter64
              |     +--ro slr-received?   oc-yang:counter64
              +--ro delay-measurement-state
                 +--ro frame-delay-two-way-min?       uint32
                 +--ro frame-delay-two-way-max?       uint32
                 +--ro frame-delay-two-way-average?   uint32
                 +--ro frame-delay-two-way-stddev?    uint32
                 +--ro counters
                    +--ro dmm-sent?       oc-yang:counter64
                    +--ro dmm-received?   oc-yang:counter64
                    +--ro dmr-sent?       oc-yang:counter64
                    +--ro dmr-received?   oc-yang:counter64

@nleiva
Copy link

nleiva commented Sep 24, 2024

Good job @AnnamalaiRajeev. The only thing I couldn't map from our current configs is the option to enable automatic discovery of a MEP. Is there any other way to represent this in the model? Thanks

Juniper description: "With automatic discovery a MEP is enabled to accept continuity check messages (CCMs) from all remote MEPs of the same maintenance association. If automatic discovery is not enabled, the remote MEPs must be configured. If the remote MEP is not configured, the CCMs from the remote MEP are treated as errors."

@dplore
Copy link
Member

dplore commented Sep 24, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Sep 25, 2024

/gcbrun

@AnnamalaiRajeev
Copy link
Author

AI:

  • add OAM file and have cfm augmented

@dplore
Copy link
Member

dplore commented Oct 18, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Oct 25, 2024

/gcbrun

@dplore dplore added the last-call PR that is in final review before merging. label Nov 12, 2024
@dplore
Copy link
Member

dplore commented Nov 12, 2024

Last call for comments. This will merge on Nov 19, 2024

@dplore
Copy link
Member

dplore commented Nov 12, 2024

@AnnamalaiRajeev follow up comment from last week's operator review:

Please add a leaf for MEP auto-discovery. Because there is not a standard for the default value, then don’t specify a default in yang, rather users must configure explicitly true or false. If unset, then it’s implementation specific.

@AnnamalaiRajeev
Copy link
Author

@AnnamalaiRajeev follow up comment from last week's operator review:

Please add a leaf for MEP auto-discovery. Because there is not a standard for the default value, then don’t specify a default in yang, rather users must configure explicitly true or false. If unset, then it’s implementation specific.

This is done. ptal thx

@AnnamalaiRajeev
Copy link
Author

Commit 20 . # last call

/anamalai/oam/google3/third_party/openconfig/public/release/models/oam/openconfig-oam-cfm.yang
module: openconfig-oam-cfm

  augment /oc-oam:oam:
    +--rw cfm
       +--rw domains
       |  +--rw maintenance-domain* [md-id]
       |     +--rw md-id                       -> ../config/md-id
       |     +--rw config
       |     |  +--rw md-id?           oc-cfm-types:name-key-type
       |     |  +--rw level?           uint8
       |     |  +--rw md-name-type?    enumeration
       |     |  +--rw none?            boolean
       |     |  +--rw dns-like-name?   string
       |     |  +--rw address          oc-yang:mac-address
       |     |  +--rw unsigned-int     uint16
       |     |  +--rw char-string?     string
       |     +--ro state
       |     |  +--ro md-id?           oc-cfm-types:name-key-type
       |     |  +--ro level?           uint8
       |     |  +--ro md-name-type?    enumeration
       |     |  +--ro none?            boolean
       |     |  +--ro dns-like-name?   string
       |     |  +--ro address          oc-yang:mac-address
       |     |  +--ro unsigned-int     uint16
       |     |  +--ro char-string?     string
       |     +--rw maintenance-associations
       |        +--rw maintenance-association* [ma-id]
       |           +--rw ma-id            -> ../config/ma-id
       |           +--rw config
       |           |  +--rw ma-id?            oc-cfm-types:name-key-type
       |           |  +--rw group-name?       string
       |           |  +--rw ma-name-type?     enumeration
       |           |  +--rw primary-vid       oc-vlan-types:vlan-id
       |           |  +--rw char-string       string
       |           |  +--rw unsigned-int16    uint16
       |           |  +--rw vpn-oui           uint32
       |           |  +--rw vpn-index         uint32
       |           |  +--rw ccm-interval?     enumeration
       |           |  +--rw loss-threshold?   uint16
       |           +--ro state
       |           |  +--ro ma-id?            oc-cfm-types:name-key-type
       |           |  +--ro group-name?       string
       |           |  +--ro ma-name-type?     enumeration
       |           |  +--ro primary-vid       oc-vlan-types:vlan-id
       |           |  +--ro char-string       string
       |           |  +--ro unsigned-int16    uint16
       |           |  +--ro vpn-oui           uint32
       |           |  +--ro vpn-index         uint32
       |           |  +--ro ccm-interval?     enumeration
       |           |  +--ro loss-threshold?   uint16
       |           +--rw mep-endpoints
       |              +--rw mep-endpoint* [local-mep-id]
       |                 +--rw local-mep-id            -> ../config/local-mep-id
       |                 +--rw config
       |                 |  +--rw ccm-enabled?                           boolean
       |                 |  +--rw lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
       |                 |  +--rw fng-alarm-time?                        uint16
       |                 |  +--rw fng-reset-time?                        uint16
       |                 |  +--rw local-mep-id?                          oc-cfm-types:mep-id-type
       |                 |  +--rw interface?                             -> /oc-if:interfaces/interface/name
       |                 |  +--rw include-mep-port-status-in-tlv?        boolean
       |                 |  +--rw include-mep-interface-status-in-tlv?   boolean
       |                 |  +--rw direction?                             enumeration
       |                 |  +--rw auto-discovery?                        boolean
       |                 +--ro state
       |                 |  +--ro ccm-enabled?                           boolean
       |                 |  +--ro lowest-priority-defect?                oc-cfm-types:lowest-alarm-priority-type
       |                 |  +--ro fng-alarm-time?                        uint16
       |                 |  +--ro fng-reset-time?                        uint16
       |                 |  +--ro local-mep-id?                          oc-cfm-types:mep-id-type
       |                 |  +--ro interface?                             -> /oc-if:interfaces/interface/name
       |                 |  +--ro include-mep-port-status-in-tlv?        boolean
       |                 |  +--ro include-mep-interface-status-in-tlv?   boolean
       |                 |  +--ro direction?                             enumeration
       |                 |  +--ro auto-discovery?                        boolean
       |                 |  +--ro oper-state?                            oc-cfm-types:operational-state-type
       |                 |  +--ro interface-state?                       oc-cfm-types:interface-status-type
       |                 |  +--ro fng-state?                             oc-cfm-types:fng-state-type
       |                 |  +--ro highest-priority-defect?               oc-cfm-types:highest-defect-priority-type
       |                 |  +--ro mep-defects*                           oc-cfm-types:mep-defects-type
       |                 |  +--ro present-rdi?                           boolean
       |                 |  +--ro config-errors-detected*                oc-cfm-types:config-error-type
       |                 |  +--ro error-ccm-last-failure?                binary
       |                 |  +--ro counters
       |                 |     +--ro mep-ccm-sequence-errors    oc-yang:counter64
       |                 |     +--ro mep-ccms-sent              oc-yang:counter64
       |                 +--rw pm-profiles
       |                 |  +--rw pm-profile* [profile-name]
       |                 |     +--rw profile-name    -> ../config/profile-name
       |                 |     +--rw config
       |                 |     |  +--rw profile-name?   string
       |                 |     +--ro state
       |                 |        +--ro profile-name?                    string
       |                 |        +--ro enable?                          boolean
       |                 |        +--ro measurement-type?                enumeration
       |                 |        +--ro protocol-type?                   enumeration
       |                 |        +--ro frame-size?                      uint16
       |                 |        +--ro measurement-interval?            uint32
       |                 |        +--ro repetition-period?               uint32
       |                 |        +--ro intervals-archived?              uint16
       |                 |        +--ro packets-per-meaurement-period?   uint16
       |                 |        +--ro burst-interval?                  uint32
       |                 |        +--ro packet-per-burst?                uint32
       |                 |        +--ro loss-measurement-state
       |                 |        |  +--ro far-end-min-frame-loss-ratio?        uint32
       |                 |        |  +--ro far-end-max-frame-loss-ratio?        uint32
       |                 |        |  +--ro far-end-average-frame-loss-ratio?    uint32
       |                 |        |  +--ro near-end-min-frame-loss-ratio?       uint32
       |                 |        |  +--ro near-end-max-frame-loss-ratio?       uint32
       |                 |        |  +--ro near-end-average-frame-loss-ratio?   uint32
       |                 |        |  +--ro counters
       |                 |        |     +--ro slm-sent?       oc-yang:counter64
       |                 |        |     +--ro slm-received?   oc-yang:counter64
       |                 |        |     +--ro slr-sent?       oc-yang:counter64
       |                 |        |     +--ro slr-received?   oc-yang:counter64
       |                 |        +--ro delay-measurement-state
       |                 |           +--ro frame-delay-two-way-min?       uint32
       |                 |           +--ro frame-delay-two-way-max?       uint32
       |                 |           +--ro frame-delay-two-way-average?   uint32
       |                 |           +--ro frame-delay-two-way-stddev?    uint32
       |                 |           +--ro counters
       |                 |              +--ro dmm-sent?       oc-yang:counter64
       |                 |              +--ro dmm-received?   oc-yang:counter64
       |                 |              +--ro dmr-sent?       oc-yang:counter64
       |                 |              +--ro dmr-received?   oc-yang:counter64
       |                 +--rw rdi
       |                 |  +--rw config
       |                 |  |  +--rw transmit-on-defect?   boolean
       |                 |  +--ro state
       |                 |     +--ro transmit-on-defect?   boolean
       |                 +--rw link-loss-forwarding
       |                 |  +--rw config
       |                 |  |  +--rw enable?          boolean
       |                 |  |  +--rw damping-timer?   uint64
       |                 |  |  +--rw action?          enumeration
       |                 |  +--ro state
       |                 |     +--ro enable?          boolean
       |                 |     +--ro damping-timer?   uint64
       |                 |     +--ro action?          enumeration
       |                 +--rw remote-meps
       |                    +--rw remote-mep* [id]
       |                       +--rw id        -> ../config/id
       |                       +--rw config
       |                       |  +--rw id?            oc-cfm-types:mep-id-type
       |                       |  +--rw mac-address?   oc-yang:mac-address
       |                       +--ro state
       |                          +--ro id?                        oc-cfm-types:mep-id-type
       |                          +--ro mac-address?               oc-yang:mac-address
       |                          +--ro oper-state?                oc-cfm-types:operational-state-type
       |                          +--ro interface-state?           oc-cfm-types:interface-status-type
       |                          +--ro fng-state?                 oc-cfm-types:fng-state-type
       |                          +--ro highest-priority-defect?   oc-cfm-types:highest-defect-priority-type
       |                          +--ro mep-defects*               oc-cfm-types:mep-defects-type
       |                          +--ro present-rdi?               boolean
       |                          +--ro config-errors-detected*    oc-cfm-types:config-error-type
       |                          +--ro error-ccm-last-failure?    binary
       |                          +--ro counters
       |                             +--ro mep-ccm-sequence-errors    oc-yang:counter64
       |                             +--ro mep-ccms-sent              oc-yang:counter64
       +--ro state
       |  +--ro local-meps?                    uint32
       |  +--ro local-meps-operational?        uint32
       |  +--ro cfm-domains?                   uint32
       |  +--ro cfm-services?                  uint32
       |  +--ro down-meps?                     uint32
       |  +--ro up-meps?                       uint32
       |  +--ro disabled-misconfigured?        uint32
       |  +--ro disabled-operational-errors?   uint32
       |  +--ro disabled-out-of-resources?     uint32
       |  +--ro peer-meps?                     uint32
       |  +--ro operational-peer-meps?         uint32
       |  +--ro peer-meps-with-defects?        uint32
       |  +--ro peer-meps-timed-out?           uint32
       +--rw performance-measurement-profiles-global
          +--rw performance-measurement-profile* [profile-name]
             +--rw profile-name    -> ../config/profile-name
             +--rw config
             |  +--rw profile-name?                    string
             |  +--rw enable?                          boolean
             |  +--rw measurement-type?                enumeration
             |  +--rw protocol-type?                   enumeration
             |  +--rw frame-size?                      uint16
             |  +--rw measurement-interval?            uint32
             |  +--rw repetition-period?               uint32
             |  +--rw intervals-archived?              uint16
             |  +--rw packets-per-meaurement-period?   uint16
             |  +--rw burst-interval?                  uint32
             |  +--rw packet-per-burst?                uint32
             +--ro state
                +--ro profile-name?                    string
                +--ro enable?                          boolean
                +--ro measurement-type?                enumeration
                +--ro protocol-type?                   enumeration
                +--ro frame-size?                      uint16
                +--ro measurement-interval?            uint32
                +--ro repetition-period?               uint32
                +--ro intervals-archived?              uint16
                +--ro packets-per-meaurement-period?   uint16
                +--ro burst-interval?                  uint32
                +--ro packet-per-burst?                uint32
                +--ro loss-measurement-state
                |  +--ro far-end-min-frame-loss-ratio?        uint32
                |  +--ro far-end-max-frame-loss-ratio?        uint32
                |  +--ro far-end-average-frame-loss-ratio?    uint32
                |  +--ro near-end-min-frame-loss-ratio?       uint32
                |  +--ro near-end-max-frame-loss-ratio?       uint32
                |  +--ro near-end-average-frame-loss-ratio?   uint32
                |  +--ro counters
                |     +--ro slm-sent?       oc-yang:counter64
                |     +--ro slm-received?   oc-yang:counter64
                |     +--ro slr-sent?       oc-yang:counter64
                |     +--ro slr-received?   oc-yang:counter64
                +--ro delay-measurement-state
                   +--ro frame-delay-two-way-min?       uint32
                   +--ro frame-delay-two-way-max?       uint32
                   +--ro frame-delay-two-way-average?   uint32
                   +--ro frame-delay-two-way-stddev?    uint32
                   +--ro counters
                      +--ro dmm-sent?       oc-yang:counter64
                      +--ro dmm-received?   oc-yang:counter64
                      +--ro dmr-sent?       oc-yang:counter64
                      +--ro dmr-received?   oc-yang:counter64

@dplore
Copy link
Member

dplore commented Nov 13, 2024

/gcbrun

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
last-call PR that is in final review before merging. non-breaking
Projects
Status: last-call
Development

Successfully merging this pull request may close these issues.

6 participants