<?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-ietf-opsawg-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="2024" month="February" day="05"/>

    <area>Operations and Management Area</area>
    <workgroup>OPSAWG</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The primary function of a network is to transport packets and deliver them according to a service level objective.  Understanding both where and why packet loss occurs within a network is essential for effective network operation.  Router-reported packet loss is the most direct signal for network operations to identify customer impact resulting from unintended packet loss.  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>In automating network operations, a network operator needs to be able to detect anomalous packet loss, diagnose or root cause the loss, and then apply one of a set of possible actions to mitigate customer-impacting packet loss.  Some packet loss is normal or intended in IP networks, however.  Hence, precise classification of packet loss signals is crucial both to ensure that anomalous packet loss is easily detected and that the right action or sequence of actions are taken to mitigate the impact, as taking the wrong action can make problems worse.</t>

<t>The existing metrics for reporting packet loss, as defined in <xref target="RFC1213"/> - namely ifInDiscards, ifOutDiscards, ifInErrors, ifOutErrors - do not provide sufficient precision to automatically identify the cause of the loss and mitigate the impact.  From a network operator's perspective, ifInDiscards can represent both intended packet loss (e.g., packets discarded due to policy) and unintended packet loss (e.g., packets dropped in error). Furthermore, these definitions are ambiguous, as vendors can and have implemented them differently.  In some implementations, ifInErrors accounts only for errored packets that are dropped, while 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 have been inconsistently implemented due to the lack of a standardised classification scheme and clear semantics for packet loss reporting.  <xref target="RFC7270"/> provides support for reporting discards per flow in IPFIX using forwardingStatus, however, the defined drop reason codes also lack sufficient clarity to support automated root cause analysis and mitigation of impact.</t>

<t>Hence, this document defines an information model for packet loss reporting, aiming to address these issues by presenting a packet loss classification scheme that can enable automated mitigation of unintended packet loss.  Consistent with <xref target="RFC3444"/>, this information model is independent of any specific implementations or protocols used to transport the data.  There are multiple ways that this information model could be implemented (i.e., data models), including SNMP <xref target="RFC1157"/>, NETCONF <xref target="RFC6241"/> / YANG <xref target="RFC7950"/>, and IPFIX <xref target="RFC5153"/>, but they are outside of the scope of this document.  We further limit the scope of this document to reporting packet loss at layer 3 and frames discarded at layer 2, although the information model could be extended in future to cover segments dropped at layer 4.</t>

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

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

<t>This document considers only the signals that may trigger automated mitigation plans and not how they are defined or executed.</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="problem"><name>Problem Statement</name>
<t>At the highest-level, unintended packet loss is the discarding of packets that the network operator otherwise intends to deliver, i.e. which indicates an error state.  There are many possible reasons for unintended packet loss, including: erroring links may corrupt packets in transit; incorrect routing tables may result in packets being dropped because they do not match a valid route; configuration errors may result in a valid packet incorrectly matching an access control list (ACL) and being dropped.  Whilst the specific definition of unintended packet loss is network dependent, for any network there are a small set of potential actions that can be taken to minimise customer impact by auto-mitigating unintended packet loss:</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 other links or devices.</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 operator) as a last resort.</t>
</list></t>

<t>A precise signal of impact is crucial, 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 links or devices, which are already congested.</t>

<t>To detect whether router-reported packet loss is a problem and to 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, for example, 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 component/direction/type/layer/sub-type/sub-sub-type/.../metric, where:<br />
a. component can be interface|device|control_plane|flow<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/
|   |       |   |-- l2/
|   |       |   |   |-- frames
|   |       |   |   `-- acl/
|   |       |   |       `-- frames
|   |       |   `-- l3/
|   |       |       |-- packets
|   |       |       |-- acl/
|   |       |       |   `-- packets
|   |       |       |-- policer/
|   |       |       |   |-- packets
|   |       |       |   `-- bytes
|   |       |       |-- null_route/
|   |       |       |   `-- packets
|   |       |       |-- rpf/
|   |       |       |   `-- packets
|   |       |       `-- ddos/
|   |       |           `-- 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/
    `-- ingress/
        |-- traffic/
        |   |-- packets
        |   `-- bytes
        `-- discards/
            |-- packets
            |-- bytes
            `-- policy/
                `-- 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>

