<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-18" category="std" consensus="true" submissionType="IETF" obsoletes="6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="RadSec: RADIUS over TLS and DTLS">RadSec: RADIUS over Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusdtls-bis-18"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="M." surname="Cullen" fullname="Margaret Cullen" role="editor">
      <organization>Painless Security</organization>
      <address>
        <postal>
          <street>4 High Street, Suite 206</street>
          <city>North Andover, MA</city>
          <code>01845</code>
          <country>USA</country>
        </postal>
        <email>margaret@painless-security.com</email>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 56?>

<t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS), allowing the secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.</t>
      <t>This document obsoletes RFC6614 and RFC7360, which specified experimental versions of RADIUS over TLS and DTLS.</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-radiusdtls-bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADIUS EXTensions 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>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) <xref target="RFC8446"/> <xref target="RFC5246"/> over TCP, and Datagram Transport Layer Security (DTLS) <xref target="RFC9147"/> <xref target="RFC6347"/> over UDP, allowing secure and (in case of TLS) reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.  This document obsoletes <xref target="RFC6614"/> and <xref target="RFC7360"/>, which specified experimental versions of RADIUS over TLS and DTLS.</t>
      <t>RADIUS is a widely deployed Authentication, Authorization and Accounting (AAA) protocol defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/>, among others.
Deployment experience has shown several shortcomings, such as dependency on the unreliable transport protocol, UDP, and a lack of confidentiality for large parts of RADIUS messages.
Additionally, the confidentiality and integrity mechanisms in RADIUS rely on the MD5 algorithm <xref target="RFC1321"/>, which does not meet modern security expectations.
Although RadSec does not remove the MD5-based mechanisms, it adds confidentiality and integrity protection through the TLS layer.
For an experimental version of RadSec without the need for MD5 see <xref target="RFC9765"/>.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terminology is used in this document:</t>
      <dl>
        <dt>RadSec:</dt>
        <dd>
          <t>A collective term for RADIUS/TLS and RADIUS/DTLS.</t>
        </dd>
        <dt>RADIUS/TLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using TLS over TCP.</t>
        </dd>
        <dt>RADIUS/DTLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using DTLS over UDP.</t>
        </dd>
        <dt>RADIUS/UDP:</dt>
        <dd>
          <t>RADIUS transported over UDP as defined in <xref target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet:</dt>
        <dd>
          <t>As defined in <xref section="3" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet type:</dt>
        <dd>
          <t>As defined in <xref section="4" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>(D)TLS handshake message:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/> and DTLS <xref target="RFC9147"/>.</t>
        </dd>
        <dt>TLS record:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/>.</t>
        </dd>
        <dt>DTLS record:</dt>
        <dd>
          <t>As defined in DTLS <xref target="RFC9147"/>.  A DTLS record is always contained in one UDP datagram.</t>
        </dd>
        <dt>(D)TLS connection:</dt>
        <dd>
          <t>A single (D)TLS communication channel (with DTLS this is a synonym for association).</t>
        </dd>
        <dt>UDP datagram:</dt>
        <dd>
          <t>A UDP packet, including the header and data.</t>
        </dd>
        <dt>UDP (datagram) data:</dt>
        <dd>
          <t>The data payload of a UDP datagram.</t>
        </dd>
        <dt>RadSec client:</dt>
        <dd>
          <t>A RadSec instance that initiates a new connection.</t>
        </dd>
        <dt>RadSec server:</dt>
        <dd>
          <t>A RadSec instance that listens on a RADIUS-over-(D)TLS port and accepts new connections.</t>
        </dd>
        <dt>RadSec endpoint:</dt>
        <dd>
          <t>A RadSec client or server</t>
        </dd>
        <dt>RadSec peer:</dt>
        <dd>
          <t>A RadSec endpoint connected to the RadSec endpoint that is the primary subject of discussion.</t>
        </dd>
      </dl>
      <t>Whenever "(D)TLS", "RADIUS/(D)TLS" or "RadSec" is mentioned, the specification applies for both RADIUS/TLS and RADIUS/DTLS.
Where "TLS" or "RADIUS/TLS" is mentioned, the specification applies only for RADIUS/TLS.  Where "DTLS" or "RADIUS/DTLS" is mentioned, it only applies to RADIUS/DTLS.</t>
    </section>
    <section anchor="radsec-packet-and-connection-handling">
      <name>RadSec Packet and Connection Handling</name>
      <t>This section defines the behavior of RadSec endpoints for the establishment and handling of (D)TLS connections and sending and receiving RADIUS packets.</t>
      <t>Server implementations <bcp14>MUST</bcp14> support both RADIUS/TLS and RADIUS/DTLS.
Client implementations <bcp14>SHOULD</bcp14> implement both, but <bcp14>MUST</bcp14> implement at least one of RADIUS/TLS or RADIUS/DTLS.</t>
      <section anchor="portusage">
        <name>RadSec Packet Format, Default ports and shared secrets</name>
        <t>The format of RADIUS packets in RadSec is unchanged from the format specified in <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.</t>
        <t>IANA has reserved server ports for RADIUS/TLS and RADIUS/DTLS.
Since authentication of peers, confidentiality, and integrity protection are provided by the (D)TLS layer, the shared secret for the RADIUS packets is set to a static string, which is different for each of TLS and DTLS (see <xref target="shared_secrets"/>).
The calculation of security-related fields such as Response-Authenticator, Message-Authenticator or encrypted attributes <bcp14>MUST</bcp14> be performed using the static shared secret.</t>
        <table anchor="shared_secrets">
          <name>RADIUS shared secrets for RadSec</name>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Server Port</th>
              <th align="left">Shared Secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RADIUS/TLS</td>
              <td align="left">2083/tcp</td>
              <td align="left">"radsec"</td>
            </tr>
            <tr>
              <td align="left">RADIUS/DTLS</td>
              <td align="left">2083/udp</td>
              <td align="left">"radius/dtls"</td>
            </tr>
          </tbody>
        </table>
        <t>RadSec does not use separate ports for authentication, accounting and dynamic authorization changes.
The client source port used for RadSec connections is not fixed -- it is typically an ephemeral port picked by the client Operating System.
For considerations regarding the multipurpose use of one port for authentication and accounting see <xref target="radius_packets"/>.</t>
        <t>RadSec clients <bcp14>MAY</bcp14> open multiple connections to the same RadSec server and RadSec servers <bcp14>MUST</bcp14> be able to accept multiple connections from a single client.</t>
        <t>RadSec endpoints <bcp14>MUST NOT</bcp14> use the old RADIUS/UDP or RADIUS/TCP ports for RADIUS/DTLS or RADIUS/TLS.</t>
      </section>
      <section anchor="dtls-requirements">
        <name>(D)TLS requirements</name>
        <t>RadSec clients <bcp14>MUST</bcp14> establish a (D)TLS session immediately upon connecting to a new server, that is without any non-protected negotiations such as done by SMTP STARTTLS or other signalling prior to the (D)TLS handshake.
All data received over a TCP or UDP port assigned for RadSec is opaque for the RADIUS client or server application and must be handled by the TLS or DTLS implementation.
Closing TLS connections and discarding invalid UDP datagrams are done by the (D)TLS implementation.</t>
        <t>RadSec does not provide for negotiation of (D)TLS in ongoing RADIUS communication.
Instead, a server port is configured to always require (D)TLS.  Connection attempts to a (D)TLS port which do not use (D)TLS are not accepted by the server.
As RADIUS has no provisions for capability signaling, there is also no way for a server to indicate to a client that it should transition to using TLS or DTLS.
Servers and clients therefore need to be preconfigured to use RADIUS/(D)TLS for a given endpoint.
This action has to be taken by the administrators of the two systems.</t>
        <t>Implementations <bcp14>MUST</bcp14> follow the recommendations given in <xref target="RFC9325"/>, especially in regards to TLS versions, recommended cipher suites, and TLS session resumption.
Additionally, the following requirements have to be met for the (D)TLS connection:</t>
        <ul spacing="normal">
          <li>
            <t>Negotiation of a cipher suite providing for confidentiality as well as integrity protection is <bcp14>REQUIRED</bcp14>.</t>
          </li>
          <li>
            <t>The endpoints <bcp14>MUST NOT</bcp14> negotiate compression.</t>
          </li>
          <li>
            <t>The connection <bcp14>MUST</bcp14> be mutually authenticated (see <xref target="mutual_auth"/>).</t>
          </li>
        </ul>
        <t>RadSec endpoints <bcp14>MUST NOT</bcp14> use the 0-RTT feature of (D)TLS.</t>
      </section>
      <section anchor="mutual_auth">
        <name>Mutual authentication</name>
        <t>RadSec servers <bcp14>MUST</bcp14> authenticate clients, and RadSec clients <bcp14>MUST</bcp14> authenticate servers.
RADIUS is designed to be used by mutually trusted systems.
Allowing anonymous clients would ensure privacy for RadSec traffic, but would negate all other security aspects of the protocol, including security aspects of RADIUS itself, due to the fixed shared secret.</t>
        <t>RADIUS/(D)TLS allows for the following modes of mutual authentication, which will be further specified in this section:</t>
        <ul spacing="normal">
          <li>
            <t>TLS-X.509-PKIX</t>
          </li>
          <li>
            <t>TLS-PSK</t>
          </li>
        </ul>
        <t>Independent of the chosen mode of authentication, the mutual authentication <bcp14>MUST</bcp14> be performed during the initial handshake.
Alternative methods, such as post-handshake certificate-based client authentication (see <xref section="4.6.2" sectionFormat="comma" target="RFC8446"/>) with (D)TLS 1.3 or renegotiation with (D)TLS 1.2, <bcp14>MUST NOT</bcp14> be used to achieve mutual authentication.</t>
        <section anchor="tlsx509pkix">
          <name>Authentication using X.509 certificates with PKIX trust model (TLS-X.509-PKIX)</name>
          <t>All RadSec server implementations <bcp14>MUST</bcp14> implement this model.
RadSec client implementations <bcp14>SHOULD</bcp14> implement this model, but <bcp14>MUST</bcp14> implement either this model or TLS-PSK.</t>
          <t>If implemented, the following rules apply:</t>
          <ul spacing="normal">
            <li>
              <t>Implementations <bcp14>MUST</bcp14> allow the configuration of a trust base (i.e., a set of trusted Certification Authorities (CAs)<xref target="RFC5280"/>) for new TLS connections.  This list <bcp14>SHOULD</bcp14> be application-specific and not use a global system trust store.</t>
            </li>
            <li>
              <t>Certificate validation <bcp14>MUST</bcp14> include the verification rules as per <xref target="RFC5280"/>.</t>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> indicate their trust anchors when opening or accepting TLS connections.
See <xref section="7.4.4" sectionFormat="comma" target="RFC5246"/> and <xref section="6" sectionFormat="comma" target="RFC6066"/> for TLS 1.2 and <xref section="4.2.4" sectionFormat="comma" target="RFC8446"/> for TLS 1.3.</t>
            </li>
            <li>
              <t>When the configured set of trusted CAs changes or updated revocation information becomes available (e.g., fetching of a new CRL), implementations <bcp14>MUST</bcp14> reassess the continued validity of the certificate path of all connected peers.  This can either be done by caching the peer's certificate for the duration of the connection and re-evaluating the cached certificate or by renegotiating the (D)TLS connection, either directly (for (D)TLS 1.2) or by opening a new (D)TLS connection and closing the old one.</t>
            </li>
            <li>
              <t>Implementations <bcp14>SHOULD NOT</bcp14> keep a connection open beyond the validity period of the peer certificate.  At the time the peer certificate expires, the connection <bcp14>SHOULD</bcp14> be closed and then possibly re-opened with updated credentials.</t>
            </li>
          </ul>
          <t>RadSec endpoints <bcp14>SHOULD NOT</bcp14> be preconfigured with a set of trusted CAs by the vendor or manufacturer that are enabled by default.
