<?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-evans-discardclass-02" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Exp. Implementing Packet Discard Class.">Experience from implementing a new packet discard classification scheme</title>

    <author initials="J." surname="Evans" fullname="John Evans">
      <organization>Amazon</organization>
      <address>
        <email>jevanamz@amazon.co.uk</email>
      </address>
    </author>
    <author initials="O." surname="Pylypenko" fullname="Oleksandr Pylypenko">
      <organization>Amazon</organization>
      <address>
        <email>opyl@amazon.com</email>
      </address>
    </author>

    <date year="2023" month="August" day="10"/>

    
    <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 describes our experience from implementing a packet loss classification scheme to provide these signals and enable automated network mitigation of unintended packet loss.</t>



    </abstract>



  </front>

  <middle>


<section anchor="into"><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 vendors 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>This document describes our experience from implementing a packet loss classification scheme across multiple hardware platforms, which aims to address these issues and enable automated mitigation of unintended packet loss.  Section 2 describes the problem.  Section 3 defines the classification scheme and the accounting requirements with examples.  Section 4 gives examples of discard signal-to-cause-to-auto-mitigation action mapping.  Section 5 details our experience from implementing this scheme.</t>

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

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

<t>Working backwards from the goal of auto-mitigation of unintended packet loss, there are only a relative 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"/> or NETCONF <xref target="RFC6241"/>.  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="class"><name>Traffic and Discard Classification Scheme</name>

<t>We define the classification scheme 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/
    |-- 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/error/l2/rx/<br />
     Frames dropped because they are invalid at L2, e.g. due to failing CRC or an invalid MAC address.</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 potential errors that can cause a packet to be dropped on receipt, e.g. IP checksum errors, malformed packets.</t>

<t>discards/error/l3/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 discards not explicitly assigned to the above classes are accounted here.</t>

<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/policy/l3/acl/<br />
     Discards due to packet matching an access control list (ACL).</t>

<t>discards/policy/l3/policer/<br />
     Discards due to packet matching a configured policer.</t>

<t>discards/policy/l3/null_route/<br />
     Discards due to a packet matching a route with discard action.</t>

<t>discards/policy/l3/urpf/<br />
     Discards due to a packet failing unicast reverse path forwarding (RPF) check.</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="accounting_requirements"><name>Discard Accounting Requirements</name>
<t>Requirements 1-10 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      | Direction | Cause               | Discard rate | Discard duration | Unintended? | Possible actions      |
+--------------------+-----------+---------------------+--------------+------------------+-------------+-----------------------+
| ErrorRxL2Discards  | Ingress   | Upstream device     | >Baseline    | O(1min)          | Y           | Take upstream link or |
|                    |           | or link errror      |              |                  |             | device out-of-service |
| TTLDiscards        | Ingress   | Tracert             | <=Baseline   |                  |             | no action             |
| TTLDiscards        | Ingress   | Convergence         | >Baseline    | O(1s)            | Y           | no action             |
| TTLDiscards        | Ingress   | Routing loop        | >Baseline    | O(1min)          | Y           | Roll-back change      |
| AclDiscards        | Ingress   | ACL                 |              |                  | N           | no action             |
| NullRouteDiscards  | Ingress   | Null route          |              |                  | N           | no action             |
| NoRouteDiscards    | Ingress   | Convergence         | >Baseline    | O(1s)            | Y           | no action             |
| NoRouteDiscards    | Ingress   | Config error        | >Baseline    | O(1min)          | Y           | Roll-back change      |
| NoRouteDiscards    | Ingress   | Invalid destination | >Baseline    | O(10min)         | N           | Escalate to operator  |
| ErrorLocalDiscards | Ingress   | Device errors       | >Baseline    | O(1min)          | Y           | Take device           |
|                    |           |                     |              |                  |             | out-of-service        |
| NoBufferDiscards   | Egress    | Congestion          | <=Baseline   |                  | N           | no action             |
| NoBufferDiscards   | Egress    | 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="experience"><name>Implementation Experience</name>
<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>There are multiple ways that the metrics can be exposed from the device, including SNMP <xref target="RFC1157"/> and NETCONF <xref target="RFC6241"/>, however, we consider this choice to be independent of the defined discard classification scheme.</t>
</list></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="acknowledgements"><name>Acknowledgments</name>
<t>The content of this draft has benefitted from feedback from JR Rivers, Ronan Waide, Chris DeBruin, Marcoz Sanz, Avinash Kadosh and Nadav Chachmon.</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='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="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>


  </back>

<!-- ##markdown-source:
H4sIAJr11GQAA808a3PcNpLf+StwTtXausxMrEdsR95kT5bkWuUkSyvJl0pt
7TkYEjPDFYeY8DHSJNL9lvst98uuHwAIckhqbCe5U1XiIR6NRr/QQDcwHA6D
Ii4StS+O7xYqi1UaKjHJ9FzE80Wi5iot4nQqpEjVrVjI8EYVIorzUGaRCBOZ
5/EkDmUR61Tk4QzaB3I8ztSS4I3EiQ/kgrsfme6H2H0URDpM5RwQiDI5KYZq
KdN8aIagEYbPd4JIFtBi5/nO7vD5q+H28wDGVFOdrfZFnE50EMSLbF8UWZkX
O8+ffwM9bnV2M810udgXJ2mkFgr+lxbiqsiUnAc3agUNIqwrVJaqYniEowdB
Xsg0+iATncJ4K5UHi3hf/L3Q4UDkOoPOkxx+reb44x9BIMtiprP9QAwDAX9x
mu+L70fiGCdBJTy17/Us9Qp1Nt0XB3P5i07pW81lnOyLf+Lc5fyXf5NUNQr1
qLypgT4fiYtVsoLJ3GgP/HmibnLAO2vUdoyjF6ukGmMeBKnO5sDDpdqnZuLy
7eHO9vY3+0BWIO5a3fbO9q73tf31y+rrxc7etv06PvrGtqM/I2iXgCnI17HM
kpU4UoUKSXymwNFbucoFjCgOdTpVOZUfLHUcSRBLD5Ije/2PaHQ1Em8TvYo2
bP4fI/G9DPU4NzSiye+9/Lqa0qudV9+Yr2A4HAo5zotMhiAsl7oE6RGZWoBo
qMjqR6LzXMS5KGZKLLJ4LrOVyONpKhOhJ+J2plLSpwJFFNulGnRKo4bERS7+
qccjIa70XDXhEZsARgaYFyjPEfwQ14cXX51cWHggnTN9q5YqAyDXWszjNJ7H
uXLj+TCLGSjIdIb00cBkgGdbabAFpNW5uMW+CrVdyUwA74QMwxJqlZlUjrOS
SWJAQ49ZHALQTIFK68UC+mKv29kKUZrBREDlSzQKIlJ5mMVjBSDKTKh+C+Rj
3mp6RKGB3noZRwppn1cI4vgqleNEtcx1HhfxlOHARMrUEdcbcBQQ6+dxFCUq
CMBqZDoqWXDN369fQEf9EHzr/QXBNcgAcJRI5PMcUAUhSnOUHEs4IM97GDgj
G4RzHutihvIClDQUrBFBIx9IMlSeI5lAOFB51GSCOrVU6+wcoUiT1A77pHau
czTzGYCxkouAW6QD5hGjYY0nKxGC9QWxzZBxoB/MxA56igMrRCBNumQeA5HW
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
2Wdv3qMoktr69b9Zr9lu+2AAAA==

-->

</rfc>

