I recently ran across a very short blog post by John Timney (blog) regarding SharePoint and BranchCache. He basically mentioned that SharePoint 2010 supports it and it would reduce WAN traffic (bandwidth costs) in global SharePoint farms. I decided to dig deeper and what I found really excited.
BranchCache is implemented at the protocol stack level (HTTP in the case of SharePoint) and therefore will work for any version of SharePoint.
So whats needed?
- SharePoint Web Servers must be running on Windows Server 2008 R2
- Clients must be running on WIndows 7 Enterprise or higher
What does it do and how does it work?
Over-simplified: BranchCache will use a portion (5% default) of a client computers hard drive to store requested files (or chunks of files). So, second requests for the same file will use this locally cached copy. That eliminates the need to re-download this large file over the WAN.
BranchCache operates in two modes:
- Distributed: Each client is a cache for all other clients. This is like a peer to peer network.
- Hosted: A server (which must be Windows Server 2008 R2 Enterprise) resides at the remote office and holds the cache.
Iâ€™ll be using the Distributed BranchCache mode for my example. Client A (in Los Angeles) requests a 20 MB PowerPoint file (call it WhySharePoint2010.pptx) from the central SharePoint Server in New York. Client A asks (via a multicast shout) if anyone locally has the file, they donâ€™t so its downloaded from the server. Later, Client B requests the same file and asks if anyone locally has the file. Since Client A downloaded it earlier, its available to Client B. However, Client B still needs to contact the server to get the encryption key. This ensures that Client B is authenticated and is authorized to view this file.
Although Client B is still contacting the server (for content identifiers, hashes, encryption key), the actual bulk of the content is being served locally. In almost all cases, youâ€™ll have much more internal LAN bandwidth (100 Mbps or 1 Gbps) than you do WAN bandwidth.
In this simple example, weâ€™re talking about 2 clients. Generally, youâ€™ll have many more (say 50). Each of these clients would hold chunks of the data, especially for large files so that one client does not get over burdened serving up this file. BranchCache uses parallel downloading for large files (like a swarm) which again, would really speed up receiving a file.
Letâ€™s talk a bit more about security.
If communication is encrypted (HTTPS), data is encrypted; using or not using BranchCache makes no difference here.
Data sent between clients using BranchCache is encrypted, regardless of the original communications method. The receiving client would need the server encryption key which it can only get if its authenticated and authorized to view that file.
Data stored in client caches isnâ€™t encrypted but it is hashed. It would be difficult to re-assemble the hashes into usable data. But for better security, use drive encryption like BitLocker or EFS.
So, how would you set this up?
On the Windows Server, enable BranchCache Feature through Server Manager. Youâ€™ll want to enable BranchCache on all SharePoint Web Servers (Web Front Ends).
If you have more than one Web Server, setup a BranchCache Encryption Key Passphrase:
netsh branchcache set key passphrase=â€œMY_PASSPHRASEâ€
On the clients, enable BranchCache using GPO.
Or use the command line:netsh branchcache set service mode=DISTRIBUTED
As you can see, setting up and using BranchCache is very easy. As with any technology, perform due diligence, test it out in your environment and architect it properly from the start. BranchCache is a powerful, cost-saving technology that helps improve user experience. I urge readers to consider it in your SharePoint deployment.
Teched 2010 slides: Slides