TFTP Subnet Broadcast option

Broadcast storms are a performance problem that might occur when there are large numbers of systems that boot from the network.

These storms occur when large numbers of clients request their boot code at the same time. When hundreds of systems are involved in booting, the same data must be routed through each hop in the network between each system and the server.

The TFTP Subnet Broadcast option provides a solution to this problem. It allows the server to broadcast the boot code to systems on a subnet basis. Using subnet-directed broadcast, Subnet Broadcast data packets are unicast between routers until they reach the subnet on which the systems reside. At this point, the router at the destination subnet broadcasts the data packets to the systems on the subnet. Disinterested hosts on the subnet throw the data packets away. The packets are usually thrown away by the host's IP layer after it determines that no applications are interested in receiving data on the port to which the broadcast was directed. See Figure 1 for an illustration of a subnet-directed broadcast. This solution can drastically reduce the network traffic as well as the time that it takes many systems to boot (when booting simultaneously).

The TFTP Subnet Broadcast option enables clients to join a broadcasting filegroup. It also allows clients to receive all subsequent blocks for a file until the client becomes the master client. A client becomes the master client when it receives an Option Acknowledge (OACK) packet from the TFTP server that indicates that it is the master client. A client must keep track of blocks that it receives. After a client becomes the master client, it can request the blocks that it has not received. The master client requests blocks by sending ACK packets that include the block number of the block prior to the block that the master client requires. For example, if the client wants block 5, it sends an ACK with a block number of 4.

When a client receives an OACK packet that indicates that it is the master client, the client must send an ACK that requests the first block it requires. From then on, the client must request blocks in ascending but not necessarily consecutive order. A master client continues to send ACK packets to the server to indicate the next block that it requires. When the master client receives all of the blocks it requires, it sends an ACK with the number of the last block on the file being transferred. Once the server receives an ACK with the last block number of the file being transferred, the transfer to the client sending the ACK is considered complete. A client can stop its transfer at any time by sending an ACK for the last block or by sending an Error (ERR) packet. A client can end this transfer regardless of whether it is the master client or not.

Note: This TFTP Subnet Broadcast option is designed to improve simultaneous transfer of large files to multiple clients on a common subnet. This option does not help with files that require only a few blocks to transfer or single client transfers.
Figure 1. Example of Broadcasting over Subnets
A sample diagram of broadcasting over subnets