<dl>
  <dt>discards/policy/:</dt>
  <dd>
    <t>These are intended discards, meaning packets dropped due to a configured policy. There are multiple sub-classes.</t>
  </dd>
  <dt>discards/error/l2/rx/:</dt>
  <dd>
    <t>Frames dropped due to errors in the received L2 frame. There are multiple sub-classes, such as those resulting from failing CRC, invalid header, invalid MAC address, or invalid VLAN.</t>
  </dd>
  <dt>discards/error/l3/rx/:</dt>
  <dd>
    <t>These drops occur due to errors in the received packet, indicating an upstream problem rather than an issue with the device dropping the errored packets. There are multiple sub-classes, including header checksum errors, MTU exceeded, and invalid packet, i.e. due to incorrect version, incorrect header length, or invalid options.</t>
  </dd>
  <dt>discards/error/l3/rx/ttl_expired:</dt>
  <dd>
    <t>There can be multiple causes for TTL-exceed (or Hop limit) drops: i) trace-route; ii) TTL (Hop limit) set too low by the end-system; iii) routing loops.</t>
  </dd>
  <dt>discards/error/l3/no_route/:</dt>
  <dd>
    <t>Discards occur due to a packet not matching any route.</t>
  </dd>
  <dt>discards/error/local/:</dt>
  <dd>
    <t>A device may drop packets within its switching pipeline due to internal errors, such as parity errors. Any errored discards not explicitly assigned to the above classes are also accounted for here.</t>
  </dd>
  <dt>discards/no_buffer/:</dt>
  <dd>
    <t>Discards occur due to no available buffer to enqueue the packet. These can be tail-drop discards or due to an active queue management algorithm, such as RED <xref target="RED93"/> or CODEL <xref target="RFC8289"/>.</t>
  </dd>
</dl>

</section>
<section anchor="semantics"><name>Semantics</name>
<t>Rules 1-10 relate to packets forwarded by the device; rule 11 relates to packets destined to/from the device:</t>

<t><list style="numbers">
  <t>All instances of frame or packet receipt, transmission, and drops <bcp14>MUST</bcp14> be reported.</t>
  <t>All instances of frame or packet receipt, transmission, and drops <bcp14>SHOULD</bcp14> be attributed to the physical or logical interface of the device where they occur.</t>
  <t>An individual frame <bcp14>MUST</bcp14> only be accounted for by either the L2 traffic class or the L2 discard classes within a single direction, i.e., ingress or egress.</t>
  <t>An individual packet <bcp14>MUST</bcp14> only be accounted for by either the L3 traffic class or the L3 discard classes within a single direction, i.e., ingress or egress.</t>
  <t>A frame accounted for at L2 <bcp14>SHOULD NOT</bcp14> be accounted for at L3 and vice versa.  An implementation <bcp14>MUST</bcp14> expose which layers a discard is counted against.</t>
  <t>The aggregate L2 and L3 traffic and discard classes <bcp14>SHOULD</bcp14> account for all underlying packets received, transmitted, and dropped across all other classes.</t>
  <t>The aggregate Quality of Service (QoS) traffic and no buffer discard 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 subclass.</t>
  <t>When there are multiple drop reasons for a packet, the ordering of discard class reporting <bcp14>MUST</bcp14> be defined.</t>
  <t>If Diffserv <xref target="RFC2475"/> is not used, no_buffer discards <bcp14>SHOULD</bcp14> be reported as class0.</t>
  <t>Traffic to the device control plane has its own class, however, traffic from the device control plane <bcp14>SHOULD</bcp14> be accounted for in the same way 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 Hop Limit 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:<br />
- 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>Example Signal-Cause-Mitigation Mapping</name>
<t><xref target="ex-table"/> gives an example discard signal-to-cause-to-mitigation action mapping.  Mappings for a specific network will be dependent on the definition of unintended packet loss for that network.</t>

<figure title="Example Signal-Cause-Mitigation Mapping" anchor="ex-table"><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="contributors"><name>Contributors</name>

<figure><artwork><![CDATA[
Nadav Chachmon
Cisco Systems, Inc.
170 West Tasman Dr.
San Jose, CA 95134
United States of America
Email: nchachmo@cisco.com
]]></artwork></figure>

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

<reference anchor='RFC7270'>
  <front>
    <title>Cisco-Specific Information Elements Reused in IP Flow Information Export (IPFIX)</title>
    <author fullname='A. Yourtchenko' initials='A.' surname='Yourtchenko'/>
    <author fullname='P. Aitken' initials='P.' surname='Aitken'/>
    <author fullname='B. Claise' initials='B.' surname='Claise'/>
    <date month='June' year='2014'/>
    <abstract>
      <t>This document describes some additional IP Flow Information Export (IPFIX) Information Elements in the range of 1-127, which is the range compatible with field types used by NetFlow version 9 in RFC 3954, as specified in the IPFIX Information Model in RFC 7012.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7270'/>
  <seriesInfo name='DOI' value='10.17487/RFC7270'/>
</reference>




    </references>


