<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yoon-ccamp-pm-streaming-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="PM Streaming YANG">A YANG Data Model of Performance Management Streaming</title>
    <seriesInfo name="Internet-Draft" value="draft-yoon-ccamp-pm-streaming-02"/>
    <author initials="B. Y." surname="Yoon" fullname="Bin Yeong Yoon">
      <organization>ETRI</organization>
      <address>
        <email>byyun@etri.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="06"/>
    <keyword>performance management</keyword>
    <keyword>streaming</keyword>
    <keyword>measurement</keyword>
    <abstract>
      <?line 45?>

<t>This document provides a YANG data model of performance management streaming from network equipment to clients. It defines pm measurement methods, event notifications, generic pm parameters and streaming subscriptions.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-ivy-wg.github.io/network-inventory-yang/draft-ietf-ivy-network-inventory-yang.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-yoon-ccamp-pm-streaming/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-ivy-wg/network-inventory-yang"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>With the rise of AI-driven applications, network digital twins, and increasingly dynamic network environments, there is growing demand for performance management (PM) streaming capabilities. PM streaming enables proactive issue detection, allowing network operators to identify and address potential problems before they
affect service. It also helps optimize resource allocation, ensuring efficient use of bandwidth and other network resources.</t>
      <t><xref target="IUT-T_G7710"/> provides a foundational framework for managing transport network elements, addressing requirements, parameters, and measurement methods for performance management. However, <xref target="IUT-T_G7710"/> does not define YANG data models or specific protocols needed for PM streaming, which are essential for modern network management. To support PM streaming, various IETF documents and protocols <xref target="RFC8639"/>, <xref target="RFC8640"/>, <xref target="RFC8641"/> can be utilized. This document provides a YANG data model for PM streaming in network equipment based on <xref target="IUT-T_G7710"/>, demonstrating how to subscribe to the YANG model using the IETF push model.</t>
    </section>
    <section anchor="pm-streaming">
      <name>PM Streaming</name>
      <figure anchor="fig-streaming-architecture">
        <name>Streaming Network Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="280" viewBox="0 0 280 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 8,128" fill="none" stroke="black"/>
              <path d="M 40,64 L 40,96" fill="none" stroke="black"/>
              <path d="M 64,32 L 64,64" fill="none" stroke="black"/>
              <path d="M 88,32 L 88,64" fill="none" stroke="black"/>
              <path d="M 112,64 L 112,96" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,64" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,64" fill="none" stroke="black"/>
              <path d="M 224,64 L 224,96" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,64" fill="none" stroke="black"/>
              <path d="M 256,96 L 256,128" fill="none" stroke="black"/>
              <path d="M 8,32 L 64,32" fill="none" stroke="black"/>
              <path d="M 88,32 L 136,32" fill="none" stroke="black"/>
              <path d="M 184,32 L 256,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 64,64" fill="none" stroke="black"/>
              <path d="M 88,64 L 136,64" fill="none" stroke="black"/>
              <path d="M 184,64 L 256,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 256,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 256,128" fill="none" stroke="black"/>
              <g class="text">
                <text x="36" y="52">OS</text>
                <text x="112" y="52">NDT</text>
                <text x="160" y="52">...</text>
                <text x="204" y="52">AI</text>
                <text x="232" y="52">APP</text>
                <text x="116" y="116">NE</text>
                <text x="16" y="148">OS:</text>
                <text x="72" y="148">Operation</text>
                <text x="140" y="148">System</text>
                <text x="20" y="164">NDT:</text>
                <text x="72" y="164">Network</text>
                <text x="136" y="164">Digital</text>
                <text x="192" y="164">Twins</text>
                <text x="20" y="180">APP:</text>
                <text x="88" y="180">Application</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
   +------+  +-----+     +--------+ 
   |  OS  |  | NDT | ... | AI APP |  
   +---+--+  +--+--+     +----+---+ 
       |        |             |
   +---+--------+-------------+---+ 
   |            NE                |
   +------------------------------+  
   OS: Operation System     
   NDT: Network Digital Twins
   APP: Application 
]]></artwork>
        </artset>
      </figure>
      <t>PM streaming is a real-time method for measuring and transmitting data to monitor the performance and health of network devices and systems. It provides valuable insights into key metrics like errored seconds (ES), latency, and packet loss, helping to optimize networks, detect anomalies, and manage faults proactively. Unlike traditional periodic data collection, PM streaming delivers continuous updates, enabling faster, more responsive network adjustments.</t>
      <t>Using telemetry protocols like YANG Push, PM streaming allows for more frequent and detailed performance monitoring. By integrating this data into AI-driven analytics, it supports preemptive interventions, enhancing overall network reliability. Additionally, it keeps digital twins synchronized with the physical network, offering real-time insights for predictive maintenance, planning, and optimization.</t>
      <t>The procedures for Performance Management streaming between a network node and clients such as operation systems (OS), AI applications, Network digital twins (NDT) involve continuous measurement of performance metrics on PM parameters using three methods: counts (tracking event occurrences), snapshot (instantaneous metric values), and tidemarks (extreme values over a period). Clients can initiate the process by sending a subscription request specifying the metrics, measurement methods, intervals, and filtering criteria. Once the node confirms the subscription, it collects and aggregates PM data based on the requested metrics and intervals. Notifications with PM data, including timestamps, metrics, and measurement methods, are sent to clients at each interval via protocols like NETCONF or RESTCONF. Clients then process the data, using it for real-time monitoring, historical analysis, or triggering alerts based on thresholds. They can also manage subscriptions by modifying parameters or suspending them as needed.</t>
    </section>
    <section anchor="pm-parameters">
      <name>PM parameters</name>
      <section anchor="types">
        <name>Types</name>
        <t>Performance monitoring (PM) in networks encompasses a wide variety of parameters that reflect operational health, service quality, reliability, and environmental conditions. These parameters are used across many technologies, network layers, and functional domains to enable fault management, SLA compliance, trend analysis, predictive maintenance, and operational optimization.</t>
        <t>PM parameter types include but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>Classical transport and packet layer metrics: such as errored seconds (ES), severely errored seconds (SES), unavailable seconds (UAS), background block errors (BBE), background block counts (BBC), delay, jitter, and packet loss, as defined in standards like <xref target="IUT-T_G7710"/>, and others.</t>
          </li>
          <li>
            <t>Layer-specific metrics:  </t>
            <ul spacing="normal">
              <li>
                <t>Physical layer: optical power levels, laser bias current, loss of signal</t>
              </li>
              <li>
                <t>Data link layer: Ethernet frame errors, FCS errors</t>
              </li>
              <li>
                <t>Network layer: dropped packets, route flaps</t>
              </li>
              <li>
                <t>Transport/Service layers: MPLS LSP statistics, OTN TCM/BIP counters</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Network environment parameters: including temperature, humidity, fan speed, voltage, and airflow. These are essential for equipment safety, energy management, and predictive failure analysis.</t>
          </li>
          <li>
            <t>Energy and sustainability metrics: such as power consumption, energy efficiency indicators, and cooling utilization, aligned with emerging sustainability standards and operational efficiency goals.</t>
          </li>
          <li>
            <t>Security and integrity parameters: such as pointer justification events (PJE), synchronization loss, or intrusion anomaly flags.</t>
          </li>
          <li>
            <t>Application-aware or SLA metrics: such as service availability, throughput consistency, and application-layer latency.</t>
          </li>
          <li>
            <t>Mobile network-specific metrics: including radio link failures, handover success/failure rates, RRC connection setup time, PDCP discard rate, and throughput per bearer. These metrics are critical for monitoring the performance of RAN, core, and edge network components in 4G/5G mobile environments.</t>
          </li>
        </ul>
        <t>These parameters may be grouped flexibly within the YANG model using parameter profiles that reflect shared characteristics, purpose, or applicable network domains. The architecture supports extension through identity-based typing to accommodate future parameter definitions introduced by standard bodies like ITU-T, IEEE, IETF, MEF, and TM Forum.</t>
      </section>
      <section anchor="profiles">
        <name>Profiles</name>
        <figure anchor="fig-profile-tree">
          <name>Parameter Profile Subtree</name>
          <artwork type="ascii-art"><![CDATA[
     +--rw parameter-profile* [name]
        +--rw name            profile-names
        +--rw pm-parameter* [name]
           +--rw name                 string
]]></artwork>
        </figure>
        <t>The YANG model defines the concept of a parameter profile to logically group performance parameters that are commonly measured together for a specific operational purpose. Each parameter profile is represented as an identity derived from the parameter-profile-name base identity. These profiles serve as named collections of performance parameters and are intended to facilitate streamlined configuration, management, and reporting of measurement data across network elements and management systems.</t>
        <t>The use of parameter profiles improves operational efficiency by allowing operators, applications, and controllers to activate or reference a coherent set of parameters using a single profile identifier. For example, the itu-maintenance-transport-15min profile may include parameters such as errored seconds (ES), severely errored seconds (SES), and unavailable seconds (UAS), which are typically monitored together for network maintenance and fault detection purposes. Similarly, the ietf-qos-ip-24hr profile may include delay, jitter, and loss parameters used in service quality reporting.
