RFC 4578
Dynamic Host Configuration Protocol (DHCP) Options for the Intel Preboot eXecution Environment (PXE)
RFC 4578: DHCP Options for the Intel Preboot eXecution Environment (PXE) π
okay bestie, this is the RFC that tells DHCP how to recognise PXE and EFI booting machines β¨
Here's the title block, all in one spot π
- Stream: Network Working Group
- Number: Request for Comments: 4578
- Category: Informational
- Authors: M. Johnston (Intel Corporation) and S. Venaas, Ed. (UNINETT)
- Date: November 2006
- Obsoletes / Updates: the header doesn't list anything it obsoletes or updates π¦
Status of This Memo
okay so this memo is here to give info to the Internet community πΈ it is not a standard of any kind, and anyone can share it freely with no limits π
Copyright Notice
Copyright (C) The IETF Trust (2006).
Abstract
the big idea here is defining the DHCP options that PXE and EFI clients use to say exactly who they are π§ and what their pre-OS runtime environment looks like. that way the DHCP and/or PXE boot server can hand back the right OS bootstrap image (or pre-boot application) name and server, and it's giving precision π₯
Table of Contents
1. Introduction ....................................................2
1.1. Requirements Language ......................................2
2. Option Definitions ..............................................2
2.1. Client System Architecture Type Option Definition ..........2
2.2. Client Network Interface Identifier Option Definition ......3
2.3. Client Machine Identifier Option Definition ................4
2.4. Options Requested by PXE Clients ...........................4
3. Acknowledgements ................................................5
4. IANA Considerations .............................................5
5. Security Considerations .........................................5
6. Normative References ............................................5
1. Introduction β¨
so these DHCP [2] options are being used a LOT by PXE-compliant clients π they let a booting machine identify itself, plus its pre-OS runtime environment, so the DHCP and/or PXE boot server can return the correct OS bootstrap image (or pre-boot application) name and server to the client π¦
back in the day, people did this by looking at the network Media Access Code (MAC) address in the "chaddr" field of the BOOTP/DHCP header and keeping a database of MAC addresses on the BOOTP/DHCP server. ngl that was not it, and it didn't scale for big complicated networks π for two main reasons:
- Multiple laptops could end up with the same MAC address if the network interface was in a shared docking station.
- Multiple network devices and MAC addresses could be used by one machine for redundancy or because of repairs.
there was also the issue of a machine changing its pre-OS runtime environment π which is why another new option was created, to identify that runtime environment so the correct binary image could be matched up with the booting machine. Intel defines these options in the PXE [3] and EFI [4] specifications, and they're being documented in this draft for completeness within the IETF π
1.1. Requirements Language
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [1] π
2. Option Definitions π
there are three DHCP options [5] defined for use by PXE clients, and we're about to go through all of them, bestie π
2.1. Client System Architecture Type Option Definition
the option is laid out like this:
Code Len 16-bit Type
+----+-----+-----+-----+
| 93 | n | n1 | n2 |
+----+-----+-----+-----+
so octet "n" tells you how many octets hold the "architecture types" (the code and len fields don't count). it MUST be an even number greater than zero π₯ clients that support more than one architecture type MAY include a list of those types in their initial DHCP and PXE boot server packets, and that list MAY be reduced in any packet exchange between the client and server(s). octets "n1" and "n2" together encode a 16-bit architecture type identifier that describes the pre-boot runtime environment(s) of the client machine π
as of writing this doc, these pre-boot architecture types have been requested:
Type Architecture Name
---- -----------------
0 Intel x86PC
1 NEC/PC98
2 EFI Itanium
3 DEC Alpha
4 Arc x86
5 Intel Lean Client
6 EFI IA32
7 EFI BC
8 EFI Xscale
9 EFI x86-64
this option MUST be present in all DHCP and PXE packets sent by PXE-compliant clients and servers π«Ά
2.2. Client Network Interface Identifier Option Definition
the layout here is:
Code Len Type Major Minor
+----+-----+----+-----+-----+
| 94 | 3 | t | M | m |
+----+-----+----+-----+-----+
octet "t" encodes a network interface type. for now, the only supported value is 1 for Universal Network Device Interface (UNDI) π¦ octets "M" and "m" describe the interface revision. to encode the UNDI revision of 2.11, "M" gets set to 2 and "m" gets set to 11 (0x0B) β¨
here's the revision chart, and it's giving history lesson π
Revision Description
-------- -----------
< 2.00 LANDesk service agent boot ROMs. No PXE APIs.
2.00 First generation PXE boot ROMs. (PXENV+) [3]
2.01 Second generation PXE boot ROMs. (!PXE) [3]
3.00 32/64-bit UNDI specification. (Alpha) [4]
EFI boot services driver only.
No EFI runtime support.
3.10 32/64-bit UNDI specification. (Beta) [4]
First generation EFI runtime driver support.
3.20 32/64-bit UNDI specification. (Release) [4]
Second generation EFI runtime driver support.
this option MUST be present in all DHCP and PXE packets sent by PXE-compliant clients and servers π
2.3. Client Machine Identifier Option Definition
the format of the option is:
Code Len Type Machine Identifier
+----+-----+----+-----+ . . . +-----+
| 97 | n | t | | . . . | |
+----+-----+----+-----+ . . . +-----+
octet "t" describes the type of the machine identifier in the remaining octets of this option. 0 (zero) is the only value defined for this octet right now, and it describes the remaining octets as a 16-octet Globally Unique Identifier (GUID) π§ octet "n" is 17 for type 0. (one definition of GUID can be found in Appendix A of the EFI specification [4].)
this option MUST be present in all DHCP and PXE packets sent by PXE-compliant clients and servers πΈ
2.4. Options Requested by PXE Clients
okay this one is a big deal π all compliant PXE clients MUST include a request for DHCP options 128 through 135 in all DHCP and PXE packets. the format and contents of these options are NOT defined by the PXE specification. these options MAY be present in the DHCP and PXE boot server replies, and they're meant for use by the downloaded network bootstrap programs. these options are NOT used by the PXE boot ROMs π
and here's the tea: options 128-135 aren't officially assigned for PXE use. before November 2004 they were considered site-specific options [6], so using these option values for PXE may conflict with other uses of the same options on the same networks π
(part 1 of 2 done! part 2 is coming with Acknowledgements, IANA, Security, References and the authors' bits ππ)
Intellectual Property
okay bestie, this part is all about who owns what π the IETF is basically saying "we are NOT picking a side on whether any patents or rights around this tech are valid or how far they reach" π It also doesn't promise that you could get a license for any of it, and it didn't go hunting for any rights either β¨ If you want the rules on rights for RFC docs, go check BCP 78 and BCP 79 π
Copies of IPR disclosures sent to the IETF Secretariat live in the IETF online IPR repository at http://www.ietf.org/ipr π¦ That's also where you'd find any assurances of licenses that get offered, plus the results of attempts to get a general license or permission for implementers or users to use those proprietary rights. Main character research energy π₯
The IETF also invites anyone to flag any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard. Send that info to ietf-ipr@ietf.org π No cap, they want the tea π«Ά
Acknowledgement
Funding for the RFC Editor function is currently provided by the Internet Society ππ So the people keeping these docs organized are getting their support from them right now, and that's iconic β¨
π¦ where this page comes from
- ietf: rfc4578 2006-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms