<?xml version='1.0' encoding='utf8'?>
<rfc version="3" category="std" ipr="trust200902" submissionType="IETF" consensus="true" docName="draft-yang-opsawg-pfc-queue-telemetry-00" tocInclude="true" symRefs="true" sortRefs="true">
  <front>
    <title abbrev="PFC Queue Telemetry">A YANG Data Model for PFC Queue Telemetry</title>
    <author fullname="Jin Yang" initials="J." surname="Yang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>yangjinwl@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Weiqiang Cheng" initials="W." surname="Cheng">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>chengweiqiang@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Tingting Han" initials="T." surname="Han">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>hantingting@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Junjie Wang" initials="J." surname="Wang">
      <organization>Centec</organization>
      <address>
        <postal>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>wangjj@centec.com</email>
      </address>
    </author>
    <author fullname="Siyuan Zhang" initials="S." surname="Zhang">
      <organization>Centec</organization>
      <address>
        <postal>
          <city>Suzhou</city>
          <code>215000</code>
          <country>China</country>
        </postal>
        <email>zhangsy@centec.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Operations and Management</area>
    <workgroup>Individual Submission</workgroup>
    <abstract>
      <t>This document defines a YANG data model for completed, per-queue observations of backlog and received Priority-based Flow Control (PFC) gating. Each record identifies a monotonic measurement interval, queue mapping epoch, measurement method, and absolute error bound. The model makes repeated reads, missing coverage, and weighted aggregation explicit.</t>
      <t>The measured overlap does not identify the sole cause of queueing delay and does not change PFC, packet scheduling, or ECN marking. The module augments interface operational state and defines no configuration or notification interface.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>A pause-frame count is not the duration for which a queue contained traffic while its applicable PFC gate was closed. Pause requests may overlap, refresh a timer, end early, or occur when no traffic awaits service. Management systems comparing queue measurements require the measurement interval, queue mapping, and treatment of unavailable observations as well as the duration value.</t>
      <t>Existing facilities are substantial: <xref target="SAI-QUEUE"/> exposes queue pause/deadlock state and counters, <xref target="CISCO-PFC"/> describes implemented pause-duration monitoring, <xref target="IEEE-ETH-YANG"/> covers Ethernet PFC management, and <xref target="I-D.ietf-rtgwg-qos-model"/> and <xref target="OC-QOS"/> provide QoS management. <xref target="FANN-LQ"/> includes a pause fraction in a link-quality proposal. This document does not introduce pause measurement. Its candidate increment is a common per-queue backlog/gate intersection with explicit interval continuity and uncertainty.</t>
      <t>The module is an independently reviewable representation of that contract. Integration into existing queue operational models should be considered before allocating another namespace. The underlying PFC behavior remains an IEEE function; coordination with relevant IEEE management work, including <xref target="IEEE-QDT"/>, is needed. A standalone IETF RFC is not assumed to be the only outcome.</t>
    </section>
    <section anchor="requirements">
      <name>Requirements Language</name>
      <t>The key words <bcp14>MUST</bcp14>, <bcp14>MUST NOT</bcp14>, <bcp14>REQUIRED</bcp14>, <bcp14>SHOULD</bcp14>, <bcp14>SHOULD NOT</bcp14>, <bcp14>RECOMMENDED</bcp14>, <bcp14>MAY</bcp14>, and <bcp14>OPTIONAL</bcp14> in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="measurement">
      <name>Measurement Definition</name>
      <t>Consider one instantiated egress queue over a half-open monotonic interval [t0,t1), with T=t1-t0. Let Q(t) be true when at least one packet in that queue awaits transmission. A packet already handed to the transmission engine is not queued backlog. The service candidate is the packet selected by the implementation's ordinary ordering within that queue before received-PFC gating; it need not have won arbitration against other queues.</t>
      <t>Let P(t) be true when received PFC closes the gate applicable to that candidate. The candidate's applicable priority and the actual gate must be identifiable. If several priorities share a queue, a union or sum of all their pause durations is not a substitute for the candidate's gate. If the candidate or gate cannot be determined, the record has unknown quality.</t>
      <artwork type="ascii-art">Q = integral over [t0,t1) of Q(t) dt
