summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc6158.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6158.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6158.txt')
-rw-r--r--doc/rfc/rfc6158.txt2131
1 files changed, 2131 insertions, 0 deletions
diff --git a/doc/rfc/rfc6158.txt b/doc/rfc/rfc6158.txt
new file mode 100644
index 0000000..6557f4e
--- /dev/null
+++ b/doc/rfc/rfc6158.txt
@@ -0,0 +1,2131 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) A. DeKok, Ed.
+Request for Comments: 6158 FreeRADIUS
+BCP: 158 G. Weber
+Category: Best Current Practice Individual Contributor
+ISSN: 2070-1721 March 2011
+
+
+
+ RADIUS Design Guidelines
+
+Abstract
+
+ This document provides guidelines for the design of attributes used
+ by the Remote Authentication Dial In User Service (RADIUS) protocol.
+ It is expected that these guidelines will prove useful to authors and
+ reviewers of future RADIUS attribute specifications, within the IETF
+ as well as other Standards Development Organizations (SDOs).
+
+Status of This Memo
+
+ This memo documents an Internet Best Current Practice.
+
+ 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). Further information on
+ BCPs is available in Section 2 of RFC 5741.
+
+ 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/rfc6158.
+
+Copyright Notice
+
+ Copyright (c) 2011 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.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 1]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ This document may contain material from IETF Documents or IETF
+ Contributions published or made publicly available before November
+ 10, 2008. The person(s) controlling the copyright in some of this
+ material may not have granted the IETF Trust the right to allow
+ modifications of such material outside the IETF Standards Process.
+ Without obtaining an adequate license from the person(s) controlling
+ the copyright in such materials, this document may not be modified
+ outside the IETF Standards Process, and derivative works of it may
+ not be created outside the IETF Standards Process, except to format
+ it for publication as an RFC or to translate it into languages other
+ than English.
+
+Table of Contents
+
+ 1. Introduction ....................................................3
+ 1.1. Terminology ................................................4
+ 1.2. Requirements Language ......................................4
+ 1.3. Applicability ..............................................5
+ 1.3.1. Reviews .............................................5
+ 2. Guidelines ......................................................6
+ 2.1. Data Types .................................................8
+ 2.2. Vendor Space ...............................................9
+ 2.3. Service Definitions and RADIUS .............................9
+ 2.4. Translation of Vendor Specifications ......................10
+ 3. Rationale ......................................................11
+ 3.1. RADIUS Operational Model ..................................11
+ 3.2. Data Model Issues .........................................14
+ 3.2.1. Issues with Definitions of Types ...................15
+ 3.2.2. Tagging Mechanism ..................................16
+ 3.2.3. Complex Data Types .................................16
+ 3.2.4. Complex Data Type Exceptions .......................18
+ 3.3. Vendor Space ..............................................19
+ 3.3.1. Interoperability Considerations ....................20
+ 3.3.2. Vendor Allocations .................................20
+ 3.3.3. SDO Allocations ....................................20
+ 3.4. Polymorphic Attributes ....................................21
+ 4. IANA Considerations ............................................22
+ 5. Security Considerations ........................................22
+ 5.1. New Data Types and Complex Attributes .....................23
+ 6. References .....................................................24
+ 6.1. Normative References ......................................24
+ 6.2. Informative References ....................................24
+ Appendix A. Design Guidelines Checklist ..........................27
+ A.1. Types Matching the RADIUS Data Model ......................27
+ A.1.1. Transport of Basic Data Types ........................27
+ A.1.2. Transport of Authentication and Security Data ........27
+ A.1.3. Opaque Data Types ....................................27
+ A.1.4. Pre-existing Data Types ..............................28
+
+
+
+DeKok & Weber Best Current Practice [Page 2]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ A.2. Improper Data Types .......................................28
+ A.2.1. Simple Data Types ....................................28
+ A.2.2. More Complex Data Types ..............................29
+ A.3. Vendor-Specific Formats ...................................29
+ A.4. Changes to the RADIUS Operational Model ...................30
+ A.5. Allocation of Attributes ..................................31
+ Appendix B. Complex Attributes ...................................32
+ B.1. CHAP-Password .............................................32
+ B.2. CHAP-Challenge ............................................32
+ B.3. Tunnel-Password ...........................................33
+ B.4. ARAP-Password .............................................33
+ B.5. ARAP-Features .............................................34
+ B.6. Connect-Info ..............................................34
+ B.7. Framed-IPv6-Prefix ........................................35
+ B.8. Egress-VLANID .............................................36
+ B.9. Egress-VLAN-Name ..........................................37
+ B.10. Digest-* .................................................37
+ Acknowledgments ...................................................37
+
+1. Introduction
+
+ This document provides guidelines for the design of Remote
+ Authentication Dial In User Service (RADIUS) attributes within the
+ IETF as well as within other Standards Development Organizations
+ (SDOs). By articulating RADIUS design guidelines, it is hoped that
+ this document will encourage the development and publication of high-
+ quality RADIUS attribute specifications.
+
+ However, the advice in this document will not be helpful unless it is
+ put to use. As with "Guidelines for Authors and Reviewers of MIB
+ Documents" [RFC4181], it is expected that authors will check their
+ document against the guidelines in this document prior to publication
+ or requesting review (such as an "Expert Review" described in
+ [RFC3575]). Similarly, it is expected that this document will be
+ used by reviewers (such as WG participants or the Authentication,
+ Authorization, and Accounting (AAA) Doctors [DOCTORS]), resulting in
+ an improvement in the consistency of reviews.
+
+ In order to meet these objectives, this document needs to cover not
+ only the science of attribute design but also the art. Therefore, in
+ addition to covering the most frequently encountered issues, this
+ document explains some of the considerations motivating the
+ guidelines. These considerations include complexity trade-offs that
+ make it difficult to provide "hard and fast" rules for attribute
+ design. This document explains those trade-offs through reviews of
+ current attribute usage.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 3]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ The rest of the document is organized as follows. Section 1
+ discusses the applicability of the guidelines and defines a
+ recommended review process for RADIUS specifications. Section 2
+ defines the design guidelines in terms of what is "RECOMMENDED" and
+ "NOT RECOMMENDED". Section 3 gives a longer explanation of the
+ rationale behind the guidelines given in the previous section.
+ Appendix A repeats the guidelines in a "checklist" format. Appendix
+ B discusses previously defined attributes that do not follow the
+ guidelines.
+
+ Authors of new RADIUS specifications can be compliant with the design
+ guidelines by working through the checklists given in Appendix A.
+ Reviewers of RADIUS specifications are expected to be familiar with
+ the entire document.
+
+1.1. Terminology
+
+ This document uses the following terms:
+
+ Network Access Server (NAS)
+ A device that provides an access service for a user to a network.
+
+ RADIUS server
+ A RADIUS authentication, authorization, and accounting (AAA)
+ server is an entity that provides one or more AAA services to a
+ NAS.
+
+ Standard space
+ Codes in the RADIUS Attribute Type Space that are allocated by
+ IANA and that follow the format defined in Section 5 of RFC 2865
+ [RFC2865].
+
+ Vendor space
+ The contents of the Vendor-Specific Attribute (VSA), as defined in
+ [RFC2865], Section 5.26. These attributes provide a unique
+ attribute type space in the "String" field for each vendor
+ (identified by the Vendor-Type field), which they can self-
+ allocate.
+
+1.2. Requirements Language
+
+ 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].
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 4]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+1.3. Applicability
+
+ The advice in this document applies to RADIUS attributes used to
+ encode service-provisioning, authentication, or accounting data based
+ on the attribute encodings and data formats defined in RFC 2865
+ [RFC2865], RFC 2866 [RFC2866], and subsequent RADIUS RFCs.
+
+ Since this document represents a Best Current Practice, it does not
+ update or deprecate existing standards. As a result, uses of the
+ terms "MUST" and "MUST NOT" are limited to requirements already
+ present in existing documents.
+
+ It is RECOMMENDED that these guidelines be followed for all new
+ RADIUS specifications, whether they originate from a vendor, an SDO,
+ or the IETF. Doing so will ensure the widest possible applicability
+ and interoperability of the specifications, while requiring minimal
+ changes to existing systems. In particular, it is expected that
+ RADIUS specifications requesting allocation within the standard space
+ will follow these guidelines and will explain why this is not
+ possible if they cannot.
+
+ However, there are situations in which vendors or SDOs can choose not
+ to follow these guidelines without major consequences. As noted in
+ Section 5.26 of [RFC2865], Vendor-Specific Attributes (VSAs) are
+ "available to allow vendors to support their own extended Attributes
+ not suitable for general usage". Where vendors or SDOs develop
+ specifications "not suitable for general usage", limited
+ interoperability and inability to use existing implementations may be
+ acceptable, and, in these situations, vendors and SDOs MAY choose not
+ to conform to these guidelines.
+
+ Note that the RADEXT WG is currently (as of 2011) involved in
+ developing updates to RADIUS. Those updates will provide their own
+ usage guidelines that may modify some of the guidelines defined here,
+ such as defining new data types, practices, etc.
+
+ RADIUS protocol changes, or specification of attributes (such as
+ Service-Type), that can, in effect, provide new RADIUS commands
+ require greater expertise and deeper review, as do changes to the
+ RADIUS operational model. As a result, such changes are outside the
+ scope of this document and MUST NOT be undertaken outside the IETF.
+
+1.3.1. Reviews
+
+ For specifications utilizing attributes within the standard space,
+ conformance with the design guidelines in this document is expected
+ unless a good case can be made for an exception. Reviewers SHOULD
+ use the design guidelines as a review checklist.
+
+
+
+DeKok & Weber Best Current Practice [Page 5]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ While not required, IETF review may also be beneficial for
+ specifications utilizing the vendor space. Experience has shown that
+ attributes not originally designed for general usage can subsequently
+ garner wide-spread deployment. An example is the Vendor-Specific
+ Attributes defined in [RFC2548], which have been widely implemented
+ within IEEE 802.11 Access Points.
+
+ In order to assist in the development of specifications conforming to
+ these guidelines, authors can request review by sending an email to
+ the AAA Doctors [DOCTORS] or equivalent mailing list. The IETF
+ Operations & Management Area Directors will then arrange for the
+ review to be completed and posted to the AAA Doctors mailing list
+ [DOCTORS], RADEXT WG mailing list, or other IETF mailing lists.
+ Since reviews are handled by volunteers, responses are provided on a
+ best-effort basis, with no service-level guarantees. Authors are
+ encouraged to seek review as early as possible, so as to avoid
+ potential delays.
+
+ As reviewers require access to the specification, vendors and SDOs
+ are encouraged to make it publicly available. Where the RADIUS
+ specification is embedded within a larger document that cannot be
+ made public, the RADIUS attribute and value definitions can be made
+ available on a public web site or can be published as an
+ Informational RFC, as with [RFC4679].
+
+ The review process requires neither allocation of attributes within
+ the standard space nor publication of an RFC. Requiring SDOs or
+ vendors to rehost VSAs into the standard space solely for the purpose
+ of obtaining review would put pressure on the standard space and may
+ be harmful to interoperability since it would create two ways to
+ provision the same service. Rehosting may also require changes to
+ the RADIUS data model, which will affect implementations that do not
+ intend to support the SDO or vendor specifications.
+
+ Similarly, vendors are encouraged to make their specifications
+ publicly available, for maximum interoperability. However, it is not
+ necessary for a vendor to request publication of a VSA specification
+ as an RFC.
+
+2. Guidelines
+
+ The RADIUS protocol as defined in [RFC2865] and [RFC2866] uses
+ elements known as attributes in order to represent authentication,
+ authorization, and accounting data.
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 6]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ Unlike Simple Network Management Protocol (SNMP), first defined in
+ [RFC1157] and [RFC1155], RADIUS does not define a formal data
+ definition language. The data type of RADIUS attributes is not
+ transported on the wire. Rather, the data type of a RADIUS attribute
+ is fixed when an attribute is defined. Based on the RADIUS attribute
+ type code, RADIUS clients and servers can determine the data type
+ based on pre-configured entries within a data dictionary.
+
+ To explain the implications of this early RADIUS design decision, we
+ distinguish two kinds of data types, namely "basic" and "complex".
+ Basic data types use one of the existing RADIUS data types as defined
+ in Section 2.1, encapsulated in a [RFC2865] RADIUS attribute or in a
+ [RFC2865] RADIUS VSA. All other data formats are "complex types".
+
+ RADIUS attributes can be classified into one of three broad
+ categories:
+
+ * Attributes that are of interest to a single vendor, e.g., for a
+ product or product line. Minimal cross-vendor interoperability
+ is needed.
+
+ Vendor-Specific Attributes (VSAs) are appropriate for use in
+ this situation. Code-point allocation is managed by the vendor
+ with the vendor space defined by their Private Enterprise Number
+ (PEN), as given in the Vendor-Id field.
+
+ * Attributes that are of interest to an industry segment, where an
+ SDO defines the attributes for that industry. Multi-vendor
+ interoperability within an industry segment is expected.
+
+ Vendor-Specific Attributes (VSAs) MUST be used. Code-point
+ allocation is managed by the SDO with the vendor space defined
+ by the SDO's PEN rather than the PEN of an individual vendor.
+
+ * Attributes that are of broad interest to the Internet community.
+ Multi-vendor interoperability is expected.
+
+ Attributes within the standard space are appropriate for this
+ purpose and are allocated via IANA as described in [RFC3575].
+ Since the standard space represents a finite resource, and is
+ the only attribute space available for use by IETF working
+ groups, vendors, and SDOs are encouraged to utilize the vendor
+ space rather than request allocation of attributes from the
+ standard space. Usage of attribute type codes reserved for
+ standard attributes is considered antisocial behavior and is
+ strongly discouraged.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 7]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+2.1. Data Types
+
+ RADIUS defines a limited set of data types, defined as "basic data
+ types". The following data qualifies as "basic data types":
+
+ * 32-bit unsigned integer in network byte order.
+
+ * Enumerated data types, represented as a 32-bit unsigned integer
+ with a list of name to value mappings (e.g., Service-Type).
+
+ * IPv4 address in network byte order.
+
+ * Time as a 32-bit unsigned value in network byte order and in
+ seconds since 00:00:00 UTC, January 1, 1970.
+
+ * IPv6 address in network byte order.
+
+ * Interface-Id (8-octet string in network byte order).
+
+ * IPv6 prefix.
+
+ * String (i.e., binary data), totaling 253 octets or less in
+ length. This includes the opaque encapsulation of data
+ structures defined outside of RADIUS. See also Appendix A.1.3
+ for additional discussion.
+
+ * UTF-8 text [RFC3629], totaling 253 octets or less in length.
+
+ Note that the length limitations for VSAs of type String and Text are
+ less than 253 octets, due to the additional overhead of the Vendor-
+ Specific encoding.
+
+ The following data also qualifies as "basic data types":
+
+ * Attributes grouped into a logical container using the [RFC2868]
+ tagging mechanism. This approach is NOT RECOMMENDED (see
+ Section 3.2.2) but is permissible where the alternatives are
+ worse.
+
+ * Attributes requiring the transport of more than 253 octets of
+ Text or String data. This includes the opaque encapsulation of
+ data structures defined outside of RADIUS, e.g., EAP-Message.
+
+ All other data formats (including nested attributes) are defined to
+ be "complex data types" and are NOT RECOMMENDED for normal use.
+ Complex data types MAY be used in situations where they reduce
+ complexity in non-RADIUS systems or where using the basic data types
+ would be awkward (such as where grouping would be required in order
+
+
+
+DeKok & Weber Best Current Practice [Page 8]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ to link related attributes). Since there are no "hard and fast"
+ rules for where complexity is best located, each situation has to be
+ decided on a case-by-case basis. Examples of this trade-off are
+ discussed in Appendix B. Where a complex data type is selected, an
+ explanation SHOULD be offered as to why this was necessary.
+
+2.2. Vendor Space
+
+ The Vendor space is defined to be the contents of the Vendor-Specific
+ Attribute ([RFC2865], Section 5.26) where the Vendor-Id defines the
+ space for a particular vendor, and the contents of the "String" field
+ define a unique attribute type space for that vendor. As discussed
+ there, it is intended for vendors and SDOs to support their own
+ attributes not suitable for general use.
+
+ While the encoding of attributes within the vendor space is under the
+ control of vendors and SDOs, following the guidelines described here
+ is advantageous since it enables maximum interoperability with
+ minimal changes to existing systems.
+
+ For example, RADIUS server support for new attributes using "basic
+ data types" can typically be accomplished by editing a RADIUS
+ dictionary, whereas "complex data types" typically require RADIUS
+ server code changes, which can add complexity and delays in
+ implementation.
+
+ Vendor RADIUS Attribute specifications SHOULD self-allocate
+ attributes from the vendor space rather than request an allocation
+ from within the standard space.
+
+ VSA encodings that do not follow the [RFC2865], Section 5.26 encoding
+ scheme are NOT RECOMMENDED. Although [RFC2865] does not mandate it,
+ implementations commonly assume that the Vendor Id can be used as a
+ key to determine the on-the-wire encoding of a VSA. Vendors
+ therefore SHOULD NOT use multiple encodings for VSAs that are
+ associated with a particular Vendor Id. A vendor wishing to use
+ multiple VSA encodings SHOULD request one Vendor Id for each VSA
+ encoding that they will use.
+
+2.3. Service Definitions and RADIUS
+
+ RADIUS specifications define how an existing service or protocol can
+ be provisioned using RADIUS, usually via the Service-Type Attribute.
+ Therefore, it is expected that a RADIUS attribute specification will
+ reference documents defining the protocol or service to be
+ provisioned. Within the IETF, a RADIUS attribute specification
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 9]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ SHOULD NOT be used to define the protocol or service being
+ provisioned. New services using RADIUS for provisioning SHOULD be
+ defined elsewhere and referenced in the RADIUS specification.
+
+ New attributes, or new values of existing attributes, SHOULD NOT be
+ used to define new RADIUS commands. RADIUS attributes are intended
+ to:
+
+ * authenticate users
+
+ * authorize users (i.e., service provisioning or changes to
+ provisioning)
+
+ * account for user activity (i.e., logging of session activity)
+
+ Requirements for allocation of new commands (i.e., the Code field in
+ the packet header) and new attributes within the standard space are
+ described in [RFC3575], Section 2.1.
+
+2.4. Translation of Vendor Specifications
+
+ [RFC2865], Section 5.26 defines Vendor-Specific Attributes as
+ follows:
+
+ This Attribute is available to allow vendors to support their own
+ extended Attributes not suitable for general usage. It MUST NOT
+ affect the operation of the RADIUS protocol.
+
+ Servers not equipped to interpret the vendor-specific information
+ sent by a client MUST ignore it (although it may be reported).
+ Clients which do not receive desired vendor-specific information
+ SHOULD make an attempt to operate without it, although they may do
+ so (and report they are doing so) in a degraded mode.
+
+ The limitation on changes to the RADIUS protocol effectively
+ prohibits VSAs from changing fundamental aspects of RADIUS operation,
+ such as modifying RADIUS packet sequences or adding new commands.
+ However, the requirement for clients and servers to be able to
+ operate in the absence of VSAs has proven to be less of a constraint
+ since it is still possible for a RADIUS client and server to mutually
+ indicate support for VSAs, after which behavior expectations can be
+ reset.
+
+ Therefore, RFC 2865 provides considerable latitude for development of
+ new attributes within the vendor space, while prohibiting development
+ of protocol variants. This flexibility implies that RADIUS
+ attributes can often be developed within the vendor space without
+ loss (and possibly even with gain) in functionality.
+
+
+
+DeKok & Weber Best Current Practice [Page 10]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ As a result, translation of RADIUS attributes developed within the
+ vendor space into the standard space may provide only modest
+ benefits, while accelerating the exhaustion of the standard space.
+ We do not expect that all RADIUS attribute specifications requiring
+ interoperability will be developed within the IETF, and allocated
+ from the standard space. A more scalable approach is to recognize
+ the flexibility of the vendor space, while working toward
+ improvements in the quality and availability of RADIUS attribute
+ specifications, regardless of where they are developed.
+
+ It is therefore NOT RECOMMENDED that specifications intended solely
+ for use by a vendor or SDO be translated into the standard space.
+
+3. Rationale
+
+ This section outlines the rationale behind the above recommendations.
+
+3.1. RADIUS Operational Model
+
+ The RADIUS operational model includes several assumptions:
+
+ * The RADIUS protocol is stateless.
+
+ * Provisioning of services is not possible within an Access-Reject
+ or Disconnect-Request.
+
+ * There is a distinction between authorization checks and user
+ authentication.
+
+ * The protocol provides for authentication and integrity
+ protection of packets.
+
+ * The RADIUS protocol is a Request/Response protocol.
+
+ * The protocol defines packet length restrictions.
+
+ While RADIUS server implementations may keep state, the RADIUS
+ protocol is stateless, although information may be passed from one
+ protocol transaction to another via the State Attribute. As a
+ result, documents that require stateful protocol behavior without use
+ of the State Attribute are inherently incompatible with RADIUS as
+ defined in [RFC2865] and MUST be redesigned. See [RFC5080], Section
+ 2.1.1 for additional discussion surrounding the use of the State
+ Attribute.
+
+ As noted in [RFC5080], Section 2.6, the intent of an Access-Reject is
+ to deny access to the requested service. As a result, RADIUS does
+ not allow the provisioning of services within an Access-Reject or
+
+
+
+DeKok & Weber Best Current Practice [Page 11]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ Disconnect-Request. Documents that include provisioning of services
+ within an Access-Reject or Disconnect-Request are inherently
+ incompatible with RADIUS and need to be redesigned.
+
+ [RFC5176], Section 3 notes the following:
+
+ A Disconnect-Request MUST contain only NAS and session
+ identification attributes. If other attributes are included in a
+ Disconnect-Request, implementations MUST send a Disconnect-NAK; an
+ Error-Cause Attribute with value "Unsupported Attribute" MAY be
+ included.
+
+ As a result, documents that include provisioning of services within a
+ Disconnect-Request are inherently incompatible with RADIUS and need
+ to be redesigned.
+
+ As noted in [RFC5080], Section 2.1.1, a RADIUS Access-Request may not
+ contain user authentication attributes or a State Attribute linking
+ the Access-Request to an earlier user authentication. Such an
+ Access-Request, known as an authorization check, provides no
+ assurance that it corresponds to a live user. RADIUS specifications
+ defining attributes containing confidential information (such as
+ Tunnel-Password) should be careful to prohibit such attributes from
+ being returned in response to an authorization check. Also,
+ [RFC5080], Section 2.1.1 notes that authentication mechanisms need to
+ tie a sequence of Access-Request/Access-Challenge packets together
+ into one authentication session. The State Attribute is RECOMMENDED
+ for this purpose.
+
+ While [RFC2865] did not require authentication and integrity
+ protection of RADIUS Access-Request packets, subsequent
+ authentication mechanism specifications, such as RADIUS/EAP [RFC3579]
+ and Digest Authentication [RFC5090], have mandated authentication and
+ integrity protection for certain RADIUS packets. [RFC5080], Section
+ 2.1.1 makes this behavior RECOMMENDED for all Access-Request packets,
+ including Access-Request packets performing authorization checks. It
+ is expected that specifications for new RADIUS authentication
+ mechanisms will continue this practice.
+
+ The RADIUS protocol as defined in [RFC2865] is a request-response
+ protocol spoken between RADIUS clients and servers. A single RADIUS
+ request packet ([RFC2865], [RFC2866], or [RFC5176]) will solicit in
+ response at most a single response packet, sent to the IP address and
+ port of the RADIUS client that originated the request. Changes to
+ this model are likely to require major revisions to existing
+ implementations, and this practice is NOT RECOMMENDED.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 12]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ The Length field in the RADIUS packet header is defined in [RFC2865]
+ Section 3. It is noted there that the maximum length of a RADIUS
+ packet is 4096 octets. As a result, attribute designers SHOULD NOT
+ assume that a RADIUS implementation can successfully process RADIUS
+ packets larger than 4096 octets.
+
+ Even when packets are less than 4096 octets, they may be larger than
+ the Path Maximum Transmission Unit (PMTU). Any packet larger than
+ the PMTU will be fragmented, making communications more brittle as
+ firewalls and filtering devices often discard fragments. Transport
+ of fragmented UDP packets appears to be a poorly tested code path on
+ network devices. Some devices appear to be incapable of transporting
+ fragmented UDP packets, making it difficult to deploy RADIUS in a
+ network where those devices are deployed. We RECOMMEND that RADIUS
+ messages be kept as small possible.
+
+ If a situation is envisaged where it may be necessary to carry
+ authentication, authorization, or accounting data in a packet larger
+ than 4096 octets, then one of the following approaches is
+ RECOMMENDED:
+
+ 1. Utilization of a sequence of packets.
+ For RADIUS authentication, a sequence of Access-
+ Request/Access-Challenge packets would be used. For this to
+ be feasible, attribute designers need to enable inclusion of
+ attributes that can consume considerable space within Access-
+ Challenge packets. To maintain compatibility with existing
+ NASes, either the use of Access-Challenge packets needs to be
+ permissible (as with RADIUS/EAP, defined in [RFC3579]) or
+ support for receipt of an Access-Challenge needs to be
+ indicated by the NAS (as in RADIUS Location [RFC5580]). Also,
+ the specification needs to clearly describe how attribute
+ splitting is to be signaled and how attributes included within
+ the sequence are to be interpreted, without requiring stateful
+ operation. Unfortunately, previous specifications have not
+ always exhibited the required foresight. For example, even
+ though very large filter rules are conceivable, the NAS-
+ Filter-Rule Attribute defined in [RFC4849] is not permitted in
+ an Access-Challenge packet, nor is a mechanism specified to
+ allow a set of NAS-Filter-Rule Attributes to be split across
+ an Access-Request/Access-Challenge sequence.
+
+ In the case of RADIUS accounting, transporting large amounts
+ of data would require a sequence of Accounting-Request
+ packets. This is a non-trivial change to RADIUS, since RADIUS
+ accounting clients would need to be modified to split the
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 13]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ attribute stream across multiple Accounting-Requests, and
+ billing servers would need to be modified to reassemble and
+ interpret the attribute stream.
+
+ 2. Utilization of names rather than values.
+ Where an attribute relates to a policy that could conceivably
+ be pre-provisioned on the NAS, then the name of the pre-
+ provisioned policy can be transmitted in an attribute rather
+ than the policy itself, which could be quite large. An
+ example of this is the Filter-Id Attribute defined in
+ [RFC2865], Section 5.11, which enables a set of pre-
+ provisioned filter rules to be referenced by name.
+
+ 3. Utilization of Packetization Layer Path MTU Discovery
+ techniques, as specified in [RFC4821].
+ As a last resort, where the above techniques cannot be made to
+ work, it may be possible to apply the techniques described in
+ [RFC4821] to discover the maximum supported RADIUS packet size
+ on the path between a RADIUS client and a home server. While
+ such an approach can avoid the complexity of utilization of a
+ sequence of packets, dynamic discovery is likely to be time
+ consuming and cannot be guaranteed to work with existing
+ RADIUS implementations. As a result, this technique is not
+ generally applicable.
+
+3.2. Data Model Issues
+
+ While [RFC2865], Section 5 defines basic data types, later
+ specifications did not follow this practice. This problem has led
+ implementations to define their own names for data types, resulting
+ in non-standard names for those types.
+
+ In addition, the number of vendors and SDOs creating new attributes
+ within the vendor space has grown, and this has led to some
+ divergence in approaches to RADIUS attribute design. For example,
+ vendors and SDOs have evolved the data model to support functions
+ such as new data types along with attribute grouping and attribute
+ fragmentation, with different groups taking different approaches.
+ These approaches are often incompatible, leading to additional
+ complexity in RADIUS implementations.
+
+ In order to avoid repeating old mistakes, this section describes the
+ history of the RADIUS data model and attempts to codify existing
+ practices.
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 14]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+3.2.1. Issues with Definitions of Types
+
+ [RFC2865], Section 5 explicitly defines five data types: text,
+ string, address, integer, and time. Both the names and
+ interpretations of the types are given.
+
+ Subsequent RADIUS specifications defined attributes by using type
+ names not defined in [RFC2865], without defining the new names as
+ done in [RFC2865]. They did not consistently indicate the format of
+ the value field using the same conventions as [RFC2865]. As a
+ result, the data type is ambiguous in some cases and may not be
+ consistent among different implementations.
+
+ It is out of the scope of this document to resolve all potential
+ ambiguities within existing RADIUS specifications. However, in order
+ to prevent future ambiguities, it is RECOMMENDED that future RADIUS
+ attribute specifications explicitly define newly created data types
+ at the beginning of the document and indicate clearly the data type
+ to be used for each attribute.
+
+ For example, [RFC3162] utilizes, but does not explicitly define, a
+ type that encapsulates an IPv6 address (Sections 2.1 and 2.4) and
+ another type that encapsulates an IPv6 prefix (Section 2.3). The
+ IPv6 address attributes confusingly are referenced as type "Address"
+ in the document. This is a similar name as the "address" type
+ defined in [RFC2865], which was defined to refer solely to IPv4
+ addresses.
+
+ While the Framed-Interface-Id Attribute defined in [RFC3162], Section
+ 2.2 included a value field of 8 octets, the data type was not
+ explicitly indicated; therefore, there is controversy over whether
+ the format of the data was intended to be an 8-octet String or
+ whether a special Interface-Id type was intended.
+
+ Given that attributes encapsulating an IPv6 address and an IPv6
+ prefix are already in use, it is RECOMMENDED that RADIUS server
+ implementations include support for these as basic types, in addition
+ to the types defined in [RFC2865]. Where the intent is to represent
+ a specific IPv6 address, an "IPv6 address" type SHOULD be used.
+ Although it is possible to use an "IPv6 Prefix" type with a prefix
+ length of 128 to represent an IPv6 address, this usage is NOT
+ RECOMMENDED. Implementations supporting the Framed-Interface-Id
+ Attribute may select a data type of their choosing (most likely an
+ 8-octet String or a special "Interface Id" data type).
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 15]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ It is worth noting that since RADIUS only supports unsigned integers
+ of 32 bits, attributes using signed integer data types or unsigned
+ integer types of other sizes will require code changes and SHOULD be
+ avoided.
+
+ For [RFC2865] RADIUS VSAs, the length limitation of the String and
+ Text types is 247 octets instead of 253 octets, due to the additional
+ overhead of the Vendor-Specific Attribute.
+
+3.2.2. Tagging Mechanism
+
+ [RFC2868] defines an attribute grouping mechanism based on the use of
+ a one-octet tag value. Tunnel attributes that refer to the same
+ tunnel are grouped together by virtue of using the same tag value.
+
+ This tagging mechanism has some drawbacks. There are a limited
+ number of unique tags (31). The tags are not well suited for use
+ with arbitrary binary data values because it is not always possible
+ to tell if the first byte after the Length is the tag or the first
+ byte of the untagged value (assuming the tag is optional).
+
+ Other limitations of the tagging mechanism are that when integer
+ values are tagged, the value portion is reduced to three bytes,
+ meaning only 24-bit numbers can be represented. The tagging
+ mechanism does not offer an ability to create nested groups of
+ attributes. Some RADIUS implementations treat tagged attributes as
+ having the additional data types tagged-string and tagged-integer.
+ These types increase the complexity of implementing and managing
+ RADIUS systems.
+
+ For these reasons, the tagging scheme described in RFC 2868 is NOT
+ RECOMMENDED for use as a generic grouping mechanism.
+
+3.2.3. Complex Data Types
+
+ As described in this section, the creation of complex types can lead
+ to interoperability and deployment issues, so they need to be
+ introduced with care. For example, the RADIUS attribute encoding is
+ summarized in [RFC2865]:
+
+ 0 1 2
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+ | Type | Length | Value ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 16]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ However, some standard attributes pack multiple sub-fields into the
+ "Value" field, resulting in the creation a non-standard, i.e.,
+ complex, type. Separating these sub-fields into different
+ attributes, each with its own type and length, would have the
+ following benefits:
+
+ * When manual data entry is required, it is easier for an
+ administrator to enter the data as well-known types rather than
+ as complex structures.
+
+ * It enables additional error checking by leveraging the parsing
+ and validation routines for well-known types.
+
+ * It simplifies implementations by eliminating special-case,
+ attribute-specific parsing.
+
+ One of the fundamental goals of the RADIUS protocol design was to
+ allow RADIUS servers to be configured to support new attributes,
+ without requiring server code changes. RADIUS server implementations
+ typically provide support for basic data types and define attributes
+ in a data dictionary. This architecture enables a new attribute to
+ be supported by the addition of a dictionary entry, without requiring
+ other RADIUS server code changes.
+
+ Code changes can also be required in policy management systems and in
+ the RADIUS server's receive path. These changes are due to
+ limitations in RADIUS server policy languages, which commonly provide
+ for limited operations (such as comparisons or arithmetic operations)
+ on the existing data types. Many existing RADIUS policy languages
+ typically are not capable of parsing sub-elements or providing more
+ sophisticated matching functionality.
+
+ On the RADIUS client, code changes are typically required in order to
+ implement a new attribute. The RADIUS client typically has to
+ compose the attribute dynamically when sending. When receiving, a
+ RADIUS client needs to be able to parse the attribute and carry out
+ the requested service. As a result, a detailed understanding of the
+ new attribute is required on clients, and data dictionaries are less
+ useful on clients than on servers.
+
+ Given these limitations, the introduction of new types can require
+ code changes on the RADIUS server, which would be unnecessary if
+ basic data types had been used instead. In addition, if "ad hoc"
+ types are used, attribute-specific parsing is required, which means
+ more complex software to develop and maintain. More complexity can
+ lead to more error-prone implementations, interoperability problems,
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 17]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ and even security vulnerabilities. These issues can increase costs
+ to network administrators as well as reduce reliability and introduce
+ deployment barriers.
+
+3.2.4. Complex Data Type Exceptions
+
+ As described in Section 2.1, the introduction of complex data types
+ is discouraged where viable alternatives are available. A potential
+ exception is attributes that inherently require code changes on both
+ the client and server. For example, as described in Appendix B,
+ complex attributes have been used in situations involving
+ authentication and security attributes, which need to be dynamically
+ computed and verified. Supporting this functionality requires code
+ changes on both the RADIUS client and server, regardless of the
+ attribute format. As a result, in most cases, the use of complex
+ attributes to represent these methods is acceptable and does not
+ create additional interoperability or deployment issues.
+
+ Another exception to the recommendation against complex types is for
+ types that can be treated as opaque data by the RADIUS server. For
+ example, the EAP-Message Attribute, defined in [RFC3579], Section
+ 3.1, contains a complex data type that is an Extensible
+ Authentication Protocol (EAP) packet. Since these complex types do
+ not need to be parsed by the RADIUS server, the issues arising from
+ server limitations do not arise. Similarly, since attributes of
+ these complex types can be configured on the server using a data type
+ of String, dictionary limitations are also not encountered. Appendix
+ A.1 includes a series of checklists that may be used to analyze a
+ design for RECOMMENDED and NOT RECOMMENDED behavior in relation to
+ complex types.
+
+ If the RADIUS Server simply passes the contents of an attribute to
+ some non-RADIUS portion of the network, then the data is opaque to
+ RADIUS and SHOULD be defined to be of type String. A concrete way of
+ judging this requirement is whether or not the attribute definition
+ in the RADIUS document contains delineated fields for sub-parts of
+ the data. If those fields need to be delineated in RADIUS, then the
+ data is not opaque to RADIUS, and it SHOULD be separated into
+ individual RADIUS attributes.
+
+ An examination of existing RADIUS RFCs discloses a number of complex
+ attributes that have already been defined. Appendix B includes a
+ listing of complex attributes used within [RFC2865], [RFC2868],
+ [RFC2869], [RFC3162], [RFC4818], and [RFC4675]. The discussion of
+ these attributes includes reasons why a complex type is acceptable or
+ suggestions for how the attribute could have been defined to follow
+ the RADIUS data model.
+
+
+
+
+DeKok & Weber Best Current Practice [Page 18]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ In other cases, the data in the complex type are described textually
+ in a specification. This is possible because the data types are not
+ sent within the attributes but are a matter for endpoint
+ interpretation. An implementation can define additional data types
+ and use these data types today by matching them to the attribute's
+ textual definition.
+
+3.3. Vendor Space
+
+ The usage model for RADIUS VSAs is described in [RFC2865], Section
+ 6.2:
+
+ Note that RADIUS defines a mechanism for Vendor-Specific
+ extensions (Attribute 26) and the use of that should be encouraged
+ instead of allocation of global attribute types, for functions
+ specific only to one vendor's implementation of RADIUS, where no
+ interoperability is deemed useful.
+
+ Nevertheless, many new attributes have been defined in the vendor
+ space in situations where interoperability is not only useful but is
+ required. For example, SDOs outside the IETF (such as the IEEE 802
+ and the 3rd Generation Partnership Project (3GPP)) have been assigned
+ Vendor-Ids, enabling them to define their own VSA encoding and assign
+ Vendor types within their own vendor space, as defined by their
+ unique Vendor-Id.
+
+ The use of VSAs by SDOs outside the IETF has gained in popularity for
+ several reasons:
+
+ Efficiency
+ As with SNMP, which defines an "Enterprise" Object Identifier
+ (OID) space suitable for use by vendors as well as other SDOs, the
+ definition of Vendor-Specific Attributes has become a common
+ occurrence as part of standards activity outside the IETF. For
+ reasons of efficiency, it is easiest if the RADIUS attributes
+ required to manage a standard are developed within the same SDO
+ that develops the standard itself. As noted in "Transferring MIB
+ Work from IETF Bridge MIB WG to IEEE 802.1 WG" [RFC4663], today
+ few vendors are willing to simultaneously fund individuals to
+ participate within an SDO to complete a standard as well as to
+ participate in the IETF in order to complete the associated RADIUS
+ attributes specification.
+
+ Attribute scarcity
+ The standard space is limited to 255 unique attributes. Of these,
+ only about half remain available for allocation. In the vendor
+ space, the number of attributes available is a function of the
+ encoding of the attribute (the size of the Vendor type field).
+
+
+
+DeKok & Weber Best Current Practice [Page 19]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+3.3.1. Interoperability Considerations
+
+ Vendors and SDOs are reminded that the standard space and the
+ enumerated value space for enumerated attributes are reserved for
+ allocation through work published via the IETF, as noted in
+ [RFC3575], Section 2.1. In the past, some vendors and SDOs have
+ assigned vendor-specific meaning to "unused" values from the standard
+ space. This process results in interoperability issues and is
+ counterproductive. Similarly, the vendor-specific enumeration
+ practice discussed in [RFC2882], Section 2.2.1 is NOT RECOMMENDED.
+
+ If it is not possible to follow the IETF process, vendors and SDOs
+ SHOULD self-allocate an attribute, which MUST be in their own vendor
+ space as defined by their unique Vendor-Id, as discussed in Sections
+ 3.3.2 and 3.3.3.
+
+ The design and specification of VSAs for multi-vendor usage SHOULD be
+ undertaken with the same level of care as standard RADIUS attributes.
+ Specifically, the provisions of this document that apply to standard
+ RADIUS attributes also apply to VSAs for multi-vendor usage.
+
+3.3.2. Vendor Allocations
+
+ As noted in [RFC3575], Section 2.1, vendors are encouraged to utilize
+ VSAs to define functions "specific only to one vendor's
+ implementation of RADIUS, where no interoperability is deemed useful.
+ For functions specific only to one vendor's implementation of RADIUS,
+ the use of that should be encouraged instead of the allocation of
+ global attribute types".
+
+ The recommendation for vendors to allocate attributes from a vendor
+ space rather than via the IETF process is a recognition that vendors
+ desire to assert change control over their own RADIUS specifications.
+ This change control can be obtained by requesting a PEN from the
+ Internet Assigned Number Authority (IANA) for use as a Vendor-Id
+ within a Vendor-Specific Attribute. The vendor can then allocate
+ attributes within the vendor space defined by that Vendor-Id at their
+ sole discretion. Similarly, the use of data types (complex or
+ otherwise) within that vendor space is solely under the discretion of
+ the vendor.
+
+3.3.3. SDO Allocations
+
+ Given the expanded utilization of RADIUS, it has become apparent that
+ requiring SDOs to accomplish all their RADIUS work within the IETF is
+ inherently inefficient and unscalable. It is therefore RECOMMENDED
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 20]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ that SDO RADIUS Attribute specifications allocate attributes from the
+ vendor space rather than request an allocation from the RADIUS
+ standard space for attributes matching any of the following criteria:
+
+ * Attributes relying on data types not defined within RADIUS
+
+ * Attributes intended primarily for use within an SDO
+
+ * Attributes intended primarily for use within a group of SDOs
+
+ Any new RADIUS attributes or values intended for interoperable use
+ across a broad spectrum of the Internet community SHOULD follow the
+ allocation process defined in [RFC3575].
+
+ The recommendation for SDOs to allocate attributes from a vendor
+ space rather than via the IETF process is a recognition that SDOs
+ desire to assert change control over their own RADIUS specifications.
+ This change control can be obtained by requesting a PEN from the
+ Internet Assigned Number Authority (IANA) for use as a Vendor-Id
+ within a Vendor-Specific Attribute. The SDO can then allocate
+ attributes within the vendor space defined by that Vendor-Id at their
+ sole discretion. Similarly, the use of data types (complex or
+ otherwise) within that vendor space is solely under the discretion of
+ the SDO.
+
+3.4. Polymorphic Attributes
+
+ A polymorphic attribute is one whose format or meaning is dynamic.
+ For example, rather than using a fixed data format, an attribute's
+ format might change based on the contents of another attribute. Or,
+ the meaning of an attribute may depend on earlier packets in a
+ sequence.
+
+ RADIUS server dictionary entries are typically static, enabling the
+ user to enter the contents of an attribute without support for
+ changing the format based on dynamic conditions. However, this
+ limitation on static types does not prevent implementations from
+ implementing policies that return different attributes based on the
+ contents of received attributes; this is a common feature of existing
+ RADIUS implementations.
+
+ In general, polymorphism is NOT RECOMMENDED. Polymorphism rarely
+ enables capabilities that would not be available through use of
+ multiple attributes. Polymorphism requires code changes in the
+ RADIUS server in situations where attributes with fixed formats would
+ not require such changes. Thus, polymorphism increases complexity
+ while decreasing generality, without delivering any corresponding
+ benefits.
+
+
+
+DeKok & Weber Best Current Practice [Page 21]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ Note that changing an attribute's format dynamically is not the same
+ thing as using a fixed format and computing the attribute itself
+ dynamically. RADIUS authentication attributes, such as User-
+ Password, EAP-Message, etc., while being computed dynamically, use a
+ fixed format.
+
+4. IANA Considerations
+
+ This document has no action items for IANA. However, it does provide
+ guidelines for Expert Reviewers appointed as described in [RFC3575].
+
+5. Security Considerations
+
+ This specification provides guidelines for the design of RADIUS
+ attributes used in authentication, authorization, and accounting.
+ Threats and security issues for this application are described in
+ [RFC3579] and [RFC3580]; security issues encountered in roaming are
+ described in [RFC2607].
+
+ Obfuscation of RADIUS attributes on a per-attribute basis is
+ necessary in some cases. The current standard mechanism for this is
+ described in [RFC2865], Section 5.2 (for obscuring User-Password
+ values) and is based on the MD5 algorithm specified in [RFC1321].
+ The MD5 and SHA-1 algorithms have recently become a focus of scrutiny
+ and concern in security circles, and as a result, the use of these
+ algorithms in new attributes is NOT RECOMMENDED. In addition,
+ previous documents referred to this method as generating "encrypted"
+ data. This terminology is no longer accepted within the
+ cryptographic community.
+
+ Where new RADIUS attributes use cryptographic algorithms, algorithm
+ negotiation SHOULD be supported. Specification of a mandatory-to-
+ implement algorithm is REQUIRED, and it is RECOMMENDED that the
+ mandatory-to-implement algorithm be certifiable under FIPS 140
+ [FIPS].
+
+ Where new RADIUS attributes encapsulate complex data types, or
+ transport opaque data, the security considerations discussed in
+ Section 5.1 SHOULD be addressed.
+
+ Message authentication in RADIUS is provided largely via the Message-
+ Authenticator attribute. See Section 3.2 of [RFC3579] and also
+ Section 2.2.2 of [RFC5080], which say that client implementations
+ SHOULD include a Message-Authenticator Attribute in every Access-
+ Request.
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 22]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ In general, the security of the RADIUS protocol is poor. Robust
+ deployments SHOULD support a secure communications protocol such as
+ IPsec. See Section 4 of [RFC3579] and Section 5 of [RFC3580] for a
+ more in-depth explanation of these issues.
+
+ Implementations not following the suggestions outlined in this
+ document may be subject to problems such as ambiguous protocol
+ decoding, packet loss leading to loss of billing information, and
+ denial-of-service attacks.
+
+5.1. New Data Types and Complex Attributes
+
+ The introduction of complex data types brings the potential for the
+ introduction of new security vulnerabilities. Experience shows that
+ the common data types have few security vulnerabilities, or else that
+ all known issues have been found and fixed. New data types require
+ new code, which may introduce new bugs and therefore new attack
+ vectors.
+
+ Some systems permit complex attributes to be defined via a method
+ that is more capable than traditional RADIUS dictionaries. These
+ systems can reduce the security threat of new types significantly,
+ but they do not remove it entirely.
+
+ RADIUS servers are highly valued targets, as they control network
+ access and interact with databases that store usernames and
+ passwords. An extreme outcome of a vulnerability due to a new,
+ complex type would be that an attacker is capable of taking complete
+ control over the RADIUS server.
+
+ The use of attributes representing opaque data does not reduce this
+ threat. The threat merely moves from the RADIUS server to the system
+ that consumes that opaque data. The threat is particularly severe
+ when the opaque data originates from the user and is not validated by
+ the NAS. In those cases, the RADIUS server is potentially exposed to
+ attack by malware residing on an unauthenticated host.
+
+ Any system consuming opaque data that originates from a RADIUS system
+ SHOULD be properly isolated from that RADIUS system and SHOULD run
+ with minimal privileges. Any potential vulnerabilities in the non-
+ RADIUS system will then have minimal impact on the security of the
+ system as a whole.
+
+
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 23]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+6. References
+
+6.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
+ "Remote Authentication Dial In User Service (RADIUS)",
+ RFC 2865, June 2000.
+
+ [RFC3575] Aboba, B., "IANA Considerations for RADIUS (Remote
+ Authentication Dial In User Service)", RFC 3575, July
+ 2003.
+
+6.2. Informative References
+
+ [RFC1155] Rose, M. and K. McCloghrie, "Structure and
+ identification of management information for TCP/IP-
+ based internets", STD 16, RFC 1155, May 1990.
+
+ [RFC1157] Case, J., Fedor, M., Schoffstall, M., and J. Davin,
+ "Simple Network Management Protocol (SNMP)", RFC 1157,
+ May 1990.
+
+ [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC
+ 1321, April 1992.
+
+ [RFC2548] Zorn, G., "Microsoft Vendor-specific RADIUS
+ Attributes", RFC 2548, March 1999.
+
+ [RFC2607] Aboba, B. and J. Vollbrecht, "Proxy Chaining and Policy
+ Implementation in Roaming", RFC 2607, June 1999.
+
+ [RFC2866] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
+
+ [RFC2868] Zorn, G., Leifer, D., Rubens, A., Shriver, J.,
+ Holdrege, M., and I. Goyret, "RADIUS Attributes for
+ Tunnel Protocol Support", RFC 2868, June 2000.
+
+ [RFC2869] Rigney, C., Willats, W., and P. Calhoun, "RADIUS
+ Extensions", RFC 2869, June 2000.
+
+ [RFC2882] Mitton, D., "Network Access Servers Requirements:
+ Extended RADIUS Practices", RFC 2882, July 2000.
+
+ [RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6",
+ RFC 3162, August 2001.
+
+
+
+DeKok & Weber Best Current Practice [Page 24]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ [RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote
+ Authentication Dial In User Service) Support For
+ Extensible Authentication Protocol (EAP)", RFC 3579,
+ September 2003.
+
+ [RFC3580] Congdon, P., Aboba, B., Smith, A., Zorn, G., and J.
+ Roese, "IEEE 802.1X Remote Authentication Dial In User
+ Service (RADIUS) Usage Guidelines", RFC 3580, September
+ 2003.
+
+ [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
+ 10646", STD 63, RFC 3629, November 2003.
+
+ [RFC4181] Heard, C., Ed., "Guidelines for Authors and Reviewers
+ of MIB Documents", BCP 111, RFC 4181, September 2005.
+
+ [RFC4663] Harrington, D., "Transferring MIB Work from IETF Bridge
+ MIB WG to IEEE 802.1 WG", RFC 4663, September 2006.
+
+ [RFC4675] Congdon, P., Sanchez, M., and B. Aboba, "RADIUS
+ Attributes for Virtual LAN and Priority Support", RFC
+ 4675, September 2006.
+
+ [RFC4679] Mammoliti, V., Zorn, G., Arberg, P., and R. Rennison,
+ "DSL Forum Vendor-Specific RADIUS Attributes", RFC
+ 4679, September 2006.
+
+ [RFC4818] Salowey, J. and R. Droms, "RADIUS Delegated-IPv6-Prefix
+ Attribute", RFC 4818, April 2007.
+
+ [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path
+ MTU Discovery", RFC 4821, March 2007.
+
+ [RFC4849] Congdon, P., Sanchez, M., and B. Aboba, "RADIUS Filter
+ Rule Attribute", RFC 4849, April 2007.
+
+ [RFC5080] Nelson, D. and A. DeKok, "Common Remote Authentication
+ Dial In User Service (RADIUS) Implementation Issues and
+ Suggested Fixes", RFC 5080, December 2007.
+
+ [RFC5090] Sterman, B., Sadolevsky, D., Schwartz, D., Williams,
+ D., and W. Beck, "RADIUS Extension for Digest
+ Authentication", RFC 5090, February 2008.
+
+ [RFC5176] Chiba, M., Dommety, G., Eklund, M., Mitton, D., and B.
+ Aboba, "Dynamic Authorization Extensions to Remote
+ Authentication Dial In User Service (RADIUS)", RFC
+ 5176, January 2008.
+
+
+
+DeKok & Weber Best Current Practice [Page 25]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ [DOCTORS] AAA Doctors Mailing List, www.ietf.org/mail-
+ archive/web/aaa-doctors.
+
+ [FIPS] FIPS 140-3 (DRAFT), "Security Requirements for
+ Cryptographic Modules",
+ http://csrc.nist.gov/publications/PubsFIPS.html.
+
+ [IEEE-802.1Q] IEEE Standards for Local and Metropolitan Area
+ Networks: Draft Standard for Virtual Bridged Local Area
+ Networks, P802.1Q-2003, January 2003.
+
+ [RFC5580] Tschofenig, H., Ed., Adrangi, F., Jones, M., Lior, A.,
+ and B. Aboba, "Carrying Location Objects in RADIUS and
+ Diameter", RFC 5580, August 2009.
+
+ [AAA-SIP] Sterman, B., Sadolevsky, D., Schwartz, D., Williams,
+ D., and W. Beck, "RADIUS Extension for Digest
+ Authentication", Work in Progress, November 2004.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 26]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+Appendix A. Design Guidelines Checklist
+
+ The following text provides guidelines for the design of attributes
+ used by the RADIUS protocol. Specifications that follow these
+ guidelines are expected to achieve maximum interoperability with
+ minimal changes to existing systems.
+
+A.1. Types Matching the RADIUS Data Model
+
+A.1.1. Transport of Basic Data Types
+
+ Does the data fit within the basic data types described in Section
+ 2.1? If so, it SHOULD be encapsulated in a [RFC2865] format RADIUS
+ attribute or in a [RFC2865] format RADIUS VSA that uses one of the
+ existing RADIUS data types.
+
+A.1.2. Transport of Authentication and Security Data
+
+ Does the data provide authentication and/or security capabilities for
+ the RADIUS protocol as outlined below? If so, use of a complex data
+ type is acceptable under the following circumstances:
+
+ * Complex data types that carry authentication methods that RADIUS
+ servers are expected to parse and verify as part of an
+ authentication process.
+
+ * Complex data types that carry security information intended to
+ increase the security of the RADIUS protocol itself.
+
+ Any data type carrying authentication and/or security data that is
+ not meant to be parsed by a RADIUS server is an "opaque data type",
+ as defined in Section A.1.3.
+
+A.1.3. Opaque Data Types
+
+ Does the attribute encapsulate an existing data structure defined
+ outside of the RADIUS specifications? Can the attribute be treated
+ as opaque data by RADIUS servers (including proxies)? If both
+ questions can be answered affirmatively, a complex structure MAY be
+ used in a RADIUS specification.
+
+ The specification of the attribute SHOULD define the encapsulating
+ attribute to be of type String. The specification SHOULD refer to an
+ external document defining the structure. The specification SHOULD
+ NOT define or describe the structure, for reasons discussed in
+ Section 3.2.3.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 27]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+A.1.4. Pre-Existing Data Types
+
+ There is a trade-off in design between reusing existing formats for
+ historical compatibility or choosing new formats for a "better"
+ design. This trade-off does not always require the "better" design
+ to be used. As a result, pre-existing complex data types described
+ in Appendix B MAY be used.
+
+A.2. Improper Data Types
+
+ This section suggests alternatives to data types that do not fall
+ within the "basic data type" definition. Section A.2.1 describes
+ simple data types, which should be replaced by basic data types.
+ Section A.2.2 describes more complex data types, which should be
+ replaced by multiple attributes using the basic data types.
+
+A.2.1. Simple Data Types
+
+ Does the attribute use any of the following data types? If so, the
+ data type SHOULD be replaced with the suggested alternatives, or it
+ SHOULD NOT be used at all.
+
+ * Signed integers of any size.
+ SHOULD NOT be used. SHOULD be replaced with one or more
+ unsigned integer attributes. The definition of the attribute
+ can contain information that would otherwise go into the sign
+ value of the integer.
+
+ * 8-bit unsigned integers.
+ SHOULD be replaced with 32-bit unsigned integer. There is
+ insufficient justification to save three bytes.
+
+ * 16-bit unsigned integers.
+ SHOULD be replaced with 32-bit unsigned integer. There is
+ insufficient justification to save two bytes.
+
+ * Unsigned integers of size other than 32 bits.
+ SHOULD be replaced by an unsigned integer of 32 bits. There is
+ insufficient justification to define a new size of integer.
+
+ * Integers of any size in non-network byte order.
+ SHOULD be replaced by unsigned integer of 32 bits in network.
+ There is no reason to transport integers in any format other
+ than network byte order.
+
+ * Multi-field text strings.
+ Each field SHOULD be encapsulated in a separate attribute.
+
+
+
+
+DeKok & Weber Best Current Practice [Page 28]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ * Polymorphic attributes.
+ Multiple attributes, each with a static data type, SHOULD be
+ defined instead.
+
+ * Nested attribute-value pairs (AVPs).
+ Attributes should be defined in a flat typespace.
+
+A.2.2. More Complex Data Types
+
+ Does the attribute:
+
+ * define a complex data type not described in Appendix B?
+
+ * that a RADIUS server and/or client is expected to parse,
+ validate, or create the contents of via a dynamic computation
+ (i.e., a type that cannot be treated as opaque data (Section
+ A.1.3))?
+
+ * involve functionality that could be implemented without code
+ changes on both the client and server (i.e., a type that doesn't
+ require dynamic computation and verification, such as those
+ performed for authentication or security attributes)?
+
+ If so, this data type SHOULD be replaced with simpler types, as
+ discussed in Appendix A.2.1. See also Section 2.1 for a discussion
+ of why complex types are problematic.
+
+A.3. Vendor-Specific Formats
+
+ Does the specification contain Vendor-Specific Attributes that match
+ any of the following criteria? If so, the VSA encoding should be
+ replaced with the [RFC2865], Section 5.26 encoding or should not be
+ used at all.
+
+ * Vendor types of more than 8 bits.
+ SHOULD NOT be used. Vendor types of 8 bits SHOULD be used
+ instead.
+
+ * Vendor lengths of less than 8 bits (i.e., zero bits).
+ SHOULD NOT be used. Vendor lengths of 8 bits SHOULD be used
+ instead.
+
+ * Vendor lengths of more than 8 bits.
+ SHOULD NOT be used. Vendor lengths of 8 bits SHOULD be used
+ instead.
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 29]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ * Vendor-specific contents that are not in Type-Length-Value
+ format.
+ SHOULD NOT be used. Vendor-Specific Attributes SHOULD be in
+ Type-Length-Value format.
+
+ In general, Vendor-Specific Attributes SHOULD follow the encoding
+ suggested in Section 5.26 of [RFC2865]. Vendor extensions to non-
+ standard encodings are NOT RECOMMENDED as they can negatively affect
+ interoperability.
+
+A.4. Changes to the RADIUS Operational Model
+
+ Does the specification change the RADIUS operation model as outlined
+ in the list below? If so, then another method of achieving the
+ design objectives SHOULD be used. Potential problem areas include
+ the following:
+
+ * Defining new commands in RADIUS using attributes.
+ The addition of new commands to RADIUS MUST be handled via
+ allocation of a new Code and not by the use of an attribute.
+ This restriction includes new commands created by overloading
+ the Service-Type Attribute to define new values that modify the
+ functionality of Access-Request packets.
+
+ * Using RADIUS as a transport protocol for data unrelated to
+ authentication, authorization, or accounting.
+ Using RADIUS to transport authentication methods such as EAP is
+ explicitly permitted, even if those methods require the
+ transport of relatively large amounts of data. Transport of
+ opaque data relating to AAA is also permitted, as discussed in
+ Section 3.2.3. However, if the specification does not relate to
+ AAA, then RADIUS SHOULD NOT be used.
+
+ * Assuming support for packet lengths greater than 4096 octets.
+ Attribute designers cannot assume that RADIUS implementations
+ can successfully handle packets larger than 4096 octets. If a
+ specification could lead to a RADIUS packet larger than 4096
+ octets, then the alternatives described in Section 3.3 SHOULD be
+ considered.
+
+ * Stateless operation.
+ The RADIUS protocol is stateless, and documents that require
+ stateful protocol behavior without the use of the State
+ Attribute need to be redesigned.
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 30]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ * Provisioning of service in an Access-Reject.
+ Such provisioning is not permitted, and MUST NOT be used. If
+ limited access needs to be provided, then an Access-Accept with
+ appropriate authorizations can be used instead.
+
+ * Provisioning of service in a Disconnect-Request.
+ Such provisioning is not permitted and MUST NOT be used. If
+ limited access needs to be provided, then a CoA-Request
+ [RFC5176] with appropriate authorizations can be used instead.
+
+ * Lack of user authentication or authorization restrictions.
+ In an authorization check, where there is no demonstration of a
+ live user, confidential data cannot be returned. Where there is
+ a link to a previous user authentication, the State Attribute
+ SHOULD be present.
+
+ * Lack of per-packet integrity and authentication.
+ It is expected that documents will support per-packet integrity
+ and authentication.
+
+ * Modification of RADIUS packet sequences.
+ In RADIUS, each request is encapsulated in its own packet and
+ elicits a single response that is sent to the requester. Since
+ changes to this paradigm are likely to require major
+ modifications to RADIUS client and server implementations, they
+ SHOULD be avoided if possible.
+
+ For further details, see Section 3.1.
+
+A.5. Allocation of Attributes
+
+ Does the attribute have a limited scope of applicability as outlined
+ below? If so, then the attributes SHOULD be allocated from the
+ vendor space rather than requesting allocation from the standard
+ space.
+
+ * attributes intended for a vendor to support their own systems
+ and not suitable for general usage
+
+ * attributes relying on data types not defined within RADIUS
+
+ * attributes intended primarily for use within an SDO
+
+ * attributes intended primarily for use within a group of SDOs
+
+ Note that the points listed above do not relax the recommendations
+ discussed in this document. Instead, they recognize that the RADIUS
+ data model has limitations. In certain situations where
+
+
+
+DeKok & Weber Best Current Practice [Page 31]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ interoperability can be strongly constrained by the SDO or vendor, an
+ expanded data model MAY be used. It is RECOMMENDED, however, that
+ the RADIUS data model be used, even when it is marginally less
+ efficient than alternatives.
+
+ When attributes are used primarily within a group of SDOs, and are
+ not applicable to the wider Internet community, we expect that one
+ SDO will be responsible for allocation from their own private vendor
+ space.
+
+Appendix B. Complex Attributes
+
+ This appendix summarizes RADIUS attributes with complex data types
+ that are defined in existing RFCs.
+
+ This appendix is published for informational purposes only and
+ reflects the usage of attributes with complex data types at the time
+ of the publication of this document.
+
+B.1. CHAP-Password
+
+ [RFC2865], Section 5.3 defines the CHAP-Password Attribute, which is
+ sent from the RADIUS client to the RADIUS server in an Access-
+ Request. The data type of the CHAP Identifier is not given, only the
+ one-octet length:
+
+ 0 1 2
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+ | Type | Length | CHAP Ident | String ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+
+ Since this is an authentication attribute, code changes are required
+ on the RADIUS client and server to support it, regardless of the
+ attribute format. Therefore, this complex data type is acceptable in
+ this situation.
+
+B.2. CHAP-Challenge
+
+ [RFC2865], Section 5.40 defines the CHAP-Challenge Attribute, which
+ is sent from the RADIUS client to the RADIUS server in an Access-
+ Request. While the data type of the CHAP Identifier is given, the
+ text also says:
+
+ If the CHAP challenge value is 16 octets long it MAY be placed in
+ the Request Authenticator field instead of using this attribute.
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 32]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ Defining attributes to contain values taken from the RADIUS packet
+ header is NOT RECOMMENDED. Attributes should have values that are
+ packed into a RADIUS AVP.
+
+B.3. Tunnel-Password
+
+ [RFC2868], Section 3.5 defines the Tunnel-Password Attribute, which
+ is sent from the RADIUS server to the client in an Access-Accept.
+ This attribute includes Tag and Salt fields, as well as a String
+ field that consists of three logical sub-fields: the Data-Length
+ (required and one octet), Password sub-fields (required), and the
+ optional Padding sub-field. The attribute appears as follows:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Tag | Salt
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Salt (cont) | String ...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Since this is a security attribute, code changes are required on the
+ RADIUS client and server to support it, regardless of the attribute
+ format. However, while use of a complex data type is acceptable in
+ this situation, the design of the Tunnel-Password Attribute is
+ problematic from a security perspective since it uses MD5 as a cipher
+ and provides a password to a NAS, potentially without proper
+ authorization.
+
+B.4. ARAP-Password
+
+ [RFC2869], Section 5.4 defines the ARAP-Password Attribute, which is
+ sent from the RADIUS client to the server in an Access-Request. It
+ contains four 4-octet values instead of having a single Value field:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Value1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value2
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value3
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value4
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+DeKok & Weber Best Current Practice [Page 33]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ As with the CHAP-Password Attribute, this is an authentication
+ attribute that would have required code changes on the RADIUS client
+ and server, regardless of format.
+
+B.5. ARAP-Features
+
+ [RFC2869], Section 5.5 defines the ARAP-Features Attribute, which is
+ sent from the RADIUS server to the client in an Access-Accept or
+ Access-Challenge. It contains a compound string of two single octet
+ values, plus three 4-octet values, which the RADIUS client
+ encapsulates in a feature flags packet in the Apple Remote Access
+ Protocol (ARAP):
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Value1 | Value2 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value4 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Value5 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Unlike the previous attributes, this attribute contains no encrypted
+ component, nor is it directly involved in authentication. The
+ individual sub-fields therefore could have been encapsulated in
+ separate attributes.
+
+ While the contents of this attribute are intended to be placed in an
+ ARAP packet, the fields need to be set by the RADIUS server. Using
+ standard RADIUS data types would have simplified RADIUS server
+ implementations and subsequent management. The current form of the
+ attribute requires either the RADIUS server implementation or the
+ RADIUS server administrator to understand the internals of the ARAP
+ protocol.
+
+B.6. Connect-Info
+
+ [RFC2869], Section 5.11 defines the Connect-Info Attribute, which is
+ used to indicate the nature of the connection.
+
+ 0 1 2
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Text...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+DeKok & Weber Best Current Practice [Page 34]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ Even though the type is Text, the rest of the description indicates
+ that it is a complex attribute:
+
+ The Text field consists of UTF-8 encoded 10646 [8] characters.
+ The connection speed SHOULD be included at the beginning of the
+ first Connect-Info attribute in the packet. If the transmit and
+ receive connection speeds differ, they may both be included in the
+ first attribute with the transmit speed first (the speed the NAS
+ modem transmits at), a slash (/), the receive speed, then
+ optionally other information.
+
+ For example, "28800 V42BIS/LAPM" or "52000/31200 V90"
+
+ More than one Connect-Info attribute may be present in an
+ Accounting-Request packet to accommodate expected efforts by ITU
+ to have modems report more connection information in a standard
+ format that might exceed 252 octets.
+
+ This attribute contains no encrypted component and is not directly
+ involved in authentication. The individual sub-fields could
+ therefore have been encapsulated in separate attributes.
+
+ However, since the definition refers to potential standardization
+ activity within ITU, the Connect-Info Attribute can also be thought
+ of as opaque data whose definition is provided elsewhere. The
+ Connect-Info Attribute could therefore qualify for an exception as
+ described in Section 3.2.4.
+
+B.7. Framed-IPv6-Prefix
+
+ Section 2.3 of [RFC3162] defines the Framed-IPv6-Prefix Attribute,
+ and Section 3 of [RFC4818] reuses this format for the Delegated-
+ IPv6-Prefix Attribute; these attributes are sent from the RADIUS
+ server to the client in an Access-Accept.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Reserved | Prefix-Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Prefix
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Prefix
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Prefix
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Prefix |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+DeKok & Weber Best Current Practice [Page 35]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+ The sub-fields encoded in these attributes are strongly related, and
+ there was no previous definition of this data structure that could be
+ referenced. Support for this attribute requires code changes on both
+ the client and server, due to a new data type being defined. In this
+ case, it appears to be acceptable to encode them in one attribute.
+
+B.8. Egress-VLANID
+
+ [RFC4675], Section 2.1 defines the Egress-VLANID Attribute, which can
+ be sent by a RADIUS client or server.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Value
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ Value (cont) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ While it appears superficially to be of type Integer, the Value field
+ is actually a packed structure, as follows:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Tag Indic. | Pad | VLANID |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The length of the VLANID field is defined by the [IEEE-802.1Q]
+ specification. The Tag Indicator field is either 0x31 or 0x32, for
+ compatibility with the Egress-VLAN-Name, as discussed below. The
+ complex structure of Egress-VLANID overlaps with that of the base
+ Integer data type, meaning that no code changes are required for a
+ RADIUS server to support this attribute. Code changes are required
+ on the NAS, if only to implement the VLAN ID enforcement.
+
+ Given the IEEE VLAN requirements and the limited data model of
+ RADIUS, the chosen method is likely the best of the possible
+ alternatives.
+
+
+
+
+
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 36]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+B.9. Egress-VLAN-Name
+
+ [RFC4675], Section 2.3 defines the Egress-VLAN-Name Attribute, which
+ can be sent by a RADIUS client or server.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Length | Tag Indic. | String...
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ The Tag Indicator is either the character '1' or '2', which in ASCII
+ map to the identical values for Tag Indicator in Egress-VLANID above.
+ The complex structure of this attribute is acceptable for reasons
+ identical to those given for Egress-VLANID.
+
+B.10. Digest-*
+
+ [RFC5090] attempts to standardize the functionality provided by an
+ expired Internet-Draft [AAA-SIP], which improperly uses two
+ attributes from the standard space without having been assigned them
+ by IANA. This self-allocation is forbidden, as described in Section
+ 2. In addition, the document uses nested attributes, which are
+ discouraged in Section 2.1. The updated document uses basic data
+ types and allocates nearly 20 attributes in the process.
+
+ However, the document has seen wide-spread implementation, but
+ [RFC5090] has not. One explanation may be that implementors
+ disagreed with the trade-offs made in the updated specification. It
+ may have been better to simply document the existing format and
+ request IANA allocation of two attributes. The resulting design
+ would have used nested attributes but may have gained more wide-
+ spread implementation.
+
+Acknowledgments
+
+ We would like to acknowledge David Nelson, Bernard Aboba, Emile van
+ Bergen, Barney Wolff, Glen Zorn, Avi Lior, and Hannes Tschofenig for
+ contributions to this document.
+
+
+
+
+
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 37]
+
+RFC 6158 RADIUS Design Guidelines March 2011
+
+
+Authors' Addresses
+
+ Alan DeKok (editor)
+ The FreeRADIUS Server Project
+ http://freeradius.org/
+
+ EMail: aland@freeradius.org
+
+
+ Greg Weber
+ Knoxville, TN 37932
+ USA
+
+ EMail: gdweber@gmail.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeKok & Weber Best Current Practice [Page 38]
+