When PXE installing ESXi 6 on BIOS clients it seems the TFTP requests are not correctly handled.
kernel_bios = /NWA_PXE/$HEAD_DIR$/mboot.c32
append_bios = -c /NWA_PXE/$HEAD_DIR$/BOOT.CFG
ipappend_bios = 2
For every needed file a TFTP client usually perform a "Read Request" asking for the size of the file (tsize) answered by the
server with an "Option Acknowledgment" returning "tsize=xxxx", then the client "Aborts" the transfer and checks that the returned
file size is OK, then the client performs a second "Read Request" this time really transferring the requested file.
On BIOS targets the VMware provided mboot.c32is the TFTP client in charge of transferring the components listed at BOOT.CFG.
consecutively requests the 151 files listed at mboot.c32 BOOT.CFG but it "forgets to Abort" those request; next it requests
those 151 files "again" this time for really retrieving them.
This presents several problems with TFTP servers (i.e. Serva ) that control the number of orphan TFTP transfers in order to prevent
resource abusive TFTP clients.
On the other hand installing ESXi 6 on UEFI targets presents the classic TFTP initial sequence not leaving behind orphan transfers.
"Read Request"->
<- "Option Acknowledgment"
"Abort" ->
In this case it is VMware BOOTX64.efi (not mboot.c32) the one in charge of the client side of the TFTP transfers.
kernel_efi64 = /NWA_PXE/$HEAD_DIR$/EFI/BOOT/BOOTX64.efi
append_efi64 = -c /NWA_PXE/$HEAD_DIR$/BOOT.CFG
ipappend_efi64 = 2
See the attached Wireshark traffic capture
Best,
Patrick