<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.31 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-opsawg-evans-discardmodel-00" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Info. Model for Pkt Discard Reporting">An Information Model for Packet Discard Reporting</title>

    <author initials="J." surname="Evans" fullname="John Evans">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>1 Principal Place, Worship Street</street>
          <city>London</city>
          <code>EC2A 2FA</code>
          <country>UK</country>
        </postal>
        <email>jevanamz@amazon.co.uk</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko">
      <organization>Amazon</organization>
      <address>
        <postal>
          <street>410 Terry Ave N</street>
          <city>Seattle</city>
          <region>WA</region>
          <code>98109</code>
          <country>US</country>
        </postal>
        <email>opyl@amazon.com</email>
      </address>
    </author>
    <author initials="J." surname="Haas" fullname="Jeffrey Haas">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>US</country>
        </postal>
        <email>jhaas@juniper.net</email>
      </address>
    </author>
    <author initials="A." surname="Kadosh" fullname="Aviran Kadosh">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Dr.</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>akadosh@cisco.com</email>
      </address>
    </author>

    <date year="2023" month="October" day="05"/>

    
    <workgroup>Independent Stream</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>Router reported packet loss is the primary signal of when a network is not doing its job.  Some packet loss is normal or intended in TCP/IP networks, however.  To minimise network packet loss through automated network operations we need clear and accurate signals of all packets which are dropped and why.  This document defines an information model for packet loss reporting, which classifies these signals to enable automated network mitigation of unintended packet loss.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The job of a network is to transport packets.  Understanding both where and why packet loss occurs is essential for effective network operation.   Router-reported packet loss is the most direct signal for network operations to identify customer impact from unintended packet loss. Accurate accounting of packet loss is not enough, however, as some level of packet loss is normal in TCP/IP networks.  In automating network operations, there are only a relatively small number of automated actions that can be taken to mitigate customer impacting packet loss. Precise classification of packet loss signals is important to ensure the right action is taken as taking the wrong action can make problems worse.</t>

<t>The existing metrics for packet loss as defined in <xref target="RFC1213"/> - namely ifInDiscards, ifOutDiscards, ifInErrors, ifOutErrors - do not provide sufficient precision to be able to automatically identify the cause of the loss and mitigate the impact.  From a network operators' perspective, ifindiscards can represent both intended packet loss (i.e., packets discarded due to policy) and unintended packet loss (e.g., packets dropped in error). Further, these definitions are ambiguous, in that vendors can and have implemented them differently.  In some implementations, ifinerrors accounts only for errored packets which are dropped, whilst in others it accounts for all errored packets whether they are dropped or not.  Many implementations support more discard metrics than these; where they do, they are inconsistently implemented due to an absence of a clearly defined classification scheme and semantics for packet loss reporting.</t>

<t>Hence, this document defines an information model for packet loss reporting, which aims to address these issues by presenting a packet loss classification scheme that can enable automated mitigation of unintended packet loss.  This information model is independent of any specific implementations or protocols used to transport the data <xref target="RFC3444"/>.  There are multiple ways that this information model could be implemented, including SNMP <xref target="RFC1157"/>, IPFIX <xref target="RFC5153"/>, and NETCONF <xref target="RFC6241"/> / YANG <xref target="RFC7950"/>, but this document does not define specific data models.</t>

<t>Section 2 describes the problem.  Section 3 defines the information model and semantics with examples.  Section 4 gives examples of discard signal-to-cause-to-auto-mitigation action mapping.  Appendix B details our experience from implementing this model.</t>

<t>The terms 'packet drop' and 'discard' are considered equivalent and are used interchangeably.</t>

</section>
<section anchor="problem"><name>Problem statement</name>

<t>Working backwards from the goal of auto-mitigation of unintended packet loss, there are only a relatively small number of potential auto-mitigation actions, e.g.:</t>

<t><list style="numbers">
  <t>Take a device, link or set of devices and/or links out of service</t>
  <t>Return a device, link or set of devices and/or links back into service</t>
  <t>Move traffic to another device</t>
  <t>Roll-back a recent change to a device that might have caused the problem</t>
  <t>Escalate to a human (e.g., network operators) as a last resort</t>
</list></t>

