RFC 1533

DHCP Options and BOOTP Vendor Extensions

๐Ÿ“… published October 1993, from ietf

RFC 1533: DHCP Options and BOOTP Vendor Extensions ๐Ÿ’–

okay bestie, let's get into this one ๐ŸŽ€

  • Network Working Group ๐ŸŒธ
  • Authors: S. Alexander (Lachman Technology, Inc.) and R. Droms (Bucknell University) ๐Ÿงš
  • Category: Standards Track โœจ
  • Date: October 1993 ๐Ÿ“…
  • Obsoletes: 1497, 1395, 1084, 1048 ๐Ÿ’€

Status of This Memo ๐Ÿ“œ

This RFC describes an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐Ÿซถ For the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards." Distribution of this memo is unlimited ๐ŸŒˆ

Abstract ๐Ÿฆ‹

Okay so the Dynamic Host Configuration Protocol (DHCP) [1] gives you a framework for passing configuration information to hosts on a TCP/IP network ๐Ÿ’… The configuration parameters and other control info ride along in tagged data items stored in the "options" field of the DHCP message. Those data items are also called "options," and honestly it's iconic ๐Ÿ‘‘

This document specifies the current set of DHCP options ๐Ÿ’– It will be periodically updated as new options get defined, and each superseding document will include the entire current list of valid options so you never have to hunt for pieces ๐Ÿ”ฅ

All of the vendor information extensions defined in RFC 1497 [2] can be used as DHCP options. The definitions from RFC 1497 are included in this document, which supersedes RFC 1497 ๐Ÿซถ Every DHCP option defined here, except the ones specific to DHCP as defined in section 9, can be used as a BOOTP vendor information extension ๐ŸŒธ

Table of Contents ๐Ÿงพ

    1.  Introduction ..............................................  2
    2.  BOOTP Extension/DHCP Option Field Format ..................  2
    3.  RFC 1497 Vendor Extensions ................................  3
    4.  IP Layer Parameters per Host .............................. 10
    5.  IP Layer Parameters per Interface ........................  13
    6.  Link Layer Parameters per Interface ....................... 16
    7.  TCP Parameters ............................................ 17
    8.  Application and Service Parameters ........................ 18
    9.  DHCP Extensions ........................................... 23
   10.  Extensions ................................................ 27
   11.  Acknowledgements .......................................... 28
   12.  References ................................................ 28
   13.  Security Considerations ................................... 19
   14.  Authors' Addresses ........................................ 30

1. Introduction โœจ

This document specifies options for use with both the Dynamic Host Configuration Protocol and the Bootstrap Protocol ๐Ÿงš

The full description of DHCP packet formats lives in the DHCP specification document [1], and the full description of BOOTP packet formats lives in the BOOTP specification document [3]. This document defines the format of the information in the last field of DHCP packets ('options') and of BOOTP packets ('vend') ๐Ÿ’… The rest of this section defines a generalized use of that area, for giving info that's useful to a wide class of machines, operating systems and configurations. Sites with a single DHCP or BOOTP server shared among heterogeneous clients can choose to define other, site-specific formats for the use of the 'options' field ๐ŸŒˆ

Section 2 describes the formats of DHCP options and BOOTP vendor extensions ๐ŸŽ€ Section 3 describes options defined in previous documents for use with BOOTP (all of them can also be used with DHCP) ๐Ÿ’œ Sections 4-8 define new options intended for use with both DHCP and BOOTP, and section 9 defines options used only in DHCP ๐Ÿฆ‹

References further describing most of the options defined in sections 2-6 can be found in section 12 ๐Ÿ“š The use of the options defined in section 9 is described in the DHCP specification [1] ๐Ÿซถ

Info on registering new options is in section 10 ๐Ÿ’–

2. BOOTP Extension/DHCP Option Field Format ๐ŸŒธ

DHCP options have the same format as the BOOTP "vendor extensions" defined in RFC 1497 [2] ๐Ÿ’… Options can be fixed length or variable length. Every option begins with a tag octet, which uniquely identifies the option ๐Ÿ”ฅ Fixed-length options without data are just a tag octet, and only options 0 and 255 are fixed length ๐Ÿ’€ All other options are variable length, with a length octet following the tag octet ๐ŸŽ€

The value of the length octet doesn't include the two octets for the tag and length ๐Ÿ™ˆ After the length octet comes "length" octets of data ๐Ÿ’– Some variable-length options have a length field that's a constant, but it still has to be specified anyway ๐ŸŒˆ

Any options defined after this document should contain a length octet, even if the length is fixed or zero โœจ

All multi-octet quantities are in network byte-order ๐Ÿงš

When used with BOOTP, the first four octets of the vendor information field get assigned to the "magic cookie" (as suggested in RFC 951) ๐Ÿฆ‹ This field identifies the mode in which the succeeding data is to be interpreted ๐ŸŒธ The value of the magic cookie is the 4 octet dotted decimal 99.130.83.99 (or hexadecimal number 63.82.53.63) in network byte order ๐Ÿ’œ

All of the "vendor extensions" defined in RFC 1497 are also DHCP options ๐Ÿซถ

Option codes 128 to 254 (decimal) are reserved for site-specific options ๐Ÿ‘‘

Except for the options in section 9, all options can be used with either DHCP or BOOTP ๐Ÿ”ฅ

Lots of these options have their default values specified in other documents. In particular, RFC 1122 [4] specifies default values for most IP and TCP configuration parameters ๐ŸŒˆ