Parameter profiles support role-based access control, operational alignment, and measurement policy abstraction, enabling network operators and analytics systems to tailor data collection and reporting according to the needs of different users and services. The profile abstraction also aligns with <xref target="IUT-T_G7710"/>, which identifies multiple classes of performance monitoring (e.g., maintenance, service-level, and compliance monitoring), each requiring specific sets of performance parameters.</t>
        <t>By modeling profiles as identities, the YANG design ensures extensibility and vendor interoperability, allowing future profiles to be defined without changes to the core data structures. This approach promotes consistent configuration and integration across multi-vendor environments and supports dynamic service assurance use cases where parameter sets may vary by service type, SLA, or operational context.</t>
        <section anchor="naming">
          <name>Naming</name>
          <t>Parameter profiles are named to reflect their operational purpose, origin, applicable network domain, and, optionally, the primary measurement interval. This naming structure supports clarity, modularity, and automation across diverse network and service layers.</t>
          <t>The naming follows this format:</t>
          <t>&lt;source&gt;-&lt;network&gt;-&lt;purpose&gt;[-&lt;characteristic&gt;]</t>
          <t>Where:</t>
          <ul spacing="normal">
            <li>
              <t>&lt;source&gt;: Standards body or organization
              </t>
              <ul spacing="normal">
                <li>
                  <t>Examples: itu, ieee, ietf, vendorX</t>
                </li>
              </ul>
            </li>
            <li>
              <t>&lt;network&gt;: Network domain or layer
              </t>
              <ul spacing="normal">
                <li>
                  <t>Examples: transport, access, core, ip, mpls, ethernet, otn, wdm, flexo</t>
                </li>
              </ul>
            </li>
            <li>
              <t>&lt;purpose&gt;: Intended use or function
              </t>
              <ul spacing="normal">
                <li>
                  <t>Examples: maintenance, qos, availability, sla, compliance, analytics</t>
                </li>
              </ul>
            </li>
            <li>
              <t>&lt;characteristic&gt; (optional): Optional qualifying information
              </t>
              <ul spacing="normal">
                <li>
                  <t>Examples: 15min, 24hr, high-priority</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Examples:</t>
          <ul spacing="normal">
            <li>
              <t>itu-transport-maintenance-15min</t>
            </li>
            <li>
              <t>itu-transport-qos-24hr</t>
            </li>
            <li>
              <t>ieee-access-availability</t>
            </li>
            <li>
              <t>ietf-ip-qos-24hr</t>
            </li>
            <li>
              <t>vendorx-otn-sla</t>
            </li>
          </ul>
          <t>'transport' means that the profile applies to multiple technologies (e.g., OTN, MPLS-TP, Transport Ethernet, etc.).</t>
          <t>The 15-minute interval provides granular, real-time monitoring, allowing network operators to quickly detect and address short-term issues such as spikes in latency or packet loss. It is particularly useful for ensuring compliance with Service-Level Agreements (SLAs) and for managing highly dynamic networks where rapid changes can occur. In contrast, the 24-hour interval is used for long-term performance monitoring and trend analysis, helping operators understand overall network health, detect slow-developing issues, and plan for future capacity needs. This longer interval offers a broader view of the network's performance over a full day, making it ideal for strategic planning and infrastructure maintenance. Together, these intervals enable both immediate responses to network conditions and long-term network optimization.</t>
        </section>
      </section>
      <section anchor="transport-common-pm-parameters">
        <name>Transport Common PM Parameters</name>
        <t>Metric value of PM parameters is measured for maintenance and QoS monitoring
over networks. Quality of Service (QoS) parameters are designed to assess
the network's long-term ability to consistently deliver agreed-upon service
quality to customers. They primarily verify performance against contractual
obligations defined in service-level agreements (SLAs) over longer intervals
(24 hours, monthly periods). By simultaneously measuring both directions of
a bidirectional connection, QoS parameters provide a holistic view of the
sustained quality experienced by users, ensuring stability and predictability.</t>
        <t>Maintenance parameters focus on short-term monitoring and detailed analysis
for operational reliability. Maintenance parameters, over intervals such as
15 minutes or 24 hours, facilitate swift responses to intermittent faults,
bursts of errors, and subtle performance changes. Maintenance parameters typically involve unidirectional analysis, where each direction of transmission is monitored independently. This unidirectional approach helps network operators precisely pinpoint faults, troubleshoot intermittent issues, and perform preventive maintenance effectively.</t>
        <t>Key PM parameters focused on circuit networks such as OTN are listed as
