RFC 7930 EXPERIMENTAL RADIUS · TRANSPORT · EXPERIMENTAL

Larger RADIUS Packets: Larger Packets for RADIUS over TCP

Lets RADIUS over TCP carry packets far bigger than the old 4096-octet limit, with a new error packet for when they are too big.

On rfc-editor.org ↗
PUBLISHED
August 2016
AUTHORS
S. Hartman
STREAM
IETF
BUILDS ON
RFC 6613 — RADIUS over TCP
OLD MAXIMUM PACKET
4096 octets
NEW MAXIMUM PACKET
65535 octets
PROTOCOL-ERROR CODE
52
TOO-BIG ERROR-CAUSE
601
RESPONSE-LENGTH ATTRIBUTE
241.3
DOI
10.17487/RFC7930

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                        S. Hartman
Request for Comments: 7930                             Painless Security
Updates: 6613                                                August 2016
Category: Experimental
ISSN: 2070-1721


                   Larger Packets for RADIUS over TCP

Abstract

   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.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This document is a product of the Internet Engineering
   Task Force (IETF).  It represents the consensus of the IETF
   community.  It has received public review and has been approved for
   publication by the Internet Engineering Steering Group (IESG).  Not
   all documents approved by the IESG are a candidate for any level of
   Internet Standard; see Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7930.

Copyright Notice

   Copyright (c) 2016 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Requirements Notation . . . . . . . . . . . . . . . . . .   3
   2.  Changes to Packet Processing  . . . . . . . . . . . . . . . .   4
     2.1.  Status-Server Considerations  . . . . . . . . . . . . . .   4
   3.  Forward and Backward Compatibility  . . . . . . . . . . . . .   5
     3.1.  Rationale . . . . . . . . . . . . . . . . . . . . . . . .   6
     3.2.  Discovery . . . . . . . . . . . . . . . . . . . . . . . .   7
   4.  Protocol-Error Code . . . . . . . . . . . . . . . . . . . . .   7
   5.  Too Big Response  . . . . . . . . . . . . . . . . . . . . . .   7
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  10
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  10
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  10

1.  Introduction

   The experiment with Remote Authentication Dial-In User Service
   (RADIUS) over Transport Layer Security (TLS) [RFC6614] provides
   strong confidentiality and integrity for RADIUS [RFC2865].  This
   enhanced security has opened new opportunities for using RADIUS to
   convey additional authorization information.  As an example,
   [RFC7833] describes a mechanism for using RADIUS to carry Security
   Assertion Markup Language (SAML) messages in RADIUS.  Many attributes
   carried in these SAML messages will require confidentiality or
   integrity such as that provided by TLS.

   These new use cases involve carrying additional information in RADIUS
   packets.  The maximum packet length of 4096 octets is proving
   insufficient for some SAML messages and for other structures that may
   be carried in RADIUS.

   One approach is to fragment a RADIUS message across multiple packets
   at the RADIUS layer.  RADIUS fragmentation [RFC7499] provides a
   mechanism to split authorization information across multiple RADIUS
   messages.  That mechanism is necessary in order to split
   authorization information across existing unmodified proxies.

   However, there are some significant disadvantages to RADIUS
   fragmentation.  First, RADIUS is a lock-step protocol, and only one
   fragment can be in transit at a time as part of a given request.
   Also, there is no current mechanism to discover the Path Maximum
   Transmission Unit (PMTU) across the entire path that the fragment
   will travel.  As a result, fragmentation is likely both at the RADIUS
   layer and at the transport layer.  When TCP is used, much better
   transport characteristics can be achieved by fragmentation only at
   the TCP layer.  This specification provides a mechanism to achieve
   these better transport characteristics when TCP is used.  As part of
   this specification, a new RADIUS code is registered.

   This specification is published as an Experimental specification
   because the TCP extensions to RADIUS are currently experimental.  The
   need for this specification arises from operational experience with
   the TCP extensions.  However, this specification introduces no new
   experimental evaluation criteria beyond those in the base TCP
   specification; this specification can be evaluated along with that
   one for advancement on the Standards Track.

