Skip to main content

Information Element for Flow Discard Classification
draft-evans-opsawg-ipfix-discard-class-ie-02

Document Type Active Internet-Draft (individual)
Authors John Evans , Oleksandr Pylypenko , Karim Cheaito
Last updated 2025-12-01
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-evans-opsawg-ipfix-discard-class-ie-02
OPSAWG                                                          J. Evans
Internet-Draft                                              O. Pylypenko
Intended status: Informational                                K. Cheaito
Expires: 22 March 2026                                            Amazon
                                                       18 September 2025

          Information Element for Flow Discard Classification
              draft-evans-opsawg-ipfix-discard-class-ie-02

Abstract

   This document defines an IPFIX Information Element for classifying
   flow-level discards that aligns with the information model defined in
   [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.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 22 March 2026.

Copyright Notice

   Copyright (c) 2025 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

Evans, et al.             Expires 22 March 2026                 [Page 1]
Internet-Draft     IE for Flow Discard Classification     September 2025

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Information Element . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Design Rationale  . . . . . . . . . . . . . . . . . . . .   4
     3.2.  flowDiscardClass Definition . . . . . . . . . . . . . . .   5
     3.3.  flowDiscardClass Values . . . . . . . . . . . . . . . . .   6
     3.4.  Implementation Requirements . . . . . . . . . . . . . . .   8
       3.4.1.  Semantics and Scope . . . . . . . . . . . . . . . . .   8
       3.4.2.  Exporter Requirements . . . . . . . . . . . . . . . .   8
       3.4.3.  Collector Requirements  . . . . . . . . . . . . . . .   9
       3.4.4.  Interoperability with Existing IPFIX IEs  . . . . . .  10
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
     5.1.  New IPFIX Information Element: flowDiscardClass . . . . .  10
     5.2.  New Subregistry: “flowDiscardClass Values”  . . . . . . .  11
   6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  12
     6.1.  Normative References  . . . . . . . . . . . . . . . . . .  12
     6.2.  Informative References  . . . . . . . . . . . . . . . . .  13
   Appendix A.  Correlating Flow Discards with Interface/Device/
           Control-Plane Discards  . . . . . . . . . . . . . . . . .  13
     A.1.  Correlation Keys  . . . . . . . . . . . . . . . . . . . .  13
     A.2.  Analysis Strategies . . . . . . . . . . . . . . . . . . .  13
     A.3.  Operational Example: Impacted Flows (Congestion Drops)  .  14
     A.4.  Operational Example: Causal Flows (Congestion Drops)  . .  15
     A.5.  Implementation Note on Sampling . . . . . . . . . . . . .  16
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  17

1.  Introduction

   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.

Evans, et al.             Expires 22 March 2026                 [Page 2]
Internet-Draft     IE for Flow Discard Classification     September 2025

   [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.

   Currently, [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.

   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 [I-D.ietf-opsawg-discardmodel] and enables:

   1.  Precise detection of unintended packet loss through clear
       distinction between intended and unintended discards

   2.  Accurate root cause analysis through detailed classification of
       discard reasons

   3.  Automated selection of mitigation actions based on discard type,
       rate, and duration

   4.  Consistent reporting across vendor implementations in both YANG
       and IPFIX data models

   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.

Evans, et al.             Expires 22 March 2026                 [Page 3]
Internet-Draft     IE for Flow Discard Classification     September 2025

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   This document makes use of the following terms:

   Packet discard:  It accounts for any instance where a packet is
      dropped by a device, regardless of whether the discard was
      intentional or unintentional.

   Intended packet discards (Intended discards, for short):  Are packets
      dropped due to deliberate network policies or configurations
      designed to enforce security or Quality of Service (QoS).  For
      example, packets dropped because they match an Access Control List
      (ACL) denying certain traffic types.

   Unintended packet discards (Unintended discards, for short):  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.

      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.

3.  Information Element

   This Information Element has been specified in accordance with the
   guidelines in [RFC7013].

3.1.  Design Rationale

   The mapping between [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:

Evans, et al.             Expires 22 March 2026                 [Page 4]
Internet-Draft     IE for Flow Discard Classification     September 2025

   1.  Scope.  The flowDiscardClass Information Element is specifically
       for reporting flow-level discard reasons, and therefore only
       represents the flow subtree from [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.

   2.  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/broadcast).

   3.  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.

   4.  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.

   5.  Implementation-friendly ordering.  Codes are assigned in preorder
       traversal (where each parent is numbered before its children) to
       reflect the model’s hierarchy and simplify range/roll-up handling
       in implementations.

3.2.  flowDiscardClass Definition

   Name: flowDiscardClass

   Description: Classifies the reason a packet was discarded in a flow,
   using the hierarchical classification scheme defined in
   [I-D.ietf-opsawg-discardmodel].

   Abstract Data Type: unsigned8

   Data Type Semantics: identifier

   Units: none

   Range: 0..38 (values from Table 1; other values are unassigned and
   MUST be treated as unknown)

   Reversibility: reversible (value does not change under flow reversal
   as per [RFC5103])

   Status: current

Evans, et al.             Expires 22 March 2026                 [Page 5]
Internet-Draft     IE for Flow Discard Classification     September 2025

   ElementId: TBD

   References: [I-D.ietf-opsawg-discardmodel]

3.3.  flowDiscardClass Values

   Table 1 defines the values for the flowDiscardClass Information
   Element mapped from the corresponding [I-D.ietf-opsawg-discardmodel]
   Discard Class.  Codes are assigned in preorder traversal to reflect
   the hierarchy.

   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
   Section 5.

         +==============================+========================+
         | Discard Class                | flowDiscardClass Value |
         +==============================+========================+
         | l2                           | 0                      |
         +------------------------------+------------------------+
         | l3                           | 1                      |
         +------------------------------+------------------------+
         | l3/v4                        | 2                      |
         +------------------------------+------------------------+
         | l3/v4/unicast                | 3                      |
         +------------------------------+------------------------+
         | l3/v4/multicast              | 4                      |
         +------------------------------+------------------------+
         | l3/v4/broadcast              | 5                      |
         +------------------------------+------------------------+
         | l3/v6                        | 6                      |
         +------------------------------+------------------------+
         | l3/v6/unicast                | 7                      |
         +------------------------------+------------------------+
         | l3/v6/multicast              | 8                      |
         +------------------------------+------------------------+
         | errors                       | 9                      |
         +------------------------------+------------------------+
         | errors/l2                    | 10                     |
         +------------------------------+------------------------+
         | errors/l2/rx                 | 11                     |
         +------------------------------+------------------------+
         | errors/l2/rx/crc-error       | 12                     |
         +------------------------------+------------------------+
         | errors/l2/rx/invalid-mac     | 13                     |
         +------------------------------+------------------------+
         | errors/l2/rx/invalid-vlan    | 14                     |

Evans, et al.             Expires 22 March 2026                 [Page 6]
Internet-Draft     IE for Flow Discard Classification     September 2025

         +------------------------------+------------------------+
         | errors/l2/rx/invalid-frame   | 15                     |
         +------------------------------+------------------------+
         | errors/l2/tx                 | 16                     |
         +------------------------------+------------------------+
         | errors/l3                    | 17                     |
         +------------------------------+------------------------+
         | errors/l3/rx                 | 18                     |
         +------------------------------+------------------------+
         | errors/l3/rx/checksum-error  | 19                     |
         +------------------------------+------------------------+
         | errors/l3/rx/mtu-exceeded    | 20                     |
         +------------------------------+------------------------+
         | errors/l3/rx/invalid-packet  | 21                     |
         +------------------------------+------------------------+
         | errors/l3/ttl-expired        | 22                     |
         +------------------------------+------------------------+
         | errors/l3/no-route           | 23                     |
         +------------------------------+------------------------+
         | errors/l3/invalid-sid        | 24                     |
         +------------------------------+------------------------+
         | errors/l3/invalid-label      | 25                     |
         +------------------------------+------------------------+
         | errors/l3/tx                 | 26                     |
         +------------------------------+------------------------+
         | errors/internal              | 27                     |
         +------------------------------+------------------------+
         | errors/internal/parity-error | 28                     |
         +------------------------------+------------------------+
         | policy                       | 29                     |
         +------------------------------+------------------------+
         | policy/l2                    | 30                     |
         +------------------------------+------------------------+
         | policy/l2/acl                | 31                     |
         +------------------------------+------------------------+
         | policy/l3                    | 32                     |
         +------------------------------+------------------------+
         | policy/l3/acl                | 33                     |
         +------------------------------+------------------------+
         | policy/l3/policer            | 34                     |
         +------------------------------+------------------------+
         | policy/l3/null-route         | 35                     |
         +------------------------------+------------------------+
         | policy/l3/rpf                | 36                     |
         +------------------------------+------------------------+
         | policy/l3/ddos               | 37                     |
         +------------------------------+------------------------+
         | no-buffer                    | 38                     |

Evans, et al.             Expires 22 March 2026                 [Page 7]
Internet-Draft     IE for Flow Discard Classification     September 2025

         +------------------------------+------------------------+

              Table 1: Flow discard classification values and
                       corresponding discard classes

   For discard classes where per-traffic-class granularity is
   operationally significant (e.g., no-buffer, policy/l3/policer), the
   traffic class SHOULD be conveyed via companion IEs in the same Flow
   Record (e.g., ipDiffServCodePoint for L3, dot1qPriority for L2).
   This enables correlation with per-class interface counters from
   [I-D.ietf-opsawg-discardmodel].

3.4.  Implementation Requirements

3.4.1.  Semantics and Scope

   1.  Scope of this IE. flowDiscardClass MUST be used only to report
       flow-level discard classification under flow/discards from
       [I-D.ietf-opsawg-discardmodel].  It MUST NOT be used for
       interface, device, or control-plane discard counters.

   2.  Enumeration.  Exporters MUST encode values only from the IANA
       “flowDiscardClass Values” subregistry for this IE.  Collectors
       MUST accept both aggregate and leaf values and interpret
       aggregates as semantic supersets of their descendants.

   3.  Unknown/Unassigned values.  Collectors receiving an unknown or
       unassigned value MUST treat it as unknown and MUST NOT remap it
       to another code.  Exporters MUST NOT transmit unassigned values.

   4.  Reversibility.  The value of flowDiscardClass MUST NOT change
       under biflow reversal as defined by [RFC5103].

3.4.2.  Exporter Requirements

   1.  Cardinality.  A Flow Record MUST contain at most one instance of
       flowDiscardClass.

   2.  Multiplicity.  When multiple discard reasons apply to the same
       flow interval, exporters MUST export multiple Flow Records, one
       per discard reason.  Each Flow Record MUST carry the same flow
       keys (5-tuple, interfaces, timestamps) but a distinct
       flowDiscardClass value.  Where possible, exporters SHOULD include
       per-reason droppedPacketDeltaCount and/or droppedOctetDeltaCount
       to quantify the volume attributed to each specific discard class.

Evans, et al.             Expires 22 March 2026                 [Page 8]
Internet-Draft     IE for Flow Discard Classification     September 2025

       *  While this approach creates multiple Flow Records for the same
          flow 5-tuple, it provides crucial diagnostic granularity.
          Collectors can easily aggregate by summing dropped counts
          across records with the same flow keys, while preserving the
          ability to attribute loss to specific root causes.  This
          design maintains full fidelity of per-reason discard
          statistics.

   3.  Specificity.  Exporters SHOULD report the most-specific known
       class (a leaf).  If the specific leaf is unknown, an appropriate
       parent/aggregate MAY be used.

   4.  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 MUST
       include droppedPacketDeltaCount and/or droppedOctetDeltaCount in
       the same record to quantify the volume attributed to that
       specific discard reason.  When multiple discard reasons affect
       the same flow (per point 2), the sum of per-reason dropped counts
       across all records for that flow represents the total flow-level
       discards.

   5.  Traffic class context.  For discard classes where per-class
       correlation is operationally significant (e.g., no-buffer,
       policy/l3/policer), exporters SHOULD include a traffic-class IE
       in the same record (e.g., ipDiffServCodePoint or ipClassOfService
       for L3, dot1qPriority for L2).  If classification occurs after
       remarking, exporters SHOULD use the post-remark class, or provide
       a device queue-ID→class mapping via IPFIX Options data.

   6.  Context.  To aid correlation with interface/device/control-plane
       counters, exporters SHOULD include time bounds (flowStart/flowEnd
       or an observation-time IE), ingressInterface/egressInterface as
       applicable, and observationPointId when multiple pipeline stages/
       taps exist.

3.4.3.  Collector Requirements

   1.  Multiple records per flow.  When multiple Flow Records carry
       different flowDiscardClass values for the same flow keys and
       overlapping time intervals, collectors MUST treat them as
       indicating distinct discard reasons affecting the same flow.
       Collectors SHOULD aggregate these records when computing per-flow
       total discards, while preserving per-reason breakdowns for root
       cause analysis.

Evans, et al.             Expires 22 March 2026                 [Page 9]
Internet-Draft     IE for Flow Discard Classification     September 2025

   2.  Aggregate handling.  When a parent/aggregate class is received,
       collectors MUST treat it as a coarse classification that may
       encompass multiple leaves.

   3.  Traffic class correlation.  When a traffic-class IE is present
       alongside no-buffer or policy/l3/policer, collectors SHOULD use
       it to correlate with per-class interface counters.  If absent,
       collectors MAY apply local device mappings if available.

   4.  Unknown values.  Collectors MUST handle unknown/unassigned values
       gracefully (e.g., categorize as “unknown”) without rejecting the
       record.

3.4.4.  Interoperability with Existing IPFIX IEs

   1.  Exporters and collectors MAY also use existing IEs (e.g.,
       flowDirection, ipVersion, addresses, ipDiffServCodePoint) for
       filtering, correlation, or redundancy.

   2.  flowDiscardClass alone MUST be sufficient to recover the discard
       classification.

   3.  Exporters MAY continue to export forwardingStatus ([RFC7270]) in
       parallel.  When both are present, flowDiscardClass MUST be
       considered authoritative for discard classification.

   4.  When flow sampling is active, the presence of flowDiscardClass
       indicates at least one sampled packet matched that class.

4.  Security Considerations

   This document defines a new Information Element for flow-level
   discard classification to align with the information model defined in
   [I-D.ietf-opsawg-discardmodel].  As such, there are no security
   issues related to this document, which are additional to those
   discussed in [RFC7011], [RFC7012].

5.  IANA Considerations

   IANA is requested to make the following changes under the IP Flow
   Information Export (IPFIX) Information Elements registry.

5.1.  New IPFIX Information Element: flowDiscardClass

   IANA is requested to register a new Information Element as follows:

   *  Name: flowDiscardClass

Evans, et al.             Expires 22 March 2026                [Page 10]
Internet-Draft     IE for Flow Discard Classification     September 2025

   *  ElementId: TBD (to be assigned by IANA)

   *  Description: Classifies the reason a packet was discarded in a
      flow, using the hierarchical classification scheme defined in
      [I-D.ietf-opsawg-discardmodel].

   *  Abstract Data Type: unsigned8

   *  Data Type Semantics: identifier

   *  Units: none

   *  Range: 0..38 (values are listed in the “flowDiscardClass Values”
      subregistry created below; other values are unassigned and MUST be
      treated as unknown)

   *  Reversibility: reversible (value does not change under flow
      reversal as per [RFC5103])

   *  Status: current

   *  Reference: This document; [RFC7013]

5.2.  New Subregistry: “flowDiscardClass Values”

   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.

   *  Registration Procedure: Expert Review ([RFC8126])

   *  Reference: This document; [RFC7013]

   *  Fields:

      -  Value (integer)

      -  Name (path under flow/discards/...)

      -  Description (optional)

      -  Reference

   Designated Expert guidance: New code points should reflect additions
   to or clarifications of discard reasons in
   [I-D.ietf-opsawg-discardmodel] (or its successor).  Existing code
   points MUST NOT be repurposed.  Backwards-compatible additions are

Evans, et al.             Expires 22 March 2026                [Page 11]
Internet-Draft     IE for Flow Discard Classification     September 2025

   preferred.  Experts SHOULD 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.

6.  References

6.1.  Normative References

   [I-D.ietf-opsawg-discardmodel]
              Evans, J., Pylypenko, O., Haas, J., Kadosh, A., and M.
              Boucadair, "Information and Data Models for Packet Discard
              Reporting", Work in Progress, Internet-Draft, draft-ietf-
              opsawg-discardmodel-10, 26 November 2025,
              <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-
              discardmodel-10>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC5103]  Trammell, B. and E. Boschi, "Bidirectional Flow Export
              Using IP Flow Information Export (IPFIX)", RFC 5103,
              DOI 10.17487/RFC5103, January 2008,
              <https://www.rfc-editor.org/rfc/rfc5103>.

   [RFC7011]  Claise, B., Ed., Trammell, B., Ed., and P. Aitken,
              "Specification of the IP Flow Information Export (IPFIX)
              Protocol for the Exchange of Flow Information", STD 77,
              RFC 7011, DOI 10.17487/RFC7011, September 2013,
              <https://www.rfc-editor.org/rfc/rfc7011>.

   [RFC7012]  Claise, B., Ed. and B. Trammell, Ed., "Information Model
              for IP Flow Information Export (IPFIX)", RFC 7012,
              DOI 10.17487/RFC7012, September 2013,
              <https://www.rfc-editor.org/rfc/rfc7012>.

   [RFC7013]  Trammell, B. and B. Claise, "Guidelines for Authors and
              Reviewers of IP Flow Information Export (IPFIX)
              Information Elements", BCP 184, RFC 7013,
              DOI 10.17487/RFC7013, September 2013,
              <https://www.rfc-editor.org/rfc/rfc7013>.

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,
              <https://www.rfc-editor.org/rfc/rfc8126>.

Evans, et al.             Expires 22 March 2026                [Page 12]
Internet-Draft     IE for Flow Discard Classification     September 2025

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

6.2.  Informative References

   [RFC7270]  Yourtchenko, A., Aitken, P., and B. Claise, "Cisco-
              Specific Information Elements Reused in IP Flow
              Information Export (IPFIX)", RFC 7270,
              DOI 10.17487/RFC7270, June 2014,
              <https://www.rfc-editor.org/rfc/rfc7270>.

Appendix A.  Correlating Flow Discards with Interface/Device/Control-
             Plane Discards

   This appendix is non-normative.  It describes how to map high-level
   interface discard counters (from [I-D.ietf-opsawg-discardmodel]) to
   the specific flows responsible for or affected by those discards.

A.1.  Correlation Keys

   To correlate a discard counter anomaly with flow records, the
   collector must join data on three key dimensions:

   1.  Time: Align the counter collection interval with the Flow Record
       start/end times (allowing for small clock skew).

   2.  Location: Match the Observation Domain and Interface.

       *  For Ingress discards: match ingressInterface.

       *  For Egress discards: match egressInterface.

   3.  Discard Class: Match the YANG discard-class leaf with the IPFIX
       flowDiscardClass value.

       *  Note: If the drop is specific to a traffic class (e.g., no-
          buffer), the collector must also match the traffic class
          identifier (e.g., ipDiffServCodePoint) to the specific queue
          experiencing loss.

A.2.  Analysis Strategies

   Once flow records are correlated with discard counters, operators can
   rank or group flows to determine:

Evans, et al.             Expires 22 March 2026                [Page 13]
Internet-Draft     IE for Flow Discard Classification     September 2025

   *  Impacted analysis: Which flows suffered loss?  This is determined
      by grouping flows by the presence of the flowDiscardClass (or
      summing dropped-octets/packets) to identify the symptomatic flows
      of the event.

   *  Causal analysis (when meaningful): Which flows likely contributed
      to the interface/device condition?  For congestive discards (e.g.
      no-buffer), this is determined by identifying the top senders (by
      total volume or rate) in the same traffic class and egress
      interface during the anomaly.

A.3.  Operational Example: Impacted Flows (Congestion Drops)

   Scenario: an anomaly is detected in no-buffer discards on Ethernet1/0
   (ifIndex 10) in the egress direction.  The drops are occurring in the
   Best Effort queue (DSCP 0).

   1.  Signal: Interface discard counter

       *  Time: 2025-09-18 10:00:00 – 10:01:00

       *  Observation Domain: 1234

       *  Interface: 10 (egress)

       *  Class: no-buffer (value 38; see Table 1)

       *  Queue/DSCP: 0

   2.  Correlation: SQL Query

       The operator queries the IPFIX store to perform impact analysis —
       identifying symptomatic flows of the congestion event:

       sql SELECT src_addr, dst_addr, l4_dst_port, protocol,
       SUM(droppedPacketDeltaCount) AS total_pkt_discards FROM
       flow_records WHERE -- 0.  Match Observation Domain
       observationDomainId = 1234 -- 1.  Match Location (egress
       interface) AND egressInterface = 10 -- 2.  Match Time Window (any
       overlap with counter interval) AND flowEnd >= '2025-09-18
       10:00:00' AND flowStart <= '2025-09-18 10:01:00' -- 3.  Match
       Discard Class (no-buffer) AND flowDiscardClass = 38 -- 4.  Match
       Traffic Class context (Best Effort) AND ipDiffServCodePoint = 0
       GROUP BY src_addr, dst_addr, l4_dst_port, protocol ORDER BY
       total_pkt_discards DESC LIMIT 10;

   3.  Result

Evans, et al.             Expires 22 March 2026                [Page 14]
Internet-Draft     IE for Flow Discard Classification     September 2025

       The query returns the top flows most affected by the discard
       event, allowing the operator to pinpoint specific applications or
       users impacted by the congestion:

   +==========+=============+===========+========+====================+
   |src_addr  |dst_addr     |l4_dst_port|protocol| total_pkt_discards |
   +==========+=============+===========+========+====================+
   |192.0.2.10|198.51.100.55|443        |6 (TCP) |             15,400 |
   +----------+-------------+-----------+--------+--------------------+
   |192.0.2.12|198.51.100.80|80         |6 (TCP) |              2,100 |
   +----------+-------------+-----------+--------+--------------------+

                                 Table 2

A.4.  Operational Example: Causal Flows (Congestion Drops)

   Using the same scenario as in Appendix A.3, the operator now wants to
   identify flows that likely caused the congestion — that is, heavy
   senders in the affected queue and interface during the anomaly.
   These flows may or may not themselves have experienced drops.

   1.  Signal: Interface discard counter

       Same as in Section A.3:

       *  Time: 2025-09-18 10:00:00 – 10:01:00

       *  Observation Domain: 1234

       *  Interface: 10 (egress)

       *  Class: no-buffer (value 38)

       *  Queue/DSCP: 0

   2.  Correlation: SQL Query

       The operator queries the IPFIX store to perform a causal analysis
       by ranking flows by total traffic volume in the same time window,
       interface, and traffic class.  The query does not require
       flowDiscardClass = 38, since flows can contribute to congestion
       even if only some packets (or none of the sampled packets) were
       dropped.

       sql SELECT src_addr, dst_addr, l4_dst_port, protocol,
       SUM(octetDeltaCount) AS total_bytes, SUM(packetDeltaCount) AS
       total_pkts, SUM(droppedPacketDeltaCount) AS total_pkt_discards
       FROM flow_records WHERE -- 0.  Match Observation Domain

Evans, et al.             Expires 22 March 2026                [Page 15]
Internet-Draft     IE for Flow Discard Classification     September 2025

       observationDomainId = 1234 -- 1.  Match Location (egress
       interface) AND egressInterface = 10 -- 2.  Match Time Window (any
       overlap with counter interval) AND flowEnd >= '2025-09-18
       10:00:00' AND flowStart <= '2025-09-18 10:01:00' -- 3.  Match
       Traffic Class context (Best Effort queue) AND ipDiffServCodePoint
       = 0 GROUP BY src_addr, dst_addr, l4_dst_port, protocol ORDER BY
       total_bytes DESC LIMIT 10;

   3.  Result

       This query returns flows that carried the most traffic through
       the congested interface and queue during the interval.  These
       high-volume flows are candidates for having contributed to the
       congestion.  The total_drops column (if present) can still be
       used to see which of these heavy flows also suffered loss.

   +==========+=============+===========+========+===========+==========+==================+
   |src_addr  |dst_addr     |l4_dst_port|protocol|total_bytes|total_pkts|total_pkt_discards|
   +==========+=============+===========+========+===========+==========+==================+
   |10.0.0.5  |192.0.2.200  |443        |6 (TCP) |850,000,000| 1,214,285|             2,100|
   +----------+-------------+-----------+--------+-----------+----------+------------------+
   |192.0.2.10|198.51.100.55|443        |6 (TCP) | 15,000,000|    21,000|            15,400|
   +----------+-------------+-----------+--------+-----------+----------+------------------+

                                  Table 3

   In this example, the flow from 10.0.0.5 transferred 850 MB with
   limited discards, while the smaller flow from 192.0.2.10 suffered
   significant packet loss.

A.5.  Implementation Note on Sampling

   When flow sampling is active, flowDiscardClass indicates that a
   sampled packet was dropped.  To estimate the total (unsampled) flow-
   level impact and compare it with interface counters (which are
   typically unsampled), operators can apply a sampling-rate multiplier
   to the flow counters (droppedPacketDeltaCount and/or
   droppedOctetDeltaCount).

   Let: * p = the sampling probability (e.g., 0.01 for 1-in-100
   sampling) * N = 1 / p be the corresponding "1-in-N" sampling
   interval.

   The sampling-rate multiplier is N.  Estimated totals are then: *
   estimated_total_dropped_packets = droppedPacketDeltaCount * N *
   estimated_total_dropped_octets = droppedOctetDeltaCount * N

Evans, et al.             Expires 22 March 2026                [Page 16]
Internet-Draft     IE for Flow Discard Classification     September 2025

   For example, if the exporter samples 1 in every 100 packets, the
   multiplier is 100.  If the exporter samples 1 in every 1000 packets,
   the multiplier is 1000.

   Exporters typically report their sampling configuration via IPFIX
   (samplingInterval and/or samplingProbability).  Because sampling is
   probabilistic, these estimates are approximate; using larger time
   windows and higher-volume aggregates tends to make them more robust.

Authors' Addresses

   John Evans
   Amazon
   1 Principal Place, Worship Street
   London
   EC2A 2FA
   United Kingdom
   Email: jevanamz@amazon.co.uk

   Oleksandr Pylypenko
   Amazon
   410 Terry Ave N
   Seattle, WA 98109
   United States of America
   Email: opyl@amazon.com

   Karim Cheaito
   Amazon
   410 Terry Ave N
   Seattle, WA 98109
   United States of America
   Email: kcheaito@amazon.com

Evans, et al.             Expires 22 March 2026                [Page 17]