<?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.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-discardmodel-11" 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-11"/>
    <author initials="J." surname="Evans" fullname="John Evans">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>1 Principal Place, Worship Street</street>
          <city>London</city>
          <code>EC2A 2FA</code>
          <country>UK</country>
        </postal>
        <email>jevanamz@amazon.co.uk</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>410 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>US</country>
        </postal>
        <email>opyl@amazon.com</email>
      </address>
    </author>
    <author initials="J." surname="Haas" fullname="Jeffrey Haas">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>US</country>
        </postal>
        <email>jhaas@juniper.net</email>
      </address>
    </author>
    <author initials="A." surname="Kadosh" fullname="Aviran Kadosh">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Dr.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>akadosh@cisco.com</email>
      </address>
    </author>
    <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2026" month="January" day="13"/>
    <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 100?>

<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.</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 104?>

<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 which address these issues. The IM provides precise classification of packet loss to enable accurate automated mitigation. The DM specifies a YANG implementation of this framework for network elements, while maintaining consistency through clear semantics.</t>
      <t>The scope of this document is limited to reporting packet loss at Layer 3 and frames discarded at Layer 2. This document considers only the signals that may trigger automated mitigation actions and not how the actions are defined or executed.</t>
      <t><xref target="problem"/> describes the problem space and requirements. <xref target="infomodel"/> defines the IM and classification scheme. <xref target="datamodel"/> specifies the corresponding YANG data model and implementation requirements together with a set of usage examples, and the complete YANG module definition. The appendices provide additional context and implementation guidance.</t>
      <section 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>2024-06-04 --&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.</t>
        </dd>
        <dt>FEATURE-DISCARD-RATE:</dt>
        <dd>
          <t>The rate and/or magnitude of the discards, indicating the severity and urgency of the problem.  Rate may be expressed using absolute (e.g., pps (packets per second)) 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 loss signals to appropriate mitigation actions.</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>
      <t>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 corresponding IM YANG module is defined in <xref target="infomodel-module"/>.</t>
      <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 they were flowing (direction), whether they were successfully processed or discarded (type), what protocol layer they belong to (layer), and the specific reason for any discards (sub-types). This structure enables both high-level monitoring of total discards and more detailed triage to map to mitigation actions.</t>
        <t>The abstract structure of the IM is depicted in <xref target="tree-im-abstract"/>. The full YANG tree diagram of the IM is provided in <xref target="sec-im-full-tree"/>.</t>
        <figure anchor="tree-im-abstract">
          <name>Abstract IM Tree Structure</name>
          <artwork><![CDATA[
module: ietf-packet-discard-reporting-sx

  structure packet-discard-reporting:
    +-- control-plane {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 extension while maintaining backward compatibility. New discard types can be added as new branches without affecting existing implementations.</t>
        <t>The corresponding YANG module is defined in <xref target="infomodel-module"/>.</t>
      </section>
      <section anchor="sub-type-definitions">
        <name>Sub-type Definitions</name>
        <dl>
          <dt>discards/policy/:</dt>
          <dd>
            <t>These are intended discards, meaning packets dropped due to a configured policy, including: ACLs, traffic policers, unicast Reverse Path Forwarding (uRPF) checks, 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"/>, <xref target="RFC8704"/>), remotely triggered blackholing (<xref target="RFC3882"/>, <xref target="RFC5635"/>), or BGP Flow Specification–based filters (<xref target="RFC8955"/>, <xref target="RFC8956"/>, <xref target="RFC9117"/>); all such policy-driven discards are reported under this class.</t>
          </dd>
          <dt>discards/error/:</dt>
          <dd>
            <t>These are unintended discards due to errors in processing packets or frames.  There are multiple sub-classes.
</t>
            <ul spacing="normal">
              <li>
                <dl>
                  <dt>discards/error/l2/rx/:</dt>
                  <dd>
                    <t>These are frames discarded due to errors in the received Layer 2 frame, including: CRC errors, invalid MAC addresses, invalid VLAN tags, frame size violations and other malformed frame conditions.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/error/l3/rx/:</dt>
                  <dd>
                    <t>These are discards which occur due to errors in the received packet, indicating an upstream problem rather than an issue with the device dropping the errored packets, including: header checksum errors,  MTU exceeded, invalid packet errors, i.e., incorrect version, incorrect header length, invalid options and other malformed packet conditions.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/error/l3/rx/ttl-expired:</dt>
                  <dd>
                    <t>These are discards due to TTL (or Hop limit) expiry, which can occur for the following reasons: normal trace-route operations, end-system TTL/Hop limit set too low, routing loops in the network.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/error/l3/no-route/:</dt>
                  <dd>
                    <t>These are discards which occur due to a packet not matching any route in the routing table, e.g., which may be due to routing configuration errors or may be transient discards during convergence.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/error/internal/:</dt>
                  <dd>
                    <t>These are discards due to internal device issues, including: parity errors in device memory or other internal hardware errors.  Any errored discards not explicitly assigned to other classes are also accounted for here.</t>
                  </dd>
                </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@2024-06-04.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:  mailto:opsawg@ietf.org

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

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

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

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

     Author:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>";
  description
    "This module defines a 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 2024-06-04 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }

  /*
   * Features
   */

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

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

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

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

  /*
   * Identities
   */

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

  identity ingress {
    base direction;
    description
      "Reports statistics for the received 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.";
  }

  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
          "Class identifier.";
      }
      uses basic-packets-bytes;
    }
  }

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

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

  grouping errors-l2-rx {
    description
      "Layer 2 ingress frame error discard counters.";
    container rx {
      description
        "Layer 2 ingress frame receive error discard
         counters.";
      leaf frames {
        type yang:counter64;
        description
          "The number of frames discarded due to errors
           with the received frame.";
      }
      leaf crc-error {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           CRC error.";
      }
      leaf invalid-mac {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           an invalid 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.";
    }
    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) 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 ACLs.";
    }
  }

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

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

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

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

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

  grouping control-plane {
    description
      "Control plane packet counters.";
    list traffic {
      key "direction";
      description
        "Total control plane packets.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
    }
    list discards {
      key "direction";
      description
        "Control plane packet discard counters.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
      container policy {
        description
          "Number of control plane packets discarded due to policy.";
        uses basic-packets;
      }
    }
  }
}
]]></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"/>.</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting-sx@2024-06-04.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:  mailto:opsawg@ietf.org

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

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

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

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

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

     Copyright (c) 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 2024-06-04 {
    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:device;
    }
    container device {
      if-feature "pdr-common:device-stats";
      description
        "Device level packet counters.";
      uses pdr-common:device;
    }
  }
}
]]></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-state/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 model defines a comprehensive set of counters and statistics, implementations <bcp14>MAY</bcp14> support a subset of the defined features based on device capabilities and operational requirements. However, implementations <bcp14>MUST</bcp14> clearly document which features are supported and how they map to the 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>SHOULD NOT</bcp14> be accounted for at Layer 3 and vice versa.  An implementation <bcp14>MUST</bcp14> indicate which layers traffic and discards are counted against.  This is to avoid double counting.</t>
          </li>
          <li>
            <t>The aggregate Layer 2 and Layer 3 traffic and discard classes <bcp14>SHOULD</bcp14> account for all underlying frames or packets received, transmitted, and discarded across all other classes.</t>
          </li>
          <li>
            <t>The aggregate QoS traffic and no-buffer discard classes <bcp14>MUST</bcp14> account for all underlying packets received, transmitted, and discarded across all other classes.</t>
          </li>
          <li>
            <t>In addition to the Layer 2 and Layer 3 aggregate classes, an individual discarded packet <bcp14>MUST</bcp14> only account against a single error, policy, or no-buffer discard subclass.</t>
          </li>
          <li>
            <t>When there are multiple reasons for discarding a packet, the ordering of discard class reporting <bcp14>MUST</bcp14> be defined. 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>SHOULD</bcp14> be reported as class[id="0"], which represents the default class.</t>
          </li>
          <li>
            <t>When traffic is mirrored, the discard metrics <bcp14>MUST</bcp14> account for the original traffic rather than the reflected traffic.</t>
          </li>
          <li>
            <t>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>If all of the requirements listed in <xref target="requirements"/> are met, a "good" unicast IPv4 packet received would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</t>
          </li>
        </ul>
        <t>A received unicast IPv6 packet discarded due to Hop Limit expiry would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/packets</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/bytes</t>
          </li>
          <li>
            <t>interface/discards[direction="ingress"]/l3/rx/ttl-expired/packets</t>
          </li>
        </ul>
        <t>An IPv4 packet discarded on egress due to no buffers would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</t>
          </li>
          <li>
            <t>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</t>
          </li>
          <li>
            <t>interface/discards[direction="egress"]/no-buffer/class[id="0"]/packets</t>
          </li>
          <li>
            <t>interface/discards[direction="egress"]/no-buffer/class[id="0"]/bytes</t>
          </li>
        </ul>
        <t>A multicast IPv6 packet dropped due to RPF check failure would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/packets</t>
          </li>
          <li>
            <t>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/bytes</t>
          </li>
          <li>
            <t>interface/discards[direction="ingress"]/policy/l3/rpf/packets</t>
          </li>
        </ul>
        <t>A "good" Layer-2 frame received would increment:</t>
        <ul spacing="normal">
          <li>
            <t>interface/traffic[direction="ingress"]/l2/frames</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/l2/bytes</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</t>
          </li>
          <li>
            <t>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</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", "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@2024-06-04.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:  mailto:opsawg@ietf.org

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

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

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

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

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

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

  /*
   * Features
   */

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

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

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

  /*
   * Identities
   */

  identity discard-class {
    description
      "Base identity to identify the discard 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 "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-state/if:interface/if:statistics" {
    if-feature "interface-stats";
    nacm:default-deny-all;
    description
      "Adds packet discard reporting to the interface statistics.";
    uses discard-order-policy;
    uses pdr-common:interface;
  }
  augment "/lne:logical-network-elements"
        + "/lne:logical-network-element" {
    if-feature "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:device;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="experience">
      <name>Deployment Considerations Experience</name>
      <t>This section captures practical insights gained from implementing the model across multiple vendors' platforms, as guidance for future implementers and operators:</t>
      <ol spacing="normal" type="1"><li>
          <t>The number and granularity of discard classes defined in the 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 layers deep, a minimal implementation may only implement the top six layers.</t>
        </li>
      </ol>
    </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>Operational experience from these implementations is reflected in the deployment considerations 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 this document
   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" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
        <t>The YANG module specified in <xref target="datamodel-module"/> defines a data model that is designed to be accessed via YANG-based management protocols, such as NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These YANG-based management protocols (1) have to use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use mutual authentication.</t>
        <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t>
        <t>There are no particularly sensitive writable data nodes.</t>
        <t>Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments.  It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities:</t>
        <dl>
          <dt>Control-plane, interfaces, and devices:</dt>
          <dd>
            <t>Access to these data nodes would reveal information about the attacks to which an element is subject, misconfigurations, etc.</t>
          </dd>
          <dt/>
          <dd>
            <t>Also, an attacker who can inject packets can infer the efficiency of its attack by monitoring (the increase of) some discard counters (e.g., policy) and adjust its attack strategy accordingly.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:ietf-packet-discard-reporting-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>
    <section anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
Nadav Chachmon
Cisco Systems, Inc.
170 West Tasman Dr.
San Jose, CA 95134
United States of America
Email: nchachmo@cisco.com
]]></artwork>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgments</name>
      <t>The content of this document has benefitted from feedback from JR Rivers, Ronan Waide, Chris DeBruin, and Marcos Sanz.</t>
      <t>Thanks to Benoît Claise, Joe Clarke, Tom Petch, Mahesh Jethanandani, Paul Aitken, and Randy Bush for the review and comments.</t>
      <t>Thanks to Ladislav Lhotka for the YANGDOCTORS review, Sergio Belotti for the OPSDIR review, and Satoru Matsushima for the INTDIR review.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="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="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8349">
          <front>
            <title>A YANG Data Model for Routing Management (NMDA Version)</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
              <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8349"/>
          <seriesInfo name="DOI" value="10.17487/RFC8349"/>
        </reference>
        <reference anchor="RFC8530">
          <front>
            <title>YANG Model for Logical Network Elements</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a logical network element (LNE) YANG module that is compliant with the Network Management Datastore Architecture (NMDA). This module can be used to manage the logical resource partitioning that may be present on a network device. Examples of common industry terms for logical resource partitioning are logical systems or logical routers. The YANG model in this document conforms with NMDA as defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8530"/>
          <seriesInfo name="DOI" value="10.17487/RFC8530"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RED93">
          <front>
            <title>Random Early Detection gateways for Congestion Avoidance</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="gMNI">
          <front>
            <title>gRPC Network Management Interface, IETF 98, March 2017, &lt;https://datatracker.ietf.org/meeting/98/materials/slides-98-rtgwg-gnmi-intro-draft-openconfig-rtgwg-gnmi-spec-00&gt;</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="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="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 1602?>