1.1.  Requirements Notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  Changes to Packet Processing

   The maximum length of a RADIUS message is increased from 4096 to
   65535.  A RADIUS Server implementing this specification MUST be able
   to receive a RADIUS packet of maximum length.  Servers MAY have a
   maximum size over which they choose to return an error, as discussed
   in Section 5, rather than processing a received packet; this size
   MUST be at least 4096 octets.

   Clients implementing this specification MUST be able to receive a
   RADIUS packet of maximum length; that is, clients MUST NOT close a
   TCP connection simply because a large packet is sent over it.
   Clients MAY include the Response-Length attribute defined in
   Section 6 to indicate the maximum size of a packet that they can
   successfully process.  Clients MAY silently discard a packet greater
   than some configured size; this size MUST be at least 4096 octets.
   Clients MUST NOT retransmit an unmodified request whose response is
   larger than the client can process, as subsequent responses will
   likely continue to be too large.

   Proxies MUST be able to receive a RADIUS packet of maximum length
   without closing the TCP connection.  Proxies SHOULD be able to
   process and forward packets of maximum length.  When a proxy receives
   a request over a transport with a 4096-octet maximum length and the
   proxy forwards that request over a transport with a larger maximum
   length, the proxy MUST include the Response-Length attribute with a
   value of 4096.

2.1.  Status-Server Considerations

   This section extends processing of Status-Server messages as
   described in Sections 4.1 and 4.2 of [RFC5997].

   Clients implementing this specification SHOULD include the Response-
   Length attribute in Status-Server requests.  Servers are already
   required to ignore unknown attributes received in this message.  By
   including the attribute, the client indicates how large of a response
   it can process to its Status-Server request.  It is very unlikely
   that a response to Status-Server is greater than 4096 octets.
   However, the client also indicates support for this specification,
   which triggers the server behavior below.

   If a server implementing this specification receives a Response-
   Length attribute in a Status-Server request, it MUST include a
   Response-Length attribute indicating the maximum size request it can
   process in its response to the Status-Server request.

3.  Forward and Backward Compatibility

   An implementation of [RFC6613] will silently discard any RADIUS
   packet larger than 4096 octets and will close the TCP connection.
   This section provides guidelines for interoperability with these
   implementations.  These guidelines are stated at the SHOULD level.
   In some environments, support for large packets will be important
   enough that roaming or other agreements will mandate their support.
   In these environments, all implementations might be required to
   support this specification, thus removing the need for
   interoperability with RFC 6613.  It is likely that these guidelines
   will be relaxed to the MAY level and support for this specification
   made a requirement if RADIUS over TLS and TCP are moved to the
   Standards Track in the future.

   Clients SHOULD provide configuration for the maximum size of a
   request sent to each server.  Servers SHOULD provide configuration
   for the maximum size of a response sent to each client.  If dynamic
   discovery mechanisms are supported, configuration SHOULD be provided
   for the default maximum size of RADIUS packets sent to clients and
   servers.  If an implementation provides more granular configuration
   for some classes of dynamic resources, then the implementation SHOULD
   also provide configuration of default maximum packet sizes at the
   same granularity.  As an example, an implementation that provided
   granular configuration for resources using a particular trust anchor
   or belonging to a particular roaming consortium SHOULD provide
   default packet size configuration at the same granularity.

   If a client sends a request larger than 4096 octets and the TCP
   connection is closed without a response, the client SHOULD treat the
   request as if a "Request Too Big" error (Section 5) specifying a
   maximum size of 4096 is received.  Clients or proxies sending
   multiple requests over a single TCP connection without waiting for
   responses SHOULD implement capability discovery as discussed in
   Section 3.2.

   By default, a server SHOULD NOT generate a response larger than 4096
   octets.  The Response-Length attribute MAY be included in a request
   to indicate that larger responses are acceptable.  Other attributes
   or configurations MAY be used as an indicator that large responses
   are likely to be acceptable.

   A proxy that implements both this specification and RADIUS
   fragmentation [RFC7499] SHOULD use RADIUS fragmentation when the
   following conditions are met:

   1.  A RADIUS packet is being forwarded towards a next hop whose
       configuration does not support a packet that large.

   2.  RADIUS fragmentation can be used for the packet in question.

