Du kannst dir sicher vorstellen, dass die Internet-Breakouts stark ausgelastet sind, wenn ein neuer Windows-Patch oder eine neue Version einer Software veröffentlicht wird, die auf jedem Gerät installiert werden muss, und viele PCs gleichzeitig damit beginnen, die Inhalte von einem Ziel ausserhalb des Unternehmensnetzwerks herunterzuladen. Oder wenn die Internetverbindung eines bestimmten Standorts nur eine geringe Bandbreite hat, dauert der Download einer grossen App sehr lange. Doch immer mehr Organisationen verlagern ihre Anwendungen sowie das Update-Management in die Cloud und reduzieren ihre On-Premises-Infrastruktur. Um dieses Problem zu lösen, hat Microsoft eine sehr gute Technologie namens Delivery Optimization eingeführt. In diesem Blog möchten wir klären, was DO ist, und einen tieferen Blick darauf werfen, wie das funktioniert.

Inhaltsverzeichnis
Was ist Delivery Optimization?
Früher wurde mit dem Microsoft Configuration Manager und dem klassischen Gerätemanagement der komplette Anwendungsinhalt von Content-Servern bereitgestellt, die direkt am Standort platziert waren. Dadurch wurden die Internet-Breakouts durch den Content-Download auf den verschiedenen Clients nicht belastet. Zusätzlich gibt es auch Technologien wie Branch- und Peer-Cache, um die Last über verschiedene Clients zu verteilen. Durch die Verlagerung des Client-Managements in die Cloud entsteht das Problem, dass der komplette Content-Download immer über die Internet-Breakouts laufen muss. Das bringt verschiedene Probleme mit sich. Zum einen kann der Download an bestimmten Standorten sehr langsam sein und zum anderen wird deutlich mehr Bandbreite verbraucht, was zu Kosten, aber auch zu einer hohen Last führt.
Um diese Probleme zu überwinden, hat Microsoft Delivery Optimization eingeführt. Delivery Optimization ist eine cloudverwaltete Peer-to-Peer-Technologie, um den Bandbreitenverbrauch beim Herunterladen von Paketen wie z. B. WufB oder Win32-Apps zu reduzieren, indem die Pakete über mehrere Geräte verteilt werden. Es handelt sich um einen intelligenten verteilten Cache, der es ermöglicht, den Download von Paketen auf andere Quellen zu verteilen, sodass die Internet-Breakouts des Unternehmens nicht belastet werden und zudem die Download-Geschwindigkeit erhöht wird.
Delivery Optimization ist ein intelligenter Cache, bei dem die Peers von einem Webservice verwaltet werden und nur abhängig vom Akkustand und der Auslastung des Clients als Peers angeboten werden.