follows. Additional parameters will be needed for packet networks.</t>
        <ul spacing="normal">
          <li>
            <t>ES      Errored Seconds</t>
          </li>
          <li>
            <t>SES     Severely Errored Seconds</t>
          </li>
          <li>
            <t>BBE     Background Block Errors</t>
          </li>
          <li>
            <t>BBC     Background Block Count</t>
          </li>
          <li>
            <t>UAS     Unavailable Seconds</t>
          </li>
          <li>
            <t>SEP     Severely Errored Period</t>
          </li>
          <li>
            <t>PJE     Pointer Justification Events</t>
          </li>
          <li>
            <t>UAS     Unavailable Seconds</t>
          </li>
        </ul>
        <t>According to the types of the measurement methods, purposes, and time intervals, different parameters are used. The following three transport profiles provide comprehensive coverage for maintenance and QoS monitoring across different temporal resolutions:</t>
        <section anchor="itu-transport-maintenance-15min-profile">
          <name>itu-transport-maintenance-15min Profile</name>
          <t>The <tt>itu-transport-maintenance-15min</tt> profile is designed for short-term operational monitoring and rapid fault detection. This profile utilizes all three measurement methods (counts, snapshot, and tidemarks) over 15-minute intervals to provide granular visibility into network performance. The profile includes core maintenance parameters: ES, SES, BBE, BBC, and UAS.</t>
          <t>The 15-minute interval enables operators to quickly detect and respond to performance degradation, making it ideal for proactive maintenance and immediate troubleshooting. The combination of counts (for cumulative event tracking), snapshot (for instantaneous state capture), and tidemarks (for extreme value monitoring) provides a comprehensive view of network behavior within each measurement period. This profile is particularly valuable for network operations centers (NOCs) requiring real-time visibility into transport network health and for automated systems that need to trigger immediate responses to performance anomalies.</t>
        </section>
        <section anchor="itu-transport-maintenance-24hr-profile">
          <name>itu-transport-maintenance-24hr Profile</name>
          <t>The <tt>itu-transport-maintenance-24hr</tt> profile extends the maintenance monitoring capabilities to longer-term analysis and trend identification. Similar to the 15-minute profile, it employs all three measurement methods (counts, snapshot, and tidemarks) but over 24-hour intervals. The parameter set includes ES, SES, BBE, BBC, UAS, and additionally PJE.</t>
          <t>The 24-hour measurement interval allows for comprehensive daily performance analysis, enabling operators to identify patterns, trends, and recurring issues that may not be apparent in shorter intervals. The inclusion of PJE provides additional insight into synchronization-related performance issues that are more relevant over longer observation periods. This profile supports strategic maintenance planning, capacity management, and historical performance analysis. It complements the 15-minute profile by providing the broader context needed for long-term network optimization and preventive maintenance strategies.</t>
        </section>
        <section anchor="itu-transport-qos-24hr-profile">
          <name>itu-transport-qos-24hr Profile</name>
          <t>The <tt>itu-transport-qos-24hr</tt> profile is specifically designed for Quality of Service monitoring and SLA compliance verification. Unlike the maintenance profiles, this profile focuses exclusively on the counts measurement method over 24-hour intervals, emphasizing sustained performance assessment rather than detailed operational monitoring. The parameter set includes ES, SES, BBE, BBC, SEP, and UAS.</t>
          <t>The QoS profile's exclusive use of counts measurement method reflects its focus on cumulative performance over extended periods, which is essential for SLA compliance and service quality reporting. The 24-hour interval aligns with typical SLA measurement periods and provides the statistical basis for service quality assessments. The inclusion of SEP is particularly relevant for QoS monitoring as it represents sustained periods of degraded performance that directly impact service quality commitments.</t>
        </section>
        <section anchor="profile-relationships-and-operational-integration">
          <name>Profile Relationships and Operational Integration</name>
          <t>These three profiles work together to provide a comprehensive performance monitoring framework. The <tt>itu-transport-maintenance-15min</tt> profile serves as the primary operational tool for immediate network management, while the <tt>itu-transport-maintenance-24hr</tt> profile provides the analytical foundation for strategic planning and trend analysis. The <tt>itu-transport-qos-24hr</tt> profile ensures that service quality commitments are met and provides the data necessary for SLA reporting and customer assurance.</t>
          <t>The hierarchical relationship between these profiles enables operators to correlate short-term operational events with long-term performance trends and service quality metrics. For example, a spike in ES detected by the 15-minute maintenance profile can be correlated with daily trends from the 24-hour maintenance profile and assessed against SLA thresholds defined in the QoS profile. This integrated approach supports both reactive troubleshooting and proactive network optimization while ensuring compliance with service quality commitments.</t>
        </section>
      </section>
    </section>
    <section anchor="periodic-measurement">
      <name>Periodic Measurement</name>
      <section anchor="measurement-timing">
        <name>Measurement Timing</name>
        <figure anchor="fig-interval-tree">
          <name>Sampling and Measurement Intervals Subtree</name>
          <artwork type="ascii-art"><![CDATA[
  +--rw sampling-interval* [id]
     +--rw id                      string
     +--rw interval-value?         uint32
     +--rw unit?                   time-interval-unit
     +--rw measurement-interval* [id]
        +--rw id                     string
        +--rw interval-value?        uint32
        +--rw unit?                  time-interval-unit
]]></artwork>
        </figure>
        <t>Measurement timing parameters are key components of network performance management, offering standardized definitions for the time-related aspects of sampling, measuring, and reporting performance data. These parameters apply to the three main measurement methods for network equipment: counts, snapshot, and tidemarks. They include the sampling interval, measurement interval, and uniform time, all of which support consistent, accurate, and systematic performance monitoring and management.</t>
        <t>Sampling interval defines the period at which network performance data is collected at consistent, predetermined time points. It ensures the continuous and timely capture of performance metrics, enabling accurate assessments of network conditions.</t>
        <t>Measurement interval specifies the duration over which sampled performance data is aggregated or statistically processed. It helps manage large volumes of data by summarizing it into meaningful indicators for analysis, anomaly detection, and resource management.</t>
        <t>Uniform time is a fixed, predefined point within each measurement interval at which a snapshot measurement is taken. It enables a consistent and instantaneous view of network performance across intervals, without requiring data aggregation. This approach facilitates quick diagnostics and synchronization across monitoring systems.</t>
        <section anchor="use-cases">
          <name>Use Cases</name>
          <t>The hierarchical design of the ietf-pm-measurements YANG module, wherein a performance parameter supports multiple sampling intervals and each sampling interval may be associated with multiple measurement intervals and methods, is motivated by a set of operationally validated use cases as shown in the following table. In these use cases, a single logical client-whether a human operator, network application, or analytics engine-requires simultaneous access to multiple views of the same performance parameter, differentiated by temporal resolution and analysis objective.</t>
          <t>In network operations centers (NOCs), a operator may require performance monitoring based on high-frequency samples (e.g., 1-second sampling with 15-minute measurement intervals), while concurrently assessing longer-term service-level agreement (SLA) compliance through longer measurement windows (e.g., 24-hour aggregation). It aligns with the performance monitoring functions and applications on performance monitoring parameters such as errored seconds (ES), etc. described in <xref target="IUT-T_G7710"/>.</t>
          <t>A single dashboard or planning tool may correlate short-term utilization spikes with long-term trends using different sampling and measurement combinations on the same parameter.