<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 240,176 L 240,192" fill="none" stroke="black"/>
              <path d="M 240,224 L 240,240" fill="none" stroke="black"/>
              <path d="M 248,32 L 248,96" fill="none" stroke="black"/>
              <path d="M 280,96 L 280,144" fill="none" stroke="black"/>
              <path d="M 312,96 L 312,144" fill="none" stroke="black"/>
              <path d="M 320,176 L 320,240" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,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 248,32 L 344,32" fill="none" stroke="black"/>
              <path d="M 248,96 L 304,96" fill="none" stroke="black"/>
              <path d="M 320,96 L 344,96" fill="none" stroke="black"/>
              <path d="M 72,144 L 272,144" fill="none" stroke="black"/>
              <path d="M 288,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="320,96 308,90.4 308,101.6" fill="black" transform="rotate(270,312,96)"/>
              <polygon class="arrowhead" points="288,144 276,138.4 276,149.6" fill="black" transform="rotate(90,280,144)"/>
              <polygon class="arrowhead" points="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="296" y="68">Control</text>
                <text x="288" y="84">Plane</text>
                <text x="236" y="116">from_cpu</text>
                <text x="348" y="116">to_cpu</text>
                <text x="12" y="212">Rx</text>
                <text x="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="80" y="292">error/rx/l2</text>
                <text x="184" y="292">error/l3/rx</text>
                <text x="288" y="292">no-buffer</text>
                <text x="400" y="292">error/l3/tx</text>
                <text x="208" y="308">error/l3/no-route</text>
                <text x="232" y="324">error/l3/rx/ttl-expired</text>
                <text x="196" y="340">error/internal</text>
                <text x="40" y="356">Intended:</text>
                <text x="180" y="372">policy/acl</text>
                <text x="396" y="372">policy/acl</text>
                <text x="196" y="388">policy/policer</text>
                <text x="412" y="388">policy/policer</text>
                <text x="184" y="404">policy/urpf</text>
                <text x="208" y="420">policy/null-route</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                              +-----------+
                              |           |
                              |  Control  |
                              |  Plane    |
                              +---+---^---+
                         from_cpu |   | to_cpu
                                  |   |
        +-------------------------v---+---------------------+
        |                                                   |
    +---+---+  +----------+  +---------+  +----------+  +---+---+
    |       |  |          |  |         |  |          |  |       |