Was sind die Voraussetzungen?
- Mindestens Windows-OS-Version ab 1511 (mit jeder späteren Version wurden weitere Features hinzugefügt)
- Offener Port TCP 7680 auf Clients und lokalen Firewalls für Anfragen von anderen Peers
- Internetverbindung mit Zugriff auf den Delivery-Optimization-Service:
Für die Kommunikation zwischen Clients und dem Delivery-Optimization-Cloud-Service:
*.do.dsp.mp.microsoft.com
Für Delivery-Optimization-Metadaten:
*.dl.delivery.mp.microsoft.com
*.emdl.ws.microsoft.com
Für die Payloads (optional):
*.download.windowsupdate.com
*.windowsupdate.com
Für das Gruppieren von Peers über mehrere NATs hinweg (Teredo):
win1910.ipv6.microsoft.com
Welche Inhalte werden unterstützt?
Es wurden immer mehr Inhalte hinzugefügt, die von Delivery Optimization unterstützt werden. Nicht alle Inhalte werden in älteren Windows-Versionen unterstützt. Die folgenden Inhalte werden unterstützt (Stand Oktober 2022):
- Windows Updates [Win1511] (Feature- und Quality-Updates sowie Language Packs und Treiber)
- Windows Store (for Business) Dateien [Win1511]
- Windows Defender Definitionsupdates [Win1511]
- Intune Win32-Apps [Win1709]
- Microsoft 365 Apps und Updates [Win1709]
- MS Edge Updates [Win1809]
- ConfigMan Express Updates [Win1709 + ConfigMan 1711]
- Dynamic Updates [Win1903]
- MDM Agent [Windows 11]
Wie funktioniert Delivery Optimization?
Kurz gesagt:
Der herunterzuladende Inhalt wird in kleine Chunks aufgeteilt. Der Client fragt den DO-Service, wer innerhalb seiner Gruppe den aktuell heruntergeladenen Chunk in seinem Cache hat. Der DO-Server antwortet mit einer Liste von Clients. Der Client fordert den Download von diesem Client an.
Im Detail:
- In Intune oder SCCM wird eine Policy definiert, um das Verhalten der Peers für Delivery Optimization zu konfigurieren, z. B. mit wem ein Client kommunizieren darf.
- Der Client sucht nach Updates und kontaktiert den Windows Update Service. WU gibt die URL des CDN zurück.
- Wenn ein Windows-Client Inhalte vom CDN anfordert, erhält er zunächst Metadaten über den herunterzuladenden Inhalt. Die Content-Metadaten sind eine Hash-Datei, die die SHA-256-Hashes auf Blockebene für jedes Teilstück der Datei enthält (typischerweise ein Teilstück = 1 MB). Diese Metadaten werden auf ihre Authentizität geprüft, ob sie aus einer vertrauenswürdigen Quelle stammen.
- Der Client kontaktiert den Delivery-Optimization-Service, um eine Liste von Clients zu erhalten, welche die benötigten Quellen in ihrem Cache verfügbar halten. Wenn kein Client die benötigten Quellen im Cache hat, wird der Download direkt vom CDN angefordert.
- Der Client kontaktiert die Peers. Der Peer, der am schnellsten antwortet, wird zum Herunterladen der Quellen verwendet. Wenn ein Client einen 1-MB-Chunk eines Inhalts von einem anderen Client abruft, wird dieser mit dem Hash aus den Metadaten abgeglichen. Ist er ungültig, wird der Chunk verworfen und der Client wird gesperrt und kann nicht mehr als Quelle verwendet werden.
- Wenn der Download abgeschlossen ist, fügt Delivery Optimization alle Chunks zusammen und erhält die finale Datei. Danach prüft der Abrufer der Datei (z. B. der Windows Update Service) die gesamte Datei und gleicht die Signatur ab. Der Client behält einige Chunks in seinem Cache und meldet dies an den Delivery-Optimization-Service.

Wie kann ich festlegen, an welchen Client der Inhalt bereitgestellt wird?
Um festzulegen, welcher Client mit welchem Client kommunizieren kann, gibt es den sogenannten Download-Modus. Hier kannst du festlegen, dass jeder Client innerhalb eines Netzwerks ein möglicher Peer ist, aber auch jeder Client im Internet. Meiner Meinung nach ist die sinnvollste Methode, das Peering innerhalb einer privaten Gruppe zu wählen. Hier kannst du mithilfe einer Group ID festlegen, welche Clients zu einer Gruppe gehören.
Das Ziel sollte sein, die Gruppen so gross wie möglich zu machen, um die Wahrscheinlichkeit zu erhöhen, dass der Inhalt auf einem anderen Client verfügbar ist, und um viele Peers anzubieten, aber nur so gross, dass die Clients netzwerktechnisch nah beieinander liegen, um eine hohe Geschwindigkeit zu gewährleisten.

Was ist die DO Group ID und wie kann ich die Group ID verteilen?
Die Group ID ist eine GUID, die z. B. über eine Policy, eine DHCP-Option oder auch andere Möglichkeiten verteilt werden kann, um eine benutzerdefinierte Gruppierung der Clients vorzunehmen. Nur Clients mit derselben Group ID teilen ihre gecachten Inhalte untereinander. Die Verteilung über DHCP ist besonders für Microsoft Entra joined only Geräte sinnvoll.

