<?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-rfc2629 version 1.5.26 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dekok-radext-request-authenticator-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="Extended-ID">Correlating requests and replies in the Remote Authentication Dial In User Service (RADIUS) Protocol via the Request Authenticator.</title>
    <seriesInfo name="Internet-Draft" value="draft-dekok-radext-request-authenticator-04"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>FreeRADIUS</organization>
      <address>
        <email>aland@freeradius.org</email>
      </address>
    </author>
    <date year="2022" month="October" day="01"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>RADIUS uses a one-octet Identifier field to correlate requests and
responses, which limits clients to 256 "in flight" packets per
connection.  This document removes that limitation by allowing Request
Authenticator to be used as an additional field for identifying
packets.  The capability is negotiated on a per-connection basis, and
requires no changes to the RADIUS packet format, attribute encoding,
or data types.</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-dekok-radext-request-authenticator/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADEXT Working Group mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/freeradius/extended-id.git"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Remote Authentication Dial In User Service (RADIUS) protocol
contains an Identifier field, defined in <xref target="RFC2865"/> Section 5 as:</t>
      <ul empty="true">
        <li>
          <t>The Identifier field is one octet, and aids in matching requests
and replies.  The RADIUS server can detect a duplicate request if
it has the same client source IP address and source UDP port and
Identifier within a short span of time.</t>
        </li>
      </ul>
      <t>The small size of the field allows for only 256 outstanding requests
without responses. If a client requires more than 256 packets to be
outstanding to the RADIUS server, it must open a new connection, with
a new source port.</t>
      <t>This limitation does not severely impact low-load RADIUS systems.
However, it is an issue for high-load systems.  Opening new sockets is
more expensive than tracking requests inside of an application, and is
generally unnecessary in other UDP protocols.</t>
      <t>For very high load systems, this "new socket" requirement can result
in a client opening hundreds or thousands of connections.  There are a
number of problems with this approach:</t>
      <ul spacing="normal">
        <li>RADIUS is connection oriented, and each connection operates independently of all other connections.</li>
        <li>each connection created by the client must independently discover server availability.  i.e. the connections can have different views
of the status of the server, leading to packet loss and network instability.</li>
        <li>The small size of RADIUS packets means that UDP traffic can reach Ethernet rate limits long before bandwidth limits are reached for
the same network.  This limitation prevents high-load systems from fully using available network bandwidth.</li>
        <li>The limit of 256 outstanding requests means that RADIUS over TCP <xref target="RFC6613"/> is also limited to a small amount of traffic per connection, and thus will rarely achieve the full benefit of TCP transport.</li>
        <li>the existence of hundreds of simultaneous connections can impose significant management overhead on clients and servers.</li>
        <li>network stacks will generally operate more efficiently with a larger amount of data over one connection, instead of small amounts of data split over.in -0.2i</li>
      </ul>
      <t>For these reasons, it is beneficial to extend RADIUS to allow more
than 256 outstanding requests per connection.</t>
      <section anchor="compatability-with-existing-radius">
        <name>Compatability with Existing RADIUS</name>
        <t>It is difficult in practice to extend RADIUS.  Any proposal must not
only explain why it cannot use Diameter, but it also must fit within
the technical limitations of RADIUS.</t>
        <t>We believe that this specification is appropriate for RADIUS, due to
the following reasons:</t>
        <ul spacing="normal">
          <li>this specification makes no change to the RADIUS packet format;</li>
          <li>this specification makes no change to RADIUS security;</li>
          <li>this specification adds no new RADIUS data types;</li>
          <li>this specification uses standard RADIUS attribute formats;</li>
          <li>this specification uses standard RADIUS data types;</li>
          <li>this specification adds a single attribute to the RADIUS Attribute Type registry;</li>
          <li>all existing RADIUS clients and servers will accept packets following this specification as valid RADIUS packets;</li>
          <li>due to negotiation of capabilities, implementations of this specification are fully compatible with all existing RADIUS implementations;</li>
          <li>clients implementing this specification act as traditional RADIUS clients until they see a matching response from a server, so errors due to client misconfiguration is impossible.</li>
          <li>clients implementing this specification can fall back to standard RADIUS in the event of misbehavior by a server;</li>
          <li>servers implementing this specification use standard RADIUS unless this functionality has been explicitly negotiated;</li>
          <li>low-load RADIUS systems do not need to implement this specification;</li>
          <li>high-load systems can use this specification to remove all RADIUS-specific limits on filling available network bandwidth;</li>
          <li>this specification allows for effectively unlimited numbers of RADIUS packets over one connection, removing almost all issues related to connection management from client and server;</li>
          <li>as a negative, implementations of this specification must have code paths this specification, as well as for standard RADIUS.</li>
        </ul>
        <t>In short, this specification is largely limited to changing the way
that clients and server implementations internally match requests and
responses.</t>
        <t>We believe that the benefits of this specification outweigh the costs</t>
      </section>
      <section anchor="outline-of-the-document">
        <name>Outline of the document</name>
        <t>The document gives a high level overview of proposal.  It then
describes how the functionality is signaled in a Status-Server
<xref target="RFC5997"/> It then defines the Original-Request-Authenticator
attribute.  It then describes how this change to RADIUS affects each
type of packet (ordered by Code).  Finally, it describes how the
change affects transports such as UDP, TCP, and TLS.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>
        <t>This document uses the following terms:</t>
        <t>ID tracking</t>
        <ul empty="true">
          <li>
            <t>The traditional RADIUS method of tracking request / response packets
by use of the Identifier field.  Many implementations also use a
socket descriptor, and/or src/dst IP/port as part of the tuple used to
track packets.</t>
          </li>
        </ul>
        <t>ORA tracking</t>
        <ul empty="true">
          <li>
            <t>The method defined here which allows request / response packets
extends ID tracking, in order to add Request Authenticator or
Original-Request-Authenticator as part of the tuple used to track
packets.</t>
          </li>
        </ul>
        <t>Network Access Server (NAS)</t>
        <ul empty="true">
          <li>
            <t>The device providing access to the network.  Also known as
the Authenticator (in IEEE 802.1X terminology) or
RADIUS client.</t>
          </li>
        </ul>
        <t>RADIUS Proxy</t>
        <ul empty="true">
          <li>
            <t>In order to provide for the routing of RADIUS authentication and
accounting requests, a RADIUS proxy can be employed. To the NAS, the
RADIUS proxy appears to act as a RADIUS server, and to the RADIUS
server, the proxy appears to act as a RADIUS client.</t>
          </li>
        </ul>
        <t>'request packet' or 'request'</t>
        <ul empty="true">
          <li>
            <t>One of the allowed packets sent by a client to a server.
e.g. Access-Request, Accounting-Request, etc.</t>
          </li>
        </ul>
        <t>'response packet' or 'response'</t>
        <ul empty="true">
          <li>
            <t>One of the allowed packets sent by a server to a client, in response
to a request packet.  e.g. Access-Accept, Accounting-Response, etc.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="review-of-current-behavior">
      <name>Review of Current Behavior</name>
      <t>In this section, we give a short review of how clients and servers
currently operate.  This review is necessary to help contextualize the
subsequent discussion.</t>
      <section anchor="client-behavior">
        <name>Client Behavior</name>
        <t>When a client sends a request to a server, it allocates a unique
Identifier for that packet, signs the packet, and sends it to the
server over a particular network connection.  When a client receives a
response from a server over that same network connection, the client
uses the Identifier to find the original request.  The client then
uses the original Request Authenticator to verify the Response
Authenticator of the response.</t>
        <t>We call this behavior "ID tracking".  It is the traditional method
used in RADIUS to track requests and responses.  The term "ID
tracking" is used in preference to "traditional RADIUS".</t>
        <t>This tracking behavior is similar across all packet types.  However,