Rx-->PHY/MAC+--> Ingress  +--> Buffers +--> Egress   +-->PHY/MAC+-> Tx
    |       |  | Pipeline |  |         |  | Pipeline |  |       |
    +-------+  +----------+  +---------+  +----------+  +-------+

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

]]></artwork>
        </artset>
      </figure>
      <t>See Appendix B for examples of how these discard signals map to root causes and mitigation actions.</t>
    </section>
    <section anchor="mapping">
      <name>Example Signal-to-mitigation Action Mapping</name>
      <t>The effectiveness of automated mitigation depends on correctly mapping discard signals to root causes and appropriate actions.  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 Section 3.</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 {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-state/if:interface/if:statistics:
    +--ro discard-order-capability*   identityref {interface-stats}?
    +--ro traffic* [direction] {interface-stats}?
    |  +--ro direction    identityref
    |  +--ro l2
    |  |  +--ro frames?   yang:counter64
    |  |  +--ro bytes?    yang:counter64
    |  +--ro l3
    |  |  +--ro address-family-stat* [address-family]
    |  |     +--ro address-family    identityref
    |  |     +--ro packets?          yang:counter64
    |  |     +--ro bytes?            yang:counter64
    |  |     +--ro unicast
    |  |     |  +--ro packets?   yang:counter64
    |  |     |  +--ro bytes?     yang:counter64
    |  |     +--ro multicast
    |  |     |  +--ro packets?   yang:counter64
    |  |     |  +--ro bytes?     yang:counter64
    |  |     +--ro 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] {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 {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>
  </back>
  <!-- ##markdown-source:
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
6U9W3UwiP5M67A+kElMpHxlsenxQ+JLqOf0glefqL3lcpstK2EQ72ERr2ERr
2FSf5toDbcIVxqpoj1/o4CTMDCMevzpL1nRPDN9jJ//xRXifZjGde2bkM64e
VjOvd9UL3EgHznU18llF8TWYjvv0V7eZqGpZP70aqmgm2xoCadtI1vQrvSuz
zorOyhzUYnRdpe53Gn9I+ZRV47dimYoGbcbH7+wrjww8FXceOb2DYqz+uTy2
NtBrQPyRJZ5hYNP9KgauWt9GEWgY2DRdi4Gd3loxsNOiLQM7jdoysNOowMDF
Sa+khXoEtxm9xMCfefwSA+v/lhdiRXflRWikMOvaIwf+InnLx8l96XGJ9lss
umk2SkY9gmGlSuA0C9i+7s290Wokl5vdgrbWzH2VzWiOq9ZAtsnKmBLrSoki
+69chPX41VoFLCSb5nOzFO3azbO8p86HPmQdGN62GDVmbKuxSJ2T1qHGSIs2
Crg0aD+OahN6Qz/8YAppye1a1VUXia0S3y0k0YLOnLegg0oNvVl4tCN8tc2N
wh9WQ13FJZWTbzF1M2JbXFnBjM+7Zyi25cPk/1b1XtSqYoX/ihU6WfXna03O
NFtvWzQBnxbjkGRcTNZbwvE4tqRlI7G7V+M5sypc/Gle1F7+2Q7vzodtMO40
aMY1MWQY3xUuHK29Xd01k1tcpurcK2n4+ovh+8Xw/WL4/l6G7xcjthHc9ZnR
afTFiP1ixK7R7IsRWwnoFyO20OaLEfvFiG079S9GrPz3xYj9/8SIlckab0vV
PJ3wrijbpKLI6qI1nztfNqrB1iD75abt1WDdTLRVg4stWm2rxUat1OBiI1sN
tt+1EikVDZppoDi6qwZ//vFdNdh+W16IFd2VF6GRwjQHiybhKQq9V/Nu8as2
QK8BcckmNY8NM5qZrWLGqrWq/dJlRtN0LWZ0UNyKGZ0WbZnRadSWGUUDM4p1
maHYYOXSikZm/Mzjl5hRrEvXxQZtxi/YpLqXKvJ+55hD9uMS7ct/TXCaZm1s
0opmbWzShmZNNmlDsyabtIiprIwpsa6UKLL/ykVYj1+tVWhjk1a0a2WTNiC0
0SYtYbSFTVps08YmLbZpY5PWtWmySdtTSEtuL9mk+k25n5UT0U1W2qTCfGxs
UgeoGuHRjvDVNtdkk7qj7beYfIupr7RJSyOUTol9rj1Dsa1tkxbei1q1qvCV
WKFfVX++1uRMs/W2xZU2abHBSpu02GClTWpAd21S55Wt0TovqrHvfNKEd+fD
Nhh3GtTj2r0mgnLhrfptVhL8+IOT4I8/LAneviKn3Q05Djbqv9NJ80lcvBGk
Ple+1KJ4V9E3olKn5ka1WdlCMTT13BCxtj9clcpuf7sqmb04r4rEU/erZhjF
GjCKNWA0/Rb3naoRS31oOlrvFp8qSlmx7uJtdfJ+PR3UtWhHF/orJ2uBH7VI
WiguQG18FkfYLzVcN2NBVDesmZjdYI18hWq6atmmnK0gqjmvqasq7ls9dFWq
wmcbvCpPoS13VX3fJuYPnxVcuvyw1p3Lr1e4clvC2x7YBvlYx7uirbx0eNdG
TAvnbgveFQXetRuu69kV7Xm30GANv27VkrRuU/bqitbsU/6+jU9TVPPuZx68
yp9rL/5antE2g/Nnrv+ouBEJd6cwjot37ouWzqNCq5a+o0Krlq6jmlYrPEc1
rVY4juwmWQFHYm1hUBHBacL9egEXg/yWLqNCs7YeoxpErnIYOZhs5y+ym7R0
F1VBtsJbVNVkhbOoFVW0YWs1quspahLOq8VNOz9Rlbq+Qka0DmjiJrTCR1TN
EjWzXj3nNg4ip3/XP/R5dgPDoAXn0Dvrv9UqVuEj/d2K0NvDNpp1txsb8DZ+
Ifv7Nm4h+/s2XiEtMEpOoYJSW3je5BJage7Cd+0dQqtRrG3jpgtdm142+FNq
0xw+0JHyCQRKuxyJ2j32wXkSayjUD9SpH6hWN2vWD5BoDxBqq1Tszw/FqtyJ
taCoWpYV1FeZQdEk0MVK2fJ5rIXqXAqHde15to6UtmBdUWZdu/mDsyrasm6h
zUMyK9ZgXdHIumJ9pik3WSuUU8W6vwsUqzIt1oKiallWUF9NvkUFC1RYbvpF
BYfIf63i7+1t53LDh2VetLeg6xuukX3hWEz6hXiIXKnOwVixLA/Mw1jDrC63
fGAuxhrGdRHD6+djtDexRTWIa+RktDe016Cc9pkZFRa3aN4CWsmvdfIzSqa3
DVytuFknS6OFDe6MWZmp0dISLzRZN1ujbI/rt59n/zEsvjJro9ZMtL/Tn66X
ubHuNO2G62626+ZvtDTVC03a53DUGOz6ZV0exwqzXbRZicKn62ZzNGLfyqr4
v2jNFlTYSwEA

-->

</rfc>