<t>Precise signal of impact is important as taking the wrong action can be worse than taking no action.  For example, taking a congested device out of service can make congestion worse by moving the traffic to other already congested links and/or devices.</t>

<t>To be able to detect whether router reported packet loss is a problem and determine what actions should be taken to mitigate the impact and remediate the cause, depends on four primary features of the packet loss signal:</t>

<t><list style="numbers">
  <t>the cause of the loss</t>
  <t>the rate and/or degree of the loss</t>
  <t>the duration of the loss</t>
  <t>the location of the loss</t>
</list></t>

<t>Features 2, 3 and 4 are already addressed with passive monitoring statistics, e.g., obtained with SNMP <xref target="RFC1157"/> / MIB-II <xref target="RFC1213"/> or NETCONF <xref target="RFC6241"/> / YANG <xref target="RFC7950"/>.  Feature 1, however, is dependent on the classification scheme used for packet loss reporting.  In the next section we define a new classification scheme to address this problem.</t>

</section>
<section anchor="model"><name>Information model</name>

<t>The classification scheme is defined as a tree which follows the structure &lt;component&gt;&lt;direction&gt;&lt;type&gt;&lt;layer&gt;&lt;sub-type&gt;&lt;sub-sub-type&gt;&lt;metric&gt;, where:<br />
a. component can be interface|device<br />
b. direction can be ingress|egress<br />
c. type can be traffic|discards, where traffic accounts for packets successfully received or transmitted, and discards account for packet drops<br />
d. layer can be l2|l3</t>