Instead, the endpoints <bcp14>SHOULD</bcp14> start off with an empty CA set as the trust base.
The addition of a CA <bcp14>SHOULD</bcp14> be done only when manually configured by the administrator.
This does not preclude vendors or manufacturers including their set of trusted CAs in their products, but the enabling of those lists should require an explicit act by an administrator.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> follow <xref target="RFC9525"/> when validating RadSec server identities. RadSec servers also follow <xref target="RFC9525"/> when validating RadSec client identities with some additional rules.</t>
          <t>Specific details are provided below:</t>
          <ul spacing="normal">
            <li>
              <t>Certificates <bcp14>MAY</bcp14> include a single wildcard in the identifiers of DNS names and realm names, but only as the complete, left-most label.</t>
            </li>
            <li>
              <t>RadSec clients validate the server's identity to match their local configuration, accepting the identity on the first match. If no acceptable identity is found, <xref section="6.6" sectionFormat="comma" target="RFC9525"/> applies.
              </t>
              <ul spacing="normal">
                <li>
                  <t>If the expected RadSec server is associated with a specific NAI realm, e.g., by dynamic discovery <xref target="RFC7585"/> or static configuration, that realm is matched against the presented identifiers of any subjectAltName entry of type otherName whose name form is NAIRealm as defined in <xref section="2.2" sectionFormat="comma" target="RFC7585"/>.</t>
                </li>
                <li>
                  <t>If the expected RadSec server was configured as a hostname, or the hostname was yielded by a dynamic discovery procedure, that name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>.  Since a dynamic discovery might by itself not be secured, implementations <bcp14>MAY</bcp14> require the use of DNSSEC <xref target="RFC4033"/> to ensure the authenticity of the DNS result before considering this identity as valid.</t>
                </li>
                <li>
                  <t>If the expected RadSec server was configured as an IP address, the configured IP address is matched against the presented identifier in any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>The Common Name RDN <bcp14>MUST NOT</bcp14> be used to identify a server.</t>
                </li>
                <li>
                  <t>Clients <bcp14>MAY</bcp14> use other attributes of the certificate to validate the server's identity, but they <bcp14>MUST NOT</bcp14> accept any certificate without validation.</t>
                </li>
                <li>
                  <t>Clients which also act as servers (i.e., proxies) may be susceptible to security issues when a ClientHello is mirrored back to themselves.  More details on this issue are discussed in <xref target="security_considerations"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>RadSec servers validate the certificate of the RadSec client against a local database of acceptable clients.
The database may enumerate acceptable clients either by IP address or by a name component in the certificate.
              </t>
              <ul spacing="normal">
                <li>
                  <t>For clients configured by DNS name, the configured name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>For clients configured by their source IP address, the configured IP address is matched against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Some servers <bcp14>MAY</bcp14> be configured to accept a client coming from a range or set of IP addresses.  In this case, the server <bcp14>MUST</bcp14> verify that the client IP address of the current connection is a member of the range or set of IP addresses, and the server <bcp14>MUST</bcp14> match the client IP address of the current connection against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Implementations <bcp14>MAY</bcp14> consider additional subjectAltName extensions to identify a client.</t>
                </li>
                <li>
                  <t>If configured by the administrator, the identity check <bcp14>MAY</bcp14> be omitted after a successful <xref target="RFC5280"/> certification path validation, e.g., if the client used dynamic lookup there is no configured client identity to verify.  The client's authorization <bcp14>MUST</bcp14> then be validated using a certificate policy extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/> unless both endpoints are part of a trusted network.</t>
                </li>
                <li>
                  <t>If a RadSec server deems a client to be not acceptable, it <bcp14>MUST</bcp14> terminate the (D)TLS connection immediately. RADIUS/TLS servers <bcp14>MUST</bcp14> also close the TCP connection. RadSec servers <bcp14>SHOULD</bcp14> send the TLS alert access denied(49) (if supported by the (D)TLS implementation).</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> allow configuration of a set of additional properties of the certificate to check for a peer's authorization to communicate (e.g., a set of allowed values presented in  subjectAltName entries of type uniformResourceIdentifier <xref target="RFC5280"/> or a set of allowed X.509v3 Certificate Policies).</t>
            </li>
          </ul>
        </section>
        <section anchor="tlspsk">
          <name>Authentication using TLS-PSK (TLS-PSK)</name>
          <t>RadSec server implementations <bcp14>MUST</bcp14> support the use of TLS-PSK.
RadSec client implementations <bcp14>SHOULD</bcp14> support the use of TLS-PSK, but <bcp14>MUST</bcp14> implement either this model or TLS-X.509-PKIX.</t>
          <t>Further guidance on the usage of TLS-PSK in RadSec is given in <xref target="RFC9813"/>.</t>
        </section>
      </section>
      <section anchor="connecting-client-identity">
        <name>Connecting Client Identity</name>
        <t>In RADIUS/UDP, clients are uniquely identified by their IP addresses, as the shared secret is associated with the origin IP address.
With RadSec, the shared secret has a fixed value and multiple distinct RadSec clients can connect from the same IP address.
This requires changing the method of identifying individual clients from RADIUS/UDP.</t>
        <t>Depending on the trust model used, the RadSec client identity is determined as follows.</t>
        <t>With TLS-PSK, a client is uniquely identified by its TLS-PSK identifier (<xref section="6.2" sectionFormat="comma" target="RFC9813"/>).</t>
        <t>With TLS-X.509-PKIX, a client is uniquely identified by the tuple of the issuer and the serial number of the presented client certificate.</t>
        <t>In practice, identification of unique clients is not always necessary and could be based on the subject of the presented certificate or a subjectAltName entry.
While this identification technique could match multiple distinct certificates and therefore distinct clients, it is often sufficient, e.g., for the purpose of applying policies.</t>
        <t>Note well: having identified a connecting entity does not mean the server necessarily wants to communicate with that client.
For example, if the Issuer is not in a trusted set of Issuers, the server may decline to perform RADIUS transactions with this client.</t>
        <t>Additionally, a server <bcp14>MAY</bcp14> restrict individual clients or groups of clients to certain IP addresses or address ranges.
One example of this can be to restrict clients configured by DNS name to only the IP address(es) that this DNS name resolves to.</t>
        <t>A client connecting from outside the allowed range would be rejected, even if the mutual authentication otherwise would have been successful.
To reduce server load and to prevent probing the validity of stolen credentials, the server <bcp14>SHOULD</bcp14> abort the (D)TLS handshake immediately with a TLS alert access_denied(49) after the client transmitted identifying information, i.e., the client certificate or the PSK identifier, and the server recognizes that the client connects from outside the allowed IP address range.</t>
        <t>See <xref section="6.2.1" sectionFormat="comma" target="RFC9813"/> for further discussion on this topic.</t>
      </section>
      <section anchor="tls_session_resumption">
        <name>TLS Session Resumption</name>
        <t>Session resumption lowers the time and effort required to start a (D)TLS connection and increases network responsiveness.
This is especially helpful when using short idle timeouts.</t>
        <t>RadSec clients and servers <bcp14>SHOULD</bcp14> implement session resumption.
Implementations supporting session resumption <bcp14>MUST</bcp14> cache data during the initial full handshake, sufficient to allow authorization decisions to be made during resumption.
For RadSec servers, this should preferably be done using stateless session resumption as specified in <xref target="RFC5077"/> for TLS 1.2 or <xref target="RFC8446"/> for TLS 1.3, to reduce the resource usage for cached data.</t>
        <t>When establishing a (D)TLS connection with session resumption, both client and server <bcp14>MUST</bcp14> re-authorize the connection by using the original, cached data.
In particular, this includes the X.509 certificate (when using a PKIX trust model) as well as any policies associated with that identity such as restrictions on source IP address.
The re-authorization <bcp14>MUST</bcp14> give the same result as if a full handshake was performed at the time of resumption.</t>
        <t>If cached data cannot be retrieved securely, resumption <bcp14>MUST NOT</bcp14> be done, by either immediately closing the connection or reverting to a full handshake.
If a connection that used session resumption is closed by the server before the resumed DTLS session can be established, the RadSec client <bcp14>MUST NOT</bcp14> re-attempt session resumption but perform a full TLS handshake instead.</t>
      </section>
      <section anchor="application-layer-protocol-negotiation">
        <name>Application-Layer Protocol Negotiation</name>
        <t>RadSec clients <bcp14>SHOULD</bcp14> use Application-Layer Protocol Negotiation (ALPN) to signal RadSec support.  The ALPN name assigned to RadSec is "radius/1.0".  Clients implementing ALPN for RadSec <bcp14>MUST</bcp14> use that name.</t>
        <t>A client which signals RadSec support via the ALPN name "radius/1.0", but which does not receive any ALPN response from the server, <bcp14>MUST</bcp14> treat the connection as RadSec.  A client which signals RadSec support via the ALPN name "radius/1.0" and receives an ALPN resonse of "radius/1.0" <bcp14>MUST</bcp14> treat the connection as RadSec.</t>
        <t>RadSec servers <bcp14>SHOULD</bcp14> implement support for ALPN.  A server which does not receive an ALPN name from the client <bcp14>MUST</bcp14> treat that connection as RadSec.  Servers which do not support ALPN will not send any ALPN name in response.  Servers which support ALPN <bcp14>MUST</bcp14> echo back an ALPN name which is compatible with both the ALPN list that the client sent, and with the servers configuration.</t>
        <t>Where both parties agree on the ALPN name "radius/1.0", the connection <bcp14>MUST</bcp14> be treated as RadSec.</t>
        <t>That is, the presence (or not) of the ALPN name "radius/1.0" does not change the behavior of RadSec clients or servers.  However, using ALPN will assist with future changes to RADIUS, and as such, its use is <bcp14>RECOMMENDED</bcp14>.</t>
        <t>Other ALPN names are possible, such as "radius/1.1" <xref target="RFC9765"/>.  RadSec implementations are not required to support <xref target="RFC9765"/>, but implementation of ALPN for RadSec <bcp14>MUST NOT</bcp14> prevent the use of future ALPN names for RADIUS.  The ALPN negotiation requirements in this section are compatible with the rules in <xref section="3" sectionFormat="comma" target="RFC9765"/>.</t>
      </section>
      <section anchor="radius_packets">
        <name>RADIUS packets</name>
        <t>The use of (D)TLS transport does not change the calculation of security-related fields (such as the Response-Authenticator) in RADIUS <xref target="RFC2865"/> or RADIUS Dynamic Authorization <xref target="RFC5176"/>.
Calculation of attributes such as User-Password <xref target="RFC2865"/> or Message-Authenticator <xref target="RFC3579"/> also does not change.</t>
        <t>The changes to RADIUS implementations required to implement this specification are largely limited to the portions that send and receive packets on the network and the establishment of the (D)TLS connection.</t>
        <t>The RadSec specification does not change the client/server architecture of RADIUS.
RadSec clients transmit the same packet types on the connection they initiated as a RADIUS/UDP client would, and RadSec servers transmit the same packet types on the connections the server has accepted as a RADIUS/UDP server would.
As noted in <xref target="portusage"/>, RadSec uses the same port for Authentication and Accounting packets.
As non-exhaustive example, a RadSec client can transmit packets of type Access-Request, Accounting-Request, Status-Server, Disconnect-ACK over the same connection, and a RadSec server can transmit packets of type Access-Accept, Access-Reject, Access-Challenge, Accounting-Response, Disconnect-Request.</t>
        <t>However, special considerations apply for mixing Authentication and Accounting packets over the same connection.
Traditional RADIUS/UDP uses different ports for Authentication and Accounting, where RadSec uses the same connection for all RADIUS packets.
Due to the use of one single port for all packet types, clients might send packets to the server which it cannot process.
Without a response from the server, the client has to wait for the requests to time out before reusing the request ID, leading to resource exhaustion of the limited ID space.</t>
        <t>A server <bcp14>MAY</bcp14> therefore respond with a Protocol-Error packet as defined in <xref section="4" sectionFormat="comma" target="RFC7930"/>, to alleviate this situation and signal that it was unable to process a packet.
The Error-Cause attribute of this packet <bcp14>SHOULD</bcp14> be set to the value 406 ("Unsupported Extension"), if the server does not support the packet type, or the value 502 ("Request Not Routable (Proxy)"), if the request cannot be routed.
Future specifications may recommend other Error-Cause attribute values for specific scenarios.</t>
        <t>RadSec clients <bcp14>MUST</bcp14> accept Protocol-Error as a valid response and thus stop any retransmission of the original packet over the current connection.
Further details of handling the Protocol-Error reply on the client side are outside of the scope of this document, see <xref target="I-D.dekok-protocol-error"/> for a more detailed description of Protocol-Error.</t>
        <t>Note that sending Protocol-Error in response to unwanted packets replaces the use of CoA-NAK, Disconnect-NAK and Accounting-Response in these situations as specified in <xref target="RFC6614"/>.
See further details in <xref target="unwanted_packet_handling"/> below.</t>
        <t>RadSec clients, for both reliability and compatibility reasons, <bcp14>SHOULD NOT</bcp14> mix authentication and accounting requests within the same connection. RadSec clients <bcp14>SHOULD</bcp14> use a separate pool of connections on which to send accounting packets in the event the RadSec server does not support sending Protocol-Error.</t>
      </section>
      <section anchor="detecting-live-servers">
        <name>Detecting Live Servers</name>
        <t>RadSec implementations <bcp14>MUST</bcp14> utilize the existence of a TCP, TLS or DTLS connection where applicable in addition to the application-layer watchdog defined in <xref section="3.4" sectionFormat="comma" target="RFC3539"/> when determining the liveness of each connection.</t>
        <t>As RADIUS is a "hop-by-hop" protocol, proxies hide information about the topology downstream to the client.
