<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-janfred-radext-radius-congestion-control-00" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="RADIUS Congestion Mitigations">Methods for Mitigation of Congestion and Load Issues on RADIUS Servers</title>
    <seriesInfo name="Internet-Draft" value="draft-janfred-radext-radius-congestion-control-00"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <date year="2025" month="March" day="16"/>
    <area/>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <abstract>
      <?line 36?>

<t>The RADIUS protocol as defined in <xref target="RFC2865"/> does not have a means to signal server overload or congesition to the clients.
This can lead to load problems, especially in a federated RADIUS proxy fabric.
This document attempts to fix this.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-janfred-radext-radius-congestion-control/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADIUS EXTensions  mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RADIUS protocol <xref target="RFC2865"/> does not have a means to signal a server overload or a congestion to RADIUS clients.
These overload situations may be a result of a high load of legitimate traffic and might even be worsened by retransmissions of packets the server failed to answer due to the high load.
These situation can happen in a lost of scenarios.
In RADIUS proxy fabric, a server overload may even result from a single RADIUS client, for example when an EAP supplicant immediately starts a new authentication try without delay when getting a reject.</t>
      <t>Especially in RADIUS proxy fabrics, the impact of misbehaving clients on the whole proxy chain can be reduced by reducing the packet load at the entry level or as early in the proxy chain as possible.
Since the end user device cannot be controlled, we have to rely on the RADIUS proxies to implement coutermeasures.</t>
      <t>These countermeasures can be used to reduce the load by one of two methods.</t>
      <t>First, the response to requests can be delayed. By delaying RADIUS responses, the client has to wait for the answer to send its next request, which decreases the packet load on the server.
This method can also be used to slow down clients that immediately retry the authentication once they receive a reject.</t>
      <t>When a home server knows that an authentication of this client cannot succeed (for example because it used an expired certificate with EAP-TLS), and the client keeps retrying, any RADIUS actor along the proxy chain could generate a reject for this specific user.</t>
      <t>Pushing these countermeasures to the the earliest possible RADIUS Instance inside the proxy chain has multiple advantages over rejecting it at the home server.
First, it reduces the load on all proxies in the proxy chain, since they do not need to forward traffic that will get rejected anyway.
Secondly, when the response should get delayed, pushing this delay as far down the proxy chain prevents RADIUS retransmissions.
When the RADIUS proxy already has the response, it then does not need to proxy the retransmitted RADIUS packets, which reduces the load for the RADIUS proxies in the later proxy chain.
Instead, the RADIUS proxy just ignores the retransmission, since it already has an answer for this RADIUS packet, but the answer is just delayed.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>
      <?line -18?>

<t>Additionally, we use the following terms in this document, in the meaning as defined here:</t>
      <dl>
        <dt>RADIUS Instance</dt>
        <dd>
          <t>A single device or software module that implements the RADIUS protocol</t>
        </dd>
        <dt>RADIUS Client</dt>
        <dd>
          <t>A RADIUS Instance that sends RADIUS requests and receives RADIUS responses. This is only in reference to a single RADIUS hop.</t>
        </dd>
        <dt>RADIUS Server</dt>
        <dd>
          <t>A RADIUS Instance that receives RADIUS requests and sends RADIUS responses. Similar to the RADIUS Client, this is only in reference to a single RADIUS hop.</t>
        </dd>
        <dt>RADIUS Proxy</dt>
        <dd>
          <t>A single device or software module that acts as RADIUS server and RADIUS client at the same time. It receives RADIUS requests and forwards them towards the next RADIUS proxy, usually based on the realm of the User-Name attribute.</t>
        </dd>
        <dt>RADIUS Proxy Chain</dt>
        <dd>
          <t>the list of RADIUS Instances that a RADIUS Request traverses from the first RADIUS Client across any number of RADIUS proxies to the final RADIUS Server that responds to the RADIUS Request. When referring to the RADIUS Request, the chain starts from the first RADIUS client sending the RADIUS Request and ends at the last RADIUS Server. For the RADIUS Response, the chain is reversed. The terms "earlier" and "later" will always be used together with a reference to a request or a response. As example: a RADIUS proxy earlier in the chain for a request is located later in the chain for the response.</t>
        </dd>
        <dt>Enforcing Instance</dt>
        <dd>
          <t>The RADIUS Instance that enforces the response delay or the request blocking.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-description">
      <name>Protocol Description</name>
      <t>The protocol extension consists of two parts:
First, any RADIUS proxy in the proxy chain capable of either of the two countermeasures needs to signal this capability to the following RADIUS proxies and the home server, so they know whether or not they can use this feature.
Second, for the reply, the home server or RADIUS proxy needs to signal the reply policy back to the previous RADIUS proxies.</t>
      <section anchor="proxy-capability-attribute">
        <name>Proxy-Capability Attribute</name>
        <t>The Proxy-Capability Attribute is used to signal the capability of a RADIUS proxy to any RADIUS entity in the later proxy chain.
With the help of this, on the reply path, a RADIUS proxy can determine whether the requested action should be performed by itself or the packet will pass through another capable proxy later which can then perform the actions.</t>
        <t>The Proxy-Capability Attribute is of type string as defined in <xref section="3.5" sectionFormat="comma" target="RFC8044"/>.
The value of the Proxy-Capability Attribute is a concatenated list of the proxy capabilities the RADIUS Instance has.</t>
        <t>Correct formal description: TODO</t>
        <t>Informal description: concatenate all capabilities. values up to 127 are encoded in one byte, extended capabilities are encoded as two bytes.