Network Performance Monitor for Critical Link Stability monitor tracks latency using the counts method at multiple time resolutions to address immediate service degradation and long-term path reliability. A single monitoring platform benefits from consistent sampling while leveraging different measurement intervals to inform short-term action and long-term optimization.</t>
          <t>An AI/ML analytics system may ingest the same parameter, such as ES at different granularities for multiple purposes: high-resolution data for anomaly detection, medium-resolution tidemarks for real-time model updates, and low-resolution tidemarks for daily or monthly training. All of these operations may be performed within the scope of a single analytics application.</t>
          <t>A digital twin platform continuously mirrors the real-time behavior of a physical network using packet delay variation (pdv). To accurately represent dynamic conditions, the system uses very fine-grained sampling with multiple count-based measurement intervals to feed simulation models and predictive engines in real time. "Operational synchronization with the physical network" has been revised to "Real-time alignment with the physical network state" for better clarity and precision in the context of digital twin systems Measurement data is ingested at short intervals (e.g., 1 minute) to maintain near-instantaneous synchronization with the physical network's current performance. This supports accurate digital mirroring. A slightly longer interval (e.g., 5 minutes) allows the twin to detect and buffer small fluctuations, supporting feedback loops that smooth reactive behavior and adapt to transient changes. Long-term intervals (e.g., 1 hour) feed higher-order analytics and AI-based learning models that detect drift, optimize resource allocation, and improve future simulation fidelity.</t>
          <t>In all these cases, the hierarchical list structure-where parameters contain multiple sampling intervals, and each sampling interval defines one or more measurement intervals and methods-supports operational flexibility, avoids configuration duplication, and enables fine-grained control of measurement strategies.</t>
          <figure anchor="tab-usecases">
            <name>Use cases of sampling and measurement intervals</name>
            <artwork><![CDATA[
+-------------+-----------+-------------+-------------+-----------------+
| Client Type | Sampling  | Measurement | Measurement | Purpose         |
| (parameter) | Interval  | Interval    | Methods     |                 |
+-------------+-----------+-------------+-------------+-----------------+
| NOC         | 1s        | 15min       | tidemarks   | Maintenance     |
| (ES)        |           +-------------+-------------+-----------------+
|             |           | 24hr        | tidemarks   | QoS             |
+-------------+-----------+-------------+-------------+-----------------+
| NOC         | 500ms     | 1min        | counts      | Delay spikes    |
| (latency)   |           +-------------+-------------+-----------------+
|             |           | 30min       | counts      | Recurring bursts|
|             |           +-------------+-------------+-----------------+
|             |           | 24hr        | counts      | Trends          |                   
+-------------+-----------+-------------+-------------+-----------------+
| AI/ML       | 1s        | 1min        | tidemarks   | Anomaly detect  |
| Analytics   |           |-------------+-------------+-----------------+
| System      |           | 15min       | tidemarks   | Trend           |
| (ES)        |           |-------------+-------------+-----------------+
|             |           | 24hr        | tidemarks   | Model training  |
+-------------+-----------+-------------+-------------+-----------------+
| Digital     | 100ms     | 1min        | counts      | Synchronization |
| Twin        |           +-------------+-------------+-----------------+
| (pdv)       |           | 5min        | counts      | Feedback loop   |
|             |           +-------------+-------------+-----------------+
|             |           | 1hr         | counts      | Learning model  |
+-------------+-----------+-------------+-------------+-----------------+
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="measurement-methods">
        <name>Measurement Methods</name>
        <figure anchor="fig-measurement-tree">
          <name>Measurement Methods Subtree</name>
          <artwork type="ascii-art"><![CDATA[
+--rw measurement-methods
   +--rw counts
   |  +--rw transient-condition-config
   |  |  +--rw high-threshold?   uint32
   |  |  +--rw low-threshold?    uint32
   |  +--rw standing-condition-config
   |  |  +--rw standing-threshold?   uint32
   |  |  +--rw reset-threshold?      uint32
   |  +--ro measurement-value?            uint32
   +--rw snapshot
   |  +--rw uniform-time-config
   |  |  +--rw interval-value?   uint32
   |  |  +--rw unit?             time-interval-unit
   |  +--rw threshold-config
   |  |  +--rw high-threshold?   uint32
   |  |  +--rw low-threshold?    uint32
   |  +--ro measurement-value?     uint32
   +--rw tidemarks
      +--rw threshold-config
      |  +--rw high-threshold?   uint32
      |  +--rw low-threshold?    uint32
      +--ro high-measurement-value?   uint32
      +--ro low-measurement-value?    uint32
]]></artwork>
        </figure>
        <t>The measurement methods defined based on <xref target="IUT-T_G7710"/> establish a focused and efficient framework for network performance monitoring by specifying three core methods: counts, snapshot, and tidemarks.</t>
        <t>This intentional limitation supports key objectives such as implementation simplicity, operational efficiency, and cross-vendor interoperability. It emphasizes real-time network monitoring, favoring instantaneous or interval-based metrics over complex statistical calculations. Counts and snapshot methods provide immediate operational data without incurring the processing overhead associated with metrics like averages and variances etc. These statistical measures require significant aggregation logic, which can vary across implementations and devices. By keeping computation within network elements minimal, the approach reduces both processing and memory overhead, maintaining lightweight implementations. It establishes a clear separation between raw data collection (handled by network elements) and deeper analysis (delegated to external management systems). This separation not only simplifies device requirements but also enables more consistent and flexible analytics in centralized systems, which are better equipped to apply standardized analytical frameworks.</t>
        <t>Limiting measurement methods also contributes to energy efficiency by reducing the operational burden on Network Elements (NEs), while offloading data analysis to external management applications. Despite the simplicity, the selected measurement methods offer sufficient expressiveness to support comprehensive performance monitoring without excessive resource use. So, they are specifically optimized for Southbound Interface (SBI) between Physical Network Controllers (PNCs) and NEs to ensures as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Lightweight to implement</t>
          </li>
          <li>
            <t>Consistently supported across vendors</t>
          </li>
          <li>
            <t>Efficient for transport and storage in network management systems</t>
          </li>
        </ul>
        <t>The measurement methods are applicable to a wide range of monitored objects, including both network topology elements (e.g., links, tunnels) and physical equipment parameters(e.g., temperature, voltage).</t>
        <section anchor="counts">
          <name>Counts</name>
          <t>Counts measurement in network performance monitoring tracks the cumulative occurrences of specific events over a defined measurement interval, such as 15 minutes or 24 hours. This method captures how frequently certain network activities, like errors or transmission issues, occur, providing a historical view of recurring problems. Counts reset at the end of each interval, ensuring that every period starts with a fresh count for accurate monitoring.</t>
          <t>The primary purpose of counts is to identify trends and patterns in network behavior over time, helping operators detect anomalies or areas where issues frequently arise. This type of measurement is particularly useful for long-term analysis, enabling preventive maintenance and optimizing network performance. Unlike instantaneous measurements, counts focus on aggregation over time, making it easier to understand the persistence or recurrence of faults. The data gathered through counts helps in fault management and planning by highlighting repeated errors, congestion, or performance degradation that may affect service delivery. As a result, counts provide network operators with actionable insights for troubleshooting and capacity planning, ensuring smooth operation and reliability
across the network.</t>
        </section>
        <section anchor="snapshot">
          <name>Snapshot</name>
          <t>Snapshot is an instantaneous measurement taken at a specific point in time. It captures the instantaneous value of specific performance parameters at a regular, predefined point (uniform time) within each time interval. Snapshot provides a "momentary view" of network conditions, allowing operators to observe the network's status at specific intervals. The data from these uniform-time snapshots is then aggregated and analyzed to understand the immediate state across the entire network. By taking snapshots simultaneously across all network elements, operators can correlate data between different parts of the transport network. Snapshots are collected at pre-determined uniform times within fixed measurement intervals. The uniform time and fixed intervals can be configured based on the needs of the network.</t>
        </section>
        <section anchor="tidemarks">
          <name>Tidemarks</name>
          <t>Tidemarks measurements record the maximum (high tidemarks) and minimum (low tidemarks) values that a performance parameter reaches during a specified
measurement interval. This approach captures the extreme values and
performance fluctuations, highlighting the best and worst conditions that occur within the monitoring period. Tidemarks measurements provide deeper insights by capturing performance spikes or drops that may go unnoticed in average or cumulative data, enabling precise troubleshooting of intermittent or extreme conditions. For instance, while the average error rate over a period may appear acceptable, a high tidemarks could reveal intermittent spikes in errors that require attention. Conversely, a low tidemarks may expose periods of severely degraded signal quality or throughput.</t>
        </section>
      </section>
    </section>
    <section anchor="thresholding">
      <name>Thresholding</name>
      <section anchor="periodic-thresholding">
        <name>Periodic Thresholding</name>
        <t>Periodic threshold events are triggered when the counts or gauge value reaches a pre-defined threshold during periodic measurements including counts, snapshot, and tidemarks for performance parameters.</t>
        <t>The counts measurement has two types of threshold reporting methods:
transient and standing condition methods. The transient condition method
treats each measurement period separately. As soon as a threshold is reached or crossed in a measurement interval for a given performance measurement, a threshold report (TR) is generated. The standing condition method is an optional. The standing condition is raised, and a TR (Threshold Report) is generated, when the set threshold is reached or crossed. The standing condition is cleared, and a reset threshold report (RTR) is generated at the end of the period when the current value is below or equal to the reset threshold, provided that there was no unavailable time during that period.</t>
        <t>For gauge measurements ("snapshot" and "tidemarks"), an overflow condition
is determined and an out-of-range report is generated as soon as the gauge value reaches or crosses the high threshold. An underflow condition is determined and an out-of-range report is generated as soon as the gauge value is at or below the low threshold.</t>
      </section>
      <section anchor="non-periodic-thresholding">
        <name>Non-Periodic thresholding</name>
        <t>Non-periodic threshold events are triggered regardless of the measurement methods (counts, snapshot, or tidemarks). The following parameters are used for non-periodic events.</t>
        <ul spacing="normal">
          <li>
            <t>BUT (Begin Unavailable Time): The event marking the start of a period when
a network element or connection is unavailable.</t>
          </li>
          <li>
            <t>EUT (End Unavailable Time): The event marking the end of a period when a network element or connection was unavailable.</t>
          </li>
          <li>
            <t>CSES (Consecutive Severely Errored Seconds): A sequence of severely errored seconds (SES) detected consecutively within a specified time interval. The reporting metrics include BUT, EUT, and the count of errors during that period.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="subscriptions">
      <name>Subscriptions</name>
      <t>Clients can receive a streaming of values of the PM parameters (PM data) by the measurement methods of counts, snapshot, and tidemarks with various time intervals, after subscribing to them in equipment. The streaming data measured on the PM parameters are used for maintenance and Quality of Service (QoS) monitoring in networks.</t>
      <t>Below are practical use cases demonstrating different subscription scenarios. These examples illustrate periodic and non-periodic subscriptions, including notifications triggered by threshold breaches. Each example aligns with IETF YANG Push protocols, showcasing how network elements generate and stream performance data based on subscription
parameters.</t>
      <section anchor="periodic-events">
        <name>Periodic Events</name>
        <t>The YANG Push subscription model, as defined in  <xref target="RFC8641"/>, enables clients to subscribe to periodic performance measurement data from network elements. This model supports dynamic subscription establishment, modification, and termination for real-time streaming of PM data. Clients can specify subscription parameters including the target datastore (operational), encoding format (XML/JSON), and filtering criteria to receive only relevant performance metrics. The subscription mechanism allows for configurable update periods, enabling both high-frequency monitoring and long-term trend analysis (e.g., 24-hour intervals). Network elements generate periodic event notifications containing the requested PM data, which clients can process for real-time monitoring, historical analysis, or triggering automated responses based on performance thresholds.</t>
        <t><xref target="fig-Periodic-Event-Subscription-Example"/> shows a subscription request for the ES parameter in the itu-transport-maintenance-15min profile.
It requests counts measurement data sampled every second and aggregated over a 15-minute interval. The reporting period is set to 900 seconds, so a notification is sent at the end of each measurement interval.</t>
        <figure anchor="fig-Periodic-Event-Subscription-Example">
          <name>Periodic Event Subscription Example</name>
          <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
     xmlns:sn="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
     xmlns:pm-meas="urn:ietf:params:xml:ns:yang:ietf-pm-measurements"
     message-id="101">
  <sn:establish-subscription>
    <sn:stream>YANG-PUSH</sn:stream>
    <sn:encoding>encode-xml</sn:encoding>
    <sn:filter>
      <sn:datastore>operational</sn:datastore>
      <sn:xpath-filter>
        /pm-meas:pm-periodic-measurement/
          parameter-profile[name='itu-transport-maintenance-15min']/
          pm-parameter[name='es']/
          sampling-interval[id='1s']/
          measurement-interval[id='15min']/
          measurement-methods/counts/measurement-value
      </sn:xpath-filter>
    </sn:filter>
    <sn:period>900</sn:period>
    <sn:anchor-time>2024-07-01T00:00:00Z</sn:anchor-time>
  </sn:establish-subscription>
</rpc>
]]></sourcecode>
        </figure>
        <t><xref target="fig-Periodic-Event-Notification-Example"/> This XML shows a notification for the ES parameter in the itu-transport-maintenance-15min profile. It reports the counts measurement value sampled every second and aggregated over a 15-minute interval. The measured value (10) represents the total errored seconds in that period.</t>
        <figure anchor="fig-Periodic-Event-Notification-Example">
          <name>Periodic Event Notification Example</name>
          <sourcecode type="xml"><![CDATA[
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"
              xmlns:pm-meas="urn:ietf:params:xml:ns:yang:ietf-pm-measurements">
  <eventTime>2024-07-01T00:15:00Z</eventTime>
  <pm-meas:pm-periodic-measurement>
    <parameter-profile>
      <name>itu-transport-maintenance-15min</name>
      <pm-parameter>
        <name>es</name>
        <sampling-interval>
          <id>1s</id>
          <interval-value>1</interval-value>
          <unit>second</unit>
          <measurement-interval>
            <id>15min</id>
            <interval-value>15</interval-value>
            <unit>minute</unit>
            <measurement-methods>
              <counts>
                <measurement-value>10</measurement-value>
              </counts>
            </measurement-methods>
          </measurement-interval>
        </sampling-interval>
      </pm-parameter>
    </parameter-profile>
  </pm-meas:pm-periodic-measurement>
</notification>
]]></sourcecode>
        </figure>
      </section>
      <section anchor="threshold-events">
        <name>Threshold Events</name>
        <t>Threshold event subscriptions enable clients to receive immediate notifications when performance metrics cross predefined thresholds, providing proactive monitoring capabilities. This subscription type, based on <xref target="RFC8639"/> YANG Push for datastore change notifications, allows clients to define threshold conditions.</t>
        <section anchor="periodic-threshold-events">
          <name>Periodic Threshold Events</name>
          <figure anchor="fig-Periodic-Threshold-Event-Tree">
            <name>Periodic Threshold Events Subtree</name>
            <artwork type="ascii-art"><![CDATA[
   +--ro counts-transient
   |  +--ro event-type?       enumeration
   |  +--ro event-occurred?   boolean
   |  +--ro event-time?       yang:date-and-time
   +--ro counts-standing
   |  +--ro event-type?       enumeration
   |  +--ro event-occurred?   boolean
   |  +--ro event-time?       yang:date-and-time
   +--ro snapshot
   |  +--ro event-type?       enumeration
   |  +--ro event-occurred?   boolean
   |  +--ro event-time?       yang:date-and-time
   +--ro tidemarks
      +--ro event-type?       enumeration
      +--ro event-occurred?   boolean
      +--ro event-time?       yang:date-and-time
]]></artwork>
          </figure>
          <t>When a performance parameter exceeds or falls below configured thresholds for the periodic measurement methods of counts, snapshot, and tidemarks, the network element generates event-driven notifications containing detailed information about the threshold crossing event, including event type, occurrence time, and current parameter values. This mechanism supports four types of threshold events: count-transient-event for immediate threshold crossings, count-standing-event for persistent threshold violations, snapshot-event for instantaneous value threshold crossings, and tidemark-event for extreme value threshold crossings. These events enable rapid response to network performance degradation and automated fault management. The threshold event subscription complements periodic subscriptions by providing real-time alerts for critical performance issues that require immediate attention.</t>
          <t><xref target="fig-Threshold-Event-Subscription-Example"/> shows an example of the NETCONF request to subscribe to all pm-threshold-events notifications in the ietf-pm-measurements model.</t>
          <figure anchor="fig-Threshold-Event-Subscription-Example">
            <name>Threshold Event Subscription Example</name>
            <sourcecode type="xml"><![CDATA[
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
     xmlns:sn="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"
     xmlns:pm-meas="urn:ietf:params:xml:ns:yang:ietf-pm-measurements"
     message-id="202">
  <sn:establish-subscription>
    <sn:stream>YANG-PUSH</sn:stream>
    <sn:encoding>encode-xml</sn:encoding>
    <sn:filter>
      <sn:datastore>operational</sn:datastore>
      <sn:xpath-filter>
        /pm-meas:pm-threshold-events
      </sn:xpath-filter>
    </sn:filter>
    <sn:period>1</sn:period>
    <sn:anchor-time>2024-07-01T00:00:00Z</sn:anchor-time>
  </sn:establish-subscription>
</rpc>
]]></sourcecode>
          </figure>
          <t><xref target="fig-Threshold-Event-Notification-Example"/> reports a high-oor-event threshold crossing for the snapshot measurement of the ES parameter in the itu-transport-maintenance-15min profile, with 1-second sampling and 15-minute measurement interval. It shows the event type, occurrence, and timestamp as defined in the YANG model.</t>
          <figure anchor="fig-Threshold-Event-Notification-Example">
            <name>Threshold Event Notification Example</name>
            <sourcecode type="xml"><![CDATA[
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"
              xmlns:pm-meas="urn:ietf:params:xml:ns:yang:ietf-pm-measurements">
  <eventTime>2024-07-01T00:05:23Z</eventTime>
  <pm-meas:pm-threshold-events>
    <periodic-events>
      <parameter-profile>
        <name>itu-transport-maintenance-15min</name>
        <pm-parameter>
          <name>es</name>
          <sampling-interval>
            <id>1s</id>
            <interval-value>1</interval-value>
            <unit>second</unit>
            <measurement-interval>
              <id>15min</id>
              <interval-value>15</interval-value>
              <unit>minute</unit>
              <event-types>
                <snapshot>
                  <event-type>High-OOR-event</event-type>
                  <event-occurred>true</event-occurred>
                  <event-time>2024-07-01T00:05:23Z</event-time>
                </snapshot>
              </event-types>
            </measurement-interval>
          </sampling-interval>
        </pm-parameter>
      </parameter-profile>
    </periodic-events>
  </pm-meas:pm-threshold-events>
</notification> 
]]></sourcecode>
          </figure>
        </section>
        <section anchor="non-periodic-threshold-events">
          <name>Non-periodic Threshold Events</name>
          <figure anchor="fig-Non-Periodic-Events-Tree">
            <name>Non Periodic Threshold Events Subtree</name>
            <artwork type="ascii-art"><![CDATA[
       +--ro non-periodic-events
          +--ro BUT-event
          |  +--ro event-occurred?   boolean
          |  +--ro event-time?       yang:date-and-time
          +--ro EUT-event
          |  +--ro event-occurred?   boolean
          |  +--ro event-time?       yang:date-and-time
          |  +--ro duration?         uint32
          +--ro CSES-event
             +--ro event-occurred?   boolean
             +--ro start?            yang:date-and-time
             +--ro end?              yang:date-and-time
             +--ro duration?         uint32
             +--ro error-count?      uint32
]]></artwork>
          </figure>
          <t>Non-periodic threshold event subscriptions provide immediate notifications for critical network availability and error conditions that occur independently of regular measurement intervals. These subscriptions monitor for specific events such as BUT, EUT, and CSES that indicate significant network performance degradation or service interruptions. When these events occur, the network element generates immediate notifications containing event details, timing information, and duration data. This subscription type enables proactive network management by providing real-time awareness of critical network conditions that require immediate operator attention or automated intervention. Non-periodic threshold events complement periodic monitoring by capturing exceptional conditions that may not be detected through regular interval-based measurements.</t>
        </section>
      </section>
    </section>
    <section anchor="yang-data-model">
      <name>YANG Data Model</name>
      <sourcecode type="yang"><![CDATA[
module ietf-pm-measurements {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-pm-measurements";
  prefix pm-meas;

  import ietf-yang-types {
    prefix yang;
    reference "RFC 6991: Common YANG Data Types";
  }

  organization
    "IETF Common Control and Measurement Plane (ccamp) 
     Working Group";
  contact
    "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
     Editor: Bin Yeong Yoon <mailto:byyun@etri.re.kr>";
  description
    "This YANG module defines a comprehensive data model for 
     performance management (PM) streaming from network equipment 
     to clients, based on ITU-T G.7710. It supports real-time 
     streaming of performance measurements using three core 
     methods: counts (cumulative events), snapshot (instantaneous 
     values), and tidemarks (extreme values).
     
     The module enables proactive network monitoring through 
     configurable sampling and measurement intervals, supporting 
     both high-frequency real-time monitoring and long-term trend 
     analysis. It provides threshold event notifications for both 
     periodic measurements and non-periodic events (BUT, EUT, CSES).
     
     The design supports AI-driven applications, network digital 
     twins, and dynamic network environments by enabling multiple 
     simultaneous views of the same performance parameter with 
     different temporal resolutions. This hierarchical structure 
     allows operators, analytics systems, and digital twin platforms 
     to access performance data at appropriate granularities while 
     maintaining operational efficiency and cross-vendor 
     interoperability.
     
     The module integrates with IETF YANG Push protocols for 
     subscription-based streaming, enabling clients to receive 
     continuous performance data and threshold event notifications 
     for real-time monitoring, historical analysis, and automated 
     network management.";

  revision 2025-06-28 {
    description 
      "Optimized module with reduced redundancy and improved 
       structure.";
    reference "draft-yoon-ccamp-pm-streaming-02";
  }

  /*
   * TYPEDEFs
   */
  typedef profile-names {
    type string {
      pattern 
        '[a-zA-Z][a-zA-Z0-9_-]*-[a-zA-Z][a-zA-Z0-9_-]*-
         [a-zA-Z][a-zA-Z0-9_-]*(-[a-zA-Z][a-zA-Z0-9_-]*)?';
    }
    description
      "Parameter profile name following the format:
       <source>-<network>-<purpose>[-<characteristic>]
       
       Where:
       - <source>: Standards body or organization 
         (e.g., itu, ieee, ietf)
       - <network>: Network domain or layer 
         (e.g., transport, access, core)
       - <purpose>: Intended use or function 
         (e.g., maintenance, qos, availability)
       - <characteristic>: Optional qualifying information 
         (e.g., 15min, 24hr, high-priority)
       
       Examples:
       - itu-transport-maintenance-15min
       - itu-transport-maintenance-24hr
       - itu-transport-qos-24hr
       - ieee-access-availability";
  }

  typedef time-interval-unit {
    type enumeration {
      enum millisecond {
        description "Time interval in milliseconds.";
      }
      enum second {
        description "Time interval in seconds.";
      }
      enum minute {
        description "Time interval in minutes.";
      }
      enum hour {
        description "Time interval in hours.";
      }
    }
    description "Units for expressing time intervals.";
  }

  /*
   * IDENTITIES
   */
  identity periodic-events {
    description
      "Base identity for periodic event notifications.";
  }

  identity counts-transient {
    base periodic-events;
    description
      "Notification for transient threshold events in counts 
       measurements.";
  }

  identity counts-standing {
    base periodic-events;
    description
      "Notification for standing threshold events in counts 
       measurements.";
  }

  identity snapshot {
    base periodic-events;
    description
      "Notification for snapshot measurement threshold events.";
  }

  identity tidemarks {
    base periodic-events;
    description
      "Notification for tidemarks measurement threshold events.";
  }

  identity non-periodic-events {
    description
      "Base identity for non-periodic event notifications.";
  }

  identity but {
    base non-periodic-events;
    description
      "Notification for Begin Unavailable Time (BUT) events.";
  }

  identity eut {
    base non-periodic-events;
    description
      "Notification for End Unavailable Time (EUT) events.";
  }

  identity cses {
    base non-periodic-events;
    description
      "Notification for Consecutive Severely Errored Seconds 
       (CSES) events.";
  }

  /*
   * COMMON GROUPINGS
   */
  grouping threshold-config {
    description 
      "Common threshold configuration for all measurement types.";
    leaf high-threshold {
      type uint32;
      description 
        "High threshold that triggers alerts when exceeded.";
    }
    leaf low-threshold {
      type uint32;
      description 
        "Low threshold that triggers alerts when performance falls 
         below acceptable levels.";
    }
  }

  grouping event-state-info {
    description 
      "Common event state information for all event types.";
    leaf event-occurred {
      type boolean;
      description 
        "Indicates whether a threshold crossing or performance 
         event has occurred.";
    }
    leaf event-time {
      type yang:date-and-time;
      description 
        "Precise timestamp of when the event occurred.";
    }
  }

  grouping oor-event-type {
    description 
      "Common out-of-range event type definition.";
    leaf event-type {
      type enumeration {
        enum High-OOR-event {
          description "High OOR threshold exceeded.";
        }
        enum Low-OOR-event {
          description "Low OOR threshold crossed.";
        }
      }
      description 
        "Specifies whether the high or low OOR threshold was 
         crossed.";
    }
  }

  grouping triggered-oor-event-info {
    description 
      "Combined threshold event type and event information.";
    uses oor-event-type;
    uses event-state-info;
  }

  grouping time-interval-config {
    description "Common time interval configuration.";
    leaf interval-value {
      type uint32;
      description "Numeric value for the interval.";
    }
    leaf unit {
      type time-interval-unit;
      description "Time unit for the interval value.";
    }
  }

  /*
   * MEASUREMENT METHOD GROUPINGS
   */
  grouping count-measurement-gr {
    description 
      "Counts measurement for cumulative event tracking.";
    container counts {
      description 
        "Contains counts measurement values and configuration.";
      container transient-condition-config {
        description 
          "Configuration for transient out-of-range conditions.";
        uses threshold-config;
      }
      container standing-condition-config {
        description 
          "Configuration for standing condition monitoring.";
        leaf standing-threshold {
          type uint32;
          description 
            "Threshold value that triggers standing condition 
             alerts.";
        }
        leaf reset-threshold {
          type uint32;
          description 
            "Reset threshold value that clears standing conditions.";
        }
      }
      leaf measurement-value {
        type uint32;
        config false;
        description 
          "Current cumulative count value for the measurement 
           interval.";
      }
    }
  }

  grouping snapshot-measurement-gr {
    description 
      "Snapshot measurements for instantaneous values.";
    container snapshot {
      description 
        "Contains snapshot measurement configuration and values.";
      container uniform-time-config {
        description 
          "Configuration for uniform time intervals between 
           snapshots.";
        leaf interval-value {
          type uint32;
          default 1;
          description 
            "Numeric value for the sampling interval between 
             snapshots.";
        }
        leaf unit {
          type time-interval-unit;
          description 
            "Time unit for the snapshot sampling interval.";
        }
      }
      container threshold-config {
        description 
          "Configuration for snapshot threshold monitoring.";
        uses threshold-config;
      }
      leaf measurement-value {
        type uint32;
        config false;
        description 
          "Current instantaneous snapshot value.";
      }
    }
  }

  grouping tidemarks-measurement-gr {
    description 
      "Tidemarks measurements for extreme values.";
    container tidemarks {
      description 
        "Contains tidemarks measurement values and threshold 
         configuration.";
      container threshold-config {
        description 
          "Configuration for tidemarks threshold monitoring.";
        uses threshold-config;
      }
      leaf high-measurement-value {
        type uint32;
        config false;
        description 
          "Current maximum value recorded during the measurement 
           interval.";
      }
      leaf low-measurement-value {
        type uint32;
        config false;
        description 
          "Current minimum value recorded during the measurement 
           interval.";
      }
    }
  }

  grouping measurement-methods-gr {
    description 
      "Container for the three core measurement methods.";
    container measurement-methods {
      description 
        "Container for different measurement methods.";
      uses count-measurement-gr;
      uses snapshot-measurement-gr;
      uses tidemarks-measurement-gr;
    }
  }

  /*
   * EVENT GROUPINGS
   */
  grouping counts-transient-event-gr {
    description 
      "Threshold events for counts measurements.";
    container counts-transient {
      description 
        "Contains information about transient threshold events for 
         counts.";
      uses triggered-oor-event-info;
    }
  }

  grouping counts-standing-event-gr {
    description 
      "Standing condition events for counts measurements.";
    container counts-standing {
      description 
        "Contains information about standing threshold events for 
         counts.";
      leaf event-type {
        type enumeration {
          enum Threshold-Report {
            description "Threshold Report (TR) generated.";
          }
          enum Reset-Threshold-Report {
            description "Reset Threshold Report (RTR) generated.";
          }
        }
        description 
          "Specifies whether a TR or RTR was generated.";
      }
      uses event-state-info;
    }
  }

  grouping snapshot-events-gr {
    description 
      "Threshold events for snapshot measurements.";
    container snapshot {
      description 
        "Contains snapshot threshold event information.";
      uses triggered-oor-event-info;
    }
  }

  grouping tidemarks-events-gr {
    description 
      "Threshold events for tidemarks measurements.";
    container tidemarks {
      description 
        "Contains tidemarks threshold event information.";
      uses triggered-oor-event-info;
    }
  }

  /*
   * MEASUREMENT INTERVAL STRUCTURES
   */
  grouping periodic-measurement-intervals {
    description 
      "Hierarchical structure for periodic measurement timing and 
       methods.";
    list sampling-interval {
      key "id";
      description 
        "List of sampling intervals defining data collection 
         frequency.";
      leaf id {
        type string;
        description 
          "Unique identifier for this sampling interval 
           configuration.";
      }
      leaf interval-value {
        type uint32;
        default 1;
        description "Numeric value for the sampling interval.";
      }
      leaf unit {
        type time-interval-unit;
        default second;
        description "Time unit for the sampling interval value.";
      }
      list measurement-interval {
        key "id";
        description 
          "List of measurement intervals defining aggregation 
           periods.";
        leaf id {
          type string;
          description 
            "Unique identifier for this measurement interval 
             configuration.";
        }
        leaf interval-value {
          type uint32;
          default 15;
          description "Numeric value for the measurement interval.";
        }
        leaf unit {
          type time-interval-unit;
          default minute;
          description 
            "Time unit for the measurement interval value.";
        }
        uses measurement-methods-gr;
      }
    }
  }

  grouping non-periodic-events-gr {
    description 
      "Container for non-periodic event parameters.";
    container BUT-event {
      description "Begin Unavailable Time (BUT) event.";
      uses event-state-info;
    }
    container EUT-event {
      description "End Unavailable Time (EUT) event.";
      leaf event-occurred {
        type boolean;
        description 
          "Indicates whether an EUT event was generated.";
      }
      leaf event-time {
        type yang:date-and-time;
        description "Precise timestamp of the EUT event.";
      }
      leaf duration {
        type uint32;
        units "seconds";
        description 
          "Total duration of unavailability in seconds.";
      }
    }
    container CSES-event {
      description 
        "Consecutive Severely Errored Seconds (CSES) event.";
      leaf event-occurred {
        type boolean;
        description 
          "Indicates whether a CSES event was generated.";
      }
      leaf start {
        type yang:date-and-time;
        description 
          "Timestamp indicating when the CSES period began.";
      }
      leaf end {
        type yang:date-and-time;
        description 
          "Timestamp indicating when the CSES period ended.";
      }
      leaf duration {
        type uint32;
        units "seconds";
        description "Duration of the CSES period in seconds.";
      }
      leaf error-count {
        type uint32;
        description 
          "Number of errors during the CSES period.";
      }
    }
  }

  grouping pm-periodic-measurement-gr {
    description 
      "Hierarchical structure for periodic performance 
       measurements.";
    list parameter-profile {
      key "name";
      description "List of performance parameter profiles.";
      leaf name {
        type profile-names;
        description "Name of the parameter profile.";
      }
      list pm-parameter {
        key "name";
        description 
          "List of PM parameters within the parameter profile.";
        leaf name {
          type string;
          description 
            "Name of the performance parameter being measured.";
        }
        uses periodic-measurement-intervals;
      }
    }
  }

  /*
   * MAIN CONTAINER
   */
  container pm-periodic-measurement {
    description 
      "Main container for periodic performance measurements.";
    uses pm-periodic-measurement-gr;
  }

  /*
   * NOTIFICATIONS
   */
  notification pm-threshold-events {
    description 
      "Notification for threshold crossing events.";
    container periodic-events {
      description "Container for periodic threshold events.";
      list parameter-profile {
        key "name";
        description 
          "List of performance parameter profiles for event 
           monitoring.";
        leaf name {
          type profile-names;
          description "Name of the parameter profile.";
        }
        list pm-parameter {
          key "name";
          description 
            "List of PM parameters within the parameter profile.";
          leaf name {
            type string;
            description 
              "Name of the performance parameter being monitored.";
          }
          list sampling-interval {
            key "id";
            description 
              "List of sampling intervals for event monitoring.";
            leaf id {
              type string;
              description 
                "Unique identifier for this sampling interval 
                 configuration.";
            }
            uses time-interval-config;
            list measurement-interval {
              key "id";
              description 
                "List of measurement intervals for event 
                 aggregation.";
              leaf id {
                type string;
                description 
                  "Unique identifier for this measurement interval 
                   configuration.";
              }
              uses time-interval-config;
              container event-types {
                description 
                  "Container for different threshold event types.";
                uses counts-transient-event-gr;
                uses counts-standing-event-gr;
                uses snapshot-events-gr;
                uses tidemarks-events-gr;
              }
            }
          }
        }
      }
    }

    container non-periodic-events {
      description 
        "Container for non-periodic threshold events.";
      uses non-periodic-events-gr;
    }
  }
} 
]]></sourcecode>
    </section>
    <section anchor="yang-data-trees">
      <name>YANG Data Trees</name>
      <figure anchor="fig-ni-tree">
        <name>Tree of pm measurements module</name>
        <artwork type="ascii-art" name="ietf-pm-measurements.tree"><![CDATA[
module: ietf-pm-measurements
  +--rw pm-periodic-measurement
     +--rw parameter-profile* [name]
        +--rw name            profile-names
        +--rw pm-parameter* [name]
           +--rw name                 string
           +--rw sampling-interval* [id]
              +--rw id                      string
              +--rw interval-value?         uint32
              +--rw unit?                   time-interval-unit
              +--rw measurement-interval* [id]
                 +--rw id                     string
                 +--rw interval-value?        uint32
                 +--rw unit?                  time-interval-unit
                 +--rw measurement-methods
                    +--rw counts
                    |  +--rw transient-condition-config
                    |  |  +--rw high-threshold?   uint32
                    |  |  +--rw low-threshold?    uint32
                    |  +--rw standing-condition-config
                    |  |  +--rw standing-threshold?   uint32
                    |  |  +--rw reset-threshold?      uint32
                    |  +--ro measurement-value?            uint32
                    +--rw snapshot
                    |  +--rw uniform-time-config
                    |  |  +--rw interval-value?   uint32
                    |  |  +--rw unit?             time-interval-unit
                    |  +--rw threshold-config
                    |  |  +--rw high-threshold?   uint32
                    |  |  +--rw low-threshold?    uint32
                    |  +--ro measurement-value?     uint32
                    +--rw tidemarks
                       +--rw threshold-config
                       |  +--rw high-threshold?   uint32
                       |  +--rw low-threshold?    uint32
                       +--ro high-measurement-value?   uint32
                       +--ro low-measurement-value?    uint32

  notifications:
    +---n pm-threshold-events
       +--ro periodic-events
       |  +--ro parameter-profile* [name]
       |     +--ro name            profile-names
       |     +--ro pm-parameter* [name]
       |        +--ro name                 string
       |        +--ro sampling-interval* [id]
       |           +--ro id                      string
       |           +--ro interval-value?         uint32
       |           +--ro unit?                   time-interval-unit
       |           +--ro measurement-interval* [id]
       |              +--ro id                string
       |              +--ro interval-value?   uint32
       |              +--ro unit?             time-interval-unit
       |              +--ro event-types
       |                 +--ro counts-transient
       |                 |  +--ro event-type?       enumeration
       |                 |  +--ro event-occurred?   boolean
       |                 |  +--ro event-time?       yang:date-and-time
       |                 +--ro counts-standing
       |                 |  +--ro event-type?       enumeration
       |                 |  +--ro event-occurred?   boolean
       |                 |  +--ro event-time?       yang:date-and-time
       |                 +--ro snapshot
       |                 |  +--ro event-type?       enumeration
       |                 |  +--ro event-occurred?   boolean
       |                 |  +--ro event-time?       yang:date-and-time
       |                 +--ro tidemarks
       |                    +--ro event-type?       enumeration
       |                    +--ro event-occurred?   boolean
       |                    +--ro event-time?       yang:date-and-time
       +--ro non-periodic-events
          +--ro BUT-event
          |  +--ro event-occurred?   boolean
          |  +--ro event-time?       yang:date-and-time
          +--ro EUT-event
          |  +--ro event-occurred?   boolean
          |  +--ro event-time?       yang:date-and-time
          |  +--ro duration?         uint32
          +--ro CSES-event
             +--ro event-occurred?   boolean
             +--ro start?            yang:date-and-time
             +--ro end?              yang:date-and-time
             +--ro duration?         uint32
             +--ro error-count?      uint32
]]></artwork>
      </figure>
    </section>
    <section anchor="manageability-considerations">
      <name>Manageability Considerations</name>
      <t>&lt;Add any manageability considerations&gt;</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>&lt;Add any security considerations&gt;</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>&lt;Add any IANA considerations&gt;</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8639">
          <front>
            <title>Subscription to YANG Notifications</title>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="A. Gonzalez Prieto" initials="A." surname="Gonzalez Prieto"/>
            <author fullname="E. Nilsen-Nygaard" initials="E." surname="Nilsen-Nygaard"/>
            <author fullname="A. Tripathy" initials="A." surname="Tripathy"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document defines a YANG data model and associated mechanisms enabling subscriber-specific subscriptions to a publisher's event streams. Applying these elements allows a subscriber to request and receive a continuous, customized feed of publisher-generated information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8639"/>
          <seriesInfo name="DOI" value="10.17487/RFC8639"/>
        </reference>
        <reference anchor="RFC8640">
          <front>
            <title>Dynamic Subscription to YANG Events and Datastores over NETCONF</title>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="A. Gonzalez Prieto" initials="A." surname="Gonzalez Prieto"/>
            <author fullname="E. Nilsen-Nygaard" initials="E." surname="Nilsen-Nygaard"/>
            <author fullname="A. Tripathy" initials="A." surname="Tripathy"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document provides a Network Configuration Protocol (NETCONF) binding to the dynamic subscription capability of both subscribed notifications and YANG-Push.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8640"/>
          <seriesInfo name="DOI" value="10.17487/RFC8640"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IUT-T_G7710" target="https://www.tmforum.org/resources/suite/mtosi-4-0/">
          <front>
            <title>Common Equipment Management Function Requirements</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2022" month="November"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
