<?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.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-discardmodel-09" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="IM and DM for Packet Discard Reporting">Information and Data Models for Packet Discard Reporting</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-discardmodel-09"/>
    <author initials="J." surname="Evans" fullname="John Evans">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>1 Principal Place, Worship Street</street>
          <city>London</city>
          <code>EC2A 2FA</code>
          <country>UK</country>
        </postal>
        <email>jevanamz@amazon.co.uk</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>410 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>US</country>
        </postal>
        <email>opyl@amazon.com</email>
      </address>
    </author>
    <author initials="J." surname="Haas" fullname="Jeffrey Haas">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>US</country>
        </postal>
        <email>jhaas@juniper.net</email>
      </address>
    </author>
    <author initials="A." surname="Kadosh" fullname="Aviran Kadosh">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Dr.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>akadosh@cisco.com</email>
      </address>
    </author>
    <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="18"/>
    <area>Operations and Management Area</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Troubelshooting</keyword>
    <keyword>Diagnostic</keyword>
    <keyword>Network Automation</keyword>
    <keyword>Network Service</keyword>
    <keyword>Resilience</keyword>
    <keyword>Robustness</keyword>
    <keyword>Root cause</keyword>
    <keyword>Anomaly</keyword>
    <keyword>Incident</keyword>
    <keyword>Customer experience</keyword>
    <abstract>
      <?line 107?>

<t>This document defines an Information Model and specifies a corresponding YANG data model for packet discard reporting. The Information Model provides an implementation-independent framework for classifying packet loss — both intended (e.g., due to policy) and unintended (e.g., due to congestion or errors) — to enable automated network mitigation of unintended packet loss. The YANG data model specifies an implementation of this framework for network elements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://o-pylypenko.github.io/draft-ietf-opsawg-discardmodel/draft-ietf-opsawg-discardmodel.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-opsawg-discardmodel/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group  mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/o-pylypenko/draft-ietf-opsawg-discardmodel"/>.</t>
    </note>
  </front>
  <middle>
    <?line 111?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The primary function of a network is to transport and deliver packets according to service level objectives. For network operators, understanding both where and why packet loss occurs within a network is essential for effective operation. Device-reported packet loss provides the most direct signal for identifying service impact. While certain types of packet loss, such as policy-based discards, are intentional and part of normal network operation, unintended packet loss can impact customer services.  To automate network operations, operators must be able to detect customer-impacting packet loss, determine its root cause, and apply appropriate mitigation actions. Precise classification of packet loss is thus crucial to ensure that anomalous packet loss is easily detected and that the right action is taken to mitigate the impact. Taking the wrong action can make problems worse; for example, removing a congested device from service can exacerbate congestion by redirecting traffic to other already congested links or devices.</t>
      <t>Existing metrics for reporting packet loss, such as ifInDiscards, ifOutDiscards, ifInErrors, and ifOutErrors defined in "The Interfaces Group MIB" <xref target="RFC2863"/> and "A YANG Data Model for Interface Management" <xref target="RFC8343"/>, are insufficient for automating network operations. First, they lack precision; for instance, ifInDiscards aggregates all discarded inbound packets without specifying the cause, making it challenging to distinguish between intended and unintended discards. Second, these definitions are ambiguous, leading to inconsistent vendor implementations. For example, in some implementations ifInErrors accounts only for errored packets that are dropped, while in others, it includes all errored packets, whether they are dropped or not. Many implementations support more discard metrics than these, however, they have been inconsistently implemented due to the lack of a standardised classification scheme and clear semantics for packet loss reporting. For example, <xref target="RFC7270"/> provides support for reporting discards per flow in IP Flow Information Export (IPFIX) <xref target="RFC7011"/> using forwardingStatus, however, the defined drop reason codes also lack sufficient clarity to facilitate automated root cause analysis and impact mitigation (e.g., the "For us" reason code).</t>
      <t>This document defines an Information Model and specifies a corresponding YANG data model for packet loss reporting which address these issues.  The Information Model provides precise classification of packet loss to enable accurate automated mitigation. The data model specifies a YANG implementation of this framework for network elements, while maintaining consistency through clear semantics.</t>
      <t>The scope of this document is limited to reporting packet loss at Layer 3 and frames discarded at Layer 2. This document considers only the signals that may trigger automated mitigation actions and not how the actions are defined or executed.</t>
      <t><xref target="problem"/> describes the problem space and requirements. <xref target="infomodel"/> defines the Information Model and classification scheme. <xref target="datamodel"/> specifies the corresponding YANG data model and implementation requirements together with a set of usage examples, and the complete YANG module definition. The appendices provide additional context and implementation guidance.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT 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>
      <?line -18?>