the management of the ID field is largely unspecified.  For
example. <xref target="RFC2865"/> Section 5 says</t>
        <ul empty="true">
          <li>
            <t>The Identifier field is one octet, and aids in matching requests
and replies.  The RADIUS server can detect a duplicate request if
it has the same client source IP address and source UDP port and
Identifier within a short span of time.</t>
          </li>
        </ul>
        <t>Similar text is contained in <xref target="RFC2866"/> Section 3, while <xref target="RFC5176"/>
Section 2.3 has a more extensive discussion of the use of the
Identifier field.  However, all three documents are silent on the
topic of how Identifiers are managed.</t>
        <t>This silence means that there are no guidelines in the specifications
for how a client can re-use an Identifier value.  For example, can a
client re-use an Identifier after a response is received?  Can a
client re-use an Identifier after a timeout, when no response has been
received?  If the client sends multiple requests and finally receives
a response, can the Identifier be re-used immediately, or should the
client wait until it receives all duplicate responses to its duplicate
requests?</t>
        <t>There are no clear answers to any of these questions.</t>
        <t>The specifications are not much clearer on the subject of response
packets.  For example, <xref target="RFC2865"/> Section 4.2 has the following text
for Access-Accept responses:</t>
        <ul empty="true">
          <li>
            <t>On reception of an Access-Accept, the Identifier field is matched
with a pending Access-Request.  The Response Authenticator field
MUST contain the correct response for the pending Access-Request.
Invalid packets are silently discarded.</t>
          </li>
        </ul>
        <t><xref target="RFC2866"/> Section 4.2 has similar text, while <xref target="RFC5176"/> has no such
text, and assumes that the reader knows that Identifiers are used to
match a CoA-ACK packet to a CoA-Request packet.</t>
        <t>While these issues are undefined, they nevertheless have to be
addressed in practice.  Client implementations have therefore chosen
some custom behavior for Identifier management.  This behavior has
proven to be inter-operable, despite being poorly defined.</t>
        <t>We bring this issue up solely to note that much of the RADIUS protocol
is undefined or implementation-defined.  As a result, it should be
possible to define behavior which was previously left open to
implementation interpretation.  Even better, this new behavior can be
defined in such a way as to obtain new and useful features in RADIUS.</t>
      </section>
      <section anchor="server-behavior">
        <name>Server Behavior</name>
        <t>Server implementations have similar issues related to managing
Identifiers for request packets.  For example, while clients are
permitted to send duplicate requests, <xref target="RFC2865"/> is not clear on how
servers should handle those duplicates.</t>
        <t>That issue was addressed in <xref target="RFC5080"/> Section 2.2.2, which defines how
servers should perform duplicate detection.  This duplicate detection
aids in lowering the load on servers by allowing them to send cached
responses to duplicates, instead of re-processing the request.</t>
        <t>However, the issue of duplicate packets and retransmissions by the
clients can result in another situation which is not discussed in any
RADIUS specification.  This topic deserves more discussion, because as
we will see below, this topic motivates this specification.</t>
        <t>The specifications do not describe what a server should do if it
receives a new packet which is on the same connection as a previous
one, and shares the Code and Identifier fields, but for which the
Request Authenticator is different.  That is, a client may send a
request using an Identifier, not get a response, then time out that
request.  The client is then implicitly allowed by the specifications
to re-use that Identifier when sending a new request.</t>
        <t>That new request will be sent on the same connection as a previous
request, using the same Code and Identifiers as a previous request,
but will have a different Request Authenticator.</t>
        <t>When the server receives this new packet, it has no knowledge that the
client has timed out the original request.  The server may still be
processing the original request.  If the server responds to the
original request, the response will likely get ignored by the client,
as it has timed out that original request.  If the server responds to
the new request, the client will probably accept the response, but the
server must then not respond to the original request.</t>
        <t>The server now has two "live" requests from a client, but it can
respond only to one.  These request are "conflicting packets", and the
process used to detect them is conflict detection and conflict
management.</t>
        <t>While the concept of "conflicting packets" is not defined in the
RADIUS specifications, it nevertheless has had to be addressed in
practice.  Server implementations have each chosen some behavior for
conflict detection and management.  This implementation-defined
behavior has proven to be inter-operable in practice, which allows
RADIUS to operate in the face of conflicts.</t>
        <t>The concept conflict detection is the key concept driving this
specification.  If servers were instead allowed to process and reply
to both requests, then the limitations of the Identifier field would
be entirely bypassed.</t>
        <t>The rest of this specification describes the impact of allowing these
otherwise "conflicting packets" to be processed.  We discuss a
framework required to negotiate this functionality in an
inter-operable manner.  We define a new method of tracking packets,
called "ORA tracking", which is discussed further below.</t>
      </section>
    </section>
    <section anchor="alternative-approaches">
      <name>Alternative Approaches</name>
      <t>There are other ways that the per-connection Identifier limitation
could have been addressed.  As extending RADIUS is a controversial
topic, we believe it is useful to discuss some alternative approaches,
and to explain their costs and benefits.  This discussion ensures that
readers of this specification are fully informed as to why this design
is the preferred approach.</t>
      <t>We finish this section by explaining why this solution was chosen.</t>
      <section anchor="multiple-source-ports">
        <name>Multiple Source Ports</name>
        <t>One approach is to follow the suggestion of <xref target="RFC2865"/> Section 5, which
says:</t>
        <ul empty="true">
          <li>
            <t>... If a
NAS needs more than 256 IDs for outstanding requests, it MAY use
additional source ports to send requests from, and keep track of IDs
for each source port.  This allows up to 16 million or so outstanding
requests at one time to a single server</t>
          </li>
        </ul>
        <t>This suggestion has been widely implemented.  However, practice shows
that the number of open ports has a practical limitation much lower
than 65535.  This limitation is due both to ports being used by other
applications on the same system, and application and OS-specific
complexities related to opening thousands of ports.</t>
        <t>The "multiple source port" approach is workable for low-load systems.
However, implementors of high-load systems have requested an
alternative to that approach.  The justification is that this approach
has proven to be problematic in practice for them.</t>
      </section>
      <section anchor="diameter">
        <name>Diameter</name>
        <t>Another common approach is to suggest that implementors switch to
using Diameter instead of RADIUS.  We believe that the Diameter
protocol does not satisfy the requirements of the implementors who are
requesting extensions to RADIUS.</t>
        <t>The short summary is that implementors have significant investment in
a RADIUS infrastructure.  Switching to Diameter would involve either
deprecating or throwing away all of that infrastructure.  This
approach is simply not technically or economically feasible.</t>
        <t>Ad hoc surveys indicate that the majority of the implementations that
will use this specification do not have pre-existing Diameter code
bases.  We suggest that it is simpler for implementors to make minor
changes to their RADIUS systems than it is to implement a full
Diameter stack.  This reality is a major consideration when creating
new specifications.</t>
        <t>For these reasons, switching to Diameter is not a useful approach.</t>
      </section>
      <section anchor="multiple-radius-packets-in-udp">
        <name>Multiple RADIUS packets in UDP</name>
        <t>Another approach would be to allow multiple RADIUS packets in one UDP
packet.  This method would allow an increased amount of RADIUS traffic
to be sent in the same number of UDP packets.</t>
        <t>However, this approach still has the limit of 256 outstanding
requests, which means that implementations have extra work of juggling
RADIUS packets, UDP packets, and UDP connections.  In addition, this
approach does not address the issues discussed above for RADIUS over
TCP.</t>
        <t>As a result, this approach is not suitable as a solution to the ID
limit problem.</t>
      </section>
      <section anchor="an-extended-id-field">
        <name>An Extended ID field</name>
        <t>Another approach it to use an attribute which contained an "extended"
