首页> 中国专利> 在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化

在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化

摘要

一种数据差异化技术使得来自于服务器的对客户端的请求的响应由与请求的资源的先前版本的数据差异化构成。为此,设置数据差异化感知进程,一个在源服务器处或附近(在发送端)并且另一个在接近于终端用户(在接收端)的边缘处,并且这些进程维护对象字典。数据差异化感知进程每个都运行压缩和差异化引擎。每当请求的对象流过发送端时,引擎将对象数据替换为到对象字典中的指针。在连接的接收端上,当数据到达时,引擎利用相同的对象字典重新集合数据。该方法用于相同的主机/路径之内的版本变化,利用数据差异化感知进程压缩从发送对等方到接收对等方发送的数据。

著录项

  • 公开/公告号CN104081739A

    专利类型发明专利

  • 公开/公告日2014-10-01

    原文格式PDF

  • 申请/专利权人 阿卡麦科技公司;

    申请/专利号CN201280068462.6

  • 发明设计人 C·E·盖罗;

    申请日2012-12-22

  • 分类号H04L29/02;H04L29/12;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人李晓芳

  • 地址 美国马萨诸塞

  • 入库时间 2023-12-17 02:34:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-02

    授权

    授权

  • 2015-01-07

    实质审查的生效 IPC(主分类):H04L29/02 申请日:20121222

    实质审查的生效

  • 2014-10-01

    公开

    公开

说明书

本申请基于并且要求2011年12月23日提出的序列号 No.61/579,672和2012年12月22日提出的序列号No.13/726,036的优 先权。

技术领域

本申请一般涉及通过网络的数据通信。

背景技术

分布式计算机系统在现有技术中是公知的。一个此类分布式计算 机系统是由服务提供者操作并管理的“内容传递网络”或CDN。服务 提供者通常代表使用服务提供者的共享基础设施的第三方(客户)提 供内容传递服务。此类型的分布式系统有时被称为“覆盖网络”并且 通常是指由网络或多个网络与软件、系统、协议和技术一起链接的独 立计算机的集合,所述技术被设计以便于各种服务,诸如内容传递、 网络应用加速、或外包起源站点基础设施的其它支持。CDN服务提供 者通常经由数字财产(诸如网站)提供服务传递,数字财产被提供在 客户入口中并且然后被布置到网络。

数据差异化是利用资源的共享先前实例的公知的技术和方法,也 称为服务器与客户端之间的在压缩术语中的共享字典之内的数据版 本;所述进程通过仅仅发送自那些先前实例以来已经发生的差异或变 化而工作。数据差异化涉及压缩,但是稍微有区别的概念。具体地, 直观地,差异(“diff”)是一种压缩形式。只要接收者具有与发送 者相同的初始文件,该发送者就可以给接收者diff而不是整个新文件。 diff实际上说明如何从旧文件创建新文件。它通常远小于整个新文件 并且因此是一种压缩形式。文档的第一版本与同一文档的第二版本之 间的diff是数据差异;数据差异是利用文档的第一版本作为预设字典 的文档的第二版本的压缩的结果。

许多HTTP(超文本传输协议)请求使得检索请求的客户端已经 对其具有高速缓存条目的资源的仅仅稍微修改的实例。例如,源服务 器可以发布用于列在S&P 500中的每个公司的股票行情的页面。随 着时间的推移和行情变化,整个页面仍然非常类似。公司的名称和它 们的订单符号、CSS、图像、和一般的HTML格式化可能仍然从版本 到版本未改变。但是,当客户端请求更新的页时,它将全面结束下载 内容,甚至上述讨论到的没有不同于客户端已经在先前版本中下载的 数据的那些项。因为这样的修改更新可以是频繁的并且修改通常远小 于实际实体,所以提出用于HTTP的“δ编码”的概念-通过其发送 实体将传送变化的最小描述、而不是资源的整个新实例。在互联网请 求注解(RFC)3229中描述本构思,其是使得网络带宽的利用更有效 的方式。

每个RFC 3229的δ编码并不解决出现在分布式覆盖网络的背景 中的所有问题,诸如内容传递网络。最大的关注是该方法基于进行差 异化的源服务器。但是,在覆盖网络情况下,服务提供者期望为客户 提供服务因此它们不必添加新的软件到它们的源服务器。实际上,许 多客户将具有禁止它们添加软件或相反使得添加软件困难的厂家解 决方案。因此,覆盖提供者将很可能不得不在位于源服务器前面的另 一个服务器中进行差异化,主要因为提供者不具有呈现在盘或存储器 内的并且针对其可能需要计算数据差异化的所有新版本数据。在此背 景中,覆盖网络提供者通过有线接收数据并且必须等待比盘读取或存 储器取装更长的数量级以全部获得它。在符合RFC 3229的解决方案 中,没有办法对块开始差异进程并且然后将那些发送到客户端同时从 源中读取新的源块。另外,RFC 3229依赖于e标签和“最后一次修 改的时间”以参考先前版本文档。

