<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-discardmodel-15" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-15"/>
    <author initials="J." surname="Evans" fullname="John Evans" role="editor">
      <organization>Individual</organization>
      <address>
        <email>john@nopacketleftbehind.net</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko" role="editor">
      <organization>Nvidia</organization>
      <address>
        <postal>
          <street>2788 San Tomas Expy</street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95051</code>
          <country>US</country>
        </postal>
        <email>opylypenko@nvidia.com</email>
      </address>
    </author>
    <author initials="J." surname="Haas" fullname="Jeffrey Haas">
      <organization>HPE</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>jeffrey.haas@hpe.com</email>
      </address>
    </author>
    <author initials="A." surname="Kadosh" fullname="Aviran Kadosh">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Dr.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>akadosh@cisco.com</email>
      </address>
    </author>
    <author initials="M." surname="Boucadair" fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="22"/>
    <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 106?>

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

<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). A common operational workflow is to reconcile device- and interface-level packet loss with the traffic flows that were impacted. To support this, the IM defined in this document includes a flow component which applies the same discard classification at the flow level as at the device and interface levels, so that flow-level discard reporting (e.g., via IPFIX) can be directly correlated with device- and interface-level discard reporting.</t>
      <t>This document defines an Information Model (IM) and specifies a corresponding YANG Data Model (DM) for packet loss reporting to address the above issues. The IM provides precise classification of packet loss to enable accurate automated mitigation. The DM specifies a YANG implementation of this IM for network elements, while maintaining consistency through clear semantics.</t>
      <t>The scope of this document is limited to reporting Layer 3 packet discards, Layer 2 frame discards, and discards during MPLS label processing <xref target="RFC3031"/>. The reported signals may trigger automated mitigation actions; the definition and execution of those actions are deployment-specific. Protocol actions associated with a discard (e.g., ICMP error message generation) are governed by the applicable protocol specifications and local policy.</t>
      <t><xref target="problem"/> describes the problem space and requirements. <xref target="rationale"/> explains the design rationale. <xref target="infomodel"/> defines the IM and its classification scheme. <xref target="datamodel"/> specifies the corresponding YANG data model and implementation requirements together with a set of usage examples, and the complete YANG module definition. Appendices <xref format="counter" target="wheredropped"/> and <xref format="counter" target="mapping"/> provide additional context and implementation guidance.</t>
      <section anchor="editorial-note-to-be-removed-by-the-rfc-editor">
        <name>Editorial Note (To be removed by the RFC Editor)</name>
        <t>Note to the RFC Editor: This section is to be removed prior to
   publication.</t>
        <t>This document contains placeholder values that need to be replaced
   with finalized values at the time of publication.  This note
   summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
          <li>
            <t>2026-03-03 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Tree diagrams used in this document follow the notation defined in <xref target="RFC8340"/>.</t>
      <t>This document makes use of the following terms:</t>
      <dl>
        <dt>Packet discard:</dt>
        <dd>
          <t>Any instance where a packet is dropped by a device, regardless of whether the discard was intended or unintended.</t>
        </dd>
        <dt>Intended packet discards (Intended discards, for short):</dt>
        <dd>
          <t>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>Packets that were dropped, which the network operator otherwise intended to deliver, indicating 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>
      </dl>
    </section>
    <section anchor="problem">
      <name>Problem Statement</name>
      <t>The fundamental problem for network operators is how to automatically detect when and where unintended packet loss is occurring and determine the appropriate action to mitigate it. For any network, there are a small set of potential actions that can be taken to mitigate customer impact when unintended packet loss is detected, for example:</t>
      <ol spacing="normal" type="1"><li>
          <t>Take a problematic device, link, or set of devices and/or links out of service.</t>
        </li>
        <li>
          <t>Return a device, link, or set of devices and/or links back into service.</t>
        </li>
        <li>
          <t>Move traffic to other links or devices to alleviate congestion or avoid problematic paths.</t>
        </li>
        <li>
          <t>Roll back a recent change to a device that might have caused the problem.</t>
        </li>
        <li>
          <t>Escalate to a network operator as a last resort when automated mitigation is not possible.</t>
        </li>
      </ol>
      <t>The ability to select the appropriate mitigation action depends on four key features of packet loss:</t>
      <dl>
        <dt>FEATURE-DISCARD-SCOPE:</dt>
        <dd>
          <t>Determines which devices, interfaces, and/or flows are impacted. This also needs to cover control-plane discards.</t>
        </dd>
        <dt>FEATURE-DISCARD-RATE:</dt>
        <dd>
          <t>The rate and/or magnitude of the discards, indicating the severity and urgency of the problem.  Rate may be expressed using absolute (e.g., packets per second (pps)) or relative (e.g., percent) values.</t>
        </dd>
        <dt>FEATURE-DISCARD-DURATION:</dt>
        <dd>
          <t>The duration of the discards which helps to distinguish transient from persistent issues.</t>
        </dd>
        <dt>FEATURE-DISCARD-CLASS:</dt>
        <dd>
          <t>The type or class of discards, which is crucial for selecting the appropriate type of mitigation. Examples may be:  error discards may require taking faulty components out of service, no-buffer discards may require traffic redistribution, or intended policy discards typically require no action. Refer to <xref target="ex-table"/> for more examples.</t>
        </dd>
      </dl>
      <t>While most of FEATURE-DISCARD-SCOPE, FEATURE-DISCARD-RATE, and FEATURE-DISCARD-DURATION are implicitly supported by the Interfaces Group MIB <xref target="RFC2863"/> and the YANG Data Model for Interface Management <xref target="RFC8343"/>, FEATURE-DISCARD-CLASS requires a more detailed classification scheme than they define. The IM provided in <xref target="infomodel"/> defines such a classification scheme to enable automated mapping from discard signals to appropriate mitigation actions.</t>
      <t>The classification defined in this document does not by itself determine whether a specific discard condition is intended or unintended. That determination is made by the operator, based on the discard class together with local policy, configured intent, baseline behaviour, duration, affected scope, and other operational context. For example, policy discards may be intended when they enforce a deliberate access-control rule, but unintended when a configuration error causes valid traffic to match that rule. Similarly, TTL-expired packets may be expected at a low baseline rate due to traceroute or other diagnostic activity, while a sustained increase above baseline may indicate convergence, a routing loop, or another operational fault.</t>
      <t>The purpose of the discard classification is to expose the signal with enough precision that an operator or automation system can make that determination consistently. <xref target="mapping"/> provides illustrative examples of how discard class, rate, duration, and inferred cause can be combined to determine whether a discard is unintended and what action, if any, is appropriate.</t>
    </section>
    <section anchor="rationale">
      <name>Design Rationale</name>
      <ol spacing="normal" type="1"><li>
          <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>
        </li>
        <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>
      </ol>
    </section>
    <section anchor="infomodel">
      <name>Information Model (IM)</name>
      <ul empty="true">
        <li>
          <t>Design note: In order to ease reuse of the IM structure by DMs but without requiring these DMs to parse the "sx" structure defined in <xref target="RFC8791"/>, the main reusable nodes are defined in a common module (<xref target="common-module"/>) while the main IM structure is defined in <xref target="infomodel-module"/>.</t>
        </li>
      </ul>
      <section anchor="infomodel-structure">
        <name>Structure</name>
        <t>The IM defines a hierarchical classification scheme for packet discards, which captures where in a device the discards are accounted for (component), in which direction of traffic they were flowing (direction), whether they were successfully processed or discarded (type), what protocol layer they belong to (layer), and the specific reason for any discards (subtypes). This structure enables both high-level monitoring of total discards (i.e., aggregates) and more detailed triage to map to mitigation actions.</t>
        <t>The abstract structure of the IM is depicted in <xref target="tree-im-abstract"/>. The full YANG tree diagram of the IM is provided in <xref target="sec-im-full-tree"/>.</t>
        <figure anchor="tree-im-abstract">
          <name>Abstract IM Tree Structure</name>
          <artwork><![CDATA[
module: ietf-packet-discard-reporting-sx

  structure packet-discard-reporting:
    +-- control-plane {pdr-common:control-plane-stats}?
    |  +-- traffic* [direction]
    |  |  ...
    |  +-- discards* [direction]
    |     ...
    +-- interface* [name] {pdr-common:interface-stats}?
    |  +-- name        string
    |  +-- traffic* [direction]
    |  |  +-- direction    identityref
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos!
    |  |     ...
    |  +-- discards* [direction]
    |     +-- direction    identityref
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              |  ...
    |              +-- discard-type* [type]
    |                 ...
    +-- flow* [direction] {pdr-common:flow-reporting}?
    |  +-- direction    identityref
    |  +-- traffic
    |  |  +-- l2
    |  |  |  ...
    |  |  +-- l3
    |  |  |  ...
    |  |  +-- qos!
    |  |     ...
    |  +-- discards
    |     +-- l2
    |     |  ...
    |     +-- l3
    |     |  ...
    |     +-- errors
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |  |  ...
    |     |  +-- internal
    |     |     ...
    |     +-- policy
    |     |  +-- l2
    |     |  |  ...
    |     |  +-- l3
    |     |     ...
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              |  ...
    |              +-- discard-type* [type]
    |                 ...
    +-- device {pdr-common:device-stats}?
       +-- traffic
       |  +-- l2
       |  |  ...
       |  +-- l3
       |  |  ...
       |  +-- qos!
       |     ...
       +-- discards
          +-- l2
          |  ...
          +-- l3
          |  ...
          +-- errors
          |  +-- l2
          |  |  ...
          |  +-- l3
          |  |  ...
          |  +-- internal
          |     ...
          +-- policy
          |  +-- l2
          |  |  ...
          |  +-- l3
          |     ...
          +-- no-buffer
             +-- qos!
                +-- class* [id]
                   |  ...
                   +-- discard-type* [type]
                      ...
]]></artwork>
        </figure>
        <t>The discard reporting can be organised 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/subtype/sub-subtype/.../metric. <xref target="wheredropped"/> illustrates where these discards typically occur in a network device.  The elements of the tree are defined as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Component:
            </t>
            <ul spacing="normal">
              <li>
                <t>control-plane: discards of traffic to or from a device's control plane.</t>
              </li>
              <li>
                <t>interface: discards of traffic to or from a specific network interface.</t>
              </li>
              <li>
                <t>flow: discards of traffic associated with a specific traffic flow.</t>
              </li>
              <li>
                <t>device: discards of traffic transiting the device.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Direction:
            </t>
            <ul spacing="normal">
              <li>
                <t>ingress: counters for incoming packets or frames.</t>
              </li>
              <li>
                <t>egress: counters for outgoing packets or frames.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Type:
            </t>
            <ul spacing="normal">
              <li>
                <t>traffic: counters for successfully received or transmitted packets or frames.</t>
              </li>
              <li>
                <t>discards: counters for packets or frames that were dropped.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Layer:
            </t>
            <ul spacing="normal">
              <li>
                <t>l2: Layer 2 traffic and discards. This covers both frame and byte counts.</t>
              </li>
              <li>
                <t>l3: Layer 3 traffic and discards. This covers both packet and byte counts.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>The hierarchical structure allows for future extensions while maintaining backward compatibility. New discard types can be added as new branches without affecting existing implementations.</t>
        <t>The corresponding YANG module is defined in <xref target="infomodel-module"/>.</t>
      </section>
      <section anchor="subtype-definitions">
        <name>Subtype Definitions</name>
        <dl>
          <dt>discards/policy/:</dt>
          <dd>
            <t>These are discards of packets that matched a configured policy, including: ACLs, traffic policers, unicast Reverse Path Forwarding (uRPF) checks, Denial-of-Service (DoS) protection rules, and explicit null routes. Such discards are typically intended, although whether a specific policy discard is intended is determined by the operator (see <xref target="intent"/>). In practice, ingress DoS protection policies are often realised using mechanisms such as ingress filtering and uRPF (<xref target="RFC2827"/>, <xref target="RFC3704"/>, and <xref target="RFC8704"/>), remotely triggered blackholing (<xref target="RFC3882"/>, <xref target="RFC5635"/>), or BGP Flow Specification-based filters (<xref target="RFC8955"/>, <xref target="RFC8956"/>, and <xref target="RFC9117"/>); all such policy-driven discards are reported under this class. Consistent with the requirements listed in <xref target="requirements"/>, a policy discard increments one and only one of the policy subtypes.</t>
          </dd>
          <dt>discards/errors/:</dt>
          <dd>
            <t>These are discards due to errors in processing packets or frames, which typically indicate unintended packet loss (see <xref target="intent"/>).  There are multiple subclasses:
</t>
            <ul spacing="normal">
              <li>
                <dl>
                  <dt>discards/errors/l2/rx/:</dt>
                  <dd>
                    <t>These are frames discarded due to errors in the received Layer 2 frame, including: Cyclic Redundancy Check (CRC) errors, invalid Media Access Control (MAC) addresses, invalid VLAN tags, frame size violations and other malformed frame conditions.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/rx/:</dt>
                  <dd>
                    <t>These discards occur due to errors in the received packet, indicating an upstream problem rather than an issue with the device dropping the errored packets, including: header checksum errors and invalid packet errors (i.e., incorrect version, incorrect header length, invalid options, and other malformed packet conditions).</t>
                  </dd>
                  <dt/>
                  <dd>
                    <t>These discards are based upon the outer header of packets.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/mtu-exceeded/:</dt>
                  <dd>
                    <t>These discards occur when the packet size exceeds the applicable MTU. The subclasses distinguish whether the forwarding node was permitted to fragment the packet (Sections <xref target="RFC791" section="3.1" sectionFormat="bare"/> and <xref target="RFC791" section="3.2" sectionFormat="bare"/> of <xref target="RFC791"/>, Sections <xref target="RFC8200" section="4.5" sectionFormat="bare"/> and <xref target="RFC8200" section="5" sectionFormat="bare"/> of <xref target="RFC8200"/>).</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/ttl-expired:</dt>
                  <dd>
                    <t>These discards occur due to TTL <xref target="RFC791"/> (or Hop Limit <xref target="RFC8200"/>) expiry. These can occur, e.g., for the following reasons: normal traceroute operations, including MPLS LSP ping/traceroute <xref target="RFC8029"/> and pseudowire VCCV <xref target="RFC5085"/> which intentionally use TTL expiry, end-system TTL/Hop limit set too low, or routing loops in the network.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/no-route:</dt>
                  <dd>
                    <t>These discards occur due to a packet not matching any route in the routing table. This may be due to routing configuration errors or to transient conditions during convergence.</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/l3/neighbor-resolution-failure:</dt>
                  <dd>
                    <t>These discards occur when the forwarding engine cannot resolve or use the link-layer adjacency required to forward the packet to the selected next hop (<xref target="RFC826"/>, <xref target="RFC4861"/>).</t>
                  </dd>
                </dl>
              </li>
              <li>
                <dl>
                  <dt>discards/errors/internal/:</dt>
                  <dd>
                    <t>These discards occur due to internal device issues, including: parity errors in device memory or other internal hardware errors.  Any errored discards not explicitly assigned to other classes are also accounted for here.</t>
                  </dd>
                </dl>
              </li>
            </ul>
          </dd>
          <dt>discards/no-buffer/:</dt>
          <dd>
            <t>These are congestion-related discards, including tail-drop discards due to buffer exhaustion and discards due to an Active Queue Management (AQM) algorithm, such as Random Early Detection (RED) <xref target="RED93"/> or Controlled Delay (CoDel) <xref target="RFC8289"/>. Implementations <bcp14>MAY</bcp14> additionally report per-type counters in the <tt>discard-type</tt> list.</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"/>. The module references <xref target="RFC8402"/>, <xref target="RFC8660"/>, <xref target="RFC8754"/>, and <xref target="RFC8986"/>.</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting-common@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:"
          + "ietf-packet-discard-reporting-common";
  prefix pdr-common;

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

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

     Editor:   John Evans
               <mailto:john@nopacketleftbehind.net>

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

     Author:   Jeffrey Haas
               <mailto:jeffrey.haas@hpe.com>

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

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

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

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

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

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

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

  /*
   * Features
   */

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

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

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

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

  /*
   * Identities
   */

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

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

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

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

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

       Additional address families can be added by defining
       identities derived from this base identity, without
       affecting existing implementations.";
  }

  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.";
  }

  identity no-buffer-type {
    description
      "Defines a type for congestion-related discards.";
  }

  identity aqm {
    base no-buffer-type;
    description
      "Indicates a discard due to an Active Queue Management (AQM)
       algorithm.";
  }

  identity tail-drop {
    base no-buffer-type;
    description
      "Indicates a discard due to tail drop.";
  }

  /*
   * Groupings
   */

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

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

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

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

  grouping l3-traffic {
    description
      "Layer 3 traffic counters per address family.";
    list address-family-stat {
      key "address-family";
      description
        "Reports per address family traffic counters.";
      leaf address-family {
        type identityref {
          base address-family;
        }
        description
          "Specifies an address family.";
      }
      uses basic-packets-bytes;
      container unicast {
        description
          "Unicast traffic counters.";
        uses basic-packets-bytes;
      }
      container multicast {
        description
          "Multicast traffic counters.";
        uses basic-packets-bytes;
      }
      container broadcast {
        when "derived-from-or-self(../address-family, "
           + "'pdr-common:ipv4')" {
          description
            "Only applicable for IPv4.";
        }
        description
          "Broadcast traffic counters.";
        uses basic-packets-bytes;
      }
    }
  }

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

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

  grouping no-buffer-qos {
    description
      "QoS discard counters.";
    uses qos {
      augment "qos/class" {
        description
          "Adds per-type discard counters to each QoS class.";
        list discard-type {
          key "type";
          description
            "Per-type discard counters.";
          leaf type {
            type identityref {
              base no-buffer-type;
            }
            description
              "Specifies the discard type.";
          }
          uses basic-packets-bytes;
        }
      }
    }
  }

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

  grouping errors-l2-rx {
    description
      "Layer 2 ingress frame error discard counters.";
    container rx {
      description
        "Layer 2 ingress frame receive error discard
         counters.";
      leaf frames {
        type yang:counter64;
        description
          "The number of frames discarded due to errors
           with the received frame.";
      }
      leaf crc-error {
        type yang:counter64;
        description
          "The number of received frames discarded due to
            Cyclic Redundancy Check (CRC) error.";
      }
      leaf invalid-mac {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           an invalid Media Access Control (MAC) address.
           Applies to Ethernet or Ethernet-derived
           encapsulations where MAC addresses are present.";
      }
      leaf invalid-vlan {
        type yang:counter64;
        description
          "The number of received frames discarded due to
           an invalid VLAN tag. Applies to Ethernet or
           Ethernet-derived encapsulations where VLAN tags
           are present.";
      }
      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
          "Reports IPv4 packets discarded because validation of the
           IPv4 header checksum failed.

           This counter is applicable only to IPv4 packets. IPv6 does
           not include an internet-layer header checksum, so IPv6
           packets are not reported under this counter.";
      }
      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.";
      }
    }
    container mtu-exceeded {
      description
        "Counters for packets discarded because their size exceeded
         the applicable Maximum Transmission Unit (MTU).";
      leaf packets {
        type yang:counter64;
        description
          "The total number of packets discarded because their size
           exceeded the applicable MTU.  This includes packets
           reported by the more specific counters in this
           container.";
      }
      leaf fragmentation-not-permitted {
        type yang:counter64;
        description
          "The number of packets discarded because the packet size
           exceeded the applicable MTU and the forwarding node was
           not permitted to fragment the packet.  This includes IPv4
           packets with the Don't Fragment (DF) bit set and IPv6
           packets, which forwarding nodes do not fragment.";
      }
      leaf fragmentation-permitted-not-performed {
        type yang:counter64;
        description
          "The number of packets discarded because the packet size
           exceeded the applicable MTU, fragmentation was permitted
           in principle, but the packet was not fragmented and
           forwarded.  This includes IPv4 packets with the DF bit
           clear.";
      }
      reference
        "RFC 791: Internet Protocol, Sections 3.1 and 3.2
         RFC 8200: Internet Protocol, Version 6 (IPv6)
                   Specification, Sections 4.5 and 5";
    }
    leaf ttl-expired {
      type yang:counter64;
      description
        "The number of packets discarded because the TTL
         (IPv4 or MPLS) expired or the Hop Limit (IPv6)
         was exceeded.";
    }
    leaf no-route {
      type yang:counter64;
      description
        "The number of received packets discarded due to not
         matching a valid route.";
    }
    leaf neighbor-resolution-failure {
      type yang:counter64;
      description
        "Reports packets discarded because the forwarding engine
         could not resolve or use the link-layer adjacency required
         to forward the packet to the selected next hop.

         This includes packets dropped because ARP resolution for an
         IPv4 next hop failed, Neighbor Discovery resolution for an
         IPv6 next hop failed, or the resolved neighbor entry was
         unusable according to local neighbor state.

         This counter applies when route selection identified a next
         hop, but forwarding could not complete because the required
         neighbor or adjacency information was unavailable or
         unusable. Packets discarded because no route matched
         the destination are reported under 'no-route'. Packets
         discarded due to internal device faults are reported
         under 'internal'.";
      reference
        "RFC 826: An Ethernet Address Resolution Protocol -- or --
                  Converting Network Protocol Addresses to 48.bit
                  Ethernet Address for Transmission on Ethernet
                  Hardware
         RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
    }
    leaf invalid-sid {
      type yang:counter64;
      description
        "The number of received packets discarded due to an
         invalid Segment Routing over IPv6 (SRv6) segment
         identifier (SID).
         For SR-MPLS, invalid SIDs have to be accounted
         under invalid-label.";
      reference
        "RFC 8402: Segment Routing Architecture
         RFC 8660: Segment Routing with the MPLS Data Plane
         RFC 8754: IPv6 Segment Routing Header (SRH)
         RFC 8986: Segment Routing over IPv6 (SRv6) Network
                   Programming";
    }
    leaf invalid-label {
      type yang:counter64;
      description
        "The number of received packets discarded due to an
         invalid MPLS label.";
      reference
        "RFC 3031: Multiprotocol Label Switching Architecture";
    }
  }

  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, which typically mean that the ASIC
         detected corruption in an internal memory, table,
         buffer, or metadata structure used while processing
         the packet, and dropped the packet rather than
         forwarding it using potentially bad state.";
    }
  }

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

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

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

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

  grouping policy-l3 {
    description
      "Layer 3 policy packet discard counters.";
    leaf packets {
      type yang:counter64;
      description
        "The number of Layer 3 packets discarded due to policy.";
    }
    leaf acl {
      type yang:counter64;
      description
        "The number of packets discarded due to Layer 3
         (and higher layers) ACLs.";
    }
    container policer {
      description
        "Counters for 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 dos {
      type yang:counter64;
      description
        "The number of packets discarded due to
         Denial-of-Service (DoS) 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
        "Congestion-related discard counters.";
      uses no-buffer-qos;
    }
  }

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

  grouping traffic-and-discards {
    description
      "Specifies overall traffic and discard counters.";
    container traffic {
      description
        "Traffic counters.";
      uses traffic;
    }
    container discards {
      description
        "Discard counters.";
      uses discards;
    }
  }

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

  grouping control-plane {
    description
      "Control plane packet counters.";
    list traffic {
      key "direction";
      description
        "Total control plane packets.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
    }
    list discards {
      key "direction";
      description
        "Control plane packet discard counters.";
      leaf direction {
        type identityref {
          base direction;
        }
        description
          "Specifies a direction.";
      }
      uses basic-packets-bytes;
      container policy {
        description
          "Number of control plane packets discarded due to policy.";
        uses basic-packets;
      }
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="infomodel-module">
        <name>"ietf-packet-discard-reporting-sx" YANG Module</name>
        <t>The "ietf-packet-discard-reporting-sx" module uses the "sx" structure defined in <xref target="RFC8791"/> and also imports the "ietf-packet-discard-reporting-common" module (<xref target="common-module"/>).</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting-sx@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting-sx {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting-sx";
  prefix pdr-sx;

  import ietf-packet-discard-reporting-common {
    prefix pdr-common;
    reference
      "RFC XXXX: Information and Data Models for Packet Discard
                 Reporting";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }

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

     Editor:   John Evans
               <mailto:john@nopacketleftbehind.net>

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

     Author:   Jeffrey Haas
               <mailto:jeffrey.haas@hpe.com>

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

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

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

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

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

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

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

  /*
   * Main structure definition
   */

  sx:structure packet-discard-reporting {
    description
      "Specifies the abstract structure of packet discard
       reporting data.";
    container control-plane {
      if-feature "pdr-common:control-plane-stats";
      description
        "Control plane packet counters.";
      uses pdr-common:control-plane;
    }
    list interface {
      if-feature "pdr-common:interface-stats";
      key "name";
      description
        "Indicates a list of interfaces for which packet
         discard reporting data is provided.";
      leaf name {
        type string;
        description
          "Indicates the name of the interface.";
      }
      uses pdr-common:interface;
    }
    list flow {
      if-feature "pdr-common:flow-reporting";
      key "direction";
      description
        "Flow packet counters.";
      leaf direction {
        type identityref {
          base pdr-common:direction;
        }
        description
          "Specifies a direction.";
      }
      uses pdr-common:traffic-and-discards;
    }
    container device {
      if-feature "pdr-common:device-stats";
      description
        "Device level packet counters.";
      uses pdr-common:traffic-and-discards;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="datamodel">
      <name>Data Model (DM)</name>
      <t>This DM implements the IM defined in <xref target="infomodel"/> for the interface, device, and control-plane components. It is a device model per <xref section="2.1" sectionFormat="of" target="RFC8969"/>. Specifically, it is a device-local (network element) operational state model: counters are scoped to a single device (interfaces and control plane).</t>
      <t>The IM defines the abstract classification tree using YANG data structure extensions <xref target="RFC8791"/>. The reusable groupings are defined in the "ietf-packet-discard-reporting-common" module (<xref target="common-module"/>). This DM imports that common module and reuses the same hierarchy of components, directions, layers, and discard classes, attaching the groupings 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 is 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 traffic-discard-stats {pdr-common:control-plane-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  ...
       +--ro discards* [direction]
          ...
  augment /if:interfaces/if:interface/if:statistics:
    +--ro traffic-discard-stats {pdr-common:interface-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  +--ro direction    identityref
       |  +--ro l2
       |  |  ...
       |  +--ro l3
       |  |  ...
       |  +--ro qos!
       |     +--ro class* [id]
       |        ...
       +--ro discards* [direction]
          +--ro direction    identityref
          +--ro l2
          |  ...
          +--ro l3
          |  ...
          +--ro errors
          |  +--ro l2
          |  |  ...
          |  +--ro l3
          |  |  ...
          |  +--ro internal
          |     ...
          +--ro policy
          |  +--ro l2
          |  |  ...
          |  +--ro l3
          |     ...
          +--ro no-buffer
             +--ro qos!
                +--ro class* [id]
                   |  ...
                   +--ro discard-type* [type]
                      ...
  augment /lne:logical-network-elements/lne:logical-network-element:
    +--ro traffic-discard-stats {pdr-common: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]
                   |  ...
                   +--ro discard-type* [type]
                      ...
]]></artwork>
        </figure>
        <t>The full tree structure is provided in <xref target="sec-dm-full-tree"/>.</t>
      </section>
      <section anchor="requirements">
        <name>Implementation Requirements</name>
        <t>The following requirements apply to the implementation of the DM and are intended to ensure consistent implementation across different vendors and platforms while allowing for platform-specific optimisations where needed. While the DM defines a comprehensive set of counters and statistics, implementations <bcp14>MAY</bcp14> support a subset of the defined features based on device capabilities and operational requirements. Implementations must 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 discard accounted for at Layer 2 <bcp14>MUST NOT</bcp14> be accounted for at Layer 3 and vice versa. This is to avoid double counting.</t>
          </li>
          <li>
            <t>The aggregate Layer 2 and Layer 3 traffic and discard classes <bcp14>SHOULD</bcp14> account for all underlying frames or packets received, transmitted, and discarded across all other classes. There might be exceptions when distinct discontinuity times are observed for more granular discards.</t>
          </li>
          <li>
            <t>The aggregate QoS traffic and no-buffer discard classes <bcp14>MUST</bcp14> account for all underlying packets received, transmitted, and discarded across all other classes. All packets and bytes reported under <tt>discard-type</tt> <bcp14>MUST</bcp14> also be included in the enclosing <tt>class</tt> aggregate.</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. When per-type counters are reported, the discard <bcp14>MUST</bcp14> be counted in at most one discard-type entry.</t>
          </li>
          <li>
            <t>When there are multiple reasons for discarding a packet, the ordering of discard class reporting <bcp14>MUST</bcp14> be unambiguously characterised and exposed by an implementation. Typically, this can be exposed by an implementation by means of <tt>discard-order-capability</tt>.</t>
          </li>
          <li>
            <t><tt>class[id]</tt> represents the QoS class assigned to a packet by the forwarding implementation using Diffserv <xref target="RFC2475"/>, IEEE 802.1Q PCP <xref target="IEEE802.1Q"/>, MPLS TC <xref target="RFC5462"/>, or another mechanism. If no QoS classification is used, no-buffer discards <bcp14>MUST</bcp14> be reported as <tt>class[id="0"]</tt>, which represents the default class.</t>
          </li>
          <li>
            <t>When traffic is mirrored, the discard metrics <bcp14>MUST</bcp14> account for the original traffic rather than the reflected traffic.</t>
          </li>
          <li>
            <t>Congestion-related discards can be realised differently with different queueing and memory architectures. Whether a no-buffer discard is attributed to ingress or egress can differ accordingly. For successful auto-mitigation, discards due to 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 (to-CPU) has its own class. However, traffic from the device control plane (from-CPU) <bcp14>MUST</bcp14> be accounted for in the same way as other egress traffic.</t>
          </li>
        </ol>
      </section>
      <section anchor="examples">
        <name>Usage Examples</name>
        <t>This section assumes that no class of service is implemented.</t>
        <t>If all of the requirements listed in <xref target="requirements"/> are met, a "good" unicast IPv4 packet received would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
        <t>A received unicast IPv6 packet discarded due to Hop Limit expiry would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/errors/l3/ttl-expired</tt></t>
          </li>
        </ul>
        <t>An IPv4 packet discarded on egress by tail drop due to buffer exhaustion would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/l3/address-family-stat[address-family="ipv4"]/unicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/qos/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/qos/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
        <t>If per-type counters are reported, the packet would also increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/qos/class[id="0"]/discard-type[type="tail-drop"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="egress"]/no-buffer/qos/class[id="0"]/discard-type[type="tail-drop"]/bytes</tt></t>
          </li>
        </ul>
        <t>A multicast IPv6 packet dropped due to RPF check failure would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/l3/address-family-stat[address-family="ipv6"]/multicast/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/discards[direction="ingress"]/policy/l3/rpf</tt></t>
          </li>
        </ul>
        <t>A "good" Layer 2 frame received would increment:</t>
        <ul spacing="normal">
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l2/frames</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/l2/bytes</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/packets</tt></t>
          </li>
          <li>
            <t><tt>interface/traffic[direction="ingress"]/qos/class[id="0"]/bytes</tt></t>
          </li>
        </ul>
      </section>
      <section anchor="datamodel-module">
        <name>"ietf-packet-discard-reporting" YANG Module</name>
        <t>The "ietf-packet-discard-reporting" module imports "ietf-packet-discard-reporting-common" (<xref target="common-module"/>), "ietf-netconf-acm" <xref target="RFC8341"/>, "ietf-interfaces" <xref target="RFC8343"/>, "ietf-routing" <xref target="RFC8349"/>, and "ietf-logical-network-element" <xref target="RFC8530"/>.</t>
        <sourcecode markers="true" name="ietf-packet-discard-reporting@2026-03-03.yang"><![CDATA[
module ietf-packet-discard-reporting {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting";
  prefix pdr;

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

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

     Editor:   John Evans
               <mailto:john@nopacketleftbehind.net>

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

     Author:   Jeffrey Haas
               <mailto:jeffrey.haas@hpe.com>

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

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

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

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

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

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

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

  /*
   * 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.";
  }

  identity no-buffer {
    base discard-class;
    description
      "Indicates a congestion-related discard.";
  }

  /*
   * 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;
      }
      description
        "The discard class identity that has this precedence.";
    }
  }

  /*
   * Main structure definition
   */

  augment "/rt:routing/rt:control-plane-protocols"
        + "/rt:control-plane-protocol" {
    if-feature "pdr-common:control-plane-stats";
    description
      "Adds control plane discard counters.";
    container traffic-discard-stats {
      nacm:default-deny-all;
      config false;
      description
        "Traffic and discard counters for the control plane.";
      uses discard-order-policy;
      uses pdr-common:control-plane;
    }
  }
  augment "/if:interfaces/if:interface/if:statistics" {
    if-feature "pdr-common:interface-stats";
    description
      "Adds traffic and discard reporting to the interface
       statistics.";

    container traffic-discard-stats {
      nacm:default-deny-all;
      config false;
      description
        "Traffic and discard counters for the interface.";
      uses discard-order-policy;
      uses pdr-common:interface;
    }
  }
  augment "/lne:logical-network-elements"
        + "/lne:logical-network-element" {
    if-feature "pdr-common:device-stats";
    description
      "Adds device level traffic and discard counters.";

    container traffic-discard-stats {
      nacm:default-deny-all;
      config false;
      description
        "Traffic and discard counters for the logical network
         element.";
      uses discard-order-policy;
      uses pdr-common:traffic-and-discards;
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <section anchor="intent">
        <name>Determining Operator Intent</name>
        <t>Device discard counters do not by themselves establish operator intent. The classification defined in this document identifies the discard condition. Whether that condition is intended or unintended is determined by the operator using the discard class together with local policy, configured intent, baseline behaviour, duration, affected scope, service context, and other operational evidence.</t>
        <t>Some discard classes provide a strong signal on their own. For example, errors/l2/rx above baseline will generally indicate unintended loss, since it reports errored received frames. Similarly, TTL-expired packets may be expected at a low baseline rate due to traceroute or other diagnostic activity, while a sustained increase above baseline may indicate a convergence issue, a persistent routing loop, or another operational fault.</t>
        <t>Congestion-related loss depends on operator context. A level of no-buffer discards below a defined traffic performance indicator (captured in an SLA, typically) may be expected or intended. The same discard class above a performance indicator, sustained for longer than expected, may be unintended and thus require action. For example, congestion-related discards of best-effort traffic are reported under <tt>interface/discards[direction="egress"]/no-buffer/qos/class[id]</tt>, where <tt>class[id]</tt> identifies the best-effort class. Such discards may be determined to be intended if the loss rate over the measurement interval is below the operator's SLA, and unintended if it is above the SLA (see cases B1 and B2 in <xref target="mapping"/>). Similarly, for Lower Effort (LE) <xref target="RFC8622"/> traffic, a higher loss rate during periods of high utilisation may be acceptable or intended, subject to the operator's service policy. When available, <tt>discard-type</tt> counters allow operators to apply different baselines to AQM and tail-drop discards.</t>
        <t>Policy discards may also require additional context. Discards reported under policy (for example, ACL or policer discards) indicate only that traffic matched a configured rule. If a configured policer discards traffic because the offered load exceeds a provisioned service profile, that may be considered an intended discard, reported under <tt>policy/l3/policer</tt>. For example, Expedited Forwarding (EF) <xref target="RFC3246"/> traffic in excess of its provisioned profile may be intentionally discarded by a policer, although sustained policer discards may still indicate overload of the provisioned service. Policy discards may nonetheless be unintended if the configuration is in error. Determining intent for policy discards requires operator-local context. Operators should verify the configuration enforced in underlying nodes and continuously ensure that the configuration is consistent with the intended service.</t>
      </section>
      <section anchor="experience">
        <name>Deployment Experience</name>
        <t>This section captures practical insights gained from implementing the model across multiple vendors' platforms, as guidance for future implementers and operators:</t>
        <ol spacing="normal" type="1"><li>
            <t>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"/>. However, there is typically a policer applied to limit the number of packets sent to the device CPU, which implicitly limits the rate of TTL discards that are processed.  One method to account for all packet discards due to TTL expiry, 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 <tt>interface/discards[direction="ingress"]/policy/l3/null-route</tt> and <tt>interface/discards[direction="ingress"]/errors/l3/no-route</tt>.</t>
          </li>
          <li>
            <t>It is useful to account separately for transit packets discarded by ACLs or policers, and packets discarded by ACLs or policers which limit the number of packets to the device control plane.</t>
          </li>
          <li>
            <t>It is not possible to identify a configuration error (e.g., when
intended discards are unintended) with device discard metrics alone.  For
example, additional context is needed to determine if ACL discards are
intended or due to a misconfigured ACL (i.e., with configuration validation
before deployment or by detecting a significant change in ACL discards after
a configuration change compared to before).</t>
          </li>
          <li>
            <t>Aggregate counters need to be able to deal with the possibility of discontinuities in the underlying counters.</t>
          </li>
          <li>
            <t>While the classification tree is seven levels deep, a minimal implementation may only implement the top six.</t>
          </li>
        </ol>
      </section>
      <section anchor="anchoring-flow-structure">
        <name>Anchoring Flow Structure</name>
        <t>The flow component is included in the IM so that flow-level discard classification is aligned with the device- and interface-level classification, enabling correlation between flow records and device or interface discard counters. The characterisation of a flow depends on the underlying data model that adheres to the IM. From that standpoint, the IM does not make an assumption about flow characterisation and identification. Future flow-oriented data models <bcp14>MUST</bcp14> ensure that the flow structure is anchored so that the discards are unambiguously associated with a flow.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: This section is to be removed before publication as an RFC.</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in RFC 7942.  The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.  This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <section anchor="information-model-implementations">
        <name>Information Model Implementations</name>
        <t>The IM defined in <xref target="infomodel"/> has been implemented or mapped on at least nine hardware platforms across four vendors, including:</t>
        <ul spacing="normal">
          <li>
            <t>Broadcom: Trident, Tomahawk 1, Tomahawk 3, Tomahawk 5</t>
          </li>
          <li>
            <t>Cisco: Q200L</t>
          </li>
          <li>
            <t>Juniper: MX, PTX, QFX</t>
          </li>
          <li>
            <t>Marvell: TL7</t>
          </li>
        </ul>
      </section>
      <section anchor="data-model-implementations">
        <name>Data Model Implementations</name>
        <t>A YANG-compliant open-source SLAX script implements a subset of the DM defined in <xref target="datamodel"/> for Juniper MX routers.  This implementation is available at:</t>
        <ul spacing="normal">
          <li>
            <t><eref target="https://github.com/o-pylypenko-aws/draft-ietf-opsawg-discardmodel-sample/">https://github.com/o-pylypenko-aws/draft-ietf-opsawg-discardmodel-sample/</eref></t>
          </li>
        </ul>
        <t>Practical observations from these implementations are reflected in <xref target="experience"/>.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="security-infomodel">
        <name>Information Model</name>
        <t>The IM defined in <xref target="infomodel-module"/> specifies a YANG module using <xref target="RFC8791"/> data extensions. As such, there are no additional security issues related to the YANG module that need to be considered.</t>
        <t>The "ietf-packet-discard-reporting-common" YANG module defines a set of identities, types, and
   groupings. These nodes are intended to be reused by other YANG
   modules. The module by itself does not expose any data nodes that
   are writable, data nodes that contain read-only state, or RPCs.
   As such, there are no additional security issues related to
   the YANG module that need to be considered.</t>
        <t>Modules that use the groupings that are defined in the "ietf-packet-discard-reporting-common" module
   should identify the corresponding security considerations.</t>
      </section>
      <section anchor="security-datamodel">
        <name>Data Model</name>
        <t>This section is modelled after the template described in <xref section="3.7.1" sectionFormat="of" target="RFC9907"/>.</t>
        <t>The YANG module specified in <xref target="datamodel-module"/> defines a data model that is designed to be accessed via YANG-based management protocols, such as Network Configuration Protocol (NETCONF) <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These YANG-based management protocols (1) have to use a secure transport layer (e.g., Secure Shell (SSH) <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and QUIC <xref target="RFC9000"/>) and (2) have to use mutual authentication.</t>
        <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t>
        <t>There are no particularly sensitive writable data nodes.</t>
        <t>Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments.  It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Specifically, the following subtrees and data nodes have particular sensitivities/vulnerabilities:</t>
        <dl>
          <dt>rt:control-plane-protocol/pdr:traffic-discard-stats, if:statistics/pdr:traffic-discard-stats, and lne:logical-network-element/pdr:traffic-discard-stats:</dt>
          <dd>
            <t>Access to these data nodes would reveal information about the attacks to which an element is subject, misconfigurations, etc.</t>
          </dd>
          <dt/>
          <dd>
            <t>Also, an attacker who can inject packets can infer the efficiency of their attack by monitoring (the increase of) some discard counters (e.g., policy) and adjust their attack strategy accordingly.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URIs in the "ns" registry within the "IETF XML Registry" group <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang: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:yang: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:yang: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 modules in the "YANG
   Module Names" registry <xref target="RFC6020"/> within the "YANG Parameters" registry group:</t>
      <artwork><![CDATA[
   Name:  ietf-packet-discard-reporting-common
   Maintained by IANA?  N
   Namespace:
     urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting-common
   Prefix:  pdr-common
   Reference:  RFC XXXX

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

   Name:  ietf-packet-discard-reporting
   Maintained by IANA?  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-packet-discard-reporting
   Prefix:  pdr
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="IEEE802.1Q" target="https://doi.org/10.1109/IEEESTD.2022.10004498">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks--Bridges and Bridged Networks</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2022" month="December" day="22"/>
          </front>
          <seriesInfo name="IEEE" value="Std 802.1Q-2022"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2022.10004498"/>
        </reference>
        <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="RFC3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen"/>
            <author fullname="A. Viswanathan" initials="A." surname="Viswanathan"/>
            <author fullname="R. Callon" initials="R." surname="Callon"/>
            <date month="January" year="2001"/>
            <abstract>
              <t>This document specifies the architecture for Multiprotocol Label Switching (MPLS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </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="RFC791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC791"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="RFC826">
          <front>
            <title>An Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware</title>
            <author fullname="D. Plummer" initials="D." surname="Plummer"/>
            <date month="November" year="1982"/>
            <abstract>
              <t>The purpose of this RFC is to present a method of Converting Protocol Addresses (e.g., IP addresses) to Local Network Addresses (e.g., Ethernet addresses). This is an issue of general concern in the ARPA Internet Community at this time. The method proposed here is presented for your consideration and comment. This is not the specification of an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="37"/>
          <seriesInfo name="RFC" value="826"/>
          <seriesInfo name="DOI" value="10.17487/RFC826"/>
        </reference>
        <reference anchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <author fullname="H. Soliman" initials="H." surname="Soliman"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>This document specifies the Neighbor Discovery protocol for IP Version 6. IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </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="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC8660">
          <front>
            <title>Segment Routing with the MPLS Data Plane</title>
            <author fullname="A. Bashandy" initials="A." role="editor" surname="Bashandy"/>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source-routing paradigm. A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with an SR header. In the MPLS data plane, the SR header is instantiated through a label stack. This document specifies the forwarding behavior to allow instantiating SR over the MPLS data plane (SR-MPLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8660"/>
          <seriesInfo name="DOI" value="10.17487/RFC8660"/>
        </reference>
        <reference anchor="RFC8754">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8754"/>
          <seriesInfo name="DOI" value="10.17487/RFC8754"/>
        </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="RFC5462">
          <front>
            <title>Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field</title>
            <author fullname="L. Andersson" initials="L." surname="Andersson"/>
            <author fullname="R. Asati" initials="R." surname="Asati"/>
            <date month="February" year="2009"/>
            <abstract>
              <t>The early Multiprotocol Label Switching (MPLS) documents defined the form of the MPLS label stack entry. This includes a three-bit field called the "EXP field". The exact use of this field was not defined by these documents, except to state that it was to be "reserved for experimental use".</t>
              <t>Although the intended use of the EXP field was as a "Class of Service" (CoS) field, it was not named a CoS field by these early documents because the use of such a CoS field was not considered to be sufficiently defined. Today a number of standards documents define its usage as a CoS field.</t>
              <t>To avoid misunderstanding about how this field may be used, it has become increasingly necessary to rename this field. This document changes the name of the field to the "Traffic Class field" ("TC field"). In doing so, it also updates documents that define the current use of the EXP field. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5462"/>
          <seriesInfo name="DOI" value="10.17487/RFC5462"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC8349">
          <front>
            <title>A YANG Data Model for Routing Management (NMDA Version)</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="Y. Qu" initials="Y." surname="Qu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem. It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions. The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t>
              <t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8349"/>
          <seriesInfo name="DOI" value="10.17487/RFC8349"/>
        </reference>
        <reference anchor="RFC8530">
          <front>
            <title>YANG Model for Logical Network Elements</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a logical network element (LNE) YANG module that is compliant with the Network Management Datastore Architecture (NMDA). This module can be used to manage the logical resource partitioning that may be present on a network device. Examples of common industry terms for logical resource partitioning are logical systems or logical routers. The YANG model in this document conforms with NMDA as defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8530"/>
          <seriesInfo name="DOI" value="10.17487/RFC8530"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RED93" target="https://ieeexplore.ieee.org/document/251892">
          <front>
            <title>Random early detection gateways for congestion avoidance</title>
            <author initials="S." surname="Floyd">
              <organization/>
            </author>
            <author initials="V." surname="Jacobson">
              <organization/>
            </author>
            <date year="1993" month="August"/>
          </front>
        </reference>
        <reference anchor="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="October" 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="RFC8029">
          <front>
            <title>Detecting Multiprotocol Label Switched (MPLS) Data-Plane Failures</title>
            <author fullname="K. Kompella" initials="K." surname="Kompella"/>
            <author fullname="G. Swallow" initials="G." surname="Swallow"/>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
            <author fullname="N. Kumar" initials="N." surname="Kumar"/>
            <author fullname="S. Aldrin" initials="S." surname="Aldrin"/>
            <author fullname="M. Chen" initials="M." surname="Chen"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>This document describes a simple and efficient mechanism to detect data-plane failures in Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs). It defines a probe message called an "MPLS echo request" and a response message called an "MPLS echo reply" for returning the result of the probe. The MPLS echo request is intended to contain sufficient information to check correct operation of the data plane and to verify the data plane against the control plane, thereby localizing faults.</t>
              <t>This document obsoletes RFCs 4379, 6424, 6829, and 7537, and updates RFC 1122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8029"/>
          <seriesInfo name="DOI" value="10.17487/RFC8029"/>
        </reference>
        <reference anchor="RFC5085">
          <front>
            <title>Pseudowire Virtual Circuit Connectivity Verification (VCCV): A Control Channel for Pseudowires</title>
            <author fullname="T. Nadeau" initials="T." role="editor" surname="Nadeau"/>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro"/>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes Virtual Circuit Connectivity Verification (VCCV), which provides a control channel that is associated with a pseudowire (PW), as well as the corresponding operations and management functions (such as connectivity verification) to be used over that control channel. VCCV applies to all supported access circuit and transport types currently defined for PWs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5085"/>
          <seriesInfo name="DOI" value="10.17487/RFC5085"/>
        </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="RFC8986">
          <front>
            <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
              <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
              <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8986"/>
          <seriesInfo name="DOI" value="10.17487/RFC8986"/>
        </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="RFC8622">
          <front>
            <title>A Lower-Effort Per-Hop Behavior (LE PHB) for Differentiated Services</title>
            <author fullname="R. Bless" initials="R." surname="Bless"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document specifies properties and characteristics of a Lower- Effort Per-Hop Behavior (LE PHB). The primary objective of this LE PHB is to protect Best-Effort (BE) traffic (packets forwarded with the default PHB) from LE traffic in congestion situations, i.e., when resources become scarce, BE traffic has precedence over LE traffic and may preempt it. Alternatively, packets forwarded by the LE PHB can be associated with a scavenger service class, i.e., they scavenge otherwise-unused resources only. There are numerous uses for this PHB, e.g., for background traffic of low precedence, such as bulk data transfers with low priority in time, non-time-critical backups, larger software updates, web search engines while gathering information from web servers and so on. This document recommends a standard Differentiated Services Code Point (DSCP) value for the LE PHB.</t>
              <t>This specification obsoletes RFC 3662 and updates the DSCP recommended in RFCs 4594 and 8325 to use the DSCP assigned in this specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8622"/>
          <seriesInfo name="DOI" value="10.17487/RFC8622"/>
        </reference>
        <reference anchor="RFC3246">
          <front>
            <title>An Expedited Forwarding PHB (Per-Hop Behavior)</title>
            <author fullname="B. Davie" initials="B." surname="Davie"/>
            <author fullname="A. Charny" initials="A." surname="Charny"/>
            <author fullname="J.C.R. Bennet" initials="J.C.R." surname="Bennet"/>
            <author fullname="K. Benson" initials="K." surname="Benson"/>
            <author fullname="J.Y. Le Boudec" initials="J.Y." surname="Le Boudec"/>
            <author fullname="W. Courtney" initials="W." surname="Courtney"/>
            <author fullname="S. Davari" initials="S." surname="Davari"/>
            <author fullname="V. Firoiu" initials="V." surname="Firoiu"/>
            <author fullname="D. Stiliadis" initials="D." surname="Stiliadis"/>
            <date month="March" year="2002"/>
            <abstract>
              <t>This document defines a PHB (per-hop behavior) called Expedited Forwarding (EF). The PHB is a basic building block in the Differentiated Services architecture. EF is intended to provide a building block for low delay, low jitter and low loss services by ensuring that the EF aggregate is served at a certain configured rate. This document obsoletes RFC 2598. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3246"/>
          <seriesInfo name="DOI" value="10.17487/RFC3246"/>
        </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="RFC9907">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document provides guidelines for authors and reviewers of specifications containing YANG data models, including IANA-maintained YANG 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.</t>
              <t>This document obsoletes RFC 8407; it also updates RFC 8126 by providing additional guidelines for writing the IANA considerations for RFCs that specify IANA-maintained YANG modules.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="216"/>
          <seriesInfo name="RFC" value="9907"/>
          <seriesInfo name="DOI" value="10.17487/RFC9907"/>
        </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 1764?>

<section anchor="wheredropped">
      <name>Where Do Packets Get Dropped?</name>
      <t>Understanding where packets are discarded in a network device is essential for interpreting discard signals and determining appropriate mitigation actions.  <xref target="ex-drop"/> depicts an example of where and why packets may be discarded in a typical single-ASIC, shared-buffered type device. While actual device architectures vary between vendors and platforms, with some using multiple ASICs, distributed forwarding, or different buffering architectures, this example illustrates the common processing stages where packets may be dropped. The logical model for classifying and reporting discards remains consistent regardless of the underlying hardware architecture.</t>
      <t>Packets ingress on the left and egress on the right:</t>
      <figure anchor="ex-drop">
        <name>Example of Where Packets Get Dropped</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="568" viewBox="0 0 568 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 40,176 L 40,192" fill="none" stroke="black"/>
              <path d="M 40,224 L 40,240" fill="none" stroke="black"/>
              <path d="M 72,144 L 72,176" fill="none" stroke="black"/>
              <path d="M 104,176 L 104,240" fill="none" stroke="black"/>
              <path d="M 128,176 L 128,192" fill="none" stroke="black"/>
              <path d="M 128,224 L 128,240" fill="none" stroke="black"/>
              <path d="M 216,176 L 216,240" fill="none" stroke="black"/>
              <path d="M 232,32 L 232,96" fill="none" stroke="black"/>
              <path d="M 240,176 L 240,192" fill="none" stroke="black"/>
              <path d="M 240,224 L 240,240" fill="none" stroke="black"/>
              <path d="M 264,96 L 264,144" fill="none" stroke="black"/>
              <path d="M 296,96 L 296,144" fill="none" stroke="black"/>
              <path d="M 320,176 L 320,240" fill="none" stroke="black"/>
              <path d="M 328,32 L 328,96" fill="none" stroke="black"/>
              <path d="M 344,176 L 344,192" fill="none" stroke="black"/>
              <path d="M 344,224 L 344,240" fill="none" stroke="black"/>
              <path d="M 432,176 L 432,240" fill="none" stroke="black"/>
              <path d="M 456,176 L 456,192" fill="none" stroke="black"/>
              <path d="M 456,224 L 456,240" fill="none" stroke="black"/>
              <path d="M 488,144 L 488,176" fill="none" stroke="black"/>
              <path d="M 520,176 L 520,240" fill="none" stroke="black"/>
              <path d="M 232,32 L 328,32" fill="none" stroke="black"/>
              <path d="M 232,96 L 288,96" fill="none" stroke="black"/>
              <path d="M 304,96 L 328,96" fill="none" stroke="black"/>
              <path d="M 72,144 L 256,144" fill="none" stroke="black"/>
              <path d="M 272,144 L 488,144" fill="none" stroke="black"/>
              <path d="M 40,176 L 104,176" fill="none" stroke="black"/>
              <path d="M 128,176 L 216,176" fill="none" stroke="black"/>
              <path d="M 240,176 L 320,176" fill="none" stroke="black"/>
              <path d="M 344,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 456,176 L 520,176" fill="none" stroke="black"/>
              <path d="M 24,208 L 40,208" fill="none" stroke="black"/>
              <path d="M 104,208 L 128,208" fill="none" stroke="black"/>
              <path d="M 216,208 L 240,208" fill="none" stroke="black"/>
              <path d="M 320,208 L 344,208" fill="none" stroke="black"/>
              <path d="M 432,208 L 456,208" fill="none" stroke="black"/>
              <path d="M 520,208 L 536,208" fill="none" stroke="black"/>
              <path d="M 40,240 L 104,240" fill="none" stroke="black"/>
              <path d="M 128,240 L 216,240" fill="none" stroke="black"/>
              <path d="M 240,240 L 320,240" fill="none" stroke="black"/>
              <path d="M 344,240 L 432,240" fill="none" stroke="black"/>
              <path d="M 456,240 L 520,240" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="544,208 532,202.4 532,213.6" fill="black" transform="rotate(0,536,208)"/>
              <polygon class="arrowhead" points="464,208 452,202.4 452,213.6" fill="black" transform="rotate(0,456,208)"/>
              <polygon class="arrowhead" points="352,208 340,202.4 340,213.6" fill="black" transform="rotate(0,344,208)"/>
              <polygon class="arrowhead" points="304,96 292,90.4 292,101.6" fill="black" transform="rotate(270,296,96)"/>
              <polygon class="arrowhead" points="272,144 260,138.4 260,149.6" fill="black" transform="rotate(90,264,144)"/>
              <polygon class="arrowhead" points="248,208 236,202.4 236,213.6" fill="black" transform="rotate(0,240,208)"/>
              <polygon class="arrowhead" points="136,208 124,202.4 124,213.6" fill="black" transform="rotate(0,128,208)"/>
              <polygon class="arrowhead" points="48,208 36,202.4 36,213.6" fill="black" transform="rotate(0,40,208)"/>
              <g class="text">
                <text x="280" y="52">Control</text>
                <text x="280" y="68">Plane</text>
                <text x="220" y="116">from_cpu</text>
                <text x="332" y="116">to_cpu</text>
                <text x="12" y="212">Rx</text>
                <text x="72" y="212">PHY/MAC</text>
                <text x="168" y="212">Ingress</text>
                <text x="280" y="212">Buffers</text>
                <text x="380" y="212">Egress</text>
                <text x="488" y="212">PHY/MAC</text>
                <text x="556" y="212">Tx</text>
                <text x="172" y="228">Pipeline</text>
                <text x="388" y="228">Pipeline</text>
                <text x="40" y="276">Typically</text>
                <text x="128" y="276">Unintended:</text>
                <text x="76" y="292">errors/l2/rx</text>
                <text x="188" y="292">errors/l3/rx</text>
                <text x="288" y="292">no-buffer</text>
                <text x="404" y="292">errors/l3/tx</text>
                <text x="212" y="308">errors/l3/no-route</text>
                <text x="224" y="324">errors/l3/ttl-expired</text>
                <text x="200" y="340">errors/internal</text>
                <text x="40" y="356">Typically</text>
                <text x="120" 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="180" y="404">policy/rpf</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 |  |       |
    '-------'  '----------'  '---------'  '----------'  '-------'

Typically Unintended:
   errors/l2/rx  errors/l3/rx  no-buffer    errors/l3/tx
                 errors/l3/no-route
                 errors/l3/ttl-expired
                 errors/internal
Typically Intended:
                 policy/acl                 policy/acl
                 policy/policer             policy/policer
                 policy/rpf
                 policy/null-route

]]></artwork>
        </artset>
      </figure>
      <t>See <xref target="mapping"/> for examples of how these discard signals map to root causes and mitigation actions.</t>
    </section>
    <section anchor="mapping">
      <name>Example Signal-to-mitigation Action Mapping</name>
      <t>The effectiveness of automated mitigation depends on correctly mapping discard signals to root causes and appropriate actions.  Tables <xref format="counter" target="ex-table"/> and <xref format="counter" target="ex-table2"/> give example discard signal-to-mitigation action mappings based on the features described in <xref target="problem"/>.</t>
      <t>Tables <xref format="counter" target="ex-table"/> and <xref format="counter" target="ex-table2"/> are a single logical example split into two physical tables for readability. Rows with the same Case value correspond. Table <xref format="counter" target="ex-table"/> shows the observed discard signal, inferred cause, rate, and duration. Table <xref format="counter" target="ex-table2"/> shows the example operator determination of whether the discard is unintended and the corresponding example mitigation action.</t>
      <t>The "Unintended?" column is illustrative. It is not a normative property of the discard class. In practice, the same discard class can be intended or unintended depending on the operator's policy, expected baseline for that class, persistence of the signal, affected scope, and other operational context.</t>
      <table anchor="ex-table">
        <name>Example Signal-Cause-Mitigation Mapping (1)</name>
        <thead>
          <tr>
            <th align="left">Case</th>
            <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">E1</td>
            <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">T1</td>
            <td align="left">ingress/discards/errors/l3/ttl-expired</td>
            <td align="left">Traceroute</td>
            <td align="left">&lt;=Baseline</td>
            <td align="center"> </td>
          </tr>
          <tr>
            <td align="left">T2</td>
            <td align="left">ingress/discards/errors/l3/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">T3</td>
            <td align="left">ingress/discards/errors/l3/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">P1</td>
            <td align="left">.*/policy/.*</td>
            <td align="left">Policy</td>
            <td align="left"> </td>
            <td align="center"> </td>
          </tr>
          <tr>
            <td align="left">R1</td>
            <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">R2</td>
            <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">R3</td>
            <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">I1</td>
            <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">B1</td>
            <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">B2</td>
            <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>
          <tr>
            <td align="left">A1</td>
            <td align="left">egress/discards/no-buffer/../discard-type[type="aqm"]/</td>
            <td align="left">AQM drop</td>
            <td align="left">&lt;=SLA</td>
            <td align="center"> </td>
          </tr>
          <tr>
            <td align="left">A2</td>
            <td align="left">egress/discards/no-buffer/../discard-type[type="aqm"]/</td>
            <td align="left">AQM drop</td>
            <td align="left">&gt;SLA</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">Case</th>
            <th align="left">DISCARD-CLASS</th>
            <th align="center">Unintended?</th>
            <th align="left">Possible actions</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">E1</td>
            <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">T1</td>
            <td align="left">ingress/discards/errors/l3/ttl-expired</td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">T2</td>
            <td align="left">ingress/discards/errors/l3/ttl-expired</td>
            <td align="center">Y</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">T3</td>
            <td align="left">ingress/discards/errors/l3/ttl-expired</td>
            <td align="center">Y</td>
            <td align="left">Roll back change</td>
          </tr>
          <tr>
            <td align="left">P1</td>
            <td align="left">.*/policy/.*</td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">R1</td>
            <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">R2</td>
            <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">R3</td>
            <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">I1</td>
            <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">B1</td>
            <td align="left">egress/discards/no-buffer</td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">B2</td>
            <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>
          <tr>
            <td align="left">A1</td>
            <td align="left">egress/discards/no-buffer/../discard-type[type="aqm"]/</td>
            <td align="center">N</td>
            <td align="left">No action</td>
          </tr>
          <tr>
            <td align="left">A2</td>
            <td align="left">egress/discards/no-buffer/../discard-type[type="aqm"]/</td>
            <td align="center">Y</td>
            <td align="left">Move traffic or add capacity</td>
          </tr>
        </tbody>
      </table>
      <t>The 'Baseline' in the 'DISCARD-RATE' column is both DISCARD-CLASS and network dependent. A rate less than or equal to baseline generally represents expected behaviour for that operator and network context. A rate greater than baseline indicates an anomaly candidate.</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
    |     |  |  |  +-- invalid-packet?   yang:counter64
    |     |  |  +-- mtu-exceeded
    |     |  |  |  +-- packets?
    |     |  |  |  |       yang:counter64
    |     |  |  |  +-- fragmentation-not-permitted?
    |     |  |  |  |       yang:counter64
    |     |  |  |  +-- fragmentation-permitted-not-performed?
    |     |  |  |          yang:counter64
    |     |  |  +-- ttl-expired?                   yang:counter64
    |     |  |  +-- no-route?                      yang:counter64
    |     |  |  +-- neighbor-resolution-failure?   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
    |     |     +-- dos?          yang:counter64
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              +-- id              string
    |              +-- packets?        yang:counter64
    |              +-- bytes?          yang:counter64
    |              +-- discard-type* [type]
    |                 +-- type       identityref
    |                 +-- 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
    |     |  |  |  +-- invalid-packet?   yang:counter64
    |     |  |  +-- mtu-exceeded
    |     |  |  |  +-- packets?
    |     |  |  |  |       yang:counter64
    |     |  |  |  +-- fragmentation-not-permitted?
    |     |  |  |  |       yang:counter64
    |     |  |  |  +-- fragmentation-permitted-not-performed?
    |     |  |  |          yang:counter64
    |     |  |  +-- ttl-expired?                   yang:counter64
    |     |  |  +-- no-route?                      yang:counter64
    |     |  |  +-- neighbor-resolution-failure?   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
    |     |     +-- dos?          yang:counter64
    |     +-- no-buffer
    |        +-- qos!
    |           +-- class* [id]
    |              +-- id              string
    |              +-- packets?        yang:counter64
    |              +-- bytes?          yang:counter64
    |              +-- discard-type* [type]
    |                 +-- type       identityref
    |                 +-- 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
          |  |  |  +-- invalid-packet?   yang:counter64
          |  |  +-- mtu-exceeded
          |  |  |  +-- packets?
          |  |  |  |       yang:counter64
          |  |  |  +-- fragmentation-not-permitted?
          |  |  |  |       yang:counter64
          |  |  |  +-- fragmentation-permitted-not-performed?
          |  |  |          yang:counter64
          |  |  +-- ttl-expired?                   yang:counter64
          |  |  +-- no-route?                      yang:counter64
          |  |  +-- neighbor-resolution-failure?   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
          |     +-- dos?          yang:counter64
          +-- no-buffer
             +-- qos!
                +-- class* [id]
                   +-- id              string
                   +-- packets?        yang:counter64
                   +-- bytes?          yang:counter64
                   +-- discard-type* [type]
                      +-- type       identityref
                      +-- 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 traffic-discard-stats {pdr-common:control-plane-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  +--ro direction    identityref
       |  +--ro packets?     yang:counter64
       |  +--ro bytes?       yang:counter64
       +--ro discards* [direction]
          +--ro direction    identityref
          +--ro packets?     yang:counter64
          +--ro bytes?       yang:counter64
          +--ro policy
             +--ro packets?   yang:counter64
  augment /if:interfaces/if:interface/if:statistics:
    +--ro traffic-discard-stats {pdr-common:interface-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic* [direction]
       |  +--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]
          +--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 invalid-packet?   yang:counter64
          |  |  +--ro mtu-exceeded
          |  |  |  +--ro packets?
          |  |  |  |       yang:counter64
          |  |  |  +--ro fragmentation-not-permitted?
          |  |  |  |       yang:counter64
          |  |  |  +--ro fragmentation-permitted-not-performed?
          |  |  |          yang:counter64
          |  |  +--ro ttl-expired?                   yang:counter64
          |  |  +--ro no-route?                      yang:counter64
          |  |  +--ro neighbor-resolution-failure?   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 dos?          yang:counter64
          +--ro no-buffer
             +--ro qos!
                +--ro class* [id]
                   +--ro id              string
                   +--ro packets?        yang:counter64
                   +--ro bytes?          yang:counter64
                   +--ro discard-type* [type]
                      +--ro type       identityref
                      +--ro packets?   yang:counter64
                      +--ro bytes?     yang:counter64
  augment /lne:logical-network-elements/lne:logical-network-element:
    +--ro traffic-discard-stats {pdr-common:device-stats}?
       +--ro discard-order-capability*   identityref
       +--ro traffic
       |  +--ro l2
       |  |  +--ro frames?   yang:counter64
       |  |  +--ro bytes?    yang:counter64
       |  +--ro l3
       |  |  +--ro address-family-stat* [address-family]
       |  |     +--ro address-family    identityref
       |  |     +--ro packets?          yang:counter64
       |  |     +--ro bytes?            yang:counter64
       |  |     +--ro unicast
       |  |     |  +--ro packets?   yang:counter64
       |  |     |  +--ro bytes?     yang:counter64
       |  |     +--ro multicast
       |  |     |  +--ro packets?   yang:counter64
       |  |     |  +--ro bytes?     yang:counter64
       |  |     +--ro broadcast
       |  |        +--ro packets?   yang:counter64
       |  |        +--ro bytes?     yang:counter64
       |  +--ro qos!
       |     +--ro class* [id]
       |        +--ro id         string
       |        +--ro packets?   yang:counter64
       |        +--ro bytes?     yang:counter64
       +--ro discards
          +--ro l2
          |  +--ro frames?   yang:counter64
          |  +--ro bytes?    yang:counter64
          +--ro l3
          |  +--ro address-family-stat* [address-family]
          |     +--ro address-family    identityref
          |     +--ro packets?          yang:counter64
          |     +--ro bytes?            yang:counter64
          |     +--ro unicast
          |     |  +--ro packets?   yang:counter64
          |     |  +--ro bytes?     yang:counter64
          |     +--ro multicast
          |     |  +--ro packets?   yang:counter64
          |     |  +--ro bytes?     yang:counter64
          |     +--ro broadcast
          |        +--ro packets?   yang:counter64
          |        +--ro bytes?     yang:counter64
          +--ro errors
          |  +--ro l2
          |  |  +--ro rx
          |  |  |  +--ro frames?          yang:counter64
          |  |  |  +--ro crc-error?       yang:counter64
          |  |  |  +--ro invalid-mac?     yang:counter64
          |  |  |  +--ro invalid-vlan?    yang:counter64
          |  |  |  +--ro invalid-frame?   yang:counter64
          |  |  +--ro tx
          |  |     +--ro frames?   yang:counter64
          |  +--ro l3
          |  |  +--ro rx
          |  |  |  +--ro packets?          yang:counter64
          |  |  |  +--ro checksum-error?   yang:counter64
          |  |  |  +--ro invalid-packet?   yang:counter64
          |  |  +--ro mtu-exceeded
          |  |  |  +--ro packets?
          |  |  |  |       yang:counter64
          |  |  |  +--ro fragmentation-not-permitted?
          |  |  |  |       yang:counter64
          |  |  |  +--ro fragmentation-permitted-not-performed?
          |  |  |          yang:counter64
          |  |  +--ro ttl-expired?                   yang:counter64
          |  |  +--ro no-route?                      yang:counter64
          |  |  +--ro neighbor-resolution-failure?   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 dos?          yang:counter64
          +--ro no-buffer
             +--ro qos!
                +--ro class* [id]
                   +--ro id              string
                   +--ro packets?        yang:counter64
                   +--ro bytes?          yang:counter64
                   +--ro discard-type* [type]
                      +--ro type       identityref
                      +--ro packets?   yang:counter64
                      +--ro bytes?     yang:counter64
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The content of this document has benefitted from feedback from JR Rivers, Ronan Waide, Chris DeBruin, and Marcos Sanz.</t>
      <t>Thanks to Benoît Claise, Joe Clarke, Tom Petch, Mahesh Jethanandani, Paul Aitken, and Randy Bush for the review and comments.</t>
      <t>Thanks to Ladislav Lhotka for the YANGDOCTORS reviews, Sergio Belotti for the OPSDIR review, Satoru Matsushima for the INTDIR review,
Derrell Piper for the SECDIR review, Roni Even for the GENART review, and Michael Tüxen for the TSVART review. Special thanks to
Carlos Pignataro for the detailed INTDIR review and suggestions that enhanced this specification.</t>
      <t>Thanks to Diego Lopez for shepherding the document and Mahesh Jethanandani for the AD review.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Nadav Chachmon">
        <organization>Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street>170 West Tasman Dr.</street>
            <city>San Jose</city>
            <region>CA</region>
            <code>95134</code>
            <country>US</country>
          </postal>
          <email>nchachmo@cisco.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
2pTrq62ehx//jIWQamr1GaLpYUiGB2h+twTAZxSIZUv11b3BLLN2Hir3PVTu
+9kr9yVeRA0/+f1Que+hct9D5b7oX7Jy3zk+mFxScSINLhcFyu8OV78Y28YP
UTS+n1vHPRz+Qa+nVz0UdUYWyOJxTxfN21j+XO1HGAVNrpuGeSpmStkd0Qhu
qYShmY7MGlTDlgPvlmqgid26hkw0HDrC67IkU6lFyC/XO3WrS3ZQUpPIuHY9
CSp9hwMJV7Nvj9WbOXWIquCaaiuuQLNfvNHHckvjkZ7aaSSPT7AV3Sctv7DZ
6ExV52Rs8N/J05vLMewWrlzhCOLx2AnX+rwth3epbenwUbV5cr4Ffd59heRO
ag2ZjUD3J+e2yF+uHzysf/gLbEFdbtF5bZExwLqBz7LMK4aYp1hQOqPGKmtW
WJLJvCSi9vq7eEC4ZvoTqnBvEihiLMATeWP0OHZ7Uz/oJzVktuy7HfQeGz5W
RLM579DhfSTonHPOOAoUxl7F5lmbTYeTOItiTrkl76YZJJX4fumJR3odkWO7
SDaXQsucJ+H0K1nPTfn5LJSIde12y713FiUj9tMNceXQgdj3QaFLWEs/xAPC
I8vNkZnph+/u2YWi97prjyP8zjfeXd/bzPfI8GEB5thUvyBkl3kTBaaoC+2g
EGdqC1N65TjH9g0U5yFQmTVOJxEH+Xt0kstT9cjeDPBugVDKtxUkw26PJe9i
cM8lcdMs4tQm2tIZayv0olEu+bcAOcbyFXqvCMnyZp6hAOdEWquaXTpZKORO
6DRvLAxgHWFo4LKI1xZGlHmHWj9hQ4o/1bRxlsvD2J0EwuEEf85lrHkd0DBI
no8FAKKAMuUYqfYNWCR/WEQ+TW8T5ib0TuzIvhNbfhqB9/RwuYsE9TZNINtZ
cSibj7/6ipCO8/Xt2eZ29IgKvoabpeY+Ss8uxYmXK13ei8wwiO5Mz8/2hsE8
4Jcdf6OqL42XZ66+e6/Kb/h6k+S1HZTuYBAWja1akXt/4R82bmM9ZJRUup8D
EXrkJa+3uw1XvoSNbVa9hQ1tqq9h8+c1ry+b173X3rN2a1PVtVVoRFXX1tym
4bXtmhkaHreumae5Zfs3t7O06dXtTwKtYarmt7dL21/66lPe33bOSMsXuJ0j
HSfhoQi6ngg6U1Rv2ZfrHfHGp+c/8Xz/a5zUhzP3eUBrmOpf48zVvXo/WvLq
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
3KoN0GtAXHFt2I/tYbQrW3UY6/aqsaV/GG3XtQ6jh+JWh9Hr0fYwep3aHka1
5DCqdQ9DucPKrVVLD+PPPH/lMKp16brcoc38JdeGGaWOvN97VrX7cYX25WcZ
nLZbG9dGTbc2ro0l3Za5NpZ0W+baKGOqqGJKrcslysd/5Sasd16dXWjj2liC
mKWujTL4FdfGkoXUfa/pvB2IK10bn3H0pa6NUu+WG/Rxro3yCOu7NiojrO3a
KI+wvmujaYT2ro0KJhsPZUsGW3FtmG+q46wEynRZ6dpQtrF1bXhANfDrdrxG
axbLXBv+bPstFt9i6StdG5UZKhUYfi4xrTml69oofa8aNdlSK7VCpa1vvtbi
bLf1NJGVro1yh5WujXKHla4NC7rv2vC+co0I74t67HtNlrg2alq3PtFerxau
jZpeja6N+uZLXBsr17IaoOpKSn38B2gpwcupKOxkdo0+ObPr5NMyu9znyNu9
Ru4hpLmdyQTL0qYXilvlhJlBmp6F/039HnszV5MXlOZbNPKSkBq34aqULbft
qqSt8rpqEiz8VsthVGvAqNaA0Y5bFq91M1bGMKTV9pX09cimPi/t10QyNZ5J
+LS1b9LbpBUUV+OfzNKP91BW+jYv1e3zMV7KMim277bcU7mCOBu6rOUthPar
/JU/DxSrvJZrQVG3LSuor9Z3CZ+v8F5maTv/ZUvw14L9i/DfGu9niwOvand+
BUuu8YGue+BLm7W2H3SNA1/q9jG+0OqBV+sftWqXteyAugP/i0CxyjO6FhR1
27KC+hr8ozVHwHzR6J7zToj8tHIzIYP5KD8p8p2P8pQ6HdfzlTod1/CWokLS
5JpZk6/U+0xXbMtH+k1xXz7Oc+qgaR3fKR7L1d5TZ0Gf7OFk7H85D2pl/C/j
Q0UC+1QvapZ+uh8Vx/hUT6pDOx/tS3XG+Ghv6opD296jSsA0+1Rrzmcr0bGO
X7XO9FvN6dfxrqLe0da/WsPGGlDRChHrelk1Mhr9rF9a9FvuutLbWq97l9qZ
put5XNddpttxXT1nXb8rCrQ1Pa+o37f2vTKza/C+lgyh0lerPbD+TtDPUh/s
Ohyg1O+j/LCOU6WdJxZZ4Zq+2JbEtXRFzY6oJe8Z5cu+XM8x1RjA9oleqQf/
0oN/6ZeB4sG/tDbsvn/pwVP04Cn6ZaB48BQ9eIoePEVOtwdPUWmatoh78BTV
j/HgKXrwFFVnefAUPXiKHjxF/1qeIj9yTx0N3ybpbRyO+G16fHk5KH30ofPu
MFnMBvj85e83xkGch7rGvTyYzk8LRTmQznBBXqhpkKtBmIRjktL0/KAagzpC
7wbQX3+6VJfRTZjlXXWZJkGi/hIASrrqeJrBQCfhi2wRJfwq0XmQDdNcXQXJ
P+nlpiDhd7NfhEn6X/+rUMdxEOHjU39KQ/w9ewu/X8MUF2ExnHah+zTMp+pP
IRauh/GCJOqqi2ARq6OoeBvKJJfwn3v1YgEtuSw+viJ8E4W38jL8jN9Yd+d/
GQABxMGNejlNi7eB6YdhjSevj69fX17JGLDIqzCbRAhznBZFZNq+vrg6ObuU
ZtAKq/AvAOQiB0iimR307NW107Bzgs9uxTG9FJiZRlenx+5ogNhInd6EiWnw
x9NXR5fXpgFhNxpOAwza/K//fee0vL76s20pb73jMwN69Z3jIIthVy7wRYQi
QEEnPUdhAZoK7LoHMs2VLybyFk3ODw+ECYw3xGdVkXxy/aC8eaRLo/okCieA
8HQe/pPmyafhfBrSO6g8pyY8ppfKhhvgjk70kjr/F2qv4hBhkwEA

-->

</rfc>