oln63bOkehnVBB9PcS1urC9IuYrgMF1w5jo4gKUSmP65NXeO7thdDNchcF+t
BqwnBeEG0+4GUHuvp6Sc1eaZezV/2iWatvWc6yln2c3vamNv18Qb6rEGxDBc
SgyXahWSSqf4d+9IAjR9d7KaDgIXqiGwOcixq6mlacUxuGzNeE3MR+MrLOQE
OOcm5JAk2YLq+Dc77d1mjaHWFauCMtOUxvvVkydGv4PIw6yZ3l5+sIzmUKKh
HSlke7tcDJ7Vqwn+Uja/PljX5QgPH48IVc0IPh6VzQiEC5L8CLdt9PT4yQFX
9dBLo6bsfW8Dti99nlqxNk09svRGkhPPewwXnI2WUZbY5maep8X01wdPnzw9
OIWPnzXlyAq4VFPIKb2E37MUO0VBnl6/uf3dsxP3oX3IiJ5T+iVPASZ6zn5u
n2QhdCqVT/iJlWenSpzR2+4b9fhbPH6Y+sMkyYksGtFkOF1j4UTdSda5QItu
Lfv1pzsI/tPvvEHUvWfyft74j3Sat/wRcP/p0+CpWNcUfrA7aaSU8oQ57qRT
OWZQdhLFGX3sfQB/M+JOgZvoa/nTfg2ouK9qEnOnXzwB6fvkn9MnT++ePBnR
//6TXtIPDWSePhJ7dgLcdcrMNkiksm0PqWaK3QKTwzOizY0aWPUWl5f6Fmcl
L8kyAM1pBacnSj6GwExIYLLN0dNAjx3djyA0raXNIx4+fXKku6qRWVFhiXfo
JhVl4KMYkZhEfgbPPCTtJy/1K0pu2p+fKvaI/EjZ33Up9umXTLHue3x6hxAR
VujIDyueUA6c7iCDZyf0lHlFyxEnznikvPEfRjYMZcqpwtqzYnr6FN4ppv6n
XtXv6VN4wP9EP4ylvadMBM9O6A/9bUxYnXr7RjDwOn0wIoB8uQ0SAwuTdReW
ABoRh6cBET1j5go/Dl4WeEDsdT8NBzyJjei/GIHFf6CLOpCTfTv77KRLI/BZ
jAif7VKDKHM13+0QvjERaa/l9GWvflTL3k9UukJ5hl7MLbgZXi5AUX6f8VFU
30LPfKf4UsRl4XClznk7M1qX5Khm3fEeyvZUsFIwfJ2Zqphm5/UXvwIl4tze
mVzZxx4bH771oR8a50ktmMFVQQCVB5N2lZ2Uj8Vu9wJYLjBnwk1tXsMrqqeN
SHFNpvA/L9dLscciT0p5FpW+j6tqkWexp9AMMOORpEZvMAUVRt90QDPh/v9B
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

-->

</rfc>