For parsing, the receiver can look at the first bit, if it is a 0 it is a single-byte value, if it is a 1, then the capability is a two-byte value. This allows for simple extension, while keeping it as simple and short as possible. The attribute <bcp14>MUST NOT</bcp14> include a capability multiple times.</t>
        <t>Each capable RADIUS Instance in the RADIUS Proxy Chain <bcp14>SHOULD</bcp14> add the Proxy-Capability Attribute for Access-Request and Accounting-Request packets before forwarding the RADIUS packet to the next RADIUS instance.
Future capabilityes <bcp14>MAY</bcp14> specify capabilities for other RADIUS packet types. The capabilities defined in this document <bcp14>SHOULD</bcp14> only be added for Access-Request and Accounting-Request packets when Proxy-Capabilitiy is used with other RADIUS packets.</t>
        <t>When a capable RADIUS proxy receives a RADIUS packet with the Proxy-Capability Attribute, the RADIUS Proxy <bcp14>SHOULD</bcp14> add its own capabilities to the Attribute if the capability is not yet included. The RADIUS Proxy <bcp14>MUST NOT</bcp14> remove existing capabilities, unless explicitly configured to remove them. As a hint, administrators <bcp14>SHOULD</bcp14> only configure the removal of capabilities when they know that the capability is not honored.</t>
        <t>In this document, we define two capabilities:</t>
        <dl>
          <dt>Capability Response-Delay-Capable</dt>
          <dd>
            <t>The Capability Response-Delay-Capable with value 1 is used to signal that the RADIUS Instance is capable of delaying RADIUS Response packets.</t>
          </dd>
          <dt>Capability Request-Block-Capable</dt>
          <dd>
            <t>The capability Request-Block-Capable with value 2 is used to signal that the RADIUS Instance is capable of blocking RADIUS Requests that match specific criteria and sending an Access-Reject instead on behalf of the home server.</t>
          </dd>
        </dl>
      </section>
      <section anchor="response-delay-attribute">
        <name>Response-Delay Attribute</name>
        <t>The Response-Delay Attribute is used to signal the desire of the home server that sending of the RADIUS response should be delayed for a certain amount.
The Response-Delay Attribute is of type integer as defined in <xref section="3.1" sectionFormat="comma" target="RFC8044"/>.
The value is the delay in milliseconds.</t>
      </section>
      <section anchor="request-block-attribute">
        <name>Request-Block Attribute</name>
        <t>The Request-Block Attribute is used to signal the desire of the home server that future requests that match certain criteria should be rejected by a RADIUS Instance on behalf of the home server.
The Request-Block Attribute is of type tlv as defined in <xref section="3.13" sectionFormat="comma" target="RFC8044"/>.
The sub-attributes are defined as follows:</t>
        <dl>
          <dt>Request-Block-Period</dt>
          <dd>
            <t>This sub-attribute contains the time span in seconds during which requests matching the description should be rejected. The attribute is of type integer as defined in <xref section="3.1" sectionFormat="comma" target="RFC8044"/>.</t>
          </dd>
          <dt>Request-Block-Attributes</dt>
          <dd>
            <t>This sub-attribute contains a list of attribute types that should be used to match authentication requests of the same user. The attribute is of type string as defined in <xref section="3.5" sectionFormat="comma" target="RFC8044"/> and contains a concatenated list of one byte attribute types.</t>
          </dd>
          <dt>Request-Block-Extended-Attribute</dt>
          <dd>
            <t>This sub-attribute contains a reference to a single extended attribute that should be included in the match. The attribute is of type string as defined in <xref section="3.5" sectionFormat="comma" target="RFC8044"/>.</t>
          </dd>
        </dl>
        <section anchor="request-block-attribute-and-request-block-extended-attribute">
          <name>Request-Block-Attribute and Request-Block-Extended-Attribute</name>
          <t>RADIUS attributes are formatted as Type-Length-Value with a fixed one-byte type field.
