Enabling BranchCache in SCCM Quickly and Easily

Enabling BranchCache in SCCM Quickly and Easily, A few months ago, I posted on Twitter about my success with deploying BranchCache. That post sort of blew up, and somehow I ended up offering to write a blog post about it… I have seen a lot of blogs about setting up BranchCache, however, most of them end up using something outside of the built-in tools that ConfigMgr provides. This post will focus on setting up BranchCache using only the built-in solutions in ConfigMgr. BranchCache is very powerful and can be configured at a much deeper level than what ConfigMgr provides out of the box, however, I didn’t feel that I needed that level of configuration for my environment. I should also mention that this is literally my first blog post, so please, be gentle!

What is BranchCache?

BranchCache is a technology built-in to Windows since Windows 7 and Server 2008, it is a peer-to-peer technology designed to reduce the workload on distribution servers by allowing clients to share content between themselves. BranchCache is a very powerful technology with many options. But what really motivated me to set it up in my environment was how simple it is to turn on in ConfigMgr. Again, BranchCache has many more advanced settings and options than what I mention here. But those are not required to have a BranchCache setup that significantly reduces the load on your distribution points and network infrastructure.

PeerCache?

Before getting into how to configure BranchCache, a few quick words on similar technology, PeerCache. However, PeerCache is an SCCM (not Windows) technology that functions in a similar way to BranchCache. However, there are a few differences:

PeerCache uses the SCCM content store for its content on the client machine

PeerCache content is free to be shared outside the client’s subnet (but won’t cross to different Boundary Groups)

Also, PeerCache requires the client to be reachable by its FQDN

PeerCache works in an SCCM distributed WinPE with little to no extra configuration

PeerCache SuperPeers should be carefully selected to ensure the best results

I am not going to go over the configuration of PeerCache in this article, the targeting of SuperPeers and other options makes it a bit more cumbersome to set up. However, both BranchCache and PeerCache can be set up at the same time and having both enabled can lead to even fewer downloads coming from your distribution points and less traffic over the WAN.

How to enable BranchCache using SCCM

Also, Enabling BranchCache in an SCCM Environment is easy, and consists of 2 main steps: Enabling it on the Distribution Points, and enabling it for clients.

Enabling BranchCache on Distribution Points

First, you will want to enable BranchCache on at least one distribution point. I started with turning it on for just one distribution point in my environment. After seeing good results, I enabled it on the rest of the Distribution Points. To enable the BranchCache setting on a distribution point, you can do the following:

Open up the ConfigMgr Console Head to the “Administration” tab and click “Distribution Points” Right-click and select “Properties” on the Distribution Point where you want BranchCache enabled In the “General” tab, check the box for “Enable and configure BranchCache for this distribution point”. Then click “Apply” and “OK”

Enabling BranchCache on ConfigMgr Clients

Once BranchCache is enabled on at least one Distribution Point, you can turn it on for your ConfigMgr clients.

The easiest way to configure BranchCache for your clients is through Client Device Settings. Because we are configuring BranchCache through Client Settings. The configuration can be rolled out as quickly or slowly as you want. For my environment, I tested a small subset of systems before rolling it out everywhere. Within a week of rolling out BranchCache everywhere, I was seeing huge amounts of data being shared through BranchCache. If you have concerns about congestion from Wi-Fi devices sharing their content. (I received a few questions on this. But have not seen any issues myself.) You can exclude, for example, all laptops from the collection that BranchCache is enabled on.

To turn on BranchCache for your clients, do the following:

Head to the “Administration“ tab in the ConfigMgr Console Open “Client Settings” and either right-click and select “Properties” for the appropriate Client Settings. You want to modify or create a new set of Client Settings. (I started by creating a new set of settings, and eventually moved the BranchCache configuration to the Default Settings) Put a check on the “Client Cache Settings”, then navigate to the “Client Cache Settings” page that appears. Set the following settings on the “Client Cache Settings” page: Configure BranchCache – Yes Enable BranchCache – Yes Maximum BranchCache cache size (percentage of a disk) – 10 is the default, choose whatever amount is good for your environment. If you want other Client settings to manage the cache size. Make sure to set “Configure Client Cache Size to “No” here Click OK to accept these settings Right-click the client settings you just created and select “Deploy” Choose the device collection to deploy these settings to You are done! Now it is time to watch the data savings!

How to tell if BranchCache is working?

The easiest way to check that BranchCache is actually working is right in the ConfigMgr Console! Head to “Monitoring” -> “Distribution Status” -> “Client Data Sources”. From there you can see where clients are downloading from based on Boundary Group. After BranchCache was enabled in my environment. I simply checked this page daily to see how well things were working out.

Note: You may have to turn on the “Client Peer Cache” feature in “Administration” -> “Updates and Servicing” -> “Features” in order for the Client Data Sources dashboard to show up (Thanks to Bert in the comments for pointing this out!).

If you want to ensure the client setting is set on your clients. The following command run in an admin PowerShell session on a client will be able to tell you that:

Get-WmiObject -Namespace root\ccm\policy\machine -class ccm_superpeerclientconfig

—

Andrew Jimenez

Twitter: @AndrewJimenez_

Like this: Like Loading...