3. RFC 1497 Vendor Extensions ๐Ÿ’…

This section lists the vendor extensions as defined in RFC 1497 ๐ŸŽ€ They're defined here for completeness ๐Ÿ’–

3.1. Pad Option ๐Ÿซง

The pad option can be used to cause subsequent fields to align on word boundaries โœจ

The code for the pad option is 0, and its length is 1 octet ๐ŸŒธ

    Code
   +-----+
   |  0  |
   +-----+

3.2. End Option ๐Ÿ

The end option marks the end of valid information in the vendor field ๐Ÿฆ‹ Subsequent octets should be filled with pad options ๐Ÿงš

The code for the end option is 255, and its length is 1 octet ๐Ÿ’œ

    Code
   +-----+
   | 255 |
   +-----+

3.3. Subnet Mask ๐ŸŽญ

The subnet mask option specifies the client's subnet mask as per RFC 950 [5] ๐Ÿซถ

If both the subnet mask and the router option are specified in a DHCP reply, the subnet mask option MUST be first ๐Ÿ‘‘ No skipping this one, bestie ๐Ÿ”ฅ

The code for the subnet mask option is 1, and its length is 4 octets ๐ŸŒˆ

    Code   Len        Subnet Mask
   +-----+-----+-----+-----+-----+-----+
   |  1  |  4  |  m1 |  m2 |  m3 |  m4 |
   +-----+-----+-----+-----+-----+-----+

3.4. Time Offset โฐ

The time offset field specifies the offset of the client's subnet in seconds from Coordinated Universal Time (UTC) ๐Ÿ’– The offset is expressed as a signed 32-bit integer ๐ŸŒธ

The code for the time offset option is 2, and its length is 4 octets ๐ŸŽ€

    Code   Len        Time Offset
   +-----+-----+-----+-----+-----+-----+
   |  2  |  4  |  n1 |  n2 |  n3 |  n4 |
   +-----+-----+-----+-----+-----+-----+

3.5. Router Option ๐Ÿ›ฃ๏ธ

The router option specifies a list of IP addresses for routers on the client's subnet ๐Ÿ’… Routers SHOULD be listed in order of preference, so the most-preferred one goes first ๐Ÿ’œ

The code for the router option is 3. The minimum length for the router option is 4 octets, and the length MUST always be a multiple of 4 โœจ

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  3  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.6. Time Server Option ๐Ÿ•ฐ๏ธ

The time server option specifies a list of RFC 868 [6] time servers available to the client ๐ŸŒˆ Servers SHOULD be listed in order of preference ๐Ÿซถ

The code for the time server option is 4. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐Ÿฆ‹

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  4  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.7. Name Server Option ๐Ÿ“‡

The name server option specifies a list of IEN 116 [7] name servers available to the client ๐Ÿ’– Servers SHOULD be listed in order of preference ๐Ÿงš

The code for the name server option is 5. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐ŸŒธ

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  5  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.8. Domain Name Server Option ๐ŸŒ

The domain name server option specifies a list of Domain Name System (STD 13, RFC 1035 [8]) name servers available to the client ๐Ÿ”ฅ Servers SHOULD be listed in order of preference ๐Ÿ’…

The code for the domain name server option is 6. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐Ÿ‘‘

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  6  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.9. Log Server Option ๐Ÿชต

The log server option specifies a list of MIT-LCS UDP log servers available to the client ๐ŸŽ€ Servers SHOULD be listed in order of preference ๐Ÿซถ

The code for the log server option is 7. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐ŸŒˆ

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  7  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

The cookie server option specifies a list of RFC 865 [9] cookie servers available to the client ๐Ÿ’œ Servers SHOULD be listed in order of preference ๐Ÿฆ‹

The code for the log server option is 8. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐Ÿ™ˆ

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  8  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.11. LPR Server Option ๐Ÿ–จ๏ธ

The LPR server option specifies a list of RFC 1179 [10] line printer servers available to the client ๐ŸŒธ Servers SHOULD be listed in order of preference ๐Ÿ’–

The code for the LPR server option is 9. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 โœจ

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  9  |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.12. Impress Server Option ๐Ÿ–‹๏ธ

The Impress server option specifies a list of Imagen Impress servers available to the client ๐Ÿงš Servers SHOULD be listed in order of preference ๐ŸŒˆ

The code for the Impress server option is 10. The minimum length for this option is 4 octets, and the length MUST always be a multiple of 4 ๐Ÿ’…

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  10 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.13. Resource Location Server Option

okay so this option hands the client a list of RFC 887 [11] Resource Location servers it can use ๐Ÿ—บ๏ธ Servers SHOULD be listed in order of preference, so the first one is the fave ๐Ÿ’…

The code for this option is 11. The minimum length is 4 octets, and the length MUST always be a multiple of 4 ๐ŸŽ€

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  11 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.14. Host Name Option

this one tells everyone the client's name ๐Ÿฆ‹ The name may or may not be qualified with the local domain name. If you want the preferred way to grab that domain name, check out section 3.17. And for character set restrictions, see RFC 1035 ๐ŸŒธ

The code for this option is 12, and its minimum length is 1 ๐Ÿ’œ

    Code   Len                 Host Name
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  12 |  n  |  h1 |  h2 |  h3 |  h4 |  h5 |  h6 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

3.15. Boot File Size Option

this option says how big the client's default boot image is, measured in 512-octet blocks ๐Ÿ“ The file length is an unsigned 16-bit integer, so no drama there โœจ

