RFC 1497 DRAFT STANDARD BOOTP · BOOTSTRAP · CONFIGURATION

BOOTP extensions: BOOTP Vendor Information Extensions

A tagged list of settings a BOOTP server can hand to a booting machine in the 64-byte vendor field.

On rfc-editor.org ↗
PUBLISHED
August 1993
AUTHORS
J. Reynolds
STREAM
Legacy
BUILDS ON
RFC 1048 — BOOTP vendor extensions, RFC 1084 — BOOTP Vendor Extensions, RFC 1395 — BOOTP vendor extensions, RFC 951 — BOOTP
OBSOLETED BY
RFC 1533 — DHCP options
VENDOR AREA SIZE
64 octets
MAGIC COOKIE
99.130.83.99 (63.82.53.63 hex)
NEW IN THIS EDITION
Tag 18, Extensions Path
END TAG
255
SITE-SPECIFIC TAGS
128 to 254
DOI
10.17487/RFC1497

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                       J. Reynolds
Request for Comments: 1497                                          ISI
Obsoletes: 1395, 1084, 1048                                 August 1993
Updates: 951


                  BOOTP Vendor Information Extensions

Status of this Memo

   This memo is a status report on the vendor information extensions
   used in the Bootstrap Protocol (BOOTP).  Distribution of this memo is
   unlimited.

Introduction

   This RFC is a slight revision and extension of RFC-1048 by Philip
   Prindeville, who should be credited with the original work in this
   memo.  This memo will be updated as additional tags are are defined.
   This edition introduces Tag 18 for Extension Path.

   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-
   1034]), 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-
            1034].

         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.

         Boot File Size (Tag: 13, Data: 2)

            A two octet value (in network order) specifying the number
            of 512 octet blocks in the default boot file.  Informs BOOTP
            client how large the BOOTP file image is.

         Merit Dump File (Tag: 14, Data: N bytes of filename)

            Name of a file to dump core of this client to.

         Domain Name  (Tag: 15, Data: N bytes of domain name)

            Specifies the domain name of the client for Domain Name
            Server (DNS) resolution [RFC-1034].

         Swap Server (Tag: 16, Data: 4 address bytes)

            An IP address to hold the IP address of a swap server.

         Root Path  (Tag: 17, Data: N bytes of path name)

            A string to specify a pathname to mount as a root disk.

         Extensions Path  (Tag: 18, Data: N bytes of path name)

            A string to specify a file, retrievable via TFTP, which
            contains information which can be interpreted in the same
            way as the 64-octet vendor-extension field within the BOOTP
            response, with the following exceptions:

                   - 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.

         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:

          Internet Assigned Numbers Authority (IANA)
          Information Sciences Institute
          University of Southern California
          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 19-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

   The following people provided helpful comments on the first edition
   of 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 (BOOTP)",
               RFC 951, Stanford and SUN Microsystems, September 1985.

   [RFC-903]   Finlayson, R., Mann, T., Mogul, J., and M. Theimer, "A
               Reverse Address Resolution Protocol", STD 38, RFC 903,
               Stanford, June 1984.

   [RFC-887]   Accetta, M., "Resource Location Protocol", RFC 887, CMU,
               December 1983.

   [RFC-1034]  Mockapetris, P., "Domain Names - Concepts and
               Facilities", STD 13, RFC 1034, USC/Information Sciences
               Institute, November 1987.

   [RFC-950]   Mogul, J., and J. Postel, "Internet Standard Subnetting
               Procedure", STD 5, RFC 950, USC/Information Sciences
               Institute, August 1985.

   [RFC-868]   Postel, J., "Time Protocol", STD 26, RFC 868,
               USC/Information Sciences Institute, May 1983.

   [IEN-116]   Postel, J., "Internet Name Server", USC/Information
               Sciences Institute, 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", STD 23, RFC 865,
               USC/Information Sciences Institute, 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.

Security Considerations

   Security issues are not discussed in this memo.

Author's Address:

   Joyce K. Reynolds
   Information Sciences Institute
   University of Southern California
   4676 Admiralty Way
   Marina del Rey, CA 90292

   Phone:  (310) 822-1511

   EMail: jkrey@isi.edu

AI ELI5

On this page
PROBLEMBOOTP gives a booting host an address and a boot file, but its last field, a 64 octet vendor area, had no common meaning, so servers could not hand out useful settings in a uniform way.
MECHANISMThe area starts with a 4 octet magic cookie, 99.130.83.99, followed by tagged fields such as subnet mask (tag 1), gateway (tag 3) and domain name server (tag 6), ended by tag 255.
STATUS TODAYRFC 1497 is a Draft Standard that revised RFC 1048 and added tag 18. It has since been obsoleted by RFC 1533.

§1Why BOOTP Needs Extensions

The Bootstrap Protocol (BOOTP) is a UDP/IP-based protocol that lets a booting host configure itself dynamically and without user supervision. It can assign an IP address, name a file to download a boot program from, name the server holding it and, if present, give the address of an Internet gateway.

