Windows 10 leverages a delivery optimization feature as a tool for lessening the bandwidth required by the Windows Update process. When Windows downloads an update, the update files are not necessarily coming directly from Microsoft’s update servers. They could instead be downloaded from other PCs on your network or even on the Internet. Windows 10 delivery optimization is also used for Microsoft Store apps.
If you find that delivery optimization does not seem to be working for some of the Windows 10 PCs in your organization, there are several things that you can do to troubleshoot the problem. The first thing that you should do is to make sure that delivery optimization has not been disabled. You can access the delivery optimization interface by clicking on the Start button and then going to Settings | Update and Security | Delivery Optimization. As you can see in the figure below, this screen contains a slide bar that allows you to turn the delivery optimization feature on or off.
Failure to communicate?
Assuming that delivery optimization is enabled, the next thing that you should do is make sure that the PCs on your network can communicate with the cloud service that controls delivery optimization. The easiest way to do this is to open the Microsoft Store and begin downloading an app (the bigger the app, the better). As soon as the download begins, open an elevated PowerShell session and enter the following command: Get-DeliveryOptimizationStatus. You can see what this looks like in the image below.
As you can see in the figure, this command returns a wealth of information. The main thing that you need to check is the download mode. In the figure, the DownloadMode is set to LAN, which is fine. A value of 1, 2, or 3 is also fine. However, if the DownloadMode returns a value of 99, it means that the PC cannot access the required cloud service. This could indicate a DNS problem or a firewall problem. When Windows delivery optimization communicates with the cloud service, it does so over TCP port 443, using the HTTPS protocol. The domains that the delivery optimization service needs to be able to communicate with include:
In most cases, if delivery optimization fails, the problem tends to be related to the networked PCs not being able to communicate with one another, rather than a problem communicating with a cloud service. Even so, the cloud service is essential to the delivery optimization service working correctly, so it is important to use the Get-DeliveryOptimizationStatus cmdlet first to make sure that cloud communications are functioning correctly.
As previously noted, networked PCs can download updates and Windows Store apps from one another rather than download them from the Internet each time. This helps to reduce the amount of Internet bandwidth that is required to service the requests. For communications between the PCs on a network, the delivery optimization service uses TCP and UDP Ports 7680. As such, you will need to make sure that this port is not being blocked by any software firewalls running on your PCs or by any firewalls between the PCs on your network.
It is worth noting that delivery optimization can also download updates from PCs across the Internet if it is configured to do so. When the delivery optimization service acquires files from Internet peers, it communicates through Teredo using Port 3544.
To test another PC’s ability to download from a peer on your network, wait for at least 10 minutes and then attempt to download the same Microsoft Store app that you downloaded previously. Once again, you will need to run the Get-DeliveryOptimizationStatus cmdlet. This is the same cmdlet that you ran earlier. You are looking for the DownloadMode to be either 1, 2, or LAN.
If you look at the image below, you can see that the Get-DeliveryOptimizationStatus reflected a DownloadMode of LAN. When I initially ran the command, it showed 0 as the number of peers. I ran it a second time, and it indicated that the number of peers was 1, indicating that delivery optimization was indeed communicating with another PC on my network.
The tricky thing about using the Get-DeliveryOptimizationStatus cmdlet is that the cmdlet works in real-time. If you try running it before the download starts or after the download completes, you will receive a warning message. If you find that you do not run the Get-DeliveryOptimizationStatus cmdlet quickly enough, try running the Get-DeliveryOptimizationPerfSnap cmdlet after the download completes. This cmdlet, which you can see in the next image, provides you with statistics related to the download.
The main thing that you need to check when viewing the cmdlet’s output is the number of peers that are present. The number should be greater than zero.
So, what does it mean if the number of peers is zero? In a situation like this, I would recommend trying the test one more time, making sure that both machines have delivery optimization enabled and that both are downloading exactly the same app (waiting 10 to 15 minutes between the time that you download the app on the first PC and the time that you download it on the second PC). Once you have done that, try the test again.
Windows 10 delivery optimization: Last words of advice
If the download mode is set to LAN, but the number of peers still has a value of zero, then the problem is most likely related to your network connection. The two PCs need to communicate with one another across the network, and they also need to connect to the same Internet router (meaning that they share a public IP address). If one or both of the PCs is connecting to the Internet through a VPN or a proxy server, the two machines are typically going to require some extra work before they can be used as peers.
Featured image: Shutterstock