对此问题的另一个方法由叫做Google SDCH的技术提供,其是 另一个HTTP数据差异机制。它与RFC 3229之间的主要区别是SDCH 允许字典是除了内容的先前版本的某些东西。它也允许字典在多种资 源之间共享。例如,如果存在三个HTML文件,每个包含常见短语 的集合,则SDCH方法能够创建然后可以由每个HTML文件参考的 单个字典。用户代理分别地下载字典(D);每当它需要HTML文件 中的一个时,它指示服务器“给我利用字典D压缩的HTML文件X”。 服务器然后发送已压缩文件并且客户端利用共享的字典将它解压缩。 虽然此方法是高效的,但是没有容易的方式来计算共享的字典。

虽然这些公知的差异化方法提供有用的优点,但是还需要提供增 强的技术以用于覆盖网络的背景中的数据差异化。

发明内容

互联网基础设施传递平台(例如,由服务提供者操作的)提供覆 盖网络。覆盖网络包括可能体验延迟的通信支路之间的端点。一个端 点(“发送”对等方)通常与源服务器基础设施相关联或接近源服务 器基础设施安置。另一个端点(“接收”对等方)通常位于或接近终 端用户接入网络。接收对等方通常是边缘服务器。根据此公开的数据 差异化技术使得对客户端的请求的来自于服务器的响应(全部或部 分)由与服务器和客户端二者均已经高速缓存的请求的资源的先前版 本的数据差异组成。为此,并且根据此公开,设置一对数据差异化感 知进程,一个在源服务器上或附近(在发送端)并且另一个在最接近 于终端用户(在接收端上)的边缘处,并且这些进程维护那两个相对 端之间的对象字典。数据差异化感知进程每个都运行压缩和差异化引 擎。每当请求的对象流过发送端(从服务器到客户端)时,引擎将对 象数据替换为到对象字典中的指针。在连接的另一(接收)端,当数 据到达时,那里的引擎利用相同的对象字典重新集合数据。

该方法用于相同的主机/路径之内的版本变化。在客户端(接收) 端上的对象字典包括对应于它已经看见的对象的每个版本的指纹。在 服务器(发送)端上的对象字典包括对应于它已经传递的对象的每个 版本的指纹。在服务器端上的字典可以具有不呈现在客户端字典中的 指纹,反之亦然。这里描述的技术在至少一些指纹被共享并且在服务 器与客户端之间共用时起作用。当对于新版本的客户端请求被接收时 (并且需要被向服务器端转发以用于处理),与客户端相关联的数据 差异化感知进程在转发请求中包括它的每一个指纹(对应于它具有的 版本)。然后,当在服务器端上的数据差异化感知进程接收那些指纹 时,它检查它的字典以确定被发送的哪一个指纹可能是请求的匹配。 通常,“最新”版本将被选择,基于最新的版本可能具有最小数目的 变化(与先前版本相比)的假设。但是,最新的版本的使用不是限制。 在服务器上的数据差异化感知进程然后从源中取得请求的新版本,执 行数据差异化(请求的新版本相对于作为匹配选择的版本)以生成差 异(DIFF)。在服务器上的数据差异化感知进程生成用于请求的新版 本的指纹并且将它存储在它的字典中(关联数据并且连同数据本身)。 在发送端上的数据差异化感知进程返回具有压缩的数据的(DIFF)响 应数据流,以及包括被使用(从客户端接收的那些中的初始选择当中) 以进行差异化的版本的指纹的标识的响应报头。在接收端的数据差异 化感知进程然后使用指纹以对对应的版本(其已经呈现在客户端上) 应用DIFF以重新创建请求的版本,其然后被返回到请求的客户端。 在接收端上的数据差异化感知进程也生成请求的新版本的指纹并且 将新的指纹存储在它自己的字典中(与数据关联并且连同与数据本 身)以使得字典仍然同步。

上文已经概述了本主题的一些更多相关特征。这些特征应当被解 释为仅仅说明性的。可以通过以不同的方式应用公开的主题或通过修 改将描述的主题来获得许多其它有利的结果。

附图说明

为了更完全地理解本主题和它的优点,现在结合附图参考以下描 述,其中:

图1是示出了配置为内容传递网络(CDN)的公知的分布式计 算机系统的方框图;

图2是代表性的CDN边缘机器配置;

图3是用于实施此公开的数据差异化方法的代表性的广域网 (WAN)代表性架构;

图4是在覆盖网络和用户私有网络之内实施的更具体的实施例;

图5是根据此公开的差异协议的diff块的代表性格式;以及

图6是根据该协议的指纹块的代表性格式。

具体实施方式

图1示出了由这里的技术扩展以提供单个基于HTTP的平台的 公知的分布式计算机系统(如下面描述)。

在公知的系统中,诸如图1所示,分布式计算机系统100被配置 为CDN并且被认为具有102a-n个围绕着互联网分布的机器的集合。 通常,大部分机器是接近互联网的边缘设置的服务器,即,在终端用 户接入网络处或相邻终端用户接入网络。网络操作命令中心(NOCC) 104管理系统中各个机器的操作。诸如网站106之类的第三方站点将 传递内容(例如,HTML、嵌入的页对象、流媒体、软件下载、等等) 卸载到分布式计算机系统100,并且具体地到“边缘”服务器。通常, 内容提供者通过(例如,由DNS CNAME)将给定内容提供者域或子 域化名为由服务提供者的权威性域名服务管理的域来卸载它们的内 容传递。期望内容的终端用户被定向到分布式计算机系统以更可靠并 且高效地获得该内容。尽管未详细地示出,但是分布式计算机系统也 可以包括其它基础设施,诸如分布式数据收集系统108,其收集从边 缘服务器使用和其它数据,跨范围或范围集合聚集数据,并且将数据 传递到其它后端系统110、112、114和116以便于监控、记录、提醒、 计费、管理和其它操作的和行政功能。分布式网络代理118监控网络 以及服务器负荷并提供网络、业务和负荷数据到DNS查询进程机制 115,其对于由CDN管理的内容域是权威性的。分布式数据传输机制 120可以用来将控制信息(例如,管理内容、便于负荷均衡的元数据, 等等)分布到边缘服务器。

