You are probably aware that you can compress your WinPE image to decrease the download size and time for PXE booting WinPE. After you have done that, you can also optimize the file transfer speed to cut the time it takes to transfer the file in half, doubling your PXE boot speed!
Altiris PXE TFTP Server is responsible for making PXE boot files available to clients. You can improve the PXE boot transfer speed by replacing the Altiris PXE TFTP Server with a higher performance TFTP server.
You can substitute the Altiris PXE TFTP Server with almost any TFTP server. There are a handful of free open-source TFTP servers. One in particular, "TFTP Server" is written very efficiently and is multithreaded to optimize performance. In my tests, my PXE boot speed nearly doubled when I replaced the built-in TFTP server with this one.
You can learn more about TFTP Server (and even contribute to the open-source project if you want to) at their web site http://sourceforge.net/projects/tftp-server.
In order to take advantage of the increased performance of TFTP Server, you will need to Install TFTP Server for Windows. Next, you will configure TFTP Server to optimize it and make it compatible with Altiris PXE Server. After that, you will modify the Altiris PXE MTFTP Server service to load the new TFTP Server. Last, you will configure your PXE Server to disable MTFTP so that it is more compatible with TFTP Server.
Install TFTP Server for Windows
TFTP Server is very lightweight, and the install is fairly straightforward. You can install TFTP Server to any directory you want and it will have no problems working with Altiris PXE Server.
-
Download and run OpenTFTPServerMTInstallerV1.62.exe on your PXE Server.
-
On the first page, you can change the default path. Just remember to use that path later in this document whenever the path "C:\Program Files\TFTPServer" is referenced.
-
Click Next.
-
Click Install.
-
Clear the box next to "Run program Install as Windows Service"
-
Click Finish.
Configure TFTP Server for Windows
-
Open Notepad.
-
Open "C:\Program Files\TFTPServer\TFTPServerMT.ini"
-
In the [LISTEN-ON] section, you can specify which IP Address(es) to use for servicing TFTP. You should specify the same IP Address that PXE is configured to use. If you do not specify any IP Address, the TFTP Server will listen on all Interfaces. If you are comfortable with specifying an IP Address to listen on, you can do so here, otherwise leave the section blank.
-
In the [HOME] section (any line after "[HOME]" and before "[LOGGING]"), add a line containing the path to the Images folder in your PXE Server's install directory. For example: "C:\Program Files\Altiris\eXpress\Deployment Server\PXE\Images" (without quotes).
-
(Optional) To increase security, you can add IP Address ranges to the [ALLOWED-CLIENTS] section. This will deny all TFTP requests from any IP Address that is not in a range specified as an allowed client. If you leave this section empty, then all clients are allowed.
-
(Optional) If you have a firewall enabled between your clients and the PXE server, you can specify a port range for the server to use when it sends data to the clients. You can specify this under the [TFTP-OPTIONS] section with the line "port-range=30000-30100" (without quotes) where 30000 will be replaced with the lowest port to use (do not use ports less than 1024) and where 30100 will be replaced with the highest port to use. If this option is not specified, then any free port is used.
-
(Optional) TFTP Server will create a new thread for each client that connects to it and close the thread when the client is done. This allows it to run at optimal performance. To slightly speed up initial connections, you can reserve a certain number of threads to remain open even after the client has finished so that it can be ready to immediately assist another client. If more clients connect than we have open threads, new threads are opened on an as-needed basis and then closed when they are done. You can specify the number of threads to keep open under the [TFTP-OPTIONS] section with the line "ThreadPoolSize=16" where 16 will be replaced with the number of threads you want to remain open. If you do not specify a thread pool size, TFTP Server will default to keeping 1 thread open and then open more as needed.
-
In the [TFTP-OPTIONS] add the line "blksize=1456". This specifies the packet size that the TFTP Server will use. The larger the packet size the faster your transfers will go. 1456 is the largest packet size the Ethernet supports.
If you have problems with clients failing to download, decrease this value by 128 at a time until it works. Then, if you really want to fine-tune your performance, you can increase the value by 32 at a time until it fails again, then decrease the value by 8 at a time until it works again.
-
Save the file.
-
Close Notepad.
After you have installed TFTP Server once, you could copy the files TFTPServerMT.exe and TFTPServerMT.ini to other PXE Servers in your environment rather than installing running the installer on every machine. TFTPServerMT.exe and TFTPServerMT.ini are the only files needed for TFTP Server to run.
You can use the --silent switch to make the installer run silently to push it to multiple PXE Servers, but that may cause a reboot, so I would recommend you just copy the two files.
Modify the Altiris PXE MTFTP Server Service
Change the Altiris PXE MTFTP Server service to load TFTP Server. That way the Altiris PXE Config Helper service can stop and start the service when it updates the PXE boot files without knowing the difference.
-
Click on the Start Menu and select Run...
-
Type cmd.exe and press enter.
-
In the command prompt window, type the following and press enter.
sc config "Altiris PXE MTFTP Server" binpath= "C:\Program Files\TFTPServer\TFTPServerMT.exe"
-
Close the command prompt window.
-
Now stop and restart the Altiris PXE MTFTP Server Service
-
Click on the Start Menu and select Run...
-
Type services.msc and press enter.
-
Select the Altiris PXE MTFTP Server Service
-
Click Restart.
-
Close the services window
Disable TFTP Multicast
TFTP Server does not support Multicast. That is not really a problem since its performance far outweighs the use of Multicast, and since the actual 150 megabyte or greater boot.wim file is not transferred using multicast anyway. To improve the PXE Boot process speed while using TFTP Server, you will want to disable Multicast in the PXE Configuration Utility.
-
Open the PXE Configuration Utility
-
Go to the Multicast tab
-
Disable the option to "Enable MTFTP"
-
Click OK.
Final thoughts
Now that you have completed this process, you should notice a significant improvement in PXE boot speed. Please comment to this article and let me know the improvement you see.
Here is some more information you may need.
How to revert the TFTP Server
Once you have applied the faster TFTP Server, you probably will be very satisfied with it and will never want to go back. However, if you ever need to revert back to the Altiris PXE TFTP Server, simply do the following:
-
Click on the Start Menu and select Run...
-
Type cmd.exe and press enter.
-
In the command prompt window, type the following and press enter.
sc config "Altiris PXE MTFTP Server" binpath= "C:\Program Files\Altiris\eXpress\Deployment Server\PXE\Pxemtftp.exe"
-
Close the command prompt window.
-
Now stop and restart the Altiris PXE MTFTP Server Service
-
Click on the Start Menu and select Run...
-
Type services.msc and press enter.
-
Select the Altiris PXE MTFTP Server Service
-
Click Restart.
-
Close the services window
Additional Configuration Options
TFTP Server supports the specification of additional options in the TFTPServerMT.ini file. These options should be left default in most cases, but I will explain them here for the special circumstance where you will need to change them.
-
The default logging level will be Errors only. If you want to change the logging level to None or All, specify that keyword in the [LOGGING] section.
-
The default timeout setting is 3 seconds. You can specify a different timeout under the [TFTP-OPTIONS] section with the line "timeout=10" where 10 will be replaced with the number of seconds you want to wait before timing out. The maximum timeout you can specify is 255 and the minimum timeout you can specify is 1.
-
By default, TFTP Clients can only read files; they can't write or overwrite files. I strongly recommend that you do not modify this setting. However, if you feel like you want to allow TFTP Clients to write files, I recommend that you at least specify a list of allowed clients under the [ALLOWED-CLIENTS] section to maintain some security. You can allow clients to write files in the [TFTP-OPTIONS] section by adding the line "write=Y" and "overwrite=Y".