Starting with 8.7.1, DS supports larger TFTP blkSize (512-65535) for WinPE images.
Starting with 8.7.2, DS supports TFTP WindowSize for WinPE images.
DS 8.7.2 and GSS 3.3 RU12+
To find optimal value, first prepare PXE image without iPXE option enabled.
Then, set global TFTP blkSize to the max value (65464):
* Open NS console, navigate to Site Management>Site Server Settings>Network Boot Service>Settings>NBS General Settings
* Expand the 'TFTP Settings' and set the 'MTU packet size' value to '65464'
The next step is to test different TFTP blkSize and TFTP Window on a selected PXE image.
* Go to PXE server.
* Launch cmd, and execute the following commands:
BCDEdit.exe /store "<path_to_pxe_image>\<arch>\pxeboot.bcd" /set {ramdiskoptions} RamDiskTftpBlockSize 65464
BCDEdit.exe /store "<path_to_pxe_image>\<arch>\pxeboot.bcd" /set {ramdiskoptions} RamDiskTftpWindowSize 8
BCDEdit.exe /store "<path_to_pxe_image>\<arch>\boot\bcd" /set {ramdiskoptions} RamDiskTftpBlockSize 65464
BCDEdit.exe /store "<path_to_pxe_image>\<arch>\boot\bcd" /set {ramdiskoptions} RamDiskTftpWindowSize 8
(replace the '65464' and '8' values)
While testing different values, monitor boot time as well as Wireshark trace logs to ensure that no packets get lost/resent.
After finding optimal values, the changes can be applied to 'pxefixup.bat' so, that every new created or re-created PXE image (WinPE, without iPXE) contains the optimal values:
* Go to NS.
* Find the following files:
\Deployment\BDC\bootwiz\Platforms\WinPE\x64\Templates\pxefixup.bat
\Deployment\BDC\bootwiz\Platforms\WinPE\x86\Templates\pxefixup.bat
and put the updated 'RamDiskTftpBlockSize' and 'RamDiskTftpWindowSize' values.
* Refresh BDC package.
NOTE: it's not recommended to get to maximum RamDiskTftpWindowSize and BlockSize and it might affect stability and performance.
Those changes are only applicable to WinPE booting, as LinuxPE does not take those values into consideration.
Precautions: If you've customized your network, a large block or window size could cause the boot image download to fail with a time-out error. The RamDisk TFTP block and window size customizations allow you to optimize TFTP traffic when using PXE to meet your specific network requirements. To determine what configuration is most efficient, test the customized settings in your environment.
TFTP block size: The block size is the size of the data packets that the server sends to the client that is downloading the file. A larger block size allows the server to send fewer packets, so there are fewer round-trip delays between the server and the client. However, a large block size leads to fragmented packets, which most PXE client implementations don't support.
TFTP window size: TFTP requires an acknowledgment (ACK) packet for each block of data that is sent. The server doesn't send the next block in the sequence until it receives the ACK packet for the previous block. TFTP windowing enables you to define how many data blocks it takes to fill a window. The server sends the data blocks back-to-back until the window is filled, and then the client sends an ACK packet. If you increase this window size, it reduces the number of round-trip delays between the client and server, and it decreases the overall required time to download a boot image.