用于对计算机网络上的数据通信进行缓存的方法和系统与流程

文档序号:11460171阅读:318来源:国知局
用于对计算机网络上的数据通信进行缓存的方法和系统与流程

相关申请的交叉引用

本申请要求于2010年12月30日提交的名称为“methodsandsystemsforcachingdatacommunicationsovercomputernetworks”的美国临时专利申请no.61/428,538的优先权,在此通过引用将其并入本文。

本申请总体上涉及计算机网络(例如因特网、局域网、广域网、无线网络等)上的数据通信的缓存。



背景技术:

计算机网络上的数据通信的缓存是众所周知的网络优化技术,其用于提高应用程序的性能,并通过存储和发送与终端用户密切相关的流行内容最有效地利用网络资源。

内容缓存方案常规上聚焦到客户端-服务器通信(例如,网页浏览或流媒体会话)的缓存上,其中缓存立刻将内容对象(例如,网页浏览中的文本文件和图像)从服务器发送给客户端。

缓存方案所支持的内容应用程序设计为支持缓存,它们不使用数据会话的端到端的加密,它们具有选择性的用于缓存的客户侧明确支持并利用已知的数据端口(http的tcp/80、rtmp的tcp/1935等)。

网页浏览和流媒体应用程序所建立的是基本的数据会话。每个这样的会话并入了缓存所需要的所有信息,用于识别内容查询、所请求的内容对象(或者它的一部分)、可对对象进行维持的内容源的地址。

传统的缓存方案相应地执行下面的缓存方法:

(a1)接收来自客户端的数据会话或者(a2)使用重定向网络元件或其它元件,使用一个或多个已知的tcp或udp端口或者通过7层数据协议分析,对客户端和内容来源之间的数据会话进行识别和拦截;

(b)对客户端使用的数据协议进行解析,从而识别会话中的数据查询;

(c)对客户端所请求的唯一的数据对象(或者它的一部分)进行识别;以及

(d1)将数据请求与存储在缓存中的数据响应进行匹配并将响应发送至客户端或者(d2)将数据请求传播至服务器(内容源),接收来自服务器的响应,选择性地将响应存储在缓存中,将响应发送至请求的客户端。

近年来,因特网应用程序在功能性和复杂性上发生了演变,使用仅在一个下载会话范围内存在的动态内容对象标识符(例如,httpurl),支持来自多个内容源的同一内容对象在若干并行会话中传递,包含多个动态端口,包含数据会话的端到端加密。这些新的应用程序包括多种类型的用于文件共享和流媒体的点对点(p2p)应用程序、用于通过http传递视频的自适应比特率协议、http下载加速器、软件升级服务(如microsoftwindows升级)。

点对点应用程序通常执行一种“对等点发现”机制,其中客户端应用程序访问p2p网络,请求网络发现可提供内容对象的内容源,随后与这些内容源建立会话,这其中的一些会话使用端到端加密。

普遍的做法是,p2p网络中的内容源使用动态端口,而不是“已知的”静态端口。

p2p应用程序可使用7层会话识别标准,以这样的方式加密来避免网络元件的检测。

因此,传统的缓存方案不能识别和拦截这些数据会话,而且由于加密,它们不能对数据协议进行解析来识别数据查询。

非p2p应用程序(例如,下载加速器、自适应比特率视频客户端、软件升级服务等)通常建立多个会话来对相同的内容对象安排检索,其中每个单独的会话不提供用于识别所请求的数据对象和/或将数据请求与数据响应进行匹配的缓存所需要的所有信息。

这些新应用程序所展现的特性消除了传统缓存技术的问题。期望提供对支持这些新应用程序的内容缓存的供选择的方法。



技术实现要素:

根据一个或多个实施例,提供了一种计算机实现的对计算机网络中的多会话数据通信进行缓存的方法,包括步骤:(a)对客户端与一个或多个元数据服务之间的一个或多个数据会话进行接收、拦截或监控,该客户端执行多会话应用程序以对期望的内容对象进行检索,所述客户端与一个或多个元数据服务通信,从而发现内容对象的元数据;(b)对客户端与一个或多个元数据服务之间进行交换的查询和响应进行分析,从而发现内容对象的元数据;(c)对客户端与内容源之间的后继数据会话进行接收或拦截;(d)对客户端使用的数据协议进行识别,并对数据会话中的数据查询进行识别;(e)对客户端在数据查询中所请求的内容对象或者它的多个部分进行识别;(f)确定内容对象或者它的多个部分是否存储在缓存中,如果是,则将存储在缓存中的内容对象或者它的多个部分发送给客户端,如果不是,则将数据查询发送给内容源、对来自内容源的数据响应进行存储、并将数据响应发送给客户端。

