RFC 3925
Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4)
RFC 3925: Vendor-Identifying Vendor Options for DHCPv4 π
Okay bestie, RFC 3925 π is called "Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4)." It's from the Network Working Group, written by J. Littlefield at Cisco Systems, Inc. π It's a Standards Track document, dated October 2004. The header doesn't list anything it obsoletes or updates, so there's no drama there β¨.
Status of this Memo π
This document specifies an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited πΈ.
Copyright Notice Β©οΈ
Copyright (C) The Internet Society (2004).
Abstract π¦
DHCP's options for Vendor Class and Vendor-Specific Information can get limiting or ambiguous when one DHCP client is representing multiple vendors π. This document defines two new options, modeled on the IPv6 options for vendor class and vendor-specific information, that carry Enterprise Numbers so the ambiguity goes away π«Ά.
Table of Contents ποΈ
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Conventions Used in This Document. . . . . . . . . . . . 2
2. Supporting Multiple Vendor Instances . . . . . . . . . . . . . 3
3. Vendor-Identifying Vendor Class Option . . . . . . . . . . . . 3
4. Vendor-Identifying Vendor-Specific Information Option . . . . 5
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
6. Security Considerations . . . . . . . . . . . . . . . . . . . 7
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.1. Normative References . . . . . . . . . . . . . . . . . . 8
7.2. Informative References . . . . . . . . . . . . . . . . . 8
8. Author's Address . . . . . . . . . . . . . . . . . . . . . . . 8
9. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 9
1. Introduction β¨
Okay so the DHCP protocol for IPv4 is RFC 2131 [2] π. It has options that let a client say what kind of vendor it is (option 60), and let the DHCP client and server swap vendor-specific info (option 43) [5] π. Nothing stops you from sending several copies of these options in one packet, but that's where it gets messy π΅βπ«. The vendor named in option 60 is the one who decides what option 43 means, and option 43 doesn't carry a vendor ID of its own. Plus, RFC 2131 says multiple instances of the same option get concatenated, and RFC 3396 [4] spells that out, so multiple copies of option 60 or option 43 can't stay independent. Iconic chaos, honestly π.
Sometimes one implementation needs to handle several separately defined kinds of vendor-specific info π. Say it has to follow an industry-standard use of DHCPv4 so it can interoperate in a certain technology space. It might then need to support that industry group's vendor-specific options, while the same device also needs the manufacturer's own vendor-specific options π§. This hits vendors of devices that support CableLabs [9] standards really hard, like DOCSIS, CableHome, and PacketCable, because those standards define their own industry-specific use for options 60 and 43 π.
This document defines two new options, modeled on the IPv6 options for vendor class and vendor-specific information defined in RFC 3315 [6]. They carry IANA-assigned Enterprise Numbers [3] so there's zero confusion about what their contents mean π. If you want, you can use these new options alongside the current vendor class and vendor information options. This document doesn't change how those current options are defined π¦.
1.1. Conventions Used in This Document π₯
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 BCP 14, RFC 2119 [1] π .
2. Supporting Multiple Vendor Instances πΈ
The options defined here can each hold data for more than one vendor π«Ά. The data portion of each option is an enterprise number (assigned by IANA [3]), then an internal data length, then vendor-specific data. You can repeat that sequence several times inside a single option π. The vendor-specific data in either option can add up to more than 255 octets, so both options are declared to be "concatenation-requiring", as defined by RFC 3396 [4] π. That means, for each of the two options, the combined vendor-specific data from all instances counts as one long option π§Ά. You can split those long options into smaller options for packet encoding (following RFC 3396), on whatever octet boundaries work for the implementation π. Splitting between vendor instances isn't required, but it might be convenient for encoding or packet tracing β¨.
3. Vendor-Identifying Vendor Class Option π¦
A DHCP client can use this option to pin down the vendor that made the hardware it's running on, the software it's using, or an industry consortium the vendor belongs to π. The info in the per-vendor data area of this option sits in one or more opaque fields, and those fields can describe details of the hardware configuration π.
This option can go anywhere Vendor Class Identifier (option 60) can go, as described in RFC 2131 [2]. The one exception is DHCPNAK messages, where other options aren't allowed π«. It's most meaningful in messages going from the DHCP client to the DHCP server (DHCPDISCOVER, DHCPREQUEST, DHCPINFORM) π.
The format of the V-I Vendor Class option looks like this π:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number1 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data-len1 | |
+-+-+-+-+-+-+-+-+ |
/ vendor-class-data1 /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
| enterprise-number2 | ^
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| data-len2 | | optional
+-+-+-+-+-+-+-+-+ | |
/ vendor-class-data2 / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
~ ... ~ V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
Here's what each field means π§:
option-code:OPTION_V-I_VENDOR_CLASS (124)option-len: the total length of all following option data, in octetsenterprise-numberN: the vendor's 32-bit Enterprise Number, as registered with IANA [3]data-lenN: the length of the vendor-class-data fieldvendor-class-dataN: details of the hardware configuration of the host the client is running on, or info about compliance with an industry consortium
This option holds info for one or more Enterprise Numbers π. You can have multiple instances of this option, and they MUST be concatenated in accordance with RFC 3396 [4] π«Ά. An Enterprise Number SHOULD only show up once across all instances of this option. If an Enterprise Number shows up more than once, the behavior is undefined π. Each Enterprise Number's info gets treated independently, whether it sits in an option with other Enterprise Numbers or in its own separate option π.
The vendor-class-data is a series of separate items, and each one describes some characteristic of the client's hardware configuration or capabilities π§. Examples of vendor-class-data might be the version of the operating system the client runs, or how much memory is installed on the client π§ .
Each instance of the vendor-class-data is formatted like this π¦:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data-len | |
+-+-+-+-+-+-+-+-+ opaque-data |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The data-len is one octet long, and it specifies the length of the opaque vendor class data in network byte order π.
4. Vendor-Identifying Vendor-Specific Information Option β¨
okay so DHCP clients and servers can both use this option to swap vendor-specific info π«Ά either side can send it whenever it's needed. A client sending the Vendor-Identifying Vendor Class option is the usual move to get a useful Vendor-Identifying Vendor-Specific Information Option back, but there's no requirement that the conversation has to go that way π
This option can show up in any packet where "other" options are allowed by RFC 2131 [2], which means DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK, and DHCPINFORM π
The V-I Vendor-specific Information option is laid out like this:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number1 |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data-len1 | |
+-+-+-+-+-+-+-+-+ option-data1 |
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
| enterprise-number2 | ^
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| data-len2 | | optional
+-+-+-+-+-+-+-+-+ option-data2 | |
/ / |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
~ ... ~ V
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
Here's what each field does π§
option-code:OPTION_V-I_VENDOR_OPTS (125)option-len: total length of all following option data in octetsenterprise-numberN: the vendor's registered 32-bit Enterprise Number, as registered with IANA [3]data-lenN: length of option-data fieldoption-dataN: vendor-specific options, described below
The information in this option is vendor specific, so it's the vendor's call what goes in there πΈ The vendor is identified by the enterprise-number field. One option can carry info for more than one Enterprise Number, and you can also get multiple instances of this option in a single message. When that happens, they MUST be concatenated in accordance with RFC 3396 [4] π
Now the drama: an Enterprise Number SHOULD only show up once across all instances of this option. If one shows up multiple times, behavior is undefined, so please don't go there π Each Enterprise Number's info is treated independently, whether it's sitting in an option with other Enterprise Numbers or in its own separate option π¦
Vendor-specific info is what unlocks enhanced operation and extra features in a vendor's DHCP implementation β¨ But if a server can't interpret the vendor-specific info a client sent, it MUST ignore it π And if a client doesn't get the vendor-specific info it wanted, it SHOULD try to operate without it. Main character energy: keep going anyway π
The encapsulated option-data field MUST be encoded as a sequence of code/length/value fields in the same format as the DHCP options field π The option codes are defined by whichever vendor is named in the enterprise-number field, and IANA doesn't manage them. Option codes 0 and 255 don't have any predefined interpretation or format, so they're kind of a wildcard π Each encapsulated option looks like this:
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| subopt-code | subopt-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ sub-option-data /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
And the sub-option fields:
subopt-code: the code for the encapsulated optionsubopt-len: an unsigned integer giving the length of the option-data field in this encapsulated option, in octetssub-option-data: data area for the encapsulated option
5. IANA Considerations π·
The values for OPTION_V-I_VENDOR_CLASS and OPTION_V-I_VENDOR_OPTS option codes were assigned from the numbering space defined for public DHCP Options in RFC 2939 [7] π
6. Security Considerations π
This one is serious, bestie π This document in and by itself provides no security, nor does it impact existing security. DHCP provides an authentication and message integrity mechanism, as described in RFC 3118 [8], which may be used if authenticity is required for data carried by the options defined in this document. So if you need the info in these options to be authentic, go use that mechanism π‘οΈ
7. References
7.1. Normative References
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [2] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March 1997.
- [3] IANA, "Private Enterprise Numbers",
http://www.iana.org/assignments/enterprise-numbers. - [4] Lemon, T. and S. Cheshire, "Encoding Long Options in the Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396, November 2002.
7.2. Informative References
- [5] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor Extensions", RFC 2132, March 1997.
- [6] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.
- [7] Droms, R., "Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types", BCP 43, RFC 2939, September 2000.
- [8] Droms, R. and W. Arbaugh, "Authentication for DHCP Messages", RFC 3118, June 2001.
URIs
8. Author's Address π
Josh Littlefield
Cisco Systems, Inc.
1414 Massachusetts Avenue
Boxborough, MA 01719
USA
Phone: +1 978-936-1379 EMail: joshl@cisco.com
9. Full Copyright Statement Β©οΈ
Copyright (C) The Internet Society (2004).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property π§
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the IETF's procedures with respect to rights in IETF Documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification, can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement π«Ά
Funding for the RFC Editor function is currently provided by the Internet Society. π
π¦ where this page comes from
- ietf: rfc3925 2004-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms