<?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-03" 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="15"/>

    
    <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 due to errors in the received L2 frame, 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 potential errors that can cause a packet to be dropped on receipt, e.g. header checksum errors, incorrect version, incorrect header length, bad options.</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                             | 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="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>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>
  <t>There are multiple ways that these traffic and discard metrics can be exposed from the device, including SNMP <xref target="RFC1157"/>, IPFIX <xref target="RFC5153"/>, and NETCONF <xref target="RFC6241"/>.</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='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="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:
H4sIAAaE22QAA808a3PcNpLf+Stw3qq1lcxMrIcfkTfZlWW5VjnL0kry5lJb
ew6GxMxwxSEmfIw0iXS/5X7L/bLrBwCCHJIa2UlqVZV4iEej0S800A0Mh8Og
iItE7Yujm4XKYpWGSkwyPRfxfJGouUqLOJ0KKVJ1LRYyvFKFiOI8lFkkwkTm
eTyJQ1nEOhV5OIP2gRyPM7UkeCNx7AM54+5vTPdD7D4KIh2mcg4IRJmcFEO1
lGk+NEPQCMOnu0EkC2ix83Rnd/j05XD7WQBjqqnOVvsiTic6COJFti+KrMyL
nadPv366E1zr7Gqa6XKxL47TSC0U/C8txEWRKTkPrtQKGkRYV6gsVcXwDY4e
BHkh0+ijTHQK461UHiziffGPQocDkesMOk9y+LWa449/BoEsi5nO9gMxDAT8
xWm+L74biSOcBJXw1L7Ts9Qr1Nl0XxzM5c86pW81l3GyL/6Fc5fzn/8iqWoU
6lF5VQN9OhJnq2QFk7nSHvjTRF3lgHfWqO0YRy9WSTXGPAhSnc2Bh0u1T83E
+dvDne3tr/eBrEDctbrtne1d72v72Yvq69n2M6/u+c7etv06evO1raE/I3bn
gDdI25HMkpV4owoVkjBNgb/XcpULGF8c6nSqcio/WOo4kiCkHiTHhPofUexi
JN4mehVt2PzvI/GdDPU4NxQjUuy9eFZN6eXOy6/NVzAcDoUc50UmQxCdc12C
LIlMLUBQVGS1JdF5LuJcFDMlFlk8l9lK5PE0lYnQE3E9UylpV4ECi+1SDRqm
UV/iIhf/0uOREBd6rprwiGkAIwPMC5TuCH6Iy8Ozr47PLDyQ1Zm+VkuVAZBL
LeZxGs/jXLnxfJjFDNRlOkP6aGA5wLOtNFgG0vFcXGNfhbqvZCaAd0KGYQm1
ykwqx1nJJDGgoccsDgFopkDB9WIBfbHX9WyFKM1gImAASjQRIlJ5mMVjBSDK
TKh+e+Rj3mqIRKGB3noZRwppn1cI4vgqleNEtcx1HhfxlOHARMrUEdcbcBQQ
6+dxFCUqCMCGZDoqWXDN3y9/gI76LvjG+wuCS5AB4CiRyOc5oApClOYoOZZw
QJ4PMHBGFgnnPNbFDOUFKGkoWCOCRj6QZKg8RzKBcKDyqMkEdWqp1tk5QpEm
qR32Se1c52j0MwBjJRcBt0gHzCNGMxtPViIEWwximyHjQD+YiR30FAdWiECa
dMk8BiKtiXwBjEMhdXI9EDIHywzsTuAzae1EerKuGzD749RKAA64PqEBzh/p
Df/pFAyUBPVOyBzCRz5HOU/L+RhmiSx1wiRDQ4+ZLEQoUzEGGZRXoOqFthKm
mhRCFGpEOQOKo7I2xLsxRSvVMFWAA0yUoEowjErzMiPRF1k8nRUGKWIqoSLp
B46Kba4zjXrFbRDlOTRCBQI1mYMW6yxXI8EirG7inNCdqyKLQzbSPk4AOlKT
OGWb9MsvZtG4uxNDWrKAePHkODWeAJA5npyWhf95nB5lGYxpqvgDekeapMAq
dl5OgC4xWo8FUQuxh8kDvUm/4adlcAjMWlXiiXMOZQnkBXriByMOiuX4g6XM
GhCVtyi+siEjgNNjAb/yBasYYhunxnnJiYygWJlCfWT9bRN/8SQeAW2twTTd
oU1UshXTSRyutgi5dgUST9Ro6kEwhhZor5BwW7AIlhmK8sCYQuJOzEKKwi3n
43ha6hLpnbLYLmEUpDlOAkeeyaWqjDBAB0hzQBbMSwYFyYr1iXTRNbNqhGRR
zEOj4TkrFFkorHATalkxBliUgBEC3DROA0S9qAAhDNTEdTgKGyOiq9oChMZL
I1NPZLpyE83LBdnfucamxkm1Eg4kSZl2r4wNJqiRHlTg4zSEyYJqEDlqtDKc
RFKOc1rTaAmgVRSaWmVpX8iQ+jn4biC4LbrGlhu0cYTK+RuupzLMsHJeJkUM
XUEgsuga570Ai4huYj6wrIvntBbIKALZz43MxXleqo7Vd6NVF/wg4x3ueHNj
v4rMlNdi19CU67vpirXempOpn0pY6JAsID8xKKy6kUgof/Q9MQVdz10Vomzl
ha3xsNBDMi74A2c59CZobOxcLhbItQruM8C5AA99A34VyGiexohtMiziQPTH
dosGkv6YJvjYYPaYRJQEFJwKoCzOdCkTFBRy46AWEI7IQmUhiPtUAZNWAD44
Y/IKcEUKQoEcHCR63cExXs73YCDJYQFcrskQ0gSQ1FPNbm+TJp1M71mB19bf
hS6M39NOcgCGZhK2NdsjcYnLmwSKL+MQ7HYSp1doF3IYF9lJxSSsX0Ep1iJX
qC5XGVYGOyNxrooySx8IBsmCVNYO0u5InGiYEPiAuJyxpSBDZyAEezCWTpIh
9UUShMgF5hI1Nw3ZdM9pvSeDTVIY+UoSPIP9KYhEQkscdp2VYFvMErK2vm3h
Yi4FKFABw+IeGOWBHZNqG2N8vJoPco9/AUs0ORXGtHLLVJsmuOLi0sAqNrD1
EiUY94JoU3nGda5UrktYbRp5nPEKTPvS4uPRmiktk0zJaOUNwOwyvDOsRG2r
uRcRbVndWpP1bwKl5QLpHPbNYE8GlEC2Wa8xn+kyidp9xsonIQhoqqLYVhCz
B4JPO3CBhcUCLInddU6UBHFle0UCseZFsmq0ukYo7uRLkpduaTLNVL3VLreK
yswptqvbG5nf4Xpd8NYitzMA441z22PPxLDFrCVAUjLLCzToS9ybgBujM+Qq
Wif0S0Oj50KPwZqmtsfF+5Mz44puP3sBrihM4P3R5eHp+7dcjIcVd3coeIyK
2PZ2GbiuukMknfasKqRv3Ys0OUnYO1U3sJ0ypv/auGTKnLR17mirJRUwssse
mOjg0sgzUq52wlZBuWAoaLsJfovx7voDo+4w7FlQUcALFAn2AyZgsvQ1L8F5
kcEOGcn6x6R4FWowEynQ8o/T4hUW8PYSYNmCYrVQ9nciVyqzH3k5HvqV+N0s
Y68Nvwbsre0LEciRcMNaC0SL3USG6tZYExGMR8IhUzWbItVvFf0DjUIQZRjP
7e2Y+LeR28EYH9EyxXdVrXualyEYlHxS4r4ELTrIM/mmdBQAGl+g50t2wm4o
DBxfvHClR4yikSAyWZSSndtkNwj+x/0Fo+B2OKxm/FVwC6LARTQtU2AKDepe
oalIdhplpnySwcYuX6v6EarGq6JZg4B22wEt91rKTZ2hXWd9y0heLbgYIaxj
HeA3GaJ7Ql4tecjdA4kNBhK9A2HN8vk69Psg2/p2qLa2k0piAyrZNt3I26n1
UMn+3TdQN5Ww9Ced10FbkGS8Pj5tqewZs39iFvRoNFor/9ENma4P2TfN7ili
iTUKFUwLy9dQf1oNDe2ekQO02w7I11BX3jGRZn3LSF7tmuzVGmwyRPeEvNoW
2fObdDGl2aZ7oKaGig0h2/p2qLa2k0o+k3qH6EXeTq2HSvbvvoF6qASlfCLU
LmOtQmygZTf9fOsQ9JoNyMKPNHwPJDPaBtDiFHbScfRxLsNfFd4ykelnA/zR
A0hNuyGKeyB22QRT18WXTRWXGDNT4VVezvu448vCJjDnRflR3YRKRSr6dSBa
enLbz4eJbYoiASwX4Hv2ICk2AIj1qf5IW9FuXvdBwTrcpiWfZsGw++z6863G
QmZxseqSBLHWugUiltPx+Xr/HzukeRMMsV6GXeS5h7o1xFTHzO7TGX+g/tUi
hQ1GlzBsii7Wl9li0s2FLghGGMclxgnq3S2Ca/6Yq+yhQf/8LWjfH/MxXfPH
RKNj15AWQDUkfilvA2Uh1DZQ/mzsyubKTLlndP2q+mg1QLvtgKx7VitvmVdb
fctIXm3N8VhrsMkQ3RPyahuOR7NJG4/a2nQP5Ltn4gGQbX07VFvbSSX3+74h
epG3U+uhkv27b6BuKtU2UELUJ1hT2Fplz5j9E7OgrcL65WsK61f2TbN7iusb
KB+Wr6H+tBoa2j0jB2i3HZCvoa68YyLN+paRvNo12as12GSI7gl5tS2y5zex
8+8bSPQO1NRQITaDbOvbodraTio5BO8bohd5O7UeKrnf9wxkQbXLl7+B8nt2
CrGBVtx08+3HfkFvE2nbrQ2sP4nWiTY8tE3Hq3lga5V9A/oI+R5YG9afzp4W
v8f/azWjPvSukf3prY9qQftm1MdozYw2O3YNWZ8ogdKY9pZ8XMAeFTzLJgD7
zR1sd8tpf0jiYnNqPphaZyRmE6lmY/zzT74DDCXKKKKEF5kQ6uqmGIiDBYZ0
4htxYDOKMN5no44mPzOzkbJczOUKz9a9/BobeMUYTC3sIt5QhsKCQ3om4vIx
8grvMImw4y8I3OrEux/QZthdw7Rocm9JPx0eJrvEJNjEHF9yEYV3O6zPJipm
Gk9knGDU7PD8cGC3s2KmZETRLvN9cnBoI05V4d/fHbwfrSO46yF4SQkfNuUm
vwdBpi4MgFlQHDnCJKqQI42iXOSUtG3DXQOMQXJeD+bTuIgqRfko+OiFwmND
JRv2beQIjRBVk17gEluqPAKDsEvj46ioS5bhRDOXVZTylBaFoTRT051oGGgD
yhPKKJtyqTLMWPOLTKdEpdNiNhBjCYBZXkZE2ha6ewcHVkB4VpS6leSEpZsd
zYEjUZeX74Z8LsJ82hfxFu5bQjWk/eIrEUMBtKJ8hkJrkehrjKMTJdNomK/y
Qs2xGbTDLkjmRAOoLlzduYTF1Cb9uRQpS1xM85vLIpxR3D9dcWi9gwh0VmFA
HlgBQG3FeVUJYSAhIHyYV53Dbwa9iBcqwbimQYACZKljvuElH0WYspE4AHxc
VI7SUm8WYJxizPvCyOgUw86Y1YvpRWPM7SD9VybbjsN4ChUuW5uSsZEeK40u
ufyYKsxYTxysmwPKlZjE05LknYC2ijsGTw12vlobNIBnaKC72GWY5TEKZ4dB
UrM+iCTOC/Hk4PDdVjt0a9U3HmFtWiprh+wdfNwrbR546sHWxGZ1mZwUk/bf
MhSdjdw7iLW5xv0Ec4EGAJeXAoPlGSZLYf2T87O3W2w3msJRuRRdo2EKzRIG
ogQVbsvpwD+VqlRe4sfIiJbLT46TIamLE2xM8agSFzmJnKHMZSqnnAomk6kG
3ZjNjaacH73BfAq87nF3NxCHp2+O3nGCBV6duLvzV8qDKvPu3M+8++UPVU7e
Rz8nr2/N5IWzBmd7uP1UyMUCtNIoo9UVQ20QIWPObAYXaZS/wFTqhdlErNdf
uYQ27sZ5Mwfu1kO1EJhYfk6JyRTLpwXx5MPFJRLd5glhds0Dul/89fTDuzeU
hlQUWTwui8rcLGarHJOdkXuJntJPF/T3c1fpwsAIM3aOMReVfARaL13+Max6
73YGmGtL+L4/JZwr60WJt9BmF1N7DlJatcGJKqWbiOtnMxfkVMZpbpKhEV3w
TgovdQU+a9fLFKUxSZGDJCSqyswwjDKpCzhXPoPD7LZPxWS3jsnuZ2LynBQM
xoFPyt2CuRnA/jjNQQhRP9EDkxxLvAmSrKorArlznwZ+voiTEbpnwwm72J9T
3MwQwYsmZn87vWjF6QkYEzYhW78nfi9HdDPDOOxWsCvyVYibHpgm4/PcjuDz
nrNHG8x37KSFfWCWSU4Qt8bTpfaWYx4v+Hokvrd6lCm7K3ALKhlR8Fhz9PyJ
Qs7FxXlo0K3MXHCpMb/KEnP2wSSGB9tPSUvfxJMJJjqyPcWLaXd3YJHBLQff
xEuCfAIM3bI3ZjAhbVDtRZ15Dyor4tIVpUn+fhpsY46sEYmGtXNLO239fGNU
swyU9SU5LYz5a9KnjKTBOnBkM6h/+YNNpq4sfBAc5OA206IMIsJbBs+4kxOD
RJViqnXkVtXjs+VezZDiHuOaUirBzebemA/m50LZFCh7aA9L+nLvK3tMZEX6
IX1o33tPDzxgtYcAm43h97AjBAfVND0aPPczxDy3EN152i2sNiWKcz5whs83
pEpHpz6y+F1gL+nHQ6uxArDuPoe93ZcRr8oPYoHP1+ZZG1214Hsf6/v7tM2x
2aPy4/oF4P5+TgxADs7Ansbo913wNYRDuoNwUiXCn/ClA9A3c/3gATmg3zh9
7bvt4GXdmyFYU/OZvk7t1r9g51TBdnK/lqP45T3unf/X3vbLjo8vu1v55cGt
y55lm9z3dyuIwGulFkL941Z8cFcc/gxfjlk275t7tx69dWPQXkpZ2vbDJWPf
Nlp1wPy34MKaUTBn3XQQ1pjHB3tCZJN4qfTb1zLnnT18nD7ZhpVkC3/+UOtL
90DcEZO9v/FQLpjLHehGAJYt9L1t/Ulf1T2GoZ4M7RJ+20eDpn3EeeCxTVY0
YP/pG0eEGgbva63crYt67wdicKhT2M5O6cZSBbvJhXyLy3/4DTA4906gujFo
l4Pqeo25VeMwGH1hN/qjL0TvH+o0+Y+N0vaPX4UL9jzNQfndudCGwSSeskfd
jcFDufAQDI7NSTXv2K3ta2LwlFBocsG/GmUvQd2DAR4+Njj+hnXanB8/jAZk
kTxLVtFg87+udaH9o2mRGqbIw6DTHWkZy3u1wyv9XIv0+RhsxoXXtEULJbhl
uLkimfx9ueBfEcQFZo7HyL8rBvZIoNH738A/qEX38CzjsWXqY+tjPraO1zlo
82PYsyblnF4/sFcc3X0uPJE8rt1Y9x9Dwq2p/ejxlulOKV7r4uuoeFIxzWRa
Jhw4gM25PUCxV5cpfpi7+8p0OxAvKMFmGy9XjgFNpdJ9E5mkG27Vawd8U7jx
1AFeF+SQwwI6LTK6GLj+KgVfpt8Xcst7S4ECZFqLeRnOLHSOxeHxhtl4QwUQ
LePjHvcwiX9aOlMJx9pAdEs+cvTungqAEl4lq1divEV3kUHC4tTG5n4q8Yo7
EyuSBUX2ojLE3bs9bcmVu5FPN89tA0SqOuSEwZMYNiIMZYmcV+bCJSnT4dkH
c4kSr3V/D+RQYsIPJNSYhlfsjJM+wCt6E12aK+PmwlvFSmYELLuwYuB9ropV
IzzbbQm70OtGFFm8xhMV3KHSjV37FgCdt7S/tIVX7Mxpe70v3T2UPMYw05qO
hamx+cAXISTwFAhXaFAJnL7CACPV5YWSEV9qNXcRzWU+xbSmLt5tNCAG7vuk
X1YLb2mgqZ5izD1Z0UstdG0RnLUyNDfzq9vbLkCGb9tYWgMPPaE31235yuz6
9W46y36vX9ePuWx8A/z7JM4peuaerLBRHlMAsjXXGT7mEM5ivNaLF1JJQvhy
r1yDTlpbO4JfOwem8XkIogyFeOi1DMxKqC4BNi+t71dSXyevDaYz9ErqqwvP
5k2K6h6xO99zpySv7oHOmjLkR3W8q9RPOF5sVdYolBe7wp3nVi8ChkIjgVGD
E3xbyD0gUTtXrouH96iHQRsPsmYyF8b/H7j3HFC9sSKj2/l06CyOD0/OxGUM
OntkLgIAs/NcThWdNS/wCa8YL0+7G798thvjbemC3ugysUaKJ8XMbLYy7Yia
U2tABu/8zm14eMA6QD3z6kY1dMT5OFaAtoV83dnEp3BS9AwLLUowqgehGtz1
twSHsU9TMpozTSg3T+4br87k9WNCJhXYmiXeQ5/p3KRV+K+pjFceceg9s7FC
SahCbBUpBua1K0qjqD31hLhY3WmGEFhNAaNvtkcY4OHDd4leIjv+njb6r65Q
N8zQmUiwiJQIzx0GsO4uZPPBKfINSDSIOOnKRfW9rrkXfqbHcug4n1TGmhFa
ds3y3XfMaXaVXpjaThwZ3dPRbDxcLoVNZsGQ0zHlvAB90aR4/LYTNm/uUEwm
LtZyB1DaTNXB4TsyY4a1OStYS4dmQ+M3bKAczXiCnccLOw/yT+w5mf+6WJUF
wEsA7zaHNofIEL6WLcFPnFSvjAyN9Wcc/Nv6zsXAZyDXXqLwF6F4grM3Udla
joYXO4elKvdyFrADvZLEQRGjmk747MKOuNXnSJta/jlWE3qlSC0SvaIwPL0D
aF6j4DwGPJwln6F6KQRaeOhOClrTTB26njKzrgyCH2Eg7vvaRXY8bBa8umeM
sPF8nu8Nx3ExsGSsBTZtc5vaFWJsDEPX+K4ImNuMTaAJo4F90+Yxw4nCSoBr
s3D2XuIoo1oAzouaGVaaZ+tyXWa8c/LPAejdpaJMU5VwOM4ZHevf+BE7l/Hn
XAQjuareyeAH4kCxCcSAhkhQEmA5oYCMffshRp8A15q2t7JoROdSuJiGlWEz
fBPpEUUIe71M9p7borxW3I2jBEZP0xsW9agfJaklJS3yzbc0BjC/t8f/xUX4
BCgW4RBtD2zAbutChSV52IfmPSJp0yRzU9O50wqqSYL5x7cybBf3uJEBFptn
Ge0a6j2NRTu+g/cH6+PHMpWtY6+PSwAeNuYlmQ2d6OkKxiqqr9qQvKO9Uhig
Q54/wmjwowH/izkM+Pv86G8fjs+P3uDvi78evHvnfgSmBcdlq19Vz8PTk5Oj
92+4M+ZE1IqCRycHPzxi/j06Pbs8Pn1/8O4Rb6v958WQFKz8tFQtwN2iCHJQ
2+C+Pjz7v//d3gMJ+A/zrOzdnfl4uf1iDz7QWvNoFKLnT/QfA/C08JVRTLOF
5TeUi7iQSc5PPlI4idPngi/+gZT557740zhcbO99awpwwrVCS7NaIdFsvWSt
MxOxpahlGEfNWnmD0nV8D36ofVu6e4UY4QuvUn0NRmVa5UnZEpsg1SK3nPCc
FvziDqXEgvEnH3kMO9YJp2aQvk/ApNNZF319dy7O4yWt/eewi0vF9xKEfSAO
Z1mMGc6vszIGZp3Ahkn/LC5k+vNAHCzB1OYz8Z8y0vAPWQEZySV0gp3nHNPo
6PVUHCUI2IxH2nkG0yqm+2fRH5ykqUWxhC37nIOJtB1ryd+uv5fansddrBaU
K2USQg4ujg/BQs9oSeQTRlzs8NEXaw/rueFu48fHT4ma8DKoasX0FOeodn71
gOM8788/NPtEEP7J36eDwI3JZ4L4XCy+5KPC//4kWqCgfwwXpbkEU2j8+ERE
hLm70dP9nrPTZc+x5yb8fsjhcBeIoAbfF7Tf4qs2WP0w+tf/Cuwj9NmNGH4r
xNlsZSf5LT4HGlZfx0af+eu1SSXhryOqylv7OZi3+NtcFLh5yCzPTEb6Q+u8
WXp/vzn/AkGv6NOup//PbHhlmPTVBVVO8/5G8OzZQ0/d5vps+mFC9+adqi18
EFRJHmvN+LJCdvNVslP72kUQtTgW1xVYtzk5vLsQD0DdHCJs3qMoktr69f+x
000xRGIAAA==

-->

</rfc>

