---
# System prepended metadata

title: BranchCache
tags: [託管式快取模式, BranchCache, hosted cache mode, 分散式快取模式, distributed cache mode]

---

# BranchCache
*  Microsoft 提供的一種功能，不須額外的基礎架構，啟用開功能是設計來提高分支機構用戶訪問中央數據中心或雲中內容的速度和效率。BranchCache 可以與 DFS（Distributed File System）結合使用，以進一步優化跨分支機構的檔案訪問和管理。
*  當用戶端要求資料時，BranchCache從伺服器取出，因BranchCache是被動快取(passive cache)，不增加WAN的使用，他的快取只讀取請求。不會在使用者除存檔案時攔截。
## 較適用的情境([參考微軟官方文件](https://learn.microsoft.com/zh-tw/windows-server/networking/branchcache/branchcache))
* 組織是擁有兩個以上的實體位置和從分公司連線到總公司的廣域網路 (WAN)。
* 已部署雲端技術和員工用以存取在遠端位置的資料與應用程式的 WAN 連線。
* 想降低分公司與總公司之間的網路流量，以使 WAN 頻寬使用量達到最佳狀況。
* 用戶端電腦均是Windows 7以上的微軟作業系統。
## 利用技術
1. 內容快取：BranchCache 會在分支機構的本地伺服器或用戶電腦上快取從中央伺服器獲取的內容，以減少重複的網路流量。
2. 兩種模式：
    * 分散式快取模式(distributed cache mode)：適用於沒有分支機構伺服器的小型辦公室或沒有使用AD服務。用戶電腦之間共享緩存內容。
    * 託管式快取模式(hosted cache mode)：適用於有分支機構伺服器的大型辦公室。分支機構伺服器集中緩存內容，供所有用戶訪問。
## 用戶端如何使用託管式和分散式BranchCache抓取資料
* 當BranchCache在用戶端和伺服器端均啟用，且用戶端電腦正使用HTTP、HTTPS或SMB通訊協定時，用戶端電腦會執行下列處理程序抓取資料：
    1. 用戶端連線到總公司的內容伺服器，並請求內容，該方式類似於未使用BranchCache抓取內容。
    2. 總公司的內容伺服器驗證使用者、驗證使用者存取資料的授權。
    3. 總公司的內容伺服器回送識別碼(identifiers)或請求內容的雜湊(hashs)到用戶端電腦，內容伺服器透過相同連線送出資料，內容將會使用此連線傳送。
    4. 抓取識別碼，用戶端電腦做下列：
        * 使用分散式快取(distributed cache mode)：在本機子網路多點傳送(multicast)尋找其他已經下載內容的用戶端電腦。
        * 使用託管式快取(hosted cache mode)：用戶端電腦搜尋被設定成託管式快取的內容。
    6. 如果內容在分公司是可用，不是在一台或多台用戶就是在託管式快取，用戶端抓取從分公司抓取資料，用戶端也要確定資料被更新和沒有竄改與損毀。
    7. 如果內容不在分公司，用戶端電腦透過WAN連結伺服器抓取，用戶端電腦將內容變成在本機網路讓其他請求的用戶端電腦可用(分散式快取模式)或送到託管式快取，可讓其他用戶端電腦可用。
## 主機伺服器端的BranchCache設定
1. 安裝BranchCache功能和BranchCache for Network 角色服務。
2. 使用Powershell `Enable-BCHostServer-RegisterSCP` 啟動主機伺服器，再搭配 `Get-BCStatus` 查看組態是否設定啟動成功。
![image](https://hackmd.io/_uploads/SJTO0IF_C.png)
4. 設定BranchCache的雜湊發佈(hash Publication)。
![image](https://hackmd.io/_uploads/ryTjAIKuR.png)
6. 建立起用BranchCache的檔案共用。
## 用戶端的BranchCache設定
1. 啟用BranchCache。
    * 網域型的網路與電腦以及採用託管式快取模式(hosted cache mode)的設定，要透過群組原則(Group Policy)啟用BranchCache，開啟下列2項群組原則：
        * Turn on BranchCache。
        * Enable Automatic Hosted Cache Discovery by Service Connection Point。
![image](https://hackmd.io/_uploads/B19TkvtO0.png)
> Configuare BranchCache for network files該項啟用，是為了練習，模擬分公司存取，實際在應用上不太需要此設定。
2. 啟用分散式快取模式(distributed cache mode)或託管式快取模式(hosted cache mode)。
1. 用戶端防火牆啟用Branchcache通訊協定：
    * 分散式快取模式(distributed cache mode)：設定傳入規則(incoming rules)
        * BranchCache-Content Retrieval(使用HTTP，TCP port 80)。
        * BranchCache-Peer Discovery(使用WS-Discovery，UDP port 3702)，此協定是任何用戶端可使用這個服務多點傳送(multicast)通訊協定，在本機搜尋已經下載和快取內容的電腦。
![image](https://hackmd.io/_uploads/rklEkPYOR.png)

    * 託管式快取模式(hosted cache mode)：設定傳入規則(incoming rules)
        * BranchCache-Content Retrieval(使用HTTP，TCP port 80)。
1. 利用CMD命令提示字元 `netsh branchcache show status all`，驗證BranchCache是啟用且狀態是Running，代表群組原則已被套用。
![image](https://hackmd.io/_uploads/BJwsewF_C.png)
## 優點
* 允許延展：可允許一個地點超過一台的託管式伺服器(hosted cache server)。
* 基礎資料庫：使用來自Exchange Server的可延伸儲存引擎(Extensibile Storage Engine，ESE)資料庫技術。
* 每一個分公司不需要群組原則物件(Group Policy Object，GPO)。
* 減少網路帶寬使用：通過本地緩存，減少跨廣域網（WAN）重複傳輸相同內容的流量。
* 提高訪問速度與效能：不需要額外的基礎架構下，用戶可以更快速地存取常用的檔案，減少等待時間，減少廣域網路的負荷，提升整體網路效能。
* 可在網路安全技術下運作，包含安全通訊端層(Source Sockets Layer，SSL)、SMB簽署和點對點IPsec，還能將內容加密。
* 改善下列通訊協定的應用程式：
    * HTTP&HTTPS。
    * SMB（Server Message Block），包含簽署的SMB流量通訊協定。
        * SMB是一種網路文件共享協議，由 Microsoft 開發，用於允許應用程序或用戶在網路上的電腦之間訪問文件、列印和其他資源。
    * 背景智慧型傳輸服務BITS(Background Intelligent Transfer Service)。
        * 是Windows元件，使用閒置的網路頻寬從伺服器散佈內容到用戶端。
## 教學影片補充
* Part 1：Install and Configure a Main Office BranchCache File Server in Windows Server 2016
{%youtube zq11EoNnZUA %}
* Part 2：Configuring Windows BranchCache Group Policy for Client Firewall in Windows Server 2016
{%youtube UzjCFhGJ34M %}
* Part 3：
{%youtube T40Hs-HpVlg %}
* Part 4：Moving BranchCache Folder Location in Windows Server 2016
{%youtube WdW-450cmDw %}
* Part 5：Change BranchCache Drive Percentage in Windows Server 2016
{%youtube 0zF6htzh-n8 %}
* Part 6：Configure BranchCache Client PCs for Hosted Mode in Windows Server 2016
    * 參考課本實驗B：任務6-16、6-25(設定用戶端電腦使用託管快取模式的BranchCache)
{%youtube UO-BClW3N7I %}
* Part 7：Configure BranchCache Client PCs for Distributed Mode in Windows Server 2016
{%youtube GpGi9XPDnYI %}
* [微軟官方影片：深入探討 BranchCache](https://learn.microsoft.com/zh-tw/shows/ignite-2016/brk4022)
### 專有名詞補充
* Windows Server LAMAN Server：一種可以在本地區域網絡（LAN）內提供多種網絡服務和應用的服務器系統。 
* Register-SCP 是一個用於在 Active Directory 中註冊服務連接點（Service Connection Point，SCP）的 PowerShell Cmdlet。服務連接點是一個 Active Directory 物件，用於向網絡中的其他計算機宣告某個服務的位置和相關信息。這對於應用程序和服務自動發現非常有用。