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


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

]>


<rfc ipr="trust200902" docName="draft-opsawg-evans-discardmodel-02" 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="January" day="15"/>

    <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:
H4sIAGmSpWUAA809a3fctrHf+Stw7Q+2m921Xo5tpUm7luVGqSWrkl3fnJ5e
B0tidxlxiQ0fkjaW+1vub7m/7M4DAEEuSa3spKc6p80Sj8HMYGYwAAbj4XAY
FHGRqH0xTsVROtXZQhaxTsWxjlQi4FucyvBCFeJlnIcyi8SZWuqsiNNZICeT
TF3uU7eR3+GirXWkw1QuYKAok9NiqJe5vJoN1aVM82HErRcIYri1E0SygIY7
Wzt7w63t4faTIISCmc5W+yKGwYIgXmb7osjKvNjZ2noOPWSm5L54s1QZoZ8L
mUbiWKZyphYqLcQY6oMrnV3MMl0uoeXp+fj9X0RwoVZQGiERhcpSVQxfInpB
kBcA4YNMdAqYrFQeLON98Y9ChwORA0WZmubwa7XAH/8MAlkWc53tB2IYCPiL
03xf/DASh0gelTDtP+h56hXqbAaMX8hfdUrfOcBVxb7YFqdZnIbxUibiNJGh
Goj3Osvn8VKcUxNqHcYFMOS1TiPTPQT+7YvDg52x2Hk1NkVlWiDf3v2VvtVC
xsm++Bn5Lhe//lnS4KNQj8oLQX8B/59Hx5uROF0lq6VKL7RHy5tEXeTApKxR
20XU3vaWeKuybCXGl0qceCScK1mADFJJpmYwf/vi/dgj6fmz7a3nDXrOfXr0
cpVUtCzWaYC5+F7K2lSo6TRTq6qY8P6hTGMQInGiCpSWvD4t27u7ICipvmQd
eS9XPhVlmq4uZYOOgxode1vPeun4eQ7Y/PlnRmKU4kR7RIxH4q8y0vncI2N8
GWcy9cuJjgPQKC3OV3mhFiCoR2k4qpPydEu8V3kh3sp8Af1fZiOfFCj5Qed9
lDzZ3t3ro0ReEEZ/DhERmpMgZeNyqfapoTh7dbCzvf18H9TZGh6/bntne9f7
2n7ytPra3dvbq76ebD/xWn69s7ddfT19/mTLfh2+fG7b0Z+xfGcgxHohDmWW
rMRLVaiQZncGNudKrnKyaQc6nQG7sHx8qeNIpqHyIDn1r//RrJ2PxKtEr6IN
m/99JH6QoZ7kRn2ITXtPn1QkPdt59twjcOepJTAYDodCTmCOZQgm7O1ciWUW
LySo3LRMmSo9FVKkLN0izkWhwY6CPUIzLZZk6tl4gimG6chEMVcLIcMQrCSY
cWwvRa6yyzhUIlGXYPP15Gdk2aUaCfEujVRGthMbT3QxF1dzlSkCeTVfmSFE
ovNc6DAss1xcxcU8TutoqTwHsx1LXlFAVXkE10RbSw9jnukSbPcwo6VGRbUh
kEJgw0KDqEdxBlBEHs9SA3cNGvEjjnDo6UqEsL7oBfAgXgDMAjQhLxNczMQ0
A4EBLYVFAwiuDQkIvZ3DsLDelbT0RGoapwqZKmJvgV249dLHN7Pr5QC4FYdz
ESYyz+NprIiQXBn0CVGVykmiUJo0AAU0LD2LuIhn0s53B54BicsijiIwWQGs
f5mOShYS8/fxfuyVfgq+9f6whx0ZObLOyoE3o1xKHFcR4T4BvBF5+BmRygF/
AFaiy9zHcgCzJmcp2CKwayLTuhChLOELZ5UboGTBF2CzXIICw4LNQp4DCPix
hEYxsSl0M2z4o9wMD3mGkZD6VJ5DbVOgyI4liI/jK4jv0amlFnCa6ytQjQwA
fK9SXL6XIHoxoG2nM3Sz4wO3cwuDhFkZoviTCtFc52WGZMsOTpHWyDwGFjBD
AS1mDfRAbmXxbF4YLiDyufqlROSIW4Y3EoeQF8BMn0vYmxkE3M6xAVkCKL3K
wC5amCFI+AI6A7EaGL4AzQanRY3YEqnrOCcGL1SRxSGbVSfu9TmHQVhriLMf
P5rV4NMnMaRlD2iMp0epcTKhQzx9Uxb+51F6mGUwuqniD+gdaZi+AjG8BDUX
eTmFuYhRTXmGkA40cUawQ5ngWNYgIMksfsAzK4HE5RZeweS/QjOxrgUPYOLA
Si7Zpg1qtBAXgS1gaxArmv429RUP1Wg2GjiTbVxoaBSVpFVLncTh6hFh124B
1kBkerlklivk1yNYuMoMCMoWOgM02f7QxMSVuMjFJJ6VIIw0bZcwCnIaqcCR
5/KS+JGQG64iXk6iGAx6BgXJCrgEhiRHNXPNrP2oppEWIPAzYM1IYUJoTcAK
R1BuNAMQMmSQAQW1B2o00oDwigoOgoDJbYLBXgqbI6IrHx6qDIgO4AvbilUT
WZCkJS2hyCo7GU7UAbeU2feNWQ4JeqQH/IO4NFEKV4gQoIGmEHNqnDPzSmIH
yBojh0stDAW2JWoalzwEXvPKGyZKosaDq1dY3WtddoA8Ujf0KkDdjJ5U5NWV
NrJCiy7zNNFXbAhfHf23KHNaJ3V2JclxOAdGlZVlJMKdkiOLAazM0YpoHA+s
oGYyPRUF+jLwT5ELFp9q7fPWBtjaJCtgoq+Zxtoa1QwCY5eL32SplvHC+kZR
BJpr1+o4z0sAN1kJo8/YStagtM8ZCTPq0NoSv9HSLtBfNVJE7hVPKnrNnz4Z
otcJpMJILRFeSmsnCjqaKcRvTeKRHZmGHbGGFatE+av5kjS/spDkD5EHCP9b
oP8EYAQ51mZpakUG1DSJ0EvwVeBhPFJgsBAsN8sfDVBlkpLczfOT41OzWsBu
ASk9OXx78ObkFRfixgBk+rH4cXzyFyPmsDvAdigoLLdUjBsKLJ6URWUHwMvM
cc0wph+2NUvz4YkQUPtegbdNZlMkIBdFT2vkWOsSKIAxiVwBiF3CbZrBqucb
eVe/A8gnsJsoZ3Nee7o5qa4rb2VaFuROaKhGLz9XM0SoWgTcAHsjEQTnZk+0
CyqSh1k8YXfUrvQjYRvsOR1qRwaJqcwQiaa6ljjF5G0ZKE8qw2NrkXfWrLKb
NCz0kPQdf6CCDD3dMC7JAnxCtmrjJcp1fC1eoHsEW1TGkHdi+QMYB2xYTP4Q
OfdO7NjVgUkjAowzA/sNcG8emBlDnj0g0h4YFB+QxJAph/0QsBN8rRjPBtKC
2mEtqQyqbxbC8jBToOgrnJq6POF4vsRYmGYlJNmyOwJUp4WEQnD1ZjB1rVZj
mUhzPIaOEJhjb6Uz5hhX12sVwq4qwvGB1jjViZ6tYEdQVF+1DQHz5QIg4Xla
Lu4dvzt/e2/A/xUnb+j32eHf3h3BNhx/n38/fv3a/QhMi/Pv37x7/bL6VfU8
eHN8fHjykjtDqagVBfeOxz/eY0W+9+b07dGbk/Hre2vsZAeXdh/EeTDL5Cfn
gZVr0o4XB6f/97/be2AM/sscUoDd4I9n20/BhuIqnvJoNA38iYwMQOJwrcUN
LbgXoVzGBUwOOUc5cDsVaAyBrX/4B3Lmn/vij5Nwub33nSlAgmuFlme1QuLZ
eslaZ2ZiS1HLMI6btfIGp+v4jn+sfVu+e4VBcMomQqADwGexuLE0hqO+p2RB
GrPFnMN2ReXFkM4YBl0urNnfG7VDXXVbKre+NE8NQLzJI7zCDRlDzXkfSice
sKLAKmO237Ag4tLMPgH5iuhyFaq+quE66faZ7Mewj9WOtbdm7TNQRDyJ04uc
9DfUWVYuq+MYlGJcV+PiG3IQMzrHyGBBIuOEHgJ35AMKbG+7ThT5acaoT5Tb
PK/sVggMBNApBVinOCKg4KSClZmCV887eUaxOYLtYehyeIE2EEhyddAQh+gP
AcAi0wkQmRfi4fjgNW9Maujh2gkue25WTOt3VBuObo+HtuVmkp0HM2AnH+bG
VhVuysBzXqB+ukOCwhw3uVMC64FNajviFFb0XK2dDIGHV1uBgKh2RPeDYHsk
3uIuWQKmeIo2oJkf8JacsOFyMtKPdWYEAyYG68zR2yjYGYkzBYt4eldAE/Sq
ATddwdrF6xvYgoCUobONpGrjwNDQmYU0CsAdONPAOIIiQR5CWpVoBePDQW5q
ViM6c6DtDUleVPMagicjcQiKm9DGGfvOSzyMNvvSptY+QhsqwS3J6SgOvCYw
o2N3tGLO9ZyT752i3HpsAZNMZxVmp8YtU22awD6YlkTyRAa2WqJQ46EwbmCY
5vocVQciYXV6zMOAvCzAwTHo3Mp2exhIkpuAgYlW1eC4RLtDNLt7zfrPRKWd
Az4i4u64sAMfaB9ttABWLOM89p0KEZAMjHsU2wqa7YHRRfRVQBfLrDqOVhL9
z9w60+uHYEZR2g5cSPaxJsPRjGxHapapRrNdbhZZO1ar3OPKRIctlcEriyD4
17u80O/V2G82esBacmKXuIu7xINmMFVsz3GdwCOvMGdD5ORHT8D/TG3P5qYF
9ifHRy+GR0e1cy/ov9leBmSVURfb3mYbXaBqY5fyFLXuPElJe44HjlKzol4X
IOckJiCd1nekw66rrk2tvz0GjJwZwLPk5s0zOgnkcbe5CORrtg8SV0eHZC3w
vstozxTslr5ihyEvwDIQm0K9WOoU+PKY7wcA1uNitVSPafvzOC8nQ/rEH+5j
NBo95sOdAR/o7AsRwFbXAbNWhbzMqQzVDavyjVkIP6Abrm7ozEQEk5Fwg1c9
Z8iqG0X/gUbhSODYblFio3ETuVNPc7JkjEntpMu6A3lJy/G0xGNNtN0gs+Tv
k38Bql3gwRld/9ijHQPHlwlcrxEjWLF5j2hQSnZukt0g+Jf7C0bBzXBYMeFx
cAMTy0VElikwhQZ1r9BUJDuNMlPO2+K1qp+garIqmjUIaLcd0OVeS7mpM7zr
rG8ZyasFNyCEBasD/CZDdBPk1dLBSvdAYoOBRO9AWHP59Tr02yDb+naotraT
S2IDLtk23chb0nq4ZP9uG6ibS1j6i87roC1IMlYftloqe8bsJ8yCBlu0Vv6T
GzJdH7KPzG4SscQahQqmheVrqE9WQ0O7KXKAdtsB+RrqyjsIada3jOTVrsle
rcEmQ3QT5NW2yJ7fpGtSmm26B2pqqNgQsq1vh2prO7nkT1LvEL3IW9J6uGT/
bhuoh0tQynvZdhlrFWIDLbvun7cOQa/ZgCz8QMP3QDKjbQAtTmn//WEhw98U
3iU4Jl8M8CcPIDXthihugdhlE0xd17xsqrg0MXMVXuTlom92fFnYBOaiKD+o
61CpSEW/DUTLT2775TCxTVEkgOUSfM8eJMUGALE+1R9o29k9131QsA43Y8nn
WTDsPr/6cquxpCvGLkkQa61bIGI5Xb7fzcrcYkVwOBm2cMfnQM9y26ZEmzDm
pmtcH/htAIgfqoOht6mqP1D/IpXCvqZLBu+Cbracfj4AcpQi3bLGCK9FGwSj
RJMSoyPq3S1ma36kq+xhYj8DLWjfj/QxXfMjRaNj15AWQDUkfilv42ch1DZ+
PjVWV1yZWNMTv6o+Wg3Qbjsg61bWylvoaqtvGcmrrTlMaw02GaKbIK+24TA1
m7TNUVub7oF8t1LcAbKtb4dqazu55H7fNkQv8pa0Hi7Zv9sG6uZSbeMnRJ3A
msLWKnvG7CfMgrYK65evKaxf2UdmN4nrGz8flq+hPlkNDe2myAHabQfka6gr
7yCkWd8ykle7Jnu1BpsM0U2QV9sie34TS3/fQKJ3oKaGCrEZZFvfDtXWdnLJ
IXjbEL3IW9J6uOR+3zKQBdUuX/7Gz+/ZKcQGWnHdPW8/9Qt6m0jbbm1gfSJa
CW14lpuOV3Ph1ir7BvQR8l24Nqw/f3pa/B7/r9WM+tC7RvbJWx/VgvbNqI/R
mhltduwask4ogfIP/R8HtoE7BPehOl+oi8J2yvyBK2vdhXKzvA7DwrGy1kac
heQd9gd4SyqjiO7qZUJUq+tiUMVejau4Lgyn4AsxvHnjqwt7S4GBBhPlxyPb
W2W8K7JPCw9wfsRLittZ8nXlx/s8aZFX+AmfOXT8BYFjlaEV73H28WIw5zgB
d4dfXbMslEyrcL0qYs7E50oXPIHXrgR11BYBiXdJhC3eqld48MYTDFJ2bZB5
ZWL/6sOYmIyYr+PcVc7rHTZItw05wKugOV2Lz/FxReNpy1TGCX4cnB0M7MGD
mCsZ0WWi+T4eH9gLvQG/huDyv78en7SQtFuRxPzlayR6BHQLVczqgY3GMaEl
5RJfs8mFu8vOpIncpuBzjr7lS1YONqZLeeKjvXlvRH/fzrUq2JS54c6ODOoD
cfz2nbAHP3yVZvniqMDwIkNwFc5zqbKcLlOrIjNEotJZMa+xWLNs85u9dk57
RzuO6Zm7PXTU0e06XxK+fft6yJiLh/D5vV5yAOsjnql9ET9C6xSqoYkSiqEA
OomHXlOMPCm0FnixOeH4RFCgYU4vEbEL9LGRS4kGsCPRRYQ7T2L83QuJmsS4
aGoXy8TSseIQiA4O0TkTgx1bwUCrQ4HoVrHNu7QY703hN0NexkuV4E23m0B8
NywTN/9Wr/ggyRSPxDhdOWlzd6uIM8wR2IgY46bwPnuWmkBqDE6dYFCOkT0T
fZBreyNr7ulNOKGjsFpI+9iGsS2XoOQUXc7t+ZXRL6UqlReTMTLK6kKh4mRI
XHJE6GouOO4WcGYoi+r9tUxmGvgxX1QMOjt8iYEL+CiTAxwO3rw8fM2xDPjE
8dMntPbnLlj4430XOOzZ9OCsxOi37eH2FtgLG0lkp9C8P8DQt5VnBL4RGfQS
29umS+73iTBSh2fhMRnDqh8HpYyTBJ9qFvgGlCJYyOKK6n6c7NYSNN3cques
2HStTjaPAj0nStjwHIpo+XKwJrQTn9YVRRZPyqKSpeV8leNzJoSX6Bn9dPfy
NvjFaIL3RIWEhiJpximZX1i9S3w9SbgRHRQAi2PWxBL4rWL7kAaXJRuXQOJM
IQdcboO6rZi716D4gCRRVWAEG86B9ZooSpl+USxPHT3Dsc3x2+3Ab/c3we8J
4GdYVsdCFsiCKiR3HU9swW8AaGpwlcAnFUhu7T0G0wrGBFdzjneh2AyMgbEk
YECcAS1nEmVtFHzNYVByBqhSWBfgg6N5HPHCQRwXDMp+cAiGU5b4/DdZ+e6R
XcQHLTEm9q1BmNGbBwDA8W/OL3raxO5vMLtoVkFgz02U3cO/6fNHNWTBuBmT
1kSbmPR7I/2MoqSsI2wVsOJrRY1zK2RNeu0Qa1JsMTezVwkhrSwD424O+Kna
hwYPwI+h8UbB85F4jw9mi3Vnx3uJZd7IObcFidBgSzMTZV3jrfeMxRo3E4Y1
Cra3gCFTWIimU4yMZAuPT9rB7Me8CGLU2WAdZ9+kuVBGaR5NbQFkDBGsgic9
E2bjjWnHJebQB5dxDL+nvv47NNO/YeobEDzTWlNP46nmqNpXEpdwIw0mbMtA
B42FtezQvmX5eN8+a6lWsiAYg79K78hQptj//aWMM8UPc2iacB6kuDfTOrpn
T2bE0enlXm2NQJf5igI3wZfk/ugL+IFYdutpd5vgbl3uPbZnPVYN7tKHtpC3
9MBTUruT32wMv4cdIRhXZHo8+NoPT/N2SuicvqaHWOQOrzZljfOokM6vN+RN
R6c+5vhd6n67N1aA6Xm8eXaPUlMraZVjxzqU30anasH4NhHo79NGZbNH5Z72
C8Lt/Zw4WL0S5/wu7IAehR1XT56O+RUYRpTyr5aY0va/4ONHdT2kFxZgrGYg
crWTi54HaX1v0Qw+1sC6lw424P0qxgB7tR6yu9FTiCn5LuA3GHCjWkTmV92n
IWt/7W2/6vj4qruVXx7cuORQvHL0/d0Imsy1Uguh/nEj3jmW/Am+TpupH7h3
64FdNwbtpRR7bj9chPlNo1UHzP+IWVizP+aEnM6eGnS8s0ctZnHk0u9eyJw3
w/Dx5uE2LF6P8OePtb702MWd1eDTBvRP7joL5vkKejr4CGudvzetP+mrep0x
1NOhfZ1x08eDpilGOvDoIysasP/4rWNCDYOTWiv3lKTe+44YHOgUXJYZPVKt
YDdnIX/E5T/+DhiceSc33Ri0ywE+GxrSsyHzWshhMPqDPX4d/UH0/qFOY8Nm
afvHbzIL9hTKQfm3z0IbBtN4Zp4jdmJw11m4CwZH5hySz0qs7WtisEUoNGfB
f/HlHmT2Y4DHdY0Zf8k6bQ6M78YDskieJat4sPlf17rQ/tG0SA1T5GHQ6fe0
jOUlJfNKv9QifTkGm83CC9pIhhJ8F9zRk0z+e2fBfwSJC8wCj1v/rRjYzWej
93+Af+D7jB/3xX3rBnPSvG/vbehz3/vEj7UeWJF4YLfMD1yKULAFD2C7nZSL
tPUdLx8DhyWdpx+Y/AfS3vjlpqbTpw+qOx0QenyeZru4ZAoGmM12Zo+L63kY
gqPxyXh9/FimsnXs9XEJwN3GPMBTCDzJRSv38X7ofTbzsaHknMhIXoqDuQzn
C5M/sCsTZFcGSJv7cSAOxl6aR/Cs8cyDXvHT6fR4oTLY9lHlIed8TEMe2E/6
OA4vUn2VqMjkF/l4X7oSPtlYYx6/7sPLY85Cw0zBtKx0kDNRKWyDCjqBobtK
pSIyHvT1w5k4w1f8QOqZTiUm6QRuAzHzLMbb4hdZGZtD82OZhfpXJPhXkwwP
wQTBe5q3qLoRmFUb7j+J/q0jbxixMewXQYLjsGi/667nQ2y/8y5WSzqnN4d8
4/Ojg4HI5xJ9MTbJeL6PbwLtA/D6Pbo7iWaNS9SUn+qqWjHlhatvEu9g/7w/
38p8JgjfVH4+iIPTd18K4kux+Ipt6/98Fi9QkD+Ey9LEGhUaPz4TEWECSHq6
37LYXPasE5vM911W0y4QQQ2+L2i/x1c9PKb287f/CmyCbdh0D78T4nS+skR+
h0dFYfV1ZPSZv16YYz7+OqSqvLWfg3mDv3m04vouVJ6aW++71nlUen+/+/wF
gvJ509FY/5/Zd8ow6asDePYafX8jeCZYrq9uc302/cpsOd28U/UUIgiqU7G1
ZhwPAfv8ZKf2tYsgao4/1xVYtzk7vHCLO6Budpub9yiKpM1hpcushr+6Fmzm
Le7orB7Vb1UPq7RgeGljP3oOkDlfl7Qhb7C/4UQSXdnGZpwLYj3pGOUJw5S2
LgNZSzo1voR013cm/eYDvLUqsDEnnpqVnLGazoZN6rcqr16GAWgm2UZaLiaY
OQzGnmUShIijWIBr9gq1liirygtXpSyVlAUByIlzTJN0VGB6RIqw0CRMXkJH
zsTmpzJeQsdlRmlEquxl9viWE3pKzL+NPMFYJc66YeDwtTd6UnNMZJiJX8oY
/EIbHmbSuJqEEXiJ7mIVkxVlB52rZEm5ijCFttmn/FJizAnzgBIPLq2/jkkv
qxAKTI1C8S7c6hL3M8pk0qYNJnolnC8FU92NbdI+myvQZzcmxzBn1wOTPpCS
W1S8R0d4Bo5wRglqMaqSs7NMajltpyaMoZA55wvdKEeRza/SvBt2Ga44eaO2
OT+8BFzNpByYfQPz4PrpTzBbCOckpLxAlHBE8ihDTOKJPi10GwjzgeloYVvh
kk1SxljYzciIEo/opYlycRlITMoPUnLTx0tngdlQYbMq/bKsea2rYU70jCXD
JfS2+YHB6y5Do9FGX1A/9GJijsJyX184C25u56gxOzbvDiVGbl4ZcQqbE/2i
cSluYrEyJZP4V4onc+l0OdzRFYiFWugMs/uF8xgTBKEpGtmk1DZZkFwbg3IE
1WKI1qJaCAseqEoPT9zC2a4SjYhGasZBRYcN+mR4lSp56ZKqBETu/t9dedoM
v014rG+cOM6H9ZCDG23sp1HLKkUt3ek86hjS0E+xRqfWuMI8FyqtBZTUhaIZ
I+wiqyhuEsXCnq3biEt7U80BpI9cenMyH9gho6RflNxbHB0cn4q3MViGQ9MB
JjzPwQi5/HSYII+3kRg/YqP4aWGJeWarJKXreOcmSanHL8DDi54wWfIWLoaR
oLFu0BUZAENS3Ry5NM2gDyElUAJU36QU2zDXhFAzPsdeeTemGcFWgbaKDCDF
MjczQVN2Nkc5pmo0eeeq6EBDItHG/ygC5RFmREy8i6T4PJbVZpwQqx1g9O02
RXvxEUKqOQi1bmn8hLbUDYPbpxLT6qHTxl1gn6+WkjhoVdLDJs5tbEjkctzZ
OFIPSO6Fog8oETaG75CKWANBK+1EFVecfLozNsH4oN4DW8sCjnDu7GiO8F0s
r420xsCzI8rRBpxGM+FNvCXdZPo2uQ/XlAnPy0zV+OA1JyTmSTb/KkBLh2ZD
GyrXowM9gUUUoMZUUFZ5u0D6/4iEbEumKIaCc9yRNK49MuD8sNXiPDRmnVHw
L/tthnH6h4qaK20tr1s8ReJNpGjtaYMXwAtrUO49X8AOlJqdY5qMitIZLWsd
RzwScnUq6XqIf07UlHKiq2WiVxQMzOGXnLGOM+lhAAV5DVUuQRBXD1+ws7hO
mTp0MOkUjDweBE9Rd+9rCbAwPsTEO2aMsXGQvt4bTuLC5r2vhzfa5mRDKHRG
oiFArzYBm5exUTOHdbCKaptPWWElgAXR45nde4ajULDduAr4a0Gn+mcwwCdx
rxVYlmIb7BjRvAC3SlhIlXsh4YUuWtAm3g7ziFG4qltxvLTtLEcmd2quy4zv
P/zbPMouX5RpislXOZezMX3WpfKjAzl4np0BF0in6h2+QRGkGCYcmCCj8GH2
aYre8nLk2X94o5lyHEdxbokLfHJLi25FlMME35Or0JL3jrzFGJc6XEFMzGyk
1HJA6pDG+G99NGJtEQ8KyHTl7GbD+p3Dno+BwKbq/wHumN0xX20AAA==

-->

</rfc>

