HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows 11 Windows 11Delivery OptimizationDoSvcPeer CachingMicrosoft Connected CacheWindows UpdateIntuneGroup PolicyBandwidthNetworking

Your branch office still saturates the WAN: how Delivery Optimization picks peers, and how to prove peering actually works

IA
Imran Awan
21 August 2026

Delivery Optimization is the single most widely deployed piece of peer-to-peer software in the enterprise, and almost nobody checks whether it works. It is on by default. It never throws an error when it fails. It just quietly stops peering, and your branch office downloads the same four gigabyte feature update once per device. Nothing in the Intune console will tell you. This post explains what Delivery Optimization actually is, exactly how it decides who to peer with, and how to prove from a single device whether bytes really arrived from a peer.

The short version

Delivery Optimization (DO) is a cloud-coordinated HTTP downloader with optional peer-to-peer, and Microsoft documents the default on Windows client as LAN mode, DODownloadMode value 1. Peering only happens if the device can reach the DO cloud service at *.do.dsp.mp.microsoft.com, if TCP 7680 is reachable between peers, and if the content file clears DOMinFileSizeToCache, so any one of those three silently reduces you to CDN-only with no error anywhere. Group mode (2) is the documented recommendation for multi-subnet sites, but it only works when every device resolves the same Group ID. The proof is Get-DeliveryOptimizationStatus, whose BytesFromPeers against BytesFromHttp is the only number that settles the argument - and note that Microsoft documents BytesFromHttp as already including BytesFromCacheServer, so do not add them.

The problem: 200 devices, 200 copies of the same update

Start with what the thing is, because the name is unhelpful. Delivery Optimization, abbreviated DO throughout, is not an update product. It is a downloader. Microsoft describes it as a reliable HTTP downloader with a cloud-managed solution that lets Windows devices pull content from alternate sources as well as from the normal internet servers.

Those alternate sources are two things. Other Windows devices, called peers. And a dedicated cache server, called Microsoft Connected Cache. The traditional internet servers are referred to throughout the Microsoft documentation as the HTTP source.

DO is not just for Windows Update. Microsoft publishes the full list of callers, and it is long: Windows Update quality and feature updates, drivers, language packs, Microsoft Store apps, Microsoft Defender definition updates, Intune Win32 apps, Microsoft 365 apps and updates, Microsoft Edge updates, Configuration Manager express updates, dynamic updates, Teams updates, Xbox Game Pass on PC, Windows Package Manager and the MSIX installer.

Context you need first. Not every caller can peer. Microsoft documents Windows 11 Win32 Store apps, Windows Package Manager, the MSIX installer and the MDM agent as HTTP-downloader only, with no peer-to-peer and no Connected Cache column ticked. So a device can be configured perfectly and still show zero peer bytes, simply because the thing it downloaded was never eligible. Always check the content type before you blame the network.

Here is the failure that costs money. A site has 200 Windows 11 devices behind one internet circuit. A feature update lands. In theory the first device pulls it from the content delivery network, and the other 199 pull most of it from that first device over the LAN. In practice the site pulls roughly 200 times the payload across the WAN, the circuit saturates for a working day, and the service desk gets tickets about Teams audio.

Nothing failed. That is the whole problem. DO is designed to fall back to the HTTP source seamlessly when peers are unavailable. The fallback is the feature. It also means a completely broken peering configuration produces exactly the same user experience as a perfect one, only slower and more expensive.

There are only four real failure modes, and they are all specific:

  1. The download mode is wrong, so peering is disabled by policy.
  2. The device cannot reach the DO cloud service, so it never receives a peer list.
  3. Devices are in different peer groups, so the cloud service never matches them.
  4. The peer port is blocked, so the peer list arrives and every connection to it fails.

Each one has a different fix, and each one leaves a different fingerprint on the device. The rest of this post is about reading those fingerprints.

Why it happens: how DO actually chooses a peer

Follow the chain in order. Nothing here is magic, and every hop can break independently.

First, a caller starts a download. Microsoft is explicit that DO only starts when an application or service integrated with DO starts a download. Nothing polls. Nothing runs on a schedule.

Second, the DO client on the device contacts the DO cloud service over HTTPS. It sends metadata about the content it wants. The service replies with a list of candidate peers and their IP addresses.

Third, and this is the part most people get wrong, the device connects to those peers directly over TCP. Microsoft states plainly that DO does not use multicast. It relies on the cloud service for peer discovery, resulting in a list of peers and their IP addresses, and client devices then connect to their peers to obtain download files over TCP/IP.

The gotcha that ends most investigations. No internet access to the DO cloud service means no peer list, which means no peering at all, even between two devices sitting on the same switch. Microsoft documents that to use either the peer-to-peer functionality or Microsoft Connected Cache, devices must have access to the internet and the DO cloud services. An air-gapped subnet cannot peer. This surprises people who assume peer-to-peer means local-only.

Fourth, DO downloads from peers and from the HTTP source in parallel, and tapers off the HTTP requests as the peers keep up. For background downloads Microsoft documents that DO drops the HTTP connections entirely once peers meet the minimum quality of service speed.

The six download modes, verified

Download mode is the master switch. It is one policy, DODownloadMode, and its value decides whether peering is even on the table. These are the documented values and behaviours.