ID, typically one which is 32 bits in size.  That approach has been
used in at least one commercial RADIUS server for years, via a
Vendor-Specific Attribute.</t>
        <t>The benefits of this approach is that it makes no change to the RADIUS
protocol format, attribute encoding, data types, security, etc.  It
just adds one "integer" attribute, as an "extended ID" field.  Client
implementations add the "extended ID" attribute to requests, and
server implementations echo it back in responses.  The "extended ID"
field is also used in doing duplicate detection, finding conflicting
packets, etc.</t>
        <t>Implementations using this approach have generally chosen to not
perform negotiation of this functionality.  Instead, they require both
client and server to be statically configured to enable the "extended
ID".</t>
        <t>Clients implementing the "extended ID" must, of course, manage this
new identifier.  As the identfier is still local to a connection, it
is possible to simply take the "extended ID" from a counter which is
incremented for every request packet.  There is no need to mark these
identifiers as unused, as the 32-bit counter space is enough to ensure
that re-use happens rarely.  i.e. at 1 million packets per second, the
counter is enough to last for over an hour, which is a time frame much
larger than the lifetime of any individual packet.</t>
        <t>This approach is compatible with all RADIUS transports, which is a
major point in its favor.</t>
        <t>An implementation of this "extended ID" approach is less than 200 lines
of C code <xref target="PATCH"/>.  That patch includes capability negotiation via
Status-Server, and full client / server / proxy support.</t>
        <t>This approach has therefore been proven to be workable in practice,
and simple to implement.</t>
      </section>
      <section anchor="this-specification">
        <name>This Specification</name>
        <t>The approach discussed here was chosen after looking at the handling
of packet conflicts, as discussed above in Section X.  The conclusion
was that since the behavior around "conflicting packets" was entirely
implementation-defined, then changing the behavior would involve minor
changes to the RADIUS specifications.</t>
        <t>This specification suggests that clients and servers can choose to use
the Request Authenticator as a an additional field to uniquely
identify request packets.  This choice is entirely local to the client
or server implementation, and involves no changes to the wire format
or wire protocol.  There are additional considerations which are
outlined below.</t>
        <t>The approach outlined in this specification is largely similar to the
"extended ID" approach, except that it leverages a pre-existing field
as an identifier, instead of creating a new one.  This re-use means
that the client does not need to track or allocate new identifiers.</t>
        <t>The use of the Request Authenticator as an identifier means that there
are 128 bits of space available for identifiers.  This large space
means that the "conflicting packet" problem is avoided almost
entirely, as the Request Authenticator is either random data
(Access-Request), or an MD5 signature (other packets).</t>
        <t>The subject of MD5 collisions is addressed below, in Section X.</t>
        <t>As with the "extended ID" approach. this approach is compatible with
all transports.</t>
        <t>We believe that this approach is slightly simpler than the next best
approach ("extended ID"), while at the same time providing more
benefits.  As a result, it is the recommended approach for allowing
more than 256 outstanding packets on one connection.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>We extend RADIUS to allow the use of the Request Authenticator field
as an additional identifier.  Subject to certain caveats outlined
below, the Request Authenticator can be treated as being temporally
and globally unique.  This uniqueness is what makes it a useful
identifier field.</t>
      <t>The capability is first negotiated via Status-Server, as outlined
below.  Once both client and server agree on the use of this
capability, the client can start sending normal request packets.</t>
      <t>The client creates a request packet as usual.  When the client needs
to store the request packet, it adds the Request Authenticator as part
of the unique key which tracks the request.  The packet is then sent
to the server.</t>
      <t>The server receives the request, and uses the Request Authenticator to
track the request, in addition to any previously used information.
When the server sends a reply, it copies the Request Authenticator to
the response packet, and places the 16 octet value into the
Original-Request-Authenticator attribute.  The response is then sent
as before.</t>
      <t>When the client receives the response, it uses the
Original-Request-Authenticator attribute to create the lookup key, in
order to find the original request.  Once the original request is
found, packet verification and processing continues as before.</t>
      <t>We note again that the Identifier field is still used to correlate
requests and responses, along with any other information that the
implementation deems necessary.  (e.g. Code, socket descriptor,
src/dst IP/port, etc.)  The only change is that the Request
Authenticator is added to that tuple.</t>
      <t>In short, the "ID tracking" method of tracking requests and responses
is extended to allow the use of the Request Authenticator as part of
the tuple used to track requests and responses.  This new tracking
method is called "ORA tracking".</t>
      <t>Further details and implementation considerations are provided below.</t>
      <t>for clients: If ORA has not been negotiated, assign IDs based on
old-style tree. IF ORA has been negotiated, assign IDs based on ORA
tree, generally just a sequential counter.</t>
      <t>IF the response does not contain ORA, lookup packets based on
old-style tree.  IF the response does contain ORA, lookup packets
based on new-style tree.  If it's not found there, look it up in the
old-stlye tree.  This behavior ensures that clients can send both
kinds of packets simultaneously with no conflict.</t>
      <t>There is no need for any additional tracking / timer on the
client... if the old-style tree is empty, there is essentially no cost
to lookup packets up in it.  The alterntive would be to track which
packets were sent before / after negotiation, and do all kinds of
additional magic.</t>
      <t>The server has then to figure out WTF is going on... since packets
aren't ordered, there's no way to tell which ones were sent <em>before</em>
negotiation, and which ones <em>after</em>.  In contrast, the extended-ID is
easier, as the request contains the attribute.  The solution is for
the server to always send back ORA after negotiation has succeeded,
even if the packet was received prior to negotiation happening.</t>
      <t>Since the Request Authenticator field is sixteen octets in size, this
process allows an essentially unlimited number of requests to be
outstanding on any one connection.  This capability allows clients to
open only one connection to a server, and to send all data over that
connection.  As noted above, using fewer connections will increase the
clients ability to perform dead server detection, do fail-over, and
will result in increased network stability.</t>
      <section anchor="why-this-works">
        <name>Why this works</name>
        <t>In this section, we explain why the Request Authenticator makes a good
packet identifier.</t>
        <t>For Access-Request packets, <xref target="RFC2865"/> Section 3 defines the Request
Authenticator to contain random values.  Further, it is suggested that
these values "SHOULD exhibit global and temporal uniqueness".  The
same definition is used in <xref target="RFC5997"/> Section 3, for Status-Server
packets.  Experience shows that implementations follow this
suggestion.  As a result, the Request Authenticator is a good
identifier which uniquely identifies packets.</t>
        <t>Other request packets create the Request Authenticator as an MD5
calculation over the packet and shared secret.  i.e. MD5(packet +
secret).  The MD5 digest algorithm was designed to be strongly
dependent on input data, and to have half of the output bits change if
one bit changed in the input.  As a result, the Request Authenticator
is a good hash which can distinguish different packets.</t>
        <t>The question is whether or not the Request Authenticator is a good
identifier.  The following discussion make this case.</t>
        <t>One argument is that MD5 has low collision rates.  In the absence of
an explicit attack, there should be one collision every 2e64 packets.
Since the packet lifetime is small (typically 30 seconds maximum), we
can expect a collision only if more than 2e59 packets are sent during
that time frame.  For more typical use-cases, the packet rate is low
enough (i.e. even 2e20 packets per second), that there is a one in
2e39 chance of a collision every 30 seconds.</t>
        <t>We believe that such collision rates are acceptibly low.  Explicit
attacks are discussed in the Security Considerations section, below.</t>
        <t>The one case where collisions will occur naturally is when the packet
contents are identical.  For example, a transmission of a second
Access-Request after the first one times out.  In this situation,
though, there is in fact no collision, as the input data is identical.
Both requests are entirely identical, and any response to one is a
response to both.</t>
        <t>For non-identical requests, the packet typically contains the