3.1.  Rationale

   The interoperability challenge appears at first significant.  This
   specification proposes to introduce behavior where new
   implementations will fail to function with existing implementations.

   However, these capabilities are introduced to support new use cases.
   If an implementation has 10000 octets of attributes to send, it
   cannot, in general, trim down the response to something that can be
   sent.  Under this specification, a large packet would be generated
   that will be silently discarded by an existing implementation.
   Without this specification, no packet is generated because the
   required attributes cannot be sent.

   The biggest risk to interoperability would be if requests and
   responses are expanded to include additional information that is not
   strictly necessary.  So, avoiding creating situations where large
   packets are sent to existing implementations is mostly an operational
   matter.  Interoperability is most impacted when the size of packets
   in existing use cases is significantly increased and least impacted
   when large packets are used for new use cases where the deployment is
   likely to require updated RADIUS implementations.

   There is a special challenge for proxies or clients with a high
   request volume.  When an implementation of RFC 6613 receives a packet
   that is too large, it closes the connection and does not respond to
   any requests in process.  Such a client would lose requests and might
   find it difficult to distinguish "Request Too Big" situations from
   other failures.  In these cases, the discovery mechanism described in
   Section 3.2 can be used.

   Also, RFC 6613 is an experiment.  Part of running that experiment is
   to evaluate whether additional changes are required to RADIUS.  A
   lower bar for interoperability should apply to changes to
   Experimental protocols than Standard protocols.

   This specification provides good facilities to enable implementations
   to understand packet size when proxying to/from Standards Track UDP
   RADIUS.

3.2.  Discovery

   As discussed in Section 2.1, a client MAY send a Status-Server
   message to discover whether an authentication or accounting server
   supports this specification.  The client includes a Response-Length
   attribute; this signals the server to include a Response-Length
   attribute indicating the maximum packet size the server can process.
   In this one instance, Response-Length indicates the size of a request
   that can be processed rather than a response.

4.  Protocol-Error Code

   This document defines a new RADIUS code, 52, called Protocol-Error.
   This packet code may be used in response to any request packet, such
   as Access-Request, Accounting-Request, CoA-Request, or Disconnect-
   Request.  It is a response packet sent by a server to a client.  The
   packet indicates to the client that the server is unable to process
   the request for some reason.

   A Protocol-Error packet MUST contain an Original-Packet-Code
   attribute, along with an Error-Cause attribute.  Other attributes MAY
   be included if desired.  The Original-Packet-Code contains the code
   from the request that generated the protocol error so that clients
   can disambiguate requests with different codes and the same ID.
   Regardless of the original packet code, the RADIUS Server calculates
   the Message-Authenticator attribute as if the original packet were an
   Access-Request packet.  The identifier is copied from the original
   request.

   Clients processing Protocol-Error MUST ignore unknown or unexpected
   attributes.

   This RADIUS code is hop by hop.  Proxies MUST NOT forward a Protocol-
   Error packet they receive.

5.  Too Big Response

   When a RADIUS Server receives a request that is larger than can be
   processed, it generates a Protocol-Error response as follows:

      The code is Protocol-Error.

      The Response-Length attribute MUST be included and its value is
      the maximum size of request that will be processed.

      The Error-Cause attribute is included with a value of 601.

      The Original-Packet-Code attribute is copied from the request.

   Clients will not typically be able to adjust and resend requests when
   this error is received.  In some cases, the client can fall back to
   RADIUS fragmentation.  In other cases, this code will provide for
   better client error reporting and will avoid retransmitting requests
   guaranteed to fail.

