NOTE: This guide has been replaced by this post: Setup Peer Cache in ConfigMgr Current Branch
Starting with ConfigMgr Current Branch v1610, Microsoft introduced a new peer to peer technology, the so called Peer Cache. This feature replaces (and extends) the WinPE Peer caching feature that was introduced with ConfigMgr v1511.
Note #1: Even though quite out of date, Microsoft MVP Kent Agerlund also have a nice guide on WinPE Peer Caching, which provides some additional tips and tricks, and also compares it against 3rd party solutions from 1E, Adaptiva, and 2PintSoftware. Highly recommended to read.
Note #2: 2Pint Software also have a nice post on the first release of the Peer Cache feature here: http://2pintsoftware.com/peer-cache-in-configmgr-current-branch-first-impressions/
Peer Caching for OS Deployment
When Peer Caching is used during OS Deployment, the task sequence is going to look for content (OS Images, drivers and legacy packages only) from other peers (called peer cache source), instead of downloading the content from a distribution point. You enable Peer Cache for OSD by setting the SMSTSPeerDownload variable to True. For deployment of normal packages (applications, legacy packages, software updates etc.), you don't need to set this variable.
The recommended way to set up Peer Cache is by enabling at least a few clients on each site to become a peer cache source (host), and then you pre-cache content on these machines by using a task sequence that just downloads the packages to these clients. Don't enable it on all clients, that will not work well.
Guide – Configuring the Peer Cache Sources (Hosts)
In the section you configure a few clients to act as peer cache sources (hosts), and you distribute a few packages to them, so that when other clients on the same site needs the content, it's already there. This is typically named as pre-caching content. In this example, I'm using configuring PC0001 and PC0002, which are two Windows 10 v1607 machines, as peer cache sources.
1. Create a device collection named Peer Cache Sources, and add PC0001 and PC0002 as members.
2. In your Client Settings, create a custom device setting and name it Peer Cache Sources.
3. Select the Client Cache Settings setting, and set Enable Configuration Manager Client in full OS to share content to Yes.
4. Then deploy the Peer Cache Sources client setting to the Peer Cache Sources collection.
5. Grant the Network Access Account, Full Control to the ConfigMgr client cache folder (C:Windowsccmcache) on each peer cache source (PC0001 and PC0002 in this example).
Note: Starting with ConfigMgr Current Branch v1710, the Network access account is only used when packages are downloaded in WinPE.
Pre-cache content to Peer Cache Sources using a task sequence
To make sure the Peer Cache sources have content in their cache available for other clients, you use a task sequence to pre-cache that content.
1. Create a custom task sequence, and name it Windows 10 Enterprise x64 v1709 Pre-Cache.
2. Using the Download Package Content feature, add all packages (again, OS Images, drivers and legacy packages only) that your Windows 10 deployment task sequence is using.
3. Deploy the Windows 10 Enterprise x64 v1709 Pre-Cache task sequence to your Peer Cache Sources collection, and wait until the deployment completes.
Configuring the Peer Cache Clients
Once you have a few machines having the content on them already, the peer cache sources, you can start deploying new machines in your site. To configure clients to request content from local peers instead of from the distribution point, you simply configure two variable on the collections where you have your clients. In this example I'm deploying new machines, via the unknown computer support in ConfigMgr, so I'm adding the variables to the All Unknown Computers collection.
1. On the All Unknown Computers collection, add the following two collection variables, and set them to True.
Note #1: The SMSTSPeerDownload variable configures the client to use a local peer when downloading content, and the SMSTSPreserveContent variable configures the client to keep the content in the cache and have it available for sharing with other clients.
Note #2: If settings a custom port for Peer Cache, you also need to set the SMSTSPeerRequestPort variable.
2. Configure the Client Cache size to 40 GB (or so).
Written by Johan Arwidmark