如图2所示,给定机器200包括运行支持一个或多个应用206a-n 的操作系统内核(诸如Linux或变型)204的商品硬件(例如,Intel 奔腾处理器)202。为了便于内容传递服务,例如,给定机器通常运 行应用的集合,诸如HTTP代理207(有时被称为“全球主机”或“克 隆”进程)、名称服务器208、本地监控进程210、分布式数据收集 进程212,等等。对于流媒体,机器也可以根据支持的媒体格式,包 括一个或多个媒体服务器,诸如Windows媒体服务器(WMS)或Flash 服务器。

CDN边缘服务器被配置为提供一个或多个扩展的内容传递特 征,优选在域特定、客户特定的基础上,优选利用使用配置系统分布 给边缘服务器的配置文件。给定配置文件优选是基于XML的并且包 括一组便于一个或多个高级内容进程特征的内容进程规则和指令。配 置文件可以经由数据传送机制被传递到CDN边缘服务器。美国专利 No.7,111,057示出了用于传递并管理边缘服务器内容控制信息的有用 基础设施,并且这个和其它边缘服务器控制信息可以由CDN服务提 供者本身、或(经由外联网等)操作源服务器的内容提供者客户提供。

元数据可配置的覆盖网网络代理(诸如图2中的代理207)这里 有时被称为全局主机或Ghost进程。

CDN可以包括存储子系统,诸如在美国专利No.7,472,178中描 述的,其公开通过引用合并于此。

CDN也可以操作服务器高速缓存分层结构以提供客户内容的中 间高速缓存;在美国专利No.7,376,716中描述了一个这样的高速缓存 分层结构子系统,其公开被通过引用合并于此。

CDN可以在客户端浏览器、边缘服务器和用户源服务器当中以 在美国公开No.20040093419中描述的方式提供安全的内容传递。在 其中描述的安全的内容传递一方面在客户端与边缘服务器进程之间、 另一方面在边缘服务器进程与源服务器进程之间实施基于SSL的链 路。这使得SSL保护的网页和/或它的组件被经由边缘服务器传递。

作为覆盖,CDN资源可以用来便于企业数据中心(其可以被秘 密地管理)与第三方软件作为服务(SaaS)提供者之间的广域网 (WAN)加速服务。

在典型操作中,内容提供者识别内容提供者域或它期望由CDN 服务的子域。CDN服务提供者关联(例如,经由规范名称、或CNAME) 内容提供者域与边缘网络(CDN)主机名,并且CDN提供者然后向 内容提供者提供该边缘网络主机名。当向内容提供者域或子域的DNS 查询在内容提供者的域名服务器处被接收时,那些服务器通过返回边 缘网络主机名进行响应。边缘网络主机名指向CDN,并且边缘网络主 机名然后经由CDN名服务被解析。所以,CDN名称服务返回一个或 多个IP地址。进行请求的客户端浏览器然后对与IP地址相关联的边 缘服务器做出内容请求(例如,经由HTTP或HTTPS)。请求包括 具有源内容提供者域或子域的主机报头。在接收到具有主机报头的请 求时,边缘服务器检查它的配置文件以确定请求的内容域或子域是否 实际上由CDN进程。如果是的话,边缘服务器将它的内容进程规则 和指令应用于在配置中指定的域或子域。该条内容进程规则和指令可 以位于基于XML的“元数据”配置文件内。

作为附加背景,在美国专利No.6,820,133和7,660,296中描述的 技术可以用来便于诸如图1所示的覆盖网络中的边缘与转发代理之间 的分组传递。

利用恢复压缩和差异化引擎的基于主机/路径的重复数据删除

现在图3显示用于实施此公开的方法的代表性结构。为简单起 见,客户端300被显示为与边缘Ghost进程302交互,其随后与接近 租用源306安置的转发Ghost进程304进行通信(通常通过广域网 (WAN))。如将描述的,每个Ghost进程具有与其关联的重复数 据删除引擎308、用于字典的关联的数据存储器、和其它有关的进程。 总体来说,这些元素有时被称为重复数据删除(或“重复数据删除”) 模块。Ghost http代理通过接口与重复数据删除模块进行通信。在可 替换实施例中,重复数据删除功能被自然地实施在GHost中。一般地 说,GHost可以是任何可配置的http代理。

