DHCP User Class: The User Class Option for DHCP
A DHCP option that lets a client say what kind of user or software it represents, so the server can pick the right settings.
Stump, G., Droms, R., Gu, Y., Vyaghrapuri, R., Demirtjis, A., Beser, B., and J. Privat, "The User Class Option for DHCP", RFC 3004, DOI 10.17487/RFC3004, November 2000, <https://www.rfc-editor.org/info/rfc3004>.
@misc{rfc3004,
series = {Request for Comments},
number = 3004,
howpublished = {RFC 3004},
publisher = {RFC Editor},
doi = {10.17487/RFC3004},
url = {https://www.rfc-editor.org/info/rfc3004},
author = {G. Stump and R. Droms and Y. Gu and R. Vyaghrapuri and A. Demirtjis and B. Beser and J. Privat},
title = {{The User Class Option for DHCP}},
pagetotal = 6,
year = 2000,
month = nov,
} RFC text
Contents
Network Working Group G. Stump
Request for Comments: 3004 IBM
Category: Standards Track R. Droms
Cisco Systems
Y. Gu
R. Vyaghrapuri
A. Demirtjis
Microsoft
B. Beser
Pacific Broadband Communications
J. Privat
Northstream AB
November 2000
The User Class Option for DHCP
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract
This option is used by a Dynamic Host Configuration Protocol (DHCP)
client to optionally identify the type or category of user or
applications it represents. The information contained in this option
is an opaque field that represents the user class of which the client
is a member. Based on this class, a DHCP server selects the
appropriate address pool to assign an address to the client and the
appropriate configuration parameters. This option should be
configurable by a user.
1. Introduction
DHCP administrators may define specific user class identifiers to
convey information about a client's software configuration or about
its user's preferences. For example, the User Class option can be
used to configure all clients of people in the accounting department
with a different printer than clients of people in the marketing
department.
2. Requirements Terminology
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 RFC 2119 [3].
3. DHCP Terminology
o "DHCP client"
A DHCP client or "client" is an Internet host using DHCP to obtain
configuration parameters such as a network address.
o "DHCP server"
A DHCP server or "server" is an Internet host that returns
configuration parameters to DHCP clients.
o "binding"
A binding is a collection of configuration parameters, including at
least an IP address, associated with or "bound to" a DHCP client.
Bindings are managed by DHCP servers.
4. User Class option
This option is used by a DHCP client to optionally identify the type
or category of user or applications it represents. A DHCP server
uses the User Class option to choose the address pool it allocates an
address from and/or to select any other configuration option.
This option is a DHCP option [1, 2].
This option MAY carry multiple User Classes. Servers may interpret
the meanings of multiple class specifications in an implementation
dependent or configuration dependent manner, and so the use of
multiple classes by a DHCP client should be based on the specific
server implementation and configuration which will be used to process
that User class option.
The format of this option is as follows:
Code Len Value
+-----+-----+--------------------- . . . --+
| 77 | N | User Class Data ('Len' octets) |
+-----+-----+--------------------- . . . --+
where Value consists of one or more instances of User Class Data.
Each instance of User Class Data is formatted as follows:
UC_Len_i User_Class_Data_i
+--------+------------------------ . . . --+
| L_i | Opaque-Data ('UC_Len_i' octets) |
+--------+------------------------ . . . --+
Each User Class value (User_Class_Data_i) is indicated as an opaque
field. The value in UC_Len_i does not include the length field
itself and MUST be non-zero. Let m be the number of User Classes
carried in the option. The length of the option as specified in Len
must be the sum of the lengths of each of the class names plus m:
Len= UC_Len_1 + UC_Len_2 + ... + UC_Len_m + m. If any instances of
User Class Data are present, the minimum value of Len is two (Len =
UC_Len_1 + 1 = 1 + 1 = 2).
The Code for this option is 77.
A server that is not equipped to interpret any given user class
specified by a client MUST ignore it (although it may be reported).
If a server recognizes one or more user classes specified by the
client, but does not recognize one or more other user classes
specified by the client, the server MAY use the user classes it
recognizes.
DHCP clients implementing this option SHOULD allow users to enter one
or more user class values.
5. IANA Considerations
Option 77, which IANA has already assigned for this purpose, should
be used as the User Class Option for DHCP.
6. Security Considerations
DHCP currently provides no authentication or security mechanisms.
Potential exposures to attack are discussed is section 7 of the
protocol specification [1].
This lack of authentication mechanism means that a DHCP server cannot
check if a client or user is authorized to use a given User Class.
This introduces an obvious vulnerability when using the User Class
option. For example, if the User Class is used to give out a special
parameter (e.g., a particular database server), there is no way to
authenticate a client and it is therefore impossible to check if a
client is authorized to use this parameter.
7. References
[1] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March
1997.
[2] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor
Extensions", RFC 2132, March 1997.
[3] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
8. Acknowledgments
This document is based on earlier drafts by Glenn Stump, Ralph Droms,
Ye Gu, Ramesh Vyaghrapuri and Burcak Beser. Thanks to Ted Lemon,
Steve Gonczi, Kim Kinnear, Bernie Volz, Richard Jones, Barr Hibbs and
Thomas Narten for their comments and suggestions.
9. Authors' Addresses
Glenn Stump
IBM Networking Software
P.O. Box 12195
RTP, NC 27709
Phone: 919 301 4277
EMail: stumpga@us.ibm.com
Ralph Droms
Cisco Systems
300 Apollo Drive
Chelmsford, MA 01824
Phone: 978 244 4733
EMail: rdroms@cisco.com
Ye Gu
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
Phone: 425 936 8601
EMail: yegu@microsoft.com
Ramesh Vyaghrapuri
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
Phone: 425 703 9581
EMail: rameshv@microsoft.com
Burcak Beser
Pacific Broadband Communications
3103 North 1st Street
San Jose, CA 95134
Phone: 408 468 6265
Email: Burcak@pacband.com
Ann Demirtjis
Microsoft Corporation
One Microsoft Way
Redmond WA 98052
Phone: 425 705 2254
EMail: annd@microsoft.com
Jerome Privat
Northstream AB
Espace Beethoven 1
1200 Route des Lucioles
BP 302
06906 Sophia Antipolis Cedex
France
Phone: +33 4 97 23 40 45
Fax: +33 4 97 23 24 51
Mobile: +33 6 13 81 76 71
Email: jerome.privat@northstream.se
Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
AI ELI5
On this page
§1Purpose of the User Class Option
DHCP administrators may define their own user class identifiers to convey information about a client's software configuration or about its user's preferences. The RFC's example is configuring clients of people in the accounting department with a different printer than clients of people in the marketing department.
A DHCP client uses the User Class option to identify the type or category of user or applications it represents. The class is an opaque field. The server uses it to choose the address pool it allocates from and, or, to select any other configuration option. The option should be configurable by a user.
A computer can say which group it belongs to, like accounting or marketing. The helper then gives it the right printer.
§2Terminology
The RFC uses the requirement words (MUST, SHOULD, MAY and so on) as defined in RFC 2119. It also defines three DHCP terms.
- A DHCP client is an Internet host using DHCP to obtain configuration parameters such as a network address.
- A DHCP server is an Internet host that returns configuration parameters to clients.
- A binding is a collection of configuration parameters, including at least an IP address, bound to a client and managed by servers.
A client asks, a server answers, and a binding is the set of things the server gives that client.
§3The Option Format
The User Class option is a normal DHCP option (see RFC 2131 and RFC 2132). Its code is 77, followed by a length Len and then the value, which holds one or more instances of User Class Data.
Each instance is a one-octet length UC_Len_i followed by that many octets of opaque data. The length does not count itself and MUST be non-zero.
The option's Len must equal the sum of all the class lengths plus m, the number of classes: Len = UC_Len_1 + UC_Len_2 + ... + UC_Len_m + m. When at least one class is present, the smallest possible Len is 2.
Each class name is written with its length in front, like a label that says how long the word is. Several labels can be put in a row.
Code Len Value
+-----+-----+--------------------- . . . --+
| 77 | N | User Class Data ('Len' octets) |
+-----+-----+--------------------- . . . --+
UC_Len_i User_Class_Data_i
+--------+------------------------ . . . --+
| L_i | Opaque-Data ('UC_Len_i' octets) |
+--------+------------------------ . . . --+§4How Clients and Servers Use It
The option MAY carry multiple user classes. Servers may interpret multiple classes in an implementation or configuration dependent way, so a client should choose its classes based on the specific server setup that will process them.
A server that cannot interpret a given class MUST ignore it, though it may report it. If a server recognizes some of the classes a client sent but not others, it MAY use the ones it recognizes.
Clients that implement the option SHOULD let users enter one or more user class values.
If the helper does not know a group name, it skips it. If it knows some names, it can use those.
§5IANA Considerations
Option 77, which IANA had already assigned for this purpose, is the one to use as the User Class option for DHCP. The RFC asks for no new assignments.
The number 77 was already reserved for this job, so nothing new has to be set aside.
§6Security Considerations
DHCP currently provides no authentication or security mechanisms, and the exposures to attack are discussed in section 7 of RFC 2131.
As a result, a DHCP server cannot check whether a client or user is authorized to use a given user class. That is an obvious weakness when the class is used to hand out something special, such as a particular database server: there is no way to authenticate the client or confirm it may use that parameter.
Anyone can say they are on the team, and the helper cannot check. So do not hand out secrets just because someone named a group.