ModeDocumented behaviourPeers?
HTTP Only (0)Disables peer-to-peer caching but still allows DO to download over HTTP from the original source or a Connected Cache server. Uses DO cloud metadata for a peerless but reliable download.No
LAN (1)The documented default on Windows client. The DO cloud service finds other clients reaching the internet from the same public IP address, and those clients then connect over their private subnet IP addresses.Yes
Group (2)Peering occurs across internal subnets between devices in the same group, including remote offices. Microsoft calls this the recommended option for most organisations seeking the best bandwidth optimisation.Yes
Internet (3)Enables internet peer sources.Yes
Simple (99)Disables the DO cloud services completely, for offline environments. DO switches to this mode automatically when the cloud services are unavailable or unreachable, or when the file is smaller than the minimum cache size.No
Bypass (100)Deprecated starting in Windows 11. The download bypasses DO and uses BITS instead.No

Do not set download mode 100. Microsoft documents Bypass (100) as deprecated starting in Windows 11, and states that setting it can cause some content to fail to download with error code 0x80d03002. If your goal is to disable peer-to-peer, the documented value is 0. Value 99 is only for a device with no internet access. A surprising number of legacy GPOs from the Windows 10 era still carry 100, inherited from a blog post nobody re-read.

Note the automatic behaviour buried in mode 99. Microsoft documents that DO switches to Simple mode by itself when the cloud services are unreachable. So a device reporting mode 99 may not be misconfigured at all. It may be telling you that *.do.dsp.mp.microsoft.com is blocked. Microsoft's own troubleshooting guidance says exactly that: if the download mode is 99, it could indicate your device is unable to reach the DO cloud services.

What a group actually is

In LAN mode the group is implicit. It is every device that reaches the internet from the same public IP address, which usually means behind the same network address translation device. That is fine for a flat office and useless for a hub-and-spoke network.

Group mode replaces that with an explicit identifier. Two policies control it, and their interaction is the single most common source of a group that never forms.

DOGroupId takes an arbitrary group ID that the device belongs to, and Microsoft states a GUID must be used. DOGroupIdSource instead tells Windows to derive the ID from something the device already knows. These are its documented values.

ValueSourceWhat it means in practice
0Not SetFall back to the documented default order.
1AD SiteActive Directory Domain Services site name. Needs a domain-joined device.
2Authenticated domain SIDThe domain security identifier. Also needs a domain.
3DHCP Option IDThe client queries DHCP Option ID 234 and uses the returned GUID value as the Group ID.
4DNS SuffixThe connection-specific DNS suffix.
5Microsoft Entra tenant IDAvailable from Windows 10 version 1903. The whole tenant becomes one group.

Three documented rules decide the outcome, and you need all three.

  1. DOGroupId wins. Microsoft states that the DOGroupIdSource policy is ignored if the DOGroupId policy is also configured.
  2. If neither is configured, the default order is AD Site (1), then authenticated domain SID (2), then Microsoft Entra tenant ID (5), in that order.
  3. If DOGroupIdSource is set to DHCP Option ID (3) or DNS Suffix (4) and those methods fail, the default behaviour above is used instead.

Group ID set, Group mode not set. Microsoft documents that the option configured in DOGroupIdSource only applies to Group (2) download mode, and that if Group (2) is not configured as the download mode the policy is ignored. A Group ID with download mode 1 does nothing at all. It is a very tidy-looking configuration that changes no behaviour whatsoever, and it survives audits because both settings individually look correct.

There is one more trap. Microsoft documents that if you configure DOGroupIdSource to anything other than 0 to 5, the policy is ignored. Not rejected loudly. Ignored.

Restricting peer selection, and the Windows 11 default change

DORestrictPeerSelectionBy narrows peer selection further, on top of the download mode. Its documented values are 0 for None, 1 for Subnet mask, which restricts peer discovery to devices within the same subnet, and 2 for Local Peer Discovery using DNS Service Discovery over multicast DNS.

Microsoft states plainly that selecting either Subnet mask (1) or Local Peer Discovery (2) prevents peer discovery across subnets. It also documents a behaviour difference that catches people migrating from Windows 10: on Windows 10 no peer selection restriction is applied by default, while on Windows 11 the default behaviour for LAN download mode 1 restricts peers to the local subnet.

The Windows 10 to Windows 11 regression that is not a bug. If your LAN-mode peering efficiency dropped when a site moved to Windows 11, this is probably why. Microsoft documents Windows 11 LAN mode as restricting peers to the local subnet by default. A site with six VLANs behind one NAT device used to be one peer group on Windows 10 and is now six. The documented answer is Group (2) mode, not a registry hack.

The silent disqualifiers

Even with a perfect mode and group, a device can refuse to peer because it fails a documented eligibility check. These are the defaults, and every one of them is a real reason for zero peer bytes.