I = integral over [t0,t1) of (Q(t) AND P(t)) dt
0 &lt;= I &lt;= Q &lt;= T
</artwork>
      <t>The module reports Q as backlog-ns, I as gated-backlog-ns, and T as duration-ns. Other constraints, such as shaping, arbitration, or link availability, may be active at the same time. They are not subtracted from I. Thus I measures an observed conjunction; it is not the counterfactual extra delay caused solely by PFC, nor a packet-level blocked-time sum. A continuously backlogged queue with a closed PFC gate contributes to I even if a shaper also blocks it.</t>
      <t>PFC timer refresh, zero-quantum resume, and watchdog overrides <bcp14>MUST</bcp14> be reflected in the actual gate state. Summing requested pause quanta is not permitted. The observation <bcp14>MUST NOT</bcp14> alter the IEEE gate state, scheduling order, or watchdog behavior. A change of candidate selection method or queue-to-priority mapping terminates the current epoch before a new mapping is observed.</t>
    </section>
    <section anchor="identity">
      <name>Queue and Interval Identity</name>
      <t>A record is identified by interface, queue-id, epoch-id, and interval-id. queue-id is stable only within its interface and epoch. epoch-id is a freshly generated UUID whenever the queue is recreated, mapping or measurement method changes, the measurement subsystem restarts, or interval identity/clock state is lost. It <bcp14>MUST NOT</bcp14> be reused for the same interface and queue. The mapped-priority set is constant during an epoch and includes one through eight PFC priorities.</t>
      <t>start-offset-ns is a monotonic offset from a local origin fixed for that queue epoch. The origin has no cross-device meaning. The first interval can start at a nonzero offset. duration-ns is positive and at most one day. The end offset <bcp14>MUST</bcp14> be no greater than 2^53-1 nanoseconds; the server starts a new epoch before this limit is reached. This bounded representation permits exact comparisons in YANG XPath. Epoch renewal at this limit is ordinary behavior, not a network fault.</t>
      <t>interval-id starts at one and increments for each completed interval, including unknown-quality intervals. IDs <bcp14>MUST NOT</bcp14> wrap. Within an epoch, intervals <bcp14>MUST NOT</bcp14> overlap or move backward. Missing acquisition time can be represented by a gap in offsets; no duration is invented for it. A mapping change closes a positive-duration interval under the old epoch and starts the next under a fresh epoch. If no positive-duration record can be formed, the new epoch begins without a zero-length record.</t>
      <t>Optional wall-clock-start permits correlation with external events. It does not replace the monotonic offset and duration; no clock synchronization accuracy is implied. Wall-clock correction alone need not change an epoch. Loss of monotonic-clock validity requires a fresh epoch and missing coverage, not a fabricated interval length.</t>
    </section>
    <section anchor="quality">
      <name>Measurement Method and Error Bounds</name>
      <t>event-based quality means that relevant state transitions were integrated. It does not mean infinite timestamp precision. sampled quality means that predicate samples were used, with sample-period-ns reporting the maximum spacing, including jitter, during that interval. The period <bcp14>MUST</bcp14> be positive and no greater than T. A shortened interval that lacks valid samples is unknown.</t>
      <t>Both known-quality modes <bcp14>MUST</bcp14> include I, Q, and absolute-error-ns, denoted E. For each reported duration separately, the implementation <bcp14>MUST</bcp14> have a defensible worst-case bound |reported-true|&lt;=E, including quantization, capture uncertainty and sampling error. E <bcp14>MUST</bcp14> lie in [0,T], and the reported point values <bcp14>MUST</bcp14> satisfy I&lt;=Q&lt;=T. A sample period alone does not bound arbitrary aliasing. When no tighter bound is justified, E=T is permitted; unknown is preferable when the measurement itself is unavailable.</t>
      <t>unknown quality <bcp14>MUST</bcp14> include unknown-reason and <bcp14>MUST</bcp14> omit both measured durations, their error bound, and sample period. Unsupported measurement, unresolved multi-priority candidates, or lost measurement events <bcp14>MUST NOT</bcp14> appear as zero durations. An empty queue with a valid observation is different: Q=I=0 with known quality. This version uses one quality classification for the paired measurement rather than partial validity of individual leaves.</t>
    </section>
    <section anchor="publication">
      <name>Publication, Retrieval, and Aggregation</name>
      <t>A server <bcp14>MUST</bcp14> publish a completed queue record atomically. Reads and subscriptions observe either the previous complete record or the next complete record. Repeated reads of the same identity <bcp14>MUST</bcp14> contain identical measurement fields. The module holds only the latest completed interval; it does not promise a history buffer. The server <bcp14>SHOULD</bcp14> document its measurement cadence and the implementation limits on event collection and sampling.</t>
      <t>NETCONF, RESTCONF, and YANG-Push <xref target="RFC8641"/> can retrieve these records. Subscription update cadence is distinct from acquisition duration; a subscription may skip completed intervals. Filtered reads may omit required context at the client's request; clients <bcp14>MUST</bcp14> obtain a complete row before validating or aggregating it. Atomicity is per queue record, not across all queues or devices.</t>
      <t>A consumer <bcp14>MUST</bcp14> deduplicate by the complete identity, detect report-ID gaps and offset gaps, and reject same-identity conflicting content or overlapping/backward intervals. It <bcp14>MUST NOT</bcp14> sum a repeated record. It <bcp14>MUST NOT</bcp14> fill unobserved intervals with zeros. An epoch change creates a measurement boundary, even if the queue name and priority set appear unchanged. A disappearing queue or subscription disconnect does not establish an interval end.</t>
      <t>For contiguous records with one epoch and mapping, compute aggregate I/T as sum(I)/sum(T), and aggregate Q/T similarly. Do not average ratios without duration weights. Known and unknown intervals <bcp14>MUST NOT</bcp14> be combined into a complete-coverage result. A collector can present a partial-coverage result if it explicitly reports the missing time. Across epochs, it may aggregate separately qualified groups, but <bcp14>MUST NOT</bcp14> claim continuity.</t>
      <t>For one record, clip the interval for I to [max(0,I-E), min(T,I+E)] and similarly for Q. Ratios to T retain these bounds divided by T. For a sum, add absolute errors and clip to the aggregate duration. I/Q is undefined when Q=0. If Q-E&lt;=0, a nontrivial bound on I/Q is generally unavailable; [0,1] is the conservative range. No probability distribution or confidence level is implied by an absolute error bound.</t>
    </section>
    <section anchor="diagnosis">
      <name>Use and Limits in Congestion Diagnosis</name>
      <t>A collector can distinguish a busy paused queue from pause activity observed only while a queue was empty. It can also identify intervals for which the paired measurement is unavailable. These are operational observations, not a proof of the remote bottleneck or the identity of traffic causing it.</t>
      <t>The model <bcp14>MUST NOT</bcp14> be interpreted as an instruction to suppress ECN, clear CE, change Not-ECT handling, or retransmit packets. <xref target="RFC3168"/> and <xref target="RFC7567"/> remain applicable. PFC and other service restrictions can overlap; a high I/Q ratio cannot establish that the local queue contributes no congestion. Cross-correlation with RoCEv2 observations also cannot prove packet loss or validate an ECN control loop.</t>
      <t>Controllers that choose to consume this telemetry need separate stability and performance evaluation under <xref target="RFC7928"/>. The measurement does not standardize a reward function, pause-aware marking exception, or control-loop algorithm.</t>
    </section>
    <section anchor="yang-tree">
      <name>YANG Tree Diagram</name>
      <t>The tree is generated from the module using the notation in <xref target="RFC8340"/>.</t>
      <sourcecode type="yangtree">module: ietf-pfc-queue-telemetry

  augment /if:interfaces/if:interface:
    +--ro pfc-queue-telemetry
       +--ro queue* [queue-id]
          +--ro queue-id             string
          +--ro epoch-id             yang:uuid
          +--ro interval-id          uint64
          +--ro start-offset-ns      uint64
          +--ro duration-ns          uint64
          +--ro wall-clock-start?    yang:date-and-time
          +--ro mapped-priority*     uint8
          +--ro quality              enumeration
          +--ro unknown-reason       enumeration
          +--ro gated-backlog-ns     interval-value
          +--ro backlog-ns           interval-value
          +--ro absolute-error-ns    interval-value
          +--ro sample-period-ns     uint64