The code for this option is 13, and its length is 2 ๐ŸŒˆ

    Code   Len   File Size
   +-----+-----+-----+-----+
   |  13 |  2  |  l1 |  l2 |
   +-----+-----+-----+-----+

3.16. Merit Dump File

this one gives the path to a file where the client's core image gets dumped if the client crashes ๐Ÿ’€ The path is a character string made of characters from the NVT ASCII character set ๐Ÿซถ

The code for this option is 14. Its minimum length is 1 ๐Ÿ”ฅ

    Code   Len      Dump File Pathname
   +-----+-----+-----+-----+-----+-----+---
   |  14 |  n  |  n1 |  n2 |  n3 |  n4 | ...
   +-----+-----+-----+-----+-----+-----+---

3.17. Domain Name

this option is the domain name the client should use when it resolves hostnames through the Domain Name System ๐ŸŒธ

The code for this option is 15. Its minimum length is 1 โœจ

    Code   Len        Domain Name
   +-----+-----+-----+-----+-----+-----+--
   |  15 |  n  |  d1 |  d2 |  d3 |  d4 |  ...
   +-----+-----+-----+-----+-----+-----+--

3.18. Swap Server

this one gives the IP address of the client's swap server ๐Ÿงš

The code for this option is 16 and its length is 4 ๐Ÿ’–

    Code   Len    Swap Server Address
   +-----+-----+-----+-----+-----+-----+
   |  16 |  n  |  a1 |  a2 |  a3 |  a4 |
   +-----+-----+-----+-----+-----+-----+

3.19. Root Path

this option is the path-name for the client's root disk ๐Ÿ‘‘ The path is a character string made of characters from the NVT ASCII character set, same energy as the Merit Dump File ๐ŸŽ€

The code for this option is 17. Its minimum length is 1 ๐Ÿฆ‹

    Code   Len      Root Disk Pathname
   +-----+-----+-----+-----+-----+-----+---
   |  17 |  n  |  n1 |  n2 |  n3 |  n4 | ...
   +-----+-----+-----+-----+-----+-----+---

3.20. Extensions Path

okay this one is kind of a plot twist ๐Ÿ˜ญ It's a string that names a file, retrievable via TFTP, and that file holds information that gets read the same way as the 64-octet vendor-extension field inside the BOOTP response. There are two exceptions though:

  • the length of the file is unconstrained;
  • all references to Tag 18 (i.e., instances of the BOOTP Extensions Path field) within the file are ignored.

The code for this option is 18. Its minimum length is 1 ๐Ÿงš

    Code   Len      Extensions Pathname
   +-----+-----+-----+-----+-----+-----+---
   |  18 |  n  |  n1 |  n2 |  n3 |  n4 | ...
   +-----+-----+-----+-----+-----+-----+---

4. IP Layer Parameters per Host โœจ

this section covers the options that affect how the IP layer behaves on a per-host basis ๐Ÿ’…

4.1. IP Forwarding Enable/Disable Option

this option says whether the client should set up its IP layer for packet forwarding. A value of 0 means disable IP forwarding, and a value of 1 means enable it ๐ŸŒˆ

The code for this option is 19, and its length is 1 ๐ŸŽ€

    Code   Len  Value
   +-----+-----+-----+
   |  19 |  1  | 0/1 |
   +-----+-----+-----+

4.2. Non-Local Source Routing Enable/Disable Option

this one is about whether the client's IP layer should allow forwarding of datagrams that have non-local source routes. (If you want the tea on that topic, see Section 3.3.5 of [4] ๐Ÿ“) A value of 0 means disallow forwarding of those datagrams, and a value of 1 means allow forwarding ๐Ÿ’œ

The code for this option is 20, and its length is 1 ๐Ÿฆ‹

    Code   Len  Value
   +-----+-----+-----+
   |  20 |  1  | 0/1 |
   +-----+-----+-----+

4.3. Policy Filter Option

this option sets policy filters for non-local source routing ๐Ÿ”ฅ The filters are a list of IP addresses and masks, and they describe destination/mask pairs used to filter incoming source routes.

Any source routed datagram whose next-hop address doesn't match one of the filters should be discarded by the client ๐Ÿ—‘๏ธ

For more info, see [4] ๐Ÿซถ

The code for this option is 21. The minimum length is 8, and the length MUST be a multiple of 8 โœจ

    Code   Len         Address 1                  Mask 1
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   |  21 |  n  |  a1 |  a2 |  a3 |  a4 |  m1 |  m2 |  m3 |  m4 |
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
           Address 2                  Mask 2
   +-----+-----+-----+-----+-----+-----+-----+-----+---
   |  a1 |  a2 |  a3 |  a4 |  m1 |  m2 |  m3 |  m4 | ...
   +-----+-----+-----+-----+-----+-----+-----+-----+---

4.4. Maximum Datagram Reassembly Size

this option is the biggest datagram the client should be ready to reassemble ๐ŸŒธ The size is a 16-bit unsigned integer, and the minimum legal value is 576 ๐Ÿ’–

The code for this option is 22, and its length is 2 ๐Ÿงš

    Code   Len      Size
   +-----+-----+-----+-----+
   |  22 |  2  |  s1 |  s2 |
   +-----+-----+-----+-----+

4.5. Default IP Time-to-live

this option sets the default time-to-live the client should put on outgoing datagrams โณ The TTL is an octet with a value between 1 and 255 ๐ŸŒˆ