While the client may be able to deduce the operational state of the next-hop (i.e., proxy), it is unable to determine the operational state of any hops beyond it.
This is particularly problematic for topologies that aggregate multiple routes for differing realms behind a proxy where the absence of a reply could lead to a client to incorrectly deduce that the proxy is unavailable when the cause was an unresponsive downstream hop for a single realm.
A similar effect may also be seen on home servers that use different credential backends for each realm they service.</t>
        <t>To avoid these issues, RadSec clients <bcp14>MUST</bcp14> only mark a connection 'DOWN' (as labeled by <xref section="3.4" sectionFormat="comma" target="RFC3539"/>) if one or more of the following conditions are met:</t>
        <ul spacing="normal">
          <li>
            <t>The network stack indicates that the connection is no longer viable; such as the destination being no longer routable or the underlying TCP connection being closed by the peer.</t>
          </li>
          <li>
            <t>The transport layer, D(TLS), provides no usable connection</t>
          </li>
          <li>
            <t>The application-layer watchdog algorithm has marked it 'DOWN'.</t>
          </li>
        </ul>
        <t>When a client opens multiple connections to a server, it is also possible that only one of the connections is unresponsive, e.g., because the server deleted the DTLS connection shared state or the connection was load balanced on the server side to a backend server that is now unresponsive.
Therefore, the liveness check <bcp14>MUST</bcp14> be done on a per-connection basis, and a failure on one connection <bcp14>MUST NOT</bcp14> lead to all connections to this server being marked down.</t>
        <t>RadSec clients <bcp14>MUST</bcp14> implement the Status-Server extension as described in <xref target="RFC5997"/> as the application level watchdog to detect the liveness of the peer in the absence of responses.
RadSec servers <bcp14>MUST</bcp14> be able to answer to Status-Server requests.
Since RADIUS has a limitation of 256 simultaneous "in flight" packets due to the length of the ID field (<xref section="2.4" sectionFormat="comma" target="RFC3539"/>), it is <bcp14>RECOMMENDED</bcp14> that RadSec clients reserve ID zero (0) on each connection for Status-Server packets.
This value was picked arbitrarily, as there is no reason to choose any other value over another for this use.</t>
        <t>For RADIUS/TLS, the endpoints <bcp14>MAY</bcp14> send TCP keepalives as described in <xref section="3.8.4" sectionFormat="comma" target="RFC9293"/>.
For RADIUS/DTLS connections, the endpoints <bcp14>MAY</bcp14> send periodic keepalives as defined in <xref target="RFC6520"/>.
This is a way of proactively and rapidly triggering a 'Connection DOWN' notification from the network stack.
These liveness checks are essentially redundant in the presence of an application-layer watchdog, but may provide more rapid notifications of connectivity issues.</t>
      </section>
      <section anchor="client-timers">
        <name>Client Timers</name>
        <t>RadSec clients may need to reconnect to a server that rejected their connection attempt and retry RADIUS packets which did not get an answer.
The following sections define the client behavior.</t>
        <section anchor="reconnection-attempts">
          <name>Reconnection attempts</name>
          <t>RadSec endpoints establish a (D)TLS connection before transmitting any RADIUS packets.
Therefore, in addition to retransmission of RADIUS packets, RadSec clients also have to perform connection retries.</t>
          <t>Except in cases where a connection attempt with session resumption was closed by the RadSec server, RadSec clients <bcp14>MUST NOT</bcp14> immediately reconnect to a server after a failed connection attempt.
A connection attempt is treated as failed if it fails at any point until a (D)TLS connection is established successfully.
If the (D)TLS connection is established successfully, but closed without having received any valid packets from the server, it is also treated as failed, and the reconnect timers <bcp14>MUST NOT</bcp14> be reset.
This can happen if additional authorization checks performed after the TLS handshake fail (e.g., because the TLS library only returns the relevant parameters when the connection is already established).
In this case the server will not answer to any packets from the client, including Status-Server requests.</t>
          <t>Typical reconnections <bcp14>MUST</bcp14> have a lower bound for the time in between retries.
The lower bound <bcp14>SHOULD</bcp14> be configurable, but <bcp14>MUST NOT</bcp14> be less than 0.5 seconds.
In cases where the server closes the connection on an attempted TLS session resumption, the client <bcp14>MUST NOT</bcp14> use TLS session resumption for the following connection attempt.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> implement an algorithm for handling the timing of such reconnection attempts that includes an exponential back-off.
Using an algorithm similar to the retransmission algorithm defined in <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/> is <bcp14>RECOMMENDED</bcp14>.
If a different algorithm is used, it <bcp14>SHOULD</bcp14> include a configurable lower and upper bound for the time between retries, a configurable timeout after which the client gives up reconnecting, and a jitter.</t>
          <t>When a reconnection attempt is queued on a reconnection timer, adding subsequent RADIUS packets to be sent <bcp14>SHOULD NOT</bcp14> trigger an immediate reconnection attempt or reset the reconnection timer.
Instead, the algorithm <bcp14>SHOULD</bcp14> continue as it would have without the new RADIUS packet.
However, a client <bcp14>MAY</bcp14> reset the timeout for giving up reconnecting when a new RADIUS packet is queued.</t>
          <t>Where the connection to a RadSec server is configured to be static and always kept open, the reconnect algorithm <bcp14>SHOULD</bcp14> have an upper limit for the time between retries (e.g., 60 seconds) and not give up trying to reconnect.</t>
        </section>
        <section anchor="client_retransmission_timers">
          <name>RADIUS packet retransmission</name>
          <t>RadSec clients <bcp14>MUST</bcp14> implement timers for managing packet retransmissions and timeouts, such as the ones defined in <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
Other algorithms than the one defined in <xref target="RFC5080"/> are possible, but any timer implementation <bcp14>MUST</bcp14> have similar properties of including jitter, exponential backoff and a maximum retransmission count (MRC) and/or maximum retransmission duration (MRD).</t>
          <t>The following description uses "retransmission" to mean the sending of the exact same packet over the same connection and "retry" to mean the sending of a new RADIUS packet with the same logical contents, but over a different connection or with other details changed.
When a packet is retransmitted, the previously encoded packet contents are sent without change.
When a packet is retried, it goes through the usual RADIUS processing (e.g., allocation of a new RADIUS ID, new Authenticator) and is re-encoded and re-signed.</t>
          <t>When a connection fails or is closed, a RadSec client <bcp14>SHOULD</bcp14> retry packets over a different connection, either a different connection to the same server or a different configured server in the same load-balancing/failover pool.
In order to keep the timers consistent, the timers associated with a packet <bcp14>SHOULD NOT</bcp14> be changed when a packet is moved from one connection to another.
At least the MRD timer <bcp14>SHOULD</bcp14> be preserved to prevent packets staying in the queue indefinitely due to regular connection closure.
A RadSec client <bcp14>MUST</bcp14> associate a packet with exactly one connection until either the connection is closed, in which case the association may move to a new connection to a server in the same load-balancing/failover pool, or the timers reach MRC or MRD, in which case the packet is discarded.</t>
          <t>The requirements for actions from timers differ for RADIUS/TLS and RADIUS/DTLS.</t>
          <t>As UDP is not a reliable transport, RADIUS/DTLS clients <bcp14>MUST</bcp14> retransmit packets when indicated by the timers to deal with packets dropped by the network.
When the timers reach MRC or MRD, the packet is discarded.</t>
          <t>Since TCP is a reliable transport, RADIUS/TLS clients <bcp14>MUST NOT</bcp14> retransmit packets when indicated by the timers.
They <bcp14>SHOULD</bcp14> still run the full timer algorithm to determine if the maximum retransmission count (MRC) has been reached.
RADIUS/TLS clients will then use MRC or MRD to determine that a packet has not received a response and the ID of this packet can be re-used for new packets.</t>
          <t>See <xref target="duplicates_retransmissions"/> for more discussion on retransmission behavior.</t>
        </section>
      </section>
      <section anchor="dtls-connection-limits-and-timeout">
        <name>(D)TLS connection limits and timeout</name>
        <t>While RADIUS/UDP could be implemented mostly statelessly (except for the requests in flight and possibly <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> deduplication), both TCP/TLS as well as DTLS require additional state tracking of the underlying (D)TLS connection and are thus subject to potential resource exhaustion.
This is aggravated by the fact that RADIUS client/servers are often statically configured and thus form long-running peer relationships with long-running connections.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> have configurable limits on the number of open connections.
When this maximum is reached and a new (D)TLS connection is needed, the server <bcp14>MUST</bcp14> either drop an old connection in order to open the new one or else not create a new connection.</t>
        <t>The close notification of (D)TLS or underlying connections are not fully reliable, or connections might be unnecessarily kept alive by heartbeat or watchdog traffic, occupying resources.
Therefore, both RadSec clients and servers <bcp14>MAY</bcp14> close connections after they have been idle for some time (no traffic except application layer watchdog).
This idle timeout <bcp14>SHOULD</bcp14> be configurable within reasonable limits and it <bcp14>SHOULD</bcp14> be possible to disable idle timeouts completely.</t>
        <t>On the server side, this mostly helps avoid resource exhaustion.
For clients, proactively closing connections can also help mitigate situations where watchdog mechanisms are unavailable or fail to detect non-functional connections.
Some scenarios or RADIUS protocol extensions could also require that a connection be kept open at all times, so clients <bcp14>MAY</bcp14> immediately re-open the connection.
These scenarios could be related to monitoring the infrastructure or to allow the server to proactively send packets to the clients without a preceding request.</t>
        <t>The value of the idle timeout to use depends on the exact deployment and is a trade-off between resource usage on clients/servers and the overhead of opening new connections.
Very short timeouts that are at or below the timeouts used for application layer watchdogs, typically in the range of 30-60s can be considered unreasonable.
In contrast, the upper limit is much more difficult to define but may be in the range of 10 to 15 min, depending on the available resources, or never (disabling idle timeout) in scenarios where a permanently open connection is required.</t>
      </section>
      <section anchor="behavior-on-dtls-connection-closure-of-incoming-connections">
        <name>Behavior on (D)TLS connection closure of incoming connections</name>
        <t>If an incoming (D)TLS connection or the underlying transport channel is closed or broken, then there is no way to send a RADIUS response packet to the client.
The RadSec server behavior then depends on the types of packets being processed, and on the role of the server.</t>
        <t>A RadSec server <bcp14>MUST</bcp14> discard or stop all requests that are associated with the closed connection.  This requirement also applies to proxied requests which are associated with the incoming request.
As no response can be sent over the now-closed (D)TLS connection, any further processing of those requests is pointless.
A discarded request may have a cached RADIUS response packet (<xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>), in which case the cached response also <bcp14>MUST</bcp14> be discarded.
If there is no cached response packet, then the request might still be processed by the home server.
The RADIUS proxy <bcp14>MUST</bcp14> discard any response to these requests and <bcp14>SHOULD</bcp14> stop processing the requests.</t>
        <t>A home server which receives Access-Request packets <bcp14>MUST</bcp14> behave as defined above for a proxy and discard those requests and stop processing them.
Where a RADIUS packet is part of a multi-packet authentication session (e.g., EAP), the underlying authentication session could be continued, or the underlying authentication session data could be discarded.
The server may be able to receive and process another packet for that authentication session via a different incoming connection.
It is difficult to make more recommendations for managing partially processed authentication sessions, as such recommendations depend strongly on the authentication method being used.
As a result, further behavior is implementation defined and outside the scope of this specification.</t>
        <t>A home server which receives other kinds of packets (for example Accounting-Request, CoA-Request, Disconnect-Request) <bcp14>MAY</bcp14> finish processing outstanding requests, and then discard any response.
This behavior ensures that the desired action is still taken, even if the home server cannot inform the client of the result of that action.</t>
      </section>
      <section anchor="malformed-packets-and-unknown-clients">
        <name>Malformed Packets and Unknown clients</name>
        <t>The RADIUS specifications say that an implementation should "silently discard" a packet in a number of circumstances.
This action has no further consequences for UDP based transports, as the "next" packet is completely independent of the previous one.</t>
        <t>When TLS is used as transport, decoding the "next" packet on a connection depends on the proper decoding of the previous packet.
As a result the behavior with respect to discarded packets has to change, since a malformed RADIUS packet could impact the decoding of succeeding packets.</t>
        <t>With DTLS, the "next" packet does not depend on proper decoding of the previous packet, since the RADIUS packets are sent in independent DTLS records (see <xref target="radius_packet_handling"/>).
However, since both TLS and DTLS provide integrity protection and ensure that the packet was sent by the peer, a protocol violation at this stage implies that the peer is misbehaving.</t>
        <t>Similarly, if the validation of the Request Authenticator or the Message-Authenticator fail, the peer is either using the wrong shared secret or is otherwise misbehaving.</t>
        <t>Subject to the discussion below, implementations of this specification <bcp14>SHOULD</bcp14> treat the text on "silently discard" packets in the RADIUS specifications as "silently discard the packet and close the connection".
That is, the implementation <bcp14>SHOULD</bcp14> send a (D)TLS close notification and, in the case of RADIUS/TLS, the underlying TCP connection <bcp14>MUST</bcp14> be closed if any of the following circumstances are seen:</t>
        <ul spacing="normal">
          <li>
            <t>Connection from an unknown client</t>
          </li>
          <li>
            <t>Packet where the RADIUS <tt>Length</tt> field is less than the minimum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where the RADIUS <tt>Length</tt> field is more than the maximum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where an Attribute <tt>Length</tt> field has the value of zero or one (0 or 1)</t>
          </li>
          <li>
            <t>Packet where the attributes do not exactly fill the packet</t>
          </li>
          <li>
            <t>Packet where the Request Authenticator fails validation (where validation is required)</t>
          </li>
          <li>
            <t>Packet where the Message-Authenticator attribute fails validation (when it occurs in a packet) unless the packet would be discarded due to other rules</t>
          </li>
        </ul>
        <t>After applying the above rules, there are still situations where the previous specifications allow a packet to be "silently discarded" upon receipt, but in which it is reasonable that a connection <bcp14>MAY</bcp14> remain open:</t>
        <ul spacing="normal">
          <li>
            <t>Packet with an invalid code field (see <xref target="radius_packets"/> for details)</t>
          </li>
          <li>
            <t>A server lacking the resources to process a request</t>
          </li>
        </ul>
        <t>In the following cases, RadSec clients <bcp14>MUST</bcp14> keep the connection open, but still discard the packet in question:</t>
        <ul spacing="normal">
          <li>
            <t>Response packets that do not match any outstanding request</t>
          </li>
          <li>
            <t>Response packets where the Response Authenticator fails validation (where validation is required)</t>
          </li>
        </ul>
        <t>A packet can be silently discarded when doing so does not have security implications.</t>
        <t>Packets with an invalid code indicate a configuration problem or use of RADIUS features that the peer does not support, and are not a security issue.
Missing resources also do not require the connection to be closed, since the resources may free up quickly again.
In these cases, implementations may still choose to close the connection, either as implementation choice or as configured by an administrator.</t>
        <t>Response packets that do not match outstanding requests can be a result of different timeout configurations.
If a client times out a request earlier than the server, the server might send a response to a request the client has already discarded.
Especially in proxy fabrics, this could even be exploited to regularly tear down connections by purposely delaying responses, therefore the connection must remain open.</t>
        <t>A packet with an invalid Response Authenticator may be the result of a race condition when re-using the same Identifier for a RADIUS request, and is not a security issue, if the packet is silently discarded, similar to responses without outstanding requests.
If a response fails the Response Authenticator validation, the validation of the Message-Authenticator attribute is irrelevant.
This is discussed further in <xref target="request_auth_validation"/>.</t>
        <t>These requirements reduce the possibility for a misbehaving client or server to wreak havoc on the network.</t>
        <t>To help with debugging, implementations <bcp14>SHOULD</bcp14> log details about the error and the packet causing it (e.g., packet code, packet ID, violated rule).
If the connection is not closed, logging ignored packets <bcp14>SHOULD</bcp14> be rate limited, to prevent resource exhaustion due to logging if the peer sends a high number of similar packets.</t>
      </section>
      <section anchor="cross-protocol-considerations">
        <name>Cross Protocol Considerations</name>
        <t>A client may be configured to use multiple servers, and therefore needs to be able to distinguish servers from one another.  Those servers may use different transport protocols, in any combination.  For example, a client may be configured with a RADIUS/UDP server, and RADIUS/DTLS server, and a RADIUS/TLS server all at the same time.  These servers may share IP addresses, but not the same UDP or TCP ports.  These considerations also affect RADIUS servers.</t>
        <t>RADIUS implementations <bcp14>MUST</bcp14> be able to distinguish servers by at least the 3-tuple of:</t>
        <ul spacing="normal">
          <li>
            <t>protocol (one of RADIUS/UDP, RADIUS/DTLS, or RADIUS/TLS)</t>
          </li>
          <li>
            <t>server IP address,</t>
          </li>
          <li>
            <t>server port number.</t>
          </li>
        </ul>
        <t>Implementations <bcp14>MUST NOT</bcp14> exchange both insecure and secure traffic on the same UDP or TCP port.  It is <bcp14>RECOMMENDED</bcp14> that implementations make it impossible for such a configuration to be created.</t>
        <t>Where a server accepts packets on multiple different 3-tuples (protocol, server IP address, server port number), it <bcp14>MUST</bcp14> track clients independently for each 3-tuple combination.  A RADIUS client has no way of knowing if different 3-tuple combinations are all managed by the same RADIUS server.  Therefore, the server behavior has to be compatible with the clients expectations.</t>
        <t>When a server receives a packet from a source IP address on a 3-tuple, it <bcp14>MUST</bcp14> process that packet according to the profile for that 3-tuple.  This requirement means that (for example), a server can be configured to accept RADIUS/UDP traffic on multiple UDP ports, and then have a completely different (and non-overlapping) set of clients configured for each port.</t>
        <t>While this behavior is not required by previous specifications, it codifies long-standing practices.  As such, existing server implementations likely do not need to do anything in order to support the requirements of this section.</t>
      </section>
    </section>
    <section anchor="radiustls-specific-specifications">
      <name>RADIUS/TLS-specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/TLS.</t>
      <section anchor="sending-and-receiving-radius-traffic">
        <name>Sending and receiving RADIUS traffic</name>
        <t>The TLS layer of RADIUS/TLS provides a stream-based communication between the two peers instead of the packet-based communication as with RADIUS/UDP.
As a result, the way RADIUS packets are sent and received has to change.</t>
        <t>Instead of relying on the underlying transport protocol to indicate the start of a new packet, the RADIUS/TLS endpoints have to keep track of the packet borders by examining the header of the received RADIUS packets.</t>
        <t>After the TLS connection is established, a RADIUS/TLS endpoint <bcp14>MUST NOT</bcp14> send any data except for RADIUS packets over the connection.
Since the RADIUS packet header contains a <tt>Length</tt> field, the end of the current RADIUS packet can be deduced.
The next RADIUS packet <bcp14>MUST</bcp14> be sent directly after the current RADIUS packet, that is, the endpoints <bcp14>MUST NOT</bcp14> add padding before, between, or after RADIUS packets.</t>
        <t>When receiving RADIUS packets, a RADIUS/TLS endpoint <bcp14>MUST</bcp14> determine the borders of RADIUS packet based on the <tt>Length</tt> field in the RADIUS header.
Note that, due to the stream architecture of TLS, it is possible that a RADIUS packet is first received only partially, and the remainder of the packet is contained in following fragments.
Therefore, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> assume that the packet length is invalid solely based on the currently available data in the stream.  More data may come at a later time.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that RADIUS/TLS implementations pass a RADIUS packet to the TLS library as one unit, instead of in multiple fragments.  This behavior avoids unnecessary overhead when sending or receiving (especially if every new write generates a new TLS record) and wait times on the other endpoint.</t>
      </section>
      <section anchor="duplicates_retransmissions">
        <name>Duplicates and Retransmissions</name>
        <t>As TCP is a reliable transport, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> retransmit RADIUS packets over a given TCP connection.
However, if the TLS connection or TCP connection is closed or broken, retries over new connections are permissible.
RADIUS request packets that have not yet received a response <bcp14>MAY</bcp14> be transmitted by a RADIUS/TLS client over a new connection.
As this procedure involves using a new connection, the ID of the packet <bcp14>MAY</bcp14> change.
If the ID changes, any security attributes such as Message-Authenticator <bcp14>MUST</bcp14> be recalculated.</t>
        <t>Despite the above discussion, RADIUS/TLS servers <bcp14>SHOULD</bcp14> still perform duplicate detection on received packets, as described in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>.
This detection can prevent duplicate processing of packets from non-conforming clients.</t>
      </section>
    </section>
    <section anchor="dtls_spec">
      <name>RADIUS/DTLS-specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/DTLS.</t>
      <section anchor="radius_packet_handling">
        <name>RADIUS packet handling</name>
        <t>The DTLS encryption adds an overhead to each packet sent.
RADIUS/DTLS implementations <bcp14>MUST</bcp14> support sending and receiving RADIUS packets of 4096 bytes in length, with a corresponding increase in the maximum size of the encapsulated DTLS packets.
A RadSec endpoint therefore <bcp14>MUST NOT</bcp14> advertise a record_size_limit <xref target="RFC8449"/> lower than 4096 bytes.
This larger packet size may cause the UDP packet to be larger than the Path MTU (PMTU), which causes the packet to be fragmented.
Implementers and operators should be aware of the possibility of fragmented UDP packets.
For details about issues with fragmentation see <xref target="RFC8900"/>.</t>
        <t>RADIUS/DTLS endpoints <bcp14>MUST</bcp14> send exactly one RADIUS packet per DTLS record.
This ensures that the RADIUS packets do not get fragmented at a point where a re-ordering of UDP packets would result in decoding failures.
The DTLS specification mandates that a DTLS record must not span multiple UDP datagrams (<xref section="4.3" sectionFormat="comma" target="RFC9147"/>).
A single UDP datagram may, however, contain multiple DTLS records.
RADIUS/DTLS endpoints <bcp14>MAY</bcp14> use this behavior to send multiple RADIUS packets in one UDP packet.</t>
        <t>For the receiving RADIUS/DTLS endpoint, the length checks defined in <xref section="3" sectionFormat="comma" target="RFC2865"/> still apply.
That is, a receiving RADIUS/DTLS endpoint <bcp14>MUST</bcp14> perform all the length checks, but <bcp14>MUST</bcp14> use the length of the decrypted payload of the DTLS record instead of the UDP packet length.
Exactly one RADIUS packet is encapsulated in a DTLS record, and any data outside the range of the RADIUS length field within the decrypted payload of a single DTLS record <bcp14>MUST</bcp14> be treated as padding, as it would be with a RADIUS/UDP packet, and be ignored.  RADIUS implementations <bcp14>MUST NOT</bcp14> discard packets simply due to the existence of padding.
For UDP datagrams containing multiple DTLS records, each DTLS record <bcp14>MUST</bcp14> be parsed individually.</t>
        <t>If a RADIUS packet needs to be re-transmitted, either as retransmission due to a missing response by the client or as retransmission of a cached response by the server, the RADIUS/DTLS endpoints <bcp14>MUST</bcp14> re-process the RADIUS packet through DTLS.
That is, for the purpose of retransmissions, RADIUS/DTLS endpoints cache the RADIUS packet, as a RADIUS/UDP endpoint would, and do not cache the DTLS record that contains the RADIUS packet.</t>
      </section>
      <section anchor="server-behavior">
        <name>Server behavior</name>
        <t>When a RADIUS/DTLS server receives packets on the configured RADIUS/DTLS port, all received packets <bcp14>MUST</bcp14> be treated as being RADIUS/DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be accepted on this port.</t>
        <t>Some servers maintain a list of allowed clients per destination port.
Others maintain a global list of clients that are permitted to send packets to any port.
As such, a RADIUS/DTLS server <bcp14>MUST</bcp14> maintain a "DTLS Required" flag per client.</t>
        <t>This flag indicates whether or not that client is required to use DTLS.
When set, the flag indicates that the only traffic accepted from the client is over the RADIUS/DTLS port.  All non-DTLS traffic <bcp14>MUST</bcp14> be silently discarded.</t>
        <t>This flag is normally set by an administrator.
However, if the server receives DTLS traffic from a client, it <bcp14>SHOULD</bcp14> notify the administrator that DTLS is available for that client.
A server <bcp14>MAY</bcp14> automatically mark the client as "DTLS Required".</t>
      </section>
      <section anchor="client-behavior">
        <name>Client behavior</name>
        <t>When a RADIUS/DTLS client sends packet to a RADIUS/DTLS port, all packets <bcp14>MUST</bcp14> be DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be sent to this port.</t>
        <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> probe servers to see if they support DTLS transport.
Instead, clients <bcp14>SHOULD</bcp14> use DTLS as a transport layer only when administratively configured.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>This section discusses topics related to the internal behavior of RadSec implementations that should be considered by RadSec implementers.</t>
      <section anchor="radius-implementation-changes">
        <name>RADIUS Implementation Changes</name>
        <t>The RADIUS packet format is unchanged from <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.
Specifically, all of the following portions of RADIUS remain unchanged when using RadSec:</t>
        <ul spacing="normal">
          <li>
            <t>Packet format</t>
          </li>
          <li>
            <t>Permitted codes</t>
          </li>
          <li>
            <t>Request Authenticator calculation</t>
          </li>
          <li>
            <t>Response Authenticator calculation</t>
          </li>
          <li>
            <t>Minimum packet length</t>
          </li>
          <li>
            <t>Maximum packet length</t>
          </li>
          <li>
            <t>Attribute format</t>
          </li>
          <li>
            <t>Vendor-Specific Attribute (VSA) format</t>
          </li>
          <li>
            <t>Permitted data types</t>
          </li>
          <li>
            <t>Calculation of dynamic attributes such as CHAP-Challenge, or Message-Authenticator</t>
          </li>
          <li>
            <t>Calculation of "encrypted" attributes such as Tunnel-Password.</t>
          </li>
        </ul>
        <t>The use of (D)TLS transport does not change the calculation of security-related fields (such as the Response-Authenticator) in RADIUS <xref target="RFC2865"/> or RADIUS Dynamic Authorization <xref target="RFC5176"/>.
Calculation of attributes such as User-Password <xref target="RFC2865"/> or Message-Authenticator <xref target="RFC3579"/> also does not change.</t>
        <t>The changes to RADIUS implementations required to implement this specification are largely limited to the portions that send and receive packets on the network, and to the establishment of the (D)TLS connection.
The fact that RADIUS remains largely unchanged ensures the simplest possible implementation and widest interoperability of the specification.
This reuse includes the usage of the outdated security mechanisms in RADIUS that are based on shared secrets and MD5.
The use of MD5 here is not considered a security issue, since integrity and confidentiality are provided by the (D)TLS layer.  See <xref target="security_considerations"/> of this document or <xref target="RFC9765"/> for more details.  See also <xref section="1" sectionFormat="comma" target="RFC9765"/> for a discussion of issues related to the continued use of MD5, even in situations where its use is known to be safe.</t>
        <t>Note that for RADIUS/DTLS the DTLS encapsulation of RADIUS means that UDP datagrams include an additional overhead due to DTLS.
This is discussed further in <xref target="dtls_spec"/>.</t>
        <section anchor="unwanted_packet_handling">
          <name>Differences from RFC 6614 unwanted RADIUS packet handling</name>
          <t>The previous specification of RADIUS/TLS in <xref target="RFC6614"/> recommended sending a reply to unwanted RADIUS packets that depends on the request type:</t>
          <ul spacing="normal">
            <li>
              <t>For unwanted CoA-Requests or Disconnect-Requests, the servers should respond with a CoA-NAK or Disconnect-NAK, respectively.</t>
            </li>
            <li>
              <t>For unwanted Accounting-Requests, the servers should respond with an Accounting-Response containing an Error-Cause attribute with the value 406 ("Unsupported Extension").</t>
            </li>
          </ul>
          <t><xref target="RFC6614"/> also recommended that a RADIUS/TLS client observing this Accounting-Response should stop sending Accounting-Request packets to this server.
This behavior, however, could lead to problems, especially in proxy fabrics, since the RADIUS client cannot determine whether the reply came from the correct server or a RADIUS proxy along the way.</t>
          <t>Compared to the <xref target="RFC6614"/> recommended replies (CoA-NAK, Disconnect-NAK and Accounting-Response), the Protocol-Error packet is explicitly only applicable to one RADIUS hop and must not be forwarded, which gives the RADIUS client the opportunity to re-route the unwanted packet to a different RADIUS server.
This also is backwards compatible with existing implementations, since RADIUS clients must ignore any incoming RADIUS packets with an unknown packet type.
Therefore, these <xref target="RFC6614"/> recommended reply message types are now replaced with the Protocol-Error packet type.</t>
        </section>
      </section>
      <section anchor="forwarding-radius-packets-between-udp-and-tcp-based-transports">
        <name>Forwarding RADIUS packets between UDP and TCP based transports</name>
        <t>When a RADIUS proxy forwards packets, it is possible that the incoming and outgoing links have substantially different properties.
This issue is most notable in UDP to TCP proxying, but there are still possible issues even when the same transport is used on both incoming and outgoing links.
<xref section="1.2" sectionFormat="comma" target="RFC2866"/> noted this issue many years ago:</t>
        <artwork><![CDATA[
A forwarding server may either perform its forwarding function in a
pass through manner, where it sends retransmissions on as soon as it
gets them, or it may take responsibility for retransmissions, for
example in cases where the network link between forwarding and remote
server has very different characteristics than the link between NAS
and forwarding server.
]]></artwork>
        <t>These differences are most notable in throughput, and in differing retransmission requirements.</t>
        <section anchor="throughput-differences-lead-to-network-collapse">
          <name>Throughput Differences lead to Network Collapse</name>
          <t>An incoming link to the proxy may have substantially different throughput than the outgoing link.
Perhaps the network characteristics on the two links are different, or perhaps the home server is slow.
In both situations, the proxy may be left with a difficult choice about what to do with the incoming packets, if the rate of incoming packets exceeds throughput on the outgoing link.</t>
          <t>As RADIUS does not provide for connection-based congestion control, there is no way for the proxy to signal on the incoming link that the client should slow its rate of sending packets.
As a result, the proxy generally will accept the packets, buffer them, and hope that they can be sent outbound before the client gives up on the request.  Other courses of action are possible, but are implementation specific.  See <xref target="I-D.dekok-protocol-error"/> for more discussion on this topic.</t>
        </section>
        <section anchor="differing-retransmission-requirements">
          <name>Differing Retransmission Requirements</name>
          <t>Since UDP datagrams can be lost, RADIUS/UDP and RADIUS/DTLS transports are required to perform retransmissions as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
In contrast, RADIUS/TCP and RADIUS/TLS transports are reliable, and do not perform retransmissions.
These requirements lead to an issue for proxies when they send packets across protocol boundaries with differing retransmission behaviors.</t>
          <t>When a proxy receives packets on an unreliable transport, and forwards them across a reliable transport, it receives retransmissions from the client, but <bcp14>MUST NOT</bcp14> forward those retransmissions across the reliable transport.
The proxy <bcp14>MAY</bcp14> log information about these retransmissions, but it does not perform any other action.</t>
          <t>When a proxy receives RADIUS packets on a reliable transport, and forwards them across an unreliable transport, the proxy <bcp14>MUST</bcp14> perform retransmissions across the unreliable transport as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
That is, the proxy takes responsibility for the retransmissions.
Implementations <bcp14>MUST</bcp14> take care to not completely decouple the two transports in this situation.
See <xref target="radius_packet_handling"/> for details on retransmitting RADIUS packets over DTLS.</t>
          <t>That is, if an incoming connection on a reliable transport is closed, there may be pending retransmissions on an outgoing unreliable transport.
Those retransmissions <bcp14>MUST</bcp14> be stopped, as there is nowhere to send the reply.
Similarly, if the proxy sees that the client has given up on a request (such as by re-using an Identifier before the proxy has sent a response), the proxy <bcp14>MUST</bcp14> stop all retransmissions of the old request and discard it.</t>
          <t>The above requirements are a logical extension of the common practice where a client stops retransmission of a packet once it decides to "give up" on the packet and discard it.
Whether this discard process is due to internal client decisions, or interaction with incoming connections is irrelevant.
When the client cannot do anything with responses to a request, it <bcp14>MUST</bcp14> stop retransmitting that request.</t>
        </section>
        <section anchor="acct-delay-time-and-event-timestamp">
          <name>Acct-Delay-Time and Event-Timestamp</name>
          <t>In order to avoid congestion, it is <bcp14>RECOMMENDED</bcp14> that RadSec clients which originate Accounting-Request packets (i.e., not proxies) do not include Acct-Delay-Time (<xref section="5.2" sectionFormat="comma" target="RFC2866"/>) in those packets.
Instead, those clients <bcp14>SHOULD</bcp14> include Event-Timestamp (<xref section="5.3" sectionFormat="comma" target="RFC2869"/>), which is the time at which the original event occurred.
The Event-Timestamp <bcp14>MUST NOT</bcp14> be updated on any retransmissions, as that would both negate the meaning of Event-Timestamp, and create the same problem as with Acct-Delay-Time.</t>
          <t>Not using Acct-Delay-Time allows for RADIUS Accounting-Request packets to be retransmitted without change.
In contrast, updating Acct-Delay-Time would require that the client create and send a new Accounting-Request packet without signaling the server that the previous packet is no longer considered active.
This process can occur repeatedly, which leads to multiple different packets containing effectively the same information (except for Acct-Delay-Time).
This duplication contributes to congestion of the network, if one or more RADIUS proxies performs retransmission to the next hop for each of those packets independently.
See <xref target="proxy_rationale"/> for a more detailed explanation of the problem and its implications.</t>
          <t>Additionally, the different properties of the RADIUS/TLS transport as well as cross-protocol proxying change the assumption of a negligible transmission time of the RADIUS packet, on which the value of Acct-Delay-Time is based.
While a single UDP packet may have a negligible transmission time, application data sent via TLS could arrive at the server with a significant delay due to the underlying TCP retransmission mechanism.
If the packet is proxied from RADIUS/TLS to RADIUS/DTLS or RADIUS/UDP, the proxy has to retransmit on its own without changing the value of Acct-Delay-Time, which again introduces non-negligible transmission delays.</t>
          <t>Using Event-Timestamp instead of Acct-Delay-Time also removes an ambiguity around retransmitted packets for RADIUS/TLS.
Since there is no change to the packet contents when a retransmission timer expires, no new packet ID is allocated, and therefore no new packet is created.</t>
          <t>Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client <bcp14>SHOULD</bcp14> use timers to detect packet loss, as described in <xref target="client_retransmission_timers"/>.
Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client can rely on the Event-Timestamp to signal delays, and therefore <bcp14>SHOULD NOT</bcp14> update the Acct-Delay-Time. If the timer has determined that the original packet has been completely lost, the client <bcp14>SHOULD</bcp14> then create a new RADIUS packet with the same information, and <bcp14>MAY</bcp14> update Acct-Delay-Time.
This behavior ensures that there is no congestive collapse, since a new packet is only created if following hops have also given up on retransmission.
The Event-Timestamp is then interpreted as the time at which the event occurred.  Where Acct-Delay-Time exists, it is then interpreted as the delay between the event and when the packet was sent. Systems <bcp14>MUST NOT</bcp14> subtract the Acct-Delay-Time from Event-Timestamp to derive a time at which the event occurred; that time is exactly Event-Timestamp.  The existence of Acct-Delay-Time instead serves as an additional indication of delays in sending the packet.
Leaving the Acct-Delay-Time static reduces the granularity of Acct-Delay-Time to the retransmission timeout, compared to the different approach of updating the Acct-Delay-Time on each retransmission.</t>
        </section>
      </section>
      <section anchor="additional-verification-of-peers">
        <name>Additional Verification of Peers</name>
        <t>There are numerous trust models in PKIX environments, and it is beyond the scope of this document to define how a particular deployment determines whether a client is trustworthy.
Implementations that want to support a wide variety of trust models should expose as many details of the presented certificate to the administrator as possible so that the trust model can be implemented by the administrator.
As a suggestion, at least the following information from the TLS connection and the X.509 client certificate should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>Certificate Fingerprint</t>
          </li>
          <li>
            <t>Issuer</t>
          </li>
          <li>
            <t>Subject</t>
          </li>
          <li>
            <t>all X.509v3 Extended Key Usage</t>
          </li>
          <li>
            <t>all X.509v3 Subject Alternative Name</t>
          </li>
          <li>
            <t>all X.509v3 Certificate Policy</t>
          </li>
        </ul>
        <t>Similar to the PKIX trust model, clients using TLS-PSK may have additional policies to determine whether a client should be allowed to connect.
Therefore, in TLS-PSK operation, at least the following information from the TLS connection should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>TLS-PSK Identifier</t>
          </li>
        </ul>
      </section>
      <section anchor="tcp-applications-are-not-udp-applications">
        <name>TCP Applications Are Not UDP Applications</name>
        <t>Implementers should be aware that programming a robust TCP-based application can be very different from programming a robust UDP-based application.</t>
        <t>Additionally, differences in the transport like head-of-line blocking and the possibility of increased transmission times should be considered.</t>
        <t>When using RADIUS/UDP or RADIUS/DTLS, there is no ordering of packets.
If a packet sent by an endpoint is lost, that loss has no effect on subsequent packets sent by that endpoint.</t>
        <t>Unlike UDP, TCP is subject to issues related to head-of-line blocking.
This occurs when a TCP segment is lost and a subsequent TCP segment arrives out of order.
While the RADIUS endpoints can process RADIUS packets out of order, the semantics of TCP makes this impossible.
This limitation can lower the maximum packet processing rate of RADIUS/TLS.
In severe cases, this may have a noticeable effect on all authentications that run over the congested connection, especially authentications with multiple round trips such as EAP-based authentications.
In contrast, when a RADIUS/UDP or RADIUS/DTLS packet is lost, only this authentication session is affected.
Additionally, due to the architecture of TCP as reliable stream transport, TCP retransmissions can occur significantly later, even multiple seconds, after the original data was passed to the network stack by the application.
In contrast, RADIUS/UDP packets are usually received either quickly, or not at all, in which case the RADIUS/UDP stack triggers a retransmission of the packet on the application layer.
This can impact or distort the accuracy of RADIUS attributes for timing which assume a negligible network delay, namely Acct-Delay-Time.</t>
      </section>
      <section anchor="dtls-session-management">
        <name>DTLS Session Management</name>
        <t>Where RADIUS/TLS can rely on the TCP state machine to perform session tracking, RADIUS/DTLS cannot.
As a result, implementations of RADIUS/DTLS may need to perform session management of the DTLS session in the application layer.
This subsection describes logically how this tracking is done.
Implementations <bcp14>MAY</bcp14> choose to use the method described here, using a 5-tuple per connection, or another, equivalent method, e.g. the Connection Identifier extension <xref target="RFC9146"/>.
When Connection IDs or any other tracking method are used for connection tracking, note that IP address based policies <bcp14>MUST</bcp14> still be applied for all incoming packets, similar to the mandated behavior for TLS Session Resumption in <xref target="tls_session_resumption"/>.
This is to prevent circumventing IP address based restrictions, if a client opens the connection from the allowed IP address range, but then moves to another, untrusted network.</t>
        <t><xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> already mandates a duplicate detection cache.