Um die Group ID per DHCP zu verteilen, muss sie in der DHCP-Option 234 hinterlegt werden. Eine ID kann mit dem folgenden PowerShell-Befehl auf einem beliebigen Windows-Client erstellt werden.
New-Guid
Wie du die IDs verteilst, hängt von deiner Netzwerktopologie ab, aber es wird empfohlen, für jeden Standort eine GUID zu erstellen und sie per DHCP an die zugehörigen Netzwerke anzuhängen. (Wie bereits gesagt: Je grösser die Gruppe, desto effizienter ist DO.)
Wie kann ich Delivery Optimization in Intune konfigurieren?
- Öffne das Intune Admin Center
- Navigiere zu Devices -> Configuration profiles
- Klicke auf + Create profile
- Wähle Windows 10 and later als Plattform und Templates als Profiltyp
- Wähle Delivery optimization
- Klicke auf Create

- Gib einen Name ein
- Klicke auf Next

- Gib deine Konfiguration ein
- Meine Empfehlung (kann sich von Umgebung zu Umgebung unterscheiden und muss überwacht und angepasst werden):
| Setting | Value |
| Download mode | Http blended with peering across private group (2) |
| Restrict Peer Selection | Not configured |
| Group ID source | DHCP user option |
| Bandwidth optimization type | Not configured |
| Delay background HTTP download (in seconds) | 60 |
| Delay foreground HTTP download (in seconds) | 10 |
| Minimum RAM required for peer caching (in GB) | 1 |
| Minimum disk size required for peer caching (in GB) | 32 |
| Minimum content file size for peer caching (in MB) | 10 |
| Minimum battery level required to upload (in %) | 40 |
| Modify each drive | %SystemDrive% (Not filled out use default) |
| Maximum cache age (in days) | 120 |
| Maximum cache size type | Percentage |
| Maximum cache size (in %) | 20 |
| VPN peer caching | Disabled |
| Caching server fully qualified domain names (FQDN) or IP addresses | Empty |
| Delay foreground download Cache Server fall back (in seconds) | 0 |
| Delay background download Cache Server fall back (in seconds) | 0 |
- Klicke auf Next

Wo werden DO-Dateien gespeichert?
C:\Windows\DeliveryOptimization, aber das Laufwerk kann in den DO-Einstellungen geändert werden.
Manuelles Bereinigen der DO-Cache-Dateien
Verwende das Datenträgerbereinigungs-Tool, um den DO-Cache zu bereinigen:

Delivery-Optimization-Konfigurationen in der Registry
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc
Du kannst zum Beispiel den Start-Wert auf 4 ändern, um DO zu deaktivieren.

Wie kann ich Delivery Optimization überwachen?
Besonders zu Beginn, wenn du Delivery Optimization einführst, aber auch fortlaufend solltest du die Performance und das Monitoring genau im Blick behalten, um sie bei Bedarf anzupassen oder Fehler zu erkennen. Um zu überwachen, wie gut Delivery Optimization funktioniert, gibt es zwei Wege. Der erste ist, die Performance-Metriken auf dem Client zu betrachten, und der andere ist, die Telemetriedaten in Log Analytics auszuwerten. Schauen wir uns das an.
Analyse auf dem Client
Es gibt eine Reihe von PowerShell-Befehlen, die helfen, den Status abzufragen:
- Get-DeliveryOptimizationPerfSnap
- Dieser Befehl gibt dir einen Gesamtüberblick über die Anzahl der Downloads, eine Statistik der von verschiedenen Quellen heruntergeladenen Datenmenge und viele weitere nützliche Informationen
- Get-DeliveryOptimizationPerfSnapThisMonth
- PerfSnap-Zusammenfassung des Monats
- Get-DeliveryOptimizationStatus
- Übersicht über alle einzelnen Content-Downloads mit vielen detaillierten Informationen wie der Download-Zeit
- Get-DeliveryOptimizationLog (erhöhte Rechte erforderlich)
- Listet alle DoSVC-Logs auf
- Enable-DeliveryOptimizationVerboseLogs / Disable-DeliveryOptimizationVerboseLogs (>= Win2004)
- Aktiviert das ausführliche Logging, um detailliertere Informationen zu erhalten (erzeugt viele Log-Einträge)