6.  IANA Considerations

   A new RADIUS Packet Type Code is registered in the "RADIUS Packet
   Type Codes" registry discussed in Section 2.1 of RFC 3575 [RFC3575].
   The name is "Protocol-Error" and the code is 52.

   The following RADIUS attribute Type values [RFC3575] are assigned.
   The assignment rules in Section 10.3 of [RFC6929] are used.

   +----------------------+-----------+--------------------------------+
   | Name                 | Attribute | Description                    |
   +----------------------+-----------+--------------------------------+
   | Response-Length      | 241.3     | An attribute of type "integer" |
   |                      |           | per Section 5 of RFC 2865      |
   |                      |           | containing maximum response    |
   |                      |           | length.                        |
   |                      |           |                                |
   | Original-Packet-Code | 241.4     | An integer attribute           |
   |                      |           | containing the code from a     |
   |                      |           | packet resulting in a          |
   |                      |           | Protocol-Error response.       |
   +----------------------+-----------+--------------------------------+

   The Response-Length attribute MAY be included in any RADIUS request.
   In this context, it indicates the maximum length of a response the
   client is prepared to receive.  Values are between 4096 and 65535.
   The attribute MAY also be included in a response to a Status-Server
   message.  In this case, the attribute indicates the maximum size
   RADIUS request that is permitted.

   A new Error-Cause value is registered in the "Values for RADIUS
   Attribute 101, Error-Cause Attribute" registry at
   <http://www.iana.org/assignments/radius-types> for "Response Too Big"
   with value 601.  The range of valid values for the Error-Cause
   attribute in the "Values for RADIUS Attribute 101, Error-Cause
   Attribute" registry originally defined in RFC 5176 are extended.  Two
   new ranges are defined:

      6xx fatal errors committed by a RADIUS server

      7xx fatal errors committed by a RADIUS client

7.  Security Considerations

   This specification updates [RFC6613] and will be used with [RFC6614].
   When used over plain TCP, this specification creates new
   opportunities for an on-path attacker to impact availability.  These
   attacks can be entirely mitigated by using TLS.  If these attacks are
   acceptable, then this specification can be used over TCP without TLS.

8.  References

8.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC2865]  Rigney, C., Willens, S., Rubens, A., and W. Simpson,
              "Remote Authentication Dial In User Service (RADIUS)",
              RFC 2865, DOI 10.17487/RFC2865, June 2000,
              <http://www.rfc-editor.org/info/rfc2865>.

   [RFC3575]  Aboba, B., "IANA Considerations for RADIUS (Remote
              Authentication Dial In User Service)", RFC 3575,
              DOI 10.17487/RFC3575, July 2003,
              <http://www.rfc-editor.org/info/rfc3575>.

   [RFC5997]  DeKok, A., "Use of Status-Server Packets in the Remote
              Authentication Dial In User Service (RADIUS) Protocol",
              RFC 5997, DOI 10.17487/RFC5997, August 2010,
              <http://www.rfc-editor.org/info/rfc5997>.

   [RFC6613]  DeKok, A., "RADIUS over TCP", RFC 6613,
              DOI 10.17487/RFC6613, May 2012,
              <http://www.rfc-editor.org/info/rfc6613>.

   [RFC6614]  Winter, S., McCauley, M., Venaas, S., and K. Wierenga,
              "Transport Layer Security (TLS) Encryption for RADIUS",
              RFC 6614, DOI 10.17487/RFC6614, May 2012,
              <http://www.rfc-editor.org/info/rfc6614>.

   [RFC6929]  DeKok, A. and A. Lior, "Remote Authentication Dial In User
              Service (RADIUS) Protocol Extensions", RFC 6929,
              DOI 10.17487/RFC6929, April 2013,
              <http://www.rfc-editor.org/info/rfc6929>.