SettingDocumented defaultWhy it blocks peering
DOMinFileSizeToCache50 MBContent smaller than this is never cached for peering. Microsoft recommends lowering it to 10 MB above 30 devices, and 1 MB above 100 devices.
DOMinRAMAllowedToPeer4 GBDevices with less RAM than this do not peer at all.
DOMinDiskSizeAllowedToPeer32 GBTotal disk capacity, checked against the cache working directory if the cache drive was moved.
DOMaxCacheAge259,200 seconds (3 days)After this the content leaves the cache and stops being available to peers. A value of 0 means unlimited.
DOMaxCacheSize20 percent of available drive spaceThe cache is trimmed to stay under this, evicting content other devices still need.
DOAllowVPNPeerCachingNot allowedBy default, if a VPN connection is detected, peering is not allowed, except when Local Discovery is chosen.
DOMinBatteryPercentageAllowedToUploadUploads off on batteryBy default devices do not upload while on battery. Downloading from peers still works.

Two of these deserve emphasis. The 50 MB default means a fleet whose largest regular download is a 40 MB Intune app will show zero peering forever, correctly. And the VPN rule is keyword-based: Microsoft documents the default keyword list as "VPN", "Secure" and "Virtual Private Network", matched against the network adapter Description and FriendlyName strings. An adapter called SecureConnect matches "Secure" and silently disables peering.

The ports, and what is actually listening

Microsoft publishes a ports table for DO. These are the documented entries.

PortProtocolDocumented function
7680TCP/IPPeer-to-peer content sharing between devices on the network.
3544UDPTeredo NAT traversal to discover and connect to peers across NATs. Required when using DownloadMode Group (2) or Internet (3).
443HTTPS / TLS 1.2Communication between the DO client and cloud service for HTTPS content.
67UDPDHCP client, inbound responses for DHCP-based groups and cache server discovery.
68UDPDHCP client, outbound responses for DHCP-based groups and cache server discovery.

Microsoft notes that port 7680 is automatically registered and opened by the DO service, and that blocking it disables peer-to-peer while leaving HTTP downloads over 80 and 443 working. That is the exact shape of the failure: everything still downloads, just never from a peer.

Windows ships two inbound Windows Defender Firewall rules for this. On a Windows 11 Enterprise device I checked, both are present and enabled by default:

Rule nameDisplay nameFilter
DeliveryOptimization-TCP-InDelivery Optimization (TCP-In)Inbound, Allow, TCP local port 7680, all profiles
DeliveryOptimization-UDP-InDelivery Optimization (UDP-In)Inbound, Allow, UDP local port 7680, all profiles

If your Endpoint Security firewall profile in Intune sets the inbound default to Block and does not merge local rules, those two rules stop applying. That is a configuration you own, not a Windows default.

System files, the service, and where the state lives

DO runs as a single service. Its short name is DoSvc and its display name is Delivery Optimization. On the Windows 11 device I inspected, the service registry key reports these values, which you can read yourself.

HKLM\SYSTEM\CurrentControlSet\Services\DoSvc
  ImagePath     = %SystemRoot%\System32\svchost.exe -k NetworkService -p
  ServiceDll    = %SystemRoot%\system32\dosvc.dll
  ObjectName    = NT Authority\NetworkService
  DependOnService = rpcss

So the binaries involved are these. All of them exist in C:\Windows\System32 on Windows 11, and I verified each one on disk before listing it.

FileRole
C:\Windows\System32\dosvc.dllThe service DLL itself. It is the value of ServiceDll under the DoSvc key, and the service display name and description strings are resource entries inside it.
C:\Windows\System32\doclient.dllPresent on Windows 11. Name and location verified on disk; Microsoft does not publish a per-DLL role description, so treat the role as inferred.
C:\Windows\System32\dosettings.dllPresent on Windows 11. Same caveat as above.
C:\Windows\System32\domgmt.dllPresent on Windows 11. Notable because the second family of DO trace files on disk is named domgmt.*.etl.
C:\Windows\System32\domiprov.dllPresent on Windows 11, alongside DeliveryOptimizationMIProv.mof. This is the management-infrastructure provider that backs the PowerShell cmdlets.

Why the DLL roles are hedged. Microsoft documents the service, the cmdlets and the policies, but does not publish a file-by-file breakdown of the DO binaries. I have listed only files I confirmed exist on a live Windows 11 Enterprise device, and I have labelled the roles I inferred as inferred. Do not write detection logic against an undocumented DLL name - it can change in any update.

There is no scheduled task. I enumerated every task under \Microsoft\Windows\ on a Windows 11 device and found nothing that drives DO. This is consistent with the documented design: DO only starts when an integrated caller starts a download, so there is nothing for a scheduler to trigger. If you were looking for a DO task to check the state of, there is not one, and that is expected.

How to verify: prove the bytes before you change anything

Everything in this section is read-only. Run it before you touch a single policy.

Step 1: what mode is this device actually in, and who set it

Two cmdlets answer this. Get-DODownloadMode returns the currently active download mode as a string. Get-DOConfig lists the local configuration and policies applied to DO, and Microsoft documents that each policy is listed with the current set value and the provider of that policy. That provider field is the part people miss, and it is how you tell a Group Policy value from an Intune value from a platform default.