<figure><artwork><![CDATA[
.
|-- interface/
|   |-- ingress/
|   |   |-- traffic/
|   |   |   |-- l2/
|   |   |   |   |-- frames
|   |   |   |   `-- bytes
|   |   |   |-- l3/
|   |   |   |   |-- v4/
|   |   |   |   |   |-- packets
|   |   |   |   |   |-- bytes
|   |   |   |   |   |-- unicast/
|   |   |   |   |   |   |-- packets
|   |   |   |   |   |   `-- bytes
|   |   |   |   |   `-- multicast/
|   |   |   |   |       |-- packets
|   |   |   |   |       `-- bytes
|   |   |   |   `-- v6/
|   |   |   |       |-- packets
|   |   |   |       |-- bytes
|   |   |   |       |-- unicast/
|   |   |   |       |   |-- packets
|   |   |   |       |   `-- bytes
|   |   |   |       `-- multicast/
|   |   |   |           |-- packets
|   |   |   |           `-- bytes
|   |   |   `-- qos/
|   |   |       |-- class_0/
|   |   |       |   |-- packets
|   |   |       |   `-- bytes
|   |   |       |-- ...
|   |   |       `-- class_n/
|   |   |           |-- packets
|   |   |           `-- bytes
|   |   `-- discards/
|   |       |-- l2/
|   |       |   |-- frames
|   |       |   `-- bytes
|   |       |-- l3/
|   |       |   |-- v4/
|   |       |   |   |-- packets
|   |       |   |   |-- bytes
|   |       |   |   |-- unicast/
|   |       |   |   |   |-- packets
|   |       |   |   |   `-- bytes
|   |       |   |   `-- multicast/
|   |       |   |       |-- packets
|   |       |   |       `-- bytes
|   |       |   `-- v6/
|   |       |       |-- packets
|   |       |       |-- bytes
|   |       |       |-- unicast/
|   |       |       |   |-- packets
|   |       |       |   `-- bytes
|   |       |       `-- multicast/
|   |       |           |-- packets
|   |       |           `-- bytes
|   |       |-- errors/
|   |       |   |-- l2/
|   |       |   |   `-- rx/
|   |       |   |       |-- frames
|   |       |   |       |-- crc_error/
|   |       |   |       |   `-- frames
|   |       |   |       |-- invalid_mac/
|   |       |   |       |   `-- frames
|   |       |   |       |-- invalid_vlan/
|   |       |   |       |   `-- frames
|   |       |   |       `-- invalid_frame/
|   |       |   |           `-- frames
|   |       |   |-- l3/
|   |       |   |   |-- rx/
|   |       |   |   |   |-- packets
|   |       |   |   |   |-- checksum_error/
|   |       |   |   |   |   `-- packets
|   |       |   |   |   |-- mtu_exceeded/
|   |       |   |   |   |   `-- packets
|   |       |   |   |   |-- invalid_packet/
|   |       |   |   |   |   `-- packets
|   |       |   |   |   `-- ttl_expired/
|   |       |   |   |       `-- packets
|   |       |   |   `-- no_route/
|   |       |   |       `-- packets
|   |       |   `-- local/
|   |       |       |-- packets
|   |       |       `-- hw/
|   |       |           |-- packets
|   |       |           `-- parity_error/
|   |       |               `-- packets
|   |       |-- policy/
|   |       |   `-- l3/
|   |       |       |-- packets
|   |       |       |-- acl/
|   |       |       |   `-- packets
|   |       |       |-- policer/
|   |       |       |   |-- packets
|   |       |       |   `-- bytes
|   |       |       |-- null_route/
|   |       |       |   `-- packets
|   |       |       `-- urpf/
|   |       |           `-- packets
|   |       `-- no_buffer/
|   |           |-- class_0/
|   |           |   |-- packets
|   |           |   `-- bytes
|   |           |-- ...
|   |           `-- class_n/
|   |               |-- packets
|   |               `-- bytes
|   `-- egress/
|       |-- traffic/
|       |   |-- l2/
|       |   |   |-- frames
|       |   |   `-- bytes
|       |   |-- l3/
|       |   |   |-- v4/
|       |   |   |   |-- packets
|       |   |   |   |-- bytes
|       |   |   |   |-- unicast/
|       |   |   |   |   |-- packets
|       |   |   |   |   `-- bytes
|       |   |   |   `-- multicast/
|       |   |   |       |-- packets
|       |   |   |       `-- bytes
|       |   |   `-- v6/
|       |   |       |-- packets
|       |   |       |-- bytes
|       |   |       |-- unicast/
|       |   |       |   |-- packets
|       |   |       |   `-- bytes
|       |   |       `-- multicast/
|       |   |           |-- packets
|       |   |           `-- bytes
|       |   `-- qos/
|       |       |-- class_0/
|       |       |   |-- packets
|       |       |   `-- bytes
|       |       |-- ...
|       |       `-- class_n/
|       |           |-- packets
|       |           `-- bytes
|       `-- discards/
|           |-- l2/
|           |   |-- frames
|           |   `-- bytes
|           |-- l3/
|           |   |-- v4/
|           |   |   |-- packets
|           |   |   |-- bytes
|           |   |   |-- unicast/
|           |   |   |   |-- packets
|           |   |   |   `-- bytes
|           |   |   `-- multicast/
|           |   |       |-- packets
|           |   |       `-- bytes
|           |   `-- v6/
|           |       |-- packets
|           |       |-- bytes
|           |       |-- unicast/
|           |       |   |-- packets
|           |       |   `-- bytes
|           |       `-- multicast/
|           |           |-- packets
|           |           `-- bytes
|           |-- errors/
|           |   |-- l2/
|           |   |   `-- tx/
|           |   |       `-- frames
|           |   `-- l3/
|           |       `-- tx/
|           |           `-- packets
|           |-- policy/
|           |   `-- l3/
|           |       |-- acl/
|           |       |   `-- packets
|           |       `-- policer/
|           |           |-- packets
|           |           `-- bytes
|           `-- no_buffer/
|               |-- class_0/
|               |   |-- packets
|               |   `-- bytes
|               |-- ...
|               `-- class_n/
|                   |-- packets
|                   `-- bytes
`-- control_plane/
    |-- traffic/
    |   |-- packets
    |   `-- bytes
    `-- discards/
        |-- packets
        |-- bytes
        `-- policy/
            |-- acl/
            |   `-- packets
            `-- policer/
                `-- packets
            
]]></artwork></figure>

<t>For additional context, Appendix A provides an example of where packets may be dropped in a device.</t>

<section anchor="class_descriptions"><name>Discard Class Descriptions</name>

<t>discards/policy/<br />
     These are intended discards, i.e., packets dropped due to a configured policy. There are multiple sub-classes.</t>