The session tracking described below can be seen as an extension of that cache, where entries contain DTLS sessions instead of RADIUS/UDP packets.</t>
        <section anchor="server-session-management">
          <name>Server Session Management</name>
          <t>A RADIUS/DTLS server using the 5-tuple method <bcp14>MUST</bcp14> track ongoing DTLS sessions for each client, based on the following 5-tuple:</t>
          <ul spacing="normal">
            <li>
              <t>source IP address</t>
            </li>
            <li>
              <t>source port number</t>
            </li>
            <li>
              <t>destination IP address</t>
            </li>
            <li>
              <t>destination port number</t>
            </li>
            <li>
              <t>protocol (fixed to <tt>UDP</tt>)</t>
            </li>
          </ul>
          <t>Note that this 5-tuple is independent of IP protocol version (IPv4 or IPv6).</t>
          <t>Each 5-tuple points to a unique session entry, which usually contains the following information:</t>
          <dl>
            <dt>DTLS Session:</dt>
            <dd>
              <t>Any information required to maintain and manage the DTLS session.</t>
            </dd>
            <dt>DTLS Data:</dt>
            <dd>
              <t>An implementation-specific variable that may contain information about the active DTLS session.
This variable may be empty or nonexistent.</t>
            </dd>
            <dt/>
            <dd>
              <t>This data will typically contain information such as idle timeouts, session lifetimes, and other implementation-specific data.</t>
            </dd>
          </dl>
          <section anchor="session-opening-and-closing">
            <name>Session Opening and Closing</name>
            <t>Session tracking is subject to Denial-of-Service (DoS) attacks due to the ability of an attacker to forge UDP traffic.
RADIUS/DTLS servers <bcp14>SHOULD</bcp14> use the stateless cookie tracking technique described in <xref section="4.2.1" sectionFormat="comma" target="RFC6347"/> for DTLS 1.2 and <xref section="5.1" sectionFormat="comma" target="RFC9147"/> for DTLS 1.3.
DTLS sessions <bcp14>SHOULD NOT</bcp14> be tracked until a ClientHello packet has been received with an appropriate Cookie value.
Server implementation <bcp14>SHOULD</bcp14> have a way of tracking DTLS sessions that are partially set up.
Servers <bcp14>MUST</bcp14> limit both the number and impact on resources of partial sessions.</t>
            <t>Sessions (both 5-tuple and entry) <bcp14>MUST</bcp14> be deleted when the DTLS session is closed for any reason.
When a session is deleted due to it failing security requirements, the DTLS session <bcp14>MUST</bcp14> be closed, any TLS session resumption parameters for that session <bcp14>MUST</bcp14> be discarded, and all tracking information <bcp14>MUST</bcp14> be deleted.
Since UDP is stateless, the potential exists for the client to initiate a new DTLS session using a particular 5-tuple, before the server has closed the old session.
For security reasons, the server <bcp14>MUST</bcp14> keep the old session active until either it has received secure notification from the client that the session is closed or the server decides to close the session based on idle timeouts.
For DTLS 1.3, if an epoch-0 ClientHello is received for a 5-tuple associated with an existing DTLS session, the server <bcp14>SHOULD</bcp14> follow the procedure in <xref section="5.11" sectionFormat="comma" target="RFC9147"/>. The existing session <bcp14>MUST NOT</bcp14> be discarded until reachability of the peer has been established.</t>
            <t>Taking any other action would permit unauthenticated clients to perform a DoS attack, by reusing a 5-tuple and thus causing the server to close an active (and authenticated) DTLS session.</t>
            <t>As a result, servers <bcp14>MUST</bcp14> ignore any attempts to reuse an existing 5-tuple from an active session.
This requirement can generally be reached by simply processing the packet through the existing DTLS session, as with any other packet received via that 5-tuple.
Non-compliant, or unexpected packets will be ignored by the DTLS layer.</t>
          </section>
        </section>
        <section anchor="client-session-management">
          <name>Client Session Management</name>
          <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> send both RADIUS/UDP and RADIUS/DTLS packets to different servers from the same source socket.
This practice causes increased complexity in the client application and increases the potential for security breaches due to implementation issues.</t>
        </section>
      </section>
    </section>
    <section anchor="security_considerations">
      <name>Security Considerations</name>
      <t>As this specification relies on the existing TLS and DTLS specifications, all security considerations for these protocols also apply to the (D)TLS portions of RadSec.</t>
      <t>For RADIUS however, many security considerations raised in the RADIUS documents are related to RADIUS encryption and authorization.
Those issues are largely mitigated when (D)TLS is used as a transport method, since encryption and authorization is achieved on the (D)TLS layer.
The issues that are not mitigated by this specification are related to the RADIUS packet format and handling, which is unchanged in this specification.</t>
      <t>A few remaining security considerations and notes to administrators deploying RadSec are listed below.</t>
      <section anchor="mixing-secure-and-insecure-traffic">
        <name>Mixing Secure and Insecure Traffic</name>
        <t>It is <bcp14>RECOMMENDED</bcp14> that servers do not accept both secure and insecure traffic from the same source IP address.  Allowing RADIUS/UDP and RADIUS/DTLS from the same client exposes the traffic to downgrade attacks and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>Administrators of a client can place servers into a load-balance or fail-over pools, no matter what the combination of values in the 3-tuple which identifies a server. However, administrators should limit these pools to servers with a similar security profile, e.g., all UDP, or all (D)TLS. Mixing insecure traffic with secure traffic will likely create security risks.</t>
      </section>
      <section anchor="radius-proxies">
        <name>RADIUS Proxies</name>
        <t>RadSec provides authentication, integrity and confidentiality protection for RADIUS traffic for a single hop between two RADIUS endpoints.
In the presence of proxies, intermediate proxies can still inspect the individual RADIUS packets, i.e., "end-to-end" encryption on the RADIUS layer is not provided.
Where intermediate proxies are untrusted, it is desirable to use other RADIUS mechanisms to prevent critical RADIUS attributes from inspection by such proxies.
One common method is to protect user credentials by using the Extensible Authentication Protocol (EAP) and EAP methods that utilize TLS.
However, in typical use cases there still remain attributes potentially containing confidential data (such as personally identifiable information or cryptographic keys) which cannot be protected from inspection by proxies.</t>
        <t>Additionally, when RADIUS proxies are used, the RADIUS client has no way of ensuring that the complete path of the RADIUS packet is protected, since RADIUS routing is done hop-by-hop and any intermediate proxy may be configured, after receiving a RADIUS packet via RadSec from one endpoint, to forward this packet to a different endpoint using the RADIUS/UDP transport profile.
Since with RADIUS/UDP, the packet is sent in cleartext, an eavesdropper can observe the packet over the RADIUS/UDP hops.
There is no technical solution with the current specification that enforces that a RADIUS packet is transported only via secure RADIUS transports over the whole path.
If the confidentiality of the full contents of the RADIUS packet across the whole path is required, organizational solutions need to be in place that ensure that every intermediate RADIUS proxy is configured to forward the RADIUS packets using RadSec as transport.</t>
        <t>One possible way to reduce the attack surface is to reduce the number of proxies in the overall proxy chain.
For this, dynamic discovery as defined in <xref target="RFC7585"/> can be used.</t>
        <section anchor="loopback-attack-on-endpoints-acting-as-server-and-client">
          <name>Loopback-Attack on endpoints acting as Server and Client</name>
          <t>RadSec endpoints that are configured to act both as client and server, typically in a proxy configuration, may be vulnerable to attacks where an attacker mirrors back all traffic to the endpoint.
Therefore, endpoints that are capable of acting as both client and server <bcp14>SHOULD</bcp14> implement mitigations to avoid accepting connections from itself.
One example of a potentially vulnerable configuration is a setup where the RadSec server is accepting incoming connections from any address (or a wide address range).
Since the server may not be able to verify the certificate subject or subject alternate names, the trust is based on the certificate issuer and/or on the contents of the certificate policies extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/>.
However, in this case, the client certificate which the RadSec endpoint uses for outgoing connections on the client side might also satisfy the trust check of the server side.
Other scenarios where the identification of an outgoing connection satisfies the trust check of an incoming one are possible, but are not enumerated here.</t>
          <t>Either through misconfiguration, erroneous or spoofed dynamic discovery, or an attacker rerouting TLS packets, a proxy might thus open a connection to itself, creating a loop.
Such attacks have been described for TLS-PSK <xref target="RFC9257"/>, dubbed a selfie-attack, but are much broader in the RadSec case.
In particular, as described above, they also apply to certificate based authentication.</t>
          <t>Server implementations <bcp14>SHOULD</bcp14> therefore detect connections from itself, and reject them.
There is currently no detection method that works universally for all use-cases and TLS implementations.
Some possible detection methods are listed below:</t>
          <ul spacing="normal">
            <li>
              <t>Comparing client or server random used in the TLS handshake.  While this is a very effective method, it requires access to values which are normally private to the TLS implementation.</t>
            </li>
            <li>
              <t>Sending a custom random number in an extension in the TLS client hello.  Again, this is very effective, but requires extension of the TLS implementation.</t>
            </li>
            <li>
              <t>Comparing the incoming server certificate to all server certificates configured on the proxy.  While in some scenarios this can be a valid detection method, using the same server certificate on multiple servers would keep these servers from connecting with each other, even when this connection is legitimate.</t>
            </li>
          </ul>
          <t>The application layer RADIUS protocol also offers some loop detection, e.g., using a Proxy-State attribute.
However, these methods are not capable of reliably detecting and suppressing these attacks in every case and are outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="usage-of-null-encryption-cipher-suites-for-debugging">
        <name>Usage of NULL encryption cipher suites for debugging</name>
        <t>Some TLS implementations offer cipher suites with NULL encryption, to allow inspection of the plaintext with packet sniffing tools.
Since with RadSec the RADIUS shared secret is set to a static string ("radsec" for RADIUS/TLS, "radius/dtls" for RADIUS/DTLS), using a NULL encryption cipher suite will also result in complete disclosure of the whole RADIUS packet, including the encrypted RADIUS attributes, to any party eavesdropping on the conversation.
Following the recommendations in <xref section="4.1" sectionFormat="comma" target="RFC9325"/>, this specification forbids the usage of NULL encryption cipher suites for RadSec.</t>
        <t>For cases where administrators need access to the decrypted RadSec traffic, different approaches should be used, like exporting the key material from TLS libraries according to <xref target="RFC9850"/>.</t>
      </section>
      <section anchor="possibility-of-denial-of-service-attacks">
        <name>Possibility of Denial-of-Service attacks</name>
        <t>Both RADIUS/TLS and RADIUS/DTLS have a considerable higher amount of data that the server needs to store in comparison to RADIUS/UDP.
Therefore, an attacker could try to exhaust server resources.</t>
        <t>With RADIUS/UDP, any invalid RADIUS packet would fail the cryptographic checks and the server would silently discard that packet.
For RadSec, the server needs to perform at least a partial TLS handshake to determine whether or not the client is authorized.
Performing a (D)TLS handshake is more complex than the cryptographic check of a RADIUS packet.
An attacker could try to trigger a high number of (D)TLS handshakes at the same time, resulting in a high server load and potentially a Denial-of-Service.
To prevent this attack, a RadSec server <bcp14>SHOULD</bcp14> have configurable limits on new connection attempts, and where configured, <bcp14>MUST</bcp14> enforce those limits.</t>
        <t>Both TLS and DTLS need to store connection information for each open (D)TLS connection.
Especially with DTLS, a bogus or misbehaving client could open an excessive number of DTLS connections.
This connection tracking could lead to a resource exhaustion on the server side, triggering a Denial-of-Service.
Therefore, RadSec servers <bcp14>SHOULD</bcp14> have a configurable limit of the number of connections they can track, and where configured, <bcp14>MUST</bcp14> enforce those limits.
When the total number of connections tracked is going to exceed the configured limit, servers <bcp14>MAY</bcp14> free up resources by closing the connection that has been idle for the longest time.
Doing so may free up idle resources that then allow the server to accept a new connection.</t>
        <t>RadSec servers <bcp14>MUST</bcp14> limit the number of partially open (D)TLS connections and <bcp14>SHOULD</bcp14> expose this limit as configurable option to the administrator.</t>
        <t>To prevent resource exhaustion by partially opening a large number of (D)TLS connections, RadSec servers <bcp14>SHOULD</bcp14> have a timeout on partially open (D)TLS connections.
A limit of a few seconds is recommended, implementations <bcp14>SHOULD</bcp14> expose this timeout as a configurable option to the administrator.
If a (D)TLS connection is not established within this timeframe, it is likely that this connection is either not from a valid client, or it is from a valid client with unreliable connectivity.
In contrast, an established connection might not send packets for longer periods of time, but since the endpoints are mutually authenticated, leaving a connection available does not pose a problem other than the problems mentioned before.</t>
        <t>A different means of prevention is IP address filtering.
