<?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-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <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-02"/>
    <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>This document makes use of the following terms:</t>
      <dl>
        <dt>Packet discard:</dt>
        <dd>
          <t>It accounts for any instance where a packet is dropped by a device, regardless of whether the discard was intentional or unintentional.</t>
        </dd>
        <dt>Intended packet discards (Intended discards, for short):</dt>
        <dd>
          <t>Are packets dropped due to deliberate network policies or configurations designed to enforce security or Quality of Service (QoS). For example, packets dropped because they match an Access Control List (ACL) denying certain traffic types.</t>
        </dd>
        <dt>Unintended packet discards (Unintended discards, for short):</dt>
        <dd>
          <t>Are packets that were dropped, which the network operator otherwise intended to deliver, i.e. which indicates an error state.  There are many possible reasons for unintended packet loss, including: erroring links may corrupt packets in transit; incorrect routing tables may result in packets being dropped because they do not match a valid route; configuration errors may result in a valid packet incorrectly matching an ACL and being dropped.</t>
        </dd>
        <dt/>
        <dd>
          <t>Device discard counters do not by themselves establish operator intent. Discards reported under policy (e.g., ACL/policer) indicate only that traffic matched a configured rule; such discards may still be unintended if the configuration is in error. Determining intent for policy discards requires external context (e.g., configuration validation and change history) which is out of scope for this specification.</t>
        </dd>
      </dl>
    </section>
    <section anchor="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/broadcast).</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 traversal (where each parent is numbered before its children) to reflect the model’s 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.  Codes are assigned in preorder traversal to reflect the hierarchy.</t>
        <t>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/v4/broadcast</td>
              <td align="left">5</td>
            </tr>
            <tr>
              <td align="left">l3/v6</td>
              <td align="left">6</td>
            </tr>
            <tr>
              <td align="left">l3/v6/unicast</td>
              <td align="left">7</td>
            </tr>
            <tr>
              <td align="left">l3/v6/multicast</td>
              <td align="left">8</td>
            </tr>
            <tr>
              <td align="left">errors</td>
              <td align="left">9</td>
            </tr>
            <tr>
              <td align="left">errors/l2</td>
              <td align="left">10</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx</td>
              <td align="left">11</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/crc-error</td>
              <td align="left">12</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-mac</td>
              <td align="left">13</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-vlan</td>
              <td align="left">14</td>
            </tr>
            <tr>
              <td align="left">errors/l2/rx/invalid-frame</td>
              <td align="left">15</td>
            </tr>
            <tr>
              <td align="left">errors/l2/tx</td>
              <td align="left">16</td>
            </tr>
            <tr>
              <td align="left">errors/l3</td>
              <td align="left">17</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx</td>
              <td align="left">18</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/checksum-error</td>
              <td align="left">19</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/mtu-exceeded</td>
              <td align="left">20</td>
            </tr>
            <tr>
              <td align="left">errors/l3/rx/invalid-packet</td>
              <td align="left">21</td>
            </tr>
            <tr>
              <td align="left">errors/l3/ttl-expired</td>
              <td align="left">22</td>
            </tr>
            <tr>
              <td align="left">errors/l3/no-route</td>
              <td align="left">23</td>
            </tr>
            <tr>
              <td align="left">errors/l3/invalid-sid</td>
              <td align="left">24</td>
            </tr>
            <tr>
              <td align="left">errors/l3/invalid-label</td>
              <td align="left">25</td>
            </tr>
            <tr>
              <td align="left">errors/l3/tx</td>
              <td align="left">26</td>
            </tr>
            <tr>
              <td align="left">errors/internal</td>
              <td align="left">27</td>
            </tr>
            <tr>
              <td align="left">errors/internal/parity-error</td>
              <td align="left">28</td>
            </tr>
            <tr>
              <td align="left">policy</td>
              <td align="left">29</td>
            </tr>
            <tr>
              <td align="left">policy/l2</td>
              <td align="left">30</td>
            </tr>
            <tr>
              <td align="left">policy/l2/acl</td>
              <td align="left">31</td>
            </tr>
            <tr>
              <td align="left">policy/l3</td>
              <td align="left">32</td>
            </tr>
            <tr>
              <td align="left">policy/l3/acl</td>
              <td align="left">33</td>
            </tr>
            <tr>
              <td align="left">policy/l3/policer</td>
              <td align="left">34</td>
            </tr>
            <tr>
              <td align="left">policy/l3/null-route</td>
              <td align="left">35</td>
            </tr>
            <tr>
              <td align="left">policy/l3/rpf</td>
              <td align="left">36</td>
            </tr>
            <tr>
              <td align="left">policy/l3/ddos</td>
              <td align="left">37</td>
            </tr>
            <tr>
              <td align="left">no-buffer</td>
              <td align="left">38</td>
            </tr>
          </tbody>
        </table>
        <t>For discard classes where per-traffic-class granularity is operationally significant (e.g., no-buffer, policy/l3/policer), the traffic class <bcp14>SHOULD</bcp14> 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 <xref target="I-D.ietf-opsawg-discardmodel"/>.</t>
      </section>
      <section anchor="implreq">
        <name>Implementation Requirements</name>
        <section anchor="impl-semantics">
          <name>Semantics and Scope</name>
          <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>
        <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> export multiple Flow Records, one per discard reason.  Each Flow Record <bcp14>MUST</bcp14> carry the same flow keys (5-tuple, interfaces, timestamps) but a distinct flowDiscardClass value.  Where possible, exporters <bcp14>SHOULD</bcp14> include per-reason droppedPacketDeltaCount and/or droppedOctetDeltaCount to quantify the volume attributed to each specific discard class.
              </t>
              <ul spacing="normal">
                <li>
                  <t>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.</t>
                </li>
              </ul>
            </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>MUST</bcp14> 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.</t>
            </li>
            <li>
              <t>Traffic class context. For discard classes where per-class correlation is operationally significant (e.g., no-buffer, policy/l3/policer), exporters <bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD</bcp14> use the post-remark class, or provide a device queue-ID→class mapping via IPFIX Options data.</t>
            </li>
            <li>
              <t>Context. 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>Multiple records per flow.  When multiple Flow Records carry different flowDiscardClass values for the same flow keys and overlapping time intervals, collectors <bcp14>MUST</bcp14> treat them as indicating distinct discard reasons affecting the same flow. Collectors <bcp14>SHOULD</bcp14> aggregate these records when computing per-flow total discards, while preserving per-reason breakdowns for root cause 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>Traffic class correlation. When a traffic-class IE is present alongside no-buffer or policy/l3/policer, collectors <bcp14>SHOULD</bcp14> use it to correlate with per-class interface 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>MUST</bcp14> be sufficient to recover the discard classification.</t>
            </li>
            <li>
              <t>Exporters <bcp14>MAY</bcp14> continue to export forwardingStatus (<xref target="RFC7270"/>) in parallel. When both are present, flowDiscardClass <bcp14>MUST</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="26" month="November" 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 Information Model for network
   elements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-discardmodel-10"/>
        </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="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 287?>