8.2.  Informative References

   [RFC7499]  Perez-Mendez, A., Ed., Marin-Lopez, R., Pereniguez-Garcia,
              F., Lopez-Millan, G., Lopez, D., and A. DeKok, "Support of
              Fragmentation of RADIUS Packets", RFC 7499,
              DOI 10.17487/RFC7499, April 2015,
              <http://www.rfc-editor.org/info/rfc7499>.

   [RFC7833]  Howlett, J., Hartman, S., and A. Perez-Mendez, Ed., "A
              RADIUS Attribute, Binding, Profiles, Name Identifier
              Format, and Confirmation Methods for the Security
              Assertion Markup Language (SAML)", RFC 7833,
              DOI 10.17487/RFC7833, May 2016,
              <http://www.rfc-editor.org/info/rfc7833>.

Acknowledgements

   Sam Hartman's time on this document was funded by JANET as part of
   Project Moonshot.

   Alan DeKok provided valuable review and text for the Protocol-Error
   packet code.

   Alejandro Perez Mendez provided valuable review comments.

Author's Address

   Sam Hartman
   Painless Security

   Email: hartmans-ietf@mit.edu

AI ELI5

On this page
PROBLEMRADIUS over TLS is being used to carry large structures such as SAML messages, and the 4096-octet maximum packet size is too small for some of them.
MECHANISMThe maximum RADIUS packet length is raised to 65535 for RADIUS over TCP. A Response-Length attribute lets peers state how big a packet they can handle, and a new Protocol-Error packet (code 52) reports a request that is too big.
THE CATCHLarge packets can travel in one RADIUS message instead of being split at the RADIUS layer, but older RFC 6613 implementations drop them and close the connection, so deployments must manage the mismatch.

§1Why RADIUS Needs Bigger Packets

RADIUS over TLS (RFC 6614) gives RADIUS strong confidentiality and integrity. That has opened new uses, such as carrying SAML messages in RADIUS (RFC 7833). Some of these messages do not fit in the 4096-octet maximum packet length.

RADIUS fragmentation (RFC 7499) is one answer, but the RFC lists drawbacks. RADIUS is lock-step, so only one fragment can be in transit at a time. There is also no way to discover the path MTU across the whole path, so fragmentation is likely at both the RADIUS and the transport layer. When TCP is used, it is better to fragment only at the TCP layer.

This document is Experimental because the TCP extensions to RADIUS are Experimental. It updates RFC 6613 and introduces no new evaluation criteria beyond that base specification.

Some messages are too big for the old envelope. Cutting them into pieces and sending one piece at a time is slow, so it is better to use a bigger envelope.

§2Changes to Packet Processing

The maximum length of a RADIUS message goes from 4096 to 65535. A server implementing this specification MUST be able to receive a packet of maximum length. It MAY choose a size limit above which it returns an error, but that limit MUST be at least 4096 octets.

Clients MUST be able to receive a packet of maximum length and MUST NOT close a TCP connection just because a large packet arrives. A client MAY include the Response-Length attribute to say how large a packet it can process. It MAY silently discard a packet over a configured size, which must be at least 4096 octets. It MUST NOT retransmit an unmodified request whose response was too large for it.

Proxies MUST be able to receive a maximum-length packet without closing the connection and SHOULD be able to forward one. When a proxy receives a request over a transport with a 4096-octet limit and forwards it over a transport with a larger limit, it MUST include Response-Length with a value of 4096.

For Status-Server messages, clients SHOULD include Response-Length. A server that sees it MUST include a Response-Length in its reply, giving the largest request it can process. This doubles as a discovery mechanism.

The rule changes from 'no letters bigger than a postcard' to 'letters up to a big box are fine'. Everyone has to promise not to hang up the phone just because a big one arrives, and they can tell each other how big is too big.