If the IP address range that the server expects clients to connect from is restricted, then the server can simply reject or drop all connection attempts from outside those ranges.
If every RadSec client is configured with an IP address range, then the server does not even have to perform a partial TLS handshake if the connection attempt comes from outside every allowed range, but can instead immediately drop the connection.
To perform this lookup efficiently, RadSec servers <bcp14>SHOULD</bcp14> keep a list of the accumulated permitted IP address ranges, individually for each transport.</t>
      </section>
      <section anchor="tls-connection-lifetime-and-key-rotation">
        <name>TLS Connection Lifetime and Key Rotation</name>
        <t>The RadSec TLS connections may have a long lifetime.
Especially when dealing with high volume of RADIUS traffic, the encryption keys have to be rotated regularly, depending on both the amount of data which was transferred, and on the encryption method.
See <xref section="5.5" sectionFormat="comma" target="RFC8446"/> and <xref target="I-D.irtf-cfrg-aead-limits"/> for more information.</t>
        <t>Implementers <bcp14>SHOULD</bcp14> be aware of this issue and determine whether the underlying TLS library automatically rotates encryption keys or not.
If the underlying TLS library does not perform the rotation automatically, RadSec implementations <bcp14>SHOULD</bcp14> perform this rotation manually, either by a key update of the existing TLS connection or by closing the TLS connection and opening a new one.</t>
      </section>
      <section anchor="connection-closing-on-malformed-packets">
        <name>Connection Closing On Malformed Packets</name>
        <t>If malformed RADIUS packets are received or the packets fail the authenticator checks, this specification requires that the (D)TLS connection be closed.
The reason is that the connection is expected to be used for transport of RADIUS packets only.</t>
        <t>Any non-RADIUS traffic on that connection means the other party is misbehaving and is potentially a security risk.
Similarly, any RADIUS traffic failing authentication vector or Message-Authenticator validation means that two parties do not have a common shared secret.
Since the shared secret is static, this again means the other party is misbehaving.</t>
        <t>On the other hand, a third party should not be able to trigger such a connection closure, e.g., by sending a RADIUS packet with attributes the RadSec server does not understand.
If a RadSec endpoint would close the connection when receiving such packets, an attacker could repeatedly send such packets to disrupt the RadSec connection.
Leaving the connection open and ignoring unknown attributes also ensures forward compatibility.</t>
      </section>
      <section anchor="migrating-from-radiusudp-to-radsec">
        <name>Migrating from RADIUS/UDP to RadSec</name>
        <t>Since RADIUS/UDP security relies on the MD5 algorithm, which is considered insecure, using RADIUS/UDP over insecure networks is risky.
Migrating from RADIUS/UDP to RadSec is therefore recommended.
Within this migration process, however, there are a few items that need to be considered by administrators.</t>
        <t>Firstly, administrators may be tempted to simply migrate from RADIUS/UDP to RadSec with (D)TLS-PSK and reuse the RADIUS shared secret as (D)TLS-PSK.
While this may seem like an easy way to upgrade RADIUS/UDP to RadSec, the cryptographic problems with the RADIUS/UDP shared secret render the shared secret potentially compromised.
Using a potentially compromised shared secret as TLS-PSK compromises the whole TLS connection.
Therefore, as defined in <xref section="4.1.3" sectionFormat="comma" target="RFC9813"/>, any shared secret used with RADIUS/UDP before <bcp14>MUST NOT</bcp14> be used with RadSec and (D)TLS-PSK.
As implementation note, it is also strongly recommend to not reuse the configuration option for the RADIUS/UDP shared secret in the existing user interfaces for the (D)TLS-PSK too.
Instead, these should be separate input fields in order to prevent accidental reuse of an existing shared secret when switching to (D)TLS-PSK.</t>
        <t>When upgrading from RADIUS/UDP to RadSec, there may be a period of time, where the connection between client and server is configured for both transport profiles.
If the old RADIUS/UDP configuration is left configured, but not used in normal operation, e.g., due to a fail-over configuration that prefers RadSec, an attacker could disrupt the RadSec communication and force a downgrade to RADIUS/UDP.
To prevent this it is <bcp14>RECOMMENDED</bcp14> that, when the migration to RadSec is completed, the RADIUS/UDP configuration is removed.
RadSec clients <bcp14>MUST NOT</bcp14> fall back to RADIUS/UDP if the RadSec communication fails, unless explicitly configured this way.</t>
        <t>Special considerations apply for clients behind a NAT, where some clients use RADIUS/UDP and others use RadSec.
A RADIUS server might not be able to detect if a RadSec client falls back to RADIUS/UDP; they will appear with the same source IP address to the server and use the same shared secret.
It is therefore <bcp14>NOT RECOMMENDED</bcp14> to use both RADIUS/UDP and RadSec clients behind a NAT at the same time.</t>
      </section>
      <section anchor="client-subsystems">
        <name>Client Subsystems</name>
        <t>Many traditional clients treat RADIUS as subsystem-specific.
That is, each subsystem on the client has its own RADIUS implementation and configuration.
These independent implementations work for simple systems, but break down for RADIUS when multiple servers, fail-over and load-balancing are required.
With (D)TLS enabled, these problems are expected to get worse.</t>
        <t>In these situations, clients should use a local proxy that arbitrates all RADIUS traffic between the client and all servers.
This proxy will encapsulate all knowledge about servers, including security policies, fail-over and load-balancing.
All client subsystems should communicate with this local proxy, perhaps via an internal API, or over a loopback address.</t>
        <t>The benefit of this configuration is that there is one place in the client that arbitrates all RADIUS traffic.
So long as the proxy implements RadSec, other subsystems that do not implement RadSec do not need to be updated to support it.  They can instead leverage the functionality of the local proxy to leverage the benefits of (D)TLS.
(D)TLS connections opened by the proxy can remain open for a long period of time, even when client subsystems are restarted.
The proxy can be configured to do RADIUS/UDP to some servers and RadSec to others.</t>
        <t>Delegation of responsibilities and separation of tasks are important security principles.
By moving all RadSec knowledge to a (D)TLS-aware proxy, security analysis becomes simpler, and enforcement of correct security becomes easier.</t>
      </section>
    </section>
    <section anchor="design_decisions">
      <name>Design Decisions</name>
      <t>Many of the design decisions of RADIUS/TLS and RADIUS/DTLS can be found in <xref target="RFC6614"/> and <xref target="RFC7360"/>.
This section will discuss the rationale behind significant changes from the experimental specification.</t>
      <section anchor="design_supported_transports">
        <name>Mandatory-to-implement transports</name>
        <t>With the merging of RADIUS/TLS and RADIUS/DTLS the question of mandatory-to-implement transports arose.
In order to avoid incompatibilities, there were two possibilities: Either mandate one of the transports for all implementations or mandate the implementation of both transports for either the server or the client.
As of the time writing, RADIUS/TLS is widely adopted for some use cases.
However, TLS has some serious drawbacks when used for RADIUS transport.
Especially the sequential nature of the connection and the connected issues like head-of-line blocking could create problems.</t>
        <t>Therefore, the decision was made that RADIUS servers must implement both transports.
For RADIUS clients, that may run on more constrained hardware, implementers can choose to implement only the transport that is better suited for their needs.</t>
      </section>
      <section anchor="design_trust_profiles">
        <name>Mandatory-to-implement trust profiles</name>
        <t><xref target="RFC6614"/> mandates the implementation of the trust profile "certificate with PKIX trust model" for both clients and servers.
The experience of the deployment of RADIUS/TLS as specified in <xref target="RFC6614"/> has shown that most actors still rely on RADIUS/UDP.
Since dealing with certificates can create a lot of issues, both for implementers and administrators, for the re-specification the goal was to create an alternative to insecure RADIUS transports like RADIUS/UDP that can be deployed easily without much additional administrative overhead.</t>
        <t>As with the supported transports, the assumption is that RADIUS servers are less constrained than RADIUS clients.
Since some client implementations already support using certificates for mutual authentication and there are several use cases, where pre-shared keys are not usable (e.g., a dynamic federation with changing members), the decision was made that, analog to the supported transports, RadSec servers must implement both certificates with PKIX trust model and TLS-PSK as means of mutual authentication.
RadSec clients again can choose which method is better suited for them, but must, for compatibility reasons, implement at least one of the two.</t>
      </section>
      <section anchor="design_changes_in_tls">
        <name>Changes in application of TLS</name>
        <t>The original specification of RADIUS/TLS does not forbid the usage of compression in the TLS layer.
As per <xref section="3.3" sectionFormat="comma" target="RFC9325"/>, compression should not be used due to the possibility of compression-related attacks, unless the application protocol is proven to be not open to such attacks.
Since some attributes of the RADIUS packets within the TLS tunnel contain values that an attacker could at least partially choose (i.e., username, MAC address or EAP message), there is a possibility for compression-related attacks, that could potentially reveal data in other RADIUS attributes through length of the TLS record.
To circumvent this attack, this specification forbids the usage of TLS compression.</t>
        <t>Since usage of 0-RTT may have implications on forward secrecy and replay protection, this specification prohibits its use.
Protection against replay attacks is necessary, since a replayed RADIUS packet in the early data would be processed as new packet.
The additional effort that is needed to protect 0-RTT data against replays outweighs the benefit of the reduced processing time.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="service-name-and-transport-protocol-port-number-registry">
        <name>Service Name and Transport Protocol Port Number Registry</name>
        <t>Upon approval, IANA should update the Reference and the Assignment Notes to radsec in the Service Name and Transport Protocol Port Number Registry at <eref target="https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml">https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml</eref>:</t>
        <t>For TCP:</t>
        <ul spacing="normal">
          <li>
            <t>Service Name: radsec</t>
          </li>
          <li>
            <t>Port Number: 2083</t>
          </li>
          <li>
            <t>Transport Protocol: tcp</t>
          </li>
          <li>
            <t>Description: Secure RADIUS Service</t>
          </li>
          <li>
            <t>Assignment notes: The TCP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/TLS, prior to issuance of the experimental RFC 6614.
[RFCXXXX] updates RFC 6614 (RADIUS/TLS).</t>
          </li>
          <li>
            <t>Reference: [RFCXXXX] (this document)</t>
          </li>
        </ul>
        <t>For UDP:</t>
        <ul spacing="normal">
          <li>
            <t>Service Name: radsec</t>
          </li>
          <li>
            <t>Port Number: 2083</t>
          </li>
          <li>
            <t>Transport Protocol: udp</t>
          </li>
          <li>
            <t>Description: Secure RADIUS Service</t>
          </li>
          <li>
            <t>Assignment notes: The UDP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/DTLS, prior to issuance of the experimental RFC 7360. [RFCXXXX] updates RFC 7360 (RADIUS/DTLS).</t>
          </li>
          <li>
            <t>Reference: [RFCXXXX] (this document)</t>
          </li>
        </ul>
      </section>
      <section anchor="tls-application-layer-protocol-negotiation-alpn-protocol-ids">
        <name>TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs</name>
        <t>IANA is requested to update the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry at <eref target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids">https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids</eref> to update one entry, and change the reference from <xref target="RFC9765"/> to THIS DOCUMENT.</t>
        <ul spacing="normal">
          <li>
            <t>Protocol: RADIUS/1.0</t>
          </li>
          <li>
            <t>Identification Sequence: 0x72 0x61 0x64 0x69 0x75 0x73 0x2f 0x31 0x2e 0x30
  ("radius/1.0")</t>
          </li>
          <li>
            <t>Reference: [RFCXXXX] (This document)</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </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="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="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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="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"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <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="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>
        <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="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC9765">
          <front>
            <title>RADIUS/1.1: Leveraging Application-Layer Protocol Negotiation (ALPN) to Remove MD5</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This document defines Application-Layer Protocol Negotiation (ALPN) extensions for use with RADIUS/TLS and RADIUS/DTLS. These extensions permit the negotiation of an application protocol variant of RADIUS called "RADIUS/1.1". No changes are made to RADIUS/UDP or RADIUS/TCP. The extensions allow the negotiation of a transport profile where the RADIUS shared secret is no longer used, and all MD5-based packet authentication and attribute obfuscation methods are removed.</t>
              <t>This document updates RFCs 2865, 2866, 5176, 6613, 6614, and 7360.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9765"/>
          <seriesInfo name="DOI" value="10.17487/RFC9765"/>
        </reference>
        <reference anchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC9813">
          <front>
            <title>Operational Considerations for Using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="July" year="2025"/>
            <abstract>
              <t>This document provides implementation and operational considerations for using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS/TLS (RFC 6614) and RADIUS/DTLS (RFC 7360). The purpose of the document is to help smooth the operational transition from the use of RADIUS/UDP to RADIUS/TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="243"/>
          <seriesInfo name="RFC" value="9813"/>
          <seriesInfo name="DOI" value="10.17487/RFC9813"/>
        </reference>
        <reference anchor="RFC5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="I-D.dekok-protocol-error">
          <front>
            <title>Standardising Protocol-Error</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>InkBridge Networks</organization>
            </author>
            <date day="3" month="July" year="2026"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekok-protocol-error-01"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
        <reference anchor="RFC8449">
          <front>
            <title>Record Size Limit Extension for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.</t>
              <t>This replaces the maximum fragment length extension defined in RFC 6066.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8449"/>
          <seriesInfo name="DOI" value="10.17487/RFC8449"/>
        </reference>
        <reference anchor="RFC8900">
          <front>
            <title>IP Fragmentation Considered Fragile</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes IP fragmentation and explains how it introduces fragility to Internet communication.</t>
              <t>This document also proposes alternatives to IP fragmentation and provides recommendations for developers and network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="230"/>
          <seriesInfo name="RFC" value="8900"/>
          <seriesInfo name="DOI" value="10.17487/RFC8900"/>
        </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="RFC9146">
          <front>
            <title>Connection Identifier for DTLS 1.2</title>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="A. Kraus" initials="A." surname="Kraus"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document specifies the Connection ID (CID) construct for the Datagram Transport Layer Security (DTLS) protocol version 1.2.</t>
              <t>A CID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association. In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple. If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session, then the receiver will be unable to locate the correct security context.</t>
              <t>The new ciphertext record format with the CID also provides content type encryption and record layer padding.</t>
              <t>This document updates RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9146"/>
          <seriesInfo name="DOI" value="10.17487/RFC9146"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC9850">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="Y. Rosomakho" initials="Y." surname="Rosomakho"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document describes a format that supports logging information about the secrets used in a TLS connection. Recording secrets to a file in SSLKEYLOGFILE format allows diagnostic and logging tools that use this file to decrypt messages exchanged by TLS endpoints. This format is intended for use in systems where TLS only protects test data.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9850"/>
          <seriesInfo name="DOI" value="10.17487/RFC9850"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-aead-limits">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="September" year="2026"/>
            <abstract>
              <t>   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.  This document is a product of the Crypto
   Forum Research Group (CFRG) in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-13"/>
        </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>
      </references>
    </references>
    <?line 1091?>