Identifier and Length fields, along with counters, timestamps,
etc. These values change on a per-packet basis, making the Request
Authenticator also change.</t>
        <t>As a result, the MD5 signature of a request is appropriate to use as a
packet identifier.  In all cases (barring attacks), it will contain a
globally and temporally unique identifier for the request.</t>
      </section>
    </section>
    <section anchor="signaling-via-status-server">
      <name>Signaling via Status-Server</name>
      <t>When a client supports this functionality, it sends a Status-Server
packet to the server, containing an Original-Request-Authenticator
attribute.  See Section X, below, for the definition of the
Original-Request-Authenticator attribute.</t>
      <t>The contents of the Original-Request-Authenticator attribute in the
Status-Server packet MUST be zero.  The Original-Request-Authenticator
attribute MUST NOT appear in any request packet other than
Status-Server.  If a server does see this attribute in a request
packet, the attribute MUST be treated as an "invalid attribute", and
ignored as per <xref target="RFC6929"/> Section 2.8.</t>
      <t>A server which supports this functionality SHOULD signal that
capability to the client by sending a response packet which contains
an Original-Request-Authenticator attribute.  That attribute MUST
contain an identical copy of the Request Authenticator from the
original Status-Server packet.</t>
      <t>When a client sends an Original-Request-Authenticator attribute in a
Status-Server and does not receive that attribute in the response, the
client MUST NOT use "ORA tracking" for requests and responses.  The
client MUST then behave as a normal RADIUS client, and use "ID
tracking" for requests and response.</t>
      <t>If a server does not support this functionality, it MUST NOT place an
Original-Request-Authenticator attribute in the response packet.  As
the default behavior of existing RADIUS servers is to not place this
attribute in the response to a Status-Server, negotiation will
continue to use traditional RADIUS, and "ID tracking".</t>
      <t>As the response to a Status-Server can use one of many RADIUS Codes,
we use a generic "response" name above.  See following sections for
how to handle specific types of responses.</t>
      <t>We note that "ORA tracking" negotation SHOULD be done per connection.
i.e. per combination of (transport, src/dst ip/port).  Section X,
below, discusses additional issues related to client/server
connections.  In this section, when we refer to a client and server
performing negotiation, we mean that negotiation to be specific to a
particular connection.</t>
      <t>Once the "ORA tracking" has been negotiated on a connect, then all
packets for that connection MUST use it, no matter what values they
allow for the Code field.  For example, <xref target="RFC6613"/> permits multiple
Codes on one connection.</t>
      <t>Even if a client and server negotiate "ORA tracking", the client can
still fall back to "ID tracking".  There is no need for the client to
signal the server that this change has happened.  The client can use
"ID tracking" while the server uses "ORA tracking", as the two systems
are entirely compatible from the client side.</t>
      <t>The situation is a bit different for a server.  Once "ORA tracking"
has been negotiated, a server MUST use that method, and MUST include
the Original-Request-Authenticator attribute in all response packets.
If a client negotiates "ORA tracking" on a connection and later sees
response packets which do not contain an
Original-Request-Authenticator attribute, the client SHOULD discard
those non-compliant packets.  For connection-oriented protocols, the
client SHOULD close the connection.</t>
      <t>There is a time frame during this failure process during which
outstanding requests on that connection may not receive responses.
This situation will result in packet loss, which will be corrected
once the new connection is used.  The possibility of such problems
should be used instead by implementors as incentive to ensure that
they do not create invalid Original-Request-Authenticator attributes.
Implementing the specification correctly will prevent this packet loss
from occuring.</t>
      <t>The negotiation outlined here ensures that RADIUS clients and servers
supporting this functionality are entirely backwards compatible with
existing RADIUS clients and servers.</t>
      <section anchor="static-configuration">
        <name>Static Configuration</name>
        <t>As an alternative to using Status-Server, clients and servers MAY be
administratively configured with a flag which indicates that the other
party supports this functionality.  Such a flag can be used where the
parties are known to each other.  Such a flag is not appropriate for
dynamic peer discovery <xref target="RFC7585"/>, as there are no provisions for
encoding the flag in the DNS queries or responses.</t>
        <t>When a client is administratively configured to know that a server
supports this functionality, it SHOULD NOT do negotiation via
Status-Server.</t>
        <t>The client MUST behave as a normal RADIUS client (i.e. send only 256
requests on any one connection) until such time as it receives an
Original-Request-Authenticator attribute in a response.  Only then can
the client send more packets on one connection.  See Section X
("Connection Issues") below, for a larger discussion of this topic.</t>
        <t>If a client is administratively configured to believe that a server
supports the Original-Request-Authenticator attribute, but the
response packets do not contain an Original-Request-Authenticator
attribute, the client MUST update its configuration to mark the server
as not supporting this functionality.</t>
        <t>This process allows for relatively simple downgrade negotiation in the
event of misconfiguration on either the client or the server.</t>
      </section>
    </section>
    <section anchor="original-request-authenticator-attribute">
      <name>Original-Request-Authenticator Attribute</name>
      <t>We define a new attribute, called Original-Request-Authenticator.  It
is intended to be used in response packets, where it contains an exact
copy of the Request Authenticator field from the original request that
elicited the response.</t>
      <t>As per the suggestions of <xref target="RFC8044"/>, we describe the attribute using a
data type defined therein, and without the use of ASCII art.</t>
      <t>Type</t>
      <ul empty="true">
        <li>
          <t>TBD - IANA allocation from the "extended" type space</t>
        </li>
      </ul>
      <t>Length</t>
      <ul empty="true">
        <li>
          <t>19 - TBD double-check this after IANA allocation</t>
        </li>
      </ul>
      <t>Data Type</t>
      <ul empty="true">
        <li>
          <t>octets</t>
        </li>
      </ul>
      <t>Value</t>
      <ul empty="true">
        <li>
          <t>MUST be 16 octets in length.  For Status-Server packets, the contents
of the Value field MUST be zero.  For response packets, the contents
of the Value field MUST be a copy of the Request Authenticator from
the original packet that elicited the response.</t>
        </li>
      </ul>
      <t>The Original-Request-Authenticator attribute can be used in a
Status-Server packet.</t>
      <t>The Original-Request-Authenticator attribute can be used in a response
packet.  For example, it can be used in an Access-Accept,
Accounting-Response, CoA-ACK, CoA-NAK, etc.</t>
      <t>Note that this document updates multiple previous specifications, in
order to allow this attribute in responses.</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC2865"/> Section 5.44 is updated to allow Original-Request-Authenticator in Access-Accept, Access-Reject, and Access-Challenge responses</li>
        <li>
          <xref target="RFC2866"/> Section 5.13 is updated to allow Original-Request-Authenticator in Accounting-Response responses.</li>
        <li>
          <xref target="RFC5176"/> Section 3.6 is updated to allow Original-Request-Authenticator in CoA-ACK, CoA-NAK, Disconnect-Ack, and Disconnect-NAK responses.</li>
      </ul>
      <t>The Original-Request-Authenticator attribute MUST NOT be used in any
request packet.  That is, it MUST NOT be used in an Access-Request,
Accounting-Request, CoA-Request, or Disconnect-Request packets.</t>
      <t>When it is permitted in a packet, the Original-Request-Authenticator
attribute MUST exist either zero or one times in that packet.  There
MUST NOT be multiple occurances of the attribute in a packet.</t>
      <t>The contents of the Original-Request-Authenticator attribute MUST be
an exact copy of the Request Authenticator field of a request packet
sent by a client.  As with "ID tracking", the Identifier field in the
response MUST match the Identifier field in a request.</t>
      <t>Where the format and/or contents of the Original-Request-Authenticator