PowerShell - run elevated
Get-DODownloadMode # Returns a friendly string, not a number. Expect Lan, CdnOnly, Group, Internet or Simple. Get-DOConfig -Verbose | Select-Object DownloadMode, DownloadModeProvider, WorkingDirectory # HEALTHY: DownloadMode Lan or Group, and DownloadModeProvider naming the source you expect. # BROKEN: DownloadMode Simple with no policy set. That is DO telling you the cloud service # is unreachable, because Microsoft documents mode 99 as an automatic fallback. # BROKEN: DownloadModeProvider says MdmProvider but you expected your GPO to win.

Read the output as a chain. The cmdlet gives you the effective value. The provider field gives you the reason. If the two disagree with your intent, you have a policy conflict, not a network problem.

Step 2: the registry reference for the whole feature area

Every DO policy lands in one key. Microsoft publishes the registry key name for each setting in the Policy CSP documentation, and it is the same key for all of them. I also confirmed the value names directly from the shipping administrative template, C:\Windows\PolicyDefinitions\DeliveryOptimization.admx, which is the authoritative on-device source.

Parent key for every value below:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization
Value nameTypeWhat it controls
DODownloadModeDWORD0, 1, 2, 3, 99 or 100. The master switch.
DOGroupIdStringExplicit group GUID. Wins over DOGroupIdSource.
DOGroupIdSourceDWORD0 to 5. Ignored outside Group (2) mode.
DORestrictPeerSelectionByDWORD0 None, 1 Subnet mask, 2 Local discovery (DNS-SD).
DOMinFileSizeToCacheDWORDMinimum peerable content size in MB. Default 50.
DOMaxCacheSizeDWORDCache ceiling as a percentage, 1 to 100. Default 20.
DOAbsoluteMaxCacheSizeDWORDCache ceiling in GB. Overrides DOMaxCacheSize.
DOMaxCacheAgeDWORDSeconds. Default 259200. 0 means unlimited.
DOModifyCacheDriveStringAlternate cache location. Default is %SYSTEMDRIVE%.
DOMinRAMAllowedToPeerDWORDGB of RAM required to peer. Default 4.
DOMinDiskSizeAllowedToPeerDWORDGB of disk required to peer. Default 32.
DOMinBackgroundQosDWORDMinimum background QoS in KB/s. Default 20 MB/s.
DOMonthlyUploadDataCapDWORDGB uploaded to internet peers per month. Default 20.
DOAllowVPNPeerCachingDWORD0 not allowed, 1 allowed.
DOVpnKeywordsStringComma-separated keywords used to recognise a VPN adapter.
DOMinBatteryPercentageAllowedToUploadDWORDBattery floor for uploads, 1 to 100.
DODelayBackgroundDownloadFromHttpDWORDSeconds to hold off the HTTP source on background downloads.
DODelayForegroundDownloadFromHttpDWORDSeconds to hold off the HTTP source on foreground downloads.
DOCacheHostStringComma-separated Connected Cache FQDNs or IP addresses.
DOCacheHostSourceDWORD1 DHCP Option 235, 2 DHCP Option 235 Force.
DODelayCacheServerFallbackBackgroundDWORDSeconds before falling back from the cache server, background.
DODelayCacheServerFallbackForegroundDWORDSeconds before falling back from the cache server, foreground.
DODisallowCacheServerDownloadsOnVPNDWORD1 blocks Connected Cache downloads over VPN.
DOMaxForegroundDownloadBandwidthDWORDAbsolute foreground cap in KB/s. 0 is dynamic.
DOMaxBackgroundDownloadBandwidthDWORDAbsolute background cap in KB/s. 0 is dynamic.
DOPercentageMaxForegroundBandwidthDWORDForeground cap as a percentage. 0 is dynamic.
DOPercentageMaxBackgroundBandwidthDWORDBackground cap as a percentage. 0 is dynamic.

Two of the ADMX-backed settings split into four values each rather than one. The business-hours throttles write DOSetHoursToLimitForegroundDownloadBandwidth_From, _To, _In and _Out, and the same four suffixes for the background equivalent. If you are writing a detection script, look for the suffixed names, not the base name.

Here is what that key looks like in Registry Editor on a device where the policy is set by Group Policy.

Registry Editor
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization
DODownloadMode         REG_DWORD  0x00000002 (2)
DOGroupIdSource       REG_DWORD  0x00000003 (3)
DOMinFileSizeToCache  REG_DWORD  0x0000000a (10)
DODelayBackgroundDownloadFromHttp  REG_DWORD  0x0000003c (60)
Illustrative, showing Group mode with DHCP-sourced group IDs.

Intune-applied settings do not land here. They land under the policy manager key, which is worth knowing because it is where you prove the MDM channel delivered the setting. On the Windows 11 device I checked, each value also has companion _ProviderSet and _WinningProvider values.

MDM-applied values (read-only, do not edit):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\DeliveryOptimization

Never write to either key by hand to "fix" this. The policy manager key is owned by the MDM stack and the policies key is owned by Group Policy. Editing either one directly gives you a value that the next policy refresh either reverts or, worse, leaves in place while the console still shows something different. Fix DO in the management tool that owns it. Read the registry to diagnose, never to remediate.

Step 3: prove the bytes

This is the step that settles arguments. Get-DeliveryOptimizationStatus returns a real-time snapshot of all current DO jobs, one object per file. These are the documented fields that matter for peering.

FieldDocumented meaningHow to read it
BytesFromPeersTotal bytes downloaded from peer devices, the sum of LAN, Group and Internet peers.Non-zero is the proof. Zero is the question.
BytesFromHTTPTotal bytes received over HTTP. Represents all HTTP sources, which includes BytesFromCacheServer.Never add this to the cache server figure. It already contains it.
BytesFromCacheServerTotal bytes received from the Connected Cache server.A subset of BytesFromHTTP.
BytesFromLanPeersBytes from peers found on the LAN.What you want to see in mode 1.
BytesFromGroupPeersBytes from peers found in the group. Group mode is LAN plus Group, so LAN peers are counted in the LAN field.Zero here with a non-zero LAN figure is normal in Group mode.
PercentPeerCachingThe percentage of bytes downloaded from peers versus over HTTP.The per-file headline number.
NumPeersThe total number of peers returned from the service.Zero means the cloud service offered nobody. That is a discovery failure, not a transfer failure.
DownloadModeThe DO download mode value.Confirms the mode that was in force for this specific file.
PredefinedCallerApplicationThe last caller that initiated a request for the file.Tells you whether the content was even peer-eligible.

The distinction between NumPeers being zero and BytesFromPeers being zero is the most useful diagnostic split in the whole feature. Zero peers offered means the cloud service could not match this device to anyone. Peers offered but zero bytes received means the match worked and the connection failed, which points at port 7680.