<t>discards/error/l2/rx/<br />
     Frames dropped due to errors in the received L2 frame.  There are multiple sub-classes e.g., due to failing CRC, invalid header, invalid MAC address, invalid VLAN.</t>

<t>discards/error/l3/rx/<br />
    These are drops due to errors in the received packet, i.e., which indicate an upstream problem, rather than a problem with the device that is dropping the errored packets. There are multiple sub-classes, e.g., header checksum errors, MTU exceeded, incorrect version, incorrect header length, invalid options.</t>

<t>discards/error/l3/rx/ttl_expired<br />
     There can also be multiple causes for TTL-exceed drops: i) trace-route; ii) TTL set too low by the end-system; iii) routing loops</t>

<t>discards/error/l3/no_route/<br />
     Discards due to a packet not matching any route.</t>

<t>discards/error/local/<br />
    A device may drop packets within its switching pipeline due to internal errors, e.g., parity errors. Any errored discards not explicitly assigned to the above classes are accounted here.</t>

<t>discards/no_buffer/<br />
     Discards due to no available buffer to enqueue the packet. These can be tail-drop discards or due to an active queue management algorithm, e.g., RED <xref target="RED93"/>, CODEL <xref target="RFC8289"/>.</t>

</section>
<section anchor="semantics"><name>Semantics</name>
<t>1-10 below apply to the packets forwarded by the device, i.e., rather than packets destined to/from the device:</t>

<t><list style="numbers">
  <t>All packet receipt, transmission and drops <bcp14>MUST</bcp14> be reported</t>
  <t>All packet receipt, transmission and drops <bcp14>SHOULD</bcp14> be attributed to the physical or logical interface where they occur.</t>
  <t>If a frame is discarded at L2, it <bcp14>MUST NOT</bcp14> be accounted for at L3</t>
  <t>An individual packet <bcp14>MUST NOT</bcp14> account against both the L2 traffic and L2 discard classes on a single direction, i.e., ingress or egress</t>
  <t>An individual packet <bcp14>MUST NOT</bcp14> account against both the L3 traffic and L3 discard classes on a single direction, i.e., ingress or egress</t>
  <t>The aggregate L2 and L3 traffic and discard classes <bcp14>MUST</bcp14> account for all underlying packets received, transmitted and dropped across all other classes</t>
  <t>The aggregate QOS traffic and discard (no buffer) classes <bcp14>MUST</bcp14> account for all underlying packets received, transmitted and dropped across all other classes</t>
  <t>In addition to the L2 and L3 aggregate classes, an individual dropped packet <bcp14>MUST</bcp14> only account against a single error, policy or no buffer discard sub class</t>
  <t>Where there may be multiple drop reasons for a packet, the ordering of discard class reporting <bcp14>MUST</bcp14> be defined</t>
  <t>If Diffserv <xref target="RFC2475"/> quality of service (QOS) is not used, no_buffer discards <bcp14>SHOULD</bcp14> be reported as class0</t>
  <t>Traffic from the device control plane <bcp14>SHOULD</bcp14> be accounted for the same as other egress traffic</t>
</list></t>

</section>
<section anchor="examples"><name>Examples</name>

<t>Assuming all the requirements are met, a good unicast IPv4 packet received would increment:<br />
- interface/ingress/traffic/l3/v4/unicast/packets<br />
- interface/ingress/traffic/l3/v4/unicast/bytes<br />
- interface/ingress/traffic/qos/class_0/packets<br />
- interface/ingress/traffic/qos/class_0/bytes</t>

<t>A received unicast IPv6 packet dropped due to TTL expiry would increment:<br />
- interface/ingress/discards/l3/v6/unicast/packets<br />
- interface/ingress/discards/l3/v6/unicast/bytes<br />
- interface/ingress/discards/l3/rx/ttl_expired/packets</t>

<t>An IPv4 packet dropped on egress due to no buffers would increment:
- interface/egress/discards/l3/v4/unicast/packets<br />
- interface/egress/discards/l3/v4/unicast/bytes<br />
- interface/egress/discards/no_buffer/class_0/packets<br />
- interface/egress/discards/no_buffer/class_0/bytes</t>

</section>
</section>
<section anchor="mapping"><name>A Possible Signal-Cause-Mitigation Mapping</name>

