Windows 7 和 2008 R2 中的BranchCache

2010/5/11 10:57:06    编辑:软媒 - 笨笨     字体:【

Win7之家www.win7china.com):Windows 7 和 2008 R2 中的BranchCache

BranchCache™ 是Windows® 7和Windows Server® 2008 R2中的一个功能,当用户从分支机构位置访问中央办公室的内容时,它可以降低广域网(WAN)利用率并增强网络应用程序响应能力。当您启动BranchCache后,会将从Web服务器或文件服务器检索到的内容的副本缓存到分支机构中。如果分支机构内的另一个客户端请求相同的内容,则该客户端可以直接从本地分支网络进行下载,而不需要通过使用广域网(WAN)检索该内容。

此白皮书提供 BranchCache 的概述,介绍BranchCache运行的不同模式,并描述配置 BranchCache 的方法。该白皮书还介绍 BranchCache 如何与 Web 服务器和文件服务器一起使用,以及 BranchCache 采取的步骤来确定内容是否为最新的。

要全部查看 Windows 7 资源、文章、演示和指南,请访问 Windows Client TechCenter 上的 Springboard Series for Windows 7

技术概述

当在分支机构中,用户使用利用WAN连接到服务器的网络应用程序时,他们通常体验到性能很差。例如,分支机构的用户打开位于中央办公室上的位于共享文件夹下的大文件可能会花费几秒钟或者甚至几分钟时间。类似地,用户试图通过Web 浏览器查看视频可能必须等待很长时间才能使视频加载。

BranchCache 旨在为分支机构用户提供像直接连接到中央办公室一样的体验而设计。借助 BranchCache,第一个从 Web 服务器或文件服务器(称为内容服务器)下载数据的客户端会在本地分支网络上缓存一个副本。后续的客户端会在由内容服务器对其进行身份验证和授权之后,从分支机构中下载该内容的本地缓存副本。

BranchCache 为了与您现有的网络和安全基础结构一起使用而设计。它支持 IPv4、IPv6 和端对端加密方法,如 SSL 和 IPsec。BranchCache 确保会提供最新版本的内容,且客户端只能在由内容服务器进行授权之后才能从分支机构内检索内容。

您的系统必须满足以下要求才能使用 BranchCache:

  • 客户端计算机必须运行 Windows7,并启用了 BranchCache 功能。
  • Web 服务器和文件服务器必须运行 Windows Server 2008 R2,并启用了 BranchCache 功能。

模式

根据缓存所处的位置,BranchCache 可以在以下两种模式之一下操作:托管缓存模式或分布式缓存模式。托管缓存模式通过在分支机构中并运行 Windows Server 2008 R2 的一台计算机作为主机来执行操作。会为客户端配置主机的完全限定域名,这样客户端才可以在可用时从托管缓存中获取内容。如果在托管缓存中该内容不可用,则通过WAN从内容服务器上获取该内容,然后将其提供给托管缓存,这样后续客户端可以受益于此。

对于用户数量少于50的分支机构,可以采用分布式缓存模式的BranchCache配置。在此模式下,本地 Win7客户端保持该内容的一个副本,其他已授权客户端在请求相同数据时可以使用。这样消除了在分支机构中配备一台服务器的需求。然而,与托管缓存模式不同,此配置仅适合跨单一子网的情形(即,分支机构的每个子网都必须通过使用WAN获取一次该内容)。此外,休眠的客户端或以其他方式从网络断开连接的客户端不能向发送请求的客户端提供任何内容。接下来的部分会更加详细地介绍托管缓存模式和分布式缓存模式。

内容元数据

减少带宽的机制是向客户端发送关于内容的元数据(称为内容元数据),客户端通过该元数据从分支机构获取内容。这会降低 WAN 带宽的使用,因为内容元数据显著小于实际内容。在发送内容元数据之前,服务器会授权客户端。重要的是,内容服务器会将内容元数据发送给每个客户端,以确保客户端始终收到基于最新内容的哈希。

内容被分为几个块。对于每个块都会计算一个哈希(称为块哈希)。对于块的集合也会计算一个哈希(称为段哈希)。内容元数据主要由块哈希和段哈希构成。所使用的哈希算法是SHA 256。压缩率大约为 2000:1。即,元数据的大小大约比原始数据本身小2000倍。

段哈希提供一个发现单位。这可帮助减少为某个给定内容执行的查找的总数(与查找每个块相比)。块哈希是一个下载单位。当客户端需要从托管缓存或另一个客户端获取数据时,它会基于块单位下载内容以保证数据可以快速返回应用程序。

BranchCache 缓存的内容的最小大小为 64 KB。当内容小于 64 KB时,则会通过WAN直接从内容服务器获取数据。

图1 块和哈希

托管缓存模式

托管缓存是在分支机构中启用了BranchCache的服务器,它储存从支持BranchCache服务器下载的数据,是为启用了BranchCache功能的客户端提供下载的中央储存。托管缓存模式的配置会稍后在本文中介绍。

托管缓存模式不需要专用服务器。BranchCache功能可以在运行了Windows Server 2008 R2 的服务器上启用,它位于分支机构中,并且可以运行其它任务。此外,BranchCache可以被设置成为虚拟的负载,可以与该服务器上其它工作负载例如文件和打印等一起运行。

图2 解释了托管缓存模式,并且提供了关于文档缓存和获取过程的简单介绍。

图2 托管缓存模式

更详细地,托管缓存模式使用以下过程来缓存和获取数据:

  1. Windows7 客户端连接到内容服务器并请求一个文件(或文件的一部分),完全和没有使用 BranchCache 时检索文件一样。
  2. 内容服务器对客户端进行身份验证和授权,和没有使用 BranchCache 时一样。如果成功,它会在正常发送数据的相同通道上返回内容元数据。
  3. 客户端使用元数据中的哈希在托管缓存服务器中搜索文件。由于这是所有客户端第一次检索该文件,它尚未在本地网络上进行缓存。因此,客户端直接从内容服务器获取该文件。
  4. 客户端与托管缓存服务器建立安全套接字层 (SSL) 连接,并且它在此加密通道上提供内容标识符。
  5. 托管缓存服务器连接到客户端并获取它尚未缓存的块集。
  6. 第二个 Windows 7 客户端从内容服务器请求相同的文件。内容服务器再次授权该用户并返回内容标识符。
  7. 客户端使用这些标识符从托管缓存服务器请求数据。托管缓存服务器加密数据并将它返回给客户端。(数据是通过使用某个密钥加密的,该密钥是从内容服务器发送的哈希派生的,是作为内容元数据的一部分)
  8. 客户端解密数据,计算从托管缓存接收到的块上的哈希,并确保它与内容服务器提供的块哈希(作为内容元数据的一部分)相同。这可确保内容未被修改。

分布式缓存模式

在分布式缓存模式下,Windows 7客户端缓存使用 WAN 获取到的内容,然后在收到请求后,将该内容直接发送给其它已授权的 Windows 7 客户端。在用户数量少于50的分支机构中,分布式缓存模式最适合。

图3解释了分布式缓存模式,并提供关于缓存和检索过程的简单介绍。对于请求相同内容的其他客户端来说,通过WAN从内容服务器获取内容的第一个客户端就会成为分支机构中该内容的一个源。当第二个客户端请求相同的内容时,它会从内容服务器下载内容元数据。第二个客户端向本地网络发送一个段哈希的请求,以确定任何其他客户端是否已缓存该数据。找到第一个客户端之后,第二个客户端会从本地获取该内容。

图3 分布式缓存模式

此过程与托管缓存模式接下来的过程类似,除了缓存内容的请求被发送到本地网络并且不需要托管缓存服务器之外。

更详细地,分布式缓存模式使用以下过程来缓存和获取数据:

  1. Windows 7 客户端连接到内容服务器并请求一个文件(或文件的一部分),完全和没有使用 BranchCache 时检索文件一样。
  2. 内容服务器对客户端进行身份验证和授权,然后服务器返回一个文件的标识符,客户端用它在本地网络上搜索该文件。因为这是所有的客户端第一次尝试检索该文件,它尚未在本地网络上进行缓存。因此,客户端直接从内容服务器获取该文件并缓存它。
  3. 第二个Windows 7客户端从内容服务器请求相同的文件。内容服务器对用户进行身份验证和授权,与未使用BranchCache时的方式完全相同。如果成功,它会在正常的发送数据的相同通道上返回内容元数据。
  4. 第二个客户端通过使用Web服务发现(WS-Discovery)多播协议在本地网络上发送一个请求来请求所需的文件。有关WS_Discovery的详细信息,请参阅白皮书“Web 服务动态发现”。
  5. 先前已缓存该文件的客户端将该文件发送给请求客户端。数据是通过使用某个密钥加密的,该密钥是从内容服务器发送的哈希派生的,是作为内容元数据的一部分。
  6. 客户端解密数据,计算从第一个客户端接收到的块哈希,并确保它与内容服务器提供的块哈希(作为内容元数据的一部分)相同,这可确保内容未被修改。

通过使用分布式缓存模式,IT专业人员可以在分支机构中以最少的硬件部署利用BranchCache。然而,如果分支机构已部署其他基础结构(例如,服务器已运行工作负载,如文件和打印),则使用托管缓存模式可能是更有益的,原因如下:

  • 提高缓存的可用性。托管缓存模式提高了缓存效率是因为即使最初请求该数据的客户端处于脱机状态,该内容仍然可用。
  • 缓存更有利于整个分支机构。分布式缓存模式在单一子网上操作。如果使用分布式缓存模式的分支机构具有多个子网,则每个子网上的客户端需要单独下载每个请求的文件的一个副本。使用托管缓存模式,分支机构中的所有客户端都可以访问单一缓存,即使它们处于不同的子网。