<section anchor="changes-from-rfc6614-radiustls-and-rfc7360-radiusdtls">
      <name>Changes from RFC6614 (RADIUS/TLS) and RFC7360 (RADIUS/DTLS)</name>
      <t>The following list contains the most important changes from the previous specifications in <xref target="RFC6613"/> (RADIUS/TCP), <xref target="RFC6614"/> (RADIUS/TLS) and <xref target="RFC7360"/> (RADIUS/DTLS).</t>
      <ul spacing="normal">
        <li>
          <t>The protocols RADIUS/TLS and RADIUS/DTLS are now collectively referred to as RadSec.</t>
        </li>
        <li>
          <t><xref target="RFC6614"/> referenced <xref target="RFC6613"/> for TCP-related specification, RFC6613 on the other hand had some specification for RADIUS/TLS.
These specifications have been merged into this document, and therefore removes <xref target="RFC6613"/> as normative reference.</t>
        </li>
        <li>
          <t>RFC6614 marked TLSv1.1 or later as mandatory, this specification now references <xref target="RFC9325"/> for recommended TLS versions, which mandates TLS 1.2 and recommends TLS 1.3</t>
        </li>
        <li>
          <t>RFC6614 allowed use of TLS compression, this document forbids it.</t>
        </li>
        <li>
          <t>RFC6614 only requires support for the trust model "certificates with PKIX" (<xref section="2.3" sectionFormat="comma" target="RFC6614"/>).  This document changes this.  For servers, TLS-X.509-PKIX (<xref target="tlsx509pkix"/>, equivalent to "certificates with PKIX" in RFC6614) and TLS-PSK (<xref target="tlspsk"/>) is now mandated and clients must implement at least one of the two.</t>
        </li>
        <li>
          <t>The recommendation for TLS-X509-FINGERPRINT (<xref section="2.3" sectionFormat="comma" target="RFC6614"/>) is removed since the model has not been implemented by any known implementation of the experimental RADIUS/(D)TLS specifications.</t>
        </li>
        <li>
          <t>The mandatory-to-implement cipher suites are not referenced directly, this is replaced by a pointer to <xref target="RFC9325"/>.</t>
        </li>
        <li>
          <t>The specification regarding steps for certificate verification has been updated.</t>
        </li>
        <li>
          <t><xref target="RFC6613"/> mandated the use of Status-Server as watchdog algorithm, <xref target="RFC7360"/> only recommended it.  This specification mandates the use of Status-Server for both RADIUS/TLS and RADIUS/DTLS.</t>
        </li>
        <li>
          <t><xref target="RFC6613"/> only included limited text around retransmissions, this document now gives more guidance on how to handle retransmissions and retries, especially across different transports.</t>
        </li>
        <li>
          <t>The rules for verifying the peer certificate have been updated to follow guidance provided in <xref target="RFC9525"/>.  Using the Common Name RDN for validation of server certificates is now forbidden.</t>
        </li>
        <li>
          <t>The response to unwanted packets has changed. Endpoints should now reply with a Protocol-Error packet, which is connection-specific and should not be proxied.</t>
        </li>
        <li>
          <t><xref target="RFC6613"/> mandates that the connection must be closed if the Response Authenticator fails validation. This could lead to unwanted connection closures due to a race condition. This document now mandates that RadSec clients must discard the packet, but leave the connection open.
          </t>
          <ul spacing="normal">
            <li>
              <t>For responses without an outstanding request, <xref target="RFC6613"/> allowed the connection to remain open or be closed, as an implementation choice. Since this may occur when client and server use different timeouts, RadSec clients are now mandated to leave the connection open.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The rationales behind some of these changes are outlined in <xref target="design_decisions"/>.</t>
      <section anchor="request_auth_validation">
        <name>Race-condition in Request Authenticator Validation</name>
        <t>RFC 6613 mandates that the connection must be closed if a client receives a RADIUS response where the Response Authenticator fails validation.
Normally, a failure in validation means that the peer is using the wrong shared secret or is otherwise misbehaving.
In the case of the Request Authenticator, a failed validation can be the result of a race condition, and therefore does not necessarily indicate a security problem.</t>
        <t>In RADIUS, requests and responses are matched using the Identifier.
If the client times out a request, it may re-use the Identifier for a new request.
Especially in high-load situations, an Identifier might be re-used immediately after a request has been timed out.
This creates a small window in which the server may send a response to the old request, before the new request from the client was received.
The client already discarded the old request and validates the Response Authenticator against the new request, which fails.</t>
        <t>In this case, the client can simply discard the request and leave the connection open.
Discarding the request also implies that the Message-Authenticator attribute is not checked, and the requirement to close a connection when the Message-Authenticator attribute fails validation does not apply.
However, a response packet where the Request Authenticator is valid, but the Message-Authenticator validation fails is an idication of a misbehaving peer and the connection must be closed.</t>
      </section>
      <section anchor="proxy_rationale">
        <name>Rationale for Event-Timestamp vs. Acct-Delay-Time</name>
        <t>This appendix gives an example of a setup where using Acct-Delay-Time in Accounting-Requests can cause or contribute to congestion in proxy environments.</t>
        <t>The Acct-Delay-Time attribute is intended to carry information about the delay between the time of the event (e.g., when the traffic was measured) and the time when the Accounting-Request was sent.
If an Accounting-Request does not receive an answer, the client can resend the request with an updated Acct-Delay-Time.</t>
        <t>The example setup here consists of three RADIUS endpoints.
Client A acts as a simple RADIUS client, Proxy B acts as RADIUS proxy and Server C acts as RADIUS server.
The connection A-B uses RADIUS/TLS, B-C uses RADIUS/UDP.</t>
        <t>In this scenario, Client A sends accounting updates that are proxied via Proxy B to Server C.
Unknown to the client and the proxy, Server C may be able to accept a high load, but also has extreme high latency in those situations.</t>
        <t>RADIUS does not have link-layer signaling, so there is no way for the server to signal that it received the packet and is processing it.
Without any response, a client has to assume that the packet was lost and triggers a retransmission.
While RADIUS/TLS forbids retransmissions, since it is based on a reliable transport protocol, a RADIUS packet with an updated Acct-DelayTime attribute is not a retransmission per RADIUS definitions, and therefore permissable.
Since it is a new RADIUS packet, a new ID might also be allocated.</t>
        <t>Now, the following scenario might happen (simplified):</t>
        <ul spacing="normal">
          <li>
            <t>Client A sends an Accounting-Request with ID 1 to Proxy B via RADIUS/TLS</t>
          </li>
          <li>
            <t>Proxy B proxies the Accounting-Request and sends it with ID 101 to Server C via RADIUS/UDP</t>
          </li>
          <li>
            <t>Server C receives the Accounting-Request and adds the request to its processing queue.</t>
          </li>
          <li>
            <t>Client A did not receive a response and and after a second sends a new Accounting-Request with ID 2 and an Acct-Delay-Time of 1s to Proxy B</t>
          </li>
          <li>
            <t>Proxy B proxies the Request and sends it with ID 102 to Server C</t>
          </li>
          <li>
            <t>Proxy B also retransmits the Request with ID 101 to Server C, because it did not receive a response</t>
          </li>
          <li>
            <t>Server C receives retransmission of packet with ID 101, recognizes it as duplicate</t>
          </li>
          <li>
            <t>Server C also receives packet with ID 102, and adds it to the processing queue, since it is not a duplicate packet</t>
          </li>
          <li>
            <t>Client A still did not receive a response and sends a new Accounting-Request with ID 3 and Acct-Delay-Time of 2s to Proxy B</t>
          </li>
          <li>
            <t>Proxy B proxies the Request and sends it with ID 103 to Server C</t>
          </li>
          <li>
            <t>Proxy B also retransmits the Requests with ID 101 and ID 102 to Server C, because those requests did not receive a response</t>
          </li>
          <li>
            <t>Server C recognizes the requests with ID 101 and 102 as duplicates, but has to add 103 to its processing queue.</t>
          </li>
        </ul>
        <t>This scenario is simplified and includes only one accounting event, to give a basic understanding of the problem.
If the client wants to send updates for multiple accounting events, each of these updates will generate their own packets.
Especially in scenarios where the server is already under high load, this behavior contributes to congestion and could eventually lead to congestive collapse.</t>
        <t>One cause of the problem is that RADIUS does not have the possibility for a client to signal explicitly that it has given up on a request.
Implicitly, a client could indicate that it has given up by re-using the same ID, in which case a RADIUS proxy will also stop retransmissions on the next connection.
In the case of proxying from a reliable transports to unreliable transports (e.g., from RADIUS/TLS to RADIUS/UDP or RADIUS/DTLS), the proxy is in charge of retransmissions over the unreliable transport.
In the given scenario, re-using the same ID would stop the retransmission of the outdated packets.
But if there are multiple hops with mixed transports (e.g., first RADIUS/TLS, then RADIUS/UDP, then RADIUS/TLS again, then RADIUS/UDP again), this is not possible.
There is no guarantee that a proxy will also re-use the ID on the next hop, making it impossible for proxies down the path to reliably detect that the client has given up.
The first proxy would stop retransmissions because the client re-used the same ID, but the next two proxies have no way of knowing that the client has given up on the packet if the ID was not re-used, and will continue retransmitting the packet until it gets an answer or its timed out.
Until this happens, it cannot use the ID for another request, and if the ID space is exhausted, it must open a new connection to the server, or drop incoming requests.</t>
        <t>If instead the Accounting-Request packets used Event-Timestamp instead of Acct-Delay-Time, the packet content does not need to be updated, and it can be retransmitted using the well-defined retransmission rules.
Any retransmission will be treated as duplicate, and the server can process the event once and send one response after.</t>
        <t>Other solutions to this problem, e.g., adding a globally unique identifier to requests that can be used by implementations to detect duplicate packets based on content instead of link-layer headers, would require changes in the RADIUS protocol and are therefore out of scope for this document.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the original authors of RFC 6613, RFC 6614 and RFC 7360: Alan DeKok, Stefan Winter, Mike McCauley, Stig Venaas and Klaas Wierenga.</t>
      <t>Thanks to Arran Curdbard-Bell for text around keepalives and the Status-Server watchdog algorithm.</t>
      <t>Thanks to Alan DeKok for his constant review of this document over its whole process and his many text contributions, like text around forwarding issues between TCP and UDP based transports.</t>
      <t>Thanks to the following people for their feedback and suggested text changes: Alexander Clouter, Mark Donnelly, Fabian Mauchle, Valery Smyslov, Heikki Vatiainen, Paul Wouters.</t>
    </section>
    <section numbered="false" anchor="notes-to-rfc-editor">
      <name>Notes to RFC Editor</name>
      <t><em>This section is to be removed before publishing as an RFC.</em></t>
      <ul spacing="normal">
        <li>
          <t>The references to RFC8446 can be replaced with RFC9846 if I-D.ietf-tls-rfc8446bis is published before this document.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