根据一个或多个实施例,提供了一种用于对计算机网络中的多会话数据通信进行缓存的缓存服务。该缓存服务用于:(a)对客户端与一个或多个元数据服务之间的一个或多个数据会话进行接收、拦截或监控,该客户端执行多会话应用程序以对期望的内容对象进行检索,所述客户端与一个或多个元数据服务通信,从而发现内容对象的元数据;(b)对客户端与一个或多个元数据服务之间进行交换的查询和响应进行分析,从而发现内容对象的元数据;(c)对客户端与内容源之间的后继数据会话进行接收或拦截;(d)对客户端使用的数据协议进行识别,并对数据会话中的数据查询进行识别;(e)对客户端在数据查询中所请求的内容对象或者它的多个部分进行识别;以及(f)确定内容对象或者它的多个部分是否存储在缓存中,如果是,则将存储在缓存中的内容对象或者它的多个部分发送给客户端,如果不是,则将数据查询发送给内容源、对来自内容源的数据响应进行存储、并将数据响应发送给客户端。

附图说明

图1为示出了根据一个或多个实施例的缓存服务的部署的简图。

图2为示出了根据一个或多个可替换实施例的缓存服务的部署的简图。

具体实施方式

根据多个实施例,提供了一种缓存服务,其应用程序使用多个会话对同一内容对象(例如,文件或数据流)进行检索。

该缓存服务支持的多会话应用程序可包括:

(a)使用一个或多个会话发现内容对象相关的信息(下文中称为“内容对象元数据”)的应用程序,该信息用于识别:应用程序接触的用于检索内容对象的内容源、执行这些任务所使用的数据协议、用于检索对象的数据查询。

(b)使用多个会话检索内容对象的应用程序,仅在某些会话中传递用于对象识别所需要的信息。

(a)使用内容对象元数据进行内容对象检索的多会话应用程序

图1示出了一个示例性网络结构,其示出了根据一个或多个实施例的缓存服务的使用。客户端a1在网络上对一个或多个元数据服务m建立多个会话,发送用于对内容对象z1的内容对象元数据进行检索的数据查询,以及接收一个或多个来自元数据服务m的响应。

内容对象元数据包括至少一个变量,该变量从下面的几种中选择:

(i)一个或多个内容源的地址;

(ii)单独内容源支持的协议;

(iii)每个对象或每个单独内容源的密匙;及

(iv)内容对象的结构

内容源地址可通过ip地址识别,例如,使用ipv4的ip地址1.1.1.1或ipv6地址fe80::200:f8ff:fe21:67cf,或者使用能够利用域名系统(dns)分解为ip地址的域名,如cache12.bos.us.cdn.net。

内容源地址可使用隐含命名的端口号,这针对的是使用已知的协议端口的应用程序(例如,http协议使用的tcp/80端口),或者使用明确命名的端口。

内容源地址可连同它所支持的协议一起识别,包括,但不限于,使用如rfc1738中所定义的统一资源定位器(url),其为对象指定协议、内容源地址、端口、远程路径。

内容对象结构信息包括允许客户端a1形成对于对象部件的数据查询并对接收到的针对这些查询做出的响应的数据响应的正确性进行验证的信息。

内容对象结构信息包括涉及组成对象的多个部件相关的信息,例如bittorrent协议使用的“块(piece)”、edonkeyp2p协议使用的多个“部件(part)”、自适应比特率流媒体传输协议(如microsoftsilverlightsmoothstreaming、adobehttpdynamicstreaming、applehttplivestreaming等)中使用的“回放等级(playbacklevel)”。

有关内容对象部件的信息包括至少下面的一种:内容对象的部件的枚举、每个部件的长度、每个部件的数据校验和、特定内容源上的部件的可用性,其中内容源是利用上面的[0023-0025]所定义的内容源地址进行识别的。

包括上面的所有或部分信息的元数据可存储在单独的具有预先设定的结构的文件中,例如用于bittorrent的torrent文件或microsoftsilverlightsmoothstreaming使用的manifest文件。

提供内容对象元数据的元数据服务m可包括用于支持发送特定的应用程序或一个或多个内容对象的专用网络服务器(例如bt跟踪服务器、ed2k服务器等)、一般搜索引擎(google、microsoftbing等)、用于共同存储元数据的具有多个计算机节点的网络(例如p2p应用程序使用的分布式哈希表网络)、或者其它分享分布式内容源发现网络(例如分布式哈希表网络)的客户端、或者其它下载和/或服务于内容对象z1并维持与之相关的元数据的客户端。

客户端a1可使用多个元数据服务m来发现内容对象元数据,其中一个服务m1可提供一部分内容对象元数据并选择性地指向另一个服务m1用于提供另一部分。

于是,例如,客户端a1可通过bittorrent搜索引擎检索torrent文件,bittorrent搜索引擎包括内容对象数据结构信息以及提供当前动态(active)内容源地址信息的bt跟踪服务器的url。