Since this allows for only 256 attributes, extended attributes have been defined in <xref target="RFC6929"/>.
Additionally, RADIUS has vendor-specific attributes (<xref section="5.26" sectionFormat="comma" target="RFC2865"/> or <xref section="2.4" sectionFormat="comma" target="RFC6929"/>, the header of which may not be known to all implementations.
To still allow to filter on individual extended or vendor-specific attributes which might be unknown to the Enforcing Instance, we need a means to reference these attributes.</t>
          <t>The Request-Block-Attributes sub-attribute is used to reference the "primitive" RADIUS attributes, that is RADIUS attributes that only have the one-byte attribute type.
Since every of these types have a one-byte-length, we can reduce the overhead by concatenating the attribute types, as they are all one byte.</t>
          <t>For the extended or vendor-specific attributes this is not as easy, since the length of the header may vary between the different attributes.
Therefore, we have the Request-Block-Extended-Attribute sub-attribute, which references a single attribute that should be included in the blocklist.
This sub-attribute can be included multiple times in the Request-Block attribute.</t>
        </section>
      </section>
      <section anchor="radius-instance-behavior">
        <name>RADIUS Instance behavior</name>
        <t>TODO - mostly stub or not complete specification, general description of the behavior for every involved party</t>
        <section anchor="radius-proxy">
          <name>RADIUS proxy</name>
          <t>Any RADIUS Instance capable of delaying or blocking <bcp14>SHOULD</bcp14> add the Proxy-Capability attribute to every RADIUS Access-Request they send to a RADIUS server.
If a RADIUS Instance receives a RADIUS request with this attribute, it <bcp14>SHOULD</bcp14> add its own capability, if not present already, to the proxied RADIUS packet and <bcp14>SHOULD NOT</bcp14> remove any other capability.</t>
          <t>Upon reception a RADIUS Proxy needs to decide if it is the Enforcing Instance or not, by looking at the original request.
This decision has to be done individually for the Response-Delay and the Request-Block policy.</t>
          <t>If the received RADIUS response contains a Response-Delay attribute and the original request contained the Response-Delay capability, the RADIUS Proxy <bcp14>SHOULD NOT</bcp14> enforce the policy and instead forward the RADIUS response to the RADIUS client.
If the original request did not contain the Response-Delay capability, the RADIUS Proxy <bcp14>MUST</bcp14> become the Enforcing Instance for the Response-Delay.</t>
          <t>The algorithm for the Request-Block functionality is basically similar, but needs additional considerations in regards to present attributes.
If the received RADIUS response contains a Request-Block attribute and the original request did not contain the Request-Block capability, the RADIUS Proxy <bcp14>MUST</bcp14> become the Enforcing Instance for the Request-Block.
Otherwise, the RADIUS Proxy <bcp14>MUST</bcp14> check the presence of all attributes referenced in the Request-Block, whether or not they are present in the original RADIUS request.
If an attribute was not present in the RADIUS request, the RADIUS Proxy <bcp14>MUST</bcp14> check if the missing attribute was added by the RADIUS Proxy and it is present in RADIUS request the RADIUS proxy sent to the next hop RADIUS server.
In this case the RADIUS Proxy <bcp14>MUST</bcp14> become the Enforcing Instance, since any RADIUS Instances after the current RADIUS Instance cannot enforce the requested blocking, as at least one of the attributes is missing.
If the missing attribute was not added by the RADIUS Proxy, the RADIUS Proxy <bcp14>SHOULD</bcp14> remove the Request-Block attribute before forwarding the packet to the next RADIUS Client.
In this case, the missing attribute was added by a RADIUS Instance not capable of Response-Block and positioned between the current and a later Response-Block capable RADIUS Instance in the RADIUS Proxy Chain of the RADIUS Request.
Since we have no RADIUS-native method to signal this condition back, the best approach to deal with this is to ignore the block request.
By removing the Request-Block attribute from the response, we reduce the load on later RADIUS Instances on the RAIDUS Proxy Chain for the RADIUS Response, since they do not need to perform the attribute checks.
This removes the Response-Block functionality completely without signalling back to the capable RADIUS Instances earlier in the Response Proxy Chain.
There is no easy solution to this problem, but this is considered the best solution compared to complicated signalling mechanisms that would only be beneficial in a limited number of use cases and increase the complexity of implementations.
We therefore rely on the RADIUS server not to request a block based on attributes that may have been added during the proxy chain.
See <xref target="operational_recommendations"/> for further discussion.</t>
        </section>
        <section anchor="enforcing-instance">
          <name>Enforcing Instance</name>
          <t>An Enforcing Instance is in charge of performing the requested action.</t>
          <t>In general, an Enforcing Instance <bcp14>MUST</bcp14> remove the corresponding RADIUS Attribute with the request to delay or block from the RADIUS response before forwarding it to the next RADIUS Client.</t>
          <section anchor="response-delay">
            <name>Response-Delay</name>
            <t>An Enforcing Instance for the Response-Delay <bcp14>MUST</bcp14> delay the response it received from the RADIUS server before forwarding the RADIUS response to the next RADIUS Client.
If the Enforcing Instance is not a RADIUS Proxy, any action that would normally follow the reception of the RADIUS response <bcp14>MUST</bcp14> be delayed, i.e. the Enforcing Instance acts as if the RADIUS response has not been received until the delay timespan has passed.</t>
            <t>An Enforcing Instance <bcp14>MUST NOT</bcp14> retransmit the RADIUS Request again to the next hop RADIUS Server if it already received a RADIUS response with the Response-Delay attribute.
If the Enforcing Instance is a RADIUS Proxy and the RADIUS Client retransmits the RADIUS request, the Enforcing Instance <bcp14>MUST</bcp14> silently discard the retransmission.
This only applies for Enforcing Instances, any other RADIUS Proxy will still follow its normal retransmission policy.</t>
            <t>The Enforcing Instance <bcp14>SHOULD</bcp14> delay the RADIUS response according to the time span in the Response-Delay attributes, however the Enforcing Instance <bcp14>MAY</bcp14> have an upper limit for the delaying response timespan.
By default, this upper limit <bcp14>SHOULD</bcp14> not be less than 10000 milliseconds (10 seconds) and it <bcp14>SHOULD</bcp14> be configurable by the administrator.</t>
            <t><cref anchor="reasoning" source="Janfred">TODO: Reasoning behind the 10 sec delay: A common timeout limit for "response is missing, stop retrying" is 30 seconds, so by keeping the default upper limit below this we ensure that the response gets to the client, but it is delayed. We want to have the time configurable, because delaying responses uses up resources on the server. I delibirately didn't include text that the response should be sent if the ID space is exhausted, because the ID exhaustion may be the reason for the response delay further down the proxy chain, so in order to prevent impact on the later proxy chain, we need to shift the problem as far to the beginning of the proxy chain as possible.</cref></t>
            <t><cref anchor="lower_limit" source="Janfred">TODO: Maybe we should define a lower limit for the upper-limit config, i.e. the upper limit must not be less than 500 milliseconds.</cref></t>
          </section>
          <section anchor="request-block">
            <name>Request-Block</name>
            <t>An Enforcing Instance for the Request-Block <bcp14>MUST</bcp14> reject the RADIUS requests with certain attributes.</t>
            <t>In order to avoid servers from blocking legitimate traffic by setting the block-filter to arbitrary values, the Request-Block is always dependent on the attributes of the original RADIUS requests.</t>
            <t>TODO: From here only stub.</t>
            <t>General algorithm:
* create a list of attributes
* attributes that appear multiple times in the request must be included multiple times in the list as well
* for extended attributes: add every attribute to the list with the prefix in the request-block-extended-attribute (but skip over the length byte in the attribute in the request)
* When a request is received with attributes matching the list (every attributes must be present and match): send an Access-Reject with an Error-Cause attribute set to value TBD4 (Request ratelimited)</t>
            <t>The considerations for upper limit should probably also apply, similar to the response-delay, but with way higher defaults</t>
            <t>Maybe add functionality that the block is automatically timed out after a time when no login has be observed (to free up space), but "reset" the counter if observed again.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="operational_recommendations">
      <name>Recommendations for Operators</name>
      <t>TODO.</t>
      <t>Elements to consider:
* When should be delayed?
  * nearing ID-Exhaustion due to many ongoing EAP sessions, add small delays
  * on high server load add small delay
  * add a delay for a reject. (FreeRADIUS has the option already, let's push this to the edge instead)
* When should the home server request a block for how long?
  * outer username in EAP wrong - probably hours
  * inner username in EAP does not exist (and has several failed attempts shortly) - few minutes (outer username may stay the same if user changes only inner username)
  * username points to someone that is no longer eligible for access - probably hours
* When should a proxy request a block?
  * repeated requests immediately after a reject with impact on the network - seconds to minutes
  * realm in username is unroutable - minutes to hours
* What are good and bad choices for attributes?
  * good
    * User-Name. Always.
    * Calling-Station-ID
    * Called-Station-ID (i.e. only block phone on this specific access point)
    * NAS-Identifier, NAS-IPAddr, NAS-IPv6Addr (only block from this specific NAS, helpful in roaming scenarios)
  * bad
    * Proxy-State (added by proxies that might not understand it. <bcp14>MUST NOT</bcp14> be used)
    * Any other proxy-specific attribute
    * Only User-Name (may be too broad in case of anonymous identities)</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document will have IANA actions.</t>
      <t>They are still TODO in detail.</t>
      <t>Roughly the following things should be allocated:</t>
      <ul spacing="normal">
        <li>
          <t>Attribute Type (possibly from extended attributes) for Proxy-Capability of type string (Extended-Attribute-1, TBD1)</t>
        </li>
        <li>
          <t>New registry table for for types in the Proxy-Capability attribute
          </t>
          <ul spacing="normal">
            <li>
              <t>0 - reserved</t>
            </li>
            <li>
              <t>1 - Response-Delay-Capable</t>
            </li>
            <li>
              <t>2 - Request-Block-Capable</t>
            </li>
            <li>
              <t>3-125 - reserved for future use</t>
            </li>
            <li>
              <t>126 , 127 - experimental</t>
            </li>
            <li>
              <t>128 - 255 - Extended Capability</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Attribute Type for Response-Delay of type integer (Extended-Attribute-1, TBD2)</t>
        </li>
        <li>
          <t>Attribute Type for Request-Block of type tlv (Extended-Attribute-1, TBD3)</t>
        </li>
        <li>
          <t>New registry table for types in the Response-Delay attributes
          </t>
          <ul spacing="normal">
            <li>
              <t>0 - reserved</t>
            </li>
            <li>
              <t>1 - Request-Block-Period, Type integer, request to stop sending data for this particular user for period of time, time in seconds</t>
            </li>
            <li>
              <t>2 - Request-Block-Attributes, type string</t>
            </li>
            <li>
              <t>3 - Request-Block-Extended-Attribute, type string</t>
            </li>
            <li>
              <t>4-250 - reserved for future use</t>
            </li>
            <li>
              <t>251 - private use</t>
            </li>
            <li>
              <t>252-255 - experimental</t>
            </li>
          </ul>
        </li>
        <li>
          <t>New entry in the registry for Values for RADIUS Attribute 101, Error-Cause Attribute
          </t>
          <ul spacing="normal">
            <li>
              <t>4XX (TBD4) with description "Request ratelimited"</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <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>
        <reference anchor="RFC8044">
          <front>
            <title>Data Types in RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>RADIUS specifications have used data types for two decades without defining them as managed entities. During this time, RADIUS implementations have named the data types and have used them in attribute definitions. This document updates the specifications to better follow established practice. We do this by naming the data types defined in RFC 6158, which have been used since at least the publication of RFC 2865. We provide an IANA registry for the data types and update the "RADIUS Attribute Types" registry to include a Data Type field for each attribute. Finally, we recommend that authors of RADIUS specifications use these types in preference to existing practice. This document updates RFCs 2865, 3162, 4072, 6158, 6572, and 7268.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8044"/>
          <seriesInfo name="DOI" value="10.17487/RFC8044"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6929">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS) Protocol Extensions</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Service (RADIUS) protocol is nearing exhaustion of its current 8-bit Attribute Type space. In addition, experience shows a growing need for complex grouping, along with attributes that can carry more than 253 octets of data. This document defines changes to RADIUS that address all of the above problems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6929"/>
          <seriesInfo name="DOI" value="10.17487/RFC6929"/>
        </reference>
      </references>
    </references>
    <?line 315?>

<section anchor="document-status">
      <name>Document Status</name>
      <t>Note to RFC Editor: Remove this section before publication</t>
      <section anchor="change-history">
        <name>Change History</name>
        <t>draft-janfred-radext-radius-congestion-control-00:</t>
        <ul empty="true">
          <li>
            <ul spacing="normal">
              <li>
                <t>Initial draft version</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61c63IbN5b+z6fAMj9GSpEsS77EUc0kI0vyRFO+rWVPkkpl
p8BuNIm42c1tdIvmev0u+yz7ZHtuQKMvlOLs+EdC9QU4ONfvHBz0fD6fmKK2
9f5sotTN1YvnZ2r6y9vnFz/Bv1+nE7iTG7j00tTrMnUqKyv10tZ2pWtbFqrM
1EVZrIyjv3SRqhelTtW1c41xCi69Pb+8fn+jbkx1ayo3nejlsjK3MKDciN5u
h4XnEl2bVVntz5T5uJ1M0jIp9AYISSud1fPfdJFVJp1XOjUfa/yfbdw8CWPh
z7oq8/mDBxPXLDfWObha77cwwvXVu+cToODhRFdGAyXTya6sPqyqstm2dF39
9M4Ujmn5YPbwRAoMmst6JremaAxy7I7XlOIJp/hzo20OP5ngv1pTZ4uyWk0n
E90AYyscaq54iX/Xxfw5rM5U9oN6a03yATgH95WCN87UpWlql6yBvc/LCn40
xcoVpv4v9d/qb6ba6EK9IibqXL01zugqWZNgrtImYaG9MjWumIZ0dWVMfabO
c/MRnjLVNtcw1gndTMoU6Dl5cPLNU/4b1UQ9M1VuC3mgAT7DNZ55TxcNr7US
yv+aZsUiNXTLS//y+Sv6u6nsmdrtdgt5ZlKUME5tb4G3E1tk0V+T+XwO7wO9
Oqknk3dr43VrW5V1mZS50k6lJrOFSZUt1KdP/wZqfPr0yePPn1VaAr+KslZr
fWuUVhujC6fqUjm7Qk450k9Vwn9yVGDQctYmSxyDB2uYMMkt2IpbwOzWqQRY
nRt4GO7SS0DIMjcbN1PGbU1idZ7vkRKtMpQmaHQa0fxxrzK9rGwiw4GKNxsY
Xum6NpttTeRl9iPMbGFKWv/GpmkObPp09lt2plzZVIn5y/TvbA3Tz5PJV+oa
FR9EjXSPs+nTp9/PFz3GGa1aS8NnZYKIO6B37RvAw4bNGqxgr5Y4T2Vck9fo
PrRa29WaGQh/5mYFLAepGwWSzjKbkPJu4JlaGTA7fB+01xkU83IPI8FzhRMT
dzjGVoPiIf9g8UJ+BippSFLw7A4upI3xUg3ze8oDwSTitd5uYVqSY146Itol
ptCVLWGx18WYTGcjnMPF0wpk8VlVbvAxW6xy02XijPwsWORmC7d2a4O+VV2d
v1Gu2W5zC3TVym42JrXAKdAyV+sKVqxVYXYKXQr6dDF3MFC1s+BlmhrsIwcq
aMCVqWuYmoTxm0lqULGrjtqOLAtUGzlmN8BiYgSwfWlAd3AgkT96fXxoty6B
dn47WWvL3ATpgao2iRce/MR38QUWG2uCrumSQe8COnFrclI8p8CfMXX0RjQ4
3NuWoANggYvJjS0SIyOkqnEocHNr4RrQgOoOZEiIALWYqZ1hAwCNqJCdsoSI
A9aQWVgUCFkpuL4anJ7RrgF5LiaiO+QR2+t+zUBCyqPj2mlwWucS5zLISXDJ
YH0UZGGw57ZyNTMbRtmCYgtx/wlxtQ7DkjhNulDP9vwbeSlU+/dEZiwdWCat
Y6dtTTqGt8Qk0OqRXRbGLyBK+dmAPWsLQSQ1CQRMZ9xAWsIuVnhxZ7wWIlTn
royZ4PJyB55nVwSVqde6q89o1XsmrqvMpQgWH0mMvTWx/v5IhqLW5SYY/oei
3Mn4SElvsIycq+eN6IZrksQApUexDS5NooF+YA4vAwYDYGJBnioxVW0zHNOQ
naGdzt+9uDmekeuKmP/BmK3jtYGg8PbeSwvsCRU8L70xxHZTNnkK9lpQDAkL
FvkB/WS26CpR04EPbxq3FqsaUUlxe2QdYE2g2XUwHU/OdQEeBVltAc2kZkAS
qtEGnJhF3uj0FvyRXiHiQ54zeUiArb0lRzJZeO22tdiDaw0CUWSeB5MbGvoM
HabXgbSk4FUYVixgyE5XaYgcJPadhfHA2QlZJLv9Tu/BSxjwAWm+n7FD7Bib
WwvTa29kM7UNbMVwTZ4U2JDpipW5z6Nthd4etDsYZCdSLVhde34GhszBytI9
W2pEEvEL1bcN2n7d/CI/LHPUMdjgeOjteMBz7wd67k54D3gQZBotDGOeq4HG
2ZD43xpQJoAOZWVclyBatBce6kW0TLRM9kFBpTukz9SyqWNXBQ/QTN7/IfCB
TALZTSAA7e4SoSDBN8c4CGA8IgdIYqYv39+8m874/+rVa/r99urf31+/vbrE
3zc/nL94EX5M5ImbH16/f3HZ/mrfvHj98uXVq0t+Ga6qzqXJ9OX5z1P2BtPX
b95dv351/mLK/O0Av4qc/BKtDngO+kPa6iapcUlll4xrn128+d//OXnk8e3J
ybeA4/iPpyffPII/UJt5trLI9/In2ssEoQyoq2UjS/TW1uCcZ6jGoPCgw2tT
QficfP0LcubXM/XnZbI9efSdXMAFdy56nnUuEs+GVwYvMxNHLo1ME7jZud7j
dJfe8587f3u+Rxf//D3kMUbNT55+/x0kGOdpajlxIpdA8YqULgOUUO7I8sGN
uoHgZt5UED0TpGoTEWQoZC89tzqBhMsDPwEmoPiuzOodKsEGAHxufFQUxOF6
1kZgPox8QRGGxu27cBoGI3vkiQRGoI5IHHUD3LBQFMitYzWyCFwzWA6NWQ6Q
67rcLgI5nO8fJmc4aURRj9ZAzo3d2FxXPoB1Vj5jkfwhYt+g6/oCkUCsdihj
eV2QBlLeAfE+9DnI6hXkNGahru9ZuQQwEvUG6A5/MCCLXe0M1LMhqL7UCEhK
H8B0vmFgY9R7IG3+CqeHnBIcCCDW3qrVBXp0WDt5esvZTU9iHj7562+ZYoyy
WNOB+5TJkKVgYO8KBrhVAbggrFM0myVmRNkIsubXqWoRq5BXF1SC1PVEL5Qs
FEVSEnhFZjr2lMBgCs2SLo3TLdJDLfSpSW/lKCrSUZFwrtu3mewFFme6r/oo
3lJhEQsSC1O0NSPuZcqorJpywKD4O2UYo3MALi7C0oBPwMMw7NR9lRfV4pTd
29FCnTuPas9aoXL4lpm9P2MyM3mfBwOi8zKhWgYjg8GzMWjBpBLLOJTkRd4v
qkt0HYOhp00X+gjYCmMzJUug4wOMS9H/ja9uXFKs3Lblj1D3AAvi2hymfs6i
zUnetUVtOPOwNELlzJWRbBNCp0a4DAMYSyIQk8Ph+oAbYVpcVOGcA0ewua33
QftDmOlZh88iIgwNQKpkCIwJDoZ4JqIiXEg3MPPiCAazZUbXDYZ2xryzSFBb
jHa94XGgDguGS5BXIXPIbYJOKPngF4LA15aN660D5fQVu535Rbv6c++aWFyH
76PqhRSyJSNiJJWTOnRTwSeIkwvddwDbH9GOiBcm3/r0cNb6Vlqwrtez/jzI
7NSg0BFReHFE2opAjmpyPrMAG96aCiucXAqBrNvkmddxya7J6LfaoTlUZbPC
Sm5JQ3sF5Ol5KQzvkRRKE2R4xs00t5Qp7uExLnu/NVga7oGZUFV9+uDRoxm4
Ol7Rw8Xjz5+peKZudd4Ybwt3T0NVRHQkBTsTCT6RpfkXrelgn+AwIHWABV2U
VSXZ8AZUIm3tH9zM68vXE0hXxu5Fs3s0HKZb8EJA37aoQien3xA4B9dapswH
rNos9zX4c3IreLVDb/w4JnLgFvBxIBgDAzgcRxUA1hBCBBUXlMvygw8rHJWW
FgFmhjkTce1B+MVoZY7jMr2d505mrAY9G6F7QE70mgA9je6Hd3gcoc7WY1Lq
mBsqYPi83vmnCLKty6ru1ODIxQfYoXz6ALxL8ibFKkZEVCglIExCoU6uNKky
K/mwKBHrQwRklCQQOk3v00Bc5nkCkcbN47AOl9B7wyLDZV9OXhp4x3iM1oMG
YrDiAWO0ZoVqkHyDPjhaN+gJpClSvukpPNLHpt6bAUzTMXc7z0c22s0qhSUE
i7H2nqJKfvnqqUTS46fdB59MCGSEXteW5XrSZCMPcFj31rnzrviwDGdDLYjk
j2VMqjF23AjLJ3JE2YiBYAzdAw2iq4LOOhMFfa7MprxFUwH/RVXwaDrA6EUO
PMZSIURJW4MIwO1kdtVUvh5MbyPcJ2CGuyGYzOgUAonFza66rFxHhmEAcR4w
ALg28JydhfqKlgAEwlbjC12XWK3BGsr1IK/dGdErxjXRBJDTRiLx6HZ+iUCN
hZV7nHfvcyxrDh0no1FeiB/4ARcDsX4B3E8WaWKHFNLv+TNEkT2Kk3seiwk+
/eMEewDbSy8k39roGlxgKO1C4IIYb3XIkCk2F60VU0nYcmUOEQvuyyCgyIb1
V8RhXVH0UdihuwcwGARWW5mRudriA5Ir93uZfYSIpJ4nKQcW1mlrZ4NOaXEv
YR64YPVsZaoBchkBLidd4GKdLAfHhnc2gL+sI8jsPNsifRhybfTmH2NaxtGi
GlEKz5igEy0HQ5EbIKUe6N/danHPEjx76/z2d7H2oeeta5bzgAQYGvmXsX5O
aQ86lK6tvYGVlSlZJG5xxGPQ3h0wgKWFmAHsRNMerQhLpQ2BV1/xFh4S+3zk
jtDgCAP7AOb/oV+9hQWmunsWpwMobm9S+BerCjR75WLt6G1yhcWLyKkcRRtF
h1d4APqPI3/ySBHRo7De4+X+UgbcuRI43bLpXi6NV/oCLo9m7LLNh/dQvkX2
/au4Qu6i5y/aNXG18L6F+1Jdz3i4LYb3BtQ7oGz+whSrej3/BzkxKQZl9iOV
BSVBoBVk1uRpuz3eBf2ELk4fP4mmm41w0fFW+dLgTlTMh++BEU++Pf0W196t
pfuiK5B7C6OV1TyEtWjYo9CY0rLy8eL0CWgYUEc3cfj25uni0efPUruAoMdF
GLZ47LWQfX7EP9SmgkleqKZryYffgUuuubSGu9LUcpNjMl2iO0ntrU0bnbds
AEruWIJMTs0qaJdFmByJHFbCCGHRLl7UehOpM+3ftuMvRsJM5E56FhJFnc6Q
arqt7MZiX9VUDTRsJtsObniL75CacLfE2rT61bVrr2NY3tyL53Hee0mvkX91
npP2Ei8wBY56JHA7GUWL0ax1K96B91wJbWMR5EUjQWl7p4MNFVJY+Z2C9JsJ
qEPUdeL20cazYopDEGXlQ5271RVmWfXOSOad2oxYX3fE+A63hTCbjFpPBoId
OoSugNv9XBFuWxP4/T6PMCg6aWnb6DlZbjMJL3Xz9JCHdzBDvNWADrAHQbhd
qKxAlV9fvlZztSldTR1MzdLXL5MSzRTXK6Iha51JC0SnjuNl4IflxinSOlvc
lvktUI3l3b244yj3nEzO29JgoG8soYAhA1a/r8IQcb4UQmSKXr5NmkoNNxS1
OptJi8l1NgLfhsmyr4VLtowOvVUPW9+ZD++pXIT83gIUJxXlPflZW8jFwm2v
j4BCV7tR61NYLLNGpUmaADTg/ZYgSGJYWrqbRYeycgpyTk1bvhp3l6IfM3QH
WCijaMyZVlnZFe0eCUd8UyWMSyV/6XvCHAO9QuvaQfVC/0M3t/Bl9656c70b
s+Usrt6lg6wmAij9gTsoYIx6/7JJxwiLJXioAoKSkb0UFiWX6XFCnyOGbpmR
lKy7g8Y7Ygu/5AG1qU3FbonqL6aZiilLQO4bc0jy4zKSgKjzFdBUrzfRY7HM
sqZIGI1I3WOpHTgVlL3jPWXuMGF11AG78EYRte5SWwntKq94T7ZsrSZy7F+k
FKNe87BOjHM5HuRfx+Ro1MXkNZr1zrqxghuNmqwN7v7w1o8jnIFJC6KqNqSG
MJWOxo3Z6CYWRnLPZ3kr8KXrAtllFhEjd9p1vFu3ahyaG+9aklQHqXuJfE08
NldSl/vhCGRl5MeiuXseO64d00v0XFw/XpfbQVQo/OahtKZ8oYQ9htHDwAfr
yWrZs0qaiiDLMDZSg2TsV9rtLR8hCYaBV84N7or77tYYrhGyEp4GkxnnMeGv
Q3w+7P3asupBMxuv5h8u4194HxiJYPZ7tGMYxsmIW5gRXJqQCMqzLfngAY4Q
gUkvF3xEy6Zf7+0v3zLpFuV8S4Xgd49OC9/lPy/oQIZv7+1vapcF+07aD54J
MsPNhS0oOW7pUKyHx1vAYrmxmnoGW0jamvWzPYszbLgcEGho5mgbJndG9Ruu
gTThW1/9Q8/39WWPQ9mhVo7DnaidvdcWTqNT8cdHWEddN6qNxSuPhvO2jZ95
niNL4o33A8J3/b6OUBmPVilJCSc9lPAoV+ZNe/yFvBkdcPHtmCw8HyMFq5C4
w5tIu5a9DlqH5daRaAEbk6x1Yd1G8ssdpSp+u2oJkB8SAAsqwycwMHOFAdpW
IuxxSKgtncENN6kzP4hzH6U1YJD7/0hPcSI21vcv1VgKRqH3HmhgBQ1tV/0E
GfPAtkTCfkDKkR5Uh4aDG2PUp0/lViCGzv9Zof8GKlOm8vNnUr+sqSg2ptYl
DbXS4iYpZjQj7TWQ14xFd0sABiauVuR3REc9Xf1GBd4QkpRrRudPhmNSyIm8
bYKb8dSrFe1rtPlr2NQLUbBse3uYrcGM+9Bp6LDtnY4audPf5jjEmgMZAK2O
6YsdCzeuC8Lr0ytKc+dmcR9mj8aZ7BBK82WJXizEmC4tJpEd0YE6TnK4wCXo
tJM898kSINF2vtuFWRwix3dD2vGx1hLFyRgC13CT2e+CEHuxnrDVnKdhwwtt
SI4LK9p69c3uIxFM6RWB5HFAJc2FnG/6VvRAnR6sIijuoVTuHoHpIUCMSJZO
yXY9rsvKCKke4oezOQwBckYP4bO6bvO9xB3yrBpPkUmXwXBIN4vS+Q7h1JDE
BVNRKDotxO013enaTPndON2C1Vr76jNdJ+BO0qihs7PTc5c0YAHrcmduBc+O
Me38Z6lDFqrZgivkyBI8Qaj9tLYqKkqIJDWZbnLfdRwPIKuS4jPt/oM5Furk
AfzrbCiqo5MHfr/q2OcM8jqfT6N9forogn47bQHA2V/+A4NdiU3nv+KZ0M/d
S9wAdQZskitYJrOiezw5LxR7nzHsoO+AZSLEaNkxbf1egO2AfWqwJn+UaYq3
HobVUHcikOzbhZihxLEOr5aGXRK8vMN2KcddDVLSCdOu6DBnfASXEQinWOEM
3I8IvDmHChVV0piYk7NwkmsgYSqXU8sXXKGjta53sk1d41t2aSs+pQYZefGn
0CaianQyQ/Lb4iunguwnri9Rk9k7mI9rIKlGT+upk0fkDpqTnJ3loVGeg2Zb
MaWAFUYOJZFkEPRXKZ/4k0NK4UjngdbIdqMCEf/aZrUfGQGhPwYlMloaSNCL
aMP/4DlNVFdQAVP9kxSi1eH4otfil3q/pIxEGCqdKXgqdzewX1KzOV9j+UdR
LNbBDZ4jGljr456ttnAiSj7uRxNxpiJQido0ht7dcYgJLQ/xns91JC99W9pU
9FEa2ENpeuTs9BLrCnXYMaFH57LDhaNVSwuPVnvpd5yN0E2bhNR2npotbkgU
QU0i5Fv2SoO91S243H+mniPFlGhQHMKqP9z7mxT2QyHvbPK1QiBPxx0Hu+AO
7vZRtxxtGt+h8HCThH3/hgZNqNEp5TlMxedAB/ugZ1RW5xJ/p+ofhgioAawM
T/J3qZmzNPzI0bbLEXo398Fu+Twljcc7TrTVZnvc7417DCRLy13UtB/ADW8P
t9zr9EQQ2Ue9NbnAt1DyxCP5+N7xGW9hDBqReBYwj6oqq/kF+bSWYMc1Fm66
effs8pE68rCNXCsneccMHXpFWJRGbMDiDdAVgYPf82ljxDe0Y9c5MeQd5Zwc
JQcRInSHKZtdkdfkOOUmE/Y3KONuPh48/DLYR1OX+KEKLimjKkFiCGNzRU1z
FKKOvAI/FbGSA7QwerkkU07VEe48VwZ9E8eFYyYPg6+pp5Jc0bkCjCDhPUK5
dALixiSQZAJ9Fx1+yT6bv4tPvu2mmMTR15SClpWbfDpTX92RkKrPPCKe7AgH
08ogpDOvfIOmru8nSn0NMURTJnx9Ob9qY5t8jWFDqLNYlfgEfe3A8FnZGYnB
YSbDwzkaDPd18OMNknPxlwO6D9JzeE376CinWejIuDp6DjyP2hPIh8lWld8M
y039J0eHfxmqiDKZdGX8Xspxb9V4P27o6tcOkAgAqAqPezNf6GsC1JaDH4FB
i8b17yo8Dz5vlRuGr3jtEGFHXghHg6kfVR2hoeK6HJo0OFj5Dkb4xAj1bef7
Y5gjMzsIeQW3YvTIQewBwY1BKDUQ2Yw/q4C1Gzr4zafuYpqOic4wxhakyrri
gDNYF/aNBmQUBXZUgeWv6Bg6SYkcynD1XVbr0EjcYTFztYKIRfWmEGXjjwx4
86wil9XFQQV/KQdo8JgdtZSZJBPgcTtbRIIABFlUwD/C7fPAUkSlgXzNh31X
ZZmSL12C4ibr0iaSkrWul9eBD9IHc75uz/Qt1DmF5YXcuOB62vyG61vz68vo
BoSX9ro6IiTEJTbe1FxTnV5K221DBEuAJHcso706v5lfIwiAJ/AcEv395jxN
w+/bJ/gX6FA7vhRJ4rHh2Rkds8kaKu1VpaZSVPi0CqsPcEYm5p12XAUEyFBd
DycIqfJGjTeo/g1+ygjhGCZVi7ZkIM1yfjHnIcslJRppBZEHX+Na2uOURx6M
l5DnVOh26EyY432voiz2Gzz/ZIlP2C59TJ/mOX91PvTOnWZ9yq8pe6GHO8d2
eDeMk2/y6ZbOHIFFYxMdng7K2UCj88oY2F3ki7HLiSqwZxNQxLYwh11k6kiA
+Z7lNQJ5jkk7Bz0PvQa5o2HnyvxkhnH+BB3lK3A0FUBVR5/40N7cCTVTf5DA
mcOtFaQZD8C4MDhiGKQLJ/h5rvFGdLx9SrfHmr7x7sP5yenjaESpulILLmgM
T3D6RM3oMNAcO/pNZamanMvNp3D59DEO4tcftb4PuY0T9OoX/QbTw4w8PT40
YAzd447dw2M9vEMoHYEcrLbcJY9hS++MyZVFzuJaMBUVfLc4AA7dfhACm3hs
0iCao8CDN7Y0Hi0TRDFjnNU2AR8Q+3lUJYrUltVg8PSQbcO3Hs1PHz+4R3lO
H59QKLO36MDaq6dz1pmOQrE8+OtHAdyLcHDsf/DptKw9ptnqwskDEGsMu887
ZvPop5/UEULuYw54cS/VdASET/nLY7jNhD7sMhwrAkfcgP96VXLS8/b5hbpK
LUBIrDfJhgA6fGnWlIL4tlnm0s9F7WEXhB/UD7C2sgJ0+sXf9wNH9h0s6xo/
9YGtYfi+wuSYZ4C0BHswIQCuCKsCvOWtI5P+ZZpBrmCmAmjB2fonzWLyf6v3
pu8YUQAA

-->

</rfc>