The code for this option is 23, and its length is 1 ๐Ÿ‘‘

    Code   Len   TTL
   +-----+-----+-----+
   |  23 |  1  | ttl |
   +-----+-----+-----+

4.6. Path MTU Aging Timeout Option

this one sets the timeout, in seconds, for aging Path MTU values found through the mechanism in RFC 1191 [12] โฐ The timeout is a 32-bit unsigned integer.

The code for this option is 24, and its length is 4 ๐Ÿฆ‹

    Code   Len           Timeout
   +-----+-----+-----+-----+-----+-----+
   |  24 |  4  |  t1 |  t2 |  t3 |  t4 |
   +-----+-----+-----+-----+-----+-----+

4.7. Path MTU Plateau Table Option

this option gives a table of MTU sizes to use when doing Path MTU Discovery as defined in RFC 1191 ๐ŸŽ€ The table is a list of 16-bit unsigned integers, ordered from smallest to largest. The minimum MTU value cannot be smaller than 68.

The code for this option is 25. Its minimum length is 2, and the length MUST be a multiple of 2 ๐Ÿ’…

    Code   Len     Size 1      Size 2
   +-----+-----+-----+-----+-----+-----+---
   |  25 |  n  |  s1 |  s2 |  s1 |  s2 | ...
   +-----+-----+-----+-----+-----+-----+---

5. IP Layer Parameters per Interface ๐Ÿฆ‹

this section covers the options that affect how the IP layer behaves on a per-interface basis ๐ŸŒธ It's expected that a client can send multiple requests, one per interface, so each interface can get its own specific parameters. Iconic ๐Ÿ‘‘

5.1. Interface MTU Option

this option sets the MTU to use on this interface. The MTU is a 16-bit unsigned integer, and the minimum legal value for the MTU is 68 ๐Ÿ’–

The code for this option is 26, and its length is 2 โœจ

    Code   Len      MTU
   +-----+-----+-----+-----+
   |  26 |  2  |  m1 |  m2 |
   +-----+-----+-----+-----+

5.2. All Subnets are Local Option

this option says whether or not the client can assume that all subnets of the IP network it's connected to use the same MTU as the subnet it's directly connected to ๐Ÿงš A value of 1 means all subnets share the same MTU. A value of 0 means the client should assume that some subnets of the directly connected network may have smaller MTUs ๐Ÿ™ˆ

The code for this option is 27, and its length is 1 ๐ŸŒˆ

    Code   Len  Value
   +-----+-----+-----+
   |  27 |  1  | 0/1 |
   +-----+-----+-----+

5.3. Broadcast Address Option

this option specifies the broadcast address in use on the client's subnet ๐Ÿ“ก Legal values for broadcast addresses are specified in section 3.2.1.3 of [4] ๐Ÿ“

The code for this option is 28, and its length is 4 ๐Ÿ’œ

    Code   Len     Broadcast Address
   +-----+-----+-----+-----+-----+-----+
   |  28 |  4  |  b1 |  b2 |  b3 |  b4 |
   +-----+-----+-----+-----+-----+-----+

5.4. Perform Mask Discovery Option

this option says whether or not the client should do subnet mask discovery using ICMP ๐Ÿ” A value of 0 means the client should not do mask discovery. A value of 1 means the client should do mask discovery ๐ŸŽ€

The code for this option is 29, and its length is 1 ๐Ÿฆ‹

    Code   Len  Value
   +-----+-----+-----+
   |  29 |  1  | 0/1 |
   +-----+-----+-----+

5.5. Mask Supplier Option

this option says whether or not the client should respond to subnet mask requests using ICMP ๐Ÿซถ A value of 0 means the client should not respond. A value of 1 means the client should respond ๐Ÿ”ฅ

The code for this option is 30, and its length is 1 โœจ

    Code   Len  Value
   +-----+-----+-----+
   |  30 |  1  | 0/1 |
   +-----+-----+-----+

5.6. Perform Router Discovery Option

this option says whether or not the client should solicit routers using the Router Discovery mechanism defined in RFC 1256 [13] ๐Ÿงญ A value of 0 means the client should not do router discovery. A value of 1 means the client should do router discovery ๐Ÿ’…

The code for this option is 31, and its length is 1 ๐ŸŒธ

    Code   Len  Value
   +-----+-----+-----+
   |  31 |  1  | 0/1 |
   +-----+-----+-----+

5.7. Router Solicitation Address Option

this option is the address the client should send router solicitation requests to ๐Ÿ’Œ

The code for this option is 32, and its length is 4 ๐Ÿ‘‘

    Code   Len            Address
   +-----+-----+-----+-----+-----+-----+
   |  32 |  4  |  a1 |  a2 |  a3 |  a4 |
   +-----+-----+-----+-----+-----+-----+

5.8. Static Route Option ๐Ÿ›ฃ๏ธ

okay so this option lets the server hand the client a list of static routes that the client should install in its routing cache ๐Ÿ—บ๏ธ. if there are multiple routes to the same destination, they're listed in descending order of priority, so the first one is the main character ๐Ÿ‘‘.

each route is a pair of IP addresses. the first address is the destination address, and the second one is the router for that destination ๐Ÿ’–.

the default route (0.0.0.0) is an illegal destination for a static route, bestie ๐Ÿšซ. for the deets on the router option, check out section 3.5 โœจ