图4示出更具体的实施例。在此情况中,终端用户400已经经由 覆盖网络DNS以常见的方式与边缘服务器机器402相关联。“终端 用户”是运行在客户端机器(例如,桌上型计算机、膝上型、移动设 备、平板计算机、等)上的网络浏览器用户代理或运行在此类设备上 的移动式应用(应用)。“终端用户”经由HTTP或HTTPS与边缘 服务器机器通信,并且此类通信可以遍历其它网络、系统、和设备。 边缘服务器机器运行由覆盖网络提供者管理的元数据可配置的网络 代理进程(GHost)404,和被称为Arcade 406(用于“恢复压缩和差 异化引擎”)的关联的重复数据删除进程。如将描述的,Arcade进程 执行用于相同的主机与路径(URI)内的类似文件(版本变化)的数 据压缩。边缘服务器机器402可以是对一个或多个“父”节点的“子”, 诸如运行在另一个覆盖服务器设备(未示出)上的父Ghost进程408。 在此示例中,Ghost进程408是“穿越”并且不提供差异化功能;它 可以被省略。

这里使用“Arcade”简称仅仅用于示范性目的,并且不应该被 理解为指代(或限制于)任何特定产品或服务。

如还在图4中看到的,来自于客户端的请求定向到“源”服务器 412。源(或目标)服务器412是通常在覆盖网络用户基础设施(或 也许一些其它托管的环境,诸如第三方基于云的基础设施)中执行的 服务器。通常,源服务器412向网站提供基于网络的前端或期望利用 覆盖网络基础设施被加速的网络可访问的客户应用。在此示例情况 中,源服务器412在客户自己的私有网络414中运行。客户私有网络 414包括物理机器415。该机器(或客户网络中的一些其它机器)支 持另一个网络代理进程418,和关联的Arcade进程420。网络代理418 不需要是元数据可配置的,它也不需要被覆盖网络主动地管理。

以下是端到端流程的描述。在此情况中,如上所述,“GHost” 是指运行在覆盖网络中边缘设备上的元数据可配置的网络代理进程, “ATS”是指运行在客户网络或基础设施但是不同于覆盖网络内的设 备上的覆盖网络网络代理进程,以及“Arcade”是指执行用于相同主 机和路径内的类似文件(版本变化)的数据压缩的压缩和差异化引擎 进程。在此实施例中,GHost(或ATS)进程看情况可以与关联的 Arcade进程经由接口(例如,localhost)进行通信。

如将描述的,Arcade是处理网络重复数据删除的进程。它运行 在源处或附近以及在最接近于最终用户的边缘初并且维护那两个相 对端之间的对象字典。每当请求的对象流过一端,Arcade将对象数据 替换为指向对象字典的指针。在连接的另一端,当数据到达时,Arcade 进程利用相同的对象字典重新集合数据。因为对象字典参考远少于它 们替换的数据,所以对象最终被大大减少(或压缩)。Arcade可以处 理所有类型和大小的对象。如同示出的,以及为了Arcade以提供最 大性能益处,期望接近客户的源基础设施。在如图4所示的代表性实 施方式中,覆盖网络提供者提供在客户的基础设施(私有网络)之内 运行的软件,例如,作为虚拟机(VM)或“边缘设备”。边缘设备 410优选地位于或者DMZ中或者在企业防火墙后面并且它可以运行 在由覆盖网络用户支持并管理的超控制器(例如,VMware ESXi(v. 4.0+))416上。在一个优选实施例中,边缘设备被分布为经由覆盖 网络客户入口(外联网)下载的64位虚拟设备。每个边缘设备需要 至少一个可公开路由的IP地址并且可以被覆盖网络优选地通过安全 连接配置。

作为附加背景,以下描述字典高速缓存的构思。术语“字典”用 于描述的目的。在HTTP中,响应一般符合两个类别:那些可以被高 速缓存并且用作对后续请求的响应的类别,和那些不能被高速缓存的 类别。如下面将描述的,这些高速缓存的项目被存储在“对象高速缓 存”中。换句话说,对象高速缓存包含可以响应于请求(给定正确的 条件:适当的URL、匹配的元数据(例如,边缘服务器内容处理指示)、 来自于客户端的非超越的非存储请求,等等)被直接服务。根据此公 开,也使用叫做“字典高速缓存”的单独(有差别的并独立的)高速 缓存。此高速缓存包括什么一般应当被视为简单地用于帮助压缩其它 数据的不透明数据。此高速缓存中的数据不被响应于请求直接提供。 它仅仅是“助手数据”。优选地,完全响应对象被存储在此高速缓存 中;但是,只要响应被放在此高速缓存中,它就被当作是不宜在响应 中直接发送回的不透明数据。此外,此高速缓存不局限于文档的先前 版本。此方法允许标记为“非存储”的动态内容的存储。优选地,此 内容不被响应于请求传递但是仅仅用于帮助压缩真实、有效的非高速 缓存的响应。这允许系统加速动态内容而不必冒充返回高速缓存的版 本的风险。

在本公开的方法中,字典中的对象是文件粒度的,并且具体地是 在主机/路径处可恢复的文件。具体地,并如将描述的,该方法用于在 相同主机/路径之内的版本变化。在客户端(接收端)上的字典高速缓 存包括对应于它已经看见的对象的每个版本的指纹和相关数据。在服 务器(发送端)上的字典高速缓存包括对应于它已经传递的对象的每 个版本的指纹和相关数据。虽然在服务器端上的字典高速缓存可以具 有不存在于客户端的字典高速缓存中的指纹,反之亦然,但是客户端 字典高速缓存中的至少一个指纹必须存在于服务器端字典高速缓存 中,以便让该技术有效;到在字典高速缓存中存在一个或多个公共指 纹的程度上,所述字典被称为“共享的”或同步的。

