<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-discardmodel-12" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <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-12"/>
    <author initials="J." surname="Evans" fullname="John Evans" role="editor">
      <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" role="editor">
      <organization>Nvidia</organization>
      <address>
        <postal>
          <street>2788 San Tomas Expy</street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95051</code>
          <country>US</country>
        </postal>
        <email>opylypenko@nvidia.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" role="editor">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="14"/>
    <area>Operations and Management Area</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>Troubleshooting</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 118?>

<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 Information Model for network elements with a focus on the interface, device, and control-plane discards.</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 122?>

<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 the forwardingStatus IPFIX Information Element, 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 (IM) and specifies a corresponding YANG Data Model (DM) for packet loss reporting to address the above issues. The IM provides precise classification of packet loss to enable accurate automated mitigation. The DM specifies a YANG implementation of this IM 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. Such considerations are deplyment-specific.</t>
      <t><xref target="problem"/> describes the problem space and requirements. <xref target="infomodel"/> defines the IM and its 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. Appendices <xref format="counter" target="wheredropped"/> and <xref format="counter" target="mapping"/> provide additional context and implementation guidance.</t>
      <section anchor="editorial-note-to-be-removed-by-the-rfc-editor">
        <name>Editorial Note (To be removed by the RFC Editor)</name>
        <t>Note to the RFC Editor: This section is to be removed prior to
   publication.</t>
        <t>This document contains placeholder values that need to be replaced
   with finalized values at the time of publication.  This note
   summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
          <li>
            <t>2026-03-03 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </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>Tree diagrams used in this document follow the notation defined in <xref target="RFC8340"/>.</t>
      <t>This document makes use of the following terms:</t>
      <dl>
        <dt>Packet discard:</dt>
        <dd>
          <t>It accounts for any instance where a packet is dropped by a device, regardless of whether the discard was intentional or unintentional.</t>
        </dd>
        <dt>Intended packet discards (Intended discards, for short):</dt>
        <dd>
          <t>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>
        </dd>
        <dt>Unintended packet discards (Unintended discards, for short):</dt>
        <dd>
          <t>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>
        </dd>
        <dt/>
        <dd>
          <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>
        </dd>
      </dl>
    </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. This also needs to cover control plane discards.</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., packets per second (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 type of mitigation. Examples may be:  error discards may require taking faulty components out of service, no-buffer discards may require traffic redistribution, or intended policy discards typically require no action. Refer to <xref target="ex-table"/> for more examples.</t>
        </dd>
      </dl>
      <t>While most of FEATURE-DISCARD-SCOPE, FEATURE-DISCARD-RATE, and FEATURE-DISCARD-DURATION are implicitly supported by the Interfaces Group MIB <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 IM provided in <xref target="infomodel"/> defines such a classification scheme to enable automated mapping from discard signals to appropriate mitigation actions (refer to <xref target="mapping"/> for examples).</t>
    </section>
    <section anchor="infomodel">
      <name>Information Model (IM)</name>
      <t>The IM 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 DM implementations, such as YANG or IPFIX <xref target="RFC7011"/>, while ensuring consistency across implementations. Using YANG for the IM 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>
      <ul empty="true">
        <li>
          <t>Design note: In order to ease reuse of the IM structure by DMs but without requiring that these DMs to parse the "sx" structure defined in <xref target="RFC8791"/>, main reusable nodes are defined in a common module (<xref target="common-module"/>) while the main IM structure is defined in <xref target="infomodel-module"/>.</t>
        </li>
      </ul>
      <section anchor="infomodel-structure">
        <name>Structure</name>
        <t>The IM defines a hierarchical classification scheme for packet discards, which captures where in a device the discards are accounted (component), in which direction of traffic 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 (i.e., aggregates) 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 {pdr-common:control-plane-stats}?
    |  +-- traffic* [direction]
    |  |  ...
    |  +-- discards* [direction]
    |     ...
    +-- interface* [name] {pdr-common:interface-stats}?
    |  +-- name        string
    |  +-- traffic* [direction]
    |  |  +-- direction    identityref
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos
    |  |     ...
    |  +-- discards* [direction]
    |     +-- direction    identityref
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |           ...
    +-- flow* [direction] {pdr-common:flow-reporting}?
    |  +-- direction    identityref
    |  +-- traffic
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos
    |  |     ...
    |  +-- discards
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |           ...
    +-- device {pdr-common:device-stats}?
       +-- traffic
       |  +-- l2
       |  |  ...
       |  +-- l3
       |  |  ...
       |  +-- qos
       |     ...
       +-- discards
          +-- l2
          |  ...
          +-- l3
          |  ...
          +-- errors
          |  +-- l2
          |  |  ...
          |  +-- l3
          |  |  ...
          |  +-- internal
          |     ...
          +-- policy
          |  +-- l2
          |  |  ...
          |  +-- l3
          |     ...
          +-- no-buffer
                ...
]]></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 DMs, 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 extensions 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 due to a configured policy, including: ACLs, traffic policers, unicast Reverse Path Forwarding (uRPF) checks, Distributed Denial-of-Service (DDoS) protection rules, and explicit null routes.  In practice, ingress DDoS protection policies are often realized using mechanisms such as ingress filtering and uRPF (<xref target="RFC2827"/>, <xref target="RFC3704"/>, and <xref target="RFC8704"/>), remotely triggered blackholing (<xref target="RFC3882"/>, <xref target="RFC5635"/>), or BGP Flow Specification–based filters (<xref target="RFC8955"/>, <xref target="RFC8956"/>, and <xref target="RFC9117"/>); all such policy-driven discards are reported under this class.</t>
          </dd>
          <dt>discards/errors/:</dt>
          <dd>
            <t>These are unintended discards due to errors in processing packets or frames.  There are multiple sub-classes:
</t>
            <ul spacing="normal">
              <li>
                <dl>
                  <dt>discards/errors/l2/rx/:</dt>
                  <dd>
                    <t>These are frames discarded due to errors in the received Layer 2 frame, including: Cyclic Redundancy Check (CRC) errors, invalid Media Access Control (MAC) addresses, invalid VLAN tags, frame size violations and other malformed frame conditions.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/rx/:</dt>
                  <dd>
                    <t>These discards 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>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/rx/ttl-expired:</dt>
                  <dd>
                    <t>These discards occur due to TTL (or Hop limit) expiry. These can occur, e.g., for the following reasons: normal trace-route operations, end-system TTL/Hop limit set too low, or routing loops in the network.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/no-route/:</dt>
                  <dd>
                    <t>These discards 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>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/internal/:</dt>
                  <dd>
                    <t>These discards occur 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>
                </dl>
              </li>
            </ul>
          </dd>
          <dt>discards/no-buffer/:</dt>
          <dd>
            <t>These are discards due to buffer exhaustion (that is congestion related discards). These can be tail-drop discards or due to an active queue management algorithm, such as Random Early Detection (RED) <xref target="RED93"/> or Controlled Delay (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="common-module">
        <name>"ietf-packet-discard-reporting-common" YANG Module</name>
        <t>The "ietf-packet-discard-reporting-common" module imports "ietf-yang-types" defined in <xref target="RFC9911"/>.</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting-common@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:"
          + "ietf-packet-discard-reporting-common";
  prefix pdr-common;

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

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

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

     Editor:   Oleksandr Pylypenko
               <mailto:opylypenko@nvidia.com>

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

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

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>";
  description
    "This module defines a common YANG module for packet discard
     reporting.

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (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 2026-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 discard statistics.";
  }

  feature interface-stats {
    description
      "Indicates support of interface discard statistics.";
  }

  feature flow-reporting {
    description
      "Indicates support of flow discard reporting.";
  }

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

  /*
   * Identities
   */

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

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

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

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

       This identity is defined here rather than importing
       it from other YANG modules to simplify implementations
       and avoid inheriting dependencies of those modules.";
  }

  identity ip {
    base address-family;
    description
      "Identity for IP address family.";
  }

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

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

  /*
   * 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 l2-traffic {
    description
      "Grouping for Layer 2 frame and byte counters.";
    uses basic-frames;
    leaf bytes {
      type yang:counter64;
      description
        "Number of Layer 2 bytes.";
    }
  }

  grouping l3-traffic {
    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;
      }
      container broadcast {
        when "derived-from-or-self(../address-family, "
           + "'pdr-common:ipv4')" {
          description
            "Only applicable for IPv4.";
        }
        description
          "Broadcast traffic counters.";
        uses basic-packets-bytes;
      }
    }
  }

  grouping class-list {
    description
      "Class-based traffic counters.";
    list class {
      key "id";
      min-elements 1;
      description
        "Class traffic counters.";
      leaf id {
        type string;
        description
          "Indicates a Quality of Service (QoS) class
           identifier.";
      }
      uses basic-packets-bytes;
    }
  }

  grouping qos {
    description
      "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 received frames discarded due to
            Cyclic Redundancy Check (CRC) error.";
      }
      leaf invalid-mac {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           an invalid Media Access Control (MAC) address.";
      }
      leaf invalid-vlan {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           an invalid VLAN tag.";
      }
      leaf invalid-frame {
        type yang:counter64;
        description
          "The number of invalid received 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 received 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 or Hop Limit exceeded.";
    }
    leaf no-route {
      type yang:counter64;
      description
        "The number of received packets discarded due to not
         matching a valid route.";
    }
    leaf invalid-sid {
      type yang:counter64;
      description
        "The number of received packets discarded due to an
         invalid Segment Routing over IPv6 (SRv6) segment 
         identifier (SID).
         For SR-MPLS, invalid SIDs have to be accounted
         under invalid-label.";
    }
    leaf invalid-label {
      type yang:counter64;
      description
        "The number of received 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 
         Access Control Lists (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 Distributed
         Denial-of-Service (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 traffic-and-discards {
    description
      "Specifies overall 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;
      }
    }
  }
}
]]></sourcecode>
      </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"/> and also imports the "ietf-packet-discard-reporting-common" module (<xref target="common-module"/>).</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting-sx@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting-sx {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting-sx";
  prefix pdr-sx;

  import ietf-packet-discard-reporting-common {
    prefix pdr-common;
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }
  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:  OPSAWG <mailto:opsawg@ietf.org>

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

     Editor:   Oleksandr Pylypenko
               <mailto:opylypenko@nvidia.com>

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

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

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

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     All revisions of IETF and IANA published modules can be found
     at the YANG Parameters registry group
     (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 2026-03-03 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }

  /*
   * Main structure definition
   */

  sx:structure packet-discard-reporting {
    description
      "Specifies the abstract structure of packet discard
       reporting data.";
    container control-plane {
      if-feature "pdr-common:control-plane-stats";
      description
        "Control plane packet counters.";
      uses pdr-common:control-plane;
    }
    list interface {
      if-feature "pdr-common: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 pdr-common:interface;
    }
    list flow {
      if-feature "pdr-common:flow-reporting";
      key "direction";
      leaf direction {
        type identityref {
          base pdr-common:direction;
        }
        description
          "Specifies a direction.";
      }
      description
        "Flow packet counters.";
      uses pdr-common:traffic-and-discards;
    }
    container device {
      if-feature "pdr-common:device-stats";
      description
        "Device level packet counters.";
      uses pdr-common:traffic-and-discards;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="datamodel">
      <name>Data Model (DM)</name>
      <t>This DM implements the IM defined in <xref target="infomodel"/> for the interface, device, and control-plane components. It is a device model per <xref section="2.1" sectionFormat="of" target="RFC8969"/>. Specifically, it is a device-local (network element) operational state model: counters are scoped to a single device (interfaces and control plane).</t>
      <t>The IM defines the abstract classification tree using YANG data structure extensions <xref target="RFC8791"/>. This DM imports that module and reuses the same groupings and hierarchy of components, directions, layers, and discard classes, attaching them via augment statements to existing YANG modules for routing, interfaces, and logical network elements. The flow component is defined only in the IM for use by flow-oriented data models and are not instantiated in this DM.</t>
      <section anchor="datamodel-structure">
        <name>Structure</name>
        <t>There is a direct mapping between the IM components and their DM 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

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--ro discard-stats {control-plane-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  ...
       +--ro discards* [direction]
          ...
  augment /if:interfaces/if:interface/if:statistics:
    +--ro discard-order-capability*   identityref {interface-stats}?
    +--ro traffic* [direction] {interface-stats}?
    |  +--ro direction    identityref
    |  +--ro l2
    |  |  ...
    |  +--ro l3
    |  |  ...
    |  +--ro qos!
    |     +--ro class* [id]
    |        ...
    +--ro discards* [direction] {interface-stats}?
       +--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 qos!
             +--ro class* [id]
                ...
  augment /lne:logical-network-elements/lne:logical-network-element:
    +--ro discard-stats {device-stats}?
       +--ro discard-order-capability*   identityref
       +--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 qos!
                +--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 DM and are intended to ensure consistent implementation across different vendors and platforms while allowing for platform-specific optimisations where needed. While the DM 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 DM.</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>MUST NOT</bcp14> be accounted for at Layer 3 and vice versa. 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. There might be exceptions when distinct discontinuity times are observed for more granular discards.</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. Typically, this can be exposed by an implementation by means of <tt>discard-order-capability</tt>.</t>
          </li>
          <li>
            <t>If Diffserv <xref target="RFC2475"/> is not used, no-buffer discards <bcp14>MUST</bcp14> be reported as <tt>class[id="0"]</tt>, 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>No-buffer discards can be realized differently with different memory architectures. Whether a no-buffer 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 reportable on <tt>egress</tt>, while discards due to device-level congestion (e.g., due to exceeding the device forwarding rate) <bcp14>MUST</bcp14> be reportable on <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>This section assumes that no class of service is implemented.</t>
        <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><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
        <t>A received unicast IPv6 packet discarded due to Hop Limit expiry would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/rx/ttl-expired/packets</tt></t>
          </li>
        </ul>
        <t>An IPv4 packet discarded on egress due to no buffers would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
        <t>A multicast IPv6 packet dropped due to RPF check failure would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/policy/l3/rpf/packets</tt></t>
          </li>
        </ul>
        <t>A "good" Layer-2 frame received would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l2/frames</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l2/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
      </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-common" (<xref target="common-module"/>), "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" name="ietf-packet-discard-reporting@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting";
  prefix pdr;

  import ietf-packet-discard-reporting-common {
    prefix pdr-common;
    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:  OPSAWG <mailto:opsawg@ietf.org>

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

     Editor:   Oleksandr Pylypenko
               <mailto:opylypenko@nvidia.com>

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

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

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

     Copyright (c) 2026 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     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 2026-03-03 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }

  /*
   * Identities
   */

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

  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 "pdr-common:control-plane-stats";
    description
      "Adds control plane discard counters.";
    container discard-stats {
      nacm:default-deny-all;
      config false;
      description
        "List of control plane discard counters.";
      uses discard-order-policy;
      uses pdr-common:control-plane;
    }
  }
  augment "/if:interfaces/if:interface/if:statistics" {
    if-feature "pdr-common:interface-stats";
    description
      "Adds packet discard reporting to the interface statistics.";
    uses discard-order-policy;
    uses pdr-common:interface;
  }
  augment "/lne:logical-network-elements"
        + "/lne:logical-network-element" {
    if-feature "pdr-common:device-stats";
    description
      "Adds device level packet counters.";

    container discard-stats {
      nacm:default-deny-all;
      config false;
      description
        "List of device level discard counters.";
      uses discard-order-policy;
      uses pdr-common:traffic-and-discards;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="experience">
        <name>Deployment 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 IM 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 levels deep, a minimal implementation may only implement the top six.</t>
          </li>
        </ol>
      </section>
      <section anchor="anchoring-flow-structure">
        <name>Anchoring Flow Structure</name>
        <t>The characterization of a flow depends on the underlying data model that adheres to the IM. From that standpoint, the IM does not make an assumption about flow characterization and identification. Future flow-oriented data models <bcp14>MUST</bcp14> ensure that the flow structure is anchored so that the discards are unambiguously associated with a flow.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: This section is to be removed before publication as an RFC.</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in RFC 7942.  The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.  This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <section anchor="information-model-implementations">
        <name>Information Model Implementations</name>
        <t>The IM defined in <xref target="infomodel"/> has been implemented or mapped on at least nine hardware platforms across four vendors, including:</t>
        <ul spacing="normal">
          <li>
            <t>Broadcom: Trident, Tomahawk 1, Tomahawk 3, Tomahawk 5</t>
          </li>
          <li>
            <t>Cisco: Q200L</t>
          </li>
          <li>
            <t>Juniper: MX, PTX, QFX</t>
          </li>
          <li>
            <t>Marvell: TL7</t>
          </li>
        </ul>
      </section>
      <section anchor="data-model-implementations">
        <name>Data Model Implementations</name>
        <t>A YANG-compliant open-source SLAX script implements a subset of the DM defined in <xref target="datamodel"/> for Juniper MX routers.  This implementation is available at:</t>
        <ul spacing="normal">
          <li>
            <t><eref target="https://github.com/o-pylypenko-aws/draft-ietf-opsawg-discardmodel-sample/">https://github.com/o-pylypenko-aws/draft-ietf-opsawg-discardmodel-sample/</eref></t>
          </li>
        </ul>
        <t>Practical observations from these implementations are reflected in <xref target="experience"/>.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="security-infomodel">
        <name>Information Model</name>
        <t>The IM defined in <xref target="infomodel-module"/> specifies a YANG module using <xref target="RFC8791"/> data extensions. As such, there are no additional security issues related to the YANG module that need to be considered.</t>
        <t>The "ietf-packet-discard-reporting-common" YANG module 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>
        <t>Modules that use the groupings that are defined in the "ietf-packet-discard-reporting-common" module
   should identify the corresponding security considerations.</t>
      </section>
      <section anchor="security-datamodel">
        <name>Data Model</name>
        <t>This section is modeled after the template described in <xref section="3.7.1" 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 Network Configuration Protocol (NETCONF) <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These YANG-based management protocols (1) have to use a secure transport layer (e.g., Secure Shell (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>rt:control-plane-protocol/pdr:discard-stats, if:statistics/pdr:traffic, if:statistics/pdr:discards, and lne:logical-network-element/pdr:discard-stats:</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-common
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   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-common
   Namespace:
     urn:ietf:params:xml:ns:ietf-packet-discard-reporting-common
   Prefix:  pdr-common
   Maintained by IANA?  N
   Reference:  RFC XXXX

   Name:  ietf-packet-discard-reporting-sx
   Namespace:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting-sx
   Prefix:  pdr-sx
   Maintained by IANA?  N
   Reference:  RFC XXXX

   Name:  ietf-packet-discard-reporting
   Namespace:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting
   Prefix:  pdr
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </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="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="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="RFC9911">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schönwälder" initials="J." role="editor" surname="Schönwälder"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document defines a collection of common data types to be used with the YANG data modeling language. It includes several new type definitions and obsoletes RFC 6991.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9911"/>
          <seriesInfo name="DOI" value="10.17487/RFC9911"/>
        </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="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" target="https://ieeexplore.ieee.org/document/251892">
          <front>
            <title>Random early detection gateways for congestion avoidance</title>
            <author initials="S." surname="Floyd">
              <organization/>
            </author>
            <author initials="V." surname="Jacobson">
              <organization/>
            </author>
            <date year="1993" month="August"/>
          </front>
        </reference>
        <reference anchor="gNMI" target="https://datatracker.ietf.org/meeting/98/materials/slides-98-rtgwg-gnmi-intro-draft-openconfig-rtgwg-gnmi-spec-00">
          <front>
            <title>gRPC Network Management Interface</title>
            <author initials="R." surname="Shakir">
              <organization/>
            </author>
            <author initials="A." surname="Shaikh">
              <organization/>
            </author>
            <author initials="P." surname="Borman">
              <organization/>
            </author>
            <author initials="M." surname="Hines">
              <organization/>
            </author>
            <author initials="C." surname="Lebsack">
              <organization/>
            </author>
            <author initials="C." surname="Morrow">
              <organization/>
            </author>
            <date year="2017" month="March"/>
          </front>
          <refcontent>IETF 98</refcontent>
        </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="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="RFC2827">
          <front>
            <title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
            <author fullname="P. Ferguson" initials="P." surname="Ferguson"/>
            <author fullname="D. Senie" initials="D." surname="Senie"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This paper discusses a simple, effective, and straightforward method for using ingress traffic filtering to prohibit DoS (Denial of Service) attacks which use forged IP addresses to be propagated from 'behind' an Internet Service Provider's (ISP) aggregation point. 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="38"/>
          <seriesInfo name="RFC" value="2827"/>
          <seriesInfo name="DOI" value="10.17487/RFC2827"/>
        </reference>
        <reference anchor="RFC3704">
          <front>
            <title>Ingress Filtering for Multihomed Networks</title>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="P. Savola" initials="P." surname="Savola"/>
            <date month="March" year="2004"/>
            <abstract>
              <t>BCP 38, RFC 2827, is designed to limit the impact of distributed denial of service attacks, by denying traffic with spoofed addresses access to the network, and to help ensure that traffic is traceable to its correct source network. As a side effect of protecting the Internet against such attacks, the network implementing the solution also protects itself from this and other attacks, such as spoofed management access to networking equipment. There are cases when this may create problems, e.g., with multihoming. This document describes the current ingress filtering operational mechanisms, examines generic issues related to ingress filtering, and delves into the effects on multihoming in particular. This memo updates RFC 2827. 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="84"/>
          <seriesInfo name="RFC" value="3704"/>
          <seriesInfo name="DOI" value="10.17487/RFC3704"/>
        </reference>
        <reference anchor="RFC8704">
          <front>
            <title>Enhanced Feasible-Path Unicast Reverse Path Forwarding</title>
            <author fullname="K. Sriram" initials="K." surname="Sriram"/>
            <author fullname="D. Montgomery" initials="D." surname="Montgomery"/>
            <author fullname="J. Haas" initials="J." surname="Haas"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document identifies a need for and proposes improvement of the unicast Reverse Path Forwarding (uRPF) techniques (see RFC 3704) for detection and mitigation of source address spoofing (see BCP 38). Strict uRPF is inflexible about directionality, the loose uRPF is oblivious to directionality, and the current feasible-path uRPF attempts to strike a balance between the two (see RFC 3704). However, as shown in this document, the existing feasible-path uRPF still has shortcomings. This document describes enhanced feasible-path uRPF (EFP-uRPF) techniques that are more flexible (in a meaningful way) about directionality than the feasible-path uRPF (RFC 3704). The proposed EFP-uRPF methods aim to significantly reduce false positives regarding invalid detection in source address validation (SAV). Hence, they can potentially alleviate ISPs' concerns about the possibility of disrupting service for their customers and encourage greater deployment of uRPF techniques. This document updates RFC 3704.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="84"/>
          <seriesInfo name="RFC" value="8704"/>
          <seriesInfo name="DOI" value="10.17487/RFC8704"/>
        </reference>
        <reference anchor="RFC3882">
          <front>
            <title>Configuring BGP to Block Denial-of-Service Attacks</title>
            <author fullname="D. Turk" initials="D." surname="Turk"/>
            <date month="September" year="2004"/>
            <abstract>
              <t>This document describes an operational technique that uses BGP communities to remotely trigger black-holing of a particular destination network to block denial-of-service attacks. Black-holing can be applied on a selection of routers rather than all BGP-speaking routers in the network. The document also describes a sinkhole tunnel technique using BGP communities and tunnels to pull traffic into a sinkhole router for analysis. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3882"/>
          <seriesInfo name="DOI" value="10.17487/RFC3882"/>
        </reference>
        <reference anchor="RFC5635">
          <front>
            <title>Remote Triggered Black Hole Filtering with Unicast Reverse Path Forwarding (uRPF)</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>Remote Triggered Black Hole (RTBH) filtering is a popular and effective technique for the mitigation of denial-of-service attacks. This document expands upon destination-based RTBH filtering by outlining a method to enable filtering by source address as well. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5635"/>
          <seriesInfo name="DOI" value="10.17487/RFC5635"/>
        </reference>
        <reference anchor="RFC8955">
          <front>
            <title>Dissemination of Flow Specification Rules</title>
            <author fullname="C. Loibl" initials="C." surname="Loibl"/>
            <author fullname="S. Hares" initials="S." surname="Hares"/>
            <author fullname="R. Raszuk" initials="R." surname="Raszuk"/>
            <author fullname="D. McPherson" initials="D." surname="McPherson"/>
            <author fullname="M. Bacher" initials="M." surname="Bacher"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>This document defines a Border Gateway Protocol Network Layer Reachability Information (BGP NLRI) encoding format that can be used to distribute (intra-domain and inter-domain) traffic Flow Specifications for IPv4 unicast and IPv4 BGP/MPLS VPN services. This allows the routing system to propagate information regarding more specific components of the traffic aggregate defined by an IP destination prefix.</t>
              <t>It also specifies BGP Extended Community encoding formats, which can be used to propagate Traffic Filtering Actions along with the Flow Specification NLRI. Those Traffic Filtering Actions encode actions a routing system can take if the packet matches the Flow Specification.</t>
              <t>This document obsoletes both RFC 5575 and RFC 7674.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8955"/>
          <seriesInfo name="DOI" value="10.17487/RFC8955"/>
        </reference>
        <reference anchor="RFC8956">
          <front>
            <title>Dissemination of Flow Specification Rules for IPv6</title>
            <author fullname="C. Loibl" initials="C." role="editor" surname="Loibl"/>
            <author fullname="R. Raszuk" initials="R." role="editor" surname="Raszuk"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>"Dissemination of Flow Specification Rules" (RFC 8955) provides a Border Gateway Protocol (BGP) extension for the propagation of traffic flow information for the purpose of rate limiting or filtering IPv4 protocol data packets.</t>
              <t>This document extends RFC 8955 with IPv6 functionality. It also updates RFC 8955 by changing the IANA Flow Spec Component Types registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8956"/>
          <seriesInfo name="DOI" value="10.17487/RFC8956"/>
        </reference>
        <reference anchor="RFC9117">
          <front>
            <title>Revised Validation Procedure for BGP Flow Specifications</title>
            <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="J. Alcaide" initials="J." surname="Alcaide"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="D. Smith" initials="D." surname="Smith"/>
            <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>This document describes a modification to the validation procedure defined for the dissemination of BGP Flow Specifications. The dissemination of BGP Flow Specifications as specified in RFC 8955 requires that the originator of the Flow Specification match the originator of the best-match unicast route for the destination prefix embedded in the Flow Specification. For an Internal Border Gateway Protocol (iBGP) received route, the originator is typically a border router within the same autonomous system (AS). The objective is to allow only BGP speakers within the data forwarding path to originate BGP Flow Specifications. Sometimes it is desirable to originate the BGP Flow Specification from any place within the autonomous system itself, for example, from a centralized BGP route controller. However, the validation procedure described in RFC 8955 will fail in this scenario. The modification proposed herein relaxes the validation rule to enable Flow Specifications to be originated within the same autonomous system as the BGP speaker performing the validation. Additionally, this document revises the AS_PATH validation rules so Flow Specifications received from an External Border Gateway Protocol (eBGP) peer can be validated when such a peer is a BGP route server.</t>
              <t>This document updates the validation procedure in RFC 8955.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9117"/>
          <seriesInfo name="DOI" value="10.17487/RFC9117"/>
        </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="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Geng" initials="L." surname="Geng"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked. Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance). Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </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 1589?>

<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="568" viewBox="0 0 568 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 72,144 L 72,176" fill="none" stroke="black"/>
              <path d="M 104,176 L 104,240" fill="none" stroke="black"/>
              <path d="M 128,176 L 128,192" fill="none" stroke="black"/>
              <path d="M 128,224 L 128,240" fill="none" stroke="black"/>
              <path d="M 216,176 L 216,240" fill="none" stroke="black"/>
              <path d="M 232,32 L 232,96" fill="none" stroke="black"/>
              <path d="M 240,176 L 240,192" fill="none" stroke="black"/>
              <path d="M 240,224 L 240,240" fill="none" stroke="black"/>
              <path d="M 264,96 L 264,144" fill="none" stroke="black"/>
              <path d="M 296,96 L 296,144" fill="none" stroke="black"/>
              <path d="M 320,176 L 320,240" fill="none" stroke="black"/>
              <path d="M 328,32 L 328,96" fill="none" stroke="black"/>
              <path d="M 344,176 L 344,192" fill="none" stroke="black"/>
              <path d="M 344,224 L 344,240" fill="none" stroke="black"/>
              <path d="M 432,176 L 432,240" fill="none" stroke="black"/>
              <path d="M 456,176 L 456,192" fill="none" stroke="black"/>
              <path d="M 456,224 L 456,240" fill="none" stroke="black"/>
              <path d="M 488,144 L 488,176" fill="none" stroke="black"/>
              <path d="M 520,176 L 520,240" fill="none" stroke="black"/>
              <path d="M 232,32 L 328,32" fill="none" stroke="black"/>
              <path d="M 232,96 L 288,96" fill="none" stroke="black"/>
              <path d="M 304,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 72,144 L 256,144" fill="none" stroke="black"/>
              <path d="M 272,144 L 488,144" fill="none" stroke="black"/>
              <path d="M 40,176 L 104,176" fill="none" stroke="black"/>
              <path d="M 128,176 L 216,176" fill="none" stroke="black"/>
              <path d="M 240,176 L 320,176" fill="none" stroke="black"/>
              <path d="M 344,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 456,176 L 520,176" fill="none" stroke="black"/>
              <path d="M 24,208 L 40,208" fill="none" stroke="black"/>
              <path d="M 104,208 L 128,208" fill="none" stroke="black"/>
              <path d="M 216,208 L 240,208" fill="none" stroke="black"/>
              <path d="M 320,208 L 344,208" fill="none" stroke="black"/>
              <path d="M 432,208 L 456,208" fill="none" stroke="black"/>
              <path d="M 520,208 L 536,208" fill="none" stroke="black"/>
              <path d="M 40,240 L 104,240" fill="none" stroke="black"/>
              <path d="M 128,240 L 216,240" fill="none" stroke="black"/>
              <path d="M 240,240 L 320,240" fill="none" stroke="black"/>
              <path d="M 344,240 L 432,240" fill="none" stroke="black"/>
              <path d="M 456,240 L 520,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="544,208 532,202.4 532,213.6" fill="black" transform="rotate(0,536,208)"/>
              <polygon class="arrowhead" points="464,208 452,202.4 452,213.6" fill="black" transform="rotate(0,456,208)"/>
              <polygon class="arrowhead" points="352,208 340,202.4 340,213.6" fill="black" transform="rotate(0,344,208)"/>
              <polygon class="arrowhead" points="304,96 292,90.4 292,101.6" fill="black" transform="rotate(270,296,96)"/>
              <polygon class="arrowhead" points="272,144 260,138.4 260,149.6" fill="black" transform="rotate(90,264,144)"/>
              <polygon class="arrowhead" points="248,208 236,202.4 236,213.6" fill="black" transform="rotate(0,240,208)"/>
              <polygon class="arrowhead" points="136,208 124,202.4 124,213.6" fill="black" transform="rotate(0,128,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="280" y="52">Control</text>
                <text x="280" y="68">Plane</text>
                <text x="220" y="116">from_cpu</text>
                <text x="332" y="116">to_cpu</text>
                <text x="12" y="212">Rx</text>
                <text x="72" y="212">PHY/MAC</text>
                <text x="168" y="212">Ingress</text>
                <text x="280" y="212">Buffers</text>
                <text x="380" y="212">Egress</text>
                <text x="488" y="212">PHY/MAC</text>
                <text x="556" y="212">Tx</text>
                <text x="172" y="228">Pipeline</text>
                <text x="388" y="228">Pipeline</text>
                <text x="48" y="276">Unintended:</text>
                <text x="76" y="292">errors/rx/l2</text>
                <text x="188" y="292">errors/l3/rx</text>
                <text x="288" y="292">no-buffer</text>
                <text x="404" y="292">errors/l3/tx</text>
                <text x="212" y="308">errors/l3/no-route</text>
                <text x="236" y="324">errors/l3/rx/ttl-expired</text>
                <text x="200" y="340">errors/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:
   errors/rx/l2  errors/l3/rx  no-buffer    errors/l3/tx
                 errors/l3/no-route
                 errors/l3/rx/ttl-expired
                 errors/internal
Intended:
                 policy/acl                 policy/acl
                 policy/policer             policy/policer
                 policy/urpf
                 policy/null-route

]]></artwork>
        </artset>
      </figure>
      <t>See <xref target="mapping"/> 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.  Tables <xref format="counter" target="ex-table"/> and <xref format="counter" target="ex-table2"/> give example discard signal-to-mitigation action mappings based on the features described in <xref target="problem"/>.</t>
      <table anchor="ex-table">
        <name>Example Signal-Cause-Mitigation Mapping (1)</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>
          </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>
          </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>
          </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>
          </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>
          </tr>
          <tr>
            <td align="left">.*/policy/.*</td>
            <td align="left">Policy</td>
            <td align="left"> </td>
            <td align="center"> </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>
          </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>
          </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>
          </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>
          </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>
          </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>
          </tr>
        </tbody>
      </table>
      <table anchor="ex-table2">
        <name>Example Signal-Cause-Mitigation Mapping (2)</name>
        <thead>
          <tr>
            <th align="left">DISCARD-CLASS</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="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="center">N</td>
            <td align="left">no action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/rx/ttl-expired</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="center">Y</td>
            <td align="left">Roll-back change</td>
          </tr>
          <tr>
            <td align="left">.*/policy/.*</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="center">Y</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/l3/no-route</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="center">N</td>
            <td align="left">Escalate to operator</td>
          </tr>
          <tr>
            <td align="left">ingress/discards/errors/internal</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="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">egress/discards/no-buffer</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 {pdr-common: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] {pdr-common: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
    |  |  |     +-- broadcast
    |  |  |        +-- 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
    |     |     +-- broadcast
    |     |        +-- 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] {pdr-common: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
    |  |  |     +-- broadcast
    |  |  |        +-- 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
    |     |     +-- broadcast
    |     |        +-- 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 {pdr-common: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
       |  |     +-- broadcast
       |  |        +-- 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
          |     +-- broadcast
          |        +-- 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 DM structure:</t>
      <artwork><![CDATA[
module: ietf-packet-discard-reporting

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--ro discard-stats {pdr-common:control-plane-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  +--ro direction    identityref
       |  +--ro packets?     yang:counter64
       |  +--ro bytes?       yang:counter64
       +--ro discards* [direction]
          +--ro direction    identityref
          +--ro packets?     yang:counter64
          +--ro bytes?       yang:counter64
          +--ro policy
             +--ro packets?   yang:counter64
  augment /if:interfaces/if:interface/if:statistics:
    +--ro discard-order-capability*   identityref
    |       {pdr-common:interface-stats}?
    +--ro traffic* [direction] {pdr-common: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 broadcast
    |  |        +--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] {pdr-common: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 broadcast
       |        +--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-stats {pdr-common:device-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic
       |  +--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 broadcast
       |  |        +--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
          +--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 broadcast
          |        +--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
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</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 reviews, Sergio Belotti for the OPSDIR review, and Satoru Matsushima for the INTDIR review.</t>
      <t>Thanks to Diego Lopez for shepherding the document.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Nadav Chachmon">
        <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>nchachmo@cisco.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
tlTh5aURUzso9MaOMNFtQjx0joJFe+QYYl2V946dGnoVti1vwe9UT1sKKBon
EJ/zwsMC7KOZFICcq+soAOWUIyJzffUn1SMwFXa9QgUTW5GwcvegitMplQsu
LVwu97YgOxuY3dIJdC2rRKQD+uki3ZyuTyIxl2ZYJBC9NObmJsYG3cmeFnLx
c8HVrPXd1Een1YuJDI+ULybii460iDJl4q5gImFoAHOuwBOdP8pq79YiVTwM
8JYiO1/uxq4gSG86apdr42pKFhuRxeOxFEcc0E1PjFVbmh4JMtIXltsbdMbe
DTrr33uDmpSmkJ2sGMrq46++aqKDuX3zsvk7c09Olmoy1SVbmq/HqbSgEvj9
UbCQc7yvVPWeD9Oo8YoaVb5VwBuk5pIY/uEGBjvRxO7qufcX/mGDJ+pmvmIe
6k39zTzN82pq8daOvPJqFPjKuwbFv74E3+63vf01zf9FPzGwkiQCSKOxe92O
8u7naEJ905xUpzmp0pwaFt27tqPy1k8DLKOpgosaZLV+Uw5VrrsWJEtLV2Xc
H4q6vutuyCitZ+l5eUndnxKLxEk4lG2iL9uEydFue9kiLBovbnlPKfHR1thF
YxtnqBrmKM8sryzSysthPCibv2m4IKZmhIb7WGrGaf6y+zUxFer/MKA1DNVw
XUwTP6guLKGa75oZt9w1c9R01wy5d2j7965trN6BNy7fgQfq0Ymnu6hzvkGW
tcA3X2TOn3o0p9S18y1WnbjTXkNfIdLGMUxAa22mRD1dFZtL8TtzU7LfXK4a
tdeZXkPbVJQiUBEKcoDK7RPmBlZy7srLvrnbBFPQ5lEuhwp8aUzCqVfqZ3MN
5pF7TSWqcFk4Q3X+OtR35ViLI3GLs21X7m89PfiLqS8XoItVOuCS7Kz/mgvB
ueRFaqpPG4EVicXiWkAu+gfqx/QGg/9qAHh1cQnkGFLd5bF4UMWJYgYmu8lc
8kOWBijrdCGlXOrIaAGa8Shkt7+7L0WkOaNFysVx6GH58ku5HFnblbxgzjTU
7kPpLHd7G2Ox6kQKYtP/ommUsGuYCqrZToe93u6APL1sE4y4LJofvletYEVJ
U4tiW+cp5JyB6N6fwnh0s70QnEFv7yMNd/Hjy1fPj2jAwtzdIeuwmN3lZGhB
19rmsg46Q1xEQuZeJLkDaaCAzs2jUZCgAVU7iuMJoG8NAipf6jt/9gEXCd1S
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
fTXYfVtdiBXdVRehlcIMB6s24alKvdfzbvmrLkCvAXHFJrWPLTPama1ixrq1
avzSZ0bbdC1m9FDciRm9Fl2Z0WvUlRlVCzOqdZmh3GDl0qpWZvzE41eYUa1L
1+UGXcYv2aSmlzryfuuZQ+7jCu3LTxuctlkXm7SmWRebtKVZm03a0qzNJi1j
qqhiSq0rJcrsv3IR1uNXZxW62KQ17TrZpC0IbbVJKxjtYJOW23SxScttutik
TW3abNLuFNKR2ys2qXlT7WflREyTlTapsh9bm9QDqkF4dCN8vc212aT+aPsd
Jt9h6itt0soIlUSxT7VnaLZ1bdLSe9WoVpW+Uiv0q/rP15qcbbbetrjSJi03
WGmTlhustEkt6L5N6r1yNVrvRT32vU/a8O592AXjXoNmXPv3O1AsvFP5ywmC
H793EPzR+wXBuzfddLvoxsNG83cmaD5Lyxd7dAqbrzQu3z70lapVr7lRY4C2
0rxNPbccXrsfropqd79dFddenldNDKr/VTuMag0Y1Row2n7LW1DdiJU+DEl1
vYynjly6rLgWfqsD+5sJo3NWwKr1MF95wQ38qENsQ3lxGo9xcYT9SsN1AxtU
fcOGibkN1ghrqKe5jm2qQQ2qnivbuqrjzNVD10U0fLLB68IZunJe3fddQgPg
s5Lnlx82en359QqPb0d4uwPbIjs7sLHqKlY9NnZx1MEd3IGNVYmN3Ybr+oJV
dzYuNVjDE1y3Op3bVP3AqjMnVb/v4gVV9Wz8iQev8wC7i7+WL7XL4PyZ73Eq
70nK3zSsq+Ot/6Kju6nUqqO3qdSqo7OpodUKX1NDqxWuJrdJUcKRWlsY1Jz5
tOF+vSMai/yOTqZSs64+pgZErnIxeZjs5mFym3R0MNVBtsK/VNdkhXupE1V0
YWs9qu9bahPOq8VNN89SnVa/QkZ0PgLFTWiFV6meJRpmvXrOXVxKXv++R+nT
7AaWQUvupLfOv/XaVukj892Kw7r7bTTrbjcu4F08Se73XRxJ7vdd/EhGYFTc
SCX9tvS8zYm0At2l77q7kFaj2JjQbZe6tr3s5oFpjJF4T9fLR5At3QIsGrfb
ewdZrKFb31O9vqeG3a5k30O43UO+rdK2Pz0UqwIv1oKibllWUF9t+EWbbFcr
xcynMRzqAzE81nXn2fmYtQPrqirrus3vHZLRlXVLbe4TlrEG66pW1lXrM021
yVrnQHWs+5tAsSpMYy0o6pZlBfU1BGvUsECNEWde1HCI/HQ6vO9uRlcb3i9s
o7sx3dxwjdANz3gyL9R95Ep9AMeKZblnEMcaFna15T0DOdaws8sYXj+Yo7u1
repBXCOgo7vNvQbldA/rqDG+VfsW0El+rRPcUbHCXeAaxc06IR4dzHFvzNow
j45GeanJuqEeVdPcvP00+49l8ZUhH40Wo/ud+XS9sI91p+k2XHezXTf4o6PV
XmrSPQCkwXY3L5uCQFZY8KrLSpQ+XTcUpBX7fjCIOhjhbbVxOJ7KFZRvvghK
j9713gz59u1w/PuNSRDnoa7XKDdjmWtpx+loSW4Cvu4zCSdRQVcZ4DWQE9hu
qJgk/fXTuTqPrulS8PM0CRL1cwCa8LY6nGXQ0VH4fbaMEr6E6TTIRmmuLoLk
H3QHV5DwFUnfh0n6f/5XoQ7jIMqh6U9piL9nr0O63lOdhQVe+XcazMJ8pn4K
C2gJ/QVJtK3OgmWsDqLidSiDnMM/d+r7JXw54ZtU8aqmKLyRK8DmfJmWO/7z
AGyUOLhWz2dp8Tow7TBS5ujl4eXL8wvpI8c72rJphDDHaVFE5tuXZxdHJ+fy
GUNygdVBlwB2kQM00dx2fPLi0n7sgXIUhVMAKF2E/6Cv81m4mIV0eQTfqSwL
M+j9Py+TPy6jUQEA

-->

</rfc>