<section anchor="where-do-packets-get-dropped"><name>Where do packets get dropped?</name>
<t><xref target="ex-drop"/> depicts 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 title="Example of where packets get dropped" anchor="ex-drop"><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 the authors' experience gained from implementing and applying this information model across multiple vendors' platforms, as guidance for future implementers.</t>

<t><list style="numbers">
  <t>The number and granularity of classes described in Section 3 represent a compromise.  It aims to offer sufficient detail to enable appropriate automated actions while avoiding excessive detail which may hinder quick problem identification.  Additionally, it helps constrain the quantity of data produced per interface to manage data volume and device CPU impacts.  Although further granularity is possible, the scheme described has generally proven to be sufficient for the task of auto-mitigating unintended packet loss.</t>
  <t>There are multiple possible ways to define the discard classification tree.  For example,  we could have used a multi-rooted tree, rooted in each protocol.  Instead, we opted to define a tree where protocol discards and causal discards are accounted for orthogonally.  This decision reduces the number of combinations of classes and has proven sufficient for determining mitigation actions.</t>
  <t>NoBuffer discards can be realized differently with different memory architectures. Hence, whether a NoBuffer discard is attributed to ingress or egress can differ accordingly.  For successful auto-mitigation, discards due to egress interface congestion should be reported on egress, while discards due to device-level congestion (exceeding the device forwarding rate) should be reported on ingress.</t>
  <t>Platforms often account for the number of packets dropped where the TTL has expired (or Hop Limit exceeded), and the CPU has returned an ICMP Time Exceeded message.  There is typically a policer applied to limit the number of packets sent to the device CPU, however, which implicitly limits the rate of TTL discards that are processed.  One method to account for all packet 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 no route discards are implemented with a default null route, separate discard accounting is required 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 plane.</t>
  <t>It is not possible to identify a configuration error - e.g., 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, i.e., with configuration validation before deployment or by 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 that increase at a lower rate may be encoded in fewer bits, e.g., 48-bit.</t>
  <t>Aggregate counters need to be able to deal with the possibility of discontinuities in the underlying counters.</t>
  <t>In cases where the reporting device is the source or destination of a tunnel, the ingress protocol for a packet may differ from the egress protocol; if IPv4 is tunneled over IPv6 for example.  Some implementations may attribute egress discards to the ingress protocol.</t>
  <t>While the classification tree is seven layers deep, a minimal implementation may only implement the top six layers.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAGrwGUAA809a3fctrHf+Stw7Q+2m921Xo5tpUm7luVGqSWrkl3fnJ5e