the code for this option is 33, and the minimum length is 8. the length MUST be a multiple of 8, so no sloppy lengths allowed ๐Ÿ’…

    Code   Len         Destination 1           Router 1
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   |  33 |  n  |  d1 |  d2 |  d3 |  d4 |  r1 |  r2 |  r3 |  r4 |
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
           Destination 2           Router 2
   +-----+-----+-----+-----+-----+-----+-----+-----+---
   |  d1 |  d2 |  d3 |  d4 |  r1 |  r2 |  r3 |  r4 | ...
   +-----+-----+-----+-----+-----+-----+-----+-----+---

this section is all about the options that affect the data link layer on a per-interface basis ๐Ÿงฑ.

6.1. Trailer Encapsulation Option ๐ŸŽ€

this option says whether or not the client should negotiate trailers (RFC 893 [14]) when it's using the ARP protocol. a value of 0 means the client should not try to use trailers ๐Ÿ™…. a value of 1 means the client should try ๐Ÿ™Œ.

the code for this option is 34, and its length is 1 โœจ.

    Code   Len  Value
   +-----+-----+-----+
   |  34 |  1  | 0/1 |
   +-----+-----+-----+

6.2. ARP Cache Timeout Option โฐ

this one sets the timeout, in seconds, for ARP cache entries. the time is a 32-bit unsigned integer ๐Ÿ”ข.

the code for this option is 35, and its length is 4.

    Code   Len           Time
   +-----+-----+-----+-----+-----+-----+
   |  35 |  4  |  t1 |  t2 |  t3 |  t4 |
   +-----+-----+-----+-----+-----+-----+

6.3. Ethernet Encapsulation Option ๐ŸŒˆ

this option picks the encapsulation the client should use when the interface is an Ethernet. a value of 0 means RFC 894 encapsulation, which is Ethernet Version 2 (RFC 894 [15]). a value of 1 means RFC 1042 encapsulation, which is IEEE 802.3 (RFC 1042 [16]). it's like choosing your flavour ๐Ÿ“.

the code for this option is 36, and its length is 1.

    Code   Len  Value
   +-----+-----+-----+
   |  36 |  1  | 0/1 |
   +-----+-----+-----+

7. TCP Parameters ๐ŸŒธ

this section lists the options that affect the TCP layer on a per-interface basis ๐Ÿ’œ.

7.1. TCP Default TTL Option โณ

this one sets the default TTL that the client should use when sending TCP segments. it's an 8-bit unsigned integer, and the minimum value is 1 ๐Ÿ”ฅ.

the code for this option is 37, and its length is 1.

    Code   Len   TTL
   +-----+-----+-----+
   |  37 |  1  |  n  |
   +-----+-----+-----+

7.2. TCP Keepalive Interval Option ๐Ÿ’“

this option is the interval, in seconds, that the client TCP should wait before sending a keepalive message on a TCP connection. the time is a 32-bit unsigned integer. a value of zero means the client should not generate keepalive messages on connections unless an application specifically asks for them ๐Ÿ™ˆ.

the code for this option is 38, and its length is 4.

    Code   Len           Time
   +-----+-----+-----+-----+-----+-----+
   |  38 |  4  |  t1 |  t2 |  t3 |  t4 |
   +-----+-----+-----+-----+-----+-----+

7.3. TCP Keepalive Garbage Option ๐Ÿ—‘๏ธ

this option says whether or not the client should send TCP keepalive messages with one octet of garbage in them, for compatibility with older implementations ๐Ÿง“. a value of 0 means a garbage octet should not be sent. a value of 1 means a garbage octet should be sent.

the code for this option is 39, and its length is 1.

    Code   Len  Value
   +-----+-----+-----+
   |  39 |  1  | 0/1 |
   +-----+-----+-----+

8. Application and Service Parameters ๐ŸŽˆ

this section covers some miscellaneous options used to configure miscellaneous applications and services โœจ.

8.1. Network Information Service Domain Option ๐Ÿ“‡

this option gives the name of the client's NIS [17] domain. the domain is a character string made of characters from the NVT ASCII character set.

the code for this option is 40. its minimum length is 1.

    Code   Len      NIS Domain Name
   +-----+-----+-----+-----+-----+-----+---
   |  40 |  n  |  n1 |  n2 |  n3 |  n4 | ...
   +-----+-----+-----+-----+-----+-----+---

8.2. Network Information Servers Option ๐Ÿ–ฅ๏ธ

this option is a list of IP addresses for NIS servers the client can use. Servers SHOULD be listed in order of preference ๐Ÿ†.

the code for this option is 41. its minimum length is 4, and the length MUST be a multiple of 4.

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  41 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

8.3. Network Time Protocol Servers Option โฑ๏ธ

this option is a list of IP addresses for NTP [18] servers available to the client. Servers SHOULD be listed in order of preference ๐ŸŒท.

the code for this option is 42. its minimum length is 4, and the length MUST be a multiple of 4.

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+--
   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
   +-----+-----+-----+-----+-----+-----+-----+-----+--

8.4. Vendor Specific Information ๐Ÿญ

