<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-evans-opsawg-ipfix-discard-class-ie-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="IE for Flow Discard Classification">Information Element for Flow Discard Classification</title>
    <seriesInfo name="Internet-Draft" value="draft-evans-opsawg-ipfix-discard-class-ie-01"/>
    <author initials="J." surname="Evans" fullname="John Evans">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>1 Principal Place, Worship Street</street>
          <city>London</city>
          <code>EC2A 2FA</code>
          <country>UK</country>
        </postal>
        <email>jevanamz@amazon.co.uk</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>410 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>US</country>
        </postal>
        <email>opyl@amazon.com</email>
      </address>
    </author>
    <author initials="K." surname="Cheaito" fullname="Karim Cheaito">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>410 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>US</country>
        </postal>
        <email>kcheaito@amazon.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="18"/>
    <area>Operations and Management Area</area>
    <workgroup>OPSAWG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 51?>

<t>This document defines an IPFIX Information Element for classifying flow-level discards that aligns with the information model defined in <xref target="I-D.ietf-opsawg-discardmodel"/>. The flowDiscardClass Information Element provides consistent classification of packet discards across IPFIX implementations, enabling correlation between device, interface and control-plane discards and the impacted flows.</t>
    </abstract>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>For network operators, understanding both where and why packet loss occurs within a network is essential for effective operation. 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.</t>
      <t><xref target="I-D.ietf-opsawg-discardmodel"/> addresses this need by defining an information model that provides precise classification of packet loss, enabling accurate automated mitigation. While its YANG data model implementation provides device, interface and control-plane discards, effective automated triage often requires understanding which specific flows are impacted. For example, when mitigating congestion, operators may need to identify and trace the sources of elephant flows. This requires the ability to correlate device and interface-level discard classes with the specific flows being dropped.</t>
      <t>Currently, <xref target="RFC7270"/> defines the forwardingStatus Information Element for reporting packet forwarding outcomes in IPFIX, including various reasons for packet drops. The defined drop reason codes lack the granularity and clarity needed for automated root cause analysis and impact mitigation, however. For instance, the "For us" reason code provides insufficient context to determine appropriate mitigation actions.</t>
      <t>This document addresses these limitations by introducing a new Information Element, flowDiscardClass, to provide a consistent classification scheme for packet discards across IPFIX implementations. This new element aligns with the classification scheme defined in <xref target="I-D.ietf-opsawg-discardmodel"/> and enables:</t>
      <ol spacing="normal" type="1"><li>
          <t>Precise detection of unintended packet loss through clear distinction between intended and unintended discards</t>
        </li>
        <li>
          <t>Accurate root cause analysis through detailed classification of discard reasons</t>
        </li>
        <li>
          <t>Automated selection of mitigation actions based on discard type, rate, and duration</t>
        </li>
        <li>
          <t>Consistent reporting across vendor implementations in both YANG and IPFIX data models</t>
        </li>
      </ol>
      <t>By providing this mapping between YANG and IPFIX implementations, this document enables operators to correlate device-level statistics with flow-level impacts, facilitating more effective automated network operations.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>A packet discard accounts for any instance where a packet is dropped by a device, regardless of whether the discard was intentional or unintentional.</t>
      <t>Intended discards are packets dropped due to deliberate network policies or configurations designed to enforce security or quality of service. For example, packets dropped because they match an Access Control List (ACL) denying certain traffic types.</t>
      <t>Unintended discards are packets that were dropped, which the network operator otherwise intended to deliver, i.e. which indicates an error state.  There are many possible reasons for unintended packet loss, including: erroring links may corrupt packets in transit; incorrect routing tables may result in packets being dropped because they do not match a valid route; configuration errors may result in a valid packet incorrectly matching an ACL and being dropped.</t>
      <t>Device discard counters do not by themselves establish operator intent. Discards reported under policy (e.g., ACL/policer) indicate only that traffic matched a configured rule; such discards may still be unintended if the configuration is in error. Determining intent for policy discards requires external context (e.g., configuration validation and change history) which is out of scope for this specification.</t>
    </section>
    <section anchor="informationelement">
      <name>Information Element</name>
      <t>This Information Element has been specified in accordance with the guidelines in <xref target="RFC7013"/>.</t>
      <section anchor="rationale">
        <name>Design Rationale</name>
        <t>The mapping between <xref target="I-D.ietf-opsawg-discardmodel"/> and the IPFIX flowDiscardClass Information Element follows these principles, maintaining consistency with the YANG model while allowing self-contained decoding from a single IE:</t>
        <ol spacing="normal" type="1"><li>
            <t>Scope. The flowDiscardClass Information Element is specifically for reporting flow-level discard reasons, and therefore only represents the flow subtree from <xref target="I-D.ietf-opsawg-discardmodel"/>. The component is implicitly "flow" and the type is implicitly "discards"; interface, device, and control-plane components are out of scope for this IE.</t>
          </li>
          <li>
            <t>Hierarchy preserved. The enumeration mirrors the model: both leaves (specific reasons) and structural aggregates are assigned values so collectors can perform coarse or fine roll-ups. For L3, structural aggregates include address-family and cast (v4/v6, unicast/multicast).</t>
          </li>
          <li>
            <t>Self-contained decoding. The value alone carries the discard class. Exporters and collectors can still use other IEs (e.g., flowDirection, ipVersion, addresses, ipDiffServCodePoint) for correlation, but they are not required to decode the class.</t>
          </li>
          <li>
            <t>Specificity preference.  The scheme encourages reporting the most-specific known class when available; aggregate values provide a fallback when only a
  broader category is known.</t>
          </li>
          <li>
            <t>Implementation-friendly ordering. Codes are assigned in preorder (depth-first) tree order to reflect the hierarchy and simplify range/roll-up handling in implementations.</t>
          </li>
        </ol>
      </section>
      <section anchor="flowDiscardClass-definition">
        <name>flowDiscardClass Definition</name>
        <t>Name: flowDiscardClass</t>
        <t>Description: Classifies the reason a packet was discarded in a flow, using the hierarchical classification scheme defined in <xref target="I-D.ietf-opsawg-discardmodel"/>.</t>
        <t>Abstract Data Type: unsigned8</t>
        <t>Data Type Semantics: identifier</t>
        <t>Units: none</t>
        <t>Range: 0..38 (values from <xref target="flowDiscardClass-table"/>; other values are unassigned and <bcp14>MUST</bcp14> be treated as unknown)</t>
        <t>Reversibility: reversible (value does not change under flow reversal as per <xref target="RFC5103"/>)</t>
        <t>Status: current</t>
        <t>ElementId: TBD</t>
        <t>References: <xref target="I-D.ietf-opsawg-discardmodel"/></t>
      </section>
      <section anchor="flowDiscardClass-values">
        <name>flowDiscardClass Values</name>
        <t><xref target="flowDiscardClass-table"/> defines the values for the flowDiscardClass Information Element mapped from the corresponding <xref target="I-D.ietf-opsawg-discardmodel"/> Discard Class.  The code points for flowDiscardClass are maintained by IANA in the "flowDiscardClass Values" subregistry of the IPFIX registry.  Future additions or changes are managed via Expert Review as described in <xref target="iana"/>.</t>
        <table anchor="flowDiscardClass-table">
          <name>Flow discard classification values and corresponding discard classes</name>
          <thead>
            <tr>
              <th align="left">Discard Class</th>
              <th align="left">flowDiscardClass Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">l2</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">l3</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">l3/v4</td>
              <td align="left">2</td>
            </tr>
            <tr>
              <td align="left">l3/v4/unicast</td>
              <td align="left">3</td>
            </tr>
            <tr>
              <td align="left">l3/v4/multicast</td>
              <td align="left">4</td>
            </tr>
            <tr>
              <td align="left">l3/v6</td>
              <td align="left">5</td>
            </tr>
            <tr>
              <td align="left">l3/v6/unicast</td>
              <td align="left">6</td>
            </tr>
            <tr>
              <td align="left">l3/v6/multicast</td>
              <td align="left">7</td>
            </tr>
            <tr>
              <td align="left">errors</td>
              <td align="left">8</td>
            </tr>
            <tr>
              <td align="left">errors/l2</td>
              <td align="left">9</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx</td>
              <td align="left">10</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/crc-error</td>
              <td align="left">11</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-mac</td>
              <td align="left">12</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-vlan</td>
              <td align="left">13</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-frame</td>
              <td align="left">14</td>
            </tr>
            <tr>
              <td align="left">errors/l2/tx</td>
              <td align="left">15</td>
            </tr>
            <tr>
              <td align="left">errors/l3</td>
              <td align="left">16</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx</td>
              <td align="left">17</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/checksum-error</td>
              <td align="left">18</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/mtu-exceeded</td>
              <td align="left">19</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/invalid-packet</td>
              <td align="left">20</td>
            </tr>
            <tr>
              <td align="left">errors/l3/ttl-expired</td>
              <td align="left">21</td>
            </tr>
            <tr>
              <td align="left">errors/l3/no-route</td>
              <td align="left">22</td>
            </tr>
            <tr>
              <td align="left">errors/l3/invalid-sid</td>
              <td align="left">23</td>
            </tr>
            <tr>
              <td align="left">errors/l3/invalid-label</td>
              <td align="left">24</td>
            </tr>
            <tr>
              <td align="left">errors/l3/tx</td>
              <td align="left">25</td>
            </tr>
            <tr>
              <td align="left">errors/internal</td>
              <td align="left">26</td>
            </tr>
            <tr>
              <td align="left">errors/internal/parity-error</td>
              <td align="left">27</td>
            </tr>
            <tr>
              <td align="left">policy</td>
              <td align="left">28</td>
            </tr>
            <tr>
              <td align="left">policy/l2</td>
              <td align="left">29</td>
            </tr>
            <tr>
              <td align="left">policy/l2/acl</td>
              <td align="left">30</td>
            </tr>
            <tr>
              <td align="left">policy/l3</td>
              <td align="left">31</td>
            </tr>
            <tr>
              <td align="left">policy/l3/acl</td>
              <td align="left">32</td>
            </tr>
            <tr>
              <td align="left">policy/l3/policer</td>
              <td align="left">33</td>
            </tr>
            <tr>
              <td align="left">policy/l3/null-route</td>
              <td align="left">34</td>
            </tr>
            <tr>
              <td align="left">policy/l3/rpf</td>
              <td align="left">35</td>
            </tr>
            <tr>
              <td align="left">policy/l3/ddos</td>
              <td align="left">36</td>
            </tr>
            <tr>
              <td align="left">no-buffer</td>
              <td align="left">37</td>
            </tr>
            <tr>
              <td align="left">no-buffer/class</td>
              <td align="left">38</td>
            </tr>
          </tbody>
        </table>
        <t>Codes are assigned in preorder (depth-first) tree order to reflect the model’s hierarchy.</t>
        <t>no-buffer/class conveys per-QoS class congestion loss; the specific class (e.g., DSCP/class index, or L2 PCP) <bcp14>SHOULD</bcp14> be exported via the appropriate companion IE in the same record.</t>
      </section>
      <section anchor="implreq">
        <name>Implementation Requirements</name>
        <t>### Semantics and Scope {#impl-semantics}</t>
        <ol spacing="normal" type="1"><li>
            <t>Scope of this IE. flowDiscardClass <bcp14>MUST</bcp14> be used only to report flow-level discard classification under flow/discards from <xref target="I-D.ietf-opsawg-discardmodel"/>. It <bcp14>MUST NOT</bcp14> be used for interface, device, or control-plane discard counters.</t>
          </li>
          <li>
            <t>Enumeration. Exporters <bcp14>MUST</bcp14> encode values only from the IANA “flowDiscardClass Values” subregistry for this IE. Collectors <bcp14>MUST</bcp14> accept both aggregate and leaf values and interpret aggregates as semantic supersets of their descendants.</t>
          </li>
          <li>
            <t>Unknown/Unassigned values. Collectors receiving an unknown or unassigned value <bcp14>MUST</bcp14> treat it as unknown and <bcp14>MUST NOT</bcp14> remap it to another code. Exporters <bcp14>MUST NOT</bcp14> transmit unassigned values.</t>
          </li>
          <li>
            <t>Reversibility. The value of flowDiscardClass <bcp14>MUST NOT</bcp14> change under biflow reversal as defined by <xref target="RFC5103"/>.</t>
          </li>
        </ol>
        <section anchor="impl-exporter">
          <name>Exporter Requirements</name>
          <ol spacing="normal" type="1"><li>
              <t>Cardinality. A Flow Record <bcp14>MUST</bcp14> contain at most one instance of flowDiscardClass.</t>
            </li>
            <li>
              <t>Multiplicity. When multiple discard reasons apply to the same flow interval, exporters <bcp14>MUST</bcp14> either (a) export multiple Flow Records (one per reason) or (b) encode a basicList of flowDiscardClass values using IPFIX Structured Data per <xref target="RFC6313"/>/<xref target="RFC7013"/>.</t>
            </li>
            <li>
              <t>Specificity. Exporters <bcp14>SHOULD</bcp14> report the most-specific known class (a leaf). If the specific leaf is unknown, an appropriate parent/aggregate <bcp14>MAY</bcp14> be used.</t>
            </li>
            <li>
              <t>Interval semantics. When exported on an interval Flow Record, the presence of flowDiscardClass indicates that at least one packet in the interval matched that class. Exporters <bcp14>SHOULD</bcp14> include droppedPacketDeltaCount and/or droppedOctetDeltaCount in the same record to quantify the affected volume.</t>
            </li>
            <li>
              <t>Congestive loss traffic class (no-buffer/class).
              </t>
              <ul spacing="normal">
                <li>
                  <t>If flowDiscardClass equals no-buffer/class, the traffic-class identifier used by the queueing system <bcp14>MUST</bcp14> be present in the same record, carried in exactly one suitable IE (e.g., ipDiffServCodePoint or ipClassOfService for L3, or dot1qPriority for L2).</t>
                </li>
                <li>
                  <t>If classification occurs after remarking, exporters <bcp14>MUST</bcp14> use the corresponding post-class IE where available, or provide a device queue-ID→class mapping via IPFIX Options data.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Context (recommended). To aid correlation with interface/device/control-plane counters, exporters <bcp14>SHOULD</bcp14> include time bounds (flowStart/flowEnd or an observation-time IE), ingressInterface/egressInterface as applicable, and observationPointId when multiple pipeline stages/taps exist.</t>
            </li>
          </ol>
        </section>
        <section anchor="impl-collector">
          <name>Collector Requirements</name>
          <ol spacing="normal" type="1"><li>
              <t>Lists and duplicates. Collectors <bcp14>MUST</bcp14> be able to parse a basicList of flowDiscardClass values per <xref target="RFC6313"/>. If multiple Flow Records carry different flowDiscardClass values for the same flow keys/time bucket, collectors <bcp14>MAY</bcp14> treat them as separate reasons for analysis.</t>
            </li>
            <li>
              <t>Aggregate handling. When a parent/aggregate class is received, collectors <bcp14>MUST</bcp14> treat it as a coarse classification that may encompass multiple leaves.</t>
            </li>
            <li>
              <t>Congestive loss traffic class. For no-buffer/class, when a traffic-class IE is present, collectors <bcp14>MUST</bcp14> use it to align with per-class counters; if absent, collectors <bcp14>MAY</bcp14> apply local device mappings if available.</t>
            </li>
            <li>
              <t>Unknown values. Collectors <bcp14>MUST</bcp14> handle unknown/unassigned values gracefully (e.g., categorize as “unknown”) without rejecting the record.</t>
            </li>
          </ol>
        </section>
        <section anchor="impl-interop">
          <name>Interoperability with Existing IPFIX IEs</name>
          <ol spacing="normal" type="1"><li>
              <t>Exporters and collectors <bcp14>MAY</bcp14> also use existing IEs (e.g., flowDirection, ipVersion, addresses, ipDiffServCodePoint) for filtering, correlation, or redundancy.</t>
            </li>
            <li>
              <t>flowDiscardClass alone <bcp14>SHOULD</bcp14> be sufficient to recover the discard classification (apart from the traffic-class identity required for no-buffer/class above).</t>
            </li>
            <li>
              <t>Exporters <bcp14>MAY</bcp14> continue to export forwardingStatus (<xref target="RFC7270"/>) in parallel. When both are present, flowDiscardClass <bcp14>SHOULD</bcp14> be considered authoritative for discard classification.</t>
            </li>
            <li>
              <t>When flow sampling is active, the presence of flowDiscardClass indicates at least one sampled packet matched that class.</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This document defines a new Information Element for flow-level discard classification to align with the information model defined in <xref target="I-D.ietf-opsawg-discardmodel"/>.  As such, there are no  security issues related to this document, which are additional to those discussed in <xref target="RFC7011"/>, <xref target="RFC7012"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to make the following changes under the IP Flow Information Export (IPFIX) Information Elements registry.</t>
      <section anchor="new-ipfix-information-element-flowdiscardclass">
        <name>New IPFIX Information Element: flowDiscardClass</name>
        <t>IANA is requested to register a new Information Element as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Name: flowDiscardClass</t>
          </li>
          <li>
            <t>ElementId: TBD (to be assigned by IANA)</t>
          </li>
          <li>
            <t>Description: Classifies the reason a packet was discarded in a flow, using the hierarchical classification scheme defined in <xref target="I-D.ietf-opsawg-discardmodel"/>.</t>
          </li>
          <li>
            <t>Abstract Data Type: unsigned8</t>
          </li>
          <li>
            <t>Data Type Semantics: identifier</t>
          </li>
          <li>
            <t>Units: none</t>
          </li>
          <li>
            <t>Range: 0..38 (values are listed in the “flowDiscardClass Values” subregistry created below; other values are unassigned and <bcp14>MUST</bcp14> be treated as unknown)</t>
          </li>
          <li>
            <t>Reversibility: reversible (value does not change under flow reversal as per <xref target="RFC5103"/>)</t>
          </li>
          <li>
            <t>Status: current</t>
          </li>
          <li>
            <t>Reference: This document; <xref target="RFC7013"/></t>
          </li>
        </ul>
      </section>
      <section anchor="new-subregistry-flowdiscardclass-values">
        <name>New Subregistry: “flowDiscardClass Values”</name>
        <t>IANA is requested to create a new subregistry titled "flowDiscardClass Values" under the IPFIX Information Elements registry. This subregistry contains the
enumerated values for the flowDiscardClass IE.</t>
        <ul spacing="normal">
          <li>
            <t>Registration Procedure: Expert Review (<xref target="RFC8126"/>)</t>
          </li>
          <li>
            <t>Reference: This document; <xref target="RFC7013"/></t>
          </li>
          <li>
            <t>Fields:
            </t>
            <ul spacing="normal">
              <li>
                <t>Value (integer)</t>
              </li>
              <li>
                <t>Name (path under  flow/discards/...)</t>
              </li>
              <li>
                <t>Description (optional)</t>
              </li>
              <li>
                <t>Reference</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Designated Expert guidance: New code points should reflect additions to or clarifications of discard reasons in <xref target="I-D.ietf-opsawg-discardmodel"/> (or its
successor). Existing code points <bcp14>MUST NOT</bcp14> be repurposed. Backwards-compatible additions are preferred. Experts <bcp14>SHOULD</bcp14> maintain the hierarchical structure
(e.g., assigning aggregates and leaves consistently) and, where practical, preserve preorder (depth-first) numbering to align with the existing tree.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-opsawg-discardmodel">
          <front>
            <title>Information and Data Models for Packet Discard Reporting</title>
            <author fullname="John Evans" initials="J." surname="Evans">
              <organization>Amazon</organization>
            </author>
            <author fullname="Oleksandr Pylypenko" initials="O." surname="Pylypenko">
              <organization>Amazon</organization>
            </author>
            <author fullname="Jeffrey Haas" initials="J." surname="Haas">
              <organization>Juniper Networks</organization>
            </author>
            <author fullname="Aviran Kadosh" initials="A." surname="Kadosh">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <date day="18" month="September" year="2025"/>
            <abstract>
              <t>   This document defines an Information Model and specifies a
   corresponding YANG data model for packet discard reporting.  The
   Information Model provides an implementation-independent framework
   for classifying packet loss — both intended (e.g., due to policy) and
   unintended (e.g., due to congestion or errors) — to enable automated
   network mitigation of unintended packet loss.  The YANG data model
   specifies an implementation of this framework for network elements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-discardmodel-09"/>
        </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="RFC7013">
          <front>
            <title>Guidelines for Authors and Reviewers of IP Flow Information Export (IPFIX) Information Elements</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="September" year="2013"/>
            <abstract>
              <t>This document provides guidelines for how to write definitions of new Information Elements for the IP Flow Information Export (IPFIX) protocol. It provides instructions on using the proper conventions for Information Elements to be registered in the IANA IPFIX Information Element registry, and provides guidelines for expert reviewers to evaluate new registrations.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="184"/>
          <seriesInfo name="RFC" value="7013"/>
          <seriesInfo name="DOI" value="10.17487/RFC7013"/>
        </reference>
        <reference anchor="RFC5103">
          <front>
            <title>Bidirectional Flow Export Using IP Flow Information Export (IPFIX)</title>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <author fullname="E. Boschi" initials="E." surname="Boschi"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes an efficient method for exporting bidirectional flow (Biflow) information using the IP Flow Information Export (IPFIX) protocol, representing each Biflow using a single Flow Record. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5103"/>
          <seriesInfo name="DOI" value="10.17487/RFC5103"/>
        </reference>
        <reference anchor="RFC6313">
          <front>
            <title>Export of Structured Data in IP Flow Information Export (IPFIX)</title>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <author fullname="G. Dhandapani" initials="G." surname="Dhandapani"/>
            <author fullname="P. Aitken" initials="P." surname="Aitken"/>
            <author fullname="S. Yates" initials="S." surname="Yates"/>
            <date month="July" year="2011"/>
            <abstract>
              <t>This document specifies an extension to the IP Flow Information Export (IPFIX) protocol specification in RFC 5101 and the IPFIX information model specified in RFC 5102 to support hierarchical structured data and lists (sequences) of Information Elements in data records. This extension allows definition of complex data structures such as variable-length lists and specification of hierarchical containment relationships between Templates. Finally, the semantics are provided in order to express the relationship among multiple list elements in a structured data record. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6313"/>
          <seriesInfo name="DOI" value="10.17487/RFC6313"/>
        </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="RFC7012">
          <front>
            <title>Information Model for IP Flow Information Export (IPFIX)</title>
            <author fullname="B. Claise" initials="B." role="editor" surname="Claise"/>
            <author fullname="B. Trammell" initials="B." role="editor" surname="Trammell"/>
            <date month="September" year="2013"/>
            <abstract>
              <t>This document defines the data types and management policy for the information model for the IP Flow Information Export (IPFIX) protocol. This information model is maintained as the IANA "IPFIX Information Elements" registry, the initial contents of which were defined by RFC 5102. This information model is used by the IPFIX protocol for encoding measured traffic information and information related to the traffic Observation Point, the traffic Metering Process, and the Exporting Process. Although this model was developed for the IPFIX protocol, it is defined in an open way that allows it to be easily used in other protocols, interfaces, and applications. This document obsoletes RFC 5102.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7012"/>
          <seriesInfo name="DOI" value="10.17487/RFC7012"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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>
      </references>
    </references>
    <?line 285?>

