Internet DRAFT - draft-viswanathan-remote_boot-mtftp

draft-viswanathan-remote_boot-mtftp



INTERNET DRAFT                          Vish Viswanathan, Intel Corporation
                                                   Dirk Koeppen, InCom GmbH
                                                               Feb 26, 1999


          Multicast TFTP in the Intel PXE Remote Boot Environment
                <draft-viswanathan-remote_boot-mtftp-00.txt>


Status of this Memo

   This document is an Internet-Draft and is in full conformance with all
   provisions of Section 10 of RFC2026. 

   Internet-Drafts are working documents of the Internet Engineering Task
   Force (IETF), its areas, and its working groups. Note that other groups
   may also distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months and
   may be updated, replaced, or obsoleted by other documents at any time. It
   is inappropriate to use Internet- Drafts as reference material or to cite
   them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft
   Shadow Directories can be accessed at http://www.ietf.org/shadow.html. 

Abstract

   This document defines a protocol, Multicast Trivial File Transfer Protocol
   (MTFTP), which allows several clients to simultaneously receive a file
   multicast by a TFTP server as implemented in Intel's Universal Network
   Boot (PXE [1]) which is part of Intel's Wired for Management Initiative
   [2].

1.0  Introduction

   There are some situations in which multiple clients want to download the
   same file at the same time, like in the case of remote network booting of
   several clients simultaneously. A typical scenario would be in the IT
   department where the administrator wants to configure several machines in
   an identical way at the same time. If there were individual TFTP transfers
   between each client and the server, the network traffic will increase.
   Also, the response from the TFTP server would be slower as it has to
   support multiple connections. The MTFTP described in this internet draft
   eliminates this inefficiency by multicasting the file to all the
   interested clients.

1.1  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119.



Expires  Aug  26, 1999                                               [Page 1]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999


   Throughout this document, the words "server" or "MTFTP server" refer to a
   host providing multicast TFTP services to clients.

1.2  Protocol Requirements

   The following 3 things happen for a successful MTFTP transfer:

   a. The MTFTP server acquires a multicast IP address to which it can send
      the TFTP response packets. The mechanism through which this is achieved
      is beyond the scope of this document.

   b. The server passes the multicast IP address to the client. The client
      listens for multicast packets on this address.
 
   c. The client initiates a MTFTP transfer or joins one already in progress. 

   Steps b and c will be described in detail in the following sections.

2.  Protocol Details

2.1  Querying for MTFTP specific configuration information

   The client gets all the MTFTP specific configuration information from a
   proxyDHCP server through the standard DHCP protocol [3] mechanism. (A
   proxyDHCP server in a PXE environment is a server that provides extra
   configuration information through the use of DHCP options fields.
   Typically, this server does not supply IP addresses). 

2.2 MTFTP specific DHCP options

   A DHCP response packet from the proxyDHCP server contains all MTFTP
   specific configuration information encoded in DHCP vendor specific
   information option as per RFC 2132 [4].

2.2.1. DHCP Vendor specific Information Option

   This option is used by clients and servers to exchange vendor specific
   information. The information is an opaque object of n octets. 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.

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

   Within the vendor specific information, we have several  code/length/value
   fields to specify all of the MTFTP configuration information.




Expires  Aug  26, 1999                                               [Page 2]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999


2.2.1.1 Multicast IP Address Option

   This option specifies the multicast IP address that is used by the client
   to listen for and receive the multicast packets transmitted by the server.

   The code for this option is 1 and its length is 4.



    Code   Len   MTFTP_MULTICAST_IP_ADDRESS
   +-----+-----+-----+-----+-----+-----+
   |  1  |  4  |  m1 |  m2 |  m3 |  m4 |
   +-----+-----+-----+-----+-----+-----+

2.2.1.2 Multicast Client UDP Port Option

   This option specifies the UDP port that the client uses for the MTFTP
   transfers.

   The code for this option is 2 and its length is 2.

    Code   Len   MTFTP_CLIENT_UDP_PORT
   +-----+-----+-----+-----+
   |  2  |  2  |  c1 |  c2 |
   +-----+-----+-----+-----+


2.2.1.3 Multicast Server UDP Port Option

   This option specifies the UDP port that the server uses for the MTFTP
   transfers. The client MUST send its MTFTP requests to this port on the
   server.

   The code for this option is 3 and its length is 2.

    Code   Len   MTFTP_SERVER_UDP_PORT
   +-----+-----+-----+-----+
   |  3  |  2  |  s1 |  s2 |
   +-----+-----+-----+-----+


2.2.1.4 Multicast Transfer Start Delay Option

   This options specifies, in seconds, the amount of time a client should
   wait before initiating a MTFTP transfer.

   The code for this option is 4 and its length is 1.

    Code   Len   MTFTP_TRANSMISSION_START_DELAY
   +-----+-----+-----+
   |  4  |  1  |  t1 |
   +-----+-----+-----+
Expires  Aug  26, 1999                                               [Page 3]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999


2.2.1.5 Multicast Transfer Timeout Option

   This options specifies, in seconds, the amount of time a client should
   wait before re-sending a MTFP request. 

The code for this option is 5 and its length is 1.

    Code   Len   MTFTP_TRANSFER_TIMEOUT
   +-----+-----+-----+
   |  5  |  1  |  t1 |
   +-----+-----+-----+


3. Multicast Trivial File Transfer Protocol Details

   This protocol is exactly the same as the standard TFTP protocol [5] but
   for a simple difference. All the TFTP responses from the server MUST be
   directed to the multicast IP address (MTFTP_MULTICAST_IP_ADDRESS) as the
   destination IP address. This enables multiple clients to listen and
   receive the same packet that is transmitted by the server.