<section anchor="correlating">
      <name>Correlating Flow Discards with Interface/Device/Control-Plane Discards</name>
      <t>This appendix is non-normative. It describes how to map high-level interface discard counters (from <xref target="I-D.ietf-opsawg-discardmodel"/>) to the specific flows responsible for or affected by those discards.</t>
      <section anchor="correlation-keys">
        <name>Correlation Keys</name>
        <t>To correlate a discard counter anomaly with flow records, the collector must join data on three key dimensions:</t>
        <ol spacing="normal" type="1"><li>
            <t>Time: Align the counter collection interval with the Flow Record start/end times (allowing for small clock skew).</t>
          </li>
          <li>
            <t>Location: Match the Observation Domain and Interface.
            </t>
            <ul spacing="normal">
              <li>
                <t>For Ingress discards: match ingressInterface.</t>
              </li>
              <li>
                <t>For Egress discards: match egressInterface.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Discard Class: Match the YANG discard-class leaf with the IPFIX flowDiscardClass value.  </t>
            <ul spacing="normal">
              <li>
                <t>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.</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="analysis-strategies">
        <name>Analysis Strategies</name>
        <t>Once flow records are correlated with discard counters, operators can rank or group flows to determine:</t>
        <ul spacing="normal">
          <li>
            <t>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.</t>
          </li>
          <li>
            <t>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.</t>
          </li>
        </ul>
      </section>
      <section anchor="impacted-flows">
        <name>Operational Example: Impacted Flows (Congestion Drops)</name>
        <t>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).</t>
        <ol spacing="normal" type="1"><li>
            <t>Signal: Interface discard counter  </t>
            <ul spacing="normal">
              <li>
                <t>Time: 2025-09-18 10:00:00 – 10:01:00</t>
              </li>
              <li>
                <t>Observation Domain: 1234</t>
              </li>
              <li>
                <t>Interface: 10 (egress)</t>
              </li>
              <li>
                <t>Class: no-buffer (value 38; see <xref target="flowDiscardClass-table"/>)</t>
              </li>
              <li>
                <t>Queue/DSCP: 0</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Correlation: SQL Query  </t>
            <t>