<t>Example discard signal-to-cause-to-mitigation mappings are shown in the table below:</t>

<figure><artwork><![CDATA[
+-------------------------------------------+---------------------+------------+----------+-------------+-----------------------+
| Discard class                             | Cause               | Discard    | Discard  | Unintended? | Possible actions      |
|                                           |                     | rate       | duration |             |                       |
+-------------------------------------------+---------------------+------------+----------+-------------+-----------------------+
| ingress/discards/errors/l2/rx             | Upstream device     | >Baseline  | O(1min)  | Y           | Take upstream link or |
|                                           | or link errror      |            |          |             | device out-of-service |
| ingress/discards/errors/l3/rx/ttl_expired | Tracert             | <=Baseline |          | N           | no action             |
| ingress/discards/errors/l3/rx/ttl_expired | Convergence         | >Baseline  | O(1s)    | Y           | no action             |
| ingress/discards/errors/l3/rx/ttl_expired | Routing loop        | >Baseline  | O(1min)  | Y           | Roll-back change      |
| .*/policy/.*                              | Policy              |            |          | N           | no action             |
| ingress/discards/errors/l3/no_route       | Convergence         | >Baseline  | O(1s)    | Y           | no action             |
| ingress/discards/errors/l3/no_route       | Config error        | >Baseline  | O(1min)  | Y           | Roll-back change      |
| ingress/discards/errors/l3/no_route       | Invalid destination | >Baseline  | O(10min) | N           | Escalate to operator  |
| ingress/discards/errors/local             | Device errors       | >Baseline  | O(1min)  | Y           | Take device           |
|                                           |                     |            |          |             | out-of-service        |
| egress/discards/no_buffer                 | Congestion          | <=Baseline |          | N           | no action             |
| egress/discards/no_buffer                 | Congestion          | >Baseline  | O(1min)  | Y           | Bring capacity back   |
|                                           |                     |            |          |             | into service or move  |
|                                           |                     |            |          |             | traffic               |
+-------------------------------------------+---------------------+------------+----------+-------------+-----------------------+

]]></artwork></figure>

<t>The 'Baseline' in the 'Discard Rate' column is network dependent.</t>

</section>
<section anchor="security"><name>Security Considerations</name>
<t>There are no new security considerations introduced by this document.</t>

</section>
<section anchor="iana"><name>IANA Considerations</name>
<t>There are no new IANA considerations introduced by this document.</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>

</section>
<section anchor="contributors"><name>Contributors</name>
<t>The authors would like to thank Nadav Chachmon for his valuable contribution to this work.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgments</name>
<t>The content of this draft has benefitted from feedback from JR Rivers, Ronan Waide, Chris DeBruin, and Marcoz Sanz.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



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




    </references>

    <references title='Informative References'>



<reference anchor='RFC1213'>
  <front>
    <title>Management Information Base for Network Management of TCP/IP-based internets: MIB-II</title>
    <author fullname='K. McCloghrie' initials='K.' surname='McCloghrie'/>
    <author fullname='M. Rose' initials='M.' surname='Rose'/>
    <date month='March' year='1991'/>
    <abstract>
      <t>This memo defines the second version of the Management Information Base (MIB-II) for use with network management protocols in TCP/IP-based internets. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='STD' value='17'/>
  <seriesInfo name='RFC' value='1213'/>
  <seriesInfo name='DOI' value='10.17487/RFC1213'/>
</reference>

<reference anchor='RFC1157'>
  <front>
    <title>Simple Network Management Protocol (SNMP)</title>
    <author fullname='J.D. Case' initials='J.D.' surname='Case'/>
    <author fullname='M. Fedor' initials='M.' surname='Fedor'/>
    <author fullname='M.L. Schoffstall' initials='M.L.' surname='Schoffstall'/>
    <author fullname='J. Davin' initials='J.' surname='Davin'/>
    <date month='May' year='1990'/>
    <abstract>
      <t>This RFC is a re-release of RFC 1098, with a changed "Status of this Memo" section plus a few minor typographical corrections. This memo defines a simple protocol by which management information for a network element may be inspected or altered by logically remote users. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='1157'/>
  <seriesInfo name='DOI' value='10.17487/RFC1157'/>
</reference>