<section anchor="correlating">
      <name>Correlating Flow Discards with Interface/Device/Control-Plane Discards</name>
      <t>Objective. Enable operators to understand which flows are impacted when interface, device, or control-plane discard counters rise in the discardmodel. A typical workflow is:</t>
      <ol spacing="normal" type="1"><li>
          <t>Detect anomalous discards on an interface/device/control-plane (by class and direction) using the discardmodel; then</t>
        </li>
        <li>
          <t>Query flow telemetry to identify the impacted flows (and, where applicable, the causal flows that contributed to the condition).</t>
        </li>
      </ol>
      <section anchor="correlation-keys">
        <name>Scope Alignment (What Must Match)</name>
        <t>Accurate correlation depends on joining records that describe the same exporter/vantage, component, interface (if applicable), direction, class, and time window:</t>
        <ul spacing="normal">
          <li>
            <t>Exporter &amp; vantage. Join on the same Exporter/Observation Domain (e.g., observationDomainId). Where multiple taps or pipeline stages exist, include observationPointId (and, if available, line-card/port identifiers) so flow data and counters represent comparable points.</t>
          </li>
          <li>
            <t>Component &amp; interface.
            </t>
            <ul spacing="normal">
              <li>
                <t>Interface component: include ingressInterface/egressInterface in Flow Records and match the same ifIndex and direction as the discardmodel counters.</t>
              </li>
              <li>
                <t>Device component: drop the interface key and aggregate across interfaces for the same exporter/time/class.</t>
              </li>
              <li>
                <t>Control-plane component: no interface key; match by exporter/time/class (and any control-plane class identifiers available).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Time. Align Flow intervals (flowStart/flowEnd, or an observation-time IE) with the sampling/roll-up interval of the discardmodel counters. In practice, bucket both datasets (e.g., 1-minute buckets) and allow small skew to cover clock/polling jitter.</t>
          </li>
        </ul>
      </section>
      <section anchor="discard-class">
        <name>Class and Reason Alignment</name>
        <ul spacing="normal">
          <li>
            <t>Discard class. flowDiscardClass mirrors the discardmodel hierarchy (parents + leaves). Select the value(s) that match the anomaly (e.g., errors/l3/ttl-expired, policy/l3/acl, no-buffer/class, etc.).</t>
          </li>
          <li>
            <t>Traffic class identity (when relevant). For no-buffer/class, Exporters <bcp14>SHOULD</bcp14> also export the traffic-class identifier used by the queue (e.g., ipDiffServCodePoint / ipClassOfService, or dot1qPriority for L2). If the device uses internal queue IDs, provide a mapping (via Options data or out-of-band config) so collectors can align Flow Records with per-class counters.</t>
          </li>
        </ul>
      </section>
      <section anchor="recommended-exporter-behaviour">
        <name>Recommended Exporter Context</name>
        <t>When exporting Flow Records that carry flowDiscardClass, Exporters <bcp14>SHOULD</bcp14> include:</t>
        <ul spacing="normal">
          <li>
            <t>Context: ingressInterface/egressInterface, observationPointId (if applicable), time bounds (flowStart/flowEnd or an observation-time IE), and the relevant class IE (ipDiffServCodePoint/ipClassOfService/dot1qPriority, etc.).</t>
          </li>
          <li>
            <t>Quantification: droppedPacketDeltaCount and/or droppedOctetDeltaCount, so per-class dropped volume from flows can be compared to discardmodel aggregates.</t>
          </li>
          <li>
            <t>Multiplicity handling: if multiple discard reasons apply to the same flow interval, either export one record per reason or use IPFIX Structured Data to encode multiple flowDiscardClass values.</t>
          </li>
        </ul>
      </section>
      <section anchor="collector-workflow">
        <name>Collector Workflow (General Pattern)</name>
        <t>Given an anomaly in the discardmodel (per interface/device/control-plane, direction, class, and time):</t>
        <ol spacing="normal" type="1"><li>
            <t>Select the time bucket(s) and affected key(s): exporter, component (and interface if applicable), direction, discard class.</t>
          </li>
          <li>
            <t>Find impacted flows: filter Flow Records that overlap the bucket(s) and match the exporter/component keys and either
            </t>
            <ul spacing="normal">
              <li>
                <t>explicitly report the same flowDiscardClass, or</t>
              </li>
              <li>
                <t>(for aggregate classes) belong to the same traffic class and vantage where the loss is counted.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Aggregate per flow within the bucket(s): bytes/packets and, if available, dropped-bytes/packets.</t>
          </li>
          <li>
            <t>Rank or group flows as needed:
            </t>
            <ul spacing="normal">
              <li>
                <t>Impacted analysis: which flows suffered loss (by dropped-octets/packets, or by presence of the discard class)?</t>
              </li>
              <li>
                <t>Causal analysis (when meaningful): which flows likely contributed to the interface/device condition (e.g., top senders in the same class and egress interface during a no-buffer/class spike)?</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Validate: compare summed flow-level dropped deltas (if exported) to the discardmodel deltas for that bucket. Small gaps are expected (sampling, timing, vantage); large gaps suggest vantage mismatch or incomplete class mapping.</t>
          </li>
        </ol>
      </section>
      <section anchor="handling-expected-discrepancies">
        <name>Handling Expected Discrepancies</name>
        <ul spacing="normal">
          <li>
            <t>Vantage mismatch. Flow telemetry captured before queueing/policing but counters tallied after will skew attribution. Use observationPointId (and device documentation) to align vantage.</t>
          </li>
          <li>
            <t>Class remapping. If DSCP is remarked, use post-class IEs or queue-ID mappings so class identity matches where the drop is counted.</t>
          </li>
          <li>
            <t>Sampling/filtering. Flow sampling reduces visibility of small flows and biases shares; where possible, rely on flow-level dropped-octet counters, or increase the bucket size to stabilize estimates.</t>
          </li>
          <li>
            <t>Clock skew. Apply a small skew window (e.g., ±30 s) when joining buckets across datasets.</t>
          </li>
        </ul>
      </section>
      <section anchor="operational-example">
        <name>Operational Example: Congestive Loss (no-buffer/class) and Elephant Flows</name>
        <t>This example illustrates the workflow above for congestive loss (no-buffer/class) on an egress interface. It identifies high-volume ("elephant") flows most likely responsible for a spike by joining per-class interface discards with per-class, per-interface flow aggregates and ranking flows by bytes/rate.</t>
        <t>Assumed tables:</t>
        <ul spacing="normal">
          <li>
            <t>flows(observation_domain_id, egress_ifindex, flow_start, flow_end, octet_delta, packet_delta, ip_dscp, src_addr, dst_addr, src_port, dst_port, protocol, flowdiscardclass)</t>
          </li>
          <li>
            <t>interface_discards(observation_domain_id, ifindex, direction, discard_class, class_id, ts, packet_delta, octet_delta)</t>
          </li>
        </ul>
        <t>Note: In <xref target="flowDiscardClass-table"/>, no-buffer/class has value 38.</t>
        <sourcecode type="sql"><![CDATA[
-- Identify elephant flows contributing to egress no-buffer/class drops
WITH params AS (
  SELECT
    38::smallint AS no_buffer_class,          -- flowDiscardClass for no-buffer/class (Table 1)
    interval '1 minute' AS bucket,            -- analysis granularity
    interval '30 seconds' AS skew,            -- clock/bucket tolerance
    100000000::bigint AS elephant_bytes_min   -- 100 MB per bucket (example threshold)
),

-- 1) Per-minute egress no-buffer/class discard spikes per interface + class
events AS (
  SELECT
      i.observation_domain_id,
      i.ifindex,
      i.class_id,                               -- DSCP / QoS class as exported by the device
      date_trunc('minute', i.ts) AS ts_bucket,
      SUM(i.packet_delta) AS drop_pkts,
      SUM(i.octet_delta)  AS drop_octets
  FROM interface_discards i
  JOIN params p ON i.discard_class = p.no_buffer_class
  WHERE i.direction = 'egress'
  GROUP BY 1,2,3,4
  HAVING SUM(i.packet_delta) > 0
),

-- 2) Aggregate flows per minute keyed by egress interface + class
flow_buckets AS (
  SELECT
      f.observation_domain_id,
      f.egress_ifindex AS ifindex,
      f.ip_dscp        AS class_id,
      date_trunc('minute', f.flow_end) AS ts_bucket,
      f.src_addr, f.dst_addr, f.src_port, f.dst_port, f.protocol,
      SUM(f.octet_delta)  AS bytes,
      SUM(f.packet_delta) AS pkts
  FROM flows f
  -- Optional: uncomment to include only flows explicitly marked as no-buffer/class
  -- WHERE f.flowdiscardclass = 38
  GROUP BY 1,2,3,4,5,6,7,8,9
),

-- 3) Join flows to discard spikes within a fuzzy time window and same class/interface
joined AS (
  SELECT
      e.observation_domain_id,
      e.ifindex,
      e.class_id,
      e.ts_bucket,
      e.drop_pkts,
      e.drop_octets,
      fb.src_addr, fb.dst_addr, fb.src_port, fb.dst_port, fb.protocol,
      fb.bytes, fb.pkts,
      (fb.bytes::numeric / NULLIF(e.drop_octets,0)) AS byte_share,
      (fb.pkts::numeric  / NULLIF(e.drop_pkts,0))   AS pkt_share
  FROM events e
  JOIN flow_buckets fb
    ON fb.observation_domain_id = e.observation_domain_id
   AND fb.ifindex               = e.ifindex
   AND fb.class_id              = e.class_id
   AND fb.ts_bucket BETWEEN e.ts_bucket - (SELECT skew FROM params)
                        AND     e.ts_bucket + (SELECT bucket FROM params) + (SELECT skew FROM params)
)

-- 4) Rank top flows per interface+class+minute and keep "elephants"
SELECT
    observation_domain_id, ifindex, class_id, ts_bucket,
    drop_pkts, drop_octets,
    src_addr, dst_addr, src_port, dst_port, protocol,
    bytes, pkts, byte_share, pkt_share,
    (8.0 * bytes) / EXTRACT(EPOCH FROM (SELECT bucket FROM params)) AS bits_per_sec,
    ROW_NUMBER() OVER (
      PARTITION BY observation_domain_id, ifindex, class_id, ts_bucket
      ORDER BY bytes DESC
    ) AS rank_in_bucket
FROM joined
WHERE bytes >= (SELECT elephant_bytes_min FROM params)
ORDER BY ts_bucket, observation_domain_id, ifindex, class_id, rank_in_bucket;
]]></sourcecode>
        <t>Implementation notes:</t>
        <ul spacing="normal">
          <li>
            <t>If your device maps DSCP→queue differently, join via a mapping table instead of class_id = ip_dscp.</t>
          </li>
          <li>
            <t>Adjust bucket, skew, and elephant_bytes_min for your polling cadence and "elephant" threshold.</t>
          </li>
          <li>
            <t>Helpful indexes:
            </t>
            <ul spacing="normal">
              <li>
                <t>interface_discards(discard_class, direction, ts, observation_domain_id, ifindex, class_id)</t>
              </li>
              <li>
                <t>flows(egress_ifindex, ip_dscp, flow_end, observation_domain_id)</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