Windows-Optionen
Eine Statistik der Delivery Optimization findest du auch in den Windows-Einstellungen unter Windows Update.
Navigiere zu: Settings -> Windows Update -> Advanced Options -> Delivery Optimization -> Activity monitor

Analyse über Log Analytics
Innerhalb von Update Compliance gibt es eine Delivery-Optimization-Kategorie, die dir ein grundlegendes Dashboard auf Basis der Telemetriedaten bereitstellt. Das ist ein guter Ausgangspunkt, aber mit den unendlichen Möglichkeiten von KQL und Workbooks kannst du auch deine eigenen Dashboards erstellen. Dafür musst du die Commercial ID an die Clients verteilen. Wie du sie verteilst und wie du die zentrale Sammlung der Telemetriedaten aktivierst, wird in dem zugehörigen Guide sehr gut erklärt.

Wann ergibt Delivery Optimization keinen Sinn
Wie erwähnt ist es bei Delivery Optimization sinnvoll, die Gruppen so gross wie möglich zu machen. Sind die Gruppen jedoch kleiner als 10 Geräte, dann ist Delivery Optimization keine sinnvolle Option. Auch in reinen VPN- oder WLAN-Netzwerken ergibt Delivery Optimization keinen Sinn. In diesen Fällen kannst du Microsoft Connected Cache verwenden.
Was ist Microsoft Connected Cache (MCC)
Microsoft Connected Cache ist eine Serverkomponente, die als dynamischer Cache innerhalb des Netzwerks fungiert und ausserdem als Peer agiert. MCC cacht die Inhalte basierend auf den Anfragen der Clients. Das Connected-Cache-Feature kann auf einem SCCM-Content-Server aktiviert werden, oder es läuft aktuell eine Private Preview eines eigenständigen MCC. Dabei handelt es sich um ein Container-Image, das auf einer Linux-Maschine läuft. Der Vorteil von MCC ist: Wenn an einem Standort nicht viele Clients online sind, werden die Daten trotzdem von einem MCC bereitgestellt. Das führt zu noch besseren Bandbreitenreduzierungen und es kann in Netzwerken eingesetzt werden, in denen Peer-to-Peer nicht genutzt werden kann.

Wie funktioniert der eigenständige MCC
In den Microsoft Docs wird sehr gut erklärt, wie der eigenständige MCC funktioniert.
Die folgenden Schritte beschreiben, wie MCC bereitgestellt und verwendet wird.
- Das Azure Management Portal wird verwendet, um MCC-Knoten zu erstellen.
- Der MCC-Container wird mithilfe des im Portal bereitgestellten Installers auf einem Server bereitgestellt und provisioniert.
- Die Client-Policy wird in deiner Management-Lösung so konfiguriert, dass sie auf die IP-Adresse oder den FQDN des Cache-Servers verweist.
- Microsoft-Endbenutzergeräte stellen Range-Requests für Inhalte an den MCC-Knoten.
- Ein MCC-Knoten ruft Inhalte vom CDN ab, befüllt seinen lokalen, auf der Festplatte gespeicherten Cache und liefert die Inhalte an den Client aus.
- Nachfolgende Anfragen von Endbenutzergeräten nach Inhalten werden aus dem Cache bedient.
Ist ein MCC-Knoten nicht verfügbar, ruft der Client die Inhalte vom CDN ab, um einen unterbrechungsfreien Dienst für deine Nutzer sicherzustellen.

[…] https://jannikreinhard.com/2022/10/09/deep-dive-into-delivery-optimization/ […]
Do you have any experience in working with DO while also using the Windows 10 security baseline in Intune? My current guess is that the “deny all incoming connections” setting of the FW blocks DO from working.
Hi, thanks for your work about DO. Seems to contain an error about the DHCP Option. I think it’s 234 and not 235
ohh many thanks. You are right.I have correct this. 235 is the content server 😀
Hello,
I have a question about the new feature of Delivery Optimization,
With option 2 of DO, you can use Local Peer Discovery that is based on mDNS, so DO use the multicast ?
Hey Ramdik,
it use DNS-SD to discover the peers.