<t>A packet discard accounts for any instance where a packet is dropped by a device, regardless of whether the discard was intentional or unintentional.</t>
      <t>Intended discards are packets dropped due to deliberate network policies or configurations designed to enforce security or Quality of Service (QoS). For example, packets dropped because they match an Access Control List (ACL) denying certain traffic types.</t>
      <t>Unintended discards are packets that were dropped, which the network operator otherwise intended to deliver, i.e. which indicates an error state.  There are many possible reasons for unintended packet loss, including: erroring links may corrupt packets in transit; incorrect routing tables may result in packets being dropped because they do not match a valid route; configuration errors may result in a valid packet incorrectly matching an ACL and being dropped.</t>
      <t>Device discard counters do not by themselves establish operator intent. Discards reported under policy (e.g., ACL/policer) indicate only that traffic matched a configured rule; such discards may still be unintended if the configuration is in error. Determining intent for policy discards requires external context (e.g., configuration validation and change history) which is out of scope for this specification.</t>
      <t>Tree diagrams used in this document follow the notation defined in <xref target="RFC8340"/>.</t>
    </section>
    <section anchor="problem">
      <name>Problem Statement</name>
      <t>The fundamental problem for network operators is how to automatically detect when and where unintended packet loss is occurring and determine the appropriate action to mitigate it. For any network, there are a small set of potential actions that can be taken to mitigate customer impact when unintended packet loss is detected, for example:</t>
      <ol spacing="normal" type="1"><li>
          <t>Take a problematic device, link, or set of devices and/or links out of service.</t>
        </li>
        <li>
          <t>Return a device, link, or set of devices and/or links back into service.</t>
        </li>
        <li>
          <t>Move traffic to other links or devices to alleviate congestion or avoid problematic paths.</t>
        </li>
        <li>
          <t>Roll back a recent change to a device that might have caused the problem.</t>
        </li>
        <li>
          <t>Escalate to a network operator as a last resort when automated mitigation is not possible.</t>
        </li>
      </ol>
      <t>The ability to select the appropriate mitigation action depends on four key features of packet loss:</t>
      <dl>
        <dt>FEATURE-DISCARD-SCOPE:</dt>
        <dd>
          <t>Determines which devices, interfaces, and/or flows are impacted.</t>
        </dd>
        <dt>FEATURE-DISCARD-RATE:</dt>
        <dd>
          <t>The rate and/or magnitude of the discards, indicating the severity and urgency of the problem.  Rate may be expressed using absolute (e.g., pps) or relative (e.g., percent) values.</t>
        </dd>
        <dt>FEATURE-DISCARD-DURATION:</dt>
        <dd>
          <t>The duration of the discards which helps to distinguish transient from persistent issues.</t>
        </dd>
        <dt>FEATURE-DISCARD-CLASS:</dt>
        <dd>
          <t>The type or class of discards, which is crucial for selecting the appropriate of mitigation - for example: error discards may require taking faulty components out of service; no-buffer discards may require traffic redistribution; intended policy discards typically require no automated action</t>
        </dd>
      </dl>
      <t>While FEATURE-DISCARD-SCOPE, FEATURE-DISCARD-RATE, and FEATURE-DISCARD-DURATION are implicitly supported by MIB-II <xref target="RFC2863"/> and the YANG Data Model for Interface Management <xref target="RFC8343"/>, FEATURE-DISCARD-CLASS requires a more detailed classification scheme than they define. The following Information Model defines such a classification scheme to enable automated mapping from loss signals to appropriate mitigation actions.</t>
    </section>
    <section anchor="infomodel">
      <name>Information Model</name>
      <t>The Information Model is defined using YANG <xref target="RFC7950"/>,  with Data Structure Extensions <xref target="RFC8791"/>, allowing the model to remain abstract and decoupled from specific implementations in accordance with <xref target="RFC3444"/>. This abstraction supports different data model implementations - for example, in YANG, IPFIX <xref target="RFC7011"/>, gMNI <xref target="gMNI"/> or SNMPv3 <xref target="RFC3411"/> - while ensuring consistency across implementations. Using YANG for the Information Model enables this abstraction, leverages the community's familiarity with its syntax, and ensures lossless translation to the corresponding YANG data model, which is defined in <xref target="datamodel"/>.</t>
      <section anchor="infomodel-structure">
        <name>Structure</name>
        <t>The Information Model defines a hierarchical classification scheme for packet discards, which captures where in a device the discards are accounted (component), in which direction they were flowing (direction), whether they were successfully processed or discarded (type), what protocol layer they belong to (layer), and the specific reason for any discards (sub-types). This structure enables both high-level monitoring of total discards and more detailed triage to map to mitigation actions.</t>
        <t>The abstract structure of the IM is depicted in <xref target="tree-im-abstract"/>. The full YANG tree diagram of the IM is provided in <xref target="sec-im-full-tree"/>.</t>
        <figure anchor="tree-im-abstract">
          <name>Abstract IM Tree Structure</name>
          <artwork><![CDATA[
module: ietf-packet-discard-reporting-sx

  structure packet-discard-reporting:
    +-- control-plane {control-plane-stats}?
    |  +-- traffic* [direction]
    |  |  ...
    |  +-- discards* [direction]
    |     ...
    +-- interface* [name] {interface-stats}?
    |  +-- name        string
    |  +-- traffic* [direction]
    |  |  +-- direction    identityref
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos
    |  |     +-- class* [id]
    |  |        ...
    |  +-- discards* [direction]
    |     +-- direction    identityref
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |        +-- class* [id]
    |           ...
    +-- flow* [direction] {flow-reporting}?
    |  +-- direction    identityref
    |  +-- traffic
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos
    |  |     +-- class* [id]
    |  |        ...
    |  +-- discards
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |        +-- class* [id]
    |           ...
    +-- device {device-stats}?
       +-- traffic
       |  +-- l2
       |  |  ...
       |  +-- l3
       |  |  ...
       |  +-- qos
       |     +-- class* [id]
       |        ...
       +-- discards
          +-- l2
          |  ...
          +-- l3
          |  ...
          +-- errors
          |  +-- l2
          |  |  ...
          |  +-- l3
          |  |  ...
          |  +-- internal
          |     ...
          +-- policy
          |  +-- l2
          |  |  ...
          |  +-- l3
          |     ...
          +-- no-buffer
             +-- class* [id]
                ...
]]></artwork>
        </figure>
        <t>The discard reporting can be organized into several types: control plane, interface, flow, and device. In order to allow for better mapping to underlying data models, the IM supports a set of "features" to control the supported type.</t>
        <t>A complete classification path follows the pattern: component/direction/type/layer/sub-type/sub-sub-type/.../metric. <xref target="wheredropped"/> illustrates where these discards typically occur in a network device.  The elements of the tree are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Component:
            </t>
            <ul spacing="normal">
              <li>
                <t>control-plane: discards of traffic to or from a device's control plane.</t>
              </li>
              <li>
                <t>interface: discards of traffic to or from a specific network interface.</t>
              </li>
              <li>
                <t>flow: discards of traffic associated with a specific traffic flow.</t>
              </li>
              <li>
                <t>device: discards of traffic transiting the device.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Direction:
            </t>
            <ul spacing="normal">
              <li>
                <t>ingress: counters for incoming packets or frames.</t>
              </li>
              <li>
                <t>egress: counters for outgoing packets or frames.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Type:
            </t>
            <ul spacing="normal">
              <li>
                <t>traffic: counters for successfully received or transmitted packets or frames.</t>
              </li>
              <li>
                <t>discards: counters for packets or frames that were dropped.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Layer:
            </t>
            <ul spacing="normal">
              <li>
                <t>l2: Layer 2 traffic and discards. This covers both frame and byte counts.</t>
              </li>
              <li>
                <t>l3: Layer 3 traffic and discards. This covers both packet and byte counts.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The hierarchical structure allows for future extension while maintaining backward compatibility. New discard types can be added as new branches without affecting existing implementations.</t>
        <t>The corresponding YANG module is defined in <xref target="infomodel-module"/>.</t>
      </section>
      <section anchor="sub-type-definitions">
        <name>Sub-type Definitions</name>
        <dl>
          <dt>discards/policy/:</dt>
          <dd>
            <t>These are intended discards, meaning packets dropped by a device due to a configured policy, including: ACLs, traffic policers, Reverse Path Forwarding (RPF) checks, DDoS protection rules, and explicit null routes.</t>
          </dd>
          <dt>discards/error/:</dt>
          <dd>
            <t>These are unintended discards due to errors in processing packets or frames.  There are multiple sub-classes.</t>
          </dd>
          <dt>discards/error/l2/rx/:</dt>
          <dd>
            <t>These are frames discarded due to errors in the received Layer 2 frame, including: CRC errors, invalid MAC addresses, invalid VLAN tags, frame size violations and other malformed frame conditions.</t>
          </dd>
          <dt>discards/error/l3/rx/:</dt>
          <dd>
            <t>These are discards which occur due to errors in the received packet, indicating an upstream problem rather than an issue with the device dropping the errored packets, including: header checksum errors,  MTU exceeded, invalid packet errors, i.e., incorrect version, incorrect header length, invalid options and other malformed packet conditions.</t>
          </dd>
          <dt>discards/error/l3/rx/ttl-expired:</dt>
          <dd>
            <t>These are discards due to TTL (or Hop limit) expiry, which can occur for the following reasons: normal trace-route operations, end-system TTL/Hop limit set too low, routing loops in the network.</t>
          </dd>
          <dt>discards/error/l3/no-route/:</dt>
          <dd>
            <t>These are discards which occur due to a packet not matching any route in the routing table, e.g., which may be due to routing configuration errors or may be transient discards during convergence.</t>
          </dd>
          <dt>discards/error/internal/:</dt>
          <dd>
            <t>These are discards due to internal device issues, including: parity errors in device memory or other internal hardware errors.  Any errored discards not explicitly assigned to other classes are also accounted for here.</t>
          </dd>
          <dt>discards/no-buffer/:</dt>
          <dd>
            <t>These are discards due to buffer exhaustion, i.e. congestion related discards. These can be tail-drop discards or due to an active queue management algorithm, such as RED <xref target="RED93"/> or CODEL <xref target="RFC8289"/>.</t>
          </dd>
        </dl>
        <t>An example of possible signal-to-mitigation action mapping is provided in <xref target="mapping"/>.</t>
      </section>
      <section anchor="infomodel-module">
        <name>"ietf-packet-discard-reporting-sx" YANG Module</name>
        <t>The "ietf-packet-discard-reporting-sx" module uses the "sx" structure defined in <xref target="RFC8791"/>.</t>
        <sourcecode markers="true"><![CDATA[
module ietf-packet-discard-reporting-sx {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting-sx";
  prefix plr-sx;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }

  organization
    "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   https://datatracker.ietf.org/wg/opsawg/
     WG List:  mailto:opsawg@ietf.org

     Author:   John Evans
               <mailto:jevanamz@amazon.co.uk>

     Author:   Oleksandr Pylypenko
               <mailto:opyl@amazon.com>

     Author:   Jeffrey Haas
               <mailto:jhaas@juniper.net>

     Author:   Aviran Kadosh
               <mailto:akadosh@cisco.com>

     Author:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>";
  description
    "This module defines an information model for packet discard
     reporting.

     Copyright (c) 2025 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; see the
     RFC itself for full legal notices.";

  revision 2024-06-04 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }

  /*
   * Features
   */


  feature control-plane-stats {
    description
      "Indicates support of control plane statistics on this
       device.";
  }

  feature interface-stats {
    description
      "Indicates support of interface statistics on this
       device.";
  }

  feature flow-reporting {
    description
      "Indicates support of flow reporting on this device.";
  }

  feature device-stats {
    description
      "Indicates support of global device statistics on this
       device.";
  }

  /*
   * Identities
   */

  identity direction {
    description
      "Defines a direction for the reported statistics.";
  }

  identity ingress {
    base direction;
    description
      "Reports statistics for the received from the network
       packets.";
  }

  identity egress {
    base direction;
    description
      "Reports statistics for the sent to the network
       packets.";
  }

  identity address-family {
    description
      "Defines a type for the address family.";
  }

  identity ipv4 {
    base address-family;
    description
      "Identity for an IPv4 address family.";
  }

  identity ipv6 {
    base address-family;
    description
      "Identity for an IPv6 address family.";
  }

  identity all {
    base address-family;
    description
      "Identity for all address families.";
  }

  /*
   * Groupings
   */

  grouping basic-packets {
    description
      "Grouping for Layer 3 packet counters.";
    leaf packets {
      type yang:counter64;
      description
        "Number of Layer 3 packets.";
    }
  }

  grouping basic-packets-bytes {
    description
      "Grouping for Layer 3 packet and byte counters.";
    uses basic-packets;
    leaf bytes {
      type yang:counter64;
      description
        "Number of Layer 3 bytes.";
    }
  }

  grouping basic-frames {
    description
      "Grouping for Layer 2 frame counters.";
    leaf frames {
      type yang:counter64;
      description
        "Number of Layer 2 frames.";
    }
  }

  grouping basic-frames-bytes {
    description
      "Grouping for Layer 2 frame and byte counters.";
    uses basic-frames;
    leaf bytes {
      type yang:counter64;
      description
        "Number of Layer 2 bytes.";
    }
  }

  grouping l2-traffic {
    description
      "Layer 2 traffic counters.";
    uses basic-frames-bytes;
  }

  grouping ip {
    description
      "Layer 3 traffic counters per address family.";
    list address-family-stat {
      key "address-family";
      description
        "Reports per address family traffic counters.";
      leaf address-family {
        type identityref {
          base address-family;
        }
        description
          "Specifies an address family.";
      }
      uses basic-packets-bytes;
      container unicast {
        description
          "Unicast traffic counters.";
        uses basic-packets-bytes;
      }
      container multicast {
        description
          "Multicast traffic counters.";
        uses basic-packets-bytes;
      }
    }
  }

  grouping l3-traffic {
    description
      "Layer 3 traffic counters.";
    uses ip;
  }

  grouping class-list {
    description
      "Class-based traffic counters.";
    list class {
      key "id";
      min-elements 1;
      description
        "Class traffic counters.";
      leaf id {
        type string;
        description
          "Class identifier.";
      }
      uses basic-packets-bytes;
    }
  }

  grouping qos {
    description
      "Quality of Service (QoS) traffic counters.";
    container qos {
      presence "QoS statistics are available.";
      description
        "Per-class QoS traffic counters.";
      uses class-list;
    }
  }

  grouping traffic {
    description
      "All traffic counters.";
    container l2 {
      description
        "Layer 2 traffic counters.";
      uses l2-traffic;
    }
    container l3 {
      description
        "Layer 3 traffic counters.";
      uses l3-traffic;
    }
    uses qos;
  }

  grouping errors-l2-rx {
    description
      "Layer 2 ingress frame error discard counters.";
    container rx {
      description
        "Layer 2 ingress frame receive error discard
         counters.";
      leaf frames {
        type yang:counter64;
        description
          "The number of frames discarded due to errors
           with the received frame.";
      }
      leaf crc-error {
        type yang:counter64;
        description
          "The number of frames discarded due to CRC error.";
      }
      leaf invalid-mac {
        type yang:counter64;
        description
          "The number of frames discarded due to an invalid
           MAC address.";
      }
      leaf invalid-vlan {
        type yang:counter64;
        description
          "The number of frames discarded due to an invalid
           VLAN tag.";
      }
      leaf invalid-frame {
        type yang:counter64;
        description
          "The number of invalid frames discarded due to other
           reasons, not limited to: malformed frames, frame-size
           violations.";
      }
    }
  }

  grouping errors-l3-rx {
    description
      "Layer 3 ingress packet error discard counters.";
    container rx {
      description
        "Layer 3 ingress packet receive error discard
         counters.";
      leaf packets {
        type yang:counter64;
        description
          "The number of Layer 3 packets discarded due to
           errors in the received packet.";
      }
      leaf checksum-error {
        type yang:counter64;
        description
          "The number of received packets discarded due
           to a checksum error.";
      }
      leaf mtu-exceeded {
        type yang:counter64;
        description
          "The number of received packets discarded due to
           MTU exceeded.";
      }
      leaf invalid-packet {
        type yang:counter64;
        description
          "The number of invalid packets discarded due to other
           reasons, not limited to: invalid packet length, invalid
           header fields, invalid options, invalid protocol version,
           invalid flags or control bits, malformed packets.";
      }
    }
    leaf ttl-expired {
      type yang:counter64;
      description
        "The number of received packets discarded due to
         expired TTL.";
    }
    leaf no-route {
      type yang:counter64;
      description
        "The number of packets discarded due to not matching
         a valid route.";
    }
    leaf invalid-sid {
      type yang:counter64;
      description
        "The number of packets discarded due to an invalid
         Segment Routing (SR) SID.";
    }
    leaf invalid-label {
      type yang:counter64;
      description
        "The number of packets discarded due to an invalid
         MPLS label.";
    }
  }

  grouping errors-l3-int {
    description
      "Internal error discard counters.";
    leaf packets {
      type yang:counter64;
      description
        "The number of packets discarded due to internal
         errors.";
    }
    leaf parity-error {
      type yang:counter64;
      description
        "The number of packets discarded due to parity
         errors.";
    }
  }

  grouping errors-l2-tx {
    description
      "Layer 2 transmit error discard counters.";
    container tx {
      description
        "Layer 2 transmit frame error discard counters.";
      leaf frames {
        type yang:counter64;
        description
          "The number of Layer 2 frames discarded due to
           errors when transmitting.";
      }
    }
  }

  grouping errors-l3-tx {
    description
      "Layer 3 transmit error discard counters.";
    container tx {
      description
        "Layer 3 transmit packet error discard counters.";
      leaf packets {
        type yang:counter64;
        description
          "The number of Layer 3 packets discarded due to
           errors when transmitting.";
      }
    }
  }

  grouping errors {
    description
      "Error discard counters.";
    container l2 {
      description
        "Layer 2 frame error discard counters.";
      uses errors-l2-rx;
      uses errors-l2-tx;
    }
    container l3 {
      description
        "Layer 3 packet error discard counters.";
      uses errors-l3-rx;
      uses errors-l3-tx;
    }
    container internal {
      description
        "Internal error discard counters.";
      uses errors-l3-int;
    }
  }

  grouping policy-l2 {
    description
      "Layer 2 policy frame discard counters.";
    leaf frames {
      type yang:counter64;
      description
        "The number of Layer 2 frames discarded due
         to policy.";
    }
    leaf acl {
      type yang:counter64;
      description
        "The number of frames discarded due to Layer 2 ACLs.";
    }
  }

  grouping policy-l3 {
    description
      "Layer 3 policy packet discard counters.";
    leaf packets {
      type yang:counter64;
      description
        "The number of Layer 3 packets discarded due to policy.";
    }
    leaf acl {
      type yang:counter64;
      description
        "The number of packets discarded due to Layer 3 ACLs.";
    }
    container policer {
      description
        "The number of packets discarded due to policer
         violations.";
      uses basic-packets-bytes;
      container classes {
        presence "Per-class policer statistics are available.";
        description
          "Per-class policer discard counters.";
        uses class-list;
      }
    }
    leaf null-route {
      type yang:counter64;
      description
        "The number of packets discarded due to matching
         a null route.";
    }
    leaf rpf {
      type yang:counter64;
      description
        "The number of packets discarded due to failing
         Reverse Path Forwarding (RPF) check.";
    }
    leaf ddos {
      type yang:counter64;
      description
        "The number of packets discarded due to DDoS
         protection policies.";
    }
  }

  grouping discards {
    description
      "Discard counters.";
    container l2 {
      description
        "Layer 2 frame discard counters.";
      uses l2-traffic;
    }
    container l3 {
      description
        "Layer 3 packet discard counters.";
      uses l3-traffic;
    }
    container errors {
      description
        "Error discard counters.";
      uses errors;
    }
    container policy {
      description
        "Policy-related discard counters.";
      uses policy;
    }
    container no-buffer {
      description
        "Discard counters due to buffer unavailability.";
      uses qos;
    }
  }

  grouping policy {
    description
      "Policy-related discard counters.";
    container l2 {
      description
        "Layer 2 policy frame discard counters.";
      uses policy-l2;
    }
    container l3 {
      description
        "Layer 3 policy packet discard counters.";
      uses policy-l3;
    }
  }

  grouping device {
    description
      "Device-level traffic and discard counters.";
    container traffic {
      description
        "Traffic counters.";
      uses traffic;
    }
    container discards {
      description
        "Discard counters.";
      uses discards;
    }
  }

  grouping interface {
    description
      "Interface-level traffic and discard counters.";
    list traffic {
      key "direction";
      description
        "Traffic counters.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses traffic;
    }
    list discards {
      key "direction";
      description
        "Discard counters.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses discards;
    }
  }

  grouping control-plane {
    description
      "Control plane packet counters.";
    list traffic {
      key "direction";
      description
        "Total control plane packets.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
    }
    list discards {
      key "direction";
      description
        "Control plane packet discard counters.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
      container policy {
        description
          "Number of control plane packets discarded due to policy.";
        uses basic-packets;
      }
    }
  }

  /*
   * Main structure definition
   */

  sx:structure packet-discard-reporting {
    description
      "Specifies the abstract structure of packet discard
       reporting data.";
    container control-plane {
      if-feature "control-plane-stats";
      description
        "Control plane packet counters.";
      uses control-plane;
    }
    list interface {
      if-feature "interface-stats";
      key "name";
      description
        "Indicates a list of interfaces for which packet
         discard reporting data is provided.";
      leaf name {
        type string;
        description
          "Indicates the name of the interface.";
      }
      uses interface;
    }
    list flow {
      if-feature "flow-reporting";
      key "direction";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      description
        "Flow packet counters.";
      uses device;
    }
    container device {
      if-feature "device-stats";
      description
        "Device level packet counters.";
      uses device;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="datamodel">
      <name>Data Model</name>
      <t>This data model implements the Information Model defined in <xref target="infomodel"/> for the interface, device, and control-plane components. This is classified as a Network Element model as defined by <xref target="RFC1157"/>.</t>
      <section anchor="datamodel-structure">
        <name>Structure</name>
        <t>There is a direct mapping between the Information Model components and their data model implementations, with each component in the hierarchy represented by corresponding YANG containers and leaf data nodes. The abstract tree is shown in <xref target="tree-dm-abstract"/>.</t>
        <figure anchor="tree-dm-abstract">
          <name>Abstract DM Tree Structure</name>
          <artwork><![CDATA[
module: ietf-packet-discard-reporting

  +--ro control-plane! {control-plane-stats}?
  |  +--ro traffic* [direction]
  |  |  ...
  |  +--ro discards* [direction]
  |     ...
  +--ro interface* [name] {interface-stats}?
  |  +--ro name        string
  |  +--ro traffic* [direction]
  |  |  +--ro direction    identityref
  |  |  +--ro l2
  |  |  |  ...
  |  |  +--ro l3
  |  |  |  ...
  |  |  +--ro qos
  |  |     +--ro class* [id]
  |  |        ...
  |  +--ro discards* [direction]
  |     +--ro direction    identityref
  |     +--ro l2
  |     |  ...
  |     +--ro l3
  |     |  ...
  |     +--ro errors
  |     |  +--ro l2
  |     |  |  ...
  |     |  +--ro l3
  |     |  |  ...
  |     |  +--ro internal
  |     |     ...
  |     +--ro policy
  |     |  +--ro l2
  |     |  |  ...
  |     |  +--ro l3
  |     |     ...
  |     +--ro no-buffer
  |        +--ro class* [id]
  |           ...
  +--ro device! {device-stats}?
     +--ro traffic
     |  +--ro l2
     |  |  ...
     |  +--ro l3
     |  |  ...
     |  +--ro qos
     |     +--ro class* [id]
     |        ...
     +--ro discards
        +--ro l2
        |  ...
        +--ro l3
        |  ...
        +--ro errors
        |  +--ro l2
        |  |  ...
        |  +--ro l3
        |  |  ...
        |  +--ro internal
        |     ...
        +--ro policy
        |  +--ro l2
        |  |  ...
        |  +--ro l3
        |     ...
        +--ro no-buffer
           +--ro class* [id]
              ...
]]></artwork>
        </figure>
        <t>The full tree structure is provided in <xref target="sec-dm-full-tree"/>.</t>
      </section>
      <section anchor="requirements">
        <name>Implementation Requirements</name>
        <t>The following requirements apply to the implementation of the data model and are intended to ensure consistent implementation across different vendors and platforms while allowing for platform-specific optimisations where needed.  While the model defines a comprehensive set of counters and statistics, implementations <bcp14>MAY</bcp14> support a subset of the defined features based on device capabilities and operational requirements. However, implementations <bcp14>MUST</bcp14> clearly document which features are supported and how they map to the model.</t>
        <t>Requirements 1-13 relate to packets forwarded or discarded by the device, while requirement 14 relates to packets destined for or originating from the device:</t>
        <ol spacing="normal" type="1"><li>
            <t>All instances of Layer 2 frame or Layer 3 packet receipt, transmission, and discards <bcp14>MUST</bcp14> be accounted for.</t>
          </li>
          <li>
            <t>All instances of Layer 2 frame or Layer 3 packet receipt, transmission, and discards <bcp14>SHOULD</bcp14> be attributed to the physical or logical interface of the device where they occur.  Where they cannot be attributed to the interface, they <bcp14>MUST</bcp14> be attributed to the device.</t>
          </li>
          <li>
            <t>An individual frame <bcp14>MUST</bcp14> only be accounted for by either the Layer 2 traffic class or the Layer 2 discard classes within a single direction or context, i.e., ingress or egress or device.  This is to avoid double counting.</t>
          </li>
          <li>
            <t>An individual packet <bcp14>MUST</bcp14> only be accounted for by either the Layer 3 traffic class or the Layer 3 discard classes within a single direction or context, i.e., ingress or egress or device.  This is to avoid double counting.</t>
          </li>
          <li>
            <t>A frame accounted for at Layer 2 <bcp14>SHOULD NOT</bcp14> be accounted for at Layer 3 and vice versa.  An implementation <bcp14>MUST</bcp14> indicate which layers traffic and discards are counted against.  This is to avoid double counting.</t>
          </li>
          <li>
            <t>The aggregate Layer 2 and Layer 3 traffic and discard classes <bcp14>SHOULD</bcp14> account for all underlying frames or packets received, transmitted, and discarded across all other classes.</t>
          </li>
          <li>
            <t>The aggregate QoS traffic and no-buffer discard classes <bcp14>MUST</bcp14> account for all underlying packets received, transmitted, and discarded across all other classes.</t>
          </li>
          <li>
            <t>In addition to the Layer 2 and Layer 3 aggregate classes, an individual discarded packet <bcp14>MUST</bcp14> only account against a single error, policy, or no-buffer discard subclass.</t>
          </li>
          <li>
            <t>When there are multiple reasons for discarding a packet, the ordering of discard class reporting <bcp14>MUST</bcp14> be defined.</t>
          </li>
          <li>
            <t>If Diffserv <xref target="RFC2475"/> is not used, no-buffer discards <bcp14>SHOULD</bcp14> be reported as class[id="0"], which represents the default class.</t>
          </li>
          <li>
            <t>When traffic is mirrored, the discard metrics <bcp14>MUST</bcp14> account for the original traffic rather than the reflected traffic.</t>
          </li>
          <li>
            <t>NoBuffer discards can be realized differently with different memory architectures. Whether a NoBuffer discard is attributed to ingress or egress can differ accordingly.  For successful auto-mitigation, discards due to an egress interface congestion <bcp14>MUST</bcp14> be able to be reported on <tt>egress</tt>, while discards due to device-level congestion (e.g., due to exceeding the device forwarding rate) <bcp14>MUST</bcp14> be able to be <tt>ingress</tt>.</t>
          </li>
          <li>
            <t>When the ingress and egress headers differ—for example, at a tunnel endpoint—the discard class attribution <bcp14>MUST</bcp14> relate to the outer header at the point of discard.</t>
          </li>
          <li>
            <t>Traffic to the device control plane has its own class. However, traffic from the device control plane <bcp14>MUST</bcp14> be accounted for in the same way as other egress traffic.</t>
          </li>
        </ol>
      </section>
      <section anchor="examples">
        <name>Usage Examples</name>
        <t>If all of the requirements listed in <xref target="requirements"/> are met, a "good" unicast IPv4 packet received would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/ingress/traffic/l3/v4/unicast/packets</t>
          </li>
          <li>
            <t>interface/ingress/traffic/l3/v4/unicast/bytes</t>
          </li>
          <li>
            <t>interface/ingress/traffic/qos/class[id="0"]/packets</t>
          </li>
          <li>
            <t>interface/ingress/traffic/qos/class[id="0"]/bytes</t>
          </li>
        </ul>
        <t>A received unicast IPv6 packet discarded due to Hop Limit expiry would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/ingress/discards/l3/v6/unicast/packets</t>
          </li>
          <li>
            <t>interface/ingress/discards/l3/v6/unicast/bytes</t>
          </li>
          <li>
            <t>interface/ingress/discards/l3/rx/ttl-expired/packets</t>
          </li>
        </ul>
        <t>An IPv4 packet discarded on egress due to no buffers would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/egress/discards/l3/v4/unicast/packets</t>
          </li>
          <li>
            <t>interface/egress/discards/l3/v4/unicast/bytes</t>
          </li>
          <li>
            <t>interface/egress/discards/no-buffer/class[id="0"]/packets</t>
          </li>
          <li>
            <t>interface/egress/discards/no-buffer/class[id="0"]/bytes</t>
          </li>
        </ul>
        <t>A multicast IPv6 packet dropped due to RPF check failure would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/ingress/discards/l3/v6/multicast/packets</t>
          </li>
          <li>
            <t>interface/ingress/discards/l3/v6/multicast/bytes</t>
          </li>
          <li>
            <t>interface/ingress/discards/policy/l3/rpf/packets</t>
          </li>
        </ul>
        <t>A "good" Layer-2 frame received would increment:
- interface/ingress/traffic/l2/frames
- interface/ingress/traffic/l2/bytes
- interface/ingress/traffic/qos/class[id="0"]/packets
- interface/ingress/traffic/qos/class[id="0"]/bytes</t>
      </section>
      <section anchor="datamodel-module">
        <name>"ietf-packet-discard-reporting" YANG Module</name>
        <t>The "ietf-packet-discard-reporting" module imports "ietf-packet-discard-reporting-sx", "ietf-netconf-acm" <xref target="RFC8341"/>, "ietf-interfaces" <xref target="RFC8343"/>,
"ietf-routing" <xref target="RFC8349"/>, and "ietf-logical-network-element" <xref target="RFC8530"/>.</t>
        <sourcecode markers="true"><![CDATA[
module ietf-packet-discard-reporting {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting";
  prefix plr;

  import ietf-packet-discard-reporting-sx {
    prefix plr-sx;
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC 8349: A YANG Data Model for Routing Management
                 (NMDA Version)";
  }
  import ietf-logical-network-element {
    prefix lne;
    reference
      "RFC 8530: YANG Model for Logical Network Elements";
  }

  organization
    "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   https://datatracker.ietf.org/wg/opsawg/
     WG List:  mailto:opsawg@ietf.org

     Author:   John Evans
               <mailto:jevanamz@amazon.co.uk>

     Author:   Oleksandr Pylypenko
               <mailto:opyl@amazon.com>

     Author:   Jeffrey Haas
               <mailto:jhaas@juniper.net>

     Author:   Aviran Kadosh
               <mailto:akadosh@cisco.com>

     Author:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>";
  description
    "This module defines a data model for packet discard reporting.

     Copyright (c) 2025 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).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry
     (https://www.iana.org/assignments/yang-parameters).

     This version of this YANG module is part of RFC XXXX; see the
     RFC itself for full legal notices.";

  revision 2025-03-03 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }

  /*
   * Features
   */

  feature control-plane-stats {
    description
      "Indicates support of control plane statistics on this
       device.";
  }

  feature interface-stats {
    description
      "Indicates support of interface statistics on this
       device.";
  }

  feature device-stats {
    description
      "Indicates support of global device statistics on this
       device.";
  }

  /*
   * Identities
   */

  identity discard-class {
    description
      "Base identity to identify the discard calss.";
  }

  identity layer2 {
    base discard-class;
    description
      "Indicates a Layer 2 discard.";
  }

  identity layer3 {
    base discard-class;
    description
      "Indicates a Layer 3 discard.";
  }

  identity internal {
    base discard-class;
    description
      "Indicates an internal discard.";
  }

  identity policy {
    base discard-class;
    description
      "Indicates a discard due to a policy.";
  }

  /*
   * Groupings
   */

  grouping discard-order-policy {
    description
      "Defines the implementation-specific precedence of discard
       classes when multiple discard reasons apply to a single
       packet.

       The list is ordered from highest to lowest precedence.";

    leaf-list discard-order-capability {
      type identityref {
        base discard-class;
      }
      config false;
      description
        "The discard class identity that has this precedence.";
    }
  }

  /*
   * Main structure definition
   */

  augment "/rt:routing/rt:control-plane-protocols"
        + "/rt:control-plane-protocol" {
    if-feature "control-plane-stats";
    nacm:default-deny-all;
    description
      "Adds control plane discard counters.";
    uses discard-order-policy;
    uses plr-sx:control-plane;
  }
  augment "/if:interfaces-state/if:interface/if:statistics" {
    if-feature "interface-stats";
    nacm:default-deny-all;
    description
      "Adds packet discard reporting to the interface statistics.";
    uses discard-order-policy;
    uses plr-sx:interface;
  }
  augment "/lne:logical-network-elements"
        + "/lne:logical-network-element" {
    if-feature "device-stats";
    nacm:default-deny-all;
    description
      "Adds device level packet counters.";
    uses discard-order-policy;
    uses plr-sx:device;
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="experience">
      <name>Deployment Considerations Experience</name>
      <t>This section captures practical insights gained from implementing the model across multiple vendors' platforms, as guidance for future implementers and operators:</t>
      <ol spacing="normal" type="1"><li>
          <t>The number and granularity of discard classes defined in the Information Model represent a compromise. It aims to provide sufficient detail to enable appropriate automated actions while avoiding excessive detail, which may hinder quick problem identification.  Additionally, it helps to limit the quantity of data produced per interface, constraining the data volume and device CPU impacts.  While further granularity is possible, the defined schema has generally proven to be sufficient for the task of mitigating unintended packet loss.</t>
        </li>
        <li>
          <t>There are many possible ways to define the discard classification tree.  For example, an approach is to use a multi-rooted tree, rooted in each protocol. Instead, a better approach is to define a tree where protocol discards and causal discard classes are accounted for orthogonally.  This decision reduces the number of combinations of classes and has proven sufficient for determining mitigation actions.</t>
        </li>
        <li>
          <t>Platforms often account for the number of packets discarded where the TTL has expired (or IPv6 Hop Limit exceeded), and the device CPU has returned an ICMP Time Exceeded message <xref target="RFC4884"/>. There is typically a policer applied to limit the number of packets sent to the device CPU, however, which implicitly limits the rate of TTL discards that are processed.  One method to account for all packet discards due to TTL expired, even those that are dropped by a policer when being forwarded to the CPU, is to use accounting of all ingress packets received with TTL=1 as a proxy measure.</t>
        </li>
        <li>
          <t>Where no route discards are implemented with a default null route, separate discard accounting is required for any explicit null routes configured in order to differentiate between interface/ingress/discards/policy/null-route/packets and interface/ingress/discards/errors/no-route/packets.</t>
        </li>
        <li>
          <t>It is useful to account separately for transit packets discarded by ACLs or policers, and packets discarded by ACLs or policers which limit the number of packets to the device control plane.</t>
        </li>
        <li>
          <t>It is not possible to identify a configuration error (e.g., when intended discards are unintended) with device discard metrics alone. For example, additional context is needed to determine if ACL discards are intended or due to a misconfigured ACL (i.e., with configuration validation before deployment or by detecting a significant change in ACL discards after a configuration change compared to before).</t>
        </li>
        <li>
          <t>Aggregate counters need to be able to deal with the possibility of discontinuities in the underlying counters.</t>
        </li>
        <li>
          <t>While the classification tree is seven layers deep, a minimal implementation may only implement the top six layers.</t>
        </li>
      </ol>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="security-infomodel">
        <name>Information Model</name>
        <t>The Information Model defined in <xref target="infomodel-module"/> specifies a YANG module using <xref target="RFC8791"/> data extensions.  It defines a set of identities, types, and groupings. These nodes are intended to be reused by other YANG modules. The module by itself does not expose any data nodes that are writable, data nodes that contain read-only state, or RPCs. As such, there are no additional security issues related to the YANG module that need to be considered.</t>
      </section>
      <section anchor="security-datamodel">
        <name>Data Model</name>
        <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
        <t>The YANG module specified in <xref target="datamodel-module"/> defines a data model that is designed to be accessed via YANG-based management protocols, such as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These YANG-based management protocols (1) have to use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use mutual authentication.</t>
        <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t>
        <t>There are no particularly sensitive writable data nodes.</t>
        <t>Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments.  It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities:</t>
        <dl>
          <dt>Control-plane, interfaces, and devices:</dt>
          <dd>
            <t>Access to these data nodes would reveal information about the attacks to which an element is subject, misconfigurations, etc.</t>
          </dd>
          <dt/>
          <dd>
            <t>Also, an attacker who can inject packets can infer the efficiency of its attack by monitoring (the increase of) some discard counters (e.g., policy) and adjust its attack strategy accordingly.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting-sx
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   URI:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" subregistry <xref target="RFC6020"/> within the "YANG Parameters" registry:</t>
      <artwork><![CDATA[
   Name:  ietf-packet-discard-reporting-sx
   Namespace:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting-sx
   Prefix:  plr-sx
   Maintained by IANA?  N
   Reference:  RFC XXXX

   Name:  ietf-packet-discard-reporting
   Namespace:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting
   Prefix:  plr
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
Nadav Chachmon
Cisco Systems, Inc.
170 West Tasman Dr.
San Jose, CA 95134
United States of America
Email: nchachmo@cisco.com
]]></artwork>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgments</name>
      <t>The content of this document has benefitted from feedback from JR Rivers, Ronan Waide, Chris DeBruin, and Marcos Sanz.</t>
      <t>Thanks to Benoît Claise, Joe Clarke, Tom Petch, Mahesh Jethanandani, Paul Aitken, and Randy Bush for the review and comments.</t>
      <t>Thanks to Ladislav Lhotka for the YANGDOCTORS review.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8791">
          <front>
            <title>YANG Data Structure Extensions</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Björklund" initials="M." surname="Björklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document describes YANG mechanisms for defining abstract data structures with YANG.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8791"/>
          <seriesInfo name="DOI" value="10.17487/RFC8791"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8349">
          <front>
            <title>A YANG Data Model for Routing Management (NMDA Version)</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
              <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8349"/>
          <seriesInfo name="DOI" value="10.17487/RFC8349"/>
        </reference>
        <reference anchor="RFC8530">
          <front>
            <title>YANG Model for Logical Network Elements</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a logical network element (LNE) YANG module that is compliant with the Network Management Datastore Architecture (NMDA). This module can be used to manage the logical resource partitioning that may be present on a network device. Examples of common industry terms for logical resource partitioning are logical systems or logical routers. The YANG model in this document conforms with NMDA as defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8530"/>
          <seriesInfo name="DOI" value="10.17487/RFC8530"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RED93">
          <front>
            <title>Random Early Detection gateways for Congestion Avoidance</title>
            <author initials="V." surname="Jacobson">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="gMNI">
          <front>
            <title>gRPC Network Management Interface, IETF 98, March 2017, &lt;https://datatracker.ietf.org/meeting/98/materials/slides-98-rtgwg-gnmi-intro-draft-openconfig-rtgwg-gnmi-spec-00&gt;</title>
            <author initials="C." surname="Marrow">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2475">
          <front>
            <title>An Architecture for Differentiated Services</title>
            <author fullname="S. Blake" initials="S." surname="Blake"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <author fullname="M. Carlson" initials="M." surname="Carlson"/>
            <author fullname="E. Davies" initials="E." surname="Davies"/>
            <author fullname="Z. Wang" initials="Z." surname="Wang"/>
            <author fullname="W. Weiss" initials="W." surname="Weiss"/>
            <date month="December" year="1998"/>
            <abstract>
              <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2475"/>
          <seriesInfo name="DOI" value="10.17487/RFC2475"/>
        </reference>
        <reference anchor="RFC2863">
          <front>
            <title>The Interfaces Group MIB</title>
            <author fullname="K. McCloghrie" initials="K." surname="McCloghrie"/>
            <author fullname="F. Kastenholz" initials="F." surname="Kastenholz"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This memo discusses the 'interfaces' group of MIB-II, especially the experience gained from the definition of numerous media-specific MIB modules for use in conjunction with the 'interfaces' group for managing various sub-layers beneath the internetwork-layer. It specifies clarifications to, and extensions of, the architectural issues within the MIB-II model of the 'interfaces' group. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2863"/>
          <seriesInfo name="DOI" value="10.17487/RFC2863"/>
        </reference>
        <reference anchor="RFC7270">
          <front>
            <title>Cisco-Specific Information Elements Reused in IP Flow Information Export (IPFIX)</title>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <author fullname="P. Aitken" initials="P." surname="Aitken"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document describes some additional IP Flow Information Export (IPFIX) Information Elements in the range of 1-127, which is the range compatible with field types used by NetFlow version 9 in RFC 3954, as specified in the IPFIX Information Model in RFC 7012.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7270"/>
          <seriesInfo name="DOI" value="10.17487/RFC7270"/>
        </reference>
        <reference anchor="RFC7011">
          <front>
            <title>Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information</title>
            <author fullname="B. Claise" initials="B." role="editor" surname="Claise"/>
            <author fullname="B. Trammell" initials="B." role="editor" surname="Trammell"/>
            <author fullname="P. Aitken" initials="P." surname="Aitken"/>
            <date month="September" year="2013"/>
            <abstract>
              <t>This document specifies the IP Flow Information Export (IPFIX) protocol, which serves as a means for transmitting Traffic Flow information over the network. In order to transmit Traffic Flow information from an Exporting Process to a Collecting Process, a common representation of flow data and a standard means of communicating them are required. This document describes how the IPFIX Data and Template Records are carried over a number of transport protocols from an IPFIX Exporting Process to an IPFIX Collecting Process. This document obsoletes RFC 5101.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="77"/>
          <seriesInfo name="RFC" value="7011"/>
          <seriesInfo name="DOI" value="10.17487/RFC7011"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC3444">
          <front>
            <title>On the Difference between Information Models and Data Models</title>
            <author fullname="A. Pras" initials="A." surname="Pras"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <date month="January" year="2003"/>
            <abstract>
              <t>There has been ongoing confusion about the differences between Information Models and Data Models for defining managed objects in network management. This document explains the differences between these terms by analyzing how existing network management model specifications (from the IETF and other bodies such as the International Telecommunication Union (ITU) or the Distributed Management Task Force (DMTF)) fit into the universe of Information Models and Data Models. This memo documents the main results of the 8th workshop of the Network Management Research Group (NMRG) of the Internet Research Task Force (IRTF) hosted by the University of Texas at Austin. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3444"/>
          <seriesInfo name="DOI" value="10.17487/RFC3444"/>
        </reference>
        <reference anchor="RFC3411">
          <front>
            <title>An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks</title>
            <author fullname="D. Harrington" initials="D." surname="Harrington"/>
            <author fullname="R. Presuhn" initials="R." surname="Presuhn"/>
            <author fullname="B. Wijnen" initials="B." surname="Wijnen"/>
            <date month="December" year="2002"/>
            <abstract>
              <t>This document describes an architecture for describing Simple Network Management Protocol (SNMP) Management Frameworks. The architecture is designed to be modular to allow the evolution of the SNMP protocol standards over time. The major portions of the architecture are an SNMP engine containing a Message Processing Subsystem, a Security Subsystem and an Access Control Subsystem, and possibly multiple SNMP applications which provide specific functional processing of management data. This document obsoletes RFC 2571. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="62"/>
          <seriesInfo name="RFC" value="3411"/>
          <seriesInfo name="DOI" value="10.17487/RFC3411"/>
        </reference>
        <reference anchor="RFC8289">
          <front>
            <title>Controlled Delay Active Queue Management</title>
            <author fullname="K. Nichols" initials="K." surname="Nichols"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <author fullname="A. McGregor" initials="A." role="editor" surname="McGregor"/>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>This document describes CoDel (Controlled Delay) -- a general framework that controls bufferbloat-generated excess delay in modern networking environments. CoDel consists of an estimator, a setpoint, and a control loop. It requires no configuration in normal Internet deployments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8289"/>
          <seriesInfo name="DOI" value="10.17487/RFC8289"/>
        </reference>
        <reference anchor="RFC1157">
          <front>
            <title>Simple Network Management Protocol (SNMP)</title>
            <author fullname="J.D. Case" initials="J.D." surname="Case"/>
            <author fullname="M. Fedor" initials="M." surname="Fedor"/>
            <author fullname="M.L. Schoffstall" initials="M.L." surname="Schoffstall"/>
            <author fullname="J. Davin" initials="J." surname="Davin"/>
            <date month="May" year="1990"/>
            <abstract>
              <t>This RFC is a re-release of RFC 1098, with a changed "Status of this Memo" section plus a few minor typographical corrections. This memo defines a simple protocol by which management information for a network element may be inspected or altered by logically remote users. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1157"/>
          <seriesInfo name="DOI" value="10.17487/RFC1157"/>
        </reference>
        <reference anchor="RFC4884">
          <front>
            <title>Extended ICMP to Support Multi-Part Messages</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="D. Gan" initials="D." surname="Gan"/>
            <author fullname="D. Tappan" initials="D." surname="Tappan"/>
            <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
            <date month="April" year="2007"/>
            <abstract>
              <t>This document redefines selected ICMP messages to support multi-part operation. A multi-part ICMP message carries all of the information that ICMP messages carried previously, as well as additional information that applications may require.</t>
              <t>Multi-part messages are supported by an ICMP extension structure. The extension structure is situated at the end of the ICMP message. It includes an extension header followed by one or more extension objects. Each extension object contains an object header and object payload. All object headers share a common format.</t>
              <t>This document further redefines the above mentioned ICMP messages by specifying a length attribute. All of the currently defined ICMP messages to which an extension structure can be appended include an "original datagram" field. The "original datagram" field contains the initial octets of the datagram that elicited the ICMP error message. Although the original datagram field is of variable length, the ICMP message does not include a field that specifies its length. Therefore, in order to facilitate message parsing, this document allocates eight previously reserved bits to reflect the length of the "original datagram" field.</t>
              <t>The proposed modifications change the requirements for ICMP compliance. The impact of these changes on compliant implementations is discussed, and new requirements for future implementations are presented.</t>
              <t>This memo updates RFC 792 and RFC 4443. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4884"/>
          <seriesInfo name="DOI" value="10.17487/RFC4884"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="5" month="June" year="2025"/>
            <abstract>
              <t>   This document provides guidelines for authors and reviewers of
   specifications containing YANG data models, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF Protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

   Also, this document updates RFC 8126 by providing additional
   guidelines for writing the IANA considerations for RFCs that specify
   IANA-maintained modules.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-28"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 1453?>

<section anchor="wheredropped">
      <name>Where Do Packets Get Dropped?</name>
      <t>Understanding where packets are discarded in a network device is essential for interpreting discard signals and determining appropriate mitigation actions.  <xref target="ex-drop"/> depicts an example of where and why packets may be discarded in a typical single-ASIC, shared-buffered type device. While actual device architectures vary between vendors and platforms, with some using multiple ASICs, distributed forwarding, or different buffering architectures, this example illustrates the common processing stages where packets may be dropped. The logical model for classifying and reporting discards remains consistent regardless of the underlying hardware architecture.</t>
      <t>Packets ingress on the left and egress on the right:</t>
      <figure anchor="ex-drop">
        <name>Example of where packets get dropped</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="600" viewBox="0 0 600 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 40,176 L 40,192" fill="none" stroke="black"/>
              <path d="M 40,224 L 40,240" fill="none" stroke="black"/>
              <path d="M 80,144 L 80,176" fill="none" stroke="black"/>
              <path d="M 120,176 L 120,240" fill="none" stroke="black"/>
              <path d="M 144,176 L 144,192" fill="none" stroke="black"/>
              <path d="M 144,224 L 144,240" fill="none" stroke="black"/>
              <path d="M 232,176 L 232,240" fill="none" stroke="black"/>
              <path d="M 248,32 L 248,96" fill="none" stroke="black"/>
              <path d="M 256,176 L 256,192" fill="none" stroke="black"/>
              <path d="M 256,224 L 256,240" fill="none" stroke="black"/>
              <path d="M 280,96 L 280,144" fill="none" stroke="black"/>
              <path d="M 312,96 L 312,144" fill="none" stroke="black"/>
              <path d="M 336,176 L 336,240" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,96" fill="none" stroke="black"/>
              <path d="M 360,176 L 360,192" fill="none" stroke="black"/>
              <path d="M 360,224 L 360,240" fill="none" stroke="black"/>
              <path d="M 448,176 L 448,240" fill="none" stroke="black"/>
              <path d="M 472,176 L 472,192" fill="none" stroke="black"/>
              <path d="M 472,224 L 472,240" fill="none" stroke="black"/>
              <path d="M 512,144 L 512,176" fill="none" stroke="black"/>
              <path d="M 552,176 L 552,240" fill="none" stroke="black"/>
              <path d="M 248,32 L 344,32" fill="none" stroke="black"/>
              <path d="M 248,96 L 304,96" fill="none" stroke="black"/>
              <path d="M 320,96 L 344,96" fill="none" stroke="black"/>
              <path d="M 80,144 L 272,144" fill="none" stroke="black"/>
              <path d="M 288,144 L 512,144" fill="none" stroke="black"/>
              <path d="M 40,176 L 120,176" fill="none" stroke="black"/>
              <path d="M 144,176 L 232,176" fill="none" stroke="black"/>
              <path d="M 256,176 L 336,176" fill="none" stroke="black"/>
              <path d="M 360,176 L 448,176" fill="none" stroke="black"/>
              <path d="M 472,176 L 552,176" fill="none" stroke="black"/>
              <path d="M 24,208 L 40,208" fill="none" stroke="black"/>
              <path d="M 120,208 L 144,208" fill="none" stroke="black"/>
              <path d="M 232,208 L 256,208" fill="none" stroke="black"/>
              <path d="M 336,208 L 360,208" fill="none" stroke="black"/>
              <path d="M 448,208 L 472,208" fill="none" stroke="black"/>
              <path d="M 552,208 L 568,208" fill="none" stroke="black"/>
              <path d="M 40,240 L 120,240" fill="none" stroke="black"/>
              <path d="M 144,240 L 232,240" fill="none" stroke="black"/>
              <path d="M 256,240 L 336,240" fill="none" stroke="black"/>
              <path d="M 360,240 L 448,240" fill="none" stroke="black"/>
              <path d="M 472,240 L 552,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="576,208 564,202.4 564,213.6" fill="black" transform="rotate(0,568,208)"/>
              <polygon class="arrowhead" points="480,208 468,202.4 468,213.6" fill="black" transform="rotate(0,472,208)"/>
              <polygon class="arrowhead" points="368,208 356,202.4 356,213.6" fill="black" transform="rotate(0,360,208)"/>
              <polygon class="arrowhead" points="320,96 308,90.4 308,101.6" fill="black" transform="rotate(270,312,96)"/>
              <polygon class="arrowhead" points="288,144 276,138.4 276,149.6" fill="black" transform="rotate(90,280,144)"/>
              <polygon class="arrowhead" points="264,208 252,202.4 252,213.6" fill="black" transform="rotate(0,256,208)"/>
              <polygon class="arrowhead" points="152,208 140,202.4 140,213.6" fill="black" transform="rotate(0,144,208)"/>
              <polygon class="arrowhead" points="48,208 36,202.4 36,213.6" fill="black" transform="rotate(0,40,208)"/>
              <g class="text">
                <text x="296" y="68">Control</text>
                <text x="288" y="84">Plane</text>
                <text x="236" y="116">from_cpu</text>
                <text x="348" y="116">to_cpu</text>
                <text x="12" y="212">Rx</text>
                <text x="80" y="212">PHY/MAC</text>
                <text x="184" y="212">Ingress</text>
                <text x="296" y="212">Buffers</text>
                <text x="396" y="212">Egress</text>
                <text x="512" y="212">PHY/MAC</text>
                <text x="588" y="212">Tx</text>
                <text x="188" y="228">Pipeline</text>
                <text x="404" y="228">Pipeline</text>
                <text x="48" y="276">Unintended:</text>
                <text x="80" y="292">error/rx/l2</text>
                <text x="184" y="292">error/l3/rx</text>
                <text x="288" y="292">no-buffer</text>
                <text x="400" y="292">error/l3/tx</text>
                <text x="208" y="308">error/l3/no-route</text>
                <text x="232" y="324">error/l3/rx/ttl-expired</text>
                <text x="196" y="340">error/internal</text>
                <text x="40" y="356">Intended:</text>
                <text x="180" y="372">policy/acl</text>
                <text x="396" y="372">policy/acl</text>
                <text x="196" y="388">policy/policer</text>
                <text x="412" y="388">policy/policer</text>
                <text x="184" y="404">policy/urpf</text>
                <text x="208" y="420">policy/null-route</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                              +-----------+
                              |           |
                              |  Control  |
                              |  Plane    |
                              +---+---^---+
                         from_cpu |   | to_cpu
                                  |   |
         +------------------------v---+------------------------+
         |                                                     |
    +----+----+  +----------+  +---------+  +----------+  +----+----+
    |         |  |          |  |         |  |          |  |         |
Rx--> PHY/MAC +--> Ingress  +--> Buffers +--> Egress   +--> PHY/MAC +-> Tx
    |         |  | Pipeline |  |         |  | Pipeline |  |         |
    +---------+  +----------+  +---------+  +----------+  +---------+

Unintended:
    error/rx/l2  error/l3/rx   no-buffer    error/l3/tx
                 error/l3/no-route
                 error/l3/rx/ttl-expired
                 error/internal
Intended:
                 policy/acl                 policy/acl
                 policy/policer             policy/policer
                 policy/urpf
                 policy/null-route

]]></artwork>
        </artset>
      </figure>
      <t>See Appendix B for examples of how these discard signals map to root causes and mitigation actions.</t>
    </section>
    <section anchor="mapping">
      <name>Example Signal-to-mitigation Action Mapping</name>
      <t>The effectiveness of automated mitigation depends on correctly mapping discard signals to root causes and appropriate actions.  <xref target="ex-table"/> gives example discard signal-to-mitigation action mappings based on the features described in section 3.</t>
      <table anchor="ex-table">
        <name>Example Signal-Cause-Mitigation Mapping</name>
        <thead>
          <tr>
            <th align="left">DISCARD-CLASS</th>
            <th align="left">Discard cause</th>
            <th align="left">DISCARD-RATE</th>
            <th align="center">DISCARD-DURATION</th>
            <th align="center">Unintended?</th>
            <th align="left">Possible actions</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ingress/discards/errors/l2/rx</td>
            <td align="left">Upstream device or link error</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1min)</td>
            <td align="center">Y</td>
            <td align="left">Take upstream link or device out-of-service</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/rx/ttl-expired</td>
            <td align="left">Tracert</td>
            <td align="left">&lt;=Baseline</td>
            <td align="center"> </td>
            <td align="center">N</td>
            <td align="left">no action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/rx/ttl-expired</td>
            <td align="left">Convergence</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1s)</td>
            <td align="center">Y</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/rx/ttl-expired</td>
            <td align="left">Routing loop</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1min)</td>
            <td align="center">Y</td>
            <td align="left">Roll-back change</td>
          </tr>
          <tr>
            <td align="left">.*/policy/.*</td>
            <td align="left">Policy</td>
            <td align="left"> </td>
            <td align="center"> </td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/no-route</td>
            <td align="left">Convergence</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1s)</td>
            <td align="center">Y</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/no-route</td>
            <td align="left">Config error</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1min)</td>
            <td align="center">Y</td>
            <td align="left">Roll-back change</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/no-route</td>
            <td align="left">Invalid destination</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(10min)</td>
            <td align="center">N</td>
            <td align="left">Escalate to operator</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/internal</td>
            <td align="left">Device errors</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1min)</td>
            <td align="center">Y</td>
            <td align="left">Take device out-of-service</td>
          </tr>
          <tr>
            <td align="left">egress/discards/no-buffer</td>
            <td align="left">Congestion</td>
            <td align="left">&lt;=Baseline</td>
            <td align="center"> </td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">egress/discards/no-buffer</td>
            <td align="left">Congestion</td>
            <td align="left">&gt;Baseline</td>
            <td align="center">O(1min)</td>
            <td align="center">Y</td>
            <td align="left">Bring capacity back into service or move traffic</td>
          </tr>
        </tbody>
      </table>
      <t>The 'Baseline' in the 'DISCARD-RATE' column is both DISCARD-CLASS and network dependent.</t>
    </section>
    <section anchor="sec-im-full-tree">
      <name>Full Information Model Tree</name>
      <t>The following YANG tree diagram shows the complete IM structure:</t>
      <artwork><![CDATA[
module: ietf-packet-discard-reporting-sx

  structure packet-discard-reporting:
    +-- control-plane {control-plane-stats}?
    |  +-- traffic* [direction]
    |  |  +-- direction    identityref
    |  |  +-- packets?     yang:counter64
    |  |  +-- bytes?       yang:counter64
    |  +-- discards* [direction]
    |     +-- direction    identityref
    |     +-- packets?     yang:counter64
    |     +-- bytes?       yang:counter64
    |     +-- policy
    |        +-- packets?   yang:counter64
    +-- interface* [name] {interface-stats}?
    |  +-- name        string
    |  +-- traffic* [direction]
    |  |  +-- direction    identityref
    |  |  +-- l2
    |  |  |  +-- frames?   yang:counter64
    |  |  |  +-- bytes?    yang:counter64
    |  |  +-- l3
    |  |  |  +-- address-family-stat* [address-family]
    |  |  |     +-- address-family    identityref
    |  |  |     +-- packets?          yang:counter64
    |  |  |     +-- bytes?            yang:counter64
    |  |  |     +-- unicast
    |  |  |     |  +-- packets?   yang:counter64
    |  |  |     |  +-- bytes?     yang:counter64
    |  |  |     +-- multicast
    |  |  |        +-- packets?   yang:counter64
    |  |  |        +-- bytes?     yang:counter64
    |  |  +-- qos!
    |  |     +-- class* [id]
    |  |        +-- id         string
    |  |        +-- packets?   yang:counter64
    |  |        +-- bytes?     yang:counter64
    |  +-- discards* [direction]
    |     +-- direction    identityref
    |     +-- l2
    |     |  +-- frames?   yang:counter64
    |     |  +-- bytes?    yang:counter64
    |     +-- l3
    |     |  +-- address-family-stat* [address-family]
    |     |     +-- address-family    identityref
    |     |     +-- packets?          yang:counter64
    |     |     +-- bytes?            yang:counter64
    |     |     +-- unicast
    |     |     |  +-- packets?   yang:counter64
    |     |     |  +-- bytes?     yang:counter64
    |     |     +-- multicast
    |     |        +-- packets?   yang:counter64
    |     |        +-- bytes?     yang:counter64
    |     +-- errors
    |     |  +-- l2
    |     |  |  +-- rx
    |     |  |  |  +-- frames?          yang:counter64
    |     |  |  |  +-- crc-error?       yang:counter64
    |     |  |  |  +-- invalid-mac?     yang:counter64
    |     |  |  |  +-- invalid-vlan?    yang:counter64
    |     |  |  |  +-- invalid-frame?   yang:counter64
    |     |  |  +-- tx
    |     |  |     +-- frames?   yang:counter64
    |     |  +-- l3
    |     |  |  +-- rx
    |     |  |  |  +-- packets?          yang:counter64
    |     |  |  |  +-- checksum-error?   yang:counter64
    |     |  |  |  +-- mtu-exceeded?     yang:counter64
    |     |  |  |  +-- invalid-packet?   yang:counter64
    |     |  |  +-- ttl-expired?     yang:counter64
    |     |  |  +-- no-route?        yang:counter64
    |     |  |  +-- invalid-sid?     yang:counter64
    |     |  |  +-- invalid-label?   yang:counter64
    |     |  |  +-- tx
    |     |  |     +-- packets?   yang:counter64
    |     |  +-- internal
    |     |     +-- packets?        yang:counter64
    |     |     +-- parity-error?   yang:counter64
    |     +-- policy
    |     |  +-- l2
    |     |  |  +-- frames?   yang:counter64
    |     |  |  +-- acl?      yang:counter64
    |     |  +-- l3
    |     |     +-- packets?      yang:counter64
    |     |     +-- acl?          yang:counter64
    |     |     +-- policer
    |     |     |  +-- packets?   yang:counter64
    |     |     |  +-- bytes?     yang:counter64
    |     |     |  +-- classes!
    |     |     |     +-- class* [id]
    |     |     |        +-- id         string
    |     |     |        +-- packets?   yang:counter64
    |     |     |        +-- bytes?     yang:counter64
    |     |     +-- null-route?   yang:counter64
    |     |     +-- rpf?          yang:counter64
    |     |     +-- ddos?         yang:counter64
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              +-- id         string
    |              +-- packets?   yang:counter64
    |              +-- bytes?     yang:counter64
    +-- flow* [direction] {flow-reporting}?
    |  +-- direction    identityref
    |  +-- traffic
    |  |  +-- l2
    |  |  |  +-- frames?   yang:counter64
    |  |  |  +-- bytes?    yang:counter64
    |  |  +-- l3
    |  |  |  +-- address-family-stat* [address-family]
    |  |  |     +-- address-family    identityref
    |  |  |     +-- packets?          yang:counter64
    |  |  |     +-- bytes?            yang:counter64
    |  |  |     +-- unicast
    |  |  |     |  +-- packets?   yang:counter64
    |  |  |     |  +-- bytes?     yang:counter64
    |  |  |     +-- multicast
    |  |  |        +-- packets?   yang:counter64
    |  |  |        +-- bytes?     yang:counter64
    |  |  +-- qos!
    |  |     +-- class* [id]
    |  |        +-- id         string
    |  |        +-- packets?   yang:counter64
    |  |        +-- bytes?     yang:counter64
    |  +-- discards
    |     +-- l2
    |     |  +-- frames?   yang:counter64
    |     |  +-- bytes?    yang:counter64
    |     +-- l3
    |     |  +-- address-family-stat* [address-family]
    |     |     +-- address-family    identityref
    |     |     +-- packets?          yang:counter64
    |     |     +-- bytes?            yang:counter64
    |     |     +-- unicast
    |     |     |  +-- packets?   yang:counter64
    |     |     |  +-- bytes?     yang:counter64
    |     |     +-- multicast
    |     |        +-- packets?   yang:counter64
    |     |        +-- bytes?     yang:counter64
    |     +-- errors
    |     |  +-- l2
    |     |  |  +-- rx
    |     |  |  |  +-- frames?          yang:counter64
    |     |  |  |  +-- crc-error?       yang:counter64
    |     |  |  |  +-- invalid-mac?     yang:counter64
    |     |  |  |  +-- invalid-vlan?    yang:counter64
    |     |  |  |  +-- invalid-frame?   yang:counter64
    |     |  |  +-- tx
    |     |  |     +-- frames?   yang:counter64
    |     |  +-- l3
    |     |  |  +-- rx
    |     |  |  |  +-- packets?          yang:counter64
    |     |  |  |  +-- checksum-error?   yang:counter64
    |     |  |  |  +-- mtu-exceeded?     yang:counter64
    |     |  |  |  +-- invalid-packet?   yang:counter64
    |     |  |  +-- ttl-expired?     yang:counter64
    |     |  |  +-- no-route?        yang:counter64
    |     |  |  +-- invalid-sid?     yang:counter64
    |     |  |  +-- invalid-label?   yang:counter64
    |     |  |  +-- tx
    |     |  |     +-- packets?   yang:counter64
    |     |  +-- internal
    |     |     +-- packets?        yang:counter64
    |     |     +-- parity-error?   yang:counter64
    |     +-- policy
    |     |  +-- l2
    |     |  |  +-- frames?   yang:counter64
    |     |  |  +-- acl?      yang:counter64
    |     |  +-- l3
    |     |     +-- packets?      yang:counter64
    |     |     +-- acl?          yang:counter64
    |     |     +-- policer
    |     |     |  +-- packets?   yang:counter64
    |     |     |  +-- bytes?     yang:counter64
    |     |     |  +-- classes!
    |     |     |     +-- class* [id]
    |     |     |        +-- id         string
    |     |     |        +-- packets?   yang:counter64
    |     |     |        +-- bytes?     yang:counter64
    |     |     +-- null-route?   yang:counter64
    |     |     +-- rpf?          yang:counter64
    |     |     +-- ddos?         yang:counter64
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              +-- id         string
    |              +-- packets?   yang:counter64
    |              +-- bytes?     yang:counter64
    +-- device {device-stats}?
       +-- traffic
       |  +-- l2
       |  |  +-- frames?   yang:counter64
       |  |  +-- bytes?    yang:counter64
       |  +-- l3
       |  |  +-- address-family-stat* [address-family]
       |  |     +-- address-family    identityref
       |  |     +-- packets?          yang:counter64
       |  |     +-- bytes?            yang:counter64
       |  |     +-- unicast
       |  |     |  +-- packets?   yang:counter64
       |  |     |  +-- bytes?     yang:counter64
       |  |     +-- multicast
       |  |        +-- packets?   yang:counter64
       |  |        +-- bytes?     yang:counter64
       |  +-- qos!
       |     +-- class* [id]
       |        +-- id         string
       |        +-- packets?   yang:counter64
       |        +-- bytes?     yang:counter64
       +-- discards
          +-- l2
          |  +-- frames?   yang:counter64
          |  +-- bytes?    yang:counter64
          +-- l3
          |  +-- address-family-stat* [address-family]
          |     +-- address-family    identityref
          |     +-- packets?          yang:counter64
          |     +-- bytes?            yang:counter64
          |     +-- unicast
          |     |  +-- packets?   yang:counter64
          |     |  +-- bytes?     yang:counter64
          |     +-- multicast
          |        +-- packets?   yang:counter64
          |        +-- bytes?     yang:counter64
          +-- errors
          |  +-- l2
          |  |  +-- rx
          |  |  |  +-- frames?          yang:counter64
          |  |  |  +-- crc-error?       yang:counter64
          |  |  |  +-- invalid-mac?     yang:counter64
          |  |  |  +-- invalid-vlan?    yang:counter64
          |  |  |  +-- invalid-frame?   yang:counter64
          |  |  +-- tx
          |  |     +-- frames?   yang:counter64
          |  +-- l3
          |  |  +-- rx
          |  |  |  +-- packets?          yang:counter64
          |  |  |  +-- checksum-error?   yang:counter64
          |  |  |  +-- mtu-exceeded?     yang:counter64
          |  |  |  +-- invalid-packet?   yang:counter64
          |  |  +-- ttl-expired?     yang:counter64
          |  |  +-- no-route?        yang:counter64
          |  |  +-- invalid-sid?     yang:counter64
          |  |  +-- invalid-label?   yang:counter64
          |  |  +-- tx
          |  |     +-- packets?   yang:counter64
          |  +-- internal
          |     +-- packets?        yang:counter64
          |     +-- parity-error?   yang:counter64
          +-- policy
          |  +-- l2
          |  |  +-- frames?   yang:counter64
          |  |  +-- acl?      yang:counter64
          |  +-- l3
          |     +-- packets?      yang:counter64
          |     +-- acl?          yang:counter64
          |     +-- policer
          |     |  +-- packets?   yang:counter64
          |     |  +-- bytes?     yang:counter64
          |     |  +-- classes!
          |     |     +-- class* [id]
          |     |        +-- id         string
          |     |        +-- packets?   yang:counter64
          |     |        +-- bytes?     yang:counter64
          |     +-- null-route?   yang:counter64
          |     +-- rpf?          yang:counter64
          |     +-- ddos?         yang:counter64
          +-- no-buffer
             +-- qos!
                +-- class* [id]
                   +-- id         string
                   +-- packets?   yang:counter64
                   +-- bytes?     yang:counter64
]]></artwork>
    </section>
    <section anchor="sec-dm-full-tree">
      <name>Full Data Model Tree</name>
      <t>The following YANG tree diagram shows the complete data module structure:</t>
      <artwork><![CDATA[
module: ietf-packet-discard-reporting

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--ro discard-order-capability*   identityref
    |       {control-plane-stats}?
    +--rw traffic* [direction] {control-plane-stats}?
    |  +--rw direction    identityref
    |  +--rw packets?     yang:counter64
    |  +--rw bytes?       yang:counter64
    +--rw discards* [direction] {control-plane-stats}?
       +--rw direction    identityref
       +--rw packets?     yang:counter64
       +--rw bytes?       yang:counter64
       +--rw policy
          +--rw packets?   yang:counter64
  augment /if:interfaces-state/if:interface/if:statistics:
    +--ro discard-order-capability*   identityref {interface-stats}?
    +--ro traffic* [direction] {interface-stats}?
    |  +--ro direction    identityref
    |  +--ro l2
    |  |  +--ro frames?   yang:counter64
    |  |  +--ro bytes?    yang:counter64
    |  +--ro l3
    |  |  +--ro address-family-stat* [address-family]
    |  |     +--ro address-family    identityref
    |  |     +--ro packets?          yang:counter64
    |  |     +--ro bytes?            yang:counter64
    |  |     +--ro unicast
    |  |     |  +--ro packets?   yang:counter64
    |  |     |  +--ro bytes?     yang:counter64
    |  |     +--ro multicast
    |  |        +--ro packets?   yang:counter64
    |  |        +--ro bytes?     yang:counter64
    |  +--ro qos!
    |     +--ro class* [id]
    |        +--ro id         string
    |        +--ro packets?   yang:counter64
    |        +--ro bytes?     yang:counter64
    +--ro discards* [direction] {interface-stats}?
       +--ro direction    identityref
       +--ro l2
       |  +--ro frames?   yang:counter64
       |  +--ro bytes?    yang:counter64
       +--ro l3
       |  +--ro address-family-stat* [address-family]
       |     +--ro address-family    identityref
       |     +--ro packets?          yang:counter64
       |     +--ro bytes?            yang:counter64
       |     +--ro unicast
       |     |  +--ro packets?   yang:counter64
       |     |  +--ro bytes?     yang:counter64
       |     +--ro multicast
       |        +--ro packets?   yang:counter64
       |        +--ro bytes?     yang:counter64
       +--ro errors
       |  +--ro l2
       |  |  +--ro rx
       |  |  |  +--ro frames?          yang:counter64
       |  |  |  +--ro crc-error?       yang:counter64
       |  |  |  +--ro invalid-mac?     yang:counter64
       |  |  |  +--ro invalid-vlan?    yang:counter64
       |  |  |  +--ro invalid-frame?   yang:counter64
       |  |  +--ro tx
       |  |     +--ro frames?   yang:counter64
       |  +--ro l3
       |  |  +--ro rx
       |  |  |  +--ro packets?          yang:counter64
       |  |  |  +--ro checksum-error?   yang:counter64
       |  |  |  +--ro mtu-exceeded?     yang:counter64
       |  |  |  +--ro invalid-packet?   yang:counter64
       |  |  +--ro ttl-expired?     yang:counter64
       |  |  +--ro no-route?        yang:counter64
       |  |  +--ro invalid-sid?     yang:counter64
       |  |  +--ro invalid-label?   yang:counter64
       |  |  +--ro tx
       |  |     +--ro packets?   yang:counter64
       |  +--ro internal
       |     +--ro packets?        yang:counter64
       |     +--ro parity-error?   yang:counter64
       +--ro policy
       |  +--ro l2
       |  |  +--ro frames?   yang:counter64
       |  |  +--ro acl?      yang:counter64
       |  +--ro l3
       |     +--ro packets?      yang:counter64
       |     +--ro acl?          yang:counter64
       |     +--ro policer
       |     |  +--ro packets?   yang:counter64
       |     |  +--ro bytes?     yang:counter64
       |     |  +--ro classes!
       |     |     +--ro class* [id]
       |     |        +--ro id         string
       |     |        +--ro packets?   yang:counter64
       |     |        +--ro bytes?     yang:counter64
       |     +--ro null-route?   yang:counter64
       |     +--ro rpf?          yang:counter64
       |     +--ro ddos?         yang:counter64
       +--ro no-buffer
          +--ro qos!
             +--ro class* [id]
                +--ro id         string
                +--ro packets?   yang:counter64
                +--ro bytes?     yang:counter64
  augment /lne:logical-network-elements/lne:logical-network-element:
    +--ro discard-order-capability*   identityref {device-stats}?
    +--rw traffic {device-stats}?
    |  +--rw l2
    |  |  +--rw frames?   yang:counter64
    |  |  +--rw bytes?    yang:counter64
    |  +--rw l3
    |  |  +--rw address-family-stat* [address-family]
    |  |     +--rw address-family    identityref
    |  |     +--rw packets?          yang:counter64
    |  |     +--rw bytes?            yang:counter64
    |  |     +--rw unicast
    |  |     |  +--rw packets?   yang:counter64
    |  |     |  +--rw bytes?     yang:counter64
    |  |     +--rw multicast
    |  |        +--rw packets?   yang:counter64
    |  |        +--rw bytes?     yang:counter64
    |  +--rw qos!
    |     +--rw class* [id]
    |        +--rw id         string
    |        +--rw packets?   yang:counter64
    |        +--rw bytes?     yang:counter64
    +--rw discards {device-stats}?
       +--rw l2
       |  +--rw frames?   yang:counter64
       |  +--rw bytes?    yang:counter64
       +--rw l3
       |  +--rw address-family-stat* [address-family]
       |     +--rw address-family    identityref
       |     +--rw packets?          yang:counter64
       |     +--rw bytes?            yang:counter64
       |     +--rw unicast
       |     |  +--rw packets?   yang:counter64
       |     |  +--rw bytes?     yang:counter64
       |     +--rw multicast
       |        +--rw packets?   yang:counter64
       |        +--rw bytes?     yang:counter64
       +--rw errors
       |  +--rw l2
       |  |  +--rw rx
       |  |  |  +--rw frames?          yang:counter64
       |  |  |  +--rw crc-error?       yang:counter64
       |  |  |  +--rw invalid-mac?     yang:counter64
       |  |  |  +--rw invalid-vlan?    yang:counter64
       |  |  |  +--rw invalid-frame?   yang:counter64
       |  |  +--rw tx
       |  |     +--rw frames?   yang:counter64
       |  +--rw l3
       |  |  +--rw rx
       |  |  |  +--rw packets?          yang:counter64
       |  |  |  +--rw checksum-error?   yang:counter64
       |  |  |  +--rw mtu-exceeded?     yang:counter64
       |  |  |  +--rw invalid-packet?   yang:counter64
       |  |  +--rw ttl-expired?     yang:counter64
       |  |  +--rw no-route?        yang:counter64
       |  |  +--rw invalid-sid?     yang:counter64
       |  |  +--rw invalid-label?   yang:counter64
       |  |  +--rw tx
       |  |     +--rw packets?   yang:counter64
       |  +--rw internal
       |     +--rw packets?        yang:counter64
       |     +--rw parity-error?   yang:counter64
       +--rw policy
       |  +--rw l2
       |  |  +--rw frames?   yang:counter64
       |  |  +--rw acl?      yang:counter64
       |  +--rw l3
       |     +--rw packets?      yang:counter64
       |     +--rw acl?          yang:counter64
       |     +--rw policer
       |     |  +--rw packets?   yang:counter64
       |     |  +--rw bytes?     yang:counter64
       |     |  +--rw classes!
       |     |     +--rw class* [id]
       |     |        +--rw id         string
       |     |        +--rw packets?   yang:counter64
       |     |        +--rw bytes?     yang:counter64
       |     +--rw null-route?   yang:counter64
       |     +--rw rpf?          yang:counter64
       |     +--rw ddos?         yang:counter64
       +--rw no-buffer
          +--rw qos!
             +--rw class* [id]
                +--rw id         string
                +--rw packets?   yang:counter64
                +--rw bytes?     yang:counter64
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
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
lFa2/QQrKMtdvref8Un/ism8L1/V2sWX1TKdpvJC+t7UWwThhlAA03Gf/uw2
E2Utq6dXQQr1tFpBFW0byQIXhXfF/dLQWXHbtBhdl40ovG1FpyUN2oyP3/0S
p7+xHsnW+Tqn+d5BNJfT+NZAbwHxR2YzZgOZ7ps2UNn61vIds4FM0602kNNb
qw3ktGi7gZxGbTeQ0yi3gfKTbqSFagS3Gb2wgcS2tJhv0GZ8/M6qjezAnycv
+Ti5Lzwu0F4LpJtm42TMt1Y3ykGnmbp5fOGNm5FcbHYHKko99Zc2ozk2rYES
lUVMiW13aX77NS7CdvvFWgWsN5SuFmYp2rVbZKueSht/yDowvG0xaqzWVmOR
OiONMo2RFm0UcGnQfhzVhu6i/9UU0nK3a/1O1R1vYp8tOJF9kXzt+KVqaT3z
aEf4SsyMw++boS7bJaWTbzF1M2JbXFlu2c8rM9S25TMmvyl7LypVodx/RYNO
VP75VpMzzbYTi8Z13WIc4ozL6XZLiJfMft/cQLISq66+MytbCxX2i3LsO5/U
4d35sA3GnQb1uKYNGcZrRxUV79w7mVzbsEkztSzEL9ZeLbim0Rdr77+/tffF
cqsFd/vN4DT6Yrnl1KEvllux2RfLLdfui+WWa/PFcvtiuX0GmaG27RfLzW3w
xXJrjWuavbwitux+v6IhJvL7W7Te3M6XtbqnNchRsWl73VM3E211z3yLVrI0
36iV7plvZOue9rtWfKSkQf3C50d3dU/7bRERDd0VkVC7wnrbiDqOJXK9l2+Y
/FdtgN4C4oIhZh5bVy623gxla1X5pbsZxMM2g9h6M4iHbAbxkM0gajaD2HYz
5Bs0Lq2o3QxiW7rKN2gzfs4Q072Ukdd7xwawHxdorwXSTbM2hlhJszaGWE2z
OkOsplmdIZbHVFbElNh2l+a3X+MibLdfrFVoY4iVtGtliNUgtNYQK2C0hSGW
b9PGEMu3aWOIVbWpM8TaU0jL3V4wxPSbYj+NE9FNGg0xYT52rwNuYh7tCF+J
mTpDzB3tqMXkW0y90RArjFA42fC5ZIbatrYhlnsvKtWa3FeiQb8p/3yryZlm
24nFRkMs36DREMs3aDTEDOilV1MXNUrnRfWd1fqTOrw7H7bBuNOgGtdu2VDK
77Wq2liJvZNfndirysxQeZpfkeFrVwpuVyjYQUv1dzoj2FzhXijA/FtRFTMQ
dZnD2Om6NO20Od8YGraIWMJXLTJ2+cOmhF01aEmSXx24ohW4oi24oi24pse8
ECoMVGitCWm7osoPIJWqhGXupJw06lKcaeRmsojdoDU/ahGz5g+bonRyhKNC
w20D1qK8YcXE7AZbhKtFcVrt2xSD1TYKWoZdSxDbYuiySLWw3m8V820zOH+W
cyryw0qHIr9ucCa2hLc9sM4WzLOq8u0jWm0fkds+ou32KV/larYVu37GbbeP
2Hb7iAdsH/GA7SOqt4/YcvsUv2/j4BPl20dsSY7F79v46uAz15+SZ8fC5ZfG
kH/vvmjpTMm1aulLybVq6UqpaNXgSalo1eBIsZtkORyJrfdjiUe/DvfbOeAN
8lu6UHLN2npQKhDZ5EBxMNnOf2I3aek+KYOswXtS1qTBedKKKtpsazWq6zmp
44/N7Kad30R+62isDTyidYAL5UCDz6R8S1TMunnObRwmTv+uv+TzSAOzQXPO
Ets7Ua7l5D7S3zWEgh4maLYVNzbgbfwk9vdt3CT29228JJphFJwkOb0y97zO
RdKA7tx37R0kzSjWFmLdTTN1Lx9kK5YExB0fQukX2sAvmHzrtibfupXJty6a
fOuHmnz5hkI0mHzrB5h86weYfOtak6/erVD2/RYm37rB5Gs9eNn065a1xORb
15t86zYmXwt42wPreqdqckfMRhBtN0L5etX5nArG2zYbQWy7EcQDNoJ4wEYQ
1RtBbLkRit9vIdDyG6FIK9sZby0G589Kjbd1qWK2rjIg1g8y3tYPMt7WDzLe
1g8y3tbbG2/rKjV9i/1YZrzV4P5Bxtv6Ycbb+mHG2/oBxtt6e+Ntvb3xtt7e
eFtvb7zVUEVb421dY7wVaaCZ3bQ33vLhhgYe0d54W7c13talxlt+1s1z3s54
W9cab59MGpgN2mC8FfWV3Ef6u22Mt23mZbfaStZtZ7yttzTe1q2Nt3Wl8bau
MN5KkZ77op3x1gLRue9bBbf/Pyn7M6XyIwEA

-->

</rfc>