attribute does not meet these criteria, the received attribute MUST be
treated as an "invalid attribute" as per <xref target="RFC6929"/>, Section 2.8.  That
is, when an invalid Original-Request-Authenticator attribute is seen
by either a client or server, their behavior is to behave as if the
attribute did not exist.</t>
    </section>
    <section anchor="transport-considerations">
      <name>Transport Considerations</name>
      <t>This section describes transport considerations for this specification.</t>
      <t>The considerations for DTLS are largely the same as for UDP.  The
considerations for TLS are largely the same as for TCP.  We therefore
do not have different sections herein for the TLS-enabled portion of
the protocols.</t>
      <section anchor="udp">
        <name>UDP</name>
        <t>RADIUS over UDP is defined in <xref target="RFC2866"/>.  RADIUS over DTLS is defined
in <xref target="RFC7360"/>.</t>
        <t>When negotiated by both peers, this proposal changes the number of
requests which can be outstanding over a UDP connection.</t>
        <t>Where clients are sending RADIUS packets over UDP, they SHOULD include
the Original-Request-Authenticator attribute in all Status-Server
messages to a server, even if the functionality has been previously
negotiatied.  While the client can generally assume that a continual
flow of packets means that the server has not been changed, this
assumption is not true when the server is unresponsive, and the client
decides it needs to send Status-Server packets.</t>
        <t>Similarly, the server cannot assume that it is respond to the same
client on every packet.  However, once Original-Request-Authenticator
has been negotiasted, the server can safely include that attribute in
all response packets to that client.  If the client changes to not
supporting the attribute, the attribute will be ignored by the client,
and the behavior falls back to standard RADIUS.</t>
        <t>Where clients are sending RADIUS packets over DTLS, there is an
underlying TLS session context.  The client can therefore assume that
all packets for one TLS session are for the same server, with the same
capabilities.  The server can make the same assumption.</t>
      </section>
      <section anchor="tcp">
        <name>TCP</name>
        <t>RADIUS over TCP is defined in <xref target="RFC6614"/>.  RADIUS over TLS is defined
in <xref target="RFC6614"/>.</t>
        <t>When negotiated by both peers, this proposal changes the number of
requests which can be outstanding over a TCP connection.</t>
        <t>Status-Server packets are also used by the application-layer watchdog,
described in <xref target="RFC6614"/> Section 2.6.  Where clients have previously
negotiated Original-Request-Authenticator for a connection, they MUST
continue to send that attribute in all Status-Server packets over that
connection.</t>
        <t>There are other consideratiosn with the use of Status-Server.  Due to
the limitations of the ID field, <xref target="RFC6613"/> Section 2.6.5 suggests:</t>
        <t>.in +0.3i
Implementations SHOULD reserve ID zero (0) on each TCP connection for
Status-Server packets.  This value was picked arbitrarily, as there
is no reason to choose any one value over another for this use.
.in -0.3i</t>
        <t>This restriction can now be relaxed when both client and server have
negotiated the use of the Original-Request-Authenticator attribute.
Or, with no loss of generality, implementations can continue to use a
fixed ID field for Status-Server application watchdog messages.</t>
        <t>We also note that the next paragraph of <xref target="RFC6614"/> Section 2.6.5. says:</t>
        <ul empty="true">
          <li>
            <t>Implementors may be tempted to extend RADIUS to permit more than 256
outstanding packets on one connection.  However, doing so is a
violation of a fundamental part of the protocol and MUST NOT be done.
Making that extension here is outside of the scope of this
specification.</t>
          </li>
        </ul>
        <t>This specification extends RADIUS in a standard way, making that
recommendation no longer applicable.</t>
        <t><xref target="RFC6613"/> Section 2.5 describes congestion control issues which affect
inter-transport proxies.  If both inbound and outbound transports
support this specification, those congestion issues no longer apply.</t>
        <t>If however, a proxy supports this specification on inbound connections
but does not support it on outbound connections, then congestion may
occur.  The only solution here is to ensure that the proxy is capable
of opening multiple source ports, as per <xref target="RFC2865"/> Section 5.</t>
      </section>
      <section anchor="dynamic-discovery">
        <name>Dynamic Discovery</name>
        <t>The dynamic discovery of RADIUS servers is defined in <xref target="RFC7585"/>.</t>
        <t>This specification is compatible with <xref target="RFC7585"/>, with the exception of
the statically configured flag described in Section X, above.  As the
server is dynamically discovered, it is impossible to have a static
flag describing the server capabilities.</t>
        <t>The other considerations for dynamic discovery are the same as for
RADIUS over TLS.</t>
      </section>
      <section anchor="connection-issues">
        <name>Connection Issues</name>
        <t>Where clients start a new connection to a server (no matter what the
transport), they SHOULD negotiate this functionality for the new
connection, unless the ability has been statically configured.  There
is no guarantee that the new connection goes to the same server.</t>
        <t>When a client has zero connections to a server, it MUST perform this
negotiation for the new connection, prior to using this functionality,
unless the ability has been statically configured.  There is every
reason to believe that server has remained the same over extended
periods of time.</t>
        <t>If a client has one or more connections open to a server, and wishes
to open a new one, it may skip the renegotiation.</t>
        <t>Each client and server MUST negotiate and track this capability on a
per-connection basis.  Implementations MUST be able to send packets to
the same peer at the same time, using both this method, and the
traditional RADIUS ID allocation.</t>
        <t>A client may have a backlog of packets to send while negotiating this
functionality.  In the interests of efficiency, it SHOULD send packets
from that backlog while negotiation is taking place.  As negotiation
has not finished, these packets and their responses MUST be managed as
per standard RADIUS.</t>
        <t>After this functionality has been negotiated, new packets from that
connection MUST follow this specification.  Reponses to earlier
packets sent on that connection during the negotiation phase MUST be
accepted and processed.</t>
        <t>In short, the client MUST behave as a normal RADIUS client, until such
time as it receives a response packet which contains a compliant
Original-Request-Authenticator attribute.  This requirement ensures
complete compatibility with existing RADIUS, even in the event of
client misconfiguration.</t>
        <t>We recognize that this tracking may be complex, which is why this
behavior is not mandatory.  Clients may choose instead to wait until
negotiation is complete before sending packets; or to assume that the
functionality of the server is the same across all connections to it,
and therefore only do negotiations once.</t>
      </section>
    </section>
    <section anchor="system-considerations">
      <name>System Considerations</name>
      <t>This section describes implementation considerations for clients and
servers.</t>
      <section anchor="client-considerations">
        <name>Client Considerations</name>
        <t>Clients SHOULD have an configuration flag which lets administators
statically configure this behavior for a server.  Clients MUST
otherwise negotiate this functionality before using it.</t>
        <t>If this functionality has been negotiated, clients MUST use the
Request Authenticator as an part of the Key used to uniquely identify
request packets.  Clients MUST use the Original-Request-Authenticator
attribute from response packets as part of the Key to find the
original request packet.</t>
        <t>The Original-Request-Authenticator attribute has been (or is likely to
be) allocated from the "extended" attribute space.  We note that
despite this allocation, clients are not required to implement the
full <xref target="RFC6929"/> specification.  That is, clients may be able to
originate and receive Original-Request-Authenticator attributes, while
still being unable to originate or receive any other attribute in the
"extended" attribute space.</t>
        <t>The traditional behavior of clients is to track one or more
connections, each of which has 256 IDs available for use.  As requests
are sent, IDs are marked "used".  As responses are received, IDs are
marked "free".  IDs may also marked "free" when a request times out,
and the client gives up on receiving a response.</t>
        <t>If all of the IDs for a particular connection are marked "free", the
client opens a new connection, as per the suggestion of <xref target="RFC2865"/>
Section 5.  This connection and any associated IDs are then made
available for use by new requests.</t>
        <t>Similarly, when a client notices that all of the IDs for a connection
