From 0ca30a77ba9ac50a56d56d129c35aceb3a220262 Mon Sep 17 00:00:00 2001 From: "[cmknox]" <[cmknox@gmail.com]> Date: Sun, 14 Jul 2024 22:31:35 -0400 Subject: [PATCH] Add PR feedback --- .../do/delivery-optimization-configure.md | 48 ++++++++++-------- .../images/do-setup-improve-efficiencies.png | Bin 13944 -> 0 bytes .../do/images/do-setup-improve-efficiency.png | Bin 0 -> 15132 bytes 3 files changed, 27 insertions(+), 21 deletions(-) delete mode 100644 windows/deployment/do/images/do-setup-improve-efficiencies.png create mode 100644 windows/deployment/do/images/do-setup-improve-efficiency.png diff --git a/windows/deployment/do/delivery-optimization-configure.md b/windows/deployment/do/delivery-optimization-configure.md index b1cc42ba09..258bb90b68 100644 --- a/windows/deployment/do/delivery-optimization-configure.md +++ b/windows/deployment/do/delivery-optimization-configure.md @@ -21,23 +21,23 @@ ms.date: 07/01/2024 # Configure Delivery Optimization (DO) for Windows -## Delivery Optimization set up considerations checklist +## Delivery Optimization set up considerations Use this checklist to guide you through different aspects when modifying Delivery Optimization configurations for your environment. 1. Allow Delivery Optimization communication -2. Options to apply Delivery Optimization settings +2. Choose where to set Delivery Optimization policies 3. Network topology 4. Optimize P2P usage for your organization size 5. System resources 6. Improve efficiencies 7. Connected Cache -## 1. Allow DO communication +## 1. Allow Delivery Optimization communication :::image type="content" source="images/do-setup-allow-communication.png" alt-text="Screenshot of the considerations to allow Delivery Optimization communication." lightbox="images/do-setup-allow-communication.png"::: -Delivery Optimization is used to download Microsoft content from different sources (HTTP source, peers, and/or dedicated cache solution). It requires communication between the DO client and the service to find the best and most reliable source of content. For this technology to work, the DO client running on the Windows device must be able to reach the DO cloud service. +Delivery Optimization (DO) is used to download Microsoft content from different sources (HTTP source, peers, and/or dedicated cache solution). It requires communication between the DO client and services to find the best and most reliable sources of content. For this technology to work, the DO client running on the Windows device must be able to reach the DO cloud service. Find out more about the requirements for Firewall, Proxy, and Port settings to enable Delivery Optimization communication. @@ -47,7 +47,7 @@ There are service endpoints that you need to permit through your Firewall to com ### Proxy -To allow peer-to-peer (P2P) to work properly you need to allow direct calls to the Delivery Optimization service from your devices. When using a proxy, you want to bypass calls from the Delivery Optimization service (*.prod.do.dsp.mp.microsoft.com). If the calls to the DO service are funneled through your proxy, it will alter the public IP address of the devices, preventing P2P from working properly. +To allow peer-to-peer (P2P) to work properly you need to allow direct calls to the Delivery Optimization service from your devices. When using a proxy, you want to bypass calls from the Delivery Optimization service (*.prod.do.dsp.mp.microsoft.com). #### Local proxy @@ -55,17 +55,17 @@ For downloads from HTTP sources, Delivery Optimization can use the automatic pro #### Cloud proxy - If you're using a cloud proxy, you should configure it to allow Delivery Optimization traffic to [bypass the proxy](waas-delivery-optimization-faq.yml#what-is-the-recommended-configuration-for-delivery-optimization-used-with-cloud-proxies). Otherwise, you may experience reduced performance and increased bandwidth consumption. + If you're using a cloud proxy, the calls to the DO service are funneled through your cloud proxy and the public IP address of the devices is altered, preventing P2P from working properly. To avoid any issues, you should configure it to allow Delivery Optimization traffic to [bypass the proxy](waas-delivery-optimization-faq.yml#what-is-the-recommended-configuration-for-delivery-optimization-used-with-cloud-proxies). Otherwise, you may experience reduced performance and increased bandwidth consumption. ### Ports Delivery Optimization requires the use of certain ports to deliver content. Make sure all the [required ports](waas-delivery-optimization-faq.yml#which-ports-does-delivery-optimization-use) are open to make Delivery Optimization work seamlessly. -| Port | Function | -|---------|-------------------| -| 7680 | Listen for P2P using TCP/IP | -| 3544 | Use Teredo to discover and connect to peers across NATs | -| 443 | Use to communicate Delivery Optimization client and service | +| Port | Protocol | Function | +|---------|-------------------|----------| +| 7680 | TCP/IP | Listen for P2P using TCP/IP | +| 3544 | TCP/IP | Use Teredo to discover and connect to peers across NATs | +| 443 | HTTPS / TLS 1.2 | Use to communicate Delivery Optimization client and service | ## 2. DO presence @@ -103,7 +103,7 @@ Peer groups can be defined in Delivery Optimization using a combination of setti To define a peer group limited to your LAN, choose [DODownloadMode](waas-delivery-optimization-reference.md#download-mode) (1), LAN-mode. This download mode setting includes any devices that share the same public IP address when they connect to the Internet (behind the same NAT) in a single peer group. > [!NOTE] -> Consider using Group download mode and/or limiting peer selection to the subnet if your network topology is a hub and spoke. +> Consider using Group download mode and/or limiting peer selection to the subnet if your network topology is a Hub and Spoke. ##### Wide area network (WAN) @@ -128,7 +128,10 @@ There are two valid download modes that don't use P2P functionality to deliver c ### Peering with VPN -By default, if Delivery Optimization detects a VPN, peering is not used. To enable this behavior, use the [DOAllowVPNPeerCaching](waas-delivery-optimization-reference.md#enable-peer-caching-while-the-device-connects-via-vpn) policy. The Delivery Optimization client looks in the network adapter’s ‘Description’ and ‘FriendlyName’ strings to determine VPN usage. To allow greater flexibility for VPN identification, use the [DOVpnKeywords](waas-delivery-optimization-reference.md#vpn-keywords) to add descriptors for a particular VPN. +By default, if Delivery Optimization detects a VPN, peering is not used. To change this behavior, use the [DOAllowVPNPeerCaching](waas-delivery-optimization-reference.md#enable-peer-caching-while-the-device-connects-via-vpn) policy. The Delivery Optimization client looks in the network adapter’s ‘Description’ and ‘FriendlyName’ strings to determine VPN usage. To allow greater flexibility for VPN identification, use the [DOVpnKeywords](waas-delivery-optimization-reference.md#vpn-keywords) to add descriptors for a particular VPN you use in your organization. + +> [!NOTE] +> The default keyword list is “VPN”, “Secure”, and “Virtual Private Network”. For example, “MYVPN” matches the “VPN” keyword and would be detected as a VPN connection. ## 4. Optimize P2P usage for your organization size @@ -166,24 +169,27 @@ Control the minimum amount of RAM (inclusive) allowed to use peer caching (defau In an environment with devices that are plugged in and have ample free disk space try increasing the content expiration interval of [DOMaxCacheAge](waas-delivery-optimization-reference.md#max-cache-age) to seven or more (up to 30 days). You can take advantage of these devices, using them as excellent upload sources to upload more content over a longer period. -## 6. Improve efficiencies +## 6. Improve P2P efficiency -:::image type="content" source="images/do-setup-improve-efficiencies.png" alt-text="Screenshot of Delivery Optimization improve efficiency considerations." lightbox="images/do-setup-improve-efficiencies.png"::: +:::image type="content" source="images/do-setup-improve-efficiency.png" alt-text="Screenshot of Delivery Optimization improve efficiency considerations." lightbox="images/do-setup-improve-efficiency.png"::: -Looking to improve efficiency? Some of the most powerful settings you can change that could have a significant impact within your environment include: +Looking to improve P2P efficiency? Some of the most powerful settings you can change that could have a significant impact within your environment include: * Help optimize peer connection over HTTP connections using the [DOMinBackgroundQoS](waas-delivery-optimization-reference.md#minimum-background-qos) policy. A good value for the [DOMinBackgroundQoS](waas-delivery-optimization-reference.md#minimum-background-qos) policy is something lower than the average download speed seen in your network. For example, if your average speed is 1000 KB/s, set this policy to 500 KB/s. * Improve chances of downloading from peers and/or cache server by delaying the time DO attempts to make connections before falling back to the HTTP source. The set of delay-related policies include: [DODelayBackgroundDownloadFromHttp](waas-delivery-optimization-reference.md#delay-background-download-from-http-in-secs), [DODelayForegroundDownloadFromHttp](waas-delivery-optimization-reference.md#delay-foreground-download-from-http-in-secs). To improve efficiencies from peers or a dedicated cache server, a good starting point is 60 seconds for background settings and 30 seconds for foreground settings. +> [!NOTE] +> Not all content types are eligible for P2P. Refer to the [complete list](waas-delivery-optimization.md#types-of-download-content-supported-by-delivery-optimization) to learn more. + ### Bandwidth throttling options -* Reduce disruptions by throttling differently at different times of day, using the business hours policies, [DOSetHoursToLimitBackgroundDownloadBandwidth](waas-delivery-optimization-reference.md#set-business-hours-to-limit-background-download-bandwidth) and [DOSetHoursToLimitForegroundDownloadBandwidth](waas-delivery-optimization-reference.md#set-business-hours-to-limit-foreground-download-bandwidth). +Regardless of P2P, consider setting the following policies to avoid network disruption. + * Manage network usage as a percentage or absolute value. These policies include: [DOPercentageMaxBackgroundBandwidth](waas-delivery-optimization-reference.md#maximum-background-download-bandwidth), [DOPercentageMaxForegroundBandwidth](waas-delivery-optimization-reference.md#maximum-foreground-download-bandwidth), [DOMaxBackgroundDownloadBandwidth](waas-delivery-optimization-reference.md#maximum-background-download-bandwidth-in-kbs), and [DOMaxForegroundDownloadBandwidth](waas-delivery-optimization-reference.md#maximum-foreground-download-bandwidth-in-kbs). +* Reduce disruptions by throttling differently at different times of day, using the business hours policies, [DOSetHoursToLimitBackgroundDownloadBandwidth](waas-delivery-optimization-reference.md#set-business-hours-to-limit-background-download-bandwidth) and [DOSetHoursToLimitForegroundDownloadBandwidth](waas-delivery-optimization-reference.md#set-business-hours-to-limit-foreground-download-bandwidth). > [!NOTE] > The absolute policies are recommended in low bandwidth environments. -> -> Not all content types are eligible for P2P. Refer to the [complete list](waas-delivery-optimization.md#types-of-download-content-supported-by-delivery-optimization) to learn more. ## 7. Connected cache @@ -191,7 +197,7 @@ Looking to improve efficiency? Some of the most powerful settings you can change * [DOCacheHost](waas-delivery-optimization-reference.md#cache-server-hostname) is the list of cache host server names, separated with commas. *Delivery Optimization client connects to the listed Microsoft Connected Cache servers in the order as they're listed.* * [DOCacheHostSource](waas-delivery-optimization-reference.md#cache-server-hostname-source) can be used to dynamically discover cache host servers on the network, using DHCP. -* [DelayCacheServerFallbackBackground](waas-delivery-optimization-reference.md#delay-background-download-cache-server-fallback-in-secs) and [DelayCacheServerFallbackForeground](waas-delivery-optimization-reference.md#delay-foreground-download-cache-server-fallback-in-secs) are the delay policies to help improve chances of pulling content from the network cache host servers. (See recommended values in [Improve Efficiencies](#6-improve-efficiencies) section above). +* [DelayCacheServerFallbackBackground](waas-delivery-optimization-reference.md#delay-background-download-cache-server-fallback-in-secs) and [DelayCacheServerFallbackForeground](waas-delivery-optimization-reference.md#delay-foreground-download-cache-server-fallback-in-secs) are the delay policies to help improve chances of pulling content from the network cache host servers. (See recommended values in [Improve P2P efficiency](#6-improve-p2p-efficiency) section above). * [DODisallowCacheServerDownloadsOnVPN](waas-delivery-optimization-reference.md#disallow-cache-server-downloads-on-vpn) allows control of the cache host server to supply content, when device is on a VPN connection. ## Summary of basic configuration recommendations @@ -202,7 +208,7 @@ Looking to improve efficiency? Some of the most powerful settings you can change | Do not use P2P | DownloadMode | 0 | | Number of devices in the organization | MinFileSizeToCache | 1 MB for peer group > 100 devices | | Idle system resources | MaxCacheAge | 7 days (604800 seconds) | -| Improve efficiencies | MinBackgroundQoS and DelayBackgroundDownloadFromHttp / DelayForegroundDownloadFromHttp | 500 KB/s and 60/30 seconds | +| Improve P2P efficiency | MinBackgroundQoS and DelayBackgroundDownloadFromHttp / DelayForegroundDownloadFromHttp | 500 KB/s and 60/30 seconds | | Using Connected Cache? | DelayCacheServerFallbackBackground / DelayCacheServerFallbackForeground | 60/30 seconds | ## Monitor Delivery Optimization diff --git a/windows/deployment/do/images/do-setup-improve-efficiencies.png b/windows/deployment/do/images/do-setup-improve-efficiencies.png deleted file mode 100644 index cacd46e6a2e7b7006d911a0ad80f760f72092b51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13944 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