The operator queries the IPFIX store to perform impact analysis — identifying symptomatic flows of the congestion event:  </t>
            <t><tt>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   &gt;= '2025-09-18 10:00:00'
    AND flowStart &lt;= '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;
</tt></t>
          </li>
          <li>
            <t>Result  </t>
            <t>
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:</t>
          </li>
        </ol>
        <table>
          <thead>
            <tr>
              <th align="left">src_addr</th>
              <th align="left">dst_addr</th>
              <th align="left">l4_dst_port</th>
              <th align="left">protocol</th>
              <th align="right">total_pkt_discards</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">192.0.2.10</td>
              <td align="left">198.51.100.55</td>
              <td align="left">443</td>
              <td align="left">6 (TCP)</td>
              <td align="right">15,400</td>
            </tr>
            <tr>
              <td align="left">192.0.2.12</td>
              <td align="left">198.51.100.80</td>
              <td align="left">80</td>
              <td align="left">6 (TCP)</td>
              <td align="right">2,100</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="causal-flows">
        <name>Operational Example: Causal Flows (Congestion Drops)</name>
        <t>Using the same scenario as in <xref target="impacted-flows"/>, 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.</t>
        <ol spacing="normal" type="1"><li>
            <t>Signal: Interface discard counter  </t>
            <t>
Same as in Section A.3:  </t>
            <ul spacing="normal">
              <li>
                <t>Time: 2025-09-18 10:00:00 – 10:01:00</t>
              </li>
              <li>
                <t>Observation Domain: 1234</t>
              </li>
              <li>
                <t>Interface: 10 (egress)</t>
              </li>
              <li>
                <t>Class: no-buffer (value 38)</t>
              </li>
              <li>
                <t>Queue/DSCP: 0</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Correlation: SQL Query  </t>
            <t>
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.  </t>
            <t><tt>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
    observationDomainId = 1234
    -- 1. Match Location (egress interface)
    AND egressInterface = 10
    -- 2. Match Time Window (any overlap with counter interval)
    AND flowEnd   &gt;= '2025-09-18 10:00:00'
    AND flowStart &lt;= '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;
</tt></t>
          </li>
          <li>
            <t>Result  </t>
            <t>
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.</t>
          </li>
        </ol>
        <table>
          <thead>
            <tr>
              <th align="left">src_addr</th>
              <th align="left">dst_addr</th>
              <th align="left">l4_dst_port</th>
              <th align="left">protocol</th>
              <th align="right">total_bytes</th>
              <th align="right">total_pkts</th>
              <th align="right">total_pkt_discards</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">10.0.0.5</td>
              <td align="left">192.0.2.200</td>
              <td align="left">443</td>
              <td align="left">6 (TCP)</td>
              <td align="right">850,000,000</td>
              <td align="right">1,214,285</td>
              <td align="right">2,100</td>
            </tr>
            <tr>
              <td align="left">192.0.2.10</td>
              <td align="left">198.51.100.55</td>
              <td align="left">443</td>
              <td align="left">6 (TCP)</td>
              <td align="right">15,000,000</td>
              <td align="right">21,000</td>
              <td align="right">15,400</td>
            </tr>
          </tbody>
        </table>
        <t>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.</t>
      </section>
      <section anchor="sampling">
        <name>Implementation Note on Sampling</name>
        <t>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).</t>
        <t>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.</t>
        <t>The sampling-rate multiplier is N.  Estimated totals are then:
   * estimated_total_dropped_packets  = droppedPacketDeltaCount * N
   * estimated_total_dropped_octets   = droppedOctetDeltaCount  * N</t>
        <t>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.</t>
        <t>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.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1d3XIbyXW+n6foUBcGVAAIgJRWgrzeUCTlhVcSuaLkzZbL