are marked "free", it may close that connection, and remove the IDs
from the ones available for use by new requests.  The connections may
have associated idle timeouts, maximum lifetimes, etc. to avoid
"connection flapping".</t>
        <t>All of this management is complex, and can be expensive for client
implementations.  While this management is still necessary for
backwards compatibility, this specification allows for a significantly
simpler process for ID allocation.  There is no need for the client to
open multiple connections.  Instead, all traffic can be sent over one
connection.</t>
        <t>In addition, there is no need to track "used" or "free" status for
individual IDs.  Instead, the client can re-use IDs at will, and can
rely on the uniqueness of the Request Authenticator to disambiguate
packets.</t>
        <t>As there is no need to track ID status, the client may simply allocate
IDs by incrementing a local counter.</t>
        <t>With this specification, the client still needs to track all outgoing
requests, but that work was already required in traditional RADIUS.</t>
        <t>Client implementors may be tempted to require that the
Original-Request-Authenticator be the first attribute after the RADIUS
header.  We state instead that clients implementing this specification
MUST accept the Original-Request-Authenticator attribute, no matter
where it is in the response.  We remind implementors that this
specification adds a new attribute, it does not change the RADIUS
header.</t>
        <t>Finally, we note that clients MUST NOT set the ID field to a fixed
value for all packets.  While it is beneficial to use the Request
Authenticator as an identifier, removing the utility of an existing
identifier is unwarranted.</t>
      </section>
      <section anchor="server-considerations">
        <name>Server Considerations</name>
        <t>Servers SHOULD have an configuration flag which lets administators
statically configure this behavior for a client.  Servers MUST
otherwise negotiate this functionality before using it.</t>
        <t>If this functionality has been negotiated, servers MUST use the
Request Authenticator as an part of the key used to uniquely identify
request packets.  Servers MUST use the
Original-Request-Authenticator attribute from response packets as part
of the Key to find the original request packet.</t>
        <t>The Original-Request-Authenticator attribute has been (or is likely to
be) allocated from the "extended" attribute space.  We note that
despite this allocation, servers are not required to implement the
full <xref target="RFC6929"/> specification.  That is, servers may be able to
originate and receive Original-Request-Authenticator attributes, while
still being unable to originate or receive any other attribute in the
"extended" attribute space.</t>
      </section>
      <section anchor="proxy-considerations">
        <name>Proxy Considerations</name>
        <t>There are additional considerations specific to proxies.  <xref target="RFC6929"/>
Section 5.2 says in part;</t>
        <ul empty="true">
          <li>
            <t>Proxy servers SHOULD forward
attributes, even attributes that they do not understand or that are
not in a local dictionary.  When forwarded, these attributes SHOULD
be sent verbatim, with no modifications or changes.  This requirement
includes "invalid attributes", as there may be some other system in
the network that understands them.</t>
          </li>
        </ul>
        <t>On its face, this recommendation applies to the
Original-Request-Authenticator attribute.  The caveast is that Section X,
above, requires that servers do not send the
Original-Request-Authenticator to clients unless the clients have first
negotiated the use of that attribute.  This requirement should ensure
that proxies which are unaware of the Original-Request-Authenticator
attribute will never receive it.</t>
        <t>However, if a server has been administratively configured to send
Original-Request-Authenticator to a client, that configuration may be
in error.  In which case a proxy or originating client may erroneously
receive that attribute.  If the proxy or server is unaware of
Original-Request-Authenticator, then no harm is done.</t>
        <t>It is possible for a proxy or client to be aware of
Original-Request-Authenticator, and not negotiate it with a server,
but that server (due to isses outlined above) still forwards the
attribute to the proxy or client.  In that case, the requirements of
Section X, above, are that the client treat the received
Original-Request-Authenticator attribure as an "invalid attribute",
and ignore it.</t>
        <t>The net effect of these requirements and cross-checks is that there
are no interoperability issues between existing RADIUS
implementations, and implementations of this specification.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This proposal does not change the underlying RADIUS security model,
which is poor.</t>
      <t>The contents of the Original-Request-Authenticator attribute are the
Request Authenticator, which is already public information for UDP or
TCP transports.</t>
      <t>The use of Original-Request-Authenticator is defined in such a way
that all systems fall back gracefully to using standard RADIUS.  As
such, there are no interoperability issues between this specification
and existing RADIUS implementations.</t>
      <t>There are few, if any, security considerations related to
implementations.  Clients already must track the Request
Authenticator, so matching it in a response packet is minimal extra
work.  Servers must also track and cache duplicate packets, as per
<xref target="RFC5080"/> Section 2.2.2, so using the Request Authenticator as an
additional identifier is minimal extra work.</t>
      <t>The use (or not) of Original-Request-Authenticator has no other
security considerations, as it is used solely as an identifier to
match requests and responses.  It has no other meaning or use.</t>
      <section anchor="access-request-forging">
        <name>Access-Request Forging</name>
        <t>The Request Authenticator in Access-Request packets is defined to be a
16 octet random number <xref target="RFC2865"/> Section 3.  As such, these packets
can be trivially forged.</t>
        <t>The Message-Authenticator attribute was defined in <xref target="RFC2869"/> Section
5.14 in order to address this issue.  Further, <xref target="RFC5080"/> Section 2.2.2
suggests that client implementations SHOULD include a
Message-Authenticator attribute in every Access-Request to further
help mitigate this issue.</t>
        <t>The Status-Server packets also have a Request Authenticator which is a
16-octet random number <xref target="RFC5997"/> Section 3.  However, <xref target="RFC5997"/>
Section Section 2 says that a Message-Authenticator attribute MUST be
included in every Status-Server packet, which provides per-packet
authentication and integrity protection.</t>
        <t>We extend that suggestion for this specification.  Where the transport
does not provide for authentication or integrity protection
(e.g. RADIUS over UDP or RADIUS over TCP), each Access-Request packet
using this specification MUST include a Message-Authenticator
attribute.  This inclusion ensures that packets are accepted only from
clients who know the RADIUS shared secret.</t>
        <t>This protection is, of course, insufficient.  Malicious or misbehaving
clients can create Access-Request packets which re-use Request
Authenticators.  These clients can also create Request Authenticators
which exploit implementation issues in servers, such as turning a
simply binary lookup into a linked list lookup.</t>
        <t>As a result, server implementations MUST NOT assume that the Request
Authenticator is random.  Server implementations MUST be able to
detect re-use of Request Authenticators.</t>
        <t>When a server detects that a Request Authenticator is re-used, it MUST
replace the older request with the newer request.  It MUST NOT respond
to the older request.  It SHOULD issue a warning message to the
administrator that the client is malicious or misbehaving.</t>
        <t>Server implementations SHOULD use data structures such as Red-Black
trees, which are immune to maliciously crafted Request Authenticators.</t>
      </section>
      <section anchor="md5-collisions">
        <name>MD5 Collisions</name>
        <t>For other packet types (Accounting-Request, etc.), the Request
Authenticator is the MD5 signature of the packet and the shared
secret.  Since this data is used directly as an identifier, we need to
examine the security issues related to this practice.</t>
        <t>We must note that MD5 has been broken, in that there is a published
set of work which describes how to create two sets of input data which
have the same MD5 hash.  These attacks have been extended to create
sets of data of arbitrary length, which differ only in 128 bytes, and
have the same MD5 hash.</t>
        <t>This attack is possible in RADIUS, as the protocol has the capability
to transport opaque binary data in (for example) Vendor-Specific
attributes.  There is no need for the client or server to understand
the data, it simply has to exist in the packet for the attack to
succeed.</t>
        <t>Another attack allows two sets of data to have the same MD5 hash, by
appending thousands of bytes of carefully crafted data to the end of
the file.  This attack is also possible in RADIUS, as the maximum
packet size for UDP is 4096 octets, and <xref target="RFC7930"/> permits packets up
to 65535 octets in length.</t>
        <t>However, as the packets are authenticated with the shared secret,