</sourcecode>
    </section>
    <section anchor="yang-module">
      <name>YANG Module</name>
      <t>The module uses YANG 1.1 <xref target="RFC7950"/>, NMDA <xref target="RFC8342"/>, the interface model <xref target="RFC8343"/>, and common types <xref target="RFC9911"/>. Review follows <xref target="RFC9907"/>. RFC XXXX in the module is an RFC Editor placeholder.</t>
      <sourcecode type="yang" name="ietf-pfc-queue-telemetry@2026-10-30.yang">module ietf-pfc-queue-telemetry {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-pfc-queue-telemetry";
  prefix pqt;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 9911: Common YANG Data Types";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }

  organization
    "Individual Submission";
  contact
    "Author: Jin Yang &lt;mailto:yangjinwl@chinamobile.com&gt;
     Author: Weiqiang Cheng &lt;mailto:chengweiqiang@chinamobile.com&gt;
     Author: Tingting Han &lt;mailto:hantingting@chinamobile.com&gt;
     Author: Junjie Wang &lt;mailto:wangjj@centec.com&gt;
     Author: Siyuan Zhang &lt;mailto:zhangsy@centec.com&gt;";
  description
    "Completed intervals of queue backlog and received PFC gating.
     These observations do not identify the sole cause of delay.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code. All rights reserved.
     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  revision 2026-10-30 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A YANG Data Model for PFC Queue Telemetry";
  }

  typedef interval-value {
    type uint64 {
      range "0..86400000000000";
    }
    units "nanoseconds";
    description
      "Duration or absolute error within a one-day interval.";
  }

  augment "/if:interfaces/if:interface" {
    description
      "Completed PFC queue observations on this interface.";
    container pfc-queue-telemetry {
      config false;
      description
        "Latest completed interval for each observed queue.";
      list queue {
        must 'start-offset-ns &lt;= 9007199254740991 - duration-ns';
        must 'not(gated-backlog-ns) or '
           + 'gated-backlog-ns &lt;= backlog-ns';
        must 'not(backlog-ns) or backlog-ns &lt;= duration-ns';
        must
          'not(absolute-error-ns) or absolute-error-ns &lt;=
           duration-ns';
        must
          'not(sample-period-ns) or sample-period-ns &lt;=
           duration-ns';
        key "queue-id";
        description
          "One coherent completed record; never a partly updated
           row.
           Queue identity is scoped to this interface and epoch.";
        leaf queue-id {
          type string {
            length "1..128";
          }
          description
            "Stable local queue identifier.";
        }
        leaf epoch-id {
          type yang:uuid;
          mandatory true;
          description
            "Fresh identity on restart, queue reuse, mapping or
             measurement-method change.";
        }
        leaf interval-id {
          type uint64 {
            range "1..max";
          }
          mandatory true;
          description
            "Starts at one; advances for every completed interval
             without reuse.";
        }
        leaf start-offset-ns {
          type uint64 {
            range "0..9007199254740991";
          }
          units "nanoseconds";
          mandatory true;
          description
            "Monotonic start relative to this queue epoch; not a
             wall clock.";
        }
        leaf duration-ns {
          type uint64 {
            range "1..86400000000000";
          }
          units "nanoseconds";
          mandatory true;
          description
            "Monotonic duration T of the half-open interval.";
        }
        leaf wall-clock-start {
          type yang:date-and-time;
          description
            "Optional correlation timestamp; clock synchronization
             accuracy is external.";
        }
        leaf-list mapped-priority {
          type uint8 {
            range "0..7";
          }
          min-elements 1;
          max-elements 8;
          description
            "PFC priorities mapped to this queue in the epoch.";
        }
        leaf quality {
          type enumeration {
            enum event-based {
              description
                "State-transition integration with bounded
                 error.";
            }
            enum sampled {
              description
                "State samples with a worst-case error bound.";
            }
            enum unknown {
              description
                "Joint measurement unavailable; durations
                 omitted.";
            }
          }
          mandatory true;
          description
            "Measurement method and validity for this interval.";
        }
        leaf unknown-reason {
          when "../quality = 'unknown'";
          type enumeration {
            enum unavailable {
              description
                "Measurement not supported.";
            }
            enum candidate-unresolved {
              description
                "Cannot identify the queue service candidate.";
            }
            enum capture-gap {
              description
                "Measurement events lost.";
            }
            enum other {
              description
                "Other measurement failure.";
            }
          }
          mandatory true;
          description
            "Reason that both duration values are unavailable.";
        }
        leaf gated-backlog-ns {
          when "../quality != 'unknown'";
          type interval-value;
          mandatory true;
          description
            "Time I when a nonempty queue candidate has a closed
             received-PFC gate; concurrent shaping or scheduling
             delays are not excluded.";
        }
        leaf backlog-ns {
          when "../quality != 'unknown'";
          type interval-value;
          mandatory true;
          description
            "Time Q when at least one packet awaits service.";
        }
        leaf absolute-error-ns {
          when "../quality != 'unknown'";
          type interval-value;
          mandatory true;
          description
            "Worst-case absolute error applicable separately to I
             and Q; includes quantization and sampling
             uncertainty.";
        }
        leaf sample-period-ns {
          when "../quality = 'sampled'";
          type uint64 {
            range "1..86400000000000";
          }
          units "nanoseconds";
          mandatory true;
          description
            "Maximum spacing between samples, including jitter.";
        }
      }
    }
  }
}
</sourcecode>
    </section>
    <section anchor="examples">
      <name>Examples and Conformance Cases</name>
      <t>For T=1000 ns, actual gate closure over [100,900) and continuous backlog produce I=800 and Q=1000. A timer extension at 400 ns must not double-count [400,600). If the queue is empty on [100,300), I=600 and Q=800. Concurrent shaping on [500,700) does not change those values under this definition.</t>
      <t>A multi-priority queue with no observable service-candidate priority reports unknown and candidate-unresolved. A valid queue with Q=0 reports I=0, even if every mapped priority is paused. If event loss makes the joint duration unreliable, the record reports capture-gap instead of zero.</t>
      <t>Contiguous intervals (T,I)=(100,50) and (900,90) yield I/T=140/1000=0.14, not the unweighted ratio 0.30. With E=10 and E=20, the aggregate error is at most 30/1000. Re-reading the first interval contributes nothing new.</t>
      <t>Negative cases include missing durations for event-based quality, any duration with unknown quality, I&gt;Q, Q&gt;T, E&gt;T, a missing sampled period, conflicting same-identity reports, and overlapping offsets. Both schema constraints and procedural checks are required; schema validation cannot verify that physical gates were measured truthfully.</t>
      <t>The following operational-state example uses the JSON encoding in <xref target="RFC7951"/>. uint64 values are strings. The interface and queue identity are illustrative; no deployment result is implied.</t>
      <sourcecode type="json">{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "Ethernet1/1",
        "type": "iana-if-type:ethernetCsmacd",
        "oper-status": "up",
        "ietf-pfc-queue-telemetry:pfc-queue-telemetry": {
          "queue": [
            {
              "queue-id": "q3",
              "epoch-id": "31c38fe2-f97e-4a88-a0a7-bae9ed5d4131",
              "interval-id": "2",
              "start-offset-ns": "100000000",
              "duration-ns": "100000000",
              "mapped-priority": [
                3
              ],
              "quality": "event-based",
              "gated-backlog-ns": "18500000",
              "backlog-ns": "64000000",
              "absolute-error-ns": "256"
            }
          ]
        },
        "admin-status": "up",
        "if-index": 1,
        "statistics": {
          "discontinuity-time": "2026-10-30T00:00:00Z"
        }
      }
    ]
  }
}
</sourcecode>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The module is intended for NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/> using their secure transports. NETCONF over SSH is specified in <xref target="RFC6242"/>; RESTCONF uses HTTPS. Access control such as NACM <xref target="RFC8341"/> <bcp14>MUST</bcp14> restrict which users can read queue measurements and establish subscriptions. This model contains no writable nodes, RPCs, actions, or notifications.</t>
      <t>Readable interface/queue identities, priorities, timing, backlog and gating expose traffic activity and shared-resource conditions. Operators <bcp14>SHOULD</bcp14> limit access by tenant and operational role, limit retained precision where appropriate, and bound polling/subscription load. Opaque queue IDs do not alone anonymize a workload.</t>
      <t>An authenticated device can supply false but internally consistent telemetry. Epoch, interval, and arithmetic checks detect contradictions and discontinuities, not authenticity of hardware events. Consumers <bcp14>MUST</bcp14> preserve uncertainty and missing coverage rather than convert unavailable data into apparent absence of congestion.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following namespace in the IETF XML Registry <xref target="RFC3688"/>, and the following module in the YANG Module Names registry <xref target="RFC7950"/>. These are requested registrations, not assigned values.</t>
      <table anchor="yang-registration">
        <name>Requested Registration</name>
        <thead>
          <tr>
            <th>Field</th>
            <th>Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>URI</td>
            <td>urn:ietf:params:xml:ns:yang:ietf-pfc-queue-telemetry</td>
          </tr>
          <tr>
            <td>Registrant Contact</td>
            <td>IESG</td>
          </tr>
          <tr>
            <td>XML</td>
            <td>N/A; XML namespace</td>
          </tr>
          <tr>
            <td>Name</td>
            <td>ietf-pfc-queue-telemetry</td>
          </tr>
          <tr>
            <td>Prefix</td>
            <td>pqt</td>
          </tr>
          <tr>
            <td>Maintained by IANA</td>
            <td>N</td>
          </tr>
          <tr>
            <td>Reference</td>
            <td>RFC XXXX</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner"/>
          <date year="1997" month="March"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950">
        <front>
          <title>The YANG 1.1 Data Modeling Language</title>
          <author initials="M." surname="Bjorklund" role="editor"/>
          <date year="2016" month="August"/>
        </front>
        <seriesInfo name="RFC" value="7950"/>
        <seriesInfo name="DOI" value="10.17487/RFC7950"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba"/>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8342">
        <front>
          <title>Network Management Datastore Architecture (NMDA)</title>
          <author initials="M." surname="Bjorklund"/>
          <author initials="J." surname="Schoenwaelder"/>
          <author initials="P." surname="Shafer"/>
          <author initials="K." surname="Watsen"/>
          <author initials="R." surname="Wilton"/>
          <date year="2018" month="March"/>
        </front>
        <seriesInfo name="RFC" value="8342"/>
        <seriesInfo name="DOI" value="10.17487/RFC8342"/>
      </reference>
      <reference anchor="RFC8343" target="https://www.rfc-editor.org/info/rfc8343">
        <front>
          <title>A YANG Data Model for Interface Management</title>
          <author initials="M." surname="Bjorklund"/>
          <date year="2018" month="March"/>
        </front>
        <seriesInfo name="RFC" value="8343"/>
        <seriesInfo name="DOI" value="10.17487/RFC8343"/>
      </reference>
      <reference anchor="RFC9911" target="https://www.rfc-editor.org/info/rfc9911">
        <front>
          <title>Common YANG Data Types</title>
          <author initials="J." surname="Schoenwaelder" role="editor"/>
          <date year="2025" month="December"/>
        </front>
        <seriesInfo name="RFC" value="9911"/>
        <seriesInfo name="DOI" value="10.17487/RFC9911"/>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="CISCO-PFC" target="https://www.cisco.com/c/en/us/td/docs/iosxr/cisco8000/qos/b-modular-qos-config-cisco8000/priority-flow-control-watchdog-and-monitoring.pdf">
        <front>
          <title>Priority Flow Control Watchdog and Monitoring Metrics</title>
          <author>
            <organization>Cisco Systems</organization>
          </author>
        </front>
      </reference>
      <reference anchor="FANN-LQ" target="https://datatracker.ietf.org/doc/html/draft-praveen-fann-lq-telemetry-info-00">
        <front>
          <title>A YANG Data Model for Link Quality Telemetry in CLOS Data Center Fabrics</title>
          <author initials="S. P. K." surname="Pasalapudi" fullname="S. Praveen K. Pasalapudi"/>
          <author initials="V. P." surname="Beeram" fullname="Vishnu Pavan Beeram"/>
          <date month="July" day="20" year="2026"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-praveen-fann-lq-telemetry-info-00"/>
      </reference>
      <reference anchor="I-D.ietf-rtgwg-qos-model" target="https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg-qos-model-16">
        <front>
          <title>A YANG Data Model for Quality of Service (QoS) in IP Networks</title>
          <author initials="A." surname="Choudhary"/>
          <author initials="M." surname="Jethanandani"/>
          <author initials="E." surname="Aries"/>
          <author initials="I." surname="Chen" fullname="I. Chen"/>
          <date year="2026" month="September" day="25"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-qos-model-16"/>
      </reference>
      <reference anchor="IEEE-ETH-YANG" target="https://github.com/YangModels/yang/blob/main/standard/ieee/published/802.3/ieee802-ethernet-interface.yang">
        <front>
          <title>IEEE 802.3 Ethernet Interface YANG Module</title>
          <author>
            <organization>IEEE</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="IEEE-QDT" target="https://1.ieee802.org/tsn/802-1qdt/">
        <front>
          <title>P802.1Qdt: Priority-based Flow Control Enhancements</title>
          <author>
            <organization>IEEE 802.1</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="OC-QOS" target="https://github.com/openconfig/public/tree/master/release/models/qos">
        <front>
          <title>OpenConfig QoS Models</title>
          <author>
            <organization>OpenConfig</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3168">
        <front>
          <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
          <author initials="K." surname="Ramakrishnan"/>
          <author initials="S." surname="Floyd"/>
          <author initials="D." surname="Black"/>
          <date year="2001" month="September"/>
        </front>
        <seriesInfo name="RFC" value="3168"/>
        <seriesInfo name="DOI" value="10.17487/RFC3168"/>
      </reference>
      <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688">
        <front>
          <title>The IETF XML Registry</title>
          <author initials="M." surname="Mealling"/>
          <date year="2004" month="January"/>
        </front>
        <seriesInfo name="BCP" value="81"/>
        <seriesInfo name="RFC" value="3688"/>
        <seriesInfo name="DOI" value="10.17487/RFC3688"/>
      </reference>
      <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241">
        <front>
          <title>Network Configuration Protocol (NETCONF)</title>
          <author initials="R." surname="Enns" role="editor"/>
          <author initials="M." surname="Bjorklund" role="editor"/>
          <author initials="J." surname="Schoenwaelder" role="editor"/>
          <author initials="A." surname="Bierman" role="editor"/>
          <date year="2011" month="June"/>
        </front>
        <seriesInfo name="RFC" value="6241"/>
        <seriesInfo name="DOI" value="10.17487/RFC6241"/>
      </reference>
      <reference anchor="RFC6242" target="https://www.rfc-editor.org/info/rfc6242">
        <front>
          <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
          <author initials="M." surname="Wasserman"/>
          <date year="2011" month="June"/>
        </front>
        <seriesInfo name="RFC" value="6242"/>
        <seriesInfo name="DOI" value="10.17487/RFC6242"/>
      </reference>
      <reference anchor="RFC7567" target="https://www.rfc-editor.org/info/rfc7567">
        <front>
          <title>IETF Recommendations Regarding Active Queue Management</title>
          <author initials="F." surname="Baker" role="editor"/>
          <author initials="G." surname="Fairhurst" role="editor"/>
          <date year="2015" month="July"/>
        </front>
        <seriesInfo name="BCP" value="197"/>
        <seriesInfo name="RFC" value="7567"/>
        <seriesInfo name="DOI" value="10.17487/RFC7567"/>
      </reference>
      <reference anchor="RFC7928" target="https://www.rfc-editor.org/info/rfc7928">
        <front>
          <title>Characterization Guidelines for Active Queue Management (AQM)</title>
          <author initials="N." surname="Kuhn" role="editor"/>
          <author initials="P." surname="Natarajan" role="editor"/>
          <author initials="N." surname="Khademi" role="editor"/>
          <author initials="D." surname="Ros"/>
          <date year="2016" month="July"/>
        </front>
        <seriesInfo name="RFC" value="7928"/>
        <seriesInfo name="DOI" value="10.17487/RFC7928"/>
      </reference>
      <reference anchor="RFC7951" target="https://www.rfc-editor.org/info/rfc7951">
        <front>
          <title>JSON Encoding of Data Modeled with YANG</title>
          <author initials="L." surname="Lhotka"/>
          <date year="2016" month="August"/>
        </front>
        <seriesInfo name="RFC" value="7951"/>
        <seriesInfo name="DOI" value="10.17487/RFC7951"/>
      </reference>
      <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040">
        <front>
          <title>RESTCONF Protocol</title>
          <author initials="A." surname="Bierman"/>
          <author initials="M." surname="Bjorklund"/>
          <author initials="K." surname="Watsen"/>
          <date year="2017" month="January"/>
        </front>
        <seriesInfo name="RFC" value="8040"/>
        <seriesInfo name="DOI" value="10.17487/RFC8040"/>
      </reference>
      <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340">
        <front>
          <title>YANG Tree Diagrams</title>
          <author initials="M." surname="Bjorklund"/>
          <author initials="L." surname="Berger" role="editor"/>
          <date year="2018" month="March"/>
        </front>
        <seriesInfo name="BCP" value="215"/>
        <seriesInfo name="RFC" value="8340"/>
        <seriesInfo name="DOI" value="10.17487/RFC8340"/>
      </reference>
      <reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341">
        <front>
          <title>Network Configuration Access Control Model</title>
          <author initials="A." surname="Bierman"/>
          <author initials="M." surname="Bjorklund"/>
          <date year="2018" month="March"/>
        </front>
        <seriesInfo name="STD" value="91"/>
        <seriesInfo name="RFC" value="8341"/>
        <seriesInfo name="DOI" value="10.17487/RFC8341"/>
      </reference>
      <reference anchor="RFC8641" target="https://www.rfc-editor.org/info/rfc8641">
        <front>
          <title>Subscription to YANG Notifications for Datastore Updates</title>
          <author>
            <organization>RFC Editor</organization>
          </author>
          <date year="2019" month="September"/>
        </front>
        <seriesInfo name="RFC" value="8641"/>
      </reference>
      <reference anchor="RFC9907" target="https://www.rfc-editor.org/info/rfc9907">
        <front>
          <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
          <author>
            <organization>RFC Editor</organization>
          </author>
          <date year="2026" month="March"/>
        </front>
        <seriesInfo name="RFC" value="9907"/>
      </reference>
      <reference anchor="SAI-QUEUE" target="https://github.com/opencomputeproject/SAI/blob/master/inc/saiqueue.h">
        <front>
          <title>Switch Abstraction Interface (SAI): Queue API Specification</title>
          <author>
            <organization>Open Compute Project</organization>
          </author>
        </front>
      </reference>
    </references>
  </back>
</rfc>
