rfc2865.txt
上传用户:swkcbjrc
上传日期:2016-04-02
资源大小:45277k
文件大小:143k
源码类别:

游戏

开发平台:

Visual C++

  1. Network Working Group                                          C. Rigney
  2. Request for Comments: 2865                                    S. Willens
  3. Obsoletes: 2138                                               Livingston
  4. Category: Standards Track                                      A. Rubens
  5.                                                                    Merit
  6.                                                               W. Simpson
  7.                                                               Daydreamer
  8.                                                                June 2000
  9.           Remote Authentication Dial In User Service (RADIUS)
  10. Status of this Memo
  11.    This document specifies an Internet standards track protocol for the
  12.    Internet community, and requests discussion and suggestions for
  13.    improvements.  Please refer to the current edition of the "Internet
  14.    Official Protocol Standards" (STD 1) for the standardization state
  15.    and status of this protocol.  Distribution of this memo is unlimited.
  16. Copyright Notice
  17.    Copyright (C) The Internet Society (2000).  All Rights Reserved.
  18. IESG Note:
  19.    This protocol is widely implemented and used.  Experience has shown
  20.    that it can suffer degraded performance and lost data when used in
  21.    large scale systems, in part because it does not include provisions
  22.    for congestion control.  Readers of this document may find it
  23.    beneficial to track the progress of the IETF's AAA working group,
  24.    which may develop a successor protocol that better addresses the
  25.    scaling and congestion control issues.
  26. Abstract
  27.    This document describes a protocol for carrying authentication,
  28.    authorization, and configuration information between a Network Access
  29.    Server which desires to authenticate its links and a shared
  30.    Authentication Server.
  31. Implementation Note
  32.    This memo documents the RADIUS protocol.  The early deployment of
  33.    RADIUS was done using UDP port number 1645, which conflicts with the
  34.    "datametrics" service.  The officially assigned port number for
  35.    RADIUS is 1812.
  36. Rigney, et al.              Standards Track                     [Page 1]
  37. RFC 2865                         RADIUS                        June 2000
  38. Table of Contents
  39.    1.     Introduction ..........................................    3
  40.       1.1       Specification of Requirements ...................    4
  41.       1.2       Terminology .....................................    5
  42.    2.     Operation .............................................    5
  43.       2.1       Challenge/Response ..............................    7
  44.       2.2       Interoperation with PAP and CHAP ................    8
  45.       2.3       Proxy ...........................................    8
  46.       2.4       Why UDP? ........................................   11
  47.       2.5       Retransmission Hints ............................   12
  48.       2.6       Keep-Alives Considered Harmful ..................   13
  49.    3.     Packet Format .........................................   13
  50.    4.     Packet Types ..........................................   17
  51.       4.1       Access-Request ..................................   17
  52.       4.2       Access-Accept ...................................   18
  53.       4.3       Access-Reject ...................................   20
  54.       4.4       Access-Challenge ................................   21
  55.    5.     Attributes ............................................   22
  56.       5.1       User-Name .......................................   26
  57.       5.2       User-Password ...................................   27
  58.       5.3       CHAP-Password ...................................   28
  59.       5.4       NAS-IP-Address ..................................   29
  60.       5.5       NAS-Port ........................................   30
  61.       5.6       Service-Type ....................................   31
  62.       5.7       Framed-Protocol .................................   33
  63.       5.8       Framed-IP-Address ...............................   34
  64.       5.9       Framed-IP-Netmask ...............................   34
  65.       5.10      Framed-Routing ..................................   35
  66.       5.11      Filter-Id .......................................   36
  67.       5.12      Framed-MTU ......................................   37
  68.       5.13      Framed-Compression ..............................   37
  69.       5.14      Login-IP-Host ...................................   38
  70.       5.15      Login-Service ...................................   39
  71.       5.16      Login-TCP-Port ..................................   40
  72.       5.17      (unassigned) ....................................   41
  73.       5.18      Reply-Message ...................................   41
  74.       5.19      Callback-Number .................................   42
  75.       5.20      Callback-Id .....................................   42
  76.       5.21      (unassigned) ....................................   43
  77.       5.22      Framed-Route ....................................   43
  78.       5.23      Framed-IPX-Network ..............................   44
  79.       5.24      State ...........................................   45
  80.       5.25      Class ...........................................   46
  81.       5.26      Vendor-Specific .................................   47
  82.       5.27      Session-Timeout .................................   48
  83.       5.28      Idle-Timeout ....................................   49
  84.       5.29      Termination-Action ..............................   49
  85. Rigney, et al.              Standards Track                     [Page 2]
  86. RFC 2865                         RADIUS                        June 2000
  87.       5.30      Called-Station-Id ...............................   50
  88.       5.31      Calling-Station-Id ..............................   51
  89.       5.32      NAS-Identifier ..................................   52
  90.       5.33      Proxy-State .....................................   53
  91.       5.34      Login-LAT-Service ...............................   54
  92.       5.35      Login-LAT-Node ..................................   55
  93.       5.36      Login-LAT-Group .................................   56
  94.       5.37      Framed-AppleTalk-Link ...........................   57
  95.       5.38      Framed-AppleTalk-Network ........................   58
  96.       5.39      Framed-AppleTalk-Zone ...........................   58
  97.       5.40      CHAP-Challenge ..................................   59
  98.       5.41      NAS-Port-Type ...................................   60
  99.       5.42      Port-Limit ......................................   61
  100.       5.43      Login-LAT-Port ..................................   62
  101.       5.44      Table of Attributes .............................   63
  102.    6.     IANA Considerations ...................................   64
  103.       6.1       Definition of Terms .............................   64
  104.       6.2       Recommended Registration Policies ...............   65
  105.    7.     Examples ..............................................   66
  106.       7.1       User Telnet to Specified Host ...................   66
  107.       7.2       Framed User Authenticating with CHAP ............   67
  108.       7.3       User with Challenge-Response card ...............   68
  109.    8.     Security Considerations ...............................   71
  110.    9.     Change Log ............................................   71
  111.    10.    References ............................................   73
  112.    11.    Acknowledgements ......................................   74
  113.    12.    Chair's Address .......................................   74
  114.    13.    Authors' Addresses ....................................   75
  115.    14.    Full Copyright Statement ..............................   76
  116. 1.  Introduction
  117.    This document obsoletes RFC 2138 [1].  A summary of the changes
  118.    between this document and RFC 2138 is available in the "Change Log"
  119.    appendix.
  120.    Managing dispersed serial line and modem pools for large numbers of
  121.    users can create the need for significant administrative support.
  122.    Since modem pools are by definition a link to the outside world, they
  123.    require careful attention to security, authorization and accounting.
  124.    This can be best achieved by managing a single "database" of users,
  125.    which allows for authentication (verifying user name and password) as
  126.    well as configuration information detailing the type of service to
  127.    deliver to the user (for example, SLIP, PPP, telnet, rlogin).
  128. Rigney, et al.              Standards Track                     [Page 3]
  129. RFC 2865                         RADIUS                        June 2000
  130.    Key features of RADIUS are:
  131.    Client/Server Model
  132.       A Network Access Server (NAS) operates as a client of RADIUS.  The
  133.       client is responsible for passing user information to designated
  134.       RADIUS servers, and then acting on the response which is returned.
  135.       RADIUS servers are responsible for receiving user connection
  136.       requests, authenticating the user, and then returning all
  137.       configuration information necessary for the client to deliver
  138.       service to the user.
  139.       A RADIUS server can act as a proxy client to other RADIUS servers
  140.       or other kinds of authentication servers.
  141.    Network Security
  142.       Transactions between the client and RADIUS server are
  143.       authenticated through the use of a shared secret, which is never
  144.       sent over the network.  In addition, any user passwords are sent
  145.       encrypted between the client and RADIUS server, to eliminate the
  146.       possibility that someone snooping on an unsecure network could
  147.       determine a user's password.
  148.    Flexible Authentication Mechanisms
  149.       The RADIUS server can support a variety of methods to authenticate
  150.       a user.  When it is provided with the user name and original
  151.       password given by the user, it can support PPP PAP or CHAP, UNIX
  152.       login, and other authentication mechanisms.
  153.    Extensible Protocol
  154.       All transactions are comprised of variable length Attribute-
  155.       Length-Value 3-tuples.  New attribute values can be added without
  156.       disturbing existing implementations of the protocol.
  157. 1.1.  Specification of Requirements
  158.    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  159.    "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
  160.    document are to be interpreted as described in BCP 14 [2].  These key
  161.    words mean the same thing whether capitalized or not.
  162.    An implementation is not compliant if it fails to satisfy one or more
  163.    of the must or must not requirements for the protocols it implements.
  164.    An implementation that satisfies all the must, must not, should and
  165. Rigney, et al.              Standards Track                     [Page 4]
  166. RFC 2865                         RADIUS                        June 2000
  167.    should not requirements for its protocols is said to be
  168.    "unconditionally compliant"; one that satisfies all the must and must
  169.    not requirements but not all the should or should not requirements
  170.    for its protocols is said to be "conditionally compliant".
  171.    A NAS that does not implement a given service MUST NOT implement the
  172.    RADIUS attributes for that service.  For example, a NAS that is
  173.    unable to offer ARAP service MUST NOT implement the RADIUS attributes
  174.    for ARAP.  A NAS MUST treat a RADIUS access-accept authorizing an
  175.    unavailable service as an access-reject instead.
  176. 1.2.  Terminology
  177.    This document frequently uses the following terms:
  178.    service   The NAS provides a service to the dial-in user, such as PPP
  179.              or Telnet.
  180.    session   Each service provided by the NAS to a dial-in user
  181.              constitutes a session, with the beginning of the session
  182.              defined as the point where service is first provided and
  183.              the end of the session defined as the point where service
  184.              is ended.  A user may have multiple sessions in parallel or
  185.              series if the NAS supports that.
  186.    silently discard
  187.              This means the implementation discards the packet without
  188.              further processing.  The implementation SHOULD provide the
  189.              capability of logging the error, including the contents of
  190.              the silently discarded packet, and SHOULD record the event
  191.              in a statistics counter.
  192. 2.  Operation
  193.    When a client is configured to use RADIUS, any user of the client
  194.    presents authentication information to the client.  This might be
  195.    with a customizable login prompt, where the user is expected to enter
  196.    their username and password.  Alternatively, the user might use a
  197.    link framing protocol such as the Point-to-Point Protocol (PPP),
  198.    which has authentication packets which carry this information.
  199.    Once the client has obtained such information, it may choose to
  200.    authenticate using RADIUS.  To do so, the client creates an "Access-
  201.    Request" containing such Attributes as the user's name, the user's
  202.    password, the ID of the client and the Port ID which the user is
  203.    accessing.  When a password is present, it is hidden using a method
  204.    based on the RSA Message Digest Algorithm MD5 [3].
  205. Rigney, et al.              Standards Track                     [Page 5]
  206. RFC 2865                         RADIUS                        June 2000
  207.    The Access-Request is submitted to the RADIUS server via the network.
  208.    If no response is returned within a length of time, the request is
  209.    re-sent a number of times.  The client can also forward requests to
  210.    an alternate server or servers in the event that the primary server
  211.    is down or unreachable.  An alternate server can be used either after
  212.    a number of tries to the primary server fail, or in a round-robin
  213.    fashion.  Retry and fallback algorithms are the topic of current
  214.    research and are not specified in detail in this document.
  215.    Once the RADIUS server receives the request, it validates the sending
  216.    client.  A request from a client for which the RADIUS server does not
  217.    have a shared secret MUST be silently discarded.  If the client is
  218.    valid, the RADIUS server consults a database of users to find the
  219.    user whose name matches the request.  The user entry in the database
  220.    contains a list of requirements which must be met to allow access for
  221.    the user.  This always includes verification of the password, but can
  222.    also specify the client(s) or port(s) to which the user is allowed
  223.    access.
  224.    The RADIUS server MAY make requests of other servers in order to
  225.    satisfy the request, in which case it acts as a client.
  226.    If any Proxy-State attributes were present in the Access-Request,
  227.    they MUST be copied unmodified and in order into the response packet.
  228.    Other Attributes can be placed before, after, or even between the
  229.    Proxy-State attributes.
  230.    If any condition is not met, the RADIUS server sends an "Access-
  231.    Reject" response indicating that this user request is invalid.  If
  232.    desired, the server MAY include a text message in the Access-Reject
  233.    which MAY be displayed by the client to the user.  No other
  234.    Attributes (except Proxy-State) are permitted in an Access-Reject.
  235.    If all conditions are met and the RADIUS server wishes to issue a
  236.    challenge to which the user must respond, the RADIUS server sends an
  237.    "Access-Challenge" response.  It MAY include a text message to be
  238.    displayed by the client to the user prompting for a response to the
  239.    challenge, and MAY include a State attribute.
  240.    If the client receives an Access-Challenge and supports
  241.    challenge/response it MAY display the text message, if any, to the
  242.    user, and then prompt the user for a response.  The client then re-
  243.    submits its original Access-Request with a new request ID, with the
  244.    User-Password Attribute replaced by the response (encrypted), and
  245.    including the State Attribute from the Access-Challenge, if any.
  246.    Only 0 or 1 instances of the State Attribute SHOULD be
  247. Rigney, et al.              Standards Track                     [Page 6]
  248. RFC 2865                         RADIUS                        June 2000
  249.    present in a request.  The server can respond to this new Access-
  250.    Request with either an Access-Accept, an Access-Reject, or another
  251.    Access-Challenge.
  252.    If all conditions are met, the list of configuration values for the
  253.    user are placed into an "Access-Accept" response.  These values
  254.    include the type of service (for example: SLIP, PPP, Login User) and
  255.    all necessary values to deliver the desired service.  For SLIP and
  256.    PPP, this may include values such as IP address, subnet mask, MTU,
  257.    desired compression, and desired packet filter identifiers.  For
  258.    character mode users, this may include values such as desired
  259.    protocol and host.
  260. 2.1.  Challenge/Response
  261.    In challenge/response authentication, the user is given an
  262.    unpredictable number and challenged to encrypt it and give back the
  263.    result. Authorized users are equipped with special devices such as
  264.    smart cards or software that facilitate calculation of the correct
  265.    response with ease. Unauthorized users, lacking the appropriate
  266.    device or software and lacking knowledge of the secret key necessary
  267.    to emulate such a device or software, can only guess at the response.
  268.    The Access-Challenge packet typically contains a Reply-Message
  269.    including a challenge to be displayed to the user, such as a numeric
  270.    value unlikely ever to be repeated. Typically this is obtained from
  271.    an external server that knows what type of authenticator is in the
  272.    possession of the authorized user and can therefore choose a random
  273.    or non-repeating pseudorandom number of an appropriate radix and
  274.    length.
  275.    The user then enters the challenge into his device (or software) and
  276.    it calculates a response, which the user enters into the client which
  277.    forwards it to the RADIUS server via a second Access-Request.  If the
  278.    response matches the expected response the RADIUS server replies with
  279.    an Access-Accept, otherwise an Access-Reject.
  280.    Example: The NAS sends an Access-Request packet to the RADIUS Server
  281.    with NAS-Identifier, NAS-Port, User-Name, User-Password (which may
  282.    just be a fixed string like "challenge" or ignored).  The server
  283.    sends back an Access-Challenge packet with State and a Reply-Message
  284.    along the lines of "Challenge 12345678, enter your response at the
  285.    prompt" which the NAS displays.  The NAS prompts for the response and
  286.    sends a NEW Access-Request to the server (with a new ID) with NAS-
  287.    Identifier, NAS-Port, User-Name, User-Password (the response just
  288.    entered by the user, encrypted), and the same State Attribute that
  289. Rigney, et al.              Standards Track                     [Page 7]
  290. RFC 2865                         RADIUS                        June 2000
  291.    came with the Access-Challenge.  The server then sends back either an
  292.    Access-Accept or Access-Reject based on whether the response matches
  293.    the required value, or it can even send another Access-Challenge.
  294. 2.2.  Interoperation with PAP and CHAP
  295.    For PAP, the NAS takes the PAP ID and password and sends them in an
  296.    Access-Request packet as the User-Name and User-Password. The NAS MAY
  297.    include the Attributes Service-Type = Framed-User and Framed-Protocol
  298.    = PPP as a hint to the RADIUS server that PPP service is expected.
  299.    For CHAP, the NAS generates a random challenge (preferably 16 octets)
  300.    and sends it to the user, who returns a CHAP response along with a
  301.    CHAP ID and CHAP username.  The NAS then sends an Access-Request
  302.    packet to the RADIUS server with the CHAP username as the User-Name
  303.    and with the CHAP ID and CHAP response as the CHAP-Password
  304.    (Attribute 3).  The random challenge can either be included in the
  305.    CHAP-Challenge attribute or, if it is 16 octets long, it can be
  306.    placed in the Request Authenticator field of the Access-Request
  307.    packet.  The NAS MAY include the Attributes Service-Type = Framed-
  308.    User and Framed-Protocol = PPP as a hint to the RADIUS server that
  309.    PPP service is expected.
  310.    The RADIUS server looks up a password based on the User-Name,
  311.    encrypts the challenge using MD5 on the CHAP ID octet, that password,
  312.    and the CHAP challenge (from the CHAP-Challenge attribute if present,
  313.    otherwise from the Request Authenticator), and compares that result
  314.    to the CHAP-Password.  If they match, the server sends back an
  315.    Access-Accept, otherwise it sends back an Access-Reject.
  316.    If the RADIUS server is unable to perform the requested
  317.    authentication it MUST return an Access-Reject.  For example, CHAP
  318.    requires that the user's password be available in cleartext to the
  319.    server so that it can encrypt the CHAP challenge and compare that to
  320.    the CHAP response.  If the password is not available in cleartext to
  321.    the RADIUS server then the server MUST send an Access-Reject to the
  322.    client.
  323. 2.3.  Proxy
  324.    With proxy RADIUS, one RADIUS server receives an authentication (or
  325.    accounting) request from a RADIUS client (such as a NAS), forwards
  326.    the request to a remote RADIUS server, receives the reply from the
  327.    remote server, and sends that reply to the client, possibly with
  328.    changes to reflect local administrative policy.  A common use for
  329.    proxy RADIUS is roaming.  Roaming permits two or more administrative
  330.    entities to allow each other's users to dial in to either entity's
  331.    network for service.
  332. Rigney, et al.              Standards Track                     [Page 8]
  333. RFC 2865                         RADIUS                        June 2000
  334.    The NAS sends its RADIUS access-request to the "forwarding server"
  335.    which forwards it to the "remote server".  The remote server sends a
  336.    response (Access-Accept, Access-Reject, or Access-Challenge) back to
  337.    the forwarding server, which sends it back to the NAS.  The User-Name
  338.    attribute MAY contain a Network Access Identifier [8] for RADIUS
  339.    Proxy operations.  The choice of which server receives the forwarded
  340.    request SHOULD be based on the authentication "realm". The
  341.    authentication realm MAY be the realm part of a Network Access
  342.    Identifier (a "named realm").  Alternatively, the choice of which
  343.    server receives the forwarded request MAY be based on whatever other
  344.    criteria the forwarding server is configured to use, such as Called-
  345.    Station-Id (a "numbered realm").
  346.    A RADIUS server can function as both a forwarding server and a remote
  347.    server, serving as a forwarding server for some realms and a remote
  348.    server for other realms.  One forwarding server can act as a
  349.    forwarder for any number of remote servers.  A remote server can have
  350.    any number of servers forwarding to it and can provide authentication
  351.    for any number of realms.  One forwarding server can forward to
  352.    another forwarding server to create a chain of proxies, although care
  353.    must be taken to avoid introducing loops.
  354.    The following scenario illustrates a proxy RADIUS communication
  355.    between a NAS and the forwarding and remote RADIUS servers:
  356.    1. A NAS sends its access-request to the forwarding server.
  357.    2. The forwarding server forwards the access-request to the remote
  358.       server.
  359.    3. The remote server sends an access-accept, access-reject or
  360.       access-challenge back to the forwarding server.  For this example,
  361.       an access-accept is sent.
  362.    4. The forwarding server sends the access-accept to the NAS.
  363.    The forwarding server MUST treat any Proxy-State attributes already
  364.    in the packet as opaque data.  Its operation MUST NOT depend on the
  365.    content of Proxy-State attributes added by previous servers.
  366.    If there are any Proxy-State attributes in the request received from
  367.    the client, the forwarding server MUST include those Proxy-State
  368.    attributes in its reply to the client.  The forwarding server MAY
  369.    include the Proxy-State attributes in the access-request when it
  370.    forwards the request, or MAY omit them in the forwarded request.  If
  371.    the forwarding server omits the Proxy-State attributes in the
  372.    forwarded access-request, it MUST attach them to the response before
  373.    sending it to the client.
  374. Rigney, et al.              Standards Track                     [Page 9]
  375. RFC 2865                         RADIUS                        June 2000
  376.    We now examine each step in more detail.
  377.    1. A NAS sends its access-request to the forwarding server.  The
  378.       forwarding server decrypts the User-Password, if present, using
  379.       the shared secret it knows for the NAS.  If a CHAP-Password
  380.       attribute is present in the packet and no CHAP-Challenge attribute
  381.       is present, the forwarding server MUST leave the Request-
  382.       Authenticator untouched or copy it to a CHAP-Challenge attribute.
  383.    '' The forwarding server MAY add one Proxy-State attribute to the
  384.       packet.  (It MUST NOT add more than one.)  If it adds a Proxy-
  385.       State, the Proxy-State MUST appear after any other Proxy-States in
  386.       the packet.  The forwarding server MUST NOT modify any other
  387.       Proxy-States that were in the packet (it may choose not to forward
  388.       them, but it MUST NOT change their contents).  The forwarding
  389.       server MUST NOT change the order of any attributes of the same
  390.       type, including Proxy-State.
  391.    2. The forwarding server encrypts the User-Password, if present,
  392.       using the secret it shares with the remote server, sets the
  393.       Identifier as needed, and forwards the access-request to the
  394.       remote server.
  395.    3. The remote server (if the final destination) verifies the user
  396.       using User-Password, CHAP-Password, or such method as future
  397.       extensions may dictate, and returns an access-accept, access-
  398.       reject or access-challenge back to the forwarding server.  For
  399.       this example, an access-accept is sent.  The remote server MUST
  400.       copy all Proxy-State attributes (and only the Proxy-State
  401.       attributes) in order from the access-request to the response
  402.       packet, without modifying them.
  403.    4. The forwarding server verifies the Response Authenticator using
  404.       the secret it shares with the remote server, and silently discards
  405.       the packet if it fails verification.  If the packet passes
  406.       verification, the forwarding server removes the last Proxy-State
  407.       (if it attached one), signs the Response Authenticator using the
  408.       secret it shares with the NAS, restores the Identifier to match
  409.       the one in the original request by the NAS, and sends the access-
  410.       accept to the NAS.
  411.    A forwarding server MAY need to modify attributes to enforce local
  412.    policy.  Such policy is outside the scope of this document, with the
  413.    following restrictions.  A forwarding server MUST not modify existing
  414.    Proxy-State, State, or Class attributes present in the packet.
  415. Rigney, et al.              Standards Track                    [Page 10]
  416. RFC 2865                         RADIUS                        June 2000
  417.    Implementers of forwarding servers should consider carefully which
  418.    values it is willing to accept for Service-Type.  Careful
  419.    consideration must be given to the effects of passing along Service-
  420.    Types of NAS-Prompt or Administrative in a proxied Access-Accept, and
  421.    implementers may wish to provide mechanisms to block those or other
  422.    service types, or other attributes.  Such mechanisms are outside the
  423.    scope of this document.
  424. 2.4.  Why UDP?
  425.    A frequently asked question is why RADIUS uses UDP instead of TCP as
  426.    a transport protocol.  UDP was chosen for strictly technical reasons.
  427.    There are a number of issues which must be understood.  RADIUS is a
  428.    transaction based protocol which has several interesting
  429.    characteristics:
  430.    1. If the request to a primary Authentication server fails, a
  431.       secondary server must be queried.
  432.       To meet this requirement, a copy of the request must be kept above
  433.       the transport layer to allow for alternate transmission.  This
  434.       means that retransmission timers are still required.
  435.    2. The timing requirements of this particular protocol are
  436.       significantly different than TCP provides.
  437.       At one extreme, RADIUS does not require a "responsive" detection
  438.       of lost data.  The user is willing to wait several seconds for the
  439.       authentication to complete.  The generally aggressive TCP
  440.       retransmission (based on average round trip time) is not required,
  441.       nor is the acknowledgement overhead of TCP.
  442.       At the other extreme, the user is not willing to wait several
  443.       minutes for authentication.  Therefore the reliable delivery of
  444.       TCP data two minutes later is not useful.  The faster use of an
  445.       alternate server allows the user to gain access before giving up.
  446.    3. The stateless nature of this protocol simplifies the use of UDP.
  447.       Clients and servers come and go.  Systems are rebooted, or are
  448.       power cycled independently.  Generally this does not cause a
  449.       problem and with creative timeouts and detection of lost TCP
  450.       connections, code can be written to handle anomalous events.  UDP
  451.       however completely eliminates any of this special handling.  Each
  452.       client and server can open their UDP transport just once and leave
  453.       it open through all types of failure events on the network.
  454. Rigney, et al.              Standards Track                    [Page 11]
  455. RFC 2865                         RADIUS                        June 2000
  456.    4. UDP simplifies the server implementation.
  457.       In the earliest implementations of RADIUS, the server was single
  458.       threaded.  This means that a single request was received,
  459.       processed, and returned.  This was found to be unmanageable in
  460.       environments where the back-end security mechanism took real time
  461.       (1 or more seconds).  The server request queue would fill and in
  462.       environments where hundreds of people were being authenticated
  463.       every minute, the request turn-around time increased to longer
  464.       than users were willing to wait (this was especially severe when a
  465.       specific lookup in a database or over DNS took 30 or more
  466.       seconds).  The obvious solution was to make the server multi-
  467.       threaded.  Achieving this was simple with UDP.  Separate processes
  468.       were spawned to serve each request and these processes could
  469.       respond directly to the client NAS with a simple UDP packet to the
  470.       original transport of the client.
  471.    It's not all a panacea.  As noted, using UDP requires one thing which
  472.    is built into TCP: with UDP we must artificially manage
  473.    retransmission timers to the same server, although they don't require
  474.    the same attention to timing provided by TCP.  This one penalty is a
  475.    small price to pay for the advantages of UDP in this protocol.
  476.    Without TCP we would still probably be using tin cans connected by
  477.    string.  But for this particular protocol, UDP is a better choice.
  478. 2.5.  Retransmission Hints
  479.    If the RADIUS server and alternate RADIUS server share the same
  480.    shared secret, it is OK to retransmit the packet to the alternate
  481.    RADIUS server with the same ID and Request Authenticator, because the
  482.    content of the attributes haven't changed.  If you want to use a new
  483.    Request Authenticator when sending to the alternate server, you may.
  484.    If you change the contents of the User-Password attribute (or any
  485.    other attribute), you need a new Request Authenticator and therefore
  486.    a new ID.
  487.    If the NAS is retransmitting a RADIUS request to the same server as
  488.    before, and the attributes haven't changed, you MUST use the same
  489.    Request Authenticator, ID, and source port.  If any attributes have
  490.    changed, you MUST use a new Request Authenticator and ID.
  491.    A NAS MAY use the same ID across all servers, or MAY keep track of
  492.    IDs separately for each server, it is up to the implementer.  If a
  493.    NAS needs more than 256 IDs for outstanding requests, it MAY use
  494. Rigney, et al.              Standards Track                    [Page 12]
  495. RFC 2865                         RADIUS                        June 2000
  496.    additional source ports to send requests from, and keep track of IDs
  497.    for each source port.  This allows up to 16 million or so outstanding
  498.    requests at one time to a single server.
  499. 2.6.  Keep-Alives Considered Harmful
  500.    Some implementers have adopted the practice of sending test RADIUS
  501.    requests to see if a server is alive.  This practice is strongly
  502.    discouraged, since it adds to load and harms scalability without
  503.    providing any additional useful information.  Since a RADIUS request
  504.    is contained in a single datagram, in the time it would take you to
  505.    send a ping you could just send the RADIUS request, and getting a
  506.    reply tells you that the RADIUS server is up.  If you do not have a
  507.    RADIUS request to send, it does not matter if the server is up or
  508.    not, because you are not using it.
  509.    If you want to monitor your RADIUS server, use SNMP.  That's what
  510.    SNMP is for.
  511. 3.  Packet Format
  512.    Exactly one RADIUS packet is encapsulated in the UDP Data field [4],
  513.    where the UDP Destination Port field indicates 1812 (decimal).
  514.    When a reply is generated, the source and destination ports are
  515.    reversed.
  516.    This memo documents the RADIUS protocol.  The early deployment of
  517.    RADIUS was done using UDP port number 1645, which conflicts with the
  518.    "datametrics" service.  The officially assigned port number for
  519.    RADIUS is 1812.
  520. Rigney, et al.              Standards Track                    [Page 13]
  521. RFC 2865                         RADIUS                        June 2000
  522.    A summary of the RADIUS data format is shown below.  The fields are
  523.    transmitted from left to right.
  524.     0                   1                   2                   3
  525.     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
  526.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  527.    |     Code      |  Identifier   |            Length             |
  528.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  529.    |                                                               |
  530.    |                         Authenticator                         |
  531.    |                                                               |
  532.    |                                                               |
  533.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  534.    |  Attributes ...
  535.    +-+-+-+-+-+-+-+-+-+-+-+-+-
  536.    Code
  537.       The Code field is one octet, and identifies the type of RADIUS
  538.       packet.  When a packet is received with an invalid Code field, it
  539.       is silently discarded.
  540.       RADIUS Codes (decimal) are assigned as follows:
  541.         1       Access-Request
  542.         2       Access-Accept
  543.         3       Access-Reject
  544.         4       Accounting-Request
  545.         5       Accounting-Response
  546.        11       Access-Challenge
  547.        12       Status-Server (experimental)
  548.        13       Status-Client (experimental)
  549.       255       Reserved
  550.    Codes 4 and 5 are covered in the RADIUS Accounting document [5].
  551.    Codes 12 and 13 are reserved for possible use, but are not further
  552.    mentioned here.
  553.    Identifier
  554.       The Identifier field is one octet, and aids in matching requests
  555.       and replies.  The RADIUS server can detect a duplicate request if
  556.       it has the same client source IP address and source UDP port and
  557.       Identifier within a short span of time.
  558. Rigney, et al.              Standards Track                    [Page 14]
  559. RFC 2865                         RADIUS                        June 2000
  560.    Length
  561.       The Length field is two octets.  It indicates the length of the
  562.       packet including the Code, Identifier, Length, Authenticator and
  563.       Attribute fields.  Octets outside the range of the Length field
  564.       MUST be treated as padding and ignored on reception.  If the
  565.       packet is shorter than the Length field indicates, it MUST be
  566.       silently discarded.  The minimum length is 20 and maximum length
  567.       is 4096.
  568.    Authenticator
  569.       The Authenticator field is sixteen (16) octets.  The most
  570.       significant octet is transmitted first.  This value is used to
  571.       authenticate the reply from the RADIUS server, and is used in the
  572.       password hiding algorithm.
  573.       Request Authenticator
  574.          In Access-Request Packets, the Authenticator value is a 16
  575.          octet random number, called the Request Authenticator.  The
  576.          value SHOULD be unpredictable and unique over the lifetime of a
  577.          secret (the password shared between the client and the RADIUS
  578.          server), since repetition of a request value in conjunction
  579.          with the same secret would permit an attacker to reply with a
  580.          previously intercepted response.  Since it is expected that the
  581.          same secret MAY be used to authenticate with servers in
  582.          disparate geographic regions, the Request Authenticator field
  583.          SHOULD exhibit global and temporal uniqueness.
  584.          The Request Authenticator value in an Access-Request packet
  585.          SHOULD also be unpredictable, lest an attacker trick a server
  586.          into responding to a predicted future request, and then use the
  587.          response to masquerade as that server to a future Access-
  588.          Request.
  589.          Although protocols such as RADIUS are incapable of protecting
  590.          against theft of an authenticated session via realtime active
  591.          wiretapping attacks, generation of unique unpredictable
  592.          requests can protect against a wide range of active attacks
  593.          against authentication.
  594.          The NAS and RADIUS server share a secret.  That shared secret
  595.          followed by the Request Authenticator is put through a one-way
  596.          MD5 hash to create a 16 octet digest value which is xored with
  597.          the password entered by the user, and the xored result placed
  598. Rigney, et al.              Standards Track                    [Page 15]
  599. RFC 2865                         RADIUS                        June 2000
  600.          in the User-Password attribute in the Access-Request packet.
  601.          See the entry for User-Password in the section on Attributes
  602.          for a more detailed description.
  603.       Response Authenticator
  604.          The value of the Authenticator field in Access-Accept, Access-
  605.          Reject, and Access-Challenge packets is called the Response
  606.          Authenticator, and contains a one-way MD5 hash calculated over
  607.          a stream of octets consisting of: the RADIUS packet, beginning
  608.          with the Code field, including the Identifier, the Length, the
  609.          Request Authenticator field from the Access-Request packet, and
  610.          the response Attributes, followed by the shared secret.  That
  611.          is, ResponseAuth =
  612.          MD5(Code+ID+Length+RequestAuth+Attributes+Secret) where +
  613.          denotes concatenation.
  614.    Administrative Note
  615.       The secret (password shared between the client and the RADIUS
  616.       server) SHOULD be at least as large and unguessable as a well-
  617.       chosen password.  It is preferred that the secret be at least 16
  618.       octets.  This is to ensure a sufficiently large range for the
  619.       secret to provide protection against exhaustive search attacks.
  620.       The secret MUST NOT be empty (length 0) since this would allow
  621.       packets to be trivially forged.
  622.       A RADIUS server MUST use the source IP address of the RADIUS UDP
  623.       packet to decide which shared secret to use, so that RADIUS
  624.       requests can be proxied.
  625.       When using a forwarding proxy, the proxy must be able to alter the
  626.       packet as it passes through in each direction - when the proxy
  627.       forwards the request, the proxy MAY add a Proxy-State Attribute,
  628.       and when the proxy forwards a response, it MUST remove its Proxy-
  629.       State Attribute if it added one.  Proxy-State is always added or
  630.       removed after any other Proxy-States, but no other assumptions
  631.       regarding its location within the list of attributes can be made.
  632.       Since Access-Accept and Access-Reject replies are authenticated on
  633.       the entire packet contents, the stripping of the Proxy-State
  634.       attribute invalidates the signature in the packet - so the proxy
  635.       has to re-sign it.
  636.       Further details of RADIUS proxy implementation are outside the
  637.       scope of this document.
  638. Rigney, et al.              Standards Track                    [Page 16]
  639. RFC 2865                         RADIUS                        June 2000
  640. 4.  Packet Types
  641.    The RADIUS Packet type is determined by the Code field in the first
  642.    octet of the Packet.
  643. 4.1.  Access-Request
  644.    Description
  645.       Access-Request packets are sent to a RADIUS server, and convey
  646.       information used to determine whether a user is allowed access to
  647.       a specific NAS, and any special services requested for that user.
  648.       An implementation wishing to authenticate a user MUST transmit a
  649.       RADIUS packet with the Code field set to 1 (Access-Request).
  650.       Upon receipt of an Access-Request from a valid client, an
  651.       appropriate reply MUST be transmitted.
  652.       An Access-Request SHOULD contain a User-Name attribute.  It MUST
  653.       contain either a NAS-IP-Address attribute or a NAS-Identifier
  654.       attribute (or both).
  655.       An Access-Request MUST contain either a User-Password or a CHAP-
  656.       Password or a State.  An Access-Request MUST NOT contain both a
  657.       User-Password and a CHAP-Password.  If future extensions allow
  658.       other kinds of authentication information to be conveyed, the
  659.       attribute for that can be used in an Access-Request instead of
  660.       User-Password or CHAP-Password.
  661.       An Access-Request SHOULD contain a NAS-Port or NAS-Port-Type
  662.       attribute or both unless the type of access being requested does
  663.       not involve a port or the NAS does not distinguish among its
  664.       ports.
  665.       An Access-Request MAY contain additional attributes as a hint to
  666.       the server, but the server is not required to honor the hint.
  667.       When a User-Password is present, it is hidden using a method based
  668.       on the RSA Message Digest Algorithm MD5 [3].
  669. Rigney, et al.              Standards Track                    [Page 17]
  670. RFC 2865                         RADIUS                        June 2000
  671.    A summary of the Access-Request packet format is shown below.  The
  672.    fields are transmitted from left to right.
  673.     0                   1                   2                   3
  674.     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
  675.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  676.    |     Code      |  Identifier   |            Length             |
  677.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  678.    |                                                               |
  679.    |                     Request Authenticator                     |
  680.    |                                                               |
  681.    |                                                               |
  682.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  683.    |  Attributes ...
  684.    +-+-+-+-+-+-+-+-+-+-+-+-+-
  685.    Code
  686.       1 for Access-Request.
  687.    Identifier
  688.       The Identifier field MUST be changed whenever the content of the
  689.       Attributes field changes, and whenever a valid reply has been
  690.       received for a previous request.  For retransmissions, the
  691.       Identifier MUST remain unchanged.
  692.    Request Authenticator
  693.       The Request Authenticator value MUST be changed each time a new
  694.       Identifier is used.
  695.    Attributes
  696.       The Attribute field is variable in length, and contains the list
  697.       of Attributes that are required for the type of service, as well
  698.       as any desired optional Attributes.
  699. 4.2.  Access-Accept
  700.    Description
  701.       Access-Accept packets are sent by the RADIUS server, and provide
  702.       specific configuration information necessary to begin delivery of
  703.       service to the user.  If all Attribute values received in an
  704.       Access-Request are acceptable then the RADIUS implementation MUST
  705.       transmit a packet with the Code field set to 2 (Access-Accept).
  706. Rigney, et al.              Standards Track                    [Page 18]
  707. RFC 2865                         RADIUS                        June 2000
  708.       On reception of an Access-Accept, the Identifier field is matched
  709.       with a pending Access-Request.  The Response Authenticator field
  710.       MUST contain the correct response for the pending Access-Request.
  711.       Invalid packets are silently discarded.
  712.    A summary of the Access-Accept packet format is shown below.  The
  713.    fields are transmitted from left to right.
  714.     0                   1                   2                   3
  715.     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
  716.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  717.    |     Code      |  Identifier   |            Length             |
  718.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  719.    |                                                               |
  720.    |                     Response Authenticator                    |
  721.    |                                                               |
  722.    |                                                               |
  723.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  724.    |  Attributes ...
  725.    +-+-+-+-+-+-+-+-+-+-+-+-+-
  726.    Code
  727.       2 for Access-Accept.
  728.    Identifier
  729.       The Identifier field is a copy of the Identifier field of the
  730.       Access-Request which caused this Access-Accept.
  731.    Response Authenticator
  732.       The Response Authenticator value is calculated from the Access-
  733.       Request value, as described earlier.
  734.    Attributes
  735.       The Attribute field is variable in length, and contains a list of
  736.       zero or more Attributes.
  737. Rigney, et al.              Standards Track                    [Page 19]
  738. RFC 2865                         RADIUS                        June 2000
  739. 4.3.  Access-Reject
  740.    Description
  741.       If any value of the received Attributes is not acceptable, then
  742.       the RADIUS server MUST transmit a packet with the Code field set
  743.       to 3 (Access-Reject).  It MAY include one or more Reply-Message
  744.       Attributes with a text message which the NAS MAY display to the
  745.       user.
  746.    A summary of the Access-Reject packet format is shown below.  The
  747.    fields are transmitted from left to right.
  748.     0                   1                   2                   3
  749.     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
  750.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  751.    |     Code      |  Identifier   |            Length             |
  752.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  753.    |                                                               |
  754.    |                     Response Authenticator                    |
  755.    |                                                               |
  756.    |                                                               |
  757.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  758.    |  Attributes ...
  759.    +-+-+-+-+-+-+-+-+-+-+-+-+-
  760.    Code
  761.       3 for Access-Reject.
  762.    Identifier
  763.       The Identifier field is a copy of the Identifier field of the
  764.       Access-Request which caused this Access-Reject.
  765.    Response Authenticator
  766.       The Response Authenticator value is calculated from the Access-
  767.       Request value, as described earlier.
  768.    Attributes
  769.       The Attribute field is variable in length, and contains a list of
  770.       zero or more Attributes.
  771. Rigney, et al.              Standards Track                    [Page 20]
  772. RFC 2865                         RADIUS                        June 2000
  773. 4.4.  Access-Challenge
  774.    Description
  775.       If the RADIUS server desires to send the user a challenge
  776.       requiring a response, then the RADIUS server MUST respond to the
  777.       Access-Request by transmitting a packet with the Code field set to
  778.       11 (Access-Challenge).
  779.       The Attributes field MAY have one or more Reply-Message
  780.       Attributes, and MAY have a single State Attribute, or none.
  781.       Vendor-Specific, Idle-Timeout, Session-Timeout and Proxy-State
  782.       attributes MAY also be included.  No other Attributes defined in
  783.       this document are permitted in an Access-Challenge.
  784.       On receipt of an Access-Challenge, the Identifier field is matched
  785.       with a pending Access-Request.  Additionally, the Response
  786.       Authenticator field MUST contain the correct response for the
  787.       pending Access-Request.  Invalid packets are silently discarded.
  788.       If the NAS does not support challenge/response, it MUST treat an
  789.       Access-Challenge as though it had received an Access-Reject
  790.       instead.
  791.       If the NAS supports challenge/response, receipt of a valid
  792.       Access-Challenge indicates that a new Access-Request SHOULD be
  793.       sent.  The NAS MAY display the text message, if any, to the user,
  794.       and then prompt the user for a response.  It then sends its
  795.       original Access-Request with a new request ID and Request
  796.       Authenticator, with the User-Password Attribute replaced by the
  797.       user's response (encrypted), and including the State Attribute
  798.       from the Access-Challenge, if any.  Only 0 or 1 instances of the
  799.       State Attribute can be present in an Access-Request.
  800.       A NAS which supports PAP MAY forward the Reply-Message to the
  801.       dialing client and accept a PAP response which it can use as
  802.       though the user had entered the response.  If the NAS cannot do
  803.       so, it MUST treat the Access-Challenge as though it had received
  804.       an Access-Reject instead.
  805. Rigney, et al.              Standards Track                    [Page 21]
  806. RFC 2865                         RADIUS                        June 2000
  807.    A summary of the Access-Challenge packet format is shown below.  The
  808.    fields are transmitted from left to right.
  809.     0                   1                   2                   3
  810.     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
  811.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  812.    |     Code      |  Identifier   |            Length             |
  813.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  814.    |                                                               |
  815.    |                     Response Authenticator                    |
  816.    |                                                               |
  817.    |                                                               |
  818.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  819.    |  Attributes ...
  820.    +-+-+-+-+-+-+-+-+-+-+-+-+-
  821.    Code
  822.       11 for Access-Challenge.
  823.    Identifier
  824.       The Identifier field is a copy of the Identifier field of the
  825.       Access-Request which caused this Access-Challenge.
  826.    Response Authenticator
  827.       The Response Authenticator value is calculated from the Access-
  828.       Request value, as described earlier.
  829.    Attributes
  830.       The Attributes field is variable in length, and contains a list of
  831.       zero or more Attributes.
  832. 5.  Attributes
  833.    RADIUS Attributes carry the specific authentication, authorization,
  834.    information and configuration details for the request and reply.
  835.    The end of the list of Attributes is indicated by the Length of the
  836.    RADIUS packet.
  837.    Some Attributes MAY be included more than once.  The effect of this
  838.    is Attribute specific, and is specified in each Attribute
  839.    description.  A summary table is provided at the end of the
  840.    "Attributes" section.
  841. Rigney, et al.              Standards Track                    [Page 22]
  842. RFC 2865                         RADIUS                        June 2000
  843.    If multiple Attributes with the same Type are present, the order of
  844.    Attributes with the same Type MUST be preserved by any proxies.  The
  845.    order of Attributes of different Types is not required to be
  846.    preserved.  A RADIUS server or client MUST NOT have any dependencies
  847.    on the order of attributes of different types.  A RADIUS server or
  848.    client MUST NOT require attributes of the same type to be contiguous.
  849.    Where an Attribute's description limits which kinds of packet it can
  850.    be contained in, this applies only to the packet types defined in
  851.    this document, namely Access-Request, Access-Accept, Access-Reject
  852.    and Access-Challenge (Codes 1, 2, 3, and 11).  Other documents
  853.    defining other packet types may also use Attributes described here.
  854.    To determine which Attributes are allowed in Accounting-Request and
  855.    Accounting-Response packets (Codes 4 and 5) refer to the RADIUS
  856.    Accounting document [5].
  857.    Likewise where packet types defined here state that only certain
  858.    Attributes are permissible in them, future memos defining new
  859.    Attributes should indicate which packet types the new Attributes may
  860.    be present in.
  861.    A summary of the Attribute format is shown below.  The fields are
  862.    transmitted from left to right.
  863.     0                   1                   2
  864.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
  865.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  866.    |     Type      |    Length     |  Value ...
  867.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  868.    Type
  869.       The Type field is one octet.  Up-to-date values of the RADIUS Type
  870.       field are specified in the most recent "Assigned Numbers" RFC [6].
  871.       Values 192-223 are reserved for experimental use, values 224-240
  872.       are reserved for implementation-specific use, and values 241-255
  873.       are reserved and should not be used.
  874.       A RADIUS server MAY ignore Attributes with an unknown Type.
  875.       A RADIUS client MAY ignore Attributes with an unknown Type.
  876. Rigney, et al.              Standards Track                    [Page 23]
  877. RFC 2865                         RADIUS                        June 2000
  878.       This specification concerns the following values:
  879.           1      User-Name
  880.           2      User-Password
  881.           3      CHAP-Password
  882.           4      NAS-IP-Address
  883.           5      NAS-Port
  884.           6      Service-Type
  885.           7      Framed-Protocol
  886.           8      Framed-IP-Address
  887.           9      Framed-IP-Netmask
  888.          10      Framed-Routing
  889.          11      Filter-Id
  890.          12      Framed-MTU
  891.          13      Framed-Compression
  892.          14      Login-IP-Host
  893.          15      Login-Service
  894.          16      Login-TCP-Port
  895.          17      (unassigned)
  896.          18      Reply-Message
  897.          19      Callback-Number
  898.          20      Callback-Id
  899.          21      (unassigned)
  900.          22      Framed-Route
  901.          23      Framed-IPX-Network
  902.          24      State
  903.          25      Class
  904.          26      Vendor-Specific
  905.          27      Session-Timeout
  906.          28      Idle-Timeout
  907.          29      Termination-Action
  908.          30      Called-Station-Id
  909.          31      Calling-Station-Id
  910.          32      NAS-Identifier
  911.          33      Proxy-State
  912.          34      Login-LAT-Service
  913.          35      Login-LAT-Node
  914.          36      Login-LAT-Group
  915.          37      Framed-AppleTalk-Link
  916.          38      Framed-AppleTalk-Network
  917.          39      Framed-AppleTalk-Zone
  918.          40-59   (reserved for accounting)
  919.          60      CHAP-Challenge
  920.          61      NAS-Port-Type
  921.          62      Port-Limit
  922.          63      Login-LAT-Port
  923. Rigney, et al.              Standards Track                    [Page 24]
  924. RFC 2865                         RADIUS                        June 2000
  925.    Length
  926.       The Length field is one octet, and indicates the length of this
  927.       Attribute including the Type, Length and Value fields.  If an
  928.       Attribute is received in an Access-Request but with an invalid
  929.       Length, an Access-Reject SHOULD be transmitted.  If an Attribute
  930.       is received in an Access-Accept, Access-Reject or Access-Challenge
  931.       packet with an invalid length, the packet MUST either be treated
  932.       as an Access-Reject or else silently discarded.
  933.    Value
  934.       The Value field is zero or more octets and contains information
  935.       specific to the Attribute.  The format and length of the Value
  936.       field is determined by the Type and Length fields.
  937.       Note that none of the types in RADIUS terminate with a NUL (hex
  938.       00).  In particular, types "text" and "string" in RADIUS do not
  939.       terminate with a NUL (hex 00).  The Attribute has a length field
  940.       and does not use a terminator.  Text contains UTF-8 encoded 10646
  941.       [7] characters and String contains 8-bit binary data.  Servers and
  942.       servers and clients MUST be able to deal with embedded nulls.
  943.       RADIUS implementers using C are cautioned not to use strcpy() when
  944.       handling strings.
  945.       The format of the value field is one of five data types.  Note
  946.       that type "text" is a subset of type "string".
  947.       text      1-253 octets containing UTF-8 encoded 10646 [7]
  948.                 characters.  Text of length zero (0) MUST NOT be sent;
  949.                 omit the entire attribute instead.
  950.       string    1-253 octets containing binary data (values 0 through
  951.                 255 decimal, inclusive).  Strings of length zero (0)
  952.                 MUST NOT be sent; omit the entire attribute instead.
  953.       address   32 bit value, most significant octet first.
  954.       integer   32 bit unsigned value, most significant octet first.
  955.       time      32 bit unsigned value, most significant octet first --
  956.                 seconds since 00:00:00 UTC, January 1, 1970.  The
  957.                 standard Attributes do not use this data type but it is
  958.                 presented here for possible use in future attributes.
  959. Rigney, et al.              Standards Track                    [Page 25]
  960. RFC 2865                         RADIUS                        June 2000
  961. 5.1.  User-Name
  962.    Description
  963.       This Attribute indicates the name of the user to be authenticated.
  964.       It MUST be sent in Access-Request packets if available.
  965.       It MAY be sent in an Access-Accept packet, in which case the
  966.       client SHOULD use the name returned in the Access-Accept packet in
  967.       all Accounting-Request packets for this session.  If the Access-
  968.       Accept includes Service-Type = Rlogin and the User-Name attribute,
  969.       a NAS MAY use the returned User-Name when performing the Rlogin
  970.       function.
  971.    A summary of the User-Name Attribute format is shown below.  The
  972.    fields are transmitted from left to right.
  973.     0                   1                   2
  974.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  975.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  976.    |     Type      |    Length     |  String ...
  977.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  978.    Type
  979.       1 for User-Name.
  980.    Length
  981.       >= 3
  982.    String
  983.       The String field is one or more octets.  The NAS may limit the
  984.       maximum length of the User-Name but the ability to handle at least
  985.       63 octets is recommended.
  986.       The format of the username MAY be one of several forms:
  987.       text      Consisting only of UTF-8 encoded 10646 [7] characters.
  988.       network access identifier
  989.                 A Network Access Identifier as described in RFC 2486
  990.                 [8].
  991.       distinguished name
  992.                 A name in ASN.1 form used in Public Key authentication
  993.                 systems.
  994. Rigney, et al.              Standards Track                    [Page 26]
  995. RFC 2865                         RADIUS                        June 2000
  996. 5.2.  User-Password
  997.    Description
  998.       This Attribute indicates the password of the user to be
  999.       authenticated, or the user's input following an Access-Challenge.
  1000.       It is only used in Access-Request packets.
  1001.       On transmission, the password is hidden.  The password is first
  1002.       padded at the end with nulls to a multiple of 16 octets.  A one-
  1003.       way MD5 hash is calculated over a stream of octets consisting of
  1004.       the shared secret followed by the Request Authenticator.  This
  1005.       value is XORed with the first 16 octet segment of the password and
  1006.       placed in the first 16 octets of the String field of the User-
  1007.       Password Attribute.
  1008.       If the password is longer than 16 characters, a second one-way MD5
  1009.       hash is calculated over a stream of octets consisting of the
  1010.       shared secret followed by the result of the first xor.  That hash
  1011.       is XORed with the second 16 octet segment of the password and
  1012.       placed in the second 16 octets of the String field of the User-
  1013.       Password Attribute.
  1014.       If necessary, this operation is repeated, with each xor result
  1015.       being used along with the shared secret to generate the next hash
  1016.       to xor the next segment of the password, to no more than 128
  1017.       characters.
  1018.       The method is taken from the book "Network Security" by Kaufman,
  1019.       Perlman and Speciner [9] pages 109-110.  A more precise
  1020.       explanation of the method follows:
  1021.       Call the shared secret S and the pseudo-random 128-bit Request
  1022.       Authenticator RA.  Break the password into 16-octet chunks p1, p2,
  1023.       etc.  with the last one padded at the end with nulls to a 16-octet
  1024.       boundary.  Call the ciphertext blocks c(1), c(2), etc.  We'll need
  1025.       intermediate values b1, b2, etc.
  1026.          b1 = MD5(S + RA)       c(1) = p1 xor b1
  1027.          b2 = MD5(S + c(1))     c(2) = p2 xor b2
  1028.                 .                       .
  1029.                 .                       .
  1030.                 .                       .
  1031.          bi = MD5(S + c(i-1))   c(i) = pi xor bi
  1032.       The String will contain c(1)+c(2)+...+c(i) where + denotes
  1033.       concatenation.
  1034. Rigney, et al.              Standards Track                    [Page 27]
  1035. RFC 2865                         RADIUS                        June 2000
  1036.       On receipt, the process is reversed to yield the original
  1037.       password.
  1038.    A summary of the User-Password Attribute format is shown below.  The
  1039.    fields are transmitted from left to right.
  1040.     0                   1                   2
  1041.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  1042.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1043.    |     Type      |    Length     |  String ...
  1044.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1045.    Type
  1046.       2 for User-Password.
  1047.    Length
  1048.       At least 18 and no larger than 130.
  1049.    String
  1050.       The String field is between 16 and 128 octets long, inclusive.
  1051. 5.3.  CHAP-Password
  1052.    Description
  1053.       This Attribute indicates the response value provided by a PPP
  1054.       Challenge-Handshake Authentication Protocol (CHAP) user in
  1055.       response to the challenge.  It is only used in Access-Request
  1056.       packets.
  1057.       The CHAP challenge value is found in the CHAP-Challenge Attribute
  1058.       (60) if present in the packet, otherwise in the Request
  1059.       Authenticator field.
  1060.    A summary of the CHAP-Password Attribute format is shown below.  The
  1061.    fields are transmitted from left to right.
  1062.     0                   1                   2
  1063.     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
  1064.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1065.    |     Type      |    Length     |  CHAP Ident   |  String ...
  1066.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1067. Rigney, et al.              Standards Track                    [Page 28]
  1068. RFC 2865                         RADIUS                        June 2000
  1069.    Type
  1070.       3 for CHAP-Password.
  1071.    Length
  1072.       19
  1073.    CHAP Ident
  1074.       This field is one octet, and contains the CHAP Identifier from the
  1075.       user's CHAP Response.
  1076.    String
  1077.       The String field is 16 octets, and contains the CHAP Response from
  1078.       the user.
  1079. 5.4.  NAS-IP-Address
  1080.    Description
  1081.       This Attribute indicates the identifying IP Address of the NAS
  1082.       which is requesting authentication of the user, and SHOULD be
  1083.       unique to the NAS within the scope of the RADIUS server. NAS-IP-
  1084.       Address is only used in Access-Request packets.  Either NAS-IP-
  1085.       Address or NAS-Identifier MUST be present in an Access-Request
  1086.       packet.
  1087.       Note that NAS-IP-Address MUST NOT be used to select the shared
  1088.       secret used to authenticate the request.  The source IP address of
  1089.       the Access-Request packet MUST be used to select the shared
  1090.       secret.
  1091.    A summary of the NAS-IP-Address Attribute format is shown below.  The
  1092.    fields are transmitted from left to right.
  1093.     0                   1                   2                   3
  1094.     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
  1095.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1096.    |     Type      |    Length     |            Address
  1097.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1098.             Address (cont)         |
  1099.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1100.    Type
  1101.       4 for NAS-IP-Address.
  1102. Rigney, et al.              Standards Track                    [Page 29]
  1103. RFC 2865                         RADIUS                        June 2000
  1104.    Length
  1105.       6
  1106.    Address
  1107.       The Address field is four octets.
  1108. 5.5.  NAS-Port
  1109.    Description
  1110.       This Attribute indicates the physical port number of the NAS which
  1111.       is authenticating the user.  It is only used in Access-Request
  1112.       packets.  Note that this is using "port" in its sense of a
  1113.       physical connection on the NAS, not in the sense of a TCP or UDP
  1114.       port number.  Either NAS-Port or NAS-Port-Type (61) or both SHOULD
  1115.       be present in an Access-Request packet, if the NAS differentiates
  1116.       among its ports.
  1117.    A summary of the NAS-Port Attribute format is shown below.  The
  1118.    fields are transmitted from left to right.
  1119.     0                   1                   2                   3
  1120.     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
  1121.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1122.    |     Type      |    Length     |             Value
  1123.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1124.               Value (cont)         |
  1125.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1126.    Type
  1127.       5 for NAS-Port.
  1128.    Length
  1129.       6
  1130.    Value
  1131.       The Value field is four octets.
  1132. Rigney, et al.              Standards Track                    [Page 30]
  1133. RFC 2865                         RADIUS                        June 2000
  1134. 5.6.  Service-Type
  1135.    Description
  1136.       This Attribute indicates the type of service the user has
  1137.       requested, or the type of service to be provided.  It MAY be used
  1138.       in both Access-Request and Access-Accept packets.  A NAS is not
  1139.       required to implement all of these service types, and MUST treat
  1140.       unknown or unsupported Service-Types as though an Access-Reject
  1141.       had been received instead.
  1142.    A summary of the Service-Type Attribute format is shown below.  The
  1143.    fields are transmitted from left to right.
  1144.     0                   1                   2                   3
  1145.     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
  1146.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1147.    |     Type      |    Length     |             Value
  1148.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1149.               Value (cont)         |
  1150.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1151.    Type
  1152.       6 for Service-Type.
  1153.    Length
  1154.       6
  1155.    Value
  1156.       The Value field is four octets.
  1157.        1      Login
  1158.        2      Framed
  1159.        3      Callback Login
  1160.        4      Callback Framed
  1161.        5      Outbound
  1162.        6      Administrative
  1163.        7      NAS Prompt
  1164.        8      Authenticate Only
  1165.        9      Callback NAS Prompt
  1166.       10      Call Check
  1167.       11      Callback Administrative
  1168. Rigney, et al.              Standards Track                    [Page 31]
  1169. RFC 2865                         RADIUS                        June 2000
  1170.       The service types are defined as follows when used in an Access-
  1171.       Accept.  When used in an Access-Request, they MAY be considered to
  1172.       be a hint to the RADIUS server that the NAS has reason to believe
  1173.       the user would prefer the kind of service indicated, but the
  1174.       server is not required to honor the hint.
  1175.       Login               The user should be connected to a host.
  1176.       Framed              A Framed Protocol should be started for the
  1177.                           User, such as PPP or SLIP.
  1178.       Callback Login      The user should be disconnected and called
  1179.                           back, then connected to a host.
  1180.       Callback Framed     The user should be disconnected and called
  1181.                           back, then a Framed Protocol should be started
  1182.                           for the User, such as PPP or SLIP.
  1183.       Outbound            The user should be granted access to outgoing
  1184.                           devices.
  1185.       Administrative      The user should be granted access to the
  1186.                           administrative interface to the NAS from which
  1187.                           privileged commands can be executed.
  1188.       NAS Prompt          The user should be provided a command prompt
  1189.                           on the NAS from which non-privileged commands
  1190.                           can be executed.
  1191.       Authenticate Only   Only Authentication is requested, and no
  1192.                           authorization information needs to be returned
  1193.                           in the Access-Accept (typically used by proxy
  1194.                           servers rather than the NAS itself).
  1195.       Callback NAS Prompt The user should be disconnected and called
  1196.                           back, then provided a command prompt on the
  1197.                           NAS from which non-privileged commands can be
  1198.                           executed.
  1199.       Call Check          Used by the NAS in an Access-Request packet to
  1200.                           indicate that a call is being received and
  1201.                           that the RADIUS server should send back an
  1202.                           Access-Accept to answer the call, or an
  1203.                           Access-Reject to not accept the call,
  1204.                           typically based on the Called-Station-Id or
  1205.                           Calling-Station-Id attributes.  It is
  1206. Rigney, et al.              Standards Track                    [Page 32]
  1207. RFC 2865                         RADIUS                        June 2000
  1208.                           recommended that such Access-Requests use the
  1209.                           value of Calling-Station-Id as the value of
  1210.                           the User-Name.
  1211.       Callback Administrative
  1212.                           The user should be disconnected and called
  1213.                           back, then granted access to the
  1214.                           administrative interface to the NAS from which
  1215.                           privileged commands can be executed.
  1216. 5.7.  Framed-Protocol
  1217.    Description
  1218.       This Attribute indicates the framing to be used for framed access.
  1219.       It MAY be used in both Access-Request and Access-Accept packets.
  1220.    A summary of the Framed-Protocol Attribute format is shown below.
  1221.    The fields are transmitted from left to right.
  1222.     0                   1                   2                   3
  1223.     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
  1224.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1225.    |     Type      |    Length     |             Value
  1226.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1227.               Value (cont)         |
  1228.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1229.    Type
  1230.       7 for Framed-Protocol.
  1231.    Length
  1232.       6
  1233.    Value
  1234.       The Value field is four octets.
  1235.       1      PPP
  1236.       2      SLIP
  1237.       3      AppleTalk Remote Access Protocol (ARAP)
  1238.       4      Gandalf proprietary SingleLink/MultiLink protocol
  1239.       5      Xylogics proprietary IPX/SLIP
  1240.       6      X.75 Synchronous
  1241. Rigney, et al.              Standards Track                    [Page 33]
  1242. RFC 2865                         RADIUS                        June 2000
  1243. 5.8.  Framed-IP-Address
  1244.    Description
  1245.       This Attribute indicates the address to be configured for the
  1246.       user.  It MAY be used in Access-Accept packets.  It MAY be used in
  1247.       an Access-Request packet as a hint by the NAS to the server that
  1248.       it would prefer that address, but the server is not required to
  1249.       honor the hint.
  1250.    A summary of the Framed-IP-Address Attribute format is shown below.
  1251.    The fields are transmitted from left to right.
  1252.     0                   1                   2                   3
  1253.     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
  1254.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1255.    |     Type      |    Length     |            Address
  1256.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1257.             Address (cont)         |
  1258.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1259.    Type
  1260.       8 for Framed-IP-Address.
  1261.    Length
  1262.       6
  1263.    Address
  1264.       The Address field is four octets.  The value 0xFFFFFFFF indicates
  1265.       that the NAS Should allow the user to select an address (e.g.
  1266.       Negotiated).  The value 0xFFFFFFFE indicates that the NAS should
  1267.       select an address for the user (e.g. Assigned from a pool of
  1268.       addresses kept by the NAS).  Other valid values indicate that the
  1269.       NAS should use that value as the user's IP address.
  1270. 5.9.  Framed-IP-Netmask
  1271.    Description
  1272.       This Attribute indicates the IP netmask to be configured for the
  1273.       user when the user is a router to a network.  It MAY be used in
  1274.       Access-Accept packets.  It MAY be used in an Access-Request packet
  1275.       as a hint by the NAS to the server that it would prefer that
  1276.       netmask, but the server is not required to honor the hint.
  1277. Rigney, et al.              Standards Track                    [Page 34]
  1278. RFC 2865                         RADIUS                        June 2000
  1279.    A summary of the Framed-IP-Netmask Attribute format is shown below.
  1280.    The fields are transmitted from left to right.
  1281.     0                   1                   2                   3
  1282.     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
  1283.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1284.    |     Type      |    Length     |            Address
  1285.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1286.             Address (cont)         |
  1287.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1288.    Type
  1289.       9 for Framed-IP-Netmask.
  1290.    Length
  1291.       6
  1292.    Address
  1293.       The Address field is four octets specifying the IP netmask of the
  1294.       user.
  1295. 5.10.  Framed-Routing
  1296.    Description
  1297.       This Attribute indicates the routing method for the user, when the
  1298.       user is a router to a network.  It is only used in Access-Accept
  1299.       packets.
  1300.    A summary of the Framed-Routing Attribute format is shown below.  The
  1301.    fields are transmitted from left to right.
  1302.     0                   1                   2                   3
  1303.     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
  1304.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1305.    |     Type      |    Length     |             Value
  1306.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1307.               Value (cont)         |
  1308.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1309.    Type
  1310.       10 for Framed-Routing.
  1311. Rigney, et al.              Standards Track                    [Page 35]
  1312. RFC 2865                         RADIUS                        June 2000
  1313.    Length
  1314.       6
  1315.    Value
  1316.       The Value field is four octets.
  1317.        0      None
  1318.        1      Send routing packets
  1319.        2      Listen for routing packets
  1320.        3      Send and Listen
  1321. 5.11.  Filter-Id
  1322.    Description
  1323.       This Attribute indicates the name of the filter list for this
  1324.       user.  Zero or more Filter-Id attributes MAY be sent in an
  1325.       Access-Accept packet.
  1326.       Identifying a filter list by name allows the filter to be used on
  1327.       different NASes without regard to filter-list implementation
  1328.       details.
  1329.    A summary of the Filter-Id Attribute format is shown below.  The
  1330.    fields are transmitted from left to right.
  1331.     0                   1                   2
  1332.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  1333.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1334.    |     Type      |    Length     |  Text ...
  1335.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
  1336.    Type
  1337.       11 for Filter-Id.
  1338.    Length
  1339.       >= 3
  1340.    Text
  1341.       The Text field is one or more octets, and its contents are
  1342.       implementation dependent.  It is intended to be human readable and
  1343.       MUST NOT affect operation of the protocol.  It is recommended that
  1344.       the message contain UTF-8 encoded 10646 [7] characters.
  1345. Rigney, et al.              Standards Track                    [Page 36]
  1346. RFC 2865                         RADIUS                        June 2000
  1347. 5.12.  Framed-MTU
  1348.    Description
  1349.       This Attribute indicates the Maximum Transmission Unit to be
  1350.       configured for the user, when it is not negotiated by some other
  1351.       means (such as PPP).  It MAY be used in Access-Accept packets.  It
  1352.       MAY be used in an Access-Request packet as a hint by the NAS to
  1353.       the server that it would prefer that value, but the server is not
  1354.       required to honor the hint.
  1355.    A summary of the Framed-MTU Attribute format is shown below.  The
  1356.    fields are transmitted from left to right.
  1357.     0                   1                   2                   3
  1358.     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
  1359.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1360.    |     Type      |    Length     |             Value
  1361.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1362.               Value (cont)         |
  1363.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1364.    Type
  1365.       12 for Framed-MTU.
  1366.    Length
  1367.       6
  1368.    Value
  1369.       The Value field is four octets.  Despite the size of the field,
  1370.       values range from 64 to 65535.
  1371. 5.13.  Framed-Compression
  1372.    Description
  1373.       This Attribute indicates a compression protocol to be used for the
  1374.       link.  It MAY be used in Access-Accept packets.  It MAY be used in
  1375.       an Access-Request packet as a hint to the server that the NAS
  1376.       would prefer to use that compression, but the server is not
  1377.       required to honor the hint.
  1378.       More than one compression protocol Attribute MAY be sent.  It is
  1379.       the responsibility of the NAS to apply the proper compression
  1380.       protocol to appropriate link traffic.
  1381. Rigney, et al.              Standards Track                    [Page 37]
  1382. RFC 2865                         RADIUS                        June 2000
  1383.    A summary of the Framed-Compression Attribute format is shown below.
  1384.    The fields are transmitted from left to right.
  1385.     0                   1                   2                   3
  1386.     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
  1387.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1388.    |     Type      |    Length     |             Value
  1389.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1390.               Value (cont)         |
  1391.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1392.    Type
  1393.       13 for Framed-Compression.
  1394.    Length
  1395.       6
  1396.    Value
  1397.       The Value field is four octets.
  1398.        0      None
  1399.        1      VJ TCP/IP header compression [10]
  1400.        2      IPX header compression
  1401.        3      Stac-LZS compression
  1402. 5.14.  Login-IP-Host
  1403.    Description
  1404.       This Attribute indicates the system with which to connect the user,
  1405.       when the Login-Service Attribute is included.  It MAY be used in
  1406.       Access-Accept packets.  It MAY be used in an Access-Request packet as
  1407.       a hint to the server that the NAS would prefer to use that host, but
  1408.       the server is not required to honor the hint.
  1409.    A summary of the Login-IP-Host Attribute format is shown below.  The
  1410.    fields are transmitted from left to right.
  1411. Rigney, et al.              Standards Track                    [Page 38]