Peering & Content Basics

This page will cover the basics of how DeployR creates WIMs for it's content items and leverages BranchCache to enable peering of the content

Overview

DeployR deployments by default will leverage Peer to Peer technology based on BranchCache using a 2Pint built alternate content provider, BranchCache Alternate Content Provider, or BCACP.

All content coming from the DeployR server will by default leverage BCACP. No additional setup is required for you to take advantage of this powerful feature.

All content items uploaded into DeployR will be converted into a WIM file for improved deployment and P2P.

The one thing that was required for this to work was the prerequisite of enabling BranchCache on the DeployR server.

Install-WindowsFeature BranchCache

Content as WIMs (vs Zip or Uncompressed)

Why did 2Pint decide to use the WIM format for DeployR Content?

Windows Imaging Format (WIM) offers several advantages over ZIP archives or uncompressed files, particularly in enterprise scenarios involving DeployR, the 2Pint Software OSD Tool, for software deployments. These benefits stem from WIM's native integration with Windows, its file-based structure (which supports single-instancing for deduplication). Below is an outline the key benefits of WIM over other formats.

  1. Superior Integration with BranchCache for Network Efficiency BranchCache identifies and caches identical content blocks across files, enabling peers to share data and minimize downloads from distribution points. WIM excels here due to its compression compatibility and single-instancing (storing duplicate files only once within the archive), which creates more identifiable common blocks than ZIP or uncompressed formats.

Aspect
WIM
ZIP

Deduplication Efficiency

High: Single-instancing and LZX compression yield excellent block matching, reducing redundant data transfers by up to 50-70% in tests with driver packages.

Moderate: DEFLATE compression works but lacks single-instancing, leading to poorer block reuse across files.

Poor: No compression means larger files with no inherent block optimization, increasing WAN usage.

P2P (Peer-to-Peer) Performance

Optimized: Better hash-based chunking aligns with BranchCache's content identification, speeding up OSD (OS Deployment) in remote sites.

Adequate: Supports BranchCache but with lower efficiency for large, similar payloads.

Minimal: Full file transfers without caching benefits, causing high latency in branch offices.

Example Impact

In DeployR OSD for drivers, WIM reduces download sizes via BranchCache more effectively than ZIP.

ZIP is viable but requires full extraction, negating some P2P gains during deployment.

No savings; ideal for tiny payloads only.

This makes WIM ideal for deploying large applications (e.g., 10-30 GB installs) in bandwidth-constrained environments, as seen in real-world DeployR setups.

  1. Reduced Disk Space and Client Cache Usage in Deployments WIM files can be mounted directly without full extraction, allowing installations to read files on-the-fly. This contrasts with ZIP (which requires unpacking to a temp folder) and uncompressed files (which consume full space immediately).

Aspect
WIM
ZIP
Uncompressed

Cache/Storage Savings

Significant: No extraction needed.

Moderate: Compresses well but extraction doubles space needs temporarily

None: Full size from the start, bloating client caches.

Deployment Speed

Faster: Mounting takes seconds (e.g., 20s for 13 GB), enabling quick installs without I/O overhead from small-file copies.

Slower: Extraction adds time and disk thrashing for large apps.

Fastest access but slowest transfer due to size.

Example Impact

In DeployR, WIM avoids expanding content, saving time and disk space.

Useful for simple archiving but inefficient for repeated large deploys.

Only suitable for small, non-repetitive files

For software deployments with very large build & capture WIMs that might include large applications like Autodesk or LabVIEW, WIM's mount-only approach accelerates task sequences OSD build time.

.GENCI - Branch Cache Hash File

As you create content items and they are retrieved by the DeployR Task Sequence deployments, the DeployR server will have the BranchCache component create the hash file required for BC. This file will live with the content item with the same name, but append the .genci onto the name. Each time the content item is modified, this file will be regenerated to accomidate the change in content.

To confirm the file has been created for a content item, ensure a deployment has run at least once that calls for that content item, then look in the content item folder for the .genci file.

To find where the content item lives on the DeployR server, find the content item in the dashboard, then find the "Relative path" for the content. Note that the URL for the content item matches the path, just a handy tip.

Wherever the DeployR content location path was configured, that's where you will then find it. This example, the DeployR content location is set to D:\DeployRContentItems, the default is in ProgramData.

When you add those two information chunks together, you wll find the content item in explorer.

ProTip: Having 7zip is an easy way to open the WIM file and poke around. Do NOT modify the WIM file directly!

Task Sequence Demo

When the Task Sequence is requesting content, it will first show calculating, as it checks for peers and reads the hash.

Once that stage is complete, it will start the download with BCACP and the P2P % will be shown

In the Log, you will see the details once it's complete:

Disable P2P Option

Why Disable P2P?

There are times when disabling P2P might be useful. Examples of when disabling P2P might be advantageous.

  • Lab, where everything is in HyperV and very fast connections between DeployR Server and all test machines.

  • OSD Build Rooms with dedicated DeployR server. Similar to above, if you have a Build Center, and all devices you're deploying the OS from DeployR server have a fast connection and the DeployR server is sized appropriately to handle high volume (Fast I/O Disk & Fast Network).

How to Disable P2P?

Disabling the P2P option is done at the task sequence level by setting a task sequence variable.

PowerShell Script:

${TSEnv:Peering} = false

Last updated