<reference anchor='RFC3444'>
  <front>
    <title>On the Difference between Information Models and Data Models</title>
    <author fullname='A. Pras' initials='A.' surname='Pras'/>
    <author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'/>
    <date month='January' year='2003'/>
    <abstract>
      <t>There has been ongoing confusion about the differences between Information Models and Data Models for defining managed objects in network management. This document explains the differences between these terms by analyzing how existing network management model specifications (from the IETF and other bodies such as the International Telecommunication Union (ITU) or the Distributed Management Task Force (DMTF)) fit into the universe of Information Models and Data Models. This memo documents the main results of the 8th workshop of the Network Management Research Group (NMRG) of the Internet Research Task Force (IRTF) hosted by the University of Texas at Austin. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='3444'/>
  <seriesInfo name='DOI' value='10.17487/RFC3444'/>
</reference>

<reference anchor='RFC5153'>
  <front>
    <title>IP Flow Information Export (IPFIX) Implementation Guidelines</title>
    <author fullname='E. Boschi' initials='E.' surname='Boschi'/>
    <author fullname='L. Mark' initials='L.' surname='Mark'/>
    <author fullname='J. Quittek' initials='J.' surname='Quittek'/>
    <author fullname='M. Stiemerling' initials='M.' surname='Stiemerling'/>
    <author fullname='P. Aitken' initials='P.' surname='Aitken'/>
    <date month='April' year='2008'/>
    <abstract>
      <t>The IP Flow Information Export (IPFIX) protocol defines how IP Flow information can be exported from routers, measurement probes, or other devices. This document provides guidelines for the implementation and use of the IPFIX protocol. Several sets of guidelines address Template management, transport-specific issues, implementation of Exporting and Collecting Processes, and IPFIX implementation on middleboxes (such as firewalls, network address translators, tunnel endpoints, packet classifiers, etc.). This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='5153'/>
  <seriesInfo name='DOI' value='10.17487/RFC5153'/>
</reference>

<reference anchor='RFC6241'>
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname='R. Enns' initials='R.' role='editor' surname='Enns'/>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'/>
    <author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'/>
    <date month='June' year='2011'/>
    <abstract>
      <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6241'/>
  <seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>

<reference anchor='RFC7950'>
  <front>
    <title>The YANG 1.1 Data Modeling Language</title>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <date month='August' year='2016'/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7950'/>
  <seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>


<reference anchor="RED93" >
  <front>
    <title>Random Early Detection gateways for Congestion Avoidance</title>
    <author initials="V." surname="Jacobson">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor='RFC2475'>
  <front>
    <title>An Architecture for Differentiated Services</title>
    <author fullname='S. Blake' initials='S.' surname='Blake'/>
    <author fullname='D. Black' initials='D.' surname='Black'/>
    <author fullname='M. Carlson' initials='M.' surname='Carlson'/>
    <author fullname='E. Davies' initials='E.' surname='Davies'/>
    <author fullname='Z. Wang' initials='Z.' surname='Wang'/>
    <author fullname='W. Weiss' initials='W.' surname='Weiss'/>
    <date month='December' year='1998'/>
    <abstract>
      <t>This document defines an architecture for implementing scalable service differentiation in the Internet. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='2475'/>
  <seriesInfo name='DOI' value='10.17487/RFC2475'/>
</reference>

<reference anchor='RFC8289'>
  <front>
    <title>Controlled Delay Active Queue Management</title>
    <author fullname='K. Nichols' initials='K.' surname='Nichols'/>
    <author fullname='V. Jacobson' initials='V.' surname='Jacobson'/>
    <author fullname='A. McGregor' initials='A.' role='editor' surname='McGregor'/>
    <author fullname='J. Iyengar' initials='J.' role='editor' surname='Iyengar'/>
    <date month='January' year='2018'/>
    <abstract>
      <t>This document describes CoDel (Controlled Delay) -- a general framework that controls bufferbloat-generated excess delay in modern networking environments. CoDel consists of an estimator, a setpoint, and a control loop. It requires no configuration in normal Internet deployments.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8289'/>
  <seriesInfo name='DOI' value='10.17487/RFC8289'/>
</reference>




    </references>


