IEEE 802.1AG CFM connectivity management + ITU Y1731 Performance management
Change Scope
- 802.1AG CFM + Y1731 Performance Management profiles are being added.
- Backward compatibility: True
Platform Implementations
// Vendor 1 CiscoXR:
- https://www.cisco.com/c/en/us/support/docs/asynchronous-transfer-mode-atm/operation-administration-maintenance-oam/117457-technote-cfm-00.html
- CiscoXR Yang - https://github.com/YangModels/yang/blob/main/vendor/cisco/xr/613/Cisco-IOS-XR-ethernet-cfm-cfg.yang
// Vendor 2 Juniper: https://www.juniper.net/documentation/us/en/software/junos/network-mgmt/topics/topic-map/cfm-configuring.html
// Vendor 3 Nokia:
- https://infocenter.nokia.com/public/7705SAR234R1A/index.jsp?topic=%2Fcom.nokia.oam-guide%2Fitu-t_y-1731_pe-ai9o99jjwe.html
[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
- IEEE - https://ieeexplore.ieee.org/document/4431836.
- Metro Ethernet Forum - https://github.com/MEF-GIT/YANG-public
- MEF yang - https://github.com/MEF-GIT/YANG-public/tree/master/src/model/standard
[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].
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.
// 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
/gcbrun
No major YANG version changes in commit 40ceced39e92d2d80cca62676b85dd4a298f2d61
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
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."
/gcbrun
/gcbrun
AI:
- add OAM file and have cfm augmented
/gcbrun
/gcbrun
Last call for comments. This will merge on Nov 19, 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 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
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
/gcbrun
/gcbrun
/gcbrun