RFC 1497 is a slight revision and extension of RFC 1048, credited to Philip Prindeville, and it introduces Tag 18 for Extension Path. It defines a potentially vendor-independent interpretation of the vendor information area of the BOOTP packet, so that one server can serve mixed clients at a site with a generic class of data.

The memo also explains how it fits with RFC 903 (RARP), which assigns an IP address to a hardware address but provides only part of the functionality needed.

Imagine a new kid at school who is handed a name tag and a room number. This memo adds extra notes to that handout, like where the playground is and who the teacher is.

§2The Vendor Information Field

The memo concerns only the last field of the BOOTP packet, a 64 octet area reserved for vendor information. Its first four bytes are the magic cookie, which says how the rest is to be read. The value is the 4 octet dotted decimal 99.130.83.99 (hexadecimal 63.82.53.63) in network byte order.

After the cookie comes a free-format run of tagged sub-fields. Most are length tagged, so a client that does not understand a tag can skip it. Lengths do not count the tag and length octets, and all multi-byte quantities are in network byte order.

Fixed length fields come in two shapes: a lone tag octet with no data (implicit length of one octet), or a tag octet, a length octet and that many data octets. Variable length fields always use the tag, length, data shape.

The field starts with a secret password that says 'the notes that follow use this system'. Each note then has a label and a size, so a reader can skip a note it does not understand.

§3The Defined Tags

The fixed fields are Pad (tag 0, no data, used to align later fields to word boundaries), Subnet Mask (tag 1, 4 bytes, which must precede the gateway field if present), Time Offset (tag 2, 4 bytes, a signed 32-bit number of seconds from UTC) and End (tag 255, marking the end of usable data; the rest should be filled with pad octets).

Variable length fields mostly carry lists of IP addresses, N bytes for N/4 servers: Gateway (3, with the preferred one first), Time Server (4), IEN-116 Name Server (5), Domain Name Server (6), Log Server (7), Cookie/Quote Server (8), LPR Server (9), Impress Server (10) and RLP Server (11).

Others carry text or numbers: Hostname (12), Boot File Size (13, a two octet count of 512 octet blocks), Merit Dump File (14), Domain Name (15), Swap Server (16, one address), Root Path (17) and Extensions Path (18).

Extensions Path names a file, retrievable via TFTP, that is read like the 64-octet vendor field except that its length is unconstrained and any Tag 18 inside it is ignored. Tags 128 to 254 are reserved for site-specific use and should follow all data using the generic tags 0 to 127.

Each label means one thing: 'your neighbourhood mask', 'where the router is', 'who tells the time', 'what your name is'. A label called END says there are no more notes.

SELECTED BOOTP VENDOR TAGS (RFC 1497)
  • 0Pad — No data; aligns later fields.
  • 1Subnet Mask — 4 bytes; must precede Gateway.
  • 2Time Offset — Seconds from UTC, signed 32-bit.
  • 3Gateway — N/4 gateway addresses, preferred first.
  • 6Domain Name Server — N/4 DNS server addresses.
  • 12Hostname — Name of the client.
  • 13Boot File Size — Size in 512 octet blocks.
  • 15Domain Name — Client domain for DNS resolution.
  • 18Extensions Path — File fetched by TFTP holding more fields.
  • 255End — End of usable data.

§4Adding New Tags and Staying Within 64 Bytes

New generic fields are registered with the Internet Assigned Numbers Authority (IANA). Using undefined generic types in the range 19 to 127 without registration may conflict with other implementations.

Space is tight. The memo says care should be taken not to exceed the 64 byte length restriction. Nonessential information such as the host name and the quote of the day server can be left out and found later with a more appropriate service, such as RLP or the WKS resource-type of the domain name system.

The note card is small. If it is full, leave off the unimportant notes and ask someone else for them later.

§5Comparison to Alternative Approaches

A section contributed by Steve Deering argues that extending BOOTP may not be necessary. Instead of each host module asking the BOOTP server for server addresses, each could multicast directly to the server group it needs, possibly with expanding ring multicasts.

The memo lists three advantages of multicast: it removes dependency on a BOOTP server that may be unavailable or have an incorrect database, it reduces the chore of keeping a replicated BOOTP database consistent, and it can reduce packet traffic or delay. It also notes the BOOTP approach is uniform and gives an administrator easy control over which hosts use which servers.

The main drawback of multicast is that IP multicasting is not widely implemented and existing services do not understand it. The BOOTP approach may be most efficient when a single BOOTP reply carries everything the client needs.

You could ask one helper for all the answers, or you could shout the question and let whoever knows reply. Each way has good and bad points, and the memo lists them.

§6Security Considerations

The memo states that security issues are not discussed in it. A booting client simply takes the settings that arrive in the reply.

The memo does not talk about how to stop someone from handing out wrong notes.

§7References