B0tidxlxiQ0fkjaW+1vub7m/7M4DAEEuSa3spKc6p80Sj8HMYGYwAAbj4XAY
FHGRqH0xTsVROtXZQhaxTsWxjlQi4FucyvBCFeJlnIcyi8SZWuqsiNNZICeT
TF3uU7eR3+GirXWkw1QuYKAok9NiGKtiOtTLXF7NhhE3XiCE4dZWEMkC2u1s
7ewNt3aGW0+CEApmOlvtixjGCoJ4me2LIivzYmdr6/nWTiAzJffFm6XKCPtc
yDQSxzKVM7VQaSHGUB9c6exilulyCS1Pz8fv/yKCC7WC0ghpKFSWqmL4ErEL
grwACB9kolPAZKXyYBnvi38UOhyIHAjK1DSHX6sF/vhnEMiymOtsPxDDQMBf
nOb74oeROLyUaU4lTPoPep56hTqbAd8X8led0ncOcFWxL7bFaRanYbyUiThN
ZKgG4r3O8nm8FOfUhFqHcQEMea3TyHQPgX/74vBgZyx2Xo1NUZkWyLd3f6Vv
tZBxsi9+VoCDXPz6Z0mDj0I9Ki8E/QX8fx4db0bidJWsliq90B4tbxJ1kQOT
skZtF1F721vircqylRhfKnHikXCuZAEiSCWZmsH87Yv3Y4+k58+2t5436Dn3
6dHLVVLRslinAebieylrU6Gm00ytqmLC+4cyjUGIxIkqUFry+rRs7+6CoKT6
klXkvVz5VJRpurqUDToOanTsbT3rpePnOWDz558ZiVGKE+0RMR6Jv8pI53OP
jPFlnMnULyc6DkCjtDhf5YVagKAepeGoTsrTLfFe5YV4K/MF9H+ZjXxSoOQH
nfdR8mR7d6+PEnlBGP05RERoToKUbcul2qeG4uzVwc729vN9UGdrd/y67Z3t
Xe9r+8nT6mt3b2+v+nqy/cRr+fXO3nb19fT5ky37dfjyuW1Hf8bwnYEQ64U4
lFmyEi9VoUKa3RnYnCu5ysmkHeh0BuzC8vGljiOZhsqD5NS//kezdj4SrxK9
ijZs/veR+EGGepIb9SE27T19UpH0bOfZc4/AnaeWwGA4HAo5gTmWIZiwt3Ml
llm8kKBy0zJlqvRUSJGydIs4F4UGOwr2CK20WJKlZ+MJphimIxPFXC2EDEOw
kmDFsb0Uucou41CJRF2CydeTn5Fll2okxLs0UhnZTmw80cVcXM1Vpgjk1Xxl
hhCJznOhw7DMcnEVF/M4raOl8hzMdix5QQFV5RFcE20tPYx5pkuw3cOMVhoV
1YZACoENCw2iHsUZQBF5PEsN3DVoxI84wqGnKxHC+qIXwIN4ATAL0IS8THAt
E9MMBAa0FBYNILg2JCD0dg7DwnJX0tITqWmcKmSqiL31deGWSx/fzC6XA+BW
HM5FmMg8j6exIkJyZdAnRFUqJ4lCadIAFNCw9CziIp5JO98deAYkLos4isBk
BbD+ZToqWUjM38f7sVf6KfjW+8MedmTkyDorB96McilxXEWE+wTwRuThZ0Qq
B/wBWIkucx/LAcyanKVgi8CuiUzrQoSyhC+cVW6AkgVfgM1yCQoMCzYLeQ4g
4McSGsXEptDNsOGPcjM85BlGQupTeQ61TYEiO5YgPo6vIL5Hp5ZawGmur0A1
MgDwvUpx+V6C6MWAtp3O0M2OD9zOLQwSZmWI4k8qRHOdlxmSLTs4RVoj8xhY
wAwFtJg10AO5lcWzeWG4gMjn6pcSkSNuGd5IHEJeADN9LmFvZhBwO8cGZAmg
9CoDu2hhhiDhC+gMxGpg+AI0G5wWNWJLpK7jnBi8UEUWh2xWnbjX5xwGYa0h
zn78aFaDT5/EkJY9oDGeHqXGx4QO8fRNWfifR+lhlsHopoo/oHekYfoKxPAS
1Fzk5RTmIkY15RlCOtDEGcEOZYJjWYOAJLP4Ac+sBBKXW3gFk/8KzcS6FjyA
iQMruWSbNqjRQlwEtoCtQaxo+tvUVzxUo9lo4Ey2caGhUVSSVi11EoerR4Rd
uwVYA5Hp5ZJZrpBfj2DhKjMgKFvoDNBk+0MTE1fiIheTeFaCMNK0XcIoyGmk
Akeey0viR0JuuIp4OYliMOgZFCQr4BIYkhzVzDWz9qOaRlqAwM+ANSOFCaE1
ASscQbnRDEDIkEEGFNQeqNFIA8IrKjgIAia3CQZ7KWyOiK58eKgyIDqAL2wr
Vk1kQZKWtIQiq+xkOFEH3FJm3zdmOSTokR7wD+LSRClcIUKABppCzKlxzswr
iR0ga4wcLrUwFNiWqGlc8hB4zStvmCiJGg+uXmF1r3XZAfJI3dCrAHUzelKR
V1fayAotuszTRF+xIXx19N+izGmd1NmVJMfhHBhVVpaRCHdKjiwGsDJHK6Jx
PLCCmsn0VBToy8A/RS5YfKq1z1sbYGuTrICJvmYaa2tUMwiMXS5+k6Vaxgvr
G0URaK5dq+M8LwHcZCWMPmMrWYPSPmckzKhDa0v8Rku7QH/VSBG5Vzyp6DV/
+mSIXieQCiO1RHgprZ0o6GimEL81iUd2ZBp2xBpWrBLlr+ZL0vzKQpI/RB4g
/G+B/hOAEeRYm6WpFRlQ0yRCL8FXgYfxSIHBQrDcLH80QJVJSnI3z0+OT81q
AbsFpPTk8O3Bm5NXXIgbA5Dpx+LH8clfjJjD7gDboaCw3FIxbiiweFIWlR0A
LzPHNcOYftjWLM2HJ0JA7XsF3jaZTZGAXBQ9rZFjrUugAMYkcgUgdgm3aQar
nm/kXf0OIJ/AbqKczXnt6eakuq68lWlZkDuhoRq9/FzNEKFqEXAD7I1EEJyb
PdEuqEgeZvGE3VG70o+EbbDndKgdGSSmMkMkmupa4hSTt2WgPKkMj61F3lmz
ym7SsNBD0nf8gQoy9HTDuCQL8AnZqo2XKNfxtXiB7hFsURlD3onlD2AcsGEx
+UPk3DuxY1cHJo0IMM4M7DfAvXlgZgx59oBIe2BQfEASQ6Yc9kPATvC1Yjwb
SAtqh7WkMqi+WQjLw0yBoq9wauryhOP5EmNhmpWQZMvuCFCdFhIKwdWbwdS1
Wo1lIs3xGDpCYI69lc6YY1xdr1UIu6oIxwda41QneraCHUFRfdU2BMyXC4CE
52m5uHf87vztvQH/V5y8od9nh397dwTbcPx9/v349Wv3IzAtzr9/8+71y+pX
1fPgzfHx4clL7gylolYU3Dse/3iPFfnem9O3R29Oxq/vrbGTHVzafRDnwSyT
n5wHVq5JO14cnP7f/27vgTH4L3NIAXaDP55tPwUbiqt4yqPRNPAnMjIAicO1
Fje04F6EchkXMDnkHOXA7VSgMQS2/uEfyJl/7os/TsLl9t53pgAJrhVantUK
iWfrJWudmYktRS3DOG7WyhucruM7/rH2bfnuFQbBKZsIgQ4An8XixtIYjvqe
kgVpzBZzDtsVlRdDOmMYdLmwZn9v1A511W2p3PrSPDUA8SaP8Ao3ZAw1530o
nXjAigKrjNl+w4KISzP7BOQrostVqPqqhuuk22eyH8M+VjvW3pq1z0AR8SRO
L3LS31BnWbmsjmNQinFdjYtvyEHM6BwjgwWJjBN6CNyRDyiwve06UeSnGaM+
UW7zvLJbITAQQKcUYJ3iiICCkwpWZgpePe/kGcXmCLaHocvhBdpAIMnVQUMc
oj8EAItMJ0BkXoiH44PXvDGpoYdrJ7jsuVkxrd9RbTi6PR7alptJdh7MgJ18
mBtbVbgpA895gfrpDgkKc9zkTgmsBzap7YhTWNFztXYyBB5ebQUCotoR3Q+C
7ZF4i7tkCZjiKdqAZn7AW3LChsvJSD/WmREMmBisM0dvo2BnJM4ULOLpXQFN
0KsG3HQFaxdvb2ALAlKGzjaSqo0DQ0NnFtIoAHfgTAPjCIoEeQhpVaIVjA8H
ualZjejMgbY3JHlRzWsInozEIShuQhtn7Dsv8TDa7EubWvsIbagEtySnozjw
msCMjt3RijnXc06+d4py67EFTDKdVZidGrdMtWkC+2BaEskTGdhqiUKNh8K4
gWGa63NUHYiE1ekxDwPysgAHx6BzK9vtYSBJbgIGJlpVg+MS7Q7R7O416z8T
lXYO+IiIu+PCDnygfbTRAlixjPPYdypEQDIw7lFsK2i2B0YX0VcBXSyz6jha
SfQ/c+tMrx+CGUVpO3Ah2ceaDEczsh2pWaYazXa5WWTtWK1yjysTHbZUBq8s
guBf7/JCv1djv9noAWvJiV3iLu4SD5rBVLE9x3UCj7zCnA2Rkx89Af8ztT2b
mxbYnxwfvRgeHdXOvaD/ZnsZkFVGXWx7m210gaqNXcpT1LrzJCXtOR44Ss2K
el2AnJOYgHRa35EOu666NrX+9hgwcmYAz5KbF8/oJJDH3eYikK/ZPkhcHR2S
tcD7LqM9U7Bb+oodhrwAy0BsCvViqVPgy2O+HwBYj4vVUj2m7c/jvJwM6RN/
uI/RaPSYD3cGfKCzL0QAW10HzFoV8jKnMlQ3rMo3ZiH8gG64uqEzExFMRsIN
XvWcIatuFP0HGoUjgWO7RYmNxk3kTj3NyZIxJrWTLusO5CUtx9MSjzXRdoPM
kr9P/gWodoEHZ3T9Y492DBxfJnC9RoxgxeY9okEp2blJdoPgX+4vGAU3w2HF
hMfBDUwsFxFZpsAUGtS9QlOR7DTKTDlvi9eqfoKqyapo1iCg3XZAl3st5abO
8K6zvmUkrxbcgBAWrA7wmwzRTZBXSwcr3QOJDQYSvQNhzeXX69Bvg2zr26Ha
2k4uiQ24ZNt0I29J6+GS/bttoG4uYekvOq+DtiDJWH3YaqnsGbOfMAsabNFa
+U9uyHR9yD4yu0nEEmsUKpgWlq+hPlkNDe2myAHabQfka6gr7yCkWd8ykle7
Jnu1BpsM0U2QV9sie36TrklptukeqKmhYkPItr4dqq3t5JI/Sb1D9CJvSevh
kv27baAeLkEp72XbZaxViA207Lp/3joEvWYDsvADDd8DyYy2AbQ4pf33h4UM
f1N4l+CYfDHAnzyA1LQborgFYpdNMHVd87Kp4tLEzFV4kZeLvtnxZWETmIui
/KCuQ6UiFf02EC0/ue2Xw8Q2RZEAlkvwPXuQFBsAxPpUf6BtZ/dc90HBOtyM
JZ9nwbD7/OrLrcaSrhi7JEGstW6BiOV0+X43K3OLFcHhZNjCHZ8DPcttmxJt
wpibrnF94LcBIH6oDobepqr+QP2LVAr7mi4ZvAu62XL6+QDIUYp0yxojvBZt
EIwSTUqMjqh3t5it+ZGusoeJ/Qy0oH0/0sd0zY8UjY5dQ1oA1ZD4pbyNn4VQ
2/j51FhdcWViTU/8qvpoNUC77YCsW1krb6Grrb5lJK+25jCtNdhkiG6CvNqG
w9Rs0jZHbW26B/LdSnEHyLa+Haqt7eSS+33bEL3IW9J6uGT/bhuom0u1jZ8Q
dQJrClur7BmznzAL2iqsX76msH5lH5ndJK5v/HxYvob6ZDU0tJsiB2i3HZCv
oa68g5BmfctIXu2a7NUabDJEN0FebYvs+U0s/X0Did6BmhoqxGaQbX07VFvb
ySWH4G1D9CJvSevhkvt9y0AWVLt8+Rs/v2enEBtoxXX3vP3UL+htIm27tYH1
iWgltOFZbjpezYVbq+wb0EfId+HasP786Wnxe/y/VjPqQ+8a2SdvfVQL2jej
PkZrZrTZsWvIOqEEyj/0fxzYBu4Q3IfqfKEuCtsp8weurHUXys3yOgwLx8pa
G3EWknfYH+AtqYwiuquXCVGtrotBFXs1ruK6MJyCL8Tw5o2vLuwtBQYaTJQf
j2xvlfGuyL4sPMD5ES8pbmfJ15Uf7/OkRV7hJ3zm0PEXBI5Vhla8x9nHi8Gc
4wTcHX51zbJQMq3C9aqIOROfK13wBF67EtRRWwQk3iURtnirXuHBG08wSNm1
QeaVif2rD2NiMmK+jnNXOa932CDdNuQAr4LmdC0+x8cVjactUxkn+HFwdjCw
Bw9irmREl4nm+3h8YC/0Bvwagsv//np80kLSbkUS85evkegR0C1UMasHNhrH
hJaUS3zNJhfuLjuTJnKbgs85+pYvWTnYmC7liY/25r0R/X0716pgU+aGOzsy
qA/E8dt3wh788FWa5YujAsOLDMFVOM+lynK6TK2KzBCJSmfFvMZizbLNb/ba
Oe0d7TimZ+720FFHt+t8Sfj27eshYy4ewuf3eskBrI94pvZF/AitU6iGJkoo
hgLoJB56TTHypNBa4MXmhOMTQYGGOb1ExC7Qx0YuJRrAjkQXEe48ifF3LyRq
EuOiqV0sE0vHikMgOjhE50wMdmwFA60OBaJbxTbv0mK8N4XfDHkZL1WCN91u
AvHdsEzc/Fu94oMkUzwS43TlpM3drSLOMEdgI2KMm8L77FlqAqkxOHWCQTlG
9kz0Qa7tjay5pzfhhI7CaiHtYxvGtlyCklN0ObfnV0a/lKpUXkzGyCirC4WK
kyFxyRGhq7nguFvAmaEsqvfXMplp4Md8UTHo7PAlBi7go0wOcDh48/LwNccy
4BPHT5/Q2p+7YOGP913gsGfTg7MSo9+2h9tbYC9sJJGdQvP+AEPfVp4R+EZk
0Etsb5suud8nwkgdnoXHZAyrfhyUMk4SfKpZ4BtQimAhiyuq+3GyW0vQdHOr
nrNi07U62TwK9JwoYcNzKKLly8Ga0E58WlcUWTwpi0qWlvNVjs+ZEF6iZ/TT
3cvb4BejCd4TFRIaiqQZp2R+YfUu8fUk4UZ0UAAsjlkTS+C3iu1DGlyWbFwC
iTOFHHC5Deq2Yu5eg+IDkkRVgRFsOAfWa6IoZfpFsTx19AzHNsdvtwO/3d8E
vyeAn2FZHQtZIAuqkNx1PLEFvwGgqcFVAp9UILm19xhMKxgTXM053oViMzAG
xpKAAXEGtJxJlLVR8DWHQckZoEphXYAPjuZxxAsHcVwwKPvBIRhOWeLz32Tl
u0d2ER+0xJjYtwZhRm8eAADHvzm/6GkTu7/B7KJZBYE9N1F2D/+mzx/VkAXj
ZkxaE21i0u+N9DOKkrKOsFXAiq8VNc6tkDXptUOsSbHF3MxeJYS0sgyMuzng
p2ofGjwAP4bGGwXPR+I9Ppgt1p0d7yWWeSPn3BYkQoMtzUyUdY233jMWa9xM
GNYo2N4ChkxhIZpOMTKSLTw+aQezH/MiiFFng3WcfZPmQhmleTS1BZAxRLAK
nvRMmI03ph2XmEMfXMYx/J76+u/QTP+GqW9A8ExrTT2Np5qjal9JXMKNNJiw
LQMdNBbWskP7luXjffuspVrJgmAM/iq9I0OZYv/3lzLOFD/MoWnCeZDi3kzr
6J49mRFHp5d7tTUCXeYrCtwEX5L7oy/gB2LZrafdbYK7dbn32J71WDW4Sx/a
Qt7SA09J7U5+szH8HnaEYFyR6fHgaz88zdspoXP6mh5ikTu82pQ1zqNCOr/e
kDcdnfqY43ep++3eWAFm5/Hm2T1KTa2kVY4d61B+G52qBePbRKC/TxuVzR6V
e9ovCLf3c+Jg9Uqc87uwA3oUdlw9eTrmV2AYUcq/WmJK2/+Cjx/V9ZBeWICx
moHI1U4ueh6k9b1FM/hYA+teOtiA96sYA+zVesjuRk8hpuS7gN9gwI1qEZlf
dZ+GrP21t/2q4+Or7lZ+eXDjckPxytH3dyNoMtdKLYT6x41451jyJ/g6baZ+
4N6tB3bdGLSXUuy5/XAR5jeNVh0w/yNmYc3+mBNyOntq0PHOHrWYxZFLv3sh
c94Mw8ebh9uweD3Cnz/W+tJjF3dWg08b0D+56yyY5yvo6eAjrHX+3rT+pK/q
dcZQT4f2dcZNHw+aphjpwKOPrGjA/uO3jgk1DE5qrdxTknrvO2JwoFNwWWb0
SLWC3ZyF/BGX//g7YHDmndx0Y9AuB/hsaEjPhsxrIYfB6A/2+HX0B9H7hzqN
DZul7R+/ySzYUygH5d8+C20YTOOZeY7YicFdZ+EuGByZc0g+K7G2r4nBFqHQ
nAX/xZd7kNmPAR7XNWb8Jeu0OTC+Gw/IInmWrOLB5n9d60L7R9MiNUyRh0Gn
39MylpeUzCv9Uov05RhsNgsvaCMZSvBdcEdPMvnvnQX/ESQuMAs8bv23YmA3
n43e/wH+ge8zftwX960bzEnzvr23oc997xM/1npgReKB3TI/cBlCwRY8gO12
Ui7S1ne8fAwclnSefmDyH0h745ebmk6fPqjudEDo8Xma7eKSKRhgNtuZPS6u
52EIjsYn4/XxY5nK1rHXxyUAdxvzAE8h8CQXrdzH+6H32czHhpJzIiN5KQ7m
MpwvTP7ArkyQXRkgbe7HgTgYe2kewbPGMw96xU+n0+OFymDbR5WHnPMxDXlg
P+njOLxI9VWiIpNf5ON96Ur4ZGONefy6Dy+POQsNMwXTstJBzkSlsA0q6ASG
7iqVish40NcPZ+IMX/EDqWc6lZikE7gNxMyzGG+LX2RlbA7Nj2UW6l+R4F9N
MjwEEwTvad6i6kZgVm24/yT6t468YcTGsF8ECY7Dov2uu54Psf3Ou1gt6Zze
HPKNz48OBiKfS/TF2CTj+T6+CbQPwOv36O4kmjUuUVN+qqtqxZQXrr5JvIP9
8/58K/OZIHxT+fkgDk7ffSmIL8XiK7at//NZvEBB/hAuSxNrVGj8+ExEhAkg
6el+y2Jz2bNObDLfd1lNu0AENfi+oP0eX/XwmNrP3/4rsPm1YdM9/E6I0/nK
EvkdHhWF1deR0Wf+emGO+fjrkKry1n4O5g3+5tGK67tQeWpuve9a51Hp/f3u
8xcIyudNR2P9f2bfKcOkrw7g2Wv0/Y3gmWC5vrrN9dn0K7PldPNO1VOIIKhO
xdaacTwE7POTndrXLoKoOf5cV2Dd5uzwwi3ugLrZbW7eoyiSNoeVLrMa/upa
sJm3uKOzelS/VT2s0oLhpY396DlA5nxd0oa8wf6GE0l0ZRubcS6I9aRjlCcM
U9q6DGQt6dT4EtJd35n0mw/w1qrAxpx4alZyxmo6Gzap36q8ehkGoJlkG2m5
mGDmMBh7lkkQIo5iAa7ZK9RaoqwqL1yVslRSFgQgJ84xTdJRgekRKcJCkzB5
CR05E5ufyngJHZcZpRGpspfZ41tO6Ckx/zbyBGOVOOuGgcPX3uhJzTGRYSZ+
KWPwC214mEnjahJG4CW6i1VMVpQddK6SJeUqwhTaZp/yS4kxJ8wDSjy4tP46
Jr2sQigwNQrFu3CrS9zPKJNJmzaY6JVwvhRMdTe2SftsrkCf3Zgcw5xdD0z6
QEpuUfEeHeEZOMIZJajFqErOzjKp5bSdmjCGQuacL3SjHEU2v0rzbthluOLk
jdrm/PAScDWTcmD2DcyD66c/wWwhnJOQ8gJRwhHJowwxiSf6tNBtIMwHpqOF
bYVLNkkZY2E3IyNKPKKXJsrFZSAxKT9IyU0fL50FZkOFzar0y7Lmta6GOdEz
lgyX0NvmBwavuwyNRht9Qf3Qi4k5Cst9feEsuLmdo8bs2Lw7lBi5eWXEKWxO
9IvGpbiJxcqUTOJfKZ7MpdPlcEdXIBZqoTPM7hfOY0wQhKZoZJNS22RBcm0M
yhFUiyFai2ohLHigKj08cQtnu0o0IhqpGQcVHTbok+FVquSlS6oSELn7f3fl
aTP8NuGxvnHiOB/WQw5utLGfRi2rFLV0p/OoY0hDP8UanVrjCvNcqLQWUFIX
imaMsIusorhJFAt7tm4jLu1NNQeQPnLpzcl8YIeMkn5Rcm9xdHB8Kt7GYBkO
TQeY8DwHI+Ty02GCPN5GYvyIjeKnhSXmma2SlK7jnZskpR6/AA8vesJkyVu4
GEaCxrpBV2QADEl1c+TSNIM+hJRACVB9k1Jsw1wTQs34HHvl3ZhmBFsF2ioy
gBTL3MwETdnZHOWYqtHknauiAw2JRBv/owiUR5gRMfEukuLzWFabcUKsdoDR
t9sU7cVHCKnmINS6pfET2lI3DG6fSkyrh04bd4F9vlpK4qBVSQ+bOLexIZHL
cWfjSD0guReKPqBE2Bi+QypiDQSttBNVXHHy6c7YBOODeg9sLQs4wrmzoznC
d7G8NtIaA8+OKEcbcBrNhDfxlnST6dvkPlxTJjwvM1Xjg9eckJgn2fyrAC0d
mg1tqFyPDvQEFlGAGlNBWeXtAun/IxKyLZmiGArOcUfSuPbIgPPDVovz0Jh1
RsG/7LcZxukfKmqutLW8bvEUiTeRorWnDV4AL6xBufd8ATtQanaOaTIqSme0
rHUc8UjI1amk6yH+OVFTyomuloleUTAwh19yxjrOpIcBFOQ1VLkEQVw9fMHO
4jpl6tDBpFMw8ngQPEXdva8lwML4EBPvmDHGxkH6em84iQub974e3mibkw2h
0BmJhgC92gRsXsZGzRzWwSqqbT5lhZUAFkSPZ3bvGY5CwXbjKuCvBZ3qn8EA
n8S9VmBZim2wY0TzAtwqYSFV7oWEF7poQZt4O8wjRuGqbsXx0razHJncqbku
M77/8G/zKLt8UaYpJl/lXM7G9FmXyo8O5OB5dgZcIJ2qd/gGRZBimHBggozC
h9mnKXrLy5Fn/+GNZspxHMW5JS7wyS0tuhVRDhN8T65CS9478hZjXOpwBTEx
s5FSywGpQxrjv/XRiLVFPCgg05Wzmw3rdw57PgYCm6r/B/RJ6c1ebQAA

-->

</rfc>