为了识别新的内容源和/或内容对象结构信息(例如,如果对象z1为活动的数据流,它的新的部分是能够连续获得的),下载内容对象z1或者它的某些部分的过程中,客户端a1可继续向元数据服务m发送数据查询。

根据一个或多个实施例,缓存服务c对在客户端a1与一个或多个元数据服务m之间交换的数据查询和/或响应进行接收并存储。

根据一个或多个实施例,通过进入a1与b之间的数据路径,或者通过使用一个或多个位于数据路径中并将指定数据会话重定向到缓存服务c的专门的重定向设备(例如,负载平衡器、路由器、dpi设备等),缓存服务c拦截a1与m之间的会话,并对a1与m之间的数据查询和响应进行中继。

根据一个或多个实施例,缓存服务c对元数据服务m提供的至少一个元数据响应进行修改,例如,指示缓存服务c作为内容源或者内容对象z1的元数据服务。

根据一个或多个实施例,利用光分接头、镜像端口、或其它复制网络流通的设备,缓存服务c接收到客户端a1与元数据服务m之间的通信的副本。

根据一个或多个实施例,通过提供至少一个元数据服务m,缓存服务c接收来自客户端a1的对于内容对象z1的数据请求。

根据一个或多个实施例,缓存服务c随后向元数据服务m自身提出对于内容对象z1元数据的查询并对响应进行接收和存储。

根据一个或多个实施例,缓存服务c不断地对在至少一个客户端a1与元数据服务m之间交换的查询和响应、以及缓存服务c直接收到的来自元数据服务m的响应进行分析,如上面所描述的。

于是,缓存服务c保持对于客户端a1正在检索的至少一个内容对象z1的内容对象元数据mz。

根据一个或多个实施例,缓存服务c将元数据响应存储为与c最近一次接收到的响应关联的元数据mz的一部分。

缓存服务c随后根据超时原则周期性地将那些大于一定时间前接收到的响应丢弃。

根据一个或多个实施例,缓存服务对元数据请求和响应进行监控,并将任何所存储的与随后收到的元数据响应矛盾的响应丢弃。

检索内容对象z1的相关元数据后,客户端a1以及客户端a1利用元数据服务m发现的至少一个内容源b1,开始彼此建立数据会话,用于通过a1检索内容对象z1或者它的一部分。

根据一个或多个实施例,缓存服务c对客户端a1与内容源b1之间建立的数据会话s1进行拦截。

根据一个或多个实施例,缓存服务c通过进入a1与b1之间的数据路径,或者通过使用一个或多个位于数据路径中并将指定数据会话重定向到缓存服务c的专门的重定向设备(例如,负载平衡器、路由器、dpi设备等)对数据会话进行拦截。

根据一个或多个实施例,缓存服务c只对已经在a1与内容源b1’之间建立的会话进行拦截,该b1’与缓存服务c存储的对象z1的元数据mz相匹配。

根据一个或多个实施例,客户端a1与缓存服务c建立至少一个会话s2,该缓存服务c被客户端a1识别为内容对象z1的一个内容源。

根据一个或多个实施例,缓存服务c利用下面的协议中的至少一个来拦截客户端a1与内容源b1之间的会话s1中的数据查询和数据响应:

(i)如上面所描述的,与客户端a1相关联的数据协议,作为元数据mz的一部分;

(ii)如上面所描述的,与会话s1相关联的数据协议,作为元数据mz的一部分;以及

(iii)当使用基于签名的或其它一般的协议识别技术对会话s1中接收到的数据查询和响应进行分析时,缓存服务c所识别的数据协议。

根据一个或多个实施例,缓存服务c对会话s2使用相似的方法。

根据一个或多个实施例,当使用[0048]中描述的方法未能对会话s1和s2中的数据协议识别时,缓存服务c可应用至少一个密匙k(该密匙k作为元数据mz由c存储),用于与客户端a1或内容源b1或二者同时建立加密的会话。

密匙k可与内容对象z(例如,在bittorrent中使用对象z的哈希标识符来对bittorrent对等点之间的会话加密)或多个特定内容源相关联。

根据一个或多个实施例,在与客户端a1之间建立数据会话并且对该会话中使用的协议进行识别后,缓存服务c接收来自客户端a1的对于对象z1的数据查询q1(或者它的一部分)。

根据一个或多个实施例,如上面所述,缓存服务c使用与内容对象z1相关联的元数据mz对与查询匹配的响应进行识别。

例如,如果客户端a1请求在microsoftsilverlightsmoothstreaming协议中可用的500kbps回放级别的组块的内容对象z1,其起始偏移为0,未标示末端偏移,缓存服务c可使用描述对象z1的元数据mz,以识别末端偏移。