these attacks can only be performed by clients who are in possession
of the shared secret.  That is, only trusted clients can create MD5
collisions.</t>
        <t>We note that this specification requires server implementations to
detect duplicates, and to process only one of the packets.  This
requirement could be exploited by a client to force a server to do
large amounts of work, partially processing a packet which is then
made obselete by a subsequent packet.  This attack can be done in
RADIUS today, so this specification adds no new security issues to the
protocol.</t>
        <t>In fact, this specification describes the problem of "conflicting
packets" for the first time, and defines how they should be processed
by servers.  This addition to the RADIUS protocol in fact increases
it's security, by specifying how this corner case should be handled.
The fact that RADIUS has been widely implemented for almost 25 years
without this issue being described shows that the protocol and
implementations are robust.</t>
        <t>We do not offer a technical solution to the problem of trusted parties
misbehaving.  Instead, the problem should be noted by the server which
is being attacked, and administrative (i.e. human) intervention should
take place.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification allocates one attribute in the RADIUS Attribute Type registry, as follows.</t>
      <t>Name
&gt; Original-Request-Authenticator</t>
      <t>Type
&gt; TBD - allocate from the "extended" space</t>
      <t>Data Type
&gt; octets</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>In hindsight, the decision to retain MD5 for RADIUS/TLS was likely wrong.  It was an easy decision in the short term, but it has caused ongoing problems which this document addresses.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="BCP14" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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="RFC2865" target="https://www.rfc-editor.org/info/rfc2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney">
              <organization/>
            </author>
            <author fullname="S. Willens" initials="S." surname="Willens">
              <organization/>
            </author>
            <author fullname="A. Rubens" initials="A." surname="Rubens">
              <organization/>
            </author>
            <author fullname="W. Simpson" initials="W." surname="Simpson">
              <organization/>
            </author>
            <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="RFC2869" target="https://www.rfc-editor.org/info/rfc2869">
          <front>
            <title>RADIUS Extensions</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney">
              <organization/>
            </author>
            <author fullname="W. Willats" initials="W." surname="Willats">
              <organization/>
            </author>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun">
              <organization/>
            </author>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes additional attributes for carrying authentication, authorization and accounting information between a Network Access Server (NAS) and a shared Accounting Server using the Remote Authentication Dial In User Service (RADIUS) protocol described in RFC 2865 and RFC 2866.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2869"/>
          <seriesInfo name="DOI" value="10.17487/RFC2869"/>
        </reference>
        <reference anchor="RFC5080" target="https://www.rfc-editor.org/info/rfc5080">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson">
              <organization/>
            </author>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5080"/>
          <seriesInfo name="DOI" value="10.17487/RFC5080"/>
        </reference>
        <reference anchor="RFC6929" target="https://www.rfc-editor.org/info/rfc6929">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS) Protocol Extensions</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <author fullname="A. Lior" initials="A." surname="Lior">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC8044" target="https://www.rfc-editor.org/info/rfc8044">
          <front>
            <title>Data Types in RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <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>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC2866" target="https://www.rfc-editor.org/info/rfc2866">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney">
              <organization/>
            </author>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2866"/>
          <seriesInfo name="DOI" value="10.17487/RFC2866"/>
        </reference>
        <reference anchor="RFC5176" target="https://www.rfc-editor.org/info/rfc5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba">
              <organization/>
            </author>
            <author fullname="G. Dommety" initials="G." surname="Dommety">
              <organization/>
            </author>
            <author fullname="M. Eklund" initials="M." surname="Eklund">
              <organization/>
            </author>
            <author fullname="D. Mitton" initials="D." surname="Mitton">
              <organization/>
            </author>
            <author fullname="B. Aboba" initials="B." surname="Aboba">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a currently deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, allowing dynamic changes to a user session, as implemented by network access server products.  This includes support for disconnecting users and changing authorizations applicable to a user session. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5176"/>
          <seriesInfo name="DOI" value="10.17487/RFC5176"/>
        </reference>
        <reference anchor="RFC5997" target="https://www.rfc-editor.org/info/rfc5997">
          <front>
            <title>Use of Status-Server Packets in the Remote Authentication Dial In User Service (RADIUS) Protocol</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document describes a deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, enabling clients to query the status of a RADIUS server.  This extension utilizes the Status-Server (12) Code, which was reserved for experimental use in RFC 2865.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5997"/>
          <seriesInfo name="DOI" value="10.17487/RFC5997"/>
        </reference>
        <reference anchor="RFC6613" target="https://www.rfc-editor.org/info/rfc6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer.  This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS).  It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security.  This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
        <reference anchor="RFC6614" target="https://www.rfc-editor.org/info/rfc6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter">
              <organization/>
            </author>
            <author fullname="M. McCauley" initials="M." surname="McCauley">
              <organization/>
            </author>
            <author fullname="S. Venaas" initials="S." surname="Venaas">
              <organization/>
            </author>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga">
              <organization/>
            </author>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="RFC7360" target="https://www.rfc-editor.org/info/rfc7360">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok">
              <organization/>
            </author>
            <date month="September" year="2014"/>
            <abstract>
              <t>The RADIUS protocol defined in RFC 2865 has limited support for authentication and encryption of RADIUS packets.  The protocol transports data in the clear, although some parts of the packets can have obfuscated content.  Packets may be replayed verbatim by an attacker, and client-server authentication is based on fixed shared secrets.  This document specifies how the Datagram Transport Layer Security (DTLS) protocol may be used as a fix for these problems.  It also describes how implementations of this proposal can coexist with current RADIUS systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7360"/>
          <seriesInfo name="DOI" value="10.17487/RFC7360"/>
        </reference>
        <reference anchor="RFC7585" target="https://www.rfc-editor.org/info/rfc7585">
          <front>
            <title>Dynamic Peer Discovery for RADIUS/TLS and RADIUS/DTLS Based on the Network Access Identifier (NAI)</title>
            <author fullname="S. Winter" initials="S." surname="Winter">
              <organization/>
            </author>
            <author fullname="M. McCauley" initials="M." surname="McCauley">
              <organization/>
            </author>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document specifies a means to find authoritative RADIUS servers for a given realm.  It is used in conjunction with either RADIUS over Transport Layer Security (RADIUS/TLS) or RADIUS over Datagram Transport Layer Security (RADIUS/DTLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7585"/>
          <seriesInfo name="DOI" value="10.17487/RFC7585"/>
        </reference>
        <reference anchor="RFC7930" target="https://www.rfc-editor.org/info/rfc7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic.  This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets.  This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information.  This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="PATCH">
          <front>
            <title>https://mailarchive.ietf.org/arch/msg/radext/BkXgD68MASxqD4vjXV1M2CaRWAY</title>
            <author initials="S." surname="Naiming" fullname="Shen Naiming">
              <organization/>
            </author>
            <date year="2017" month="April"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIABprOGMAA+V9644bR5bm/3iK3PKPljys0l22NYBnq1XydqEtS2uV2z1o
GIskGSxmi8zkZCZV4gzmXfZZ9sn2nO+cE5fMZFXJsxhgsN3omRLJjIw4ce7X
09NT11f9xr8qXjdt6zdlX9XXRev/Ze+7vivKekn/2G0q3xVVXfRrX/zst03v
i/M9/aPuqwU90dTFRVVuisu6+KXzbfHBt5+qhS8e/Hx+cfnLh4fF+7bpm0Wz
KT5VpS6CF6SrNO2ZK+fz1n96Vbz53Pt66Zenlxdu2SzqcksbXLblqj9d+o/N
x9O2XPrP/anu87RMlzl9/Ny5rqet/69y09T0ZN/uvat2Lf7q+qePH3/3+Kkr
W1++oj33vq19726uXxW03zd/vSp+bdqPDIb/0Tb7nft4E391esGbcPSeV0XX
L123n2+rriMIXB129KbLN1c/OLerXhX0n6+KRVkX+84XZduWh+JBtSrKzaY4
+O5h0bTFuuzWxdq33hUFgecVf0F/dk3bt37VvcISS78q9xu6ir6x7w9b+Zr/
6fjoTfvKuVO6IPrw/Ky48H9uPtIPBWznG9qEfdS0dMofWu/lZugTvy2rzSva
F8Hrv6/oGwJtte/O6JfO1U27pfv95F/RL//4+v2T5wSjH15/++Sb5/QB/fX0
25cvXoU/v9M/Xzz+9rH++fK7p/bpt4+fP6d9VvUqXVWefGlPPvkm/Pndd9/Y
Ii+fPIt/Ptc/v3n20t7yzYtvbRvffPcMn74/v3r9J/6DYCsIvu77Xffq0SM+
cNku1rSBs8r3Kz7qI/7g0ba7fiSY9eiPH/96ffHy27fnHz7/y8XzT3//61+e
vH36uvz51/N/xprLsmfY7tpqUzx9/OQbfGh3UeA/Av4PhJjFT2W1JYRy7pOv
9zj2NaOWIRz9W25BXv7fbVf8u6pf7+evingzj7wRR7U8o6/p5k9Pi3Le9W25
oH/JzTLaEfkWhP+nzaL3fXG5ZApZVUSf9H82S0aohdK8zyjetb7bNTUtMCtu
1tViXWxo+/TdgvhALaj49MXL4oQ4wmpTXa/7k2JXLj56+mrnW7do6tovmC2c
FcXVuuoKouH9lh6l12ybT7Sxfl32sqqwj/mBKaO5YapT3uAy3sDvnHs+1bIo
eZdFuVxW/CzxHTkPoVVRySEPDGzdEvbgiRR35bzaVP2hoA3V/rrpKzr4kiBE
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
UDwQ1V9p4qE5SGIOIP+cMHVTiSulSlNSNHsh41wwXbTTyUgZDa6tkfY9kHgO
ibJB1B0r489cIGhUJbgNl0EQwTUnAs+541T4/YNsYw8t60evCeYqhHYs9EFH
hcRvP8zGUh9762GuYOXwtpWiK3t3XO6tTr3UoTq2HtTGIm4SWuy908JJwORI
/4f+PhSQUm3CfDIV84NiApel+hZpXAtSvUvepnIbF5JYjr1IK4h67ThTmhe4
91u6XlakIZuvN81cm/0w7zZ6kn/VrJGwOxb5dLDRquguSXRJtZM0DJk1BVtV
LfefiK3B2Gwc6iTDg3GTIxa5cGOPTYLymrO51WkdQE46cnx1FspnWNCNt31I
DEEPvs1IPOkB9CmALi1mUZ2C9eZuj8rZkJehzyA44lA1LyjnBw9LEQzbobdy
Sa5hsb49chdSUCrJPC26pySLq+6i+7NsGvYGOZWIVmGVJh0kSSRhpZllC962
Qc6cgEjIHqwiRltudJL+qGaqtilk+hrmtMTSoZ3W5y6aXXXnRtLkkbRIaLch
YSAPP3kpdReSTc8ReBHBd5UyJiXJV+lrMgCDslgnTtN0hsVFed5IFYtc770H
cANgpJg4pPnud4wUDHgXahJvqzN6Z1rs8Ds2L1esz84MhVBXlEZ+kqwfdkZV
NbKP06N7yb0tryX4qmx9KndczGXLNgntEl2MxaXVQ1zAwZ2hxCirNX6VolJ4
2zCtdunZDx0K3ggED1Cwx7las4maXTco1hXnyEO5fSTZqH+qSvSL6c6KIrNV
fcJPuRB20JvA51VXtxQuD2DCHoUgTL9MAMX6XOnlM67Pva2KS5PNQkWy7piV
ian0BHbGazLC0pMg28iag2saaN5lazpAonOzOFfT5RVHo/k1kufWiy0aJQzL
E1a2EJWew21OxlyzWZ52/WEDkUgUfflDWOM+z/OPHT85Szxg4lQstFSyghEB
hwbf8w8Z0Uel2uocaMGZkbFpIUd3W0wud8tSLmyc7muwFOek/kE2A6oX1VtW
AG/aWTKWbGNzCM/m2fxp3kSR5vsikg9/HqGBRoCt5jbpMGatveom2OlnlpSS
eLCgyhHhJ/pSoI9H0BmtkEbdh5yxUAkR5ICE2r7dqXogb2G1GpeHWB4SRlho
Dm5GYFKZpJUgMmLIadRH6EfyJ+xJ5E9JpbG4Th6p8yJx1IjEWoKQCwOZS867
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
hJ/hG83gdF+q0JXi08ya+565dCxW2M0QbhnKW3yXSZ2tat+54bLW6abJwldf
IIEytFPOph25nHTjYWMM9YRVWQ+bBMWNntqApjiAKpP8uvRi03ShBUEkmKvo
I0jyh8VtoVK3rDb7NtR/23cSzpmc52Kx56xB/iHTXBLmf5XZyMXAL51MX7Is
Y+tOou3Q/NI1xtny8WTmarU8ECSbi/bJOXTszbCJWC56ltQ5K+mC80Ne68UN
NuhltdVJSqwv+IoPAR/E52nK9n1xgpF1mJY/GEQhh0aMEJ04ZOIEbiqBlQNl
wykisZgrQCcpQrAETdx/FrI8Pr7EqToWcSNT+DMuw5zzpuRO78OEunvMSdH2
W6huYO9QnOEhpnxdDOpVJXYy0Kmmknq55Bpd37Zcat63pc6KSMontHXfalNe
W167liQm+Q1SLsyi9nCbEYS8tUVYTtPPgGLix2JChcBWV5o06mbMQhotv2Ww
hpXn5WOC3PJAihlmY7H+rIPSDpCiPLL0N5MLsW8jsgm6oK9Z0ZB4tPAm0Vsv
fvrA3uSWt9i0ud6WGTrI7jgO116a76jVYirPXT6K2OYftHVbGn+eqKb27+2G
inpTEa+zcYsuZWTjaOFD7aEJ/gGeKV13YjurL7NCor0LSbo5iLrFikgqmXmH
cBgfz80c+Frcg5PXSZ8KqK8nD1MHTBgeNuwiW2kPMDPL7n3Bmb946o7vL89j
I6GR6B0J3Xt7ZzKhK0rIbglO3XfhKEG1tgohO0eZGaXTXNCqDQZha7F8NwY1
Lf5YErFf8yTeDLHVM5XOEsq3xu76Sh1I4TSqgIaUxq/ugnSoSYT9lXVcSeCl
GUy3ryXVhJXMfbH0qyhLRzrZTLlflaQ1INDCY4Xv4YiRIbymvI4S9yCOPSIQ
fpmZw2Ig7xRyMTjaWdsPnhz9Gwyu0MUud6tplzcXKitDqyYw18oyP3Q6ax+z
z84/vL68JOaLbB56EE2x/3hRnBaX5z+dWxUB3284WSxqlVdJKr8T5zo//+Q7
epwXWTZ7ErCni7VHAipTKsITg6Wdu+B92+sl4cK5v7B95qzn7DzmhkrPRbxO
Fc8pl5cGCMwVywvL9WFdva6BT/WHRJT8nmXKezrsdOJFwBHzbjODOoYid/t7
E4RIZfqE4y4prfsPLDpsgDw0lqX1WfbIsGmxm5zAoG125Y+fzv9sla8/NbED
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

-->

</rfc>