3.1 Different Stages of A MTFTP Transfer

   A client goes through the following 3 stages during a MTFTP transfer.

     . MTFTP Open
     . MTFTP Receive
     . MTFTP Close


3.1.1 MTFTP Open

   Any client wishing to download a file through MTFTP first determines
   whether there is a multicast TFTP transfer already in progress for the
   file that it wants to download. (The MTFTP server MUST use a unique
   multicast address for each of the files that it can support in a MTFTP
   transfer). The client, after binding to the port MTFTP_CLIENT_UDP_PORT,
   waits for MTFTP_TRANSMISSION_START_DELAY seconds to see whether there are
   any packets addressed to the MTFTP_MULTICAST_IP_ADDRESS. Depending on
   whether there is a response or not, the client follows different steps as
   explained in the next 2 sections.










Expires  Aug  26, 1999                                               [Page 4]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999

3.1.1.1 Multicast transfer already in progress

   If the client receives a response packet within the
   MTFTP_TRANSMISSION_START_DELAY period, then a multicast transfer is
   already in progress. The client starts receiving the packets and stores
   them in an internal list (or uses some other mechanism to keep track of
   the received packets). As this client is not the one to initiate the
   original transfer, it MUST not send a TFTP ACK packet to any of the
   received packets. When the file transfer finishes (this happens when the
   TFTP server sends the last block of data of the file), the client would
   only have received the ending portion of the file. All the beginning
   blocks of the file were missed by this client, when it joined a multicast
   transfer which was in progress already. We will discuss how to receive the
   rest of the file in the section under "MTFTP Receive".

3.1.1.2 No multicast transfer in progress

   If the client does not receive any packets during the initial
   MTFTP_TRANSMISSION_START_DELAY period, then it assumes that there is no
   multicast transfer in progress at that time. At the end of this period,
   the client requests the server to start a new transfer. This is done by
   the client sending a regular TFTP open packet (opcode set to 1). However,
   this packet is sent to the server's MTFTP_SERVER_UDP_PORT so that the
   server knows that it is a multicast TFTP request versus a standard TFTP
   request.

3.1.1.3 How the server deals with the MTFTP_OPEN request

   When the server receives a MTFTP_OPEN request on its
   MTFTP_SERVER_UDP_PORT, it checks to make sure that a transfer is not
   already in progress. If there is a transfer already in progress for the
   requested file, then the server ignores this request. The client soon
   starts to receive some block of the file transfer that is in progress on
   its MTFTP_CLIENT_UDP_PORT. However, if there is no transfer in progress,
   then the server unicasts a response back to the client for the first data
   packet and also follows that by multicasting the same packet so that all
   other interested clients can also receive that.

3.1.4 MTFTP Receive

   As mentioned in the previous section, the first packet of a multicast
   transfer MUST always be sent both as unicast and multicast UDP packets.
   Subsequent packets are only multicast. The recipient of the first unicast
   packet becomes the master client that would acknowledge each received
   packet. The master client (i.e the acknowledging client) MUST acknowledge
   all the packets even if that client has received the entire file. A server
   MUST always transmit the complete file. Therefore, clients that start
   listening to a transfer part way through can wait and then get the rest of
   the file on the next MTFTP transfer to make up for what was missed during
   the first time. 



Expires  Aug  26, 1999                                               [Page 5]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999


3.1.5. MTFTP Close

   A MTFTP transfer is finished when the acknowledging client has received
   all packets and disconnects. Clients who joined the transfer part way
   through the transfer can initiate a new transfer if one has not already
   started. In case there are multiple clients who joined part way through,
   then there is an algorithm to minimize the number of clients
   simultaneously trying to initiate a new transfer. Before a new transfer is
   started, there is a calculated delay. An algorithm based on the number of
   packets received modifies the default delay of
   MTFTP_TRANSMISSION_START_DELAY seconds. Clients who received fewer packets
   (because of the faster transfer rate of the server) wait for a shorter
   time than those who received more. This algorithm ensures that

   * Slower clients define the transmission speed as they are more likely to
     become the acknowledging clients.

   * Clients with a large number of received packets may disconnect from the
     transfer after they received all missing packets as they are less likely
     to become acknowledging clients.



References:

   [1] Preboot Execution Environment (PXE) Specification Version 2.0
       ftp://download.intel.com/ial/wfm/pxespec.pdf

   [2] Intel's Wired for Management Initiative,
       URL:http://developer.intel.com/ial/wfm/index.htm

   [3] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March
       1997.

   [4] Alexander, S., and R. Droms, "DHCP Options and BOOTP Vendor
       Extension", RFC 2132, March 1997.

   [5] Sollins, K., "The TFTP Protocol (Revision 2)", RFC 783, June 1981.














Expires  Aug  26, 1999                                               [Page 6]

< draft-viswanathan-remote_boot-mtftp-01.txt >                   Feb 26, 1999



Authors' Addresses

          Vish Viswanathan
          Intel Corporation, MS JF3-206
          5200 NE Elam Young Pkwy
          Hillsboro, OR  97124

          Phone: (503) 264-9693
          Email: vish.viswanathan@intel.com


          Dirk Koeppen
          InCom GmbH
          Holzwiesenweg 22
          D-63073 Offenbach, Germany

          Phone: (011) 49 69 89 3000
          Email: dirk@incom.de

































Expires  Aug  26, 1999                                               [Page 7]