PowerShell - run elevated
$s = Get-DeliveryOptimizationStatus $peer = ($s | Measure-Object BytesFromPeers -Sum).Sum $http = ($s | Measure-Object BytesFromHttp -Sum).Sum $mcc = ($s | Measure-Object BytesFromCacheServer -Sum).Sum "{0:N0} MB from peers / {1:N0} MB from HTTP / {2:N0} MB of that from cache server" -f ` ($peer/1MB), ($http/1MB), ($mcc/1MB) # HEALTHY: peers figure is a meaningful share of the total. Microsoft documents typical # large-enterprise P2P efficiency at 30 to 50 percent, and 60 to 70 percent with # Group mode and larger peer groups. # BROKEN: peers 0 and HTTP everything. Next question is whether NumPeers was also 0. Get-DeliveryOptimizationPerfSnap | Select-Object NumberOfPeers, LanConnections, GroupConnections, CacheHostConnections # Microsoft troubleshooting says NumberOfPeers should be nonzero on the second device # after you download the same app twice, 10 to 15 minutes apart, in mode 1 or 2.

Read the first block as a ratio, not an absolute. A device that has only downloaded small Intune apps will show zero peer bytes and be perfectly healthy, because of the 50 MB minimum. Read the second block as a discovery test. If NumberOfPeers is zero on both devices after Microsoft's own two-device procedure, the cloud service is not matching them.

Two more documented cmdlets are worth knowing. Get-DeliveryOptimizationPerfSnapThisMonth returns the same class of data limited to the current calendar month, which is the right window for a Patch Tuesday post-mortem. And Get-DeliveryOptimizationStatus -PeerInfo, added in Windows 10 version 2004, returns a real-time list of potential peers per file including the documented ConnectionEstablished flag. That flag is the cleanest possible answer to "is the port blocked".

Use the Microsoft troubleshooter as your second opinion. Microsoft publishes a Delivery Optimization Troubleshooter at aka.ms/do-fix, documented as a diagnostic tool that verifies device configuration, checks peer-to-peer efficiency and settings, and validates Connected Cache connectivity. It takes documented switches including -HealthCheck, -P2P, -MCC, -GenerateSupportBundle and -AsObjects. The -AsObjects switch makes it scriptable, and the support bundle is what Microsoft support will ask for anyway.

Step 4: Event Viewer, and the honest answer about Event IDs

This is where I have to correct a common assumption, including one I started with. There is no Microsoft-Windows-DeliveryOptimization/Operational event log channel on Windows 11. I enumerated every event log on a Windows 11 Enterprise device and found no Delivery Optimization channel at all.

What does exist is an event provider. Two of them, in fact, named DeliveryOptimization and Microsoft-Windows-DeliveryOptimization. The second links to the Application log, and its manifest defines exactly one event. Its description template is "The policy '%1' was set with the value '%2', which is invalid and will be ignored." That is the entire published event surface.

Event Viewer
Windows Logs › Application  |  filter Event sources: Microsoft-Windows-DeliveryOptimization
Source   : Microsoft-Windows-DeliveryOptimization
Events   : 1 defined in the provider manifest
Message  : The policy '<name>' was set with the value '<value>', which is invalid and will be ignored.

No events found.  <-- the normal, healthy result
Illustrative. An empty result here means no invalid DO policy value was rejected. It says nothing about peering.

Do not build DO monitoring on Event Viewer. One provider event, in the Application log, fired only when a policy value is invalid. That is useful for catching a DOGroupIdSource of 7, and useless for everything else. If a vendor dashboard claims to monitor Delivery Optimization health from the Windows event log, ask which Event ID. There is no operational channel to read.

Step 5: the log files that do carry the detail

The real diagnostic detail is in Event Tracing for Windows trace files, not text logs. They live in the service profile of the account DoSvc runs as.

Log directory (NetworkService profile):
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\Logs
Path or file patternWhat it holds
...\DeliveryOptimization\Logs\dosvc.*.etlThe main service trace. Every download decision, every cloud-service call, every peer connection attempt.
...\DeliveryOptimization\Logs\domgmt.*.etlA second, smaller trace family written alongside it.
...\DeliveryOptimization\Cache\The peer cache itself, one folder per content item. This is the working directory reported by Get-DOConfig.
...\DeliveryOptimization\State\Service state files. Undocumented format - read the cmdlets, not these.

You do not open ETL files in a text editor. Microsoft documents Get-DeliveryOptimizationLog for this, and states that if no path is specified it reads all logs from the DoSvc log directory, which requires administrator permissions.

PowerShell - run elevated
$dir = "$env:SystemRoot\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\Logs" $etl = Get-ChildItem $dir -Filter "dosvc*.etl" | Sort-Object LastWriteTime -Descending | Select-Object -First 1 Get-DeliveryOptimizationLog -Path $etl.FullName | Where-Object { $_.Message -match "failed to contact|downloadMode|Network:" } | Select-Object -First 12 Function, Message # The three strings above are the ones worth grepping for. # HEALTHY: "Settings mon init: battery? 1, downloadMode: 1, costState: 2, connected standby? 0" # plus no "failed to contact" lines at all. # BROKEN: "DO Services Comm. serviceId = 5, url = https://geo.prod.do.dsp.mp.microsoft.com/geo... # GEO: failed to contact, hr = 80072ee7" - the DO cloud service is unreachable. # Note: this deliberately omits -Flush. Microsoft documents -Flush as stopping DoSvc.

That hr = 80072ee7 is worth decoding, because it turns a vague network complaint into a specific one. 0x80072EE7 wraps WinINet error 12007, which Microsoft documents as ERROR_INTERNET_NAME_NOT_RESOLVED, "The server name could not be resolved." A name resolution failure against geo.prod.do.dsp.mp.microsoft.com means DNS or a proxy is eating the DO cloud service. No cloud service means no peer list, which means no peering.

Step 6: the port test Microsoft actually documents

If peers are being offered but no bytes arrive, test the port directly between two devices. Microsoft documents both a Telnet test and the modern equivalent.

PowerShell - run elevated on device A, targeting device B
Test-NetConnection -ComputerName 192.0.2.17 -Port 7680 # HEALTHY: TcpTestSucceeded : True. The peer is listening and reachable. # BROKEN: TcpTestSucceeded : False. Either the firewall blocks 7680, or DoSvc on the # target is idle. Microsoft documents that DoSvc stops listening on 7680 when # idle, when the cache is empty, in Simple mode, on low battery, in Connected # Standby, on cellular, or when the VPN setting blocks peering. Get-NetTCPConnection -LocalPort 7680 -State Listen # Run this on the TARGET first. No listener means the negative result above proves nothing.

That idle-shutdown behaviour is the reason a single failed port test proves nothing. Confirm the target is listening before you conclude the firewall is at fault. This is the most common false positive in DO troubleshooting.

The fix: mode, group, port, and the delay policies

Decide the mode first, because everything else follows from it.

If a site is one flat network behind one NAT device, LAN mode (1) is enough, and it is already the default. If a site has multiple subnets or VLANs, or you want remote offices to peer, Microsoft documents Group mode (2) as the answer, and calls it the recommended option for most organisations looking to achieve the best bandwidth optimisation.

For Group mode, pick one Group ID strategy and apply it consistently. Microsoft documents the DHCP option approach as querying DHCP Option ID 234 and using the returned GUID value as the Group ID, which is attractive because it makes the group follow the network rather than the device object. The alternative is an explicit DOGroupId GUID per site, which is more work and completely deterministic.

Configuring it in Intune, click by click

intune.microsoft.comDevicesManage devicesConfigurationCreate
  1. Sign in to the Microsoft Intune admin center.
  2. Select Devices, then Manage devices, then Configuration, then Create, then New Policy.
  3. For Platform, select Windows 10 and later.
  4. For Profile type, select Templates, then Delivery Optimization.
  5. Select Create.
  6. On the Basics page, give the profile a name and a description, then select Next.
  7. On the Configuration settings page, set Download Mode to Group (2), then set Select the source of Group IDs or Group ID according to the strategy you chose. Then select Next.
  8. On the Scope tags page, add scope tags if you use them, then select Next.
  9. On the Assignments page, target a pilot group first, not All Devices. Then select Next.
  10. On the Review + create page, select Create.

The template changed under you in April 2025. Microsoft documents that in April 2025 the settings format of the Delivery Optimization template was updated, that profiles for this new platform use the settings format found in the Settings Catalog, and that you can no longer create new versions of the old profile. Existing instances of the old profile remain available to use. So if your tenant has both an old-format and a new-format DO profile assigned to the same devices, expect to spend an afternoon working out which one is winning. Check DownloadModeProvider from Get-DOConfig on a real device rather than trusting the console.

If you prefer the raw CSP, every setting has a documented OMA-URI under one path. The device-scope prefix is the same for all of them.

OMA-URI prefix for every DO setting:
./Device/Vendor/MSFT/Policy/Config/DeliveryOptimization/
Example: ./Device/Vendor/MSFT/Policy/Config/DeliveryOptimization/DODownloadMode

Configuring it in Group Policy, click by click

Computer ConfigurationAdministrative TemplatesWindows ComponentsDelivery Optimization
  1. Open the Group Policy Management Console and edit a GPO scoped to the site.
  2. Expand Computer Configuration, then Policies, then Administrative Templates, then Windows Components, then Delivery Optimization.
  3. Open Download Mode, set it to Enabled, and choose Group (2) from the drop-down.
  4. Open Select the source of Group IDs, set it to Enabled, and choose DHCP Option ID (3). Alternatively skip this and use Group ID with an explicit GUID per site.
  5. Open Minimum P2P Content File Size (in MB) and set it to 10 for a site above 30 devices, or 1 above 100 devices.
  6. Open Delay background download from http (in seconds) and set 60. Open Delay Foreground download from http (in seconds) and set 30.
  7. Open Minimum Background QoS (in KB/s) and set a value below your observed average download speed.
  8. Close the editor and let the GPO replicate, then run gpupdate /target:computer on a pilot device.

The administrative template file behind that node is DeliveryOptimization.admx, and Microsoft documents it as the ADMX file name for every one of these settings. Both a Group Policy path and an Intune path exist for DO, which is not true of every feature, so you are free to choose.

The values Microsoft actually recommends

Microsoft publishes a summary table of basic configuration recommendations. These are its documented values, not mine.

Use casePolicyRecommended value
Use peer-to-peerDownloadMode1 or 2
Do not use peer-to-peerDownloadMode0
Large device countMinFileSizeToCache1 MB for a peer group above 100 devices
Idle system resourcesMaxCacheAge7 days (604800 seconds)
Improve P2P efficiencyMinBackgroundQoS plus the two HTTP delay policies500 KB/s, and 60 seconds background / 30 seconds foreground
Using Connected CacheThe two cache-server fallback delays60 seconds background / 30 seconds foreground

Minimum Background QoS is counter-intuitive. Microsoft documents that when the measured peer speed falls below the configured threshold, content is downloaded from both peers and the HTTP source, and once the threshold is reached the HTTP connections are closed and downloads continue only from peers. It then says setting a lower threshold makes it easier to meet the limit, which means more content comes from peers. So a lower number increases peering. The documented default is 20 MB/s, which most branch LANs will never sustain, so the default keeps HTTP connections open.

The port, and what not to do about it

Do not create a firewall rule for 7680. Windows already ships two, DeliveryOptimization-TCP-In and DeliveryOptimization-UDP-In, and Microsoft documents that port 7680 is automatically registered and opened by the DO service. Your job is to confirm nothing in your own Endpoint Security firewall profile or your network firewall is overriding them.

Two things to check on the network side. Allow TCP 7680 between the subnets you want to peer, in both directions. And if the peer group spans NAT boundaries in Group or Internet mode, allow UDP 3544 for Teredo, plus the documented Teredo server hostname win1910.ipv6.microsoft.com. Microsoft lists that hostname explicitly under "For group peers across multiple NATs (Teredo)".

The DO service endpoints must also be reachable. Microsoft documents these hostnames for the firewall allowlist: *.do.dsp.mp.microsoft.com for client-to-cloud communication, and *.dl.delivery.mp.microsoft.com plus *.windowsupdate.com for DO metadata.

Where Microsoft Connected Cache fits

Connected Cache is a software-only caching solution that delivers Microsoft content, and Microsoft documents two main offerings: one for internet service providers, in preview, and one for Enterprise and Education, generally available. Both are created and managed in the Azure portal. There is also a separate Connected Cache in Configuration Manager.

The important architectural point is that it does not replace peering. Microsoft states that when DO is configured to use peers and Connected Cache, the client connects to both in parallel, with no prioritisation between the two. If neither can supply the content, DO falls back to the HTTP source.

If you only change one thing this quarter. Set the two HTTP delay policies. Microsoft documents 60 seconds for background and 30 seconds for foreground as a good starting point, and the whole purpose is to stop DO racing off to the CDN before peers have had a chance to answer. It costs nothing, it cannot break a download because the fallback still happens, and on a Patch Tuesday it is the difference between a peer group that works and one that technically exists.

One ordering detail if you use both peers and Connected Cache. Microsoft documents that when both the HTTP delay policies and the cache-server delay policies are configured, both timers start from the beginning of the download and are not additive. If both are 60 seconds, fallback from the cache server to the HTTP source is immediate once the HTTP delay expires. The documented guidance is to set the cache-server delay higher than the HTTP delay.

Proof it worked: a real read-only run

The companion script for this post is Get-DeliveryOptimizationEfficiency.ps1. It reports the effective download mode with its documented meaning, the Group ID surface and how the group would be derived, the cache location and its size and thresholds, the state of both in-box firewall rules and whether anything is listening on 7680, and then the actual peering efficiency from three independent sources. It is read-only. It never calls a Set cmdlet, never clears or pins the cache, never touches a firewall rule, and never passes -Flush to the log cmdlet because -Flush stops the service.

The output below is a genuine run on a domain-joined, Intune-managed Windows 11 Enterprise device. Identifiers are replaced. It is a useful example precisely because the device is not healthy.

PowerShell - run elevated - Get-DeliveryOptimizationEfficiency.ps1
============================================================================== 2. Effective download mode and where it came from ============================================================================== Get-DODownloadMode Lan Documented meaning LAN (1) - DEFAULT. Peers behind the same NAT Get-DOConfig DownloadMode Lan Winning policy provider MdmProvider GPO registry DODownloadMode not configured (genuinely absent) MDM registry DODownloadMode 1 (LAN (1) - DEFAULT) Can this mode peer at all? YES # Mode is fine. Provider says Intune, not GPO. So far so good. ============================================================================== 3. Group ID and how the group would be formed ============================================================================== GPO DOGroupId not configured (genuinely absent) MDM DOGroupIdSource not configured (genuinely absent) Domain joined (AD DS) True Domain / workgroup contoso.com DORestrictPeerSelectionBy Subnet mask (1) - peers must share the subnet # FINDING: peer selection is restricted to the subnet. Microsoft documents that this # prevents peer discovery across subnets, whatever the download mode is. ============================================================================== 5. The peer port (TCP 7680) and Teredo (UDP 3544) ============================================================================== DeliveryOptimization-TCP-In Enabled=True Action=Allow Profile=Any DeliveryOptimization-UDP-In Enabled=True Action=Allow Profile=Any TCP 7680 listener LISTENING on :: # Local firewall and listener are healthy. The port is not the problem here.

Read that as a narrowing exercise. The mode allows peering. The port is open and listening. So if there are no peer bytes, the failure must be discovery. The next section of the same run says exactly that.

PowerShell - run elevated - same run, continued
============================================================================== 6. Did bytes actually come from peers? ============================================================================== Files 48 NumberOfPeers 0 LanConnections 0 CacheHostConnections 1 CdnConnections 1 CacheSizeBytes 6.66 GB Peers visible right now 0 - no peers offered for anything in cache Calendar-month totals (Get-DeliveryOptimizationPerfSnapThisMonth): From LAN peers 0 B From HTTP sources 7.66 GB of which Connected Cache 4.66 GB Month peer efficiency 0 percent of 7.66 GB Aggregated across every file in the DO cache: BytesFromPeers (total) 72.75 MB BytesFromHttp (total) 6.64 GB of which cache server 4.19 GB Bytes served TO peers 13.21 MB PEER EFFICIENCY 1.06 percent of 6.71 GB Connected Cache share 62.41 percent # VERDICT: 1.06 percent peer efficiency against a documented 30-50 percent norm. # NumberOfPeers is 0, so the DO cloud service is offering nobody. That is a discovery # failure, not a transfer failure - the port was proven open above. # Silver lining: Connected Cache is carrying 62 percent, so the ISP cache node works. # Cross-check in the ETL: "GEO: failed to contact, hr = 80072ee7" on # geo.prod.do.dsp.mp.microsoft.com. WinINet 12007, name not resolved.

That is the whole method in one screen. Zero peers offered plus an open port plus a name-resolution failure against the DO cloud service equals a proxy or DNS problem, not a Delivery Optimization problem. Without the byte counters you would have guessed. With them you have a specific hostname to take to the network team.

Note also what the same run proves about Connected Cache. This device pulled 4.66 GB from a cache server this month with no DOCacheHost configured at all, which is consistent with Microsoft's documented behaviour of downloading from a Connected Cache server hosted by an internet service provider. Peering was broken. Caching was not. Those are genuinely separate paths.

Community deep-dives worth reading

I fetched and read both of these before citing them.

AuthorArticleWhy it is worth your time
Maurice Daly, MSEndpointMgrDeep Dive: Delivery Optimization Troubleshooting & ReportingGoes into the troubleshooter script, TCP 7680 and UDP 3544, the Windows 10 versus Windows 11 DNS-SD difference, and Log Analytics queries for fleet-wide DO efficiency.
Anders Ahl, MSEndpointMgrMicrosoft Delivery Optimization: Implementation, Benefits, and Recommended PracticesEnd-to-end implementation walkthrough including the network prerequisites and where Connected Cache changes the maths.

References

The companion script lives at github.com/Imran76Awan/Windows-11-Scripts under delivery-optimization-peer-caching-internals. It is read-only by design, it fails loudly rather than printing a clean report from a failed read, and it runs on both Windows PowerShell 5.1 and PowerShell 7.

PowerShell — companion script

Download it from Imran76Awan/Windows-11-Scripts — no sign-in required. It is read-only: it reports and never changes a device or anything in Intune. Validate it in your own environment before relying on the output.

Get-DeliveryOptimizationEfficiency.ps1 — Reports the effective Delivery Optimization configuration and the real peer-caching
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows 11
DNS over HTTPS in Windows 11: encrypting resolution without…
Windows 11 ships a DNS over HTTPS client that most estates have never configured. Here is…
Windows 11
The Enablement Package: How 24H2 Becomes 25H2 in a Reboot (and…
Windows 11 24H2 and 25H2 share one servicing branch and one identical set of system…
Windows 11
Attack Surface Reduction rules broke a line-of-business app:…
An ASR rule in Block mode kills an app and tells you nothing but a GUID. Here is the…