<section anchor="where-do-packets-get-dropped"><name>Where do packets get dropped?</name>
<t>The diagram below is an example of where and why packets may be dropped in a typical single ASIC, shared buffered type device, where packets ingress on the left and egress on the right.</t>

<figure><artwork><![CDATA[
                                                      +----------+
                                                      |          |
                                                      |  CPU     |
                                                      |          |
                                                      +--+---^---+
                                                from_cpu |   | to_cpu
                                                         |   |
                          +------------------------------v---+-------------------------------+
                          |                                                                  |

            +----------+  +----------+  +----------+  +----------+  +----------+  +----------+  +----------+
            |          |  |          |  |          |  |          |  |          |  |          |  |          |
 Packet rx ->  Phy     +-->  Mac     +--> Ingress  +--> Buffers  +--> Egresss  +-->  Mac     +-->  Phy     |>  Packet tx
            |          |  |          |  |  Pipeline|  |          |  |  Pipeline|  |          |  |          |
            +----------+  +----------+  +----------+  +----------+  +----------+  +----------+  +----------+

  Intended                               policy/acl                  policy/acl
  Discards:                              policy/policer              policy/policer
                                         policy/urpf
                                         null_route

Unintended                 error/rx/l2   error/rx/l3   no_buffer     error/tx/l3
  Discards:                              error/local
                                         no_route
                                         ttl

]]></artwork></figure>

</section>
<section anchor="experience"><name>Implementation Experience</name>
<t>This appendix captures experience gained from implementing this information model, as guidance for future implementers.</t>

<t><list style="numbers">
  <t>The number and granularity of classes described in section 3 is a compromise between: providing sufficient detail to be able to take the appropriate automated actions whilst: a) not providing too much detail which may require deeper understanding rather than helping to surface the problem quickly; b) constraining the quantity of data produced where these metrics are produced per interface to limit data volume and device CPU impacts.  While further granularity is possible, we found the scheme described to be generally sufficient.</t>
  <t>There are multiple ways that we could have defined the discard classification tree, e.g., we could have used a multi-rooted tree, rooted in each protocol.  We opted instead to define a tree where protocol discards and causal discards are accounted orthogonally, as this reduces the number of classes and we found it sufficient to determine mitigation actions.</t>
  <t>NoBuffer discards can be realised differently with different memory architectures.  Whether a NoBuffer discard is attributed to ingress or egress can differ accordingly.  For successful auto-mitigation: where the discards are due to egress interface congestion, they should be reported on egress; where the discards are due to device-level congestion (exceeding the device forwarding rate), they should be reported on ingress.</t>
  <t>Most platforms account for the number of packets where the TTL has expired, and the CPU has returned an ICMP Time Exceeded message. In practise, however, there is often a policer applied to limit the number of packets to the CPU.  Implicitly, this limits the rate of TTL discards processed by the CPU and hence it limits the number of discards reported.  One method to account for all packets discards due to TTL exceeded, even those that are dropped by a policer when being forwarded to the CPU, is to use accounting of all ingress packets received with TTL=1.</t>
  <t>Where a no route discard is implemented with a default null route, separate accounting is needed for any explicit null routes configured, in order to differentiate between interface/ingress/discards/policy/null_route/packets and interface/ingress/discards/errors/no_route/packets.</t>
  <t>It is useful to account separately for transit packets dropped by transit ACLs or policers, and packets dropped by ACLs or policers which limit the number of packets to the device control packets.</t>
  <t>It is not possible to identify a configuration error - i.e., when intended discards are unintended - with device packet loss metrics alone.  For example, to determine if ACL drops are intended or due to a misconfigured ACL some other method is needed, e.g., with configuration validation before deployment or in detecting a significant change in ACL drops after a change compared to before.</t>
  <t>Where traffic byte counters need to be 64-bit, packet and discard counters which increase at a lower rate may be encoded in fewer bits, e.g., 48-bit.</t>
  <t>Where the reporting device is the source or destination of a tunnel, the ingress protocol for a packet may be different to the egress protocol, e.g., if IPv4 is tunnelled over IPv6.  In this case, some implementations may attribute egress discards to the ingress protocol.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
l4Zl1djMX8cabx/+H3YJJ3TGZAAA

-->

</rfc>