this option is how clients and servers swap vendor-specific info. the info is an opaque object of n octets, presumably interpreted by vendor-specific code on the clients and servers. the definition is vendor specific, and the vendor is indicated in the class-identifier option. servers that aren't set up to interpret the vendor-specific info a client sends MUST ignore it (although it may be reported). clients that don't receive the vendor-specific info they want SHOULD make an attempt to operate without it, although they may do so (and announce that they're doing so) in a degraded mode ๐Ÿซถ.

if a vendor potentially encodes more than one item of information in this option, then the vendor SHOULD encode the option using "Encapsulated vendor-specific options," as described below:

The Encapsulated vendor-specific options field SHOULD be encoded as a sequence of code/length/value fields of identical syntax to the DHCP options field, with the following exceptions:

  1. There SHOULD NOT be a "magic cookie" field in the encapsulated vendor-specific extensions field.
  2. Codes other than 0 or 255 MAY be redefined by the vendor within the encapsulated vendor-specific extensions field, but SHOULD conform to the tag-length-value syntax defined in section 2.
  3. Code 255 (END), if present, signifies the end of the encapsulated vendor extensions, not the end of the vendor extensions field. If no code 255 is present, then the end of the enclosing vendor-specific information field is taken as the end of the encapsulated vendor-specific extensions field.

the code for this option is 43, and its minimum length is 1 ๐ŸŒˆ.

   Code   Len   Vendor-specific information
   +-----+-----+-----+-----+---
   |  43 |  n  |  i1 |  i2 | ...
   +-----+-----+-----+-----+---

when encapsulated vendor-specific extensions are used, the information bytes 1-n have the following format:

    Code   Len   Data item        Code   Len   Data item       Code
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
   |  T1 |  n  |  d1 |  d2 | ... |  T2 |  n  |  D1 |  D2 | ... | ... |
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

8.5. NetBIOS over TCP/IP Name Server Option ๐Ÿท๏ธ

this option lists RFC 1001/1002 [19] [20] NBNS name servers, in order of preference ๐Ÿ“‹.

the code for this option is 44. the minimum length is 4 octets, and the length must always be a multiple of 4.

    Code   Len           Address 1              Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
   |  44 |  n  |  a1 |  a2 |  a3 |  a4 |  b1 |  b2 |  b3 |  b4 | ...
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----

8.6. NetBIOS over TCP/IP Datagram Distribution Server Option ๐Ÿ“ฎ

this option lists RFC 1001/1002 NBDD servers, in order of preference ๐Ÿ’Œ. the code for this option is 45. the minimum length is 4 octets, and the length must always be a multiple of 4.

    Code   Len           Address 1              Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----
   |  45 |  n  |  a1 |  a2 |  a3 |  a4 |  b1 |  b2 |  b3 |  b4 | ...
   +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----

8.7. NetBIOS over TCP/IP Node Type Option ๐Ÿงฉ

this option lets NetBIOS over TCP/IP clients that are configurable be configured as described in RFC 1001/1002. the value is a single octet that identifies the client type like this:

      Value         Node Type
      -----         ---------
      0x1           B-node
      0x2           P-node
      0x4           M-node
      0x8           H-node

in the chart above, the 0x notation means a number in base-16 (hexadecimal) ๐Ÿ”ข.

the code for this option is 46. the length of this option is always 1.

    Code   Len  Node Type
   +-----+-----+-----------+
   |  46 |  1  | see above |
   +-----+-----+-----------+

8.8. NetBIOS over TCP/IP Scope Option ๐Ÿ”ญ

this option gives the client its NetBIOS over TCP/IP scope parameter, as specified in RFC 1001/1002. for character-set restrictions, see [19], [20], and [8] ๐Ÿง.

the code for this option is 47. the minimum length of this option is 1.

    Code   Len       NetBIOS Scope
   +-----+-----+-----+-----+-----+-----+----
   |  47 |  n  |  s1 |  s2 |  s3 |  s4 | ...
   +-----+-----+-----+-----+-----+-----+----

8.9. X Window System Font Server Option ๐Ÿ”ค

this option lists X Window System [21] Font servers available to the client. Servers SHOULD be listed in order of preference ๐ŸŒŸ.

the code for this option is 48. the minimum length of this option is 4 octets, and the length MUST be a multiple of 4.

    Code   Len         Address 1               Address 2
   +-----+-----+-----+-----+-----+-----+-----+-----+---
   |  48 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |   ...
   +-----+-----+-----+-----+-----+-----+-----+-----+---

8.10. X Window System Display Manager Option ๐ŸชŸ

this option lists IP addresses of systems that are running the X Window System Display Manager and are available to the client.

Addresses SHOULD be listed in order of preference ๐Ÿ….

the code for this option is 49. the minimum length is 4, and the length MUST be a multiple of 4.

    Code   Len         Address 1               Address 2

   +-----+-----+-----+-----+-----+-----+-----+-----+---
   |  49 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |   ...
   +-----+-----+-----+-----+-----+-----+-----+-----+---

9. DHCP Extensions ๐Ÿฆ‹

this section covers the options that are specific to DHCP ๐Ÿ’–.

9.1. Requested IP Address ๐ŸŽ€

okay so this option is used in a client request (DHCPDISCOVER) to let the client ask for a particular IP address to be assigned to it ๐Ÿ’–

The code for this option is 50, and its length is 4.

 Code   Len          Address
+-----+-----+-----+-----+-----+-----+
|  50 |  4  |  a1 |  a2 |  a3 |  a4 |
+-----+-----+-----+-----+-----+-----+

9.2. IP Address Lease Time โฐ

this one is giving "time management" ๐Ÿ˜ญ a client can use it in a DHCPDISCOVER or DHCPREQUEST to ask for a lease time on the IP address. then, in a server reply (DHCPOFFER), the DHCP server uses it to say which lease time it's willing to offer ๐ŸŒธ

the time is in seconds, and it's stored as a 32-bit unsigned integer ๐Ÿงš

The code for this option is 51, and its length is 4.

 Code   Len         Lease Time
+-----+-----+-----+-----+-----+-----+
|  51 |  4  |  t1 |  t2 |  t3 |  t4 |
+-----+-----+-----+-----+-----+-----+

9.3. Option Overload ๐Ÿ“

this option says the DHCP "sname" or "file" fields are being overloaded, meaning they're being used to carry DHCP options instead of what they were originally for ๐Ÿ™ˆ a DHCP server adds this option if the returned parameters won't fit in the usual space set aside for options.

if this option is there, the client reads the specified extra fields after it's done reading the standard option fields. main character energy ๐Ÿ‘‘

The code for this option is 52, and its length is 1. Legal values for this option are:

        Value   Meaning
        -----   --------
          1     the "file" field is used to hold options
          2     the "sname" field is used to hold options
          3     both fields are used to hold options
 Code   Len  Value
+-----+-----+-----+
|  52 |  1  |1/2/3|
+-----+-----+-----+

9.4. DHCP Message Type ๐Ÿ’Œ

this is how the DHCP message type gets conveyed โœจ The code for this option is 53, and its length is 1. Legal values for this option are:

        Value   Message Type
        -----   ------------
          1     DHCPDISCOVER
          2     DHCPOFFER
          3     DHCPREQUEST
          4     DHCPDECLINE
          5     DHCPACK
          6     DHCPNAK
          7     DHCPRELEASE
 Code   Len  Type
+-----+-----+-----+
|  53 |  1  | 1-7 |
+-----+-----+-----+

9.5. Server Identifier ๐Ÿฆ‹

this option shows up in DHCPOFFER and DHCPREQUEST messages, and it may optionally be included in DHCPACK and DHCPNAK messages too. DHCP servers put it in the DHCPOFFER so the client can tell lease offers apart ๐Ÿ’œ and when a client is picking one of several offers, it includes this option in its DHCPREQUEST so everyone knows which one won ๐Ÿ†

the identifier is the IP address of the selected server.

The code for this option is 54, and its length is 4.

 Code   Len            Address
+-----+-----+-----+-----+-----+-----+
|  54 |  4  |  a1 |  a2 |  a3 |  a4 |
+-----+-----+-----+-----+-----+-----+

9.6. Parameter Request List ๐Ÿ“

a DHCP client uses this option to ask for values for specific configuration parameters ๐Ÿซถ the list of requested parameters is n octets long, and each octet is a valid DHCP option code as defined in this document.

the client MAY list the options in order of preference ๐Ÿ’… the DHCP server is not required to return the options in the requested order, but it MUST try to insert the requested options in the order the client asked for ๐Ÿ”ฅ

The code for this option is 55. Its minimum length is 1.

 Code   Len   Option Codes
+-----+-----+-----+-----+---
|  55 |  n  |  c1 |  c2 | ...
+-----+-----+-----+-----+---

9.7. Message ๐Ÿ’ฌ

a DHCP server uses this option to send an error message to a DHCP client in a DHCPNAK message when something goes wrong ๐Ÿ˜ญ a client can also use it in a DHCPDECLINE message to say why it declined the offered parameters. the message is n octets of NVT ASCII text, which the client may display on an available output device โœจ

The code for this option is 56 and its minimum length is 1.

 Code   Len     Text
+-----+-----+-----+-----+---
|  56 |  n  |  c1 |  c2 | ...
+-----+-----+-----+-----+---

9.8. Maximum DHCP Message Size ๐Ÿ“ฆ

this option specifies the maximum length DHCP message that a host is willing to accept ๐Ÿงš the length is an unsigned 16-bit integer. a client may use this option in DHCPDISCOVER or DHCPREQUEST messages, but should not use it in DHCPDECLINE messages ๐Ÿ™…โ€โ™€๏ธ

The code for this option is 57, and its length is 2. The minimum legal value is 576 octets.

 Code   Len     Length
+-----+-----+-----+-----+
|  57 |  2  |  l1 |  l2 |
+-----+-----+-----+-----+

9.9. Renewal (T1) Time Value โณ

this option is the time interval from address assignment until the client transitions to the RENEWING state ๐ŸŒˆ

the value is in seconds, and it's a 32-bit unsigned integer ๐Ÿ’œ

The code for this option is 58, and its length is 4.

 Code   Len         T1 Interval
+-----+-----+-----+-----+-----+-----+
|  58 |  4  |  t1 |  t2 |  t3 |  t4 |
+-----+-----+-----+-----+-----+-----+

9.10. Rebinding (T2) Time Value ๐ŸŒ™

this one is the time interval from address assignment until the client transitions to the REBINDING state ๐Ÿฆ‹

the value is in seconds, and it's a 32-bit unsigned integer โญ

The code for this option is 59, and its length is 4.

 Code   Len         T2 Interval
+-----+-----+-----+-----+-----+-----+
|  59 |  4  |  t1 |  t2 |  t3 |  t4 |
+-----+-----+-----+-----+-----+-----+

9.11. Class-identifier ๐Ÿท๏ธ

DHCP clients use this option to optionally identify the type and configuration of the client ๐ŸŽ€ the information is a string of n octets, and servers are the ones who interpret it ๐Ÿ‘€ vendors and sites can define specific class identifiers to convey particular configuration or other identification info about a client. for example, the identifier might encode the client's hardware configuration ๐Ÿ”ง

servers that aren't equipped to interpret the class-specific information a client sends MUST ignore it (although it may be reported). ๐Ÿ’€

The code for this option is 60, and its minimum length is 1.

 Code   Len   Class-Identifier
+-----+-----+-----+-----+---
|  60 |  n  |  i1 |  i2 | ...
+-----+-----+-----+-----+---

9.12. Client-identifier ๐Ÿชช

DHCP clients use this option to specify their unique identifier ๐Ÿ’– DHCP servers use that value to index their database of address bindings. this value is expected to be unique for all clients in an administrative domain ๐Ÿซถ

Identifiers consist of a type-value pair, similar to the

It is expected that this field will typically contain a hardware type and hardware address, but this is not required. Current legal values for hardware types are defined in [22].

The code for this option is 61, and its minimum length is 2.

 Code   Len   Type  Client-Identifier
+-----+-----+-----+-----+-----+---
|  61 |  n  |  t1 |  i1 |  i2 | ...
+-----+-----+-----+-----+-----+---

10. Extensions โœจ

more generic data fields can be registered by contacting:

   Internet Assigned Numbers Authority (IANA)
   USC/Information Sciences Institute
   4676 Admiralty Way
   Marina del Rey, California  90292-6695

   or by email as: iana@isi.edu

implementation specific use of undefined generic types (those in the range 61-127) may conflict with other implementations, so registration is required ๐Ÿšง

11. Acknowledgements ๐Ÿซถ

the authors would like to thank Philip Almquist for his feedback on this document. the comments of the DHCP Working Group are also gratefully acknowledged ๐Ÿ™Œ in particular, Mike Carney and Jon Dreyer from SunSelect suggested the current format of the Vendor-specific Information option ๐Ÿ’œ

RFC 1497 is based on earlier work by Philip Prindeville, with help from Drew Perkins, Bill Croft, and Steve Deering ๐ŸŒธ

12. References ๐Ÿ“š

  • [1] Droms, R., "Dynamic Host Configuration Protocol", RFC 1531, Bucknell University, October 1993.
  • [2] Reynolds, J., "BOOTP Vendor Information Extensions", RFC 1497, USC/Information Sciences Institute, August 1993.
  • [3] Croft, W., and J. Gilmore, "Bootstrap Protocol", RFC 951, Stanford University and Sun Microsystems, September 1985.
  • [4] Braden, R., Editor, "Requirements for Internet Hosts - Communication Layers", STD 3, RFC 1122, USC/Information Sciences Institute, October 1989.
  • [5] Mogul, J., and J. Postel, "Internet Standard Subnetting Procedure", STD 5, RFC 950, USC/Information Sciences Institute, August 1985.
  • [6] Postel, J., and K. Harrenstien, "Time Protocol", STD 26, RFC 868, USC/Information Sciences Institute, SRI, May 1983.
  • [7] Postel, J., "Name Server", IEN 116, USC/Information Sciences Institute, August 1979.
  • [8] Mockapetris, P., "Domain Names - Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987.
  • [9] Postel, J., "Quote of the Day Protocol", STD 23, RFC 865, USC/Information Sciences Institute, May 1983.
  • [10] McLaughlin, L., "Line Printer Daemon Protocol", RFC 1179, The Wollongong Group, August 1990.
  • [11] Accetta, M., "Resource Location Protocol", RFC 887, CMU, December 1983.
  • [12] Mogul, J. and S. Deering, "Path MTU Discovery", RFC 1191, DECWRL, Stanford University, November 1990.
  • [13] Deering, S., "ICMP Router Discovery Messages", RFC 1256, Xerox PARC, September 1991.
  • [14] Leffler, S. and M. Karels, "Trailer Encapsulations", RFC 893, U. C. Berkeley, April 1984.
  • [15] Hornig, C., "Standard for the Transmission of IP Datagrams over Ethernet Networks", RFC 894, Symbolics, April 1984.
  • [16] Postel, J. and J. Reynolds, "Standard for the Transmission of IP Datagrams Over IEEE 802 Networks", RFC 1042, USC/Information Sciences Institute, February 1988.
  • [17] Sun Microsystems, "System and Network Administration", March 1990.
  • [18] Mills, D., "Internet Time Synchronization: The Network Time Protocol", RFC 1305, UDEL, March 1992.
  • [19] NetBIOS Working Group, "Protocol Standard for a NetBIOS Service on a TCP/UDP transport: Concepts and Methods", STD 19, RFC 1001, March 1987.
  • [20] NetBIOS Working Group, "Protocol Standard for a NetBIOS Service on a TCP/UDP transport: Detailed Specifications", STD 19, RFC 1002, March 1987.
  • [21] Scheifler, R., "FYI On the X Window System", FYI 6, RFC 1198, MIT Laboratory for Computer Science, January 1991.
  • [22] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340, USC/Information Sciences Institute, July 1992.

13. Security Considerations ๐Ÿ”ฅ

security issues are not discussed in this memo. ๐Ÿ’€ I know, I know, it's lowkey dramatic, but this is the official word, so please go in with your eyes open ๐Ÿ‘€

14. Authors' Addresses ๐Ÿ’…

   Steve Alexander
   Lachman Technology, Inc.
   1901 North Naper Boulevard
   Naperville, IL 60563-8895

   Phone: (708) 505-9555 x256
   EMail: stevea@lachman.com


   Ralph Droms
   Computer Science Department
   323 Dana Engineering
   Bucknell University
   Lewisburg, PA 17837

   Phone: (717) 524-1145
   EMail: droms@bucknell.edu
๐Ÿ“ฆ where this page comes from