summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc906.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc906.txt')
-rw-r--r--doc/rfc/rfc906.txt227
1 files changed, 227 insertions, 0 deletions
diff --git a/doc/rfc/rfc906.txt b/doc/rfc/rfc906.txt
new file mode 100644
index 0000000..8ac2b3a
--- /dev/null
+++ b/doc/rfc/rfc906.txt
@@ -0,0 +1,227 @@
+
+Network Working Group Ross Finlayson
+Request for Comments: 906 Stanford University
+ June 1984
+
+ Bootstrap Loading using TFTP
+
+
+Status of this Memo
+
+ It is often convenient to be able to bootstrap a computer system from
+ a communications network. This RFC proposes the use of the IP TFTP
+ protocol for bootstrap loading in this case.
+
+ This RFC specifies a proposed protocol for the ARPA Internet
+ community, and requests discussion and suggestions for improvements.
+
+Introduction
+
+ Many computer systems, such as diskless workstations, are
+ bootstrapped by loading one or more code files across a network.
+ Unfortunately, the protocol used to load these initial files has not
+ been standardized - numerous methods have been employed by different
+ computer manufacturers. This can make it difficult, for example, for
+ an installation to support several different kinds of systems on a
+ local-area network. Each different booting mechanism that is used
+ must be supported, for example by implementing a number of servers on
+ one or more host machines. This is in spite of the fact that these
+ heterogeneous systems may be able to communicate freely (all using
+ the same protocol) once they have been booted.
+
+ We propose that TFTP (Trivial File Transfer Protocol) [6] be used as
+ a standard protocol for bootstrap loading. This protocol is
+ well-suited for our purpose, being based on the standard Internet
+ Protocol (IP) [4]. It is easily implemented, both in the machines to
+ be booted, and in bootstrap servers elsewhere on the net. (In
+ addition, many popular operating systems already support TFTP
+ servers.) The fact that TFTP is a rather slow protocol is not a
+ serious concern, due to the fact that it need be used only for the
+ primary bootstrap. A secondary bootstrap could use a faster
+ protocol.
+
+ This RFC describes how system to be booted (called the "booter"
+ below) would use TFTP to load a desired code file. It also describes
+ an existing implementation (in ROM) for Ethernet.
+
+ Note that we are specifying only the network protocols that would be
+ used by the booting system. We do not attempt to mandate the method
+ by which a user actually boots a system (such as the format of a
+ command typed at the console). In addition, our proposal does not
+
+
+
+
+Finlayson [Page 1]
+
+
+
+RFC 906 June 1984
+
+
+ presuppose the use of any particular data-link level network
+ architecture (although the example that we describe below uses
+ Ethernet).
+
+Network Protocols used by the Booting System
+
+ To load a file, the booter sends a standard TFTP read request (RRQ)
+ packet, containing the name of the file to be loaded. The file name
+ should not assume any operating system dependent naming conventions
+ (file names containing only alphanumeric characters should suffice).
+ Thereafter, the system receives TFTP DATA packets, and sends TFTP ACK
+ and/or ERROR packets, in accordance with the TFTP specification [6].
+
+ TFTP is implemented using the User Datagram Protocol (UDP) [5], which
+ is in turn implemented using IP. Thus, the booter must be able to
+ receive IP datagrams containing up to 524 octets (excluding the IP
+ header), since TFTP DATA packets can be up to 516 octets long, and
+ UDP headers are 8 octets long. The booting machine is not required
+ to respond to incoming TFTP read or write requests.
+
+ We allow for the use of two additional protocols. These are ARP
+ (Address Resolution Protocol) [3], and RARP (Reverse Address
+ Resolution Protocol) [1]. The possible use of these protocols is
+ described below. The booter could also use other protocols (such as
+ for name lookup), but they should be IP-based, and an internet
+ standard.
+
+ The IP datagram containing the initial TFTP RRQ (and all other IP
+ datagrams sent by the booter) must of course contain both a source
+ internet address and a destination internet address in its IP header.
+ It is frequently the case, however, that the booter does not
+ initially know its own internet address, but only a lower-level (e.g.
+ Ethernet) address. The Reverse Address Resolution Protocol
+ (RARP) [1] may be used by the booter to find its internet address
+ (prior to sending the TFTP RRQ). RARP was motivated by Plummer's
+ Address Resolution Protocol (ARP) [3]. Unlike ARP, which is used to
+ find the 'hardware' address corresponding to a known higher-level
+ protocol (e.g. internet) address, RARP is used to determine a
+ higher-level protocol address, given a known hardware address. RARP
+ uses the same packet format as ARP, and like ARP, can be used for a
+ wide variety of data-link protocols.
+
+ ARP may also be used. If the destination internet address is known,
+ then an ARP request containing this address may be broadcast, to find
+ a corresponding hardware address to which to send the subsequent TFTP
+ RRQ. It may not matter if this request should fail, because the RRQ
+ can also be broadcast (at the data-link level). However, because
+ such an ARP request packet also contains the sender's (that is, the
+
+
+Finlayson [Page 2]
+
+
+
+RFC 906 June 1984
+
+
+ booter's) internet and hardware addresses, this information is made
+ available to the rest of the local subnet, and could be useful for
+ routing, for instance.
+
+ If a single destination internet address is not known, then a special
+ 'broadcast' internet address could be used as the destination address
+ in the TFTP RRQ, so that it will be received by all 'local' internet
+ hosts. (At this time, however, no standard for internet broadcasting
+ has been officially adopted. [**])
+
+An Example Implementation
+
+ The author has implemented TFTP booting as specified above. The
+ resulting code resides in ROM. (This implementation is for a
+ Motorola 68000 based workstation, booting over an Ethernet.) A user
+ wishing to boot such a machine types a file name, and (optionally)
+ the internet address of the workstation, and/or the internet address
+ of a server machine from which the file is to be loaded. The
+ bootstrap code proceeds as follows:
+
+ (1) The workstation's Ethernet address is found (by querying the
+ Ethernet interface).
+
+ (2) If the internet address of the workstation was not given, then
+ a RARP request is broadcast, in order to find it. If this request
+ fails (that is, times out), then the bootstrap fails.
+
+ (3) If the internet address of a server host was given, then
+ broadcast an ARP request to try to find a corresponding Ethernet
+ address. If this fails, or if a server internet address was not
+ given, then the Ethernet broadcast address is used.
+
+ (4) If the internet address of a server host was not given, then
+ we use a special internet address that represents a broadcast on
+ the "local subnet", as described in [2]. (This is not an internet
+ standard.)
+
+ (5) A TFTP RRQ for the requested file is sent to the Ethernet
+ address found in step (3). The source internet address is that
+ found in step (2), and the destination internet address is that
+ found in step (4).
+
+ Note that because several TFTP servers may, in general, reply to the
+ RRQ, we do not abort if a TFTP ERROR packet is received, because this
+ does not preclude the possibility of some other server replying later
+ with the first data packet of the requested file. When the first
+ valid TFTP DATA packet is received in response to the RRQ, the source
+ internet and Ethernet addresses of this packet are used as the
+
+
+Finlayson [Page 3]
+
+
+
+RFC 906 June 1984
+
+
+ destination addresses in subsequent TFTP ACK packets. Should another
+ server later respond with a DATA packet, an ERROR packet is sent back
+ in response.
+
+ An implementation of TFTP booting can take up a lot of space if care
+ is not taken. This can be a significant problem if the code is to
+ fit in a limited amount of ROM. However, the implementation
+ described above consists of less than 4K bytes of code (not counting
+ the Ethernet device driver).
+
+Acknowledgements
+
+ The ideas presented here are the result of discussions with several
+ other people, in particular Jeff Mogul.
+
+References
+
+ [1] Finlayson, R., Mann, T., Mogul, J. & Theimer, M., "A Reverse
+ Address Resolution Protocol", RFC 903 Stanford University,
+ June 1984.
+
+ [2] Mogul, J., "Internet Broadcasting", Proposed RFC, January 1984.
+
+ [3] Plummer, D., "An Ethernet Address Resolution Protocol",
+ RFC 826, MIT-LCS, November 1982.
+
+ [4] Postel, J., ed., "Internet Protocol - DARPA Internet Program
+ Protocol Specification", RFC 791, USC/Information Sciences
+ Institute, September 1981.
+
+ [5] Postel, J., "User Datagram Protocol", RFC 768 USC/Information
+ Sciences Institute, August 1980.
+
+ [6] Sollins, K., "The TFTP Protocol (Revision 2)", RFC 783, MIT/LCS,
+ June 1981.
+
+
+
+
+
+ [**] Editor's Note: While there is no standard for an Internet wide
+ broadcast or multicast address, it is strongly recommended that
+ the "all ones" local part of the Internet address be used to
+ indicate a broadcast in a particular network. That is, in class
+ A network 1 the broadcast address would be 1.255.255.255, in
+ class B network 128.1 the broadcast address would be
+ 128.1.255.255, and in class C network 192.1.1 the broadcast
+ address would be 192.1.1.255.
+
+
+Finlayson [Page 4]
+