Miradore TFTP server runs at installation point and provides data access to the necessary boot files that are requested by PXE clients (Preboot Execution Environment) during network boot and initial installation.
Provides download (RRQ) for PXE/TFTP clients.
Runs as a Windows service.
Can be stopped, started, and restarted using the standard Windows Service list view.
Configurable from the Windows registry.
Writes a log file.
Supports tsize and blksize option negotiation with clients.
TFTP tsize option allows the client and server to negotiate the size of the file before starting the actual download.
TFTP blksize option allows the client and server to negotiate the size of the data block before starting the actual download. This can dramatically increase data transfer rate and performance of the TFTP session.
Supports windowed/pipelined data transfer, in which the server can send multiple data packets before waiting client ACKs. This feature improves the performance when used.
Miradore TFTP server uses Windows registry values for configuration. During installation, default values are written to the registry. These can be modified afterwards in order to achieve the desired operation. The registry values are described on the following table.
Registry key |
Default value |
Possible values |
Description |
DefaultBlockSize |
512 bytes |
512 bytes |
This registry entry controls the default block size of the TFTP server. This means the amount of data bytes sent in one TFTP packet. However, the only accepted value is 512 bytes as stated in the TFTP specification. |
InitialDataPort |
60 000 |
1025 - 65 535 |
This registry entry defines the initial data port that is used by the TFTP server to communicate with client applications. Default value is 60 000. The port is increased by one each time a connection request is processed and the server only accepts values in the range of 1025 – 65 535. |
LogFile |
mdtftpserver.log |
String |
This registry entry defines the name of the TFTP server log file. |
LogPath |
C:\Windows\Temp |
String |
This registry value defines the path of the TFTP server log file. The full path of the log file is a combination of LogPath and LogFile entries. By default the LogPath entry is left empty and Windows Temp -folder is used for logging. For example, C:\Windows\Temp, if Windows is installed on C drive. |
LogSeverity |
Info |
Verbose, Debug, Info, Warning, Error, Security, Critical, Crash |
This registry entry defines the severity level of logging. Possible values are: Verbose, Debug, Info, Warning, Error, Security, Critical and Crash. The more severe the level of logging, the less logs are recorded to the defined log file. For example, if Critical is chosen for LogSeverity then only events with a severity of Critical and Crash are recorded (the most serious events and exceptions). The default value for the LogSeverity is Info, at which time events with a severity between Info and Crash are written to the log file. |
MaxBlockSize |
65 464 bytes |
512 - 65 464 bytes |
TFTP option negotiation allows the client and server to negotiate a block size that is different from the default 512 bytes. This can dramatically increase the data transfer rate and performance of the TFTP session. This registry entry defines the maximum accepted block size during block size negotiation. Block size negotiation is initiated by the client (e.g. the client suggests of using block size 1432 bytes instead of 512 bytes) and the server can either accept the value or deny it. If the client suggests a value that is higher than MaxBlockSize, the server denies the request and used protocol default 512 bytes. |
MaxLogSizeMB |
5 MB |
1 - 1000 MB |
This registry entry controls the maximum log size in megabytes. The default value is 5 MB so that the generated log file can be quickly accessed remotely. After the size of the log file exceeds the limit the content is copied to LogFile.old file. The value must be in the range of 1 – 1000 MB. |
PacketLossThreshold |
20 packets |
1 - 100 packets |
This registry value defines the maximum amount of TFTP packets that the server allows to be lossed in the network subsequently. When packet loss limit is exceeded, the server detects that the client has lost connection and frees resources that are allocated for that client. Default value is 20. The value must be in the range of 1 – 100 packets. |
TFTPRoot |
Empty, which means current working folder. |
String |
This registry entry defines TFTP root directory that is used as a base folder for sharing files to the client. By default TFTPRoot entry is left empty (as in the figure 1 above) and working folder is used (directory where .exe is being run). For example, C:\Program Files\Miradore\Server\TFTP\ |
Timeout |
3 seconds |
1 - 10 seconds |
Since TFTP uses UDP for transport layer, packets can get loss in the network either due to network congestion or other network errors. This registry value defines the timeout value of the TFTP server. When timeout is reached with a client the server detects that packet loss has occurred and resends the packet/TFTP window. Default value is 3 seconds. The value must be in the range of 1 – 10 seconds. |
WindowSize |
4 packets |
1 - 8 packets |
This registry value defines the window size of the TFTP server. This means the amount of packets that the server can send without waiting for client ACK. This pipelined transfer mode can dramatically increase the data transfer rate and utilization of network resources. However, if window size is negotiated at the beginning of data transfer (client initiates), the negotiated value is used instead of registry defined value. This way Miradore TFTP server can adapt to the requirements of different clients. |
During network boot, users have an opportunity to choose whether to use TFTP in safe mode or boosted mode (illustrated on the following picture). Generally, safe mode means slower but more reliable data transfer. Boosted mode increases data transfer speed but might not work on virtual machines due to the increased block size and packet fragmentation.
WinPE x64 (Safe TFTP)
Default option. Loads 64-bit WinPE image (winpe64.wim) using 1432 bytes block size and window size 1.
WinPE x86 (Safe TFTP)
Loads 32-bit WinPE image (winpe.wim) using 1432 bytes block size and window size 1.
WinPE x64 (Boosted TFTP)
Loads 64-bit WinPE image (winpe64.wim) using 16384 bytes block size and window size 1.
WinPE x86 (Boosted TFTP)
Loads 32-bit WinPE image (winpe64.wim) using 16384 bytes block size and window size 1.
Miradore TFTP server provides file logging that can be used to debug and validate the status of the server and possible exceptions. The desired log file can be defined from the registry combination of LogPath and LogFile. By default, the path entry is left empty and Windows\Temp folder is used for logging. When the size of the log file exceeds the defined limit (MaxLogSizeMB), the server copies the log content to LogFile.old file and restarts actual logging.
Since the log file and path are defined in the registry, a temporary file (mdtftptemp.log) is created to log events before the server is actually running. However, if there are some problems in startup (e.g. invalid setting/registry values), the temporary log file remains in Windows\Temp folder and can be used to debug the problem. In normal startup, the temporary file content is copied to the actual log file and deleted.
If you're having issues with the TFTP server, please refer to Troubleshooting TFTP issues document for more information.
See also