<?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.21 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-protocol-error-00" category="bcp" consensus="true" submissionType="IETF" updates="2865, 2866, 5176, 6613, 6614, 7360, 7930" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="Protocol-Error">Standardising Protocol-Error</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-protocol-error-00"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>InkBridge Networks</organization>
      <address>
        <email>aland@inkbridgenetworks.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="01"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 48?>

<t>We extend and standardise the Protocol-Error packet Code, first
defined in RFC 7930 for the Remote Authentication Dial In User Service
(RADIUS) protocol.</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-ietf-radext-protocol-error/"/>.
      </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/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/InkbridgeNetworks/protocol-error.git"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Remote Authentication Dial In User Service (RADIUS) protocol is
designed as a request / response protocol, where clients send requests
to servers, and servers send responses to clients.  There are a few
different types of requests defined, and each type of request has one
or more associated valid responses.  However, these requests and
responses are limited to indicating success or failure of the
requested action, such as authentication or accounting.</t>
      <t>There is no way for clients and servers to exchange information about
their state, or their inability to perform the requested action.
Instead, for actions such as authentication, servers can only reply
with accept, reject, or simply fail to respond to the request.  There
is no way for the server to respond to a client with an error
indicating "invalid request" or "unable to answer this request".</t>
      <t>The result is that when the server experiences a failure, it either
stops responding to requests, or returns a type-specific response
which is arguably wrong.  Depending on the kind of failure, the server
may stop responding to only one request, or else the server could stop
responding to all requests.  The client then has to make sense of the
situation where some requests get a positive acknowledgement (ACK)
response, other requests get negative acknowledgement (NAK) response,
and other requests simply never see a response.</t>
      <t>This failure for the server to respond meaningfully means that the
client has no way of knowing if the server is slow, is off line, or
else if the server is a proxy and one of the next hops has failed.
The only course of action that the client can take is to guess as what
it should do when the server fails to respond.  Such guesses are
likely to be wrong.  Incorrect decisions based on incomplete knowledge
contribute to network instability and to congestive collapse.</t>
      <t>This failure of RADIUS to provide for protocol level signaling has
caused issues with deployments for decades.  The network as a whole
operates not because the underlying protocol is robust, but instead
because of local workarounds built by implementers and operators.  It
is time to address this deficiency.</t>
      <t>This document standardises the Protocol-Error packet code, which was
first defined as an experimental code in <xref section="4" sectionFormat="comma" target="RFC7930"/>.  This
packet code allows for servers to reply to any request with a
Protocol-Error packet, which serves as an explicit protocol layer
signal that the server has received a request, but is unable to
process it.  The Protocol-Error packet contains an Error-Cause
attribute (<xref section="3.1" sectionFormat="comma" target="RFC3576"/>) which indicates whether the error
is limited to just this packet or to the connection as a whole.  The
Error-Cause attribute also indicates whether this error is temporary
or permanent.</t>
      <t>Explicitly signaling errors for protocol-layer failures increases the
stability of the network, and decreases the likelihood of congestive
collapse on failure.</t>
      <t>Where <xref target="RFC7930"/> gives a very short description of the Protocol-Error
packet Code, this document gives a more detailed definition.  It
explains the reasons for standardising Protocol-Error, fully defines
the behavior of clients and servers with respect to Protocol-Error,
and gives suggestions for migrations paths for implementations and
deployments.</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.
<?line -6?>
      </t>
    </section>
    <section anchor="review-and-motivation">
      <name>Review and Motivation</name>
      <t>This specification defines an extension to the RADIUS protocol which
makes significant changes to how the protocol operates in the event of
a failure.  In order to motivate this change, we need to describe the
historic issues with the protocol.  We describe how the request /
response nature of RADIUS is not, in fact, fully met: only some packet
types have a NAK response defined, and there are other cases where the
existing standards require that valid requests do not get any response
at all.</t>
      <t>The result is that the RADIUS protocol is missing an important piece:
signaling of protocol-level errors.  This section explains the
numerous situations where these errors are not signaled, and what
impact this problem has for running networks.</t>
      <section anchor="request-response-packets">
        <name>Request / Response Packets</name>
        <t>This section reviews what types of request and responses are defined
in RADIUS, along with their behavior.</t>
        <t>The Access-Request packet Code is defined in <xref section="4.1" sectionFormat="comma" target="RFC2865"/>,
with Access-Accept (<xref section="4.2" sectionFormat="comma" target="RFC2865"/>) as an ACK indicating
that authentication has succeeded, and Access-Reject (<xref section="4.3" sectionFormat="comma" target="RFC2865"/>) as an explicit NAK that authentication has failed.</t>
        <t>The Accounting-Request packet Code is defined in <xref section="4.1" sectionFormat="comma" target="RFC2866"/>, with Accounting-Response defined in <xref section="4.2" sectionFormat="comma" target="RFC2866"/>,
as an ACK that the accounting data has been stored.  There is,
however, no corresponding NAK which indicates that accounting has
failed.  Instead, <xref section="4.1" sectionFormat="comma" target="RFC2866"/> states:</t>
        <ul empty="true">
          <li>
            <t>Upon receipt of an Accounting-Request, the server MUST transmit an
Accounting-Response reply if it successfully records the
accounting packet, and MUST NOT transmit any reply if it fails to
record the accounting packet.</t>
          </li>
        </ul>
        <t>Failing to acknowledge a request with a response is, at best,
impolite.  More practically, it causes problems with networks.  These
problems will be discussed in more detail later in this document.</t>
        <t>The CoA-Request packet code is defined in <xref section="2.2" sectionFormat="comma" target="RFC5176"/>,
along with CoA-ACK to indicate that the change was successful, and
CoA-NAK as an acknowledgement that the change of authorization action
could not be performed.</t>
        <t>The Disconnect-Request packet code is defined in <xref section="2.1" sectionFormat="comma" target="RFC5176"/>, along with Disconnect-ACK to indicate that the disconnection
was successful, and Disconnect-NAK as an acknowledgement that the user
or device could not be disconnected.</t>
        <t>While most requests have an ACK and NAK response defined,
Accounting-Request packets only have an ACK response defined.  If a
request does not receive a response, clients retransmit as
per<xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.  For Accounting-Request packets, these
retransmits are unlikely to yield a positive response.</t>
        <t>Even when the request has a NAK response defined, there are still
situations where a valid request could never have a response returned.
Some implementations choose to discard well-formed and authentic
packets, in violation of previous specifications.  Even where
implementations follow the specificiations there are many cases where
those specifications suggest or even require that a server discard
authentic requests, and therefore never send a response.</t>
      </section>
      <section anchor="silently-discard">
        <name>Silently Discard</name>
        <t>The existing RADIUS specifications require that a server "silently
discard" requests without a response for many reasons.  In some cases,
this discard process is necessary for security reasons, such as when
the Message-Authenticator (<xref section="5.14" sectionFormat="comma" target="RFC2869"/> fails
verification.  Discarding packets for security reasons is necessary,
and this specification does not change that behavior.</t>
        <t>In other cases, this "silently discard" process is done for reasons
which are not related to security.  For example, a server could
discard a request which contains data that the server does not
understand, but which also does not affect the requested action.  Or,
the server could discard a request which has been authenticated, and
is well-formed, but which contains unexpected protocol state.</t>
        <t>In an ideal world, the server would instead either ignore only the
portions of the packet which it could not understand, or else the
server would respond to the client with an indication that the request
was improper.  A server could also respond to a request containing
invalid protocol state, and indicate that the request was authentic
and well-formed, but it could not be processed because it contained
unexpected protocol state.</t>
        <t>All of these issues are grouped under the term "silently discard",
which is defined in <xref section="1.2" sectionFormat="comma" target="RFC2865"/> as:</t>
        <ul empty="true">
          <li>
            <t>This means the implementation discards the packet without
further processing.  The implementation SHOULD provide the
capability of logging the error, including the contents of
the silently discarded packet, and SHOULD record the event
in a statistics counter.</t>
          </li>
        </ul>
        <t>The specifications for other packet Codes contain the exact same text
in <xref section="1.2" sectionFormat="comma" target="RFC2866"/>, and in <xref section="1.3" sectionFormat="comma" target="RFC5176"/>.</t>
        <t>While there is not a lot of quantitative data publicly available,
these silent discards are colloquially known to be a large source of
instability in RADIUS deployments.  There has been substantial work
done by server implementations and operators of proxy networks to
stablize the network by attempting to determine whether or not the
lack of a response indicates an actual failure, or only an illusory
one due to the limitations of the RADIUS protocol.</t>
        <t>One ad-hoc workaround to failures involves increasing the number of
Status-Server checks <xref target="RFC5997"/>, in violation of the <xref section="2.6" sectionFormat="comma" target="RFC2865"/> suggestion of "Keep-Alives Considered Harmful", which we
quote in full here:</t>
        <ul empty="true">
          <li>
            <t>Some implementers have adopted the practice of sending test RADIUS
requests to see if a server is alive.  This practice is strongly
discouraged, since it adds to load and harms scalability without
providing any additional useful information.  Since a RADIUS request
is contained in a single datagram, in the time it would take you to
send a ping you could just send the RADIUS request, and getting a
reply tells you that the RADIUS server is up.  If you do not have a
RADIUS request to send, it does not matter if the server is up or
not, because you are not using it.</t>
            <t>If you want to monitor your RADIUS server, use SNMP.  That's what
SNMP is for.</t>
          </li>
        </ul>
        <t>Experience has shown that this analysis is incomplete.  SNMP is not
suitable for monitoring servers across the wider Internet, and it is
not suitable for monitoring servers in a different administrative
domain.  The quoted text also does not address the situation where a
server is responding to only a subset of requests.  This position is
implied in <xref section="2" sectionFormat="comma" target="RFC5997"/>, which says:</t>
        <ul empty="true">
          <li>
            <t>The Status-Server packet is not a "Keep-Alive" as discussed in
<xref section="2.6" sectionFormat="comma" target="RFC2865"/>.  "Keep-Alives" are Access-Request packets
sent to determine whether a downstream server is responsive.  These
packets are typically sent only when a server is suspected to be
down, and they are no longer sent as soon as the server is available
again.</t>
          </li>
        </ul>
        <t>In some cases, there is a sufficiently low volume of packets that the
large inter-packet spacing triggers these Status-Server checks.  In
other cases, implementations will send Status-Server when some
requests do not get a response, even if the server is actively
responding to other requests.</t>
        <t>Some implementations and deployments have chosen to continuously send
Status-Server requests, in contradiction to the recommendations of
<xref section="2.6" sectionFormat="comma" target="RFC2865"/>.  Feedback from those systems indicate that
this practice increases the information available to administrators,
and decreases operational outages.</t>
        <t>The rest of this section describes in more detail the numerous
situations where requests are silently discarded.</t>
        <section anchor="unknown-attributes">
          <name>Unknown Attributes</name>
          <t>Some implementations discard requests when the request contains
attributes which the implementation does not recognize.  The behavior
of servers with respect to unknown attributes is defined by <xref section="5" sectionFormat="comma" target="RFC2865"/> which says that implementations:</t>
          <ul empty="true">
            <li>
              <t>MAY ignore Attributes with an unknown Type.</t>
            </li>
          </ul>
          <t><xref section="2.8" sectionFormat="comma" target="RFC6929"/> makes a stronger suggestion that:</t>
          <ul empty="true">
            <li>
              <t>It is RECOMMENDED that Attributes with unknown Type, Extended-Type,
TLV-Type, or EVS-Type are treated as "invalid attributes".</t>
            </li>
          </ul>
          <t>Despite this recommendation to ignore these unknown attributes, some
implementations will instead silently discard the entire request.
This behavior is not standards compliant, and is not allowed by any
interpretation of the text in <xref section="5" sectionFormat="comma" target="RFC2865"/>.</t>
          <t>For example, the BlastRADIUS mitigations (TBD) were negatively
affected by some implementations which would discard packets which
contain a Message-Authenticator attribute.  This behavior was seen in
2024, even though that the attribute had been defined decades earlier
in <xref section="5.12" sectionFormat="comma" target="RFC2869"/> (2000).  This failure to handle unknown
attributes in a reasonable manner made it difficult and expensive for
operators to secure their networks via the recommended BlastRADIUS
mitigations.</t>
        </section>
        <section anchor="invalid-attributes">
          <name>Invalid Attributes</name>
          <t><xref section="2.8" sectionFormat="comma" target="RFC6929"/> defines "invalid attributes" as attributes
where the Type is known, but the Value is malformed.  This topic was
not discussed in the previous RADIUS specifications, which led to a
wide range of implementation-specific behavior, including ones where
the packet would be silently discarded.</t>
          <t>The behavior of implementations with respect to invalid attributes was
clarified in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>, which requires the following
behavior:</t>
          <ul empty="true">
            <li>
              <t>The existence of an "invalid attribute" in a
packet or attribute MUST NOT result in the implementation discarding
the entire packet ...</t>
            </li>
          </ul>
          <t>Even though this specification being over a decade old, some
implementations still do not follow this requirement.  Instead, some
implementations will silently discard the entire request.  This
behavior has caused wide-spread issues in proxy networks, most notably
with Operator-Name <xref section="4.1" sectionFormat="comma" target="RFC5580"/>.</t>
          <t>One widely used implementation had erroneously created a local
definition for attribute 126, which was then in conflict with
Operator-Name when that attribute was defined.  The implemenation also
discarded requests which contained invalid attributes.  The
combination of the two behaviors led to wide-spread outages and
significant effort by operators to perform a root-cause analyis and
then to correct the issue.</t>
          <t>The behavior of discarding authentic, but unexpected data violates the
robustness principle on which the Internet was founded.</t>
        </section>
        <section anchor="attribute-order">
          <name>Attribute Order</name>
          <t>XXXX attributes in "unexpected" order cause the packet to be dropped.</t>
        </section>
        <section anchor="unknown-state">
          <name>Unknown State</name>
          <t>In some cases, as server can receive a request which contains a State
attribute (<xref section="5.24" sectionFormat="comma" target="RFC2865"/>) with an unknown value.  This
situation can occur, for example, when EAP <xref target="RFC3579"/>
authentications are sent through a load balancer, and one of the final
home servers fails.  The load balancer does not necessarily know
anything about the underlying EAP session, and therefore may
redistribute requests for an ongoing EAP session to a server which is
unaware of that session.</t>
          <t>The result is that a home server receives a request which is in the
middle of an EAP session.  Since the server recieving the request did
not start the EAP session, it does not recognize the value of the
State attribute, and is unable to process the request.</t>
          <t>Some implementations will response with an Access-Reject.  Others will
silently discard the request.  Both behaviors cause problems, just
different ones.</t>
        </section>
      </section>
      <section anchor="unexpected-request-code">
        <name>Unexpected Request Code</name>
        <t><xref target="RFC2865"/> and <xref target="RFC2866"/> defined different ports for Access-Request
and Accounting-Request packets.  <xref target="RFC5176"/> defines a different port
entirely for both CoA-Request and Disconnect-Request packets.  In
contrast, <xref target="RFC6613"/>, <xref target="RFC6614"/>, and <xref target="RFC7360"/> define one port
for all request Codes.  Some implementations have also chosen to
accept multiple request Codes on one port, even for RADIUS/UDP.</t>
        <t>As more than one port is used for RADIUS, there is a potential for
mismatched configuration between a client and server.  Each RADIUS
specification (<xref section="3" sectionFormat="comma" target="RFC2865"/>, <xref section="3" sectionFormat="comma" target="RFC2866"/>, and
<xref section="2.3" sectionFormat="comma" target="RFC5176"/>) has the same text related to receiving
packets:</t>
        <ul empty="true">
          <li>
            <t>The Code field is one octet, and identifies the type of RADIUS
packet.  Packets received with an invalid Code field MUST be
silently discarded.</t>
          </li>
        </ul>
        <t>However, this text does not address the issue where a client sends a
packet which is authenticated, but where the request Code is
unexpected.  It is reasonable for the server to not perform the
requested action, as there is no requirement for every server to
support every possible request Code.  It is not reasonable, however,
for the server to fail to respond to authentic requests.</t>
        <section anchor="accounting-failure">
          <name>Accounting Failure</name>
          <t><xref section="4.1" sectionFormat="comma" target="RFC2866"/> says that servers need to respond to
Accounting-Request packets when the accounting action is successful,
but not when the accounting action fails:</t>
          <ul empty="true">
            <li>
              <t>Upon receipt of an Accounting-Request, the server MUST transmit an
Accounting-Response reply if it successfully records the
accounting packet, and MUST NOT transmit any reply if it fails to
record the accounting packet.</t>
            </li>
          </ul>
          <t>In other words, servers are mandated to silently discard packets which
are authentic, and which are sent to the correct destination.  The
packets are discarded not because the server is offline, but are
discarded instead due to a transient operational failure.</t>
        </section>
        <section anchor="network-loss-and-fragmentation">
          <name>Network Loss and Fragmentation</name>
          <t>When RADIUS/UDP is used, it is possible for either valid requests or
responses to be lost in the network.  RADIUS/UDP has another issue
noted in <xref section="2.4" sectionFormat="comma" target="RFC3579"/>, which notes that packets can be
fragmented.  <xref section="1" sectionFormat="comma" target="RFC6613"/> also notes that:</t>
          <ul empty="true">
            <li>
              <t>Transport of fragmented UDP packets appears to be a poorly tested
code path on network devices.  Some devices appear to be incapable
of transporting fragmented UDP packets, making it difficult to
deploy RADIUS in a network where those devices are deployed.</t>
            </li>
          </ul>
          <t>RADIUS/TCP and RADIUS/TLS are only partial solutions to the above
problems.  While they solve the fragmentation issue, there is still
the issue where a server can receive a request, and then the
connection can drop before the response is sent.  From the clients
point of view then, the request was sent, and then was silently
discarded by the server.</t>
          <t>This specification cannot address the issue where packets are lost due
to connection failures.  We simply note that issue here for
completeness.</t>
        </section>
        <section anchor="proxy-chains">
          <name>Proxy Chains</name>
          <t>Even when none of the above problems are seen, a server which is
correctly configured, operating normally, and responsive could still
fail to respond when it is acting as a proxy.  A proxy is conceptually
just a server which then acts as a client to another server.  The
client side of the proxy can therefore run into the above issues when
the next hop in the proxy chain fails to respond to a request.</t>
          <t>When the next hop fails to respond to the proxied request, there is
very little meaningful action that the proxy can take.  It can
sometimes send the request over a different connection to the same
server, or to a different server entirely.  At some point, a proxy
will run out of options, and decide that it is unable to forward the
packet.  It then has to determine the correct course of action.</t>
          <t>A proxy could originate an answer itself (e.g. Access-Reject, CoA-NAK,
etc.), in the interest of replying to the client.  Or, it may just
silently discard the request.  As noted earlier, both of these
behaviors have problems.</t>
        </section>
        <section anchor="mismatched-timers">
          <name>Mismatched Timers</name>
          <t>When a client sends a request, it has to set a timeout as per
<xref section="2.2.1" sectionFormat="comma" target="RFC5080"/> in case it never sees a response.  This
timeout is set not just on the NAS which originated the request, but
also on any proxy which forwards the request.</t>
          <t>Since there are multiple clients involved in forwarding a packet,
there is the near-certainty that different parts of the proxy chain
will have different timers.</t>
          <t>One possibility is that a client will have shorter timers than a
subsequent proxy.  The client will therefore give up on the request
while a subsequent proxy erroneously believes the request to still be
active.  This specification does not help with that issue.  Fixing
that would require additional protocol-layer signaling as to timer values.</t>
          <t>Another possibility is that client will have longer timers than a
subsequent proxy.  The proxy will then give up on the request while
the client is still waiting for a response.  In that case, the proxy
has the same two choices as noted earlier for similar situations:
either synthesize a response, or silently discard the request.</t>
        </section>
      </section>
      <section anchor="impact">
        <name>Impact</name>
        <t>Thare a number of impacts which result from NAK responses which do not
distinguish between different types of failures, and frqqrom requests
simply disappearing into the network without response.</t>
        <t>It may seem useful for a server or a proxy to NAK an action which it
cannot perform, but this response is not appropriate for a number of
reasons.  The most relevant one is that the NAK is an inaccurate
response.  A NAK response is typically made when the packet containing
a requested action is authentic and expected, but where the action
itself is not appropriate.  For example, the requested action could
violate a policy, or else request that action be taken for a user
session which does not exist.</t>
        <t>In contrast, sending a NAK response for protocol-layer issues is
overloading a NAK to contain protocol-layer signaling, which is
inappropriate.  An NAK informs the user or device that its requested
action is inappropriate.  It does not inform any network element that
there is a protocol-layer problem.</t>
        <t>For example, if a user is attempting to access the network, an
Access-Reject is normally interpreted as indicating that the users
credentials are invalid.  Sending an inappropriate Access-Reject could
result in the user device taking an action such as invalidating or
discarding the users password.  The user device could even present the
user with a prompt which indicates that the password is incorrect, and
that the user should re-enter it.  Such actions are likely to confuse
the user, and to cause problems for network administrators.</t>
        <t>For accounting, the situation is made worse by the behavior of
Acct-Delay-Time (<xref section="5.2" sectionFormat="comma" target="RFC2866"/>).  Instead of retransmitting
the same request over a long period of time, the client instead
updates the Acct-Delay-Time attribute, and sends a new request.  This
behavior greatly decreases the time available for a server to respond
to a request.  It also negates the benefits of the <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> packet deduplication cache, and the multiple new packets then
contribute to congestive collapse of the network.</t>
        <t>The impact for CoA-Request and Disconnect-Request packets is similar:
either an inappropriate NAK is sent back, or the request never sees a
response.</t>
        <t>The lack of responses contributes to network instability.  When a
client sends a request which never yields a response, it can only
assume that the server is down.  The client may then fail over to a
different server, or open new connections to the same server, or
simply stop sending packets to the server.</t>
        <t>In contrast, a server instead could respond to the client with a
protocol-layer signal indicating that the request was received but not
acted on.  The client could then be better informed, and would be more
likely to take an appropriate action to address the issue.  The result
would then be increased network stability, and decreased congestion.</t>
        <t>This specification standardizes the Protocol-Error packet Code as a
response packet which carries this signal about protocol-layer issues.</t>
      </section>
    </section>
    <section anchor="protocol-error-code">
      <name>Protocol-Error Code</name>
      <t>This document make the RADIUS packet Code 52 (Protocol-Error) standard
instead of experimental, as an update to <xref target="RFC7930"/>.  In order to
have one document defining this RADIUS packet Code, the definition of
Protocol-Error is repeated here with only minor edits from the
original in <xref section="4" sectionFormat="comma" target="RFC7930"/>.</t>
      <t>The Protocol-Error packet Code may be used in response to any request
packet, such as Access-Request, Accounting-Request, CoA-Request, or
Disconnect-Request.  It is a response packet sent by a server to a
client.  The packet indicates to the client that the server is unable
to process the request for some reason.</t>
      <t>A Protocol-Error packet MUST contain an Original-Packet-Code
attribute, along with an Error-Cause attribute.  Other attributes MAY
be included if desired.  The Original-Packet-Code contains the code
from the request that generated the protocol error so that clients
can disambiguate requests with different codes and the same ID.
Regardless of the original packet code, the RADIUS Server calculates
the Message-Authenticator attribute as if the original packet were an
Access-Request packet.  The identifier is copied from the original
request.</t>
      <t>Clients processing Protocol-Error MUST ignore unknown or unexpected
attributes.</t>
      <t>This RADIUS packet Code is hop by hop.  Proxies MUST NOT simply
forward a Protocol-Error response that they receive. Instead, a proxy
MUST examine the Error-Cause attribute to determine whether the error
is due to a fault at the home server, or if it is a fault in
the RADIUS proxy network.</t>
      <t>Where the Error-Cause value indicates a fault in the RADIUS proxy
network, the proxy which receives the Protocol-Error SHOULD try to
proxy the request over a different connection to the same destination,
or to a different destination.  That is, it should try to re-proxy the
original request, as if it had just been received.  This re-proxy
process MUST NOT send the packet over the same connection as the
previous proxied packet.</t>
      <t>Futher handling of proxy fail-over is out of scope of this
specification.</t>
      <t>The following values for Error-Cause indicate a fault in the RADIUS
proxy network.  Other values for Error-Cause are possible, and may be
defined in a future specification:</t>
      <ul spacing="normal">
        <li>
          <t>502, Request Not Routable (Proxy)</t>
        </li>
        <li>
          <t>505, Other Proxy Processing Error</t>
        </li>
      </ul>
      <t>The remainder of the Error-Cause values SHOULD be interpreted as
originating at the home server.  The proxy SHOULD return the
Protocol-Error to the client, and include the Error-Cause attribute
from the response to the Proxied Request.</t>
      <section anchor="impact-on-existing-systems">
        <name>Impact on existing systems</name>
        <t>TBD - clients ignore packet Codes they don't understand.  Therefore
Protocol-Error is always safe to send.  Even if the client does not
process it and take action, an administrator can see the packet and
take action.</t>
      </section>
      <section anchor="negotiation-and-configuration">
        <name>Negotiation and Configuration</name>
        <t>TBD - no negotiation, but configuration based on agreement of
administrators of client and servers.</t>
        <t>TBD - if a proxy knows that a client does not understand
Protocol-Error, it MAY instead respond to the client with a relevant
NAK packet.  This SHOULD NOT be done when the client is another proxy,
but only when the client is a NAS.</t>
      </section>
      <section anchor="when-to-send-protocol-error-responses">
        <name>When to send Protocol-Error Responses</name>
        <t>TBD - mainly authentic packets, where there is no NAK
(Accounting-Request), or where the NAK is not appropriate (unknown EAP
State, etc.)</t>
        <t>See the (TBD Solutions) section below for more details.</t>
      </section>
    </section>
    <section anchor="original-packet-code-attribute">
      <name>Original-Packet-Code Attribute</name>
      <t>This document standardizes the Original-Packet-Code attribute, which
was originally defined in <xref target="RFC7930"/>.</t>
      <t>Description</t>
      <ul empty="true">
        <li>
          <t>The Original-Packet-Code contains the packet Code from the request
that generated the Protocol-Error response.  It allows clients to
disambiguate requests with different packet Codes which use the same
ID.</t>
          <t>The Original-Packet-Code attribute MUST NOT be sent in any packet
Code other than Protocol-Error.</t>
          <t>A client which receives a Protocol-Error in a packet Code other than
Protocol-Error MUST treat it as an "invalid attribute" as per
<xref section="2.8" sectionFormat="comma" target="RFC6929"/>.</t>
        </li>
      </ul>
      <t>Type</t>
      <ul empty="true">
        <li>
          <t>241.4</t>
        </li>
      </ul>
      <t>Length</t>
      <ul empty="true">
        <li>
          <t>6</t>
        </li>
      </ul>
      <t>Data Type</t>
      <ul empty="true">
        <li>
          <t>integer</t>
        </li>
      </ul>
      <t>Value</t>
      <ul empty="true">
        <li>
          <t>The Value is taken from the original request packet Code which was
received by the server.  Values which are not in the the IANA
"RADIUS Packet Type Codes" registry are likely to be invalid.</t>
          <t>A client which receives an Original-Packet-Code attribute that does
not match any outstanding request MUST silently discard the response.</t>
        </li>
      </ul>
    </section>
    <section anchor="fewer-silent-discard">
      <name>Fewer Silent Discard</name>
      <t>This section defines new behavior which addresses the issues noted
above in <xref target="silently-discard"/>.</t>
      <section anchor="invalid-attributes-1">
        <name>Invalid Attributes</name>
        <t>We reiterate here the mandate of <xref section="2.8" sectionFormat="comma" target="RFC6929"/>:</t>
        <ul empty="true">
          <li>
            <t>The existence of an "invalid attribute" in a packet or attribute
MUST NOT result in the implementation discarding the entire packet
...</t>
          </li>
        </ul>
        <t>Implementations which discard packets due to invalid attributes are
not standards compliant.</t>
      </section>
      <section anchor="unknown-attributes-1">
        <name>Unknown Attributes</name>
        <t>Some implementations discard requests when the request contains
attributes which the implementation does not recognize.  This behavior
is permitted by <xref section="5" sectionFormat="comma" target="RFC2865"/> which says that
implementations:</t>
        <ul empty="true">
          <li>
            <t>MAY ignore Attributes with an unknown Type.</t>
          </li>
        </ul>
        <t><xref section="2.8" sectionFormat="comma" target="RFC6929"/> makes a stronger suggestion that:</t>
        <ul empty="true">
          <li>
            <t>It is RECOMMENDED that Attributes with unknown Type, Extended-Type,
TLV-Type, or EVS-Type are treated as "invalid attributes".</t>
          </li>
        </ul>
        <t>We update <xref target="RFC2865"/>, <xref target="RFC2866"/>, <xref target="RFC5176"/> and <xref target="RFC6929"/> here
to say that implementations MUST NOT silently discard packets which
contain attributes of an known Type, Extended-Type, TLV-Type, or
EVS-Type.  This mandate applies to all RADIUS packets, for all values
of the packet Code field.</t>
        <t>Note that this prohibition does not apply to known attributes which
have unknown values.  For example, <xref section="5.6" sectionFormat="comma" target="RFC2865"/> says that
for the Service-Type attribute:</t>
        <ul empty="true">
          <li>
            <t>A NAS is not
required to implement all of these service types, and MUST treat
unknown or unsupported Service-Types as though an Access-Reject
had been received instead.</t>
          </li>
        </ul>
        <t>That requirement is not changed by this specification.</t>
      </section>
      <section anchor="unknown-state-1">
        <name>Unknown State</name>
        <t>TBD - try not to send Access-Reject.  Maybe recommend a new
Error-Cause value?</t>
      </section>
    </section>
    <section anchor="tbd">
      <name>TBD</name>
      <t>This section outlines some notes which should be addressed by further
discussion.</t>
      <ul spacing="normal">
        <li>
          <t>We may want to omit Proxy-State from Protocol-Error.  It isn't
needed for link-local signalling.  However, it is an odd corner
case, and it may be more consistent with other practices to leave it
it.  At the minimum, the client MUST accept Protocol-Error even if
it is missing Proxy-State.</t>
        </li>
        <li>
          <t>One new corner case provided by Protocol-Error is a next hop which
responds to all packets with Protocol-Error.  </t>
          <ul spacing="normal">
            <li>
              <t>Without Protocol-Error, the next hop won't reply, and the proxy
will think it's down, and do a fail-over.</t>
            </li>
            <li>
              <t>With Protocol-Error, the next hop is "up", and the proxy will
continually send packets to it.  Only for it to reply, and say "send
the packets elsewhere".  There isn't a way to signal that an entire
realm is down.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>suggest to use Protocol-Error instead of CoA-NAK, as it's likely
better.  CoA-NAK goes back to the client immediately, and does not
allow for the packet to be proxied to a different destination</t>
        </li>
        <li>
          <t>Migration path needs to be addressed:  </t>
          <ul spacing="normal">
            <li>
              <t>servers MUST always accept Protocol-Error as a valid reply.</t>
            </li>
            <li>
              <t>existing clients will discard it, if they follow the RFCs.  But
some may misbehave.</t>
            </li>
            <li>
              <t>servers SHOULD have a flag which controls whether or not they send
Protocol-Error to clients.  The flag should be global and also per
client.  The default SHOULD be to enable it.</t>
            </li>
            <li>
              <t>if a client doesn't support Protocol-Error, the server can swap
the response to Access-Reject, CoA-NAK, etc.  This behavior could
likely also be configurable.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Add more Error-Cause valuesL  </t>
          <ul spacing="normal">
            <li>
              <t>unknown attribute</t>
            </li>
            <li>
              <t>invalid attribute, for malformed ones</t>
            </li>
            <li>
              <t>no room to add Proxy-State</t>
            </li>
            <li>
              <t>all next hops are down</t>
            </li>
            <li>
              <t>all next hops are busy</t>
            </li>
            <li>
              <t>next hop didn't get a response to its forwarded packet</t>
            </li>
            <li>
              <t>accounting failure (can't write data, etc.)</t>
            </li>
            <li>
              <t>CoA-NAK failure - unable to take requested action
              </t>
              <ul spacing="normal">
                <li>
                  <t>RFC8559 already says send NAK with Error-Cause</t>
                </li>
              </ul>
            </li>
            <li>
              <t>overload - try again later</t>
            </li>
            <li>
              <t>Perhaps also for TCP buffering issues?</t>
            </li>
          </ul>
        </li>
        <li>
          <t>require that implementations MUST check that packets are
well-formed, AND a reply to an outstanding request before checking
M-A in Protocol-Error.  "well-formed" here includes checking that
Original-Packet-Code matches an outstanding request.</t>
        </li>
        <li>
          <t>if a server sends a Protocol-Error response, and the client sends a
duplicate request, the server should reply with a duplicate response.
We don't know if the response was lost due to networking issues, or
if the client doesn't support Protocol-Error.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is instructed to update the "RADIUS Packet Type Codes" registry,
and change the Protocol-Error entry from Reference RFC7930 to
THIS-DOCUMENT.</t>
      <t>IANA is instructed to update the "RADIUS Attribute Types" registry,
and change the Original-Packet-Code entry from Reference RFC7930 to
THIS-DOCUMENT.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>There are no privacy considerations in this specification.  It does
not add or change any transport protocols, and it does not change the
roles of any participant in the RADIUS ecosystem.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification has no direct impact on security.  It does not add
or change any existing cryprography in RADIUS.  It is compatible with
all RADIUS standards, including (ALPN draft).</t>
      <t>This specification does, however, recommend ways that networks can be
better protected from a variety of problems, misconfigurations, and
erroneous implementations.  As a result, RADIUS proxy networks which
implement this specification should become more stable, and therefore
more secure.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This document came out of discussions both in the RADEXT WG, and in
the 2025 RADIUS Technical Conference in Tampere, Finland.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC3576">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="July" year="2003"/>
            <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="3576"/>
          <seriesInfo name="DOI" value="10.17487/RFC3576"/>
        </reference>
        <reference anchor="RFC5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <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="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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2866">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <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="RFC2869">
          <front>
            <title>RADIUS Extensions</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="W. Willats" initials="W." surname="Willats"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <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">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson"/>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <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="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <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">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <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">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <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="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <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="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"/>
            <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="RFC5580">
          <front>
            <title>Carrying Location Objects in RADIUS and Diameter</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="F. Adrangi" initials="F." surname="Adrangi"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes procedures for conveying access-network ownership and location information based on civic and geospatial location formats in Remote Authentication Dial-In User Service (RADIUS) and Diameter.</t>
              <t>The distribution of location information is a privacy-sensitive task. Dealing with mechanisms to preserve the user's privacy is important and is addressed in this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5580"/>
          <seriesInfo name="DOI" value="10.17487/RFC5580"/>
        </reference>
        <reference anchor="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAEgz52oAA+V9624cR7Lm/3yKWs6PkQbdHN1tCQvNoUX5mBjdVqLGM1gs
Ftld1ew6qq5q14VUj6F32WfZJ9v44pKZVV3k2OfXAseAbbJZlZfIyIgvrr1c
Ll1f9lXxIvvU+zr3bV52ZX2VfWibvlk31fJ12zat86tVW1y/mH6cN+va7+jl
vPWbflkW/WbZ+rz42i/39mSBJ5cPHrhhn/u+6F5kj75/9nSB/z5bZE8ffkf/
ffbs4WP+75NF9t3jZw/ov88fP3Cuw5r+t6+amubo26Fw5b7ln7r+0YMHzx88
cr4t/Ivsou6Lti56d3P1Ivt4dv7675fZz037BVv597YZ9u7LTXxqeY7lurXv
X2Sr9d51w2pXdl3Z1JeHPc108fryR+f25YuM/vlDtvZ1NnRF5tvWH7J75Sbz
VZUdiu5+1rTZ1nfbbFu0hcsy2vEL/IF+7Jq2b4tN94KHyIuNH6q+oyfs74ed
/Bm/Oj/026Z94dwyK2v68Ow0Oy/+2nyhB4XAZxUtwj5q2its5ssPbZlfFdm7
or+hvWLUYufL6gWtj+j2b2X9ZcVP1PrA6brZOVc37c735XXxgl74+OOr7x9+
90R/xMnoj4+ffvdMf8QZ6Y/Pnj96Tqss681kEJxm/PG5vfng+wf2Jh1x/NEm
xGHbj3TiNPR1UQ886BWOzQ6TfpedCXf9GzjtlMiA58p+O6yYHrJbI8efxyx4
Sg8SfZfLzK+6vvVr+u3nIqPRijrPiF5ZF25AkfXbYsLs2d6vvxR99qrJi0W2
Kduud3SsZV3kdGbYATNtRpThtz8Wu6YvsjM62aLuS2I24q/svPQVLTX73BVt
9qlor8t14e7RJi8+f7qf2YpPZaG7Ms+rwrk/gHPbJh/WGMO5y981fHY0fFZ2
tPSuvMLafZf5rC1+GYquz/5MP3X7piYK2MOL7Abcna2rkibqsg7k0uc7R/xM
U10XbbcQGsov9pSMxWyv759m2SWP5/FvtiluXF5uNvRJ3Wc9Xb8uazZh/Ewp
LIMXfr3lZ5JHcP8ykg+OyL5rMGbXNeuSJE2eXfuqTFZBU//U3BS0vgVOiPYY
pqHRXVwtllaVuxJj0MrLOmf6kizphvW66Drc+w3x49DyUmgwp0OBoHxKCzy7
ZeqOj4he9et1M9QY8JQPk0Ypu6xushuSL+Afo3VKUVpI8XW99TXd+HD/aDy/
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
3HK5ZIzs/h9RPat25oUAAA==

-->

</rfc>