根据一个或多个实施例,如果缓存服务c存储了与查询q1匹配的响应r1,则c将该响应发送给末端客户端a1。

根据一个或多个实施例,将数据响应r1发送给客户端a1前,缓存服务c可利用存储的与内容对象z相关联的元数据mz来对数据响应r1的有效性进行验证。

根据一个或多个实施例,如果缓存服务c中不存在与查询q1匹配的响应,并且查询q1已经作为客户端a1与内容源b1之间的会话s1的一部分发出,则缓存服务c转发该查询以在内容源b1中检索该响应,并接收和选择性地存储该响应,并将该响应中继给客户端a1。

根据一个或多个实施例,当缓存服务c中未找到与查询q1匹配的响应时,缓存服务c发送允许其对数据查询q1作出响应的数据查询q1’给至少一个内容源b,该内容源b是c基于它所存储的元数据mz识别为承载内容对象z的内容源。

随后,缓存服务c接收对于这些查询的响应r1’,对它们进行存储并选择性地根据元数据mz对它们的有效性进行验证,并将对查询q1的响应发送给客户端a1。

根据一个或多个实施例,当缓存服务c中未找到与查询q1匹配的响应时,c可将客户端a1重定向至由缓存服务存储在元数据mz中的内容对象z的一个内容源b。

(b)仅允许在某些会话中对内容对象进行识别的多会话应用程序

客户端a2建立对一个或多个目标b2多个并联或串联的会话s2,用于检索内容对象z2。在各个会话中,客户端a2发送对于内容对象z2的各部分的多个数据请求。

依据客户端a2和目标b2所使用的对内容对象z和/或它的多个部分的命名习惯,用于拦截或接收会话s2的缓存服务c可能无法识别各个会话中客户端a2所请求的内容对象和/或它的多个部分,或者可能无法识别与这些请求匹配的数据响应。

客户端a2和一个或多个内容源b2可使用动态url(所谓的“哈希url”)来识别对象z2,该url为对于内容对象z2的每次下载唯一指定的下载地址。这种情况下,缓存服务c不能仅依靠数据查询中的数据来识别匹配的响应,而是对多个数据响应进行分析,从而对请求的对象进行识别并将其与之前存储的数据响应进行匹配。

根据一个或多个实施例,当在一个或多个会话中接收到允许对内容对象z进行识别的这样的数据查询和/或响应时,c在列表l2中对内容对象z2的标识符以及客户端a2的ip地址、内容源b2的ip地址、客户端a2使用的动态内容标识符(例如url)进行存储。

根据一个或多个实施例,当缓存服务c接收到不允许其对查询和/或响应中所引用的内容对象z进行识别的数据查询和/或数据响应时,缓存服务c确定客户端a2的ip地址、动态内容标识符url、内容源b2的ip地址是否存储在列表l2中。

根据一个或多个实施例,如果应用程序使用多个内容源,缓存服务c可以不考虑内容源b2的ip地址。

根据一个或多个实施例,缓存服务c根据超时原则从表l4中将客户端a2看到的涉及内容对象z2的上次活动后的项目移除。

上面描述的缓存服务进程可以软件、硬件、固件及其它们的组合来实现。优选地,这些进程以一个或多个计算机程序实现,这些计算机程序运行于可编程设备上,该可编程设备包括处理器、处理器可读存储媒介(包括例如易失性和非易失性存储器和/或存储元件)、输入和输出设备。每个计算机程序可以是驻留在设备的随机存取存储器中的代码模块形式的一组指令(程序代码)。在设备需要前,这组指令可存储在另一个计算机存储器(例如,硬盘驱动器,或者可移动存储器(如光盘、外部硬盘驱动器、记忆卡、闪存驱动器))中或者存储在另一个计算机系统中并通过因特网或其它网络下载。

这样,已经描述了若干说明性实施例,应当理解的是,该领域内的技术人员可轻易地进行若干更改、修改和改进。这些更改、修改和改进意在构成本公开的一部分,并且意在位于本公开的精神和范围内。尽管本文讨论了一些例子并包含了详细的功能或结构元件的组合,但是应当了解的是,根据本发明,这些功能和元件可以以其它方式组合,从而实现相同或不同的目的。特别是,连同某个实施例讨论的操作、元件和特征不意在从其它实施例中的类似的或其它作用中排除在外。

此外,本文描述的元件和组件可进一步划分为额外的组件或连接到一起,从而形成较少的一些用于执行相同功能的组件。例如,缓存服务可包括一个或多个物理机器,或在物理机器上运行的一个或多个虚拟机器。此外,缓存服务可包括通过因特网或其它网络连接的一组计算机或许多分布式计算机。

相应地,前面的描述及附图仅作为实例,而不是意在限制本发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1