BOOTP vendor extensions: BOOTP vendor information extensions
Extra information delivered with BOOTP to help new computers configure themselves.
Prindeville, P.A., "BOOTP vendor information extensions", RFC 1048, DOI 10.17487/RFC1048, February 1988, <https://www.rfc-editor.org/info/rfc1048>.
@misc{rfc1048,
series = {Request for Comments},
number = 1048,
howpublished = {RFC 1048},
publisher = {RFC Editor},
doi = {10.17487/RFC1048},
url = {https://www.rfc-editor.org/info/rfc1048},
author = {P.A. Prindeville},
title = {{BOOTP vendor information extensions}},
pagetotal = 7,
year = 1988,
month = feb,
} RFC text
Contents
Network Working Group P. Prindeville
Request for Comments: 1048 McGill University
February 1988
BOOTP Vendor Information Extensions
Status of this Memo
This memo proposes an addition to the Bootstrap Protocol (BOOTP).
Comments and suggestions for improvements are sought. Distribution
of this memo is unlimited.
Introduction
As workstations and personal computers proliferate on the Internet,
the administrative complexity of maintaining a network is increased
by an order of magnitude. The assignment of local network resources
to each client represents one such difficulty. In most environments,
delegating such responsibility to the user is not plausible and,
indeed, the solution is to define the resources in uniform terms, and
to automate their assignment.
The basic Bootstrap Protocol [RFC-951] dealt with the issue of
assigning an internet address to a client, as well as a few other
resources. The protocol included provisions for vendor-defined
resource information.
This memo defines a (potentially) vendor-independent interpretation
of this resource information.
Overview of BOOTP
While the Reverse Address Resolution (RARP) Protocol [RFC-903] may be
used to assign an IP address to a local network hardware address, it
provides only part of the functionality needed. Though this protocol
can be used in conjunction with other supplemental protocols (the
Resource Location Protocol [RFC-887], the Domain Name System [RFC-
883]), a more integrated solution may be desirable.
Bootstrap Protocol (BOOTP) is a UDP/IP-based protocol that allows a
booting host to configure itself dynamically, and more significantly,
without user supervision. It provides a means to assign a host its
IP address, a file from which to download a boot program from some
server, that server's address, and (if present) the address of an
Internet gateway.
One obvious advantage of this procedure is the centralized management
of network addresses, which eliminates the need for per-host unique
configuration files. In an environment with several hundred hosts,
maintaining local configuration information and operating system
versions specific to each host might otherwise become chaotic. By
categorizing hosts into classes and maintaining configuration
information and boot programs for each class, the complexity of this
chore may be reduced in magnitude.
BOOTP Vendor Information Format
The full description of the BOOTP request/reply packet format may be
found in [RFC-951]. The rest of this document will concern itself
with the last field of the packet, a 64 octet area reserved for
vendor information, to be used in a hitherto unspecified fashion. A
generalized use of this area for giving information useful to a wide
class of machines, operating systems, and configurations follows. In
situations where a single BOOTP server is to be used among
heterogeneous clients in a single site, a generic class of data may
be used.
Vendor Information "Magic Cookie"
As suggested in [RFC-951], the first four bytes of this field have
been assigned to the magic cookie, which 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.
Format of Individual Fields
The vendor information field has been implemented as a free
format, with extendable tagged sub-fields. These sub-fields are
length tagged (with exceptions; see below), allowing clients not
implementing certain types to correctly skip fields they cannot
interpret. Lengths are exclusive of the tag and length octets;
all multi-byte quantities are in network byte-order.
Fixed Length Data
The fixed length data are comprised of two formats. Those that
have no data consist of a single tag octet and are implicitly
of one-octet length, while those that contain data consist of
one tag octet, one length octet, and length octets of data.
Pad Field (Tag: 0, Data: None)
May be used to align subsequent fields to word boundaries
required by the target machine (i.e., 32-bit quantities such
as IP addresses on 32-bit boundaries).
Subnet Mask Field (Tag: 1, Data: 4 subnet mask bytes)
Specifies the net and local subnet mask as per the standard
on subnetting [RFC-950]. For convenience, this field must
precede the GATEWAY field (below), if present.
Time Offset Field (Tag: 2, Data: 4 time offset bytes)
Specifies the time offset of the local subnet in seconds
from Coordinated Universal Time (UTC); signed 32-bit
integer.
End Field (Tag: 255, Data: None)
Specifies end of usable data in the vendor information area.
The rest of this field should be filled with PAD zero)
octets.
Variable Length Data
The variable length data has a single format; it consists of
one tag octet, one length octet, and length octets of data.
Gateway Field (Tag: 3, Data: N address bytes)
Specifies the IP addresses of N/4 gateways for this subnet.
If one of many gateways is preferred, that should be first.
Time Server Field (Tag: 4, Data: N address bytes)
Specifies the IP addresses of N/4 time servers [RFC-868].
IEN-116 Name Server Field (Tag: 5, Data: N address bytes)
Specifies the IP addresses of N/4 name servers [IEN-116].
Domain Name Server Field (Tag: 6, Data: N address bytes)
Specifies the IP addresses of N/4 domain name servers RFC-
883].
Log Server Field (Tag: 7, Data: N address bytes)
Specifies the IP addresses of N/4 MIT-LCS UDP log server
[LOGGING].
Cookie/Quote Server Field (Tag: 8, Data: N address bytes)
Specifies the IP addresses of N/4 Quote of the Day servers
[RFC-865].
LPR Server Field (Tag: 9, Data: N address bytes)
Specifies the IP addresses of N/4 Berkeley 4BSD printer
servers [LPD].
Impress Server Field (Tag: 10, Data: N address bytes)
Specifies the IP addresses of N/4 Impress network image
servers [IMAGEN].
RLP Server Field (Tag: 11, Data: N address bytes)
Specifies the IP addresses of N/4 Resource Location Protocol
(RLP) servers [RFC-887].
Hostname (Tag: 12, Data: N bytes of hostname)
Specifies the name of the client. The name may or may not
domain qualified: this is a site-specific issue.
Reserved Fields (Tag: 128-254, Data: N bytes of undefined
content)
Specifies additional site-specific information, to be
interpreted on an implementation-specific basis. This
should follow all data with the preceding generic tags 0-
127).
Extensions
Additional generic data fields may be registered by contacting:
Joyce K. Reynolds
USC - Information Sciences Institute
4676 Admiralty Way
Marina del Rey, California 90292-6695
or by E-mail as: JKREYNOLDS@ISI.EDU
(nic handle JKR1).
Implementation specific use of undefined generic types (those in the
range 12-127) may conflict with other implementations, and
registration is required.
When selecting information to put into the vendor specific area, care
should be taken to not exceed the 64 byte length restriction.
Nonessential information (such as host name and quote of the day
server) may be excluded, which may later be located with a more
appropriate service protocol, such as RLP or the WKS resource-type of
the domain name system. Indeed, even RLP servers may be discovered
using a broadcast request to locate a local RLP server.
Comparison to Alternative Approaches
Extending BOOTP to provide more configuration information than the
minimum required by boot PROMs may not be necessary. Rather than
having each module in a host (e.g., the time module, the print
spooler, the domain name resolver) broadcast to the BOOTP server to
obtain the addresses of required servers, it would be better for each
of them to multicast directly to the particular server group of
interest, possibly using "expanding ring" multicasts.
The multicast approach has the following advantages over the BOOTP
approach:
- It eliminates dependency on a third party (the BOOTP server) that
may be temporarily unavailable or whose database may be incorrect or
incomplete. Multicasting directly to the desired services will
locate those servers that are currently available, and only those.
- It reduces the administrative chore of keeping the (probably
replicated) BOOTP database up-to-date and consistent. This is
especially important in an environment with a growing number of
services and an evolving population of servers.
- In some cases, it reduces the amount of packet traffic and/or the
delay required to get the desired information. For example, the
current time can be obtained by a single multicast to a time server
group which evokes replies from those time servers that are
currently up. The BOOTP approach would require a broadcast to the
BOOTP server, a reply from the BOOTP server, one or more unicasts to
time servers (perhaps waiting for long timeouts if the initially
chosen server(s) are down), and finally a reply from a server.
One apparent advantage of the proposed BOOTP extensions is that they
provide a uniform way to locate servers. However, the multicast
approach could also be implemented in a consistent way across
multiple services. The V System naming protocol is a good example of
this; character string pathnames are used to name any number of
resources (i.e., not just files) and a standard subroutine library
looks after multicasting to locate the resources, caching the
discovered locations, and detecting stale cache data.
Another apparent advantage of the BOOTP approach is that it allows an
administrator to easily control which hosts use which servers. The
multicast approach favors more distributed control over resource
allocation, where each server decides which hosts it will serve,
using whatever level of authentication is appropriate for the
particular service. For example, time servers usually don't care who
they serve (i.e., administrative control via the BOOTP database is
unnecessary), whereas file servers usually require strong
authentication (i.e., administrative control via the BOOTP database
is insufficient).
The main drawback of the multicast approach, of course, is that IP
multicasting is not widely implemented, and there is a need to locate
existing services which do not understand IP multicasts.
The BOOTP approach may be most efficient in the case that all the
information needed by the client host is returned by a single BOOTP
reply and each program module simply reads the information it needs
from a local table filled in by the BOOTP reply.
Acknowledgments
I would like to thank the following persons for their helpful
comments and insights into this memo: Drew Perkins, of Carnagie
Mellon University, Bill Croft, of Stanford University, and co-author
of BOOTP, and Steve Deering, also of Stanford University, for
contributing the "Comparison to Alternative Approaches" section.
References
[RFC-951] Croft, B., and J. Gilmore, "Bootstrap Protocol", Network
Information Center, SRI International, Menlo Park,
California, September 1985.
[RFC-903] Finlayson, R., T. Mann, J. Mogul, and M. Theimer, "A
Reverse Address Resolution Protocol", Network Information
Center, SRI International, Menlo Park, California, June
1984.
[RFC-887] Accetta, M., "Resource Location Protocol", Network
Information Center, SRI International, Menlo Park,
California, December 1983.
[RFC-883] Mockapetris, P., "Domain Name - Implementation and
Specification", Network Information Center, SRI
International, Menlo Park, California, November 1983.
[RFC-950] Mogul, J., "Internet Standard Subnetting Procedure",
Network Information Center, SRI International, Menlo
Park, California, August 1985.
[RFC-868] Postel, J., "Time Protocol", Network Information Center,
SRI International, Menlo Park, California, May 1983.
[IEN-116] Postel, J., "Internet Name Server", Network Information
Center, SRI International, Menlo Park, California, August
1979.
[LOGGING] Clark, D., Logging and Status Protocol", Massachusetts
Institute of Technology Laboratory for Computer Science,
Cambridge, Massachusetts, 1981.
[RFC-865] Postel, J., "Quote of the Day Protocol", Network
Information Center, SRI International, Menlo Park,
California, May 1983.
[LPD] Campbell, R., "4.2BSD Line Printer Spooler Manual", UNIX
Programmer's Manual, Vol II, University of California at
Berkeley, Computer Science Division, July 1983.
[IMAGEN] "Image Server XT Programmer's Guide", Imagen Corporation,
Santa Clara, California, August 1986.
AI ELI5
On this page
§1Introduction to BOOTP Configuration Extensions
As workstations and personal computers proliferate on the Internet, the administrative complexity of maintaining a network grows by an order of magnitude. The assignment of local network resources to each client represents a significant difficulty. Rather than delegating this responsibility to users, the solution is to define resources in uniform terms and automate their assignment.
The Bootstrap Protocol (BOOTP) addresses the issue of assigning an IP address to a client automatically during boot, along with other resources. The basic protocol included provisions for vendor-defined resource information, but this format was not clearly specified. RFC 1048 defines a vendor-independent interpretation of this resource information, providing a standardized way for BOOTP servers to convey configuration details to booting clients.
When a new computer starts up, it needs to know its settings. BOOTP is a protocol to ask a server 'What should I be configured as?' This RFC explains how to add extra information to those answers.
§2BOOTP Overview and Motivation
While the Reverse Address Resolution Protocol (RARP) can assign an IP address to a hardware address, it provides only part of the functionality needed for automatic configuration. BOOTP is a UDP/IP-based protocol that allows a booting host to configure itself dynamically without user supervision. It provides a means to assign a host its IP address, a filename from which to download a boot program and the address of that server, and the address of an Internet gateway if present.
One obvious advantage of BOOTP is centralized management of network addresses, eliminating the need for per-host unique configuration files. In an environment with hundreds of hosts, this dramatically reduces administrative overhead. By categorizing hosts into classes and maintaining configuration information for each class, the complexity of network management is greatly reduced.
BOOTP lets a computer ask a central server 'What are my settings?' instead of having someone type them in by hand. It is like calling a phone number to ask 'What should I do?' and the server tells the computer its IP address and where to find a boot program.
§3Vendor Information Format and Magic Cookie
The BOOTP packet includes a 64-octet field reserved for vendor information, which RFC 1048 standardizes for general use. The vendor information field uses a magic cookie to identify the mode in which succeeding data should be interpreted. The magic cookie value is the 4-octet sequence 99.130.83.99 (hexadecimal: 63.82.53.63) in network byte order.
After the magic cookie, the vendor information field is implemented as free-form data with extendable tagged subfields. These subfields are length-tagged (with limited exceptions), allowing clients that do not implement certain field types to correctly skip over them. All lengths are exclusive of the tag and length octets, and all multi-byte quantities are in network byte order.
The vendor information is like a set of boxes added to the BOOTP answer. Each box has a label (tag) and says how big it is, so a computer that does not understand a box can skip over it and look at the next one.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
MAGIC-COOKIE | Magic Cookie | 4 bytes | 4-octet identifier: 99.130.83.99 (hex 63.82.53.63) | |
TAG-LENGTH-DATA | Tag-Length-Value Fields | 30 bytes | Extendable tagged subfields with 60 remaining bytes |
§4Fixed and Variable Length Fields
The vendor information uses two types of fields. Fixed-length data has two formats: fields with no data consist of a single tag octet and are implicitly one octet in length, while fields with data consist of a tag octet, a length octet, and the specified number of data octets. The Pad field (tag 0) contains no data and aligns subsequent fields to word boundaries. The Subnet Mask field (tag 1) provides 4 octets specifying the subnet mask. The Time Offset field (tag 2) provides a signed 32-bit integer specifying the time offset in seconds from UTC. The End field (tag 255) marks the end of usable data.
Variable-length data fields all use the same format: tag, length, and data octets. The specification defines fields for gateway addresses (tag 3), time servers (tag 4), name servers (tags 5 and 6), log servers (tag 7), quote-of-the-day servers (tag 8), printer servers (tag 9), Impress image servers (tag 10), Resource Location Protocol servers (tag 11), and hostname (tag 12). Reserved fields (tags 128-254) are available for site-specific information.
The fields are like different types of envelopes. Simple ones with fixed content (like the pad) just have a tag. Others have a tag, a size, and then that much data. Gateways and servers are lists of IP addresses, and the hostname is a text string.
§5Extensibility and Registration
Additional generic data fields may be registered by contacting the designated administrator at USC's Information Sciences Institute. Implementation-specific use of undefined generic types (those in the range 12-127) may conflict with other implementations, so registration is required before using them. Implementation-specific fields should use the reserved range (128-254) to avoid conflicts.
When selecting information to include in the vendor-specific area, care should be taken not to exceed the 64-byte length restriction. Nonessential information such as hostname and quote-of-the-day server addresses may be excluded if needed, as these can be located using more appropriate service protocols later. The RFC notes that the multicast approach to service discovery has advantages, but acknowledges that IP multicast was not widely implemented at the time and BOOTP provides a unified discovery mechanism.
If you want to add a new type of box to the vendor information, you need to register it so different computers do not use the same box for different things. There is limited space (64 bytes), so you might not fit everything you want.