JTdnGuSYgxns9IAUrFXVXuUBktykKqnKs+RR9klyfrp7umcGJGU7di5Ce9fA
YPrv/H7n9On2cDiMqrTK1EzM80VRLmWVFrk4ztRS5ZWAJ+JFVtyIo1THskzE
YSa1ThdpTO9F8vy8VNfQ9vjOV5MizuUSxklKuaiG6lrmelistLy5GKarRfph
mHDDYYwNh6kajqdRIitoMh1PHw3HT4eTJxH0pi6KcjMTKcw30lWp5BIn8PZF
lK7KmajKta6m4/FTaC3hx5k4WamS5qCFzBPxSubygpd3AL9HN0V5dVEW6xW8
eXp28N2voyu1gYcJkqRSZa6q4RHOOYLRoIP3MitymNRG6WiVzsTvqiIeCF2U
MJWFhk+bJX74fRTJdXVZlLNIDCMBf2muZ+I3I3GMS6cnTJDfFJe597AoL2bi
YCn/BETD77hEVc3ERJyWaR6nK5mJ00zGaiC+K0p9ma7EGb1Cb8dpBbR5WeSJ
aR4XCYxxfDg9ENMXB+bROq+QhO++oe9qKdNsJv6IPJHLP/2jpMFHcTFaX0XB
7E9G4nSTbVYqvyq8FZxk6koDacrGr9uWsj8Zi7eqLDfi4FqJ197Ez5SsQBrp
SakugGkz8d2Bt5CnTybjp41VnPmrKFabrF7BMpz/NyNxeKlkWvmz/0aW6TJ4
/veY91XMEwjmHkXD4VDIc5iAjEEA316mWoAmrUl8E7VIc4VSLeanL+b/tFWF
Y1bFTZpfiAXo6DBT1yoTRuG0qC5lJWSWXoCK3KTVJTxQpF+2syWsITPjJfCL
+PjxH+bDo1GqqoVVYtMbvfrp00i8hT5wMGMPyBx0znBVFtdpAuuIQUVTXeGz
ODAeoliIlYyvVFXPWcZlgR3SwtPlijtjPR8IlcvzDJcbF2WpMu7lXFU3SuWw
jusU1SdF9V6AJpFdgNGrssiGq0zmyhsHfiJyLGEGFawe16RHzJllmiTA9WiO
TZN1TMOYv48PUu/pp+hL7y+KXgBbwLKg8QGRRQMFujwQ6zxRJZkZnPx5Aby4
uVQlz/DmcmPJkOHaizhel8wxYIl0/YGMKK2BGimYCuS/WiwUzAJktrC2cCS+
u0wzJWJVVhJaV6C22qMzDgC2bB1fCqnFqsjSeDM8lxoIYEkzEGBfiYg59ghj
4SRXsqywnxz5nDXWCK/hGqlNopJgNTGIMRNZxGDCi6UqhVYlskqDNBUCzGkB
oqPafcJUHA3FEhoDq0FrYHlVAdyulNfnkMdA8gZLxdfKJci3SCstyqKAJnKt
QUxwVXK1yjb477JYlSlOYplW6QXLlSQOo0zcqRZCJkmJzEGlAz7lCqhwvmHV
wjkhEVqKR/rp1GRVqjjVaruO8IKcCkgUE5yyJWDiTd7KAS76+4PXvxbgcaUZ
NtSqegKfoz8DT/jq8Sug4QVI4wLkAOzlD+sUiNIQ/pvLFIRPr2CxsEZWO5Y4
o4kjgUqkPkic5gD1JHcLI83PL5RmkfOkQ26Y6CAZsBiQ3MWGdbzEhaCm62Jd
xqwMKlOrS4lWlJRekP1188WX5XmagQfA7qypUYZA1K2jUWhzmXnKM7eNhZ4r
XEMC4raClUbR4Ro6z6tsMwDb+9WbF4dfTL8YgzxZH4BdgNjcQN/Q8AxYtu62
tmgPSrUCuOKpQN1SFOsKXA/0mBqvgnyOszX9eA2uslgjCaRGPIWdWcMMU9Vs
9a2fwEfmVfKCWgBsuaKpXpQyX2fQW8XUj81nZA3aWOi3lpZaGeFdmW3ASTBt
2VrUwjwQl8UNkLlk0QCXD8KEkopD7uCjtd7xZ1TLNLy7XgD5U/I+IMrqQ2Wt
B5uFO5U/dM6+oiuYeZZCIwNDQeGtbyAFhWXfdDFr0HKgA5yTmTS02+4xNcCJ
pQoYdB/PaUQc56OMwDRxQfdAn4MNiHlknpSeRdEEQKUxaWyrjTXb4ieqSwDr
F5cwDyVLXBUIchz4d9cMx/F6sRSIoulIHFir2CVddgyYD4AzlXTYWqvIRhWi
aA/6dCKrgXpuIW1pEexJ4YHtBv3vQOCE2OEka3ZtUbQPmLVmc626ho3XsDaU
9ZCPyAdCD2TTsUNmd23dYcbPN0aUsDtyR0sQcgIehpKN1i2YVQUib1jqWdsO
q2jsoMY+gHWxkSwPlrJaQ+9gNtG4sjlfFmD6u3xJGw2gLpLSFllxsQEgVtXf
AhyGOqsEhHsC4z0tdl69O3u7M+D/Fa9P6POb42/fzd8cH+Hns68PXr50HyLz
xtnXJ+9eHtWf6paHJ69eHb8+4sbwVASPop1XB9/vML93Tk7fzk9eH7zcQdaF
dEWnB5Q8Z7BVgv/HdUsdgeGKy/Sc1e754el//9dkH9UP3MN0MnkKmsZfnky+
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
ovW7J/a00WT3DiFAVo5bTXbLD7c3mXQ12Y3LeMj5lI4m084maU5B7nAp43aT
vVubXAPQbzXZv7XJogT/3mzyqN2kumP5j5tNblcbbPJFq8mdRH7S1WQXsEF8
pdfLFqWxydPOJstqPVQfYt4kbIwybXF/z6eYATRhkxb393arKoMhVoSmO9Yy
bXF/bzcvhpSZ2rL8aYv7e25WOu0epcX9ugkgbYh2201a3N+7i/vTJvcpIMVk
zvYmTe7bJrsr2sBt8hKbOO6bJNIdf9jkadjkHrq/N2412ZXxtpVwk0mzyZ3C
vzdtNblzlL12E5Pr29pkv90kX0NIsUXKsMmjdpNytbh1Yo/bTZKk2GqbsYnj
Poj8+Xqx2LIGv4nh/seZaOPGimt0sP70yx0qHg1i7TqOsOCbAm4f3zXKKXY+
cWVVq8qCIj/AOUOTSuUi06AMIdX1FiJlmhD90RRyl9V0yx60udnnMgObq+UB
zMbVOeVcr9XGYC5M6sgcV4YJAgP5NJp0osIbhQlHO2hHToAQJSZMkqKa/HBa
pgUtgZ5O+2YT327H+iVwlM5DOvD06goel+G+ZxosisLIHOZMKYglZao+PsBw
t1Q/3BGoPnjwoA7fiL2UHjTth9r+9KlOHTLm5ZxXG2/aWGzN2+vZhmE6JjO6
coUNMasDr12X6b5vWnBeCbsV6iawMDsBjSQfb4m1i6UcE0aYyzuuU3Z+0okG
wUxN4uIlWqcLgCiK+Pmn/9gSQPz8038GIYSfQ4Tgx2WzaBwZx2pVcXqwTu0g
nzIlF75aup3pIDuohWUhjAlip3HXh4OWtKRAQ+UJ/A4r3htBuE5R8+67vJFS
DCZWqlil12YDxwTavNUZtuIVUFAu0sqLyuugHXkFIitX+AIIisw51kfitmiO
L9NG1xJebg4GC9gfhZG+n1SEJXeLKnYaRP3naSvut9kTiBD98H/E6mNn2aWA
CGToR9afQyrxkjy5g8DU0GRMYlQAwTDjJzAR6napO5ZAYvoK0T+ntzHy/I6q
8PiZaubkTRklUNrZO1otCQ9QaiBUQ87pa92fN2Ws+czJpjdGgUkcY4qvvTyJ
ldvhyFdqo0Xv0bBa056yU1asbUmXuLG3XOk+JVylqzVq85K4zKtHP2M2W/3l
GEdgU9logk2uzew6ctHAkcoqeYhmAKV0F10Z/3wSV8GvQMMf1pLLFyl1UmRg
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
pxZGX2M18v8AjGZU/V9lAAA=

-->

</rfc>