STATUS-SERVER DISCOVERY OF LARGE-PACKET SUPPORT
ClientServer
  1. Status-Server + Response-LengthThe client states how large a response it can process.
  2. Reply + Response-LengthThe server states the largest request it can process.

§3Compatibility With Older Implementations

An implementation of RFC 6613 silently discards any packet larger than 4096 octets and closes the TCP connection. The guidelines in this section are stated at the SHOULD level, because some environments, such as roaming agreements, may require everyone to support large packets.

  • Clients SHOULD be configurable with a maximum request size per server, and servers with a maximum response size per client.
  • If a client sends a request larger than 4096 octets and the connection closes without a response, it SHOULD act as if a Request Too Big error with a maximum of 4096 had been received.
  • By default, a server SHOULD NOT generate a response larger than 4096 octets, unless the request carried Response-Length or another indicator that larger responses are acceptable.
  • A proxy that supports both this document and RADIUS fragmentation SHOULD fragment when the next hop cannot take a packet that large and fragmentation can be used.

The RFC argues that the risk is acceptable. If an implementation has 10000 octets of attributes to send, without this specification no packet is generated at all. Busy clients and proxies face a special problem, because a closed connection loses all requests in flight, so they SHOULD use the Status-Server discovery.

Old machines panic and hang up when a big letter arrives. So new machines should ask first, and by default keep to small letters unless the other side says big ones are fine.

§4The Protocol-Error Packet and Too Big Response

This document defines a new RADIUS code, 52, called Protocol-Error. A server may send it in response to any request, such as Access-Request, Accounting-Request, CoA-Request or Disconnect-Request, to say it cannot process the request. It MUST contain an Original-Packet-Code attribute and an Error-Cause attribute. The identifier is copied from the request. The code is hop by hop, so proxies MUST NOT forward it.

When a server receives a request larger than it can process, it replies with Protocol-Error, a Response-Length giving the maximum request size it will process, an Error-Cause of 601, and the original packet code copied from the request.

Clients usually cannot shrink and resend such a request. In some cases they can fall back to RADIUS fragmentation. Otherwise the error gives better reporting and avoids retransmitting requests that are guaranteed to fail.

If the letter is too big, the receiver sends back a note that says 'too big, the most I can take is this much'. Then you stop sending it over and over.

§5IANA Registrations

A new packet type, Protocol-Error with code 52, is registered in the RADIUS Packet Type Codes registry. Two attributes are assigned using the rules of RFC 6929: Response-Length (241.3, an integer holding the maximum length) and Original-Packet-Code (241.4, an integer holding the code of the packet that caused the error).

In a request, Response-Length means the maximum response length the client will accept, with values between 4096 and 65535. In a response to Status-Server, it means the maximum request size that is permitted.

A new Error-Cause value, 601 for Response Too Big, is registered. The Error-Cause range is extended with two new ranges: 6xx for fatal errors committed by a RADIUS server and 7xx for fatal errors committed by a RADIUS client.

The new codes and labels get written into the official list, so everyone uses the same numbers for 'too big' and 'how big can you take'.

NEW CODES AND ATTRIBUTES (RFC 7930)
  • 52Protocol-Error — New RADIUS packet code sent by a server when it cannot process a request.
  • 241.3Response-Length — Integer: maximum length of a response, or in a Status-Server reply the maximum request size.
  • 241.4Original-Packet-Code — Integer: the code of the packet that caused a Protocol-Error.
  • 601Response Too Big — New Error-Cause value used in the Too Big Response.

§6Security Considerations

This specification updates RFC 6613 and is meant to be used with RFC 6614. Over plain TCP, it creates new opportunities for an on-path attacker to affect availability. These attacks can be entirely mitigated by using TLS. If they are acceptable, the specification can be used over TCP without TLS.

Without a protective tunnel, someone in the middle could mess with the size notes and stop the system from working. Using the protective tunnel (TLS) stops that.

§7References