通常,指纹是版本的散列。版本的散列是将散列函数(例如 SHA-1,MD-5,等)应用到版本内容的结果。当用于新版本的客户端 请求被接收(并且需要被转发到服务器端以用于处理)时,与客户端 相关联的Arcade进程在每一个它的指纹(对应于它具有的版本)中 包括转发请求。然后,当在服务器端的Arcade进程接收那些指纹时, 它检查它的字典高速缓存以确定被发送的哪一个指纹可能是对于请 求的匹配。通常,“最新”版本将被选择,基于最新的版本可能具有 最小数目的变化(与先前版本相比)的假设。但是,最新的版本的使 用不被限制。在服务器上的Arcade进程然后从源中取得请求的新版 本,执行数据差异化(相对于作为匹配选择的版本的请求的新版本) 以生成差异(DIFF)。在服务器上的Arcade进程生成用于请求的新 版本的指纹并且将它存储在它的字典高速缓存中(与数据关联并且连 同数据本身)。在发送端上的Arcade进程返回具有压缩数据的(DIFF) 响应数据流,以及包括被使用(从客户端接收到的那些中的初始选择 当中)以进行差异化的版本的指纹的标识的响应报头。在接收端上的 Arcade进程然后使用指纹以对对应的版本(其已经存在于客户端上) 应用DIFF以重新创建请求的版本,其然后被返回到请求的客户端。 在接收端上的Arcade进程也生成请求的新版本的指纹并且将新的指 纹存储在它自己的字典高速缓存中(与数据关联并且连同数据本身) 以使得字典保持同步。

利用以上作为背景,现在描述在其中终端用户(已利用DNS以 常见的方式被关联到Ghost进程,如上所述)做出对资源,即然后没 有存在于边缘端GHost代理中的版本,的请求的使用情况中的端到端 处理流程。

当客户端通过GHost请求用于特定主机的URL时,该处理从步 骤(1)开始。URL对应于系统可以对其具有存储在字典高速缓存中 的一个或多个版本的资源;这一个或多个版本被认为已先前在客户端 处被接收(并且有时被称为“先前版本”)。在步骤(2)处,GHost 检查它的元数据配置。元数据指示ghost去到Arcade。为此,GHost 建立到配置的Arcade端口上的localhost的连接并且发送请求直到 Arcade(利用标准的HTTP)。GHost也内部添加某些报头,报头在 步骤(3)之后将被删除。这些报头包括:第一报头,其识别请求是 否在SSL上进来,以及第二报头,其识别当请求进来时接触的端口。 在步骤(3)处,Arcade添加它自己的特殊报头,这里称为第三报头, 其包含Arcade“指纹”,其是用在执行数据差异化的数据。Arcade 然后建立新的连接回到端口80上的localhost上的GHost并且继续转 发请求。在步骤(4)处,GHost删除在步骤(2)中添加的第一和第 二报头并且将请求转发到或者上游层(如图所示)上或者直接转发到 源,优选地利用HTTPS。如果直接到源,则步骤(4)被省略并且该 处理继续在连接到ATS(步骤(5))。

在步骤(5)处,(一个或可能更多)父Ghost继续传递请求, 但是优选地不试图将请求重新发送到它们自己的localhost Arcade中。 它们将请求转发到指定的转发源服务器,其在此示例情况中位于其中 另一个网络代理(ATS)等待的客户私有网络之内。在步骤(6), ATS网络代理通过HTTPS接收请求并且经由到配置的Arcade端口 上的本地主机的新的TCP连接将它转发到它的本地Arcade进程,完 全类似GHost在步骤(2)利用HTTP进行的。在步骤(7)处,Arcade 检查是否它具有在步骤(3)中添加回的报头中指示的指纹。这使得 注意它具有什么指纹(或如果没有可用则没有),并且它删除第三报 头。然后它连接回到端口80上的localhost上的ATS并且经由HTTP 转发请求。在步骤(8),ATS接收请求、利用HTTP或HTTPS(源 被配置使用的无论哪一个)连接到源、并且继续转发请求。该处理然 后在步骤(9)处继续,其中源用数据作出响应。在步骤(10)处, ATS用数据响应回Arcade。

在步骤(11)处,Arcade对数据执行差异化,优选地把它压缩 成除了用户/边缘GHost端上的对等Arcade之外的不适用于任何其它 进程的形式。它然后用此压缩的差异数据连同指示它使用的指纹出自 为了进行差异化进行的初始选择的新响应(第三)报头响应回ATS。 在步骤(12)处,如果有的话,ATS响应返回父GHost。优选地,父 GHost并不高速缓存此数据。流程然后在步骤(13)继续,父GHost 利用该数据响应回边缘GHost。优选地,边缘GHost也并不高速缓存 此数据。在步骤(14)处,边缘GHost利用此数据响应回Arcade。 在步骤(15)处,Arcade进程使用在响应(第三)报头中指示的指纹 然后执行它接收的差异数据的解压缩。具体地,它删除响应(第三) 报头并且利用现在未压缩的数据响应回GHost。在步骤(16)处,GHost 接收此响应,高速缓存它(如果被配置为这样做),并且将它返回到 用户以完成该处理。

以下元数据配置便于以上描述的操作。参考步骤(1)到(2), Arcade被启用用于不是常见的压缩格式的任何文件类型。HTTP范围 请求应当被禁止并且不进行。在步骤(3)到(4)处,应当运行的唯 一元数据是那些启用或控制什么服务器或分层父应当在下一个跳处。 如描述的,响应将不会被在这里高速缓存,并且连接应当出现在 HTTPS上。在步骤(4)-(5)处,任何正常的元数据除高速缓存之 外应当在此阶段照常运行;响应将不会在这里被高速缓存。在步骤 (12)到(13)处,像步骤(4)到(5)一样,响应元数据除高速缓 存之外自由地运行在这里,其应当被覆写以进行旁路而不是任何类型 的存储。在步骤(13)到(14)处,响应元数据将不会运行并且高速 缓存应当被覆写以进行旁路而不是任何类型的存储。同样,如任何一 个GZIP的内容编码的数据的解压缩应当在这里发生。在步骤(15) 到(16)处,响应元数据自由地正常运行没有修改;高速缓存应当如 被配置的那样被执行并且数据的压缩应当如正常的那样被执行。

差异化技术使得客户端向服务器通信它支持数据差异化以及识 别它当前具有哪些字典。此通信并没有使得不支持数据差异化的服务 器失败。服务器也能够在响应中指示它已经应用了数据差异化(包括 它这样做使用的什么方法),并且指示它已经使用哪一个字典。优选 地,当在一个块中发送整个输出不能实行时,客户端和服务器二者都 支持数据差异化块的流化。协议利用当前HTTP 1.1语义无缝地工作。 此外,两个数据差异化感知端点中间的透明代理(但是其本身不是数 据差异化感知的)不打断或高速缓存不正确的项。而且,范围请求继 续正确地工作,甚至当数据差异化应用于它们时。

优选地,数据差异化仅仅被应用于类似内容编码。如果高速缓存 的资源的两个版本存在但是具有不同的内容编码,则它们不被差异 化。优选地,并且当给定选择时,数据差异化不对已经被压缩(例如, 经由GZIP等)或没有把它们自身适于数据差异化(例如,JPEG、 MPEG,等)的文件使用,而是仅仅对“身份”内容编码使用。此外, 小文件可以不受益于该处理,因为需要额外CPU资源。为了同步用 于操作的共享的字典文件状态,优选地节点解码给定内容编码但是不 编码一个。换句话说,假定客户端机器在“身份”内容编码中具有文 件的版本0,并且服务器具有以相同格式的相同字典。这两个字典在 它们的当前状态中被完全同步(换句话说,所有八位字节在它们之间 相等;它们是精确副本)。现在,假定客户端试图下载源服务器以“gzip” 内容编码传递的文件的后续版本1。在此情况中,中间阶段应当将内 容编码解码回“身份”。

根据这里描述的技术,覆盖服务提供者删除它在网络上的对等方 之间发送的冗余数据,代替发送小得多的指纹。Arcade引擎要求请求 的(通常下游)对等方跟踪在它的内部高速缓存中的内容的许多版本, 由主机和路径锁上它们,并且然后告诉上游对等方对于每个请求上的 那些版本指纹是什么。上游对等方然后从提供的选择中选择它也在它 的高速缓存中分享的最佳版本,利用它对新数据执行二元差异化(二 元δ)。因此,这里的方法使得压缩对于相同主机和路径内的类似文 件(版本变化)发生。

以下提供关于由压缩和差异化引擎实施的协议的补充细节。为了 方便起见,此协议有时被称为Arcade HTTP协议。

优选地,当客户端请求来自于差异化服务器的它对其不具有先前 高速缓存的版本的资源时,客户端通过发送诸如:(第三报头):willing 的之类的单个HTTP报头指示它参与Arcade HTTP协议的意愿。此 报头向上游服务器指示客户端愿意接受用于特定主机/URI组合的字 典高速缓存条目,但是它还没有它自己的任何共享的字典。如果客户 端具有它希望利用特定方法或方法让服务器应用压缩的资源的先前 版本,则它发送以下报头:(第三报头):m1,m2,...m;fp1,fp2, fpm,其中m*是METHOD_STRING类型的并且fp*并且fp*是 FINGERPRINT_S TRING类型的。各个方法列出此客户端支持的差 异化方法。各个指纹表示此客户端已经存储的预设字典(先前内容) 的指纹。另外,如果第三报头呈现有指纹,则正常HTTP  Accept-encoding报头的意思变为意味着客户端从(识别的列表)接受 内容编码以及那些编码的数据差异。因此,考虑HTTP GET请求诸 如: GET/foo.html HTTP 1.1,Host:www.bar.com,Accept-encoding: gzip,baz(第三报头);m,(HAS H_S TRING)。此请求说明客 户端支持请求的资源(foo.html)以下面“格式”返回:没有数据差 异化的gzip格式,没有数据差异化的baz格式,没有数据差异化的身 份格式(身份隐含在Accept-encoding中),具有在压缩之后执行数 据差异化的gzip格式,具有在压缩之后执行数据差异化的baz格式, 以及具有数据差异化的特性格式。

响应于任何差异化请求从服务器返回的响应报头优选地采取形 式:第三报头);m;store_mode;hash;fpl,fp2,...fpn,其中m 是METHOD_S TRING并且指示用于执行差异化的方法。如果没有 执行差异化,则方法是“nop”。如果执行差异化,则方法必须匹配 在请求中给出的方法中的一个。store_mode是BOOL_STRING并且 指示客户端是否可以使用扩展数据作为字典。假定服务器将允许客户 端使用大部分项作为字典;此允许在其中它不会允许的那些实例(其 可以可用于部分响应,诸如范围请求和真的非存储)中的控制。hash 是HASH_STRING并且如果方法不是“nop”则存在。它指示用于计 算源块的散列的散列算法,如下面描述。示例散列是SHA-1。fp*是 FINGERPRINT_S TRING类型的并且指示预设字典或实际上用在差 异化中的字典(先前内容)组合。优选地,如果存在列在响应中的多 种指纹,则客户端组合由给定指纹以列表的次序表示的字典并且使用 结果数据作为预设字典。优选地,组合方法是通过简单的链接。在响 应中,如果有的话,“Content-Encoding”报头指示由对数据差异求 逆产生的编码。

优选地,数据差异的数据部分被编码以支持块化。块意味着目标 文件的块。根据使用的差异化算法,每个块可以具有报头。因此,优 选地,块是被传递通过差异化重组合算法的原子单位,好像它是独立 的文件一样。图5示出了代表性的块格式。在此格式中,DIFF块长 度是LENGTH_TYPE并且指定Diff块数据部分的大小。块散列是块 的数据的散列,只要数据差异化已被求逆。这用于验证完整性,尤其 字典的完整性。如果在字典或字典组合的指纹中存在冲突,或如果字 典数据损坏,则此散列将计算它在服务器上进行的客户端上的不同 值。因而,客户端应当立即切断连接,清除它的匹配字典条目,发出 记录或提醒,并且重试下载。利用第三报头的散列字段中的 HASH_STRING计算散列。在块散列之后是块数据本身。优选地,不 使用填充物来减少在线的字节数目。为了指示块流完成,零的Diff块 长度被发送以标记“流结束”,后面没有块散列或Diff块数据。如果 X-Arcade报头协议报头指示这可以被存储为客户端上的字典,则接 着是单个指纹记录,诸如图6所示。客户端在引用字典时必须使用标 记的指纹。

在标准的HTTP 1.1中,范围请求和响应被连接到特定的 Content-Encoding。因此,例如,如果响应是具有103到507的范围 的内容编码“gzip”,则那些字节表示*以gzip数据*的103到507, 不是原始变型。根据此公开的协议,如果差异化服务器接收范围请求, 则它将Accept-encoding向前传递到未触及的上游源服务器。结果, 当差异化服务器获得返回的范围数据时,它如果已经不在那里则不能 将它解码回到“身份”内容编码。因此,为了保证数据差异化仅仅被 应用于类似内容编码,请求的字典必须具有与范围响应相同的 Content-Encoding,或范围响应必须是内容编码“身份”的并且字典 必须也是可解码回到“身份”的。为了阻止不知道Arcade HTTP协 议扩展(如这里描述的)的透明代理高速缓存数据差异化响应,使用 在RFC 3229中定义的方法。因此,当服务器对响应成功地执行数据 差异化时,它设置状态码为具有适当原因码的未注册的值。另外,处 于在RFC 3229中指定的原因,可以使用高速缓存控制令牌(例如叫 做“arc”)。对于除了那些具有“no-store”的“Cache-Control”报 头的所有响应,“no-store,arc”被前置到“Cache-Control”报头(或 如果报头不存在,则它被创建)。这使得不理解这里描述的协议扩展 的所有透明代理由于no-store拒绝高速缓存项。但是,当存在“arc” 时,理解协议的代理将忽略“no-store”。最后,如果“arc”存在于 “Cache-Control”报头中,则对数据差异化求逆的客户端负责删除 “no-store”和“arc”高速缓存控制修改符。

Arcade功能可以被实施在守护进程中,即作为由硬件处理器运 行的计算机程序指令。守护进程可以用作上面描述的Arcade HTTP 协议中的客户端和服务器。优选地,它被分路到在覆盖网络内的通信 的高延迟支路的末端处的服务器(例如,GHost)中或服务器上。如 上所述,优选地元数据配置数据确定特定请求(在连接的发送端上) 是否应当被认为是应当利用协议加速的请求。如果是的话,并且如因 已被描述的,Arcade守护进程(在发送端上)接收请求并且查找它具 有什么字典(如果有的话)可以用于主机+URI组合。它在适当的报 头中添加并且然后连接回到GHost(在发送端)以发出请求。优选(而 不是必然需要)通过GHost连接回(而不是直接向前)以利用可以在 工作的(例如,持久连接等)的GHost-到-GHost(G2G)性能优化。 在图4中示例情况中,GHost然后通过有线将请求转发到上游机器, 其前面是提供用于SSL连接的正确证书的ATS进程。无限制地,ATS 是指业务服务器HTTP代理,其作为开源可用。运行在转发端上的 Arcade进程使得注意支持的字典并且在删除Arcade HTTP协议扩展 之后将请求(如果在相同的机器上)内部转发到ATS代理。这样做 而不是直接到源,因为ATS可以已经具有高速缓存的数据并且可以 本地返回它,因此提供来自于源服务器的附加卸载。ATS察看它是否 已经高速缓存匹配请求的数据,并且如果是的话,将它发送回到 Arcade守护进程。如果不,它将请求转发到源,接收数据,并且然后 将它发送回到Arcade守护进程。Arcade守护进程差异化数据与请求 的字典并且将响应发送回到ATS中的发起的请求。ATS然后将数据 (例如,通过TCP优化的连接)发送回到发送它的Ghost进程。在 发送端上的Arcade守护进程解码数据并且将它返回到GHost。对于 发送GHost,这实际上看来像响应直接来自于源服务器一样,因为它 被完全解码。GHost根据需要高速缓存并且将响应传递回客户端。

变型

这里的技术可以用来支持SDCH样式的共享的字典。为此,另 一个报头在响应中被添加。格式使得下游代理对于不工作的不同URI 将项目强制地存储到LRU高速缓存中。用于请求和响应的协议否则 将保持未改变(客户端向服务器发出具有现在也包括共享字典的支持 的字典指纹的请求,并且服务器用它使用的字典做出响应)。

字典可以被预加载。如果用于给定请求的先前对象不存在,则可 以使用基于文件类型的预加载的字典。例如,如果客户端试图下 载.PPT幻灯片展示并且Arcade守护进程当前不具有数据的先前版 本,则它可以代之以使用一般的预加载的.PPT文件以试图在它的第一 次访问上获得尽力而为的压缩。后续的下载于是将使用先前版本作为 字典而不是基础预加载的文件。

这里的技术可以与强对象驱动的其他协议(像CIFS)一起使用。

另一个扩展是扩展在运行中的图像数据。当今,网络上的大部分 图像处于高度压缩格式,其使得执行数据差异化很难。但是,存在站 点,其中在像素级的图像之间的差异使得它们是数据差异化的理想候 选者。图像、轮廓、和文本的背景颜色通常是等同的。这些图像可以 在存储器中被扩展为它们的原本像素格式,因此实现数据的差异化。 结果然后被压缩并发送。

如这里使用的,以下术语具有以下意义:

术语“diff”意指用于将源文档转换成目标文档的指令集。

术语“数据差异化”是指利用客户端和服务器之间的共享的字典 以增大可以应用于响应的压缩量的动作。

术语“字典”是指可被用于压缩为用于回溯引用的目标的序列的 集合。

术语“回溯引用”是指到表示对数据序列的引用的字典中的偏移 和长度元组。

“字典高速缓存”是包含必须仅仅用于帮助压缩真实响应的不透 明数据集合的高速缓存。如上所述,此数据不被在响应中直接从字典 高速缓存发送;它仅仅用于帮助压缩/差异化。

“差异化服务器”是执行数据差异化操作的服务器。

“预设字典”是除了由滑动窗口或发现的发现而指定的字典。在 此公开中,共享的字典是预设字典的类型。此类型的字典在通过源数 据运行之前被馈送给差异化算法。

术语“压缩”是指收缩数据的动作。

“指纹”是诸如文件的数据串的二元压缩的表示。通常,指纹是 具有良好加密属性的散列,诸如SHA-1。

这里描述的方法使得覆盖服务器删除它在网络对等方之间发送 的冗余数据,代替发送小得多的指纹。对于具有大量重复数据的事务, 这大大减小了线上数据的总大小,因此减小了用于传递到终端用户的 时间量。此外,减小的数据导致在网络上降低的操作成本,因为传输 的信息量和带宽需要减少。

一般地说,利用一个或多个计算有关的实体(系统、机器、进程、 程序、库、功能、等)的集合提供这里描述的技术,它们一起便于或 提供上面描述的功能。在典型的实施方式中,软件在其上运行的代表 性的机器包括商品硬件、操作系统、应用运行时环境、和应用或进程 和关联数据的集合,其提供给定系统或子系统的功能。如描述的,功 能可以在独立的机器中、或跨分布式的机器集合实施。功能可以被提 供为服务,例如,作为SaaS解决方案。

虽然以上描述由本发明的某些实施例执行的操作的特定顺序,但 是应当理解这样的顺序是示范性,作为可替换实施例可以以不同的顺 序执行操作、组合某些操作、重叠某些操作,等。说明书中的参考给 出实施例指示描述的实施例可以包括特定特征、结构、或特性,但是 每个实施例可以不必然包括所述特定特征、结构、或特性。

虽然在方法或进程的上下文中已经描述公开的主题,但是本公开 也涉及用于执行这里操作的装置。此装置可以被专门地构成以用于需 要的目的,或它可以包括由存储在计算机中的计算机程序选择性地激 活或重新配置的通用计算机。此类计算机程序可以被存储在计算机可 读存储介质中,诸如但是不局限于任何类型盘,包括光盘、CD-ROM、 和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、磁或 光卡、或适合于存储电子指令的任何类型的媒体、并且每个耦接到计 算机系统总线。

虽然已经单独地描述给出系统的组件,但是普通的技术人员将理 解,一些功能可以被组合或分享在给定指令、程序序列、代码部分, 等等中。

优选地,在应用层解决方案中实施功能,尽管这不是局限性,但 是作为识别的功能的部分可以被建立在操作系统等中。

功能可以被利用除HTTPS之外的其它应用层协议实施,诸如 SSL VPN、或具有类似操作特性的任何其它协议。

对计算实体的类型没有局限性,其可以实施连接的客户端侧或服 务器侧。任何计算实体(系统、机器、设备、程序、进程、工具、等) 可以充当客户端或服务器。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号