CN101690079A - 用于使用压缩历史来改进网络性能的系统和方法 - Google Patents

用于使用压缩历史来改进网络性能的系统和方法 Download PDF

Info

Publication number
CN101690079A
CN101690079A CN200880015783.3A CN200880015783A CN101690079A CN 101690079 A CN101690079 A CN 101690079A CN 200880015783 A CN200880015783 A CN 200880015783A CN 101690079 A CN101690079 A CN 101690079A
Authority
CN
China
Prior art keywords
data
compression
equipment
sequence
compression histories
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200880015783.3A
Other languages
English (en)
Other versions
CN101690079B (zh
Inventor
A·塞缪尔斯
S·詹森
Z·蒂塔
D·狄卡斯伯
M·奥夫斯相尼科夫
R·普拉蒙东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/685,165 external-priority patent/US7460038B2/en
Priority claimed from US11/685,153 external-priority patent/US7865585B2/en
Priority claimed from US11/685,170 external-priority patent/US7453379B2/en
Priority claimed from US11/685,172 external-priority patent/US8255570B2/en
Priority claimed from US11/685,159 external-priority patent/US7827237B2/en
Priority claimed from US11/685,157 external-priority patent/US7619545B2/en
Priority claimed from US11/685,161 external-priority patent/US7532134B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Priority to CN201310447262.8A priority Critical patent/CN103516725B/zh
Publication of CN101690079A publication Critical patent/CN101690079A/zh
Application granted granted Critical
Publication of CN101690079B publication Critical patent/CN101690079B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Abstract

本发明描述保存之前传输的数据并且使用其来降低带宽利用并加速未来通信的系统和方法。通过使用算法来识别长的压缩历史匹配,网络装置可以改进压缩效率和速度。网络装置还可以使用应用专用解析来改进压缩历史匹配的长度和数量。进一步,通过共享多个装置之间的压缩历史和压缩历史索引,装置可以使用之前传输到其他装置的数据来压缩网络业务量。可以使用这些系统和方法的任意组合来有效找到对所保存数据的长的匹配,将之前发送数据的存储装置同步,并且在一个或者多个其它装置之间共享之前发送的数据。

Description

用于使用压缩历史来改进网络性能的系统和方法
相关申请
【0001】本申请涉及并要求以下未决美国申请的优先权,其每一个通过引用全部包含于此:2007年3月12日提交的美国申请11/685,161″SYSTEMS AND METHODS FOR SHARING COMPRESSION HISTORIES BETWEENMULTIPLE DEVICES″;2007年3月12日提交的美国申请11/685,153″SYSTEMS AND METHODS FOR PROVIDING DYNAMIC AD HOC PROXY-CACHEHIERARCHIES″;2007年3月12日提交的美国申请11/685,165″SYSTEMSAND METHODS OF CLUSTERED SHARING OF COMPRESSION HISTORIES″;2007年3月12日提交的美国申请11/685,157″SYSTEMS AND METHODS OF USINGAPPLICATION AND PROTOCOL SPECIFIC PARSING FOR COMPRESSION″;2007年3月12日提交的美国申请11/685,172″SYSTEMS AND METHODS OFCOMPRESSION HISTORY EXPIRATION AND SYNCHRONIZATION″;2007年3月12日提交的美国申请11/685,170″SYSTEMS AND METHODS FORIDENTIFYING LONG MATCHES OF DATA IN A COMPRESSION HISTORY″;和2007年3月12日提交的美国申请11/685,159″SYSTEMS AND METHODS FORIDENTIFYING LONG MATCHES OF DATA IN A COMPRESSION HISTORY″。
技术领域
【0002】本发明总的涉及数据通信网络。更具体地,本发明涉及用于压缩数据流并且通过影响之前保存的数据来改进网络性能的系统和方法。
背景技术
【0003】通过利用之前保存的数据压缩数据流是用于降低两个装置之间传输的数据流的大小的公知技术。广义而言,典型的压缩方法需要两个装置,每一个保持在装置之间传输的数据的备份。这些所保存的数据的备份可以称之为压缩历史,这是因为它们表示之前传输的随后被用来压缩未来数据流的数据的历史。当装置的其中之一正发送数据到其他装置时,其搜索其压缩历史用于和输入数据匹配,并且将匹配部分替代为对传输流中已保存的数据的索引,降低了传输流的大小。接收装置随后使用该索引并且结合其自身压缩历史来重构未压缩的数据流。然而,该技术通常面临多个挑战。
【0004】第一,输入流和压缩历史之间不足的长匹配可以导致低的压缩率,并且增加了处理开销和必须访问压缩历史的次数。在装置正同时发送多个数据流并且因此可以具有尝试同时访问压缩历史的许多进程的情况中,这些问题进一步恶化。在使用具有长的潜在访问等待时间的诸如光盘的介质上保存的压缩历史的装置中,这些问题还可以更严重。为了给出一个具体的例子,发送2K文件的装置可以找到散布在其压缩历史之间的四十个匹配索引,每一个索引匹配不同的50字节的文件。这可以要求可能复杂的匹配算法的40次单独的迭代以及对压缩历史的40个单独的盘访问。与之不同,如果装置找到对整体2K文件的单个匹配索引,仅需要单个盘访问即可。因此需要一种系统和方法用来在输入流和压缩历史之间有效建立定位长的匹配。
【0005】第二,当一个装置具有的其压缩历史中的序列不在另一个装置上的对应的压缩历史中,则结果效率很低。该装置可以使用对该序列的索引来替代数据流的一部分,并且由于其发现其它装置并不具有索引的序列,则随后被迫重发该数据流。此外,非共享的序列可以占用可以用于其它数据的压缩历史中的空间。可以使用多个方法来同步关于在两个装置之间当前正传输的数据的压缩历史。例如,每个装置可传输对应于所传输、接收和保存的字节总数的信息以及识别数据已经被保存在何处的位置标识符。然而,甚至当压缩历史紧随数据传输之后被同步时,多个事件可以导致压缩历史随后发散。例如,一个装置可以用尽存储装置并且被迫重写一个或者多个之前保存的部分。或者一个装置可以具有磁盘错误或者其他硬件或者软件故障,这破坏或者移除一个或者多个之前保存的部分。因此,需要一种改进的系统和方法来有效同步共享的压缩历史。
【0006】第三,在许多实现方案中,压缩历史和高速缓存仅提供同样的数据在同样两个装置之间反复传输时的益处。在两个位置可以反复传递类似信息的情况中,每一个位置具有多个装置的群集,不能保证该信息在同一对装置之间传递,这也是特别成问题的。例如,两个位置的每一个维持装置的群集来加速该位置之间的通信。群集1可以包含装置A、B和C,并且群集2可以包含装置X、Y和Z。例如,装置A和Z可以每一个维持在A和Z之间传输的文件的压缩历史,但是下一次请求该文件时,请求和响应可以传递通过装置A和Y。类似地,下一次请求该文件时,请求和响应可以传递通过装置B和装置X。一个基本解决方案是将装置群集组织到一个分层,使得对给定群集、网络或者区域的请求传递通过网关装置。然而,该解决方案可以包括附加的配置并且产生网络瓶颈。因此需要影响之前在两个装置之间传输的数据来压缩最初发送器之外的装置之间传输的数据,不必须要求明确分层。
发明内容
【0007】本发明涉及保存之前传输的数据并且使用其来降低带宽利用并加速未来通信的系统和方法。通过使用算法来识别长的压缩历史匹配,网络装置可以改进压缩效率和速度。网络装置还可以使用应用专用解析来改进压缩历史匹配的长度和数量。进一步,通过共享多个装置之间的压缩历史、压缩历史索引和高速缓存,装置可以使用之前传输到其他装置的数据来压缩网络业务量。可以使用以下段落中描述的系统和方法的任意组合来有效找到对所保存数据的长的匹配,将之前发送数据的存储装置同步,并且在一个或者多个其它装置之间共享之前发送的数据。
【0008】在第一方面中,本发明涉及用于通过在存储器中保持的索引中识别输入数据与保存在磁盘上的邻接数据匹配的估计程度高于或者低于预定阈值来确定是否执行基于盘的压缩的系统和方法。在一个实施例中,具有压缩历史的装置在存储器中建立索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的盘上的位置的位置标识符。该装置识别输入数据的多个指纹匹配存储器中的索引的多个项的指纹,并且从具有对应于第一位置标识符的项目的存储器中的所识别的指纹数量来确定输入数据与盘上邻接数据的估计匹配延长低于预定阈值。如果该匹配延长到低于给定阈值,该装置传输未压缩的数据。如果该匹配延长到高于预定阈值,则该装置使用压缩历史来压缩该数据。
【0009】在第二方面中,本发明涉及用于确定将输入数据的指纹与识别压缩历史中的多个数据实例的指纹索引匹配的优先级的系统和方法。在一个实施例中,具有压缩历史的装置建立一个索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的盘上的位置的位置标识符。该装置识别输入数据的多个指纹匹配具有至少一个位置标识符的索引中的多个项并且选择具有最少数量的位置标识符的多个项中的一个项。该装置随后可以将输入数据的第一部分和所选择项识别的压缩历史中的第一位置中的数据相匹配。
【0010】在第三方面中,本发明涉及用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的系统和方法。在一个实施例中,这些系统和方法包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部。第一装置从应用数据流识别第一序列和第二序列并且将包括第一序列和第三序列的组合序列保存到压缩历史中。
【0011】在第四方面中,本发明涉及用于同步两个装置之间共享的压缩历史的系统和方法。在一个实施例中,第一装置保存第一压缩历史,压缩历史包括之前传输到第二装置的多个数据部分,每一个数据部分都具有位置标识符。第一装置可以随后建立通过时间排序的位置标识符的排序列表,该时间是第一装置最后访问对应于每一标识符的位置中的数据一部分的时间。第一装置从第二装置接收识别第二装置上对应的第二压缩历史的大量位置标识符的信息;并且确定所接收的数量比第一压缩历史的大量位置标识符小第一数量。第一装置可以随后从位置标识符的列表中选择废弃处于对应于最近最少访问过的数据部分的排序列表的结尾处的第一数量个位置标识符。
【0012】在第五方面中,本发明涉及用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统和方法。在一个实施例中,第一装置将第一数据流传输到第二装置,第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩。第一装置可以从第三装置接收第三装置位于和第二装置相同网络的指示。第一装置接收目的发往第三装置的第二数据流。第一装置识别一部分数据流在预定阈值内与一部分第一压缩历史相匹配,并且将识别该部分第一压缩历史的信息传输到第三装置。根据最初在第一和第二装置之间共享的压缩历史,这可以允许第一和第三装置之间的通信被压缩。
【0013】第五方面的另一个实施例包括在第一装置和第二装置之间传输第一数据流,第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩。第一装置接收识别第三装置和部分第一压缩历史的信息,并且将第一压缩历史的所识别的部分传输到第三装置。
【0014】该另一个实施例还包括第一装置,通过第一装置接收来自第二装置的数据流,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩。第一装置识别第三装置并且将对于部分压缩历史的请求传输到第三装置。该第一装置接收来自第三装置的压缩历史的所请求的部分。第一装置随后可以解压缩数据流并且将解压缩的数据流传输到客户机。
【0015】本发明的第六方面涉及用于在一个或者多个装置群集之间共享压缩索引来改进经由多个连接传输的数据的压缩的系统和方法。一个实施例包括通过第一装置接收来自第二装置的对于第二装置和第三装置之间共享的压缩历史的项的索引;每一个索引项包括保存在第二装置中的数据的位置标识符。第一装置接收目的发往第四装置的数据流;并且识别一部分数据流和所接收的索引项匹配。第一装置将对应于匹配项的位置标识符传输到第二装置。第一装置接收来自第二装置的对应于位置标识符的压缩历史的部分;并且确定该部分压缩历史匹配部分数据流。第一装置可以随后发送识别该部分压缩历史的信息到第四装置。根据最初在第一和第二装置之间共享的压缩历史,这可以允许第三和第四装置之间的通信被压缩。
【0016】本发明的第七方面涉及用于提供高速缓存的ad-hoc分层来服务对象的系统和方法。在一个实施例中,第一设备接收来自客户机的对于来自服务器的对象的第一请求。第一装置识别该对象不在该设备的第一高速缓存中并且将对于该对象的第一请求转发到服务器。该设备在接收对所转发请求的响应之前传输对于该对象的第二请求到第二装置。该设备接收来自服务器或者第二装置的至少一个的对象;并且随后将对象传输到客户机。
【0017】在下面附图和具体实施方式中提出本发明的多种实施例的细节。
附图说明
【0018】参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会十分明显并更容易理解,其中:
图1A是客户机经由一个或者多个网络优化设备来访问服务器的网络环境的实施例的框图;
图1B是客户机经由与其他网络设备结合的一个或者多个网络优化设备来访问服务器的网络环境的另一个实施例的框图;
图1C是客户机经由独立布置或者和其他网络设备结合的单个网络优化设备来访问服务器的网络环境的另一个实施例的框图;
图1D和1E是计算装置的实施例的框图;
图2A是处理在客户机和服务器之间的通信的设备的实施例的框图;
图2B是布置设备的网络优化特征的客户机和/或服务器的另一个实施例的框图;
图3是使用网络优化特征来与服务器进行通信的客户机的实施例的框图;
图4A是使用共享的压缩历史来降低所传输的数据的大小的实施例的框图;
图4B是用于在压缩历史中保存数据的数据结构的一个实施例的框图;
图4C是可以用来在压缩历史中定位数据部分的数据结构的一个实施例的框图;
图5A是示出使用压缩索引来定位对应于输入数据的压缩历史匹配的一个实施例的框图;
图5B是用于通过在存储器中保持的索引中识别输入数据与保存在盘上的邻接数据匹配的估计程度高于或者低于预定阈值来确定是否执行基于盘的压缩的方法的一个实施例的流程图;
图6A是示出使用压缩索引来定位对应于输入数据的压缩历史匹配的第二实施例的框图;
图6B是用于确定将输入数据的指纹与识别压缩历史中的多个数据实例的指纹索引匹配的优先级的方法的一个实施例的流程图;
图7A是示出用于将应用层协议首部从压缩历史中保存的数据移除的一个实施例的框图;
图7B是示出用于将应用层协议首部从压缩历史中保存的数据移除的第二实施例的框图;
图7C是用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的方法的实施例的流程图;
图7D是用于通过将应用层协议首部从所接收的数据移除来改进压缩历史匹配的方法的实施例的流程图;
图8A是用于同步两个装置之间共享的压缩历史的系统的一个实施例的框图;
图8B是用于同步两个装置之间共享的压缩历史的方法的流程图;
图9A是示出在多个装置之间共享压缩历史的一个实施例的框图;
图9B是用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的一个实施例的流程图;
图9C是用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的第二实施例的流程图;
图9D是用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的第三实施例的流程图;
图10A是示出用于共享压缩历史索引来加速两组装置之间的数据传输的系统的一个实施例的框图;
图10B是用于在多个装置之间共享压缩索引来改进经由多个连接传输的数据的压缩的方法的流程图;
图11A是示出提供高速缓存的ad-hoc分层来服务对象的一个实施例的框图;和
图11B是示出用于提供高速缓存的ad-hoc分层来服务对象的方法的一个实施例的流程图。
【0019】根据以下结合附图提出的详细描述,本发明的特征和优势将变得更加明显,其中相同的参考符号在全文中是指对应的元件。在附图中,相似的附图标记通常指示相同的、功能类似的和/或结构类似的元件。
具体实施方式
【0020】为了阅读下面的本发明的多个实施例的描述,说明下面的说明书的各部分以及它们相应的内容是有帮助的:
部分A描述用于实现本发明的实施例的网络环境和计算环境;
部分B描述用于将计算环境加速递送到远程用户的系统和设备架构的实施例;
部分C描述用于加速在客户机和服务器之间的通信的客户机代理的实施例;
部分D描述用于使用压缩历史的系统和方法的实施例;
部分E描述用于有效识别压缩历史匹配的系统和方法的实施例;
部分F描述用于将应用层首部从压缩历史数据移除的系统的和方法的实施例;
部分G描述用于同步共享的压缩历史数据终止的系统和方法的实施例;和
部分H描述用于影响多于两个装置之间的共享的压缩历史的系统和方法的实施例。
部分I描述用于ad-hoc高速缓存分层的系统和方法的实施例。
A.网络和计算环境
【0021】在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可以部署这样的实施例的网络和计算环境是有帮助的。现在参考图1A,描述了网络环境的一个实施例。总的来说,网络环境包括经由一个或多个网络104、104′和104″与一个或多个服务器106a-106n(通常也被称为服务器106或远程机器106)通信的一个或多个客户机102a-102n(通常也被称为本地机器102或客户机102)。在一些实施例中,客户机102经由一个或者多个网络优化设备200、200′(总的称之为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计、配置或者调整来优化广域网(WAN)网络业务量。在一些实施例中,第一设备200和第二设备200′相结合或者协同运行来优化网络业务量。例如,第一设备200可以位于分支结构和WAN连接之间而第二设备200′可以位于WAN和公司局域网(LAN)之间。设备200和200′可以一起工作来优化分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络业务量。
【0022】虽然图1A示出客户机102和服务器106之间的网络104、网络104′和网络104″(总的称为网络104),但客户机102和服务器106可以在同一个网络104上。网络104、网络104′和网络104″可以是相同类型的网络或不同类型的网络。网络104可以是像公司内联网的局域网(LAN)、城域网(MAN)或者诸如因特网或万维网的广域网(WAN)。网络104、104′和104″可以是专用网或者公用网。在一个实施例中,网络104′或者网络104″可以是专用网而网络104可以是公用网。在一些实施例中,网络104可以是专用网而网络104′和/或网络104″可以是公用网。在另一个实施例中,网络104、网络104′和网络104′可以都是专用网。在一些实施例中,客户机102可以位于企业法人的分支机构,经由网络104上的WAN连接来与位于公司数据中心中的公司LAN上的服务器106进行通信。
【0023】网络104可以是任意类型和/或形式的网络,并且可以包括下列任意一种网络:点到点网络、广播网、广域网、局域网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络104的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104以及网络拓扑结构可以是能够支持此处描述的操作的本领域内普通技术人员所知的任一种这样的网络或网络拓扑结构。
【0024】如图1A所示,在网络104和104′之间示出第一网络优化设备200并且在网络104′和104″之间示出第二网络优化设备200′。在一些实施例中,设备200可以位于网络104上。例如,公司企业可以在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104′上。在一些实施例中,设备200′可以位于网络104′或者网络104″上。例如设备200可以位于公司的数据中心。在一个实施例中,设备200和设备200′可以位于相同网络上。在另一个实施例中,设备200和设备200′可以位于不同网络上。
【0025】在一个实施例中,设备200是用于加速、优化或者以其他方式改善任意类型和形式的网络业务量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能强化的代理。在其它实施例中,设备200是任意类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于Ft.Lauderdale Florida的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任意一种。在其它实施例中,设备200包括由位于Seattle,Washington的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在另一个实施例中,设备200包括由位于Sunnyvale,California的Juniper NetWorks公司出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备200包括由San Francisco,California的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的Expand Networks公司出品的WAN相关装置中的任意一种。在一个实施例中,设备200包括由位于Cupertino,California的Packeteer公司出品的任意一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于San Jose,California的Cisco Systems公司出品的任意WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
【0026】在一些实施例中,设备200提供用于分支机构或远程办公室的应用和数据加速业务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在另一个实施例中,设备200加速文件的递送,例如经由公共因特网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储设备中提供高速缓存来加速应用和数据的递送。在一个实施例中,设备205提供在任意级别的网络堆栈或在任意的协议或网络层的网络业务量的压缩。在另一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任意会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下面B部分中讨论设备200的优化技术、操作和架构的进一步细节。
【0027】仍旧参考图1A,网络环境可以包括多个、逻辑分组的服务器106。在这些实施例中,服务器的逻辑组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务器106可以是在地理上分散的。有时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户机102来执行一个或多个应用。
【0028】在每个群组38中的服务器106可以是不同种类的。一个或多个服务器106可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另一种类型的操作系统平台(例如,Unix或Linux)来进行操作。每个群组38中的服务器106不需要与同一群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的组可以使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器106,则可以增加在群组38中的服务器106之间的数据传输速度。
【0029】服务器106可以是文件服务器、应用服务器、web服务器、代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包括活动目录(Active Directory)。客户机102也可以被称为客户机节点或端点。在一些实施例中,客户机102有能力起到寻求访问服务器上的应用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应用的访问的应用服务器的作用。
【0030】在一些实施例中,客户机102与服务器106进行通信。在一个实施例,客户机102直接与群组38中的服务器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻近应用以与群组38中的服务器106进行通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群组38中的服务器106进行通信。例如,通过网络104,客户机102可以请求执行由群组38中的服务器106a-106n寄载的多个应用,并接收应用执行的结果输出用于显示。在一些实施例中,只有主节点提供所要求的识别并提供与寄载被请求的应用的服务器106′相关的地址信息的功能。
【0031】在一个实施例中,服务器106提供web服务器的功能。在另一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自于服务器106b的对请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与寄载由所述应用的列举所标识的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户机102直接与服务器106进行通信以访问所标识的应用。在另一个实施例中,客户机102接收由执行服务器106上的标识的应用所生成的诸如显示数据的应用输出数据。
与其他设备一起布置
【0032】现在参考图1B,描述网络环境的另一个实施例,其中,网络优化设备200和诸如网关、防火墙或者加速设备的一个或者多个其他设备205、205′(总的称为设备205或者第二设备205)布置在一起。例如,在一个实施例中,设备205是防火墙或者安全设备,而设备205′是LAN加速装置。在一些实施例中,客户机102可以经由一个或者多个第一设备200和一个或者多个第二设备205与服务器106相通信。
【0033】一个或者多个设备200和205可以布置在客户机102和服务器106之间的网络或者网络通信路径中的任一点处。在一些实施例中,第二设备205可以布置在和第一设备200相同的网络104上。在其他实施例中,第二设备205可以布置在和第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在例如网络104的相同网络上,而第一设备200′和第二设备205′可以位于诸如网络104″的相同网络上。
【0034】在一个实施例中,第二设备205包括任一类型和形式传输控制协议或者传输后终接装置,诸如网关或者防火墙装置。在一个实施例中,设备205通过建立与客户机的第一传输控制协议连接以及与第二设备或者服务器的第二传输控制连接,来终接传输控制协议。在另一个实施例中,设备205通过改变、管理或者控制客户机和服务器或者第二设备之间的传输控制协议连接的行为,来终接传输控制协议。例如,设备205可以以有效终接传输控制协议连接或者作用为或者模拟为终接连接的方式来改变、排列、转发或者传输网络分组。
【0035】在一些实施例中,第二设备205是性能强化代理。在一个实施例中,设备205提供虚拟专用网络(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN(SSL VPN)连接。在其他实施例中,设备205提供基于IPsec(互联网协议安全)的VPN连接。在一些实施例中,设备205提供任意一个或者多个以下的功能性:压缩、加速、负载平衡、切换/路由、高速缓存和传输控制协议(TCP)加速。
【0036】在一个实施例中,设备205是位于Ft.Lauderdale Florida的Citrix Systems公司出品的被称为访问网关、应用防火墙、应用网关或者WANScaler的产品实施例。由此,在一些实施例中,设备205包括任一逻辑、功能、规则或者操作来执行诸如SSL VPN连接、SSL卸载、切换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或者功能性。
【0037】在一些实施例中,设备205提供在客户机102和服务器106之间的SSL VPN连接。例如,第一网络104上的客户机102请求建立到第二网络104′上的服务器106的连接。在一些实施例中,第二网络104″是不可从第一网络104路由的。在其它实施例中,客户机102在公用网104上,而服务器106在诸如公司网的专用网104′上。在一个实施例中,客户机代理拦截第一网络104上的客户机102的通信,加密所述通信,并经由第一传输层连接发送所述通信到设备205。设备205将第一网络104上的第一传输层连接关联到第二网络104上的到服务器106的第二传输层连接。设备205从客户机代理接收被拦截的通信,解密所述通信,并经由第二传输层连接发送所述通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。在一个实施例中,设备205提供在两个网络104和104′之间用于客户机102的端到端安全传输层连接。
【0038】在一个实施例中,设备205在虚拟专用网104上寄载客户机102的内联网网际协议或内联网IP地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/或主机名的本地网络标识符。当经由设备205连接到第二网络104′时,设备205在第二网络104′上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名的网络标识符。使用客户机的建立的内联网IP,设备205在第二或专用网104′上监听并接收指向客户机102的任意通信。在一个实施例中,设备205在第二专用网104上充当或代表客户机102。
【0039】在一些实施例中,设备205具有提供用于操控诸如SSL或者TLS的任意安全相关的协议或者其中涉及的任意功能的处理的逻辑、商业规则、功能或者操作的加密引擎。例如,加密引擎加密和解密经由设备205通信的网络分组或者其中任意部分。加密引擎还可以代表客户机102a-102n、服务器106a-106n或者设备200、205设置或者建立SSL或者TLS连接。由此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧穿协议来在客户机102a-102n和服务器106a-106n之间提供虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其他实施例中,加密引擎包括在加密处理器上运行的可执行指令。
【0040】在一些实施例中,设备205提供下列一个或多个加速技术来在客户机102和服务器106之间进行通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;以及6)高速缓存。在一个实施例中,设备200通过重复地打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许客户机经由因特网的重复数据访问来减轻服务器106的通过反复打开和关闭到客户机102的传输层连接所造成的大量处理负载。这个技术在这里被称为“连接池(connection pooling)”。
【0041】在一些实施例中,为了经由池化的传输层连接来无缝拼接从客户机102到服务器106的通信,设备205通过在传输层协议级修改序号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在入站分组(即,接收来自客户机102的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改变为预期的服务器的网络地址。在出站分组(即,接收来自服务器106的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。所述分组的序号和确认号也被转换为到客户机102的设备205的传输层连接上由客户机102所期待的序号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。
【0042】在另一个实施例中,设备205为客户机102和服务器106之间的通信提供切换或负载平衡功能。在一些实施例中,设备205根据层4净荷或应用层请求数据来分配业务量并将客户机请求引向服务器106。在一个实施例中,虽然网络分组的网络层或层2标识了目的地服务器106,但设备205通过作为传输层分组的净荷而携带的应用信息和数据来确定服务器106以分配网络分组。在一个实施例中,设备205的健康监测程序监控服务器的健康以确定为其分配客户机请求的服务器106。在一些实施例中,如果设备205探测到服务器106不可用或具有超过预定阈值的负载,则设备205可以将客户机请求引向或分配到另一个服务器106。
【0043】在一些实施例中,设备205充当域名服务(DNS)解析器或者以其他方式提供来自于客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备205响应具有设备205的IP地址或由设备205寄载的IP地址的客户机DNS请求。在该实施例中,客户机102发送用于域名的网络通信到设备200。在另一个实施例中,设备200响应具有第二设备200′的IP地址或由第二设备200′寄载的IP地址的客户机的DNS请求。在一些实施例中,设备205响应具有由设备200确定的服务器106的IP地址的客户机的DNS请求。
【0044】在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295′提供用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙防止拒绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求内容以识别和阻塞基于应用程序的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或因特网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲器溢出,2)CGI-BIN参数操纵,3)形式/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)破译的访问控制表(ACLs)或弱的口令,7)跨站点的脚本(XSS),8)命令注入,9)SQL注入,10)错误触发感测信息泄漏,11)加密技术的不安全使用,12)服务器误配置,13)后门和调试选择,14)web站点毁损,15)平台或操作系统的脆弱点,以及16)零天攻击。在一个实施例中,设备的应用防火墙以检查或分析网络通信是否有下列的一种或多种情况的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookies不被修改。在其它实施例中,设备205通过强制实施合法URL来防止强制浏览。
【0045】还是在又一些实施例中,应用防火墙设备205保护在网络通信中包含的任意机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任意网络通信以识别在网络分组的任意字段中的任意机密信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙可以在网络通信上采取策略行动,例如阻止网络通信的传输。在另一个实施例中,应用防火墙可以重写、移除或者以其他方式掩盖这样识别出的出现或机密信息。
【0046】尽管总的称为网络优化或者第一设备200和第二设备205,但是第一设备200和第二设备205可以是同样类型和形式的设备。在一个实施例中,第二设备205可以执行和第一设备100相同的功能性或者部分,反之亦然。例如,第一设备200和第二设备205可以一起提供加速技术。在一个实施例中,第一设备可以执行LAN加速而第二设备执行WAN加速,或者反之亦然。在另一个例子中,第一设备200还可以是传输控制协议终接装置,如同第二设备205一样。进一步,尽管设备200和205视为网络上的单独设备,但是设备200和/或205可以是任一客户机102或者服务器106的一部分。
【0047】现在参考图1C,描述用于布置设备200的网络环境的其他实施例。在如图1C的上部所描述的另一个实施例中,设备200可以布置为网络104上的单个设备或者单个代理。例如,设备200可以被设计、构建或者调整来执行此处讨论的WAN优化技术,而不需要第二协作设备200′。在如图1C的下部所描述的其它实施例中,单个设备200可以和一个或者多个第二设备205一起布置。例如,诸如Citrix WANScaler设备的WAN加速第一设备200可以和诸如Citrix NatScaler设备的LAN加速或者应用防火墙第二设备205一起布置。
计算装置
【0048】客户机102、服务器106和设备200和205可以被部署和/或执行在任意类型和形式的计算装置上,例如可以在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或设备。图1C和1D描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1C所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的定点装置127。每个计算装置100也可以包括附加的可选元件,例如一个或多个输入/输出装置130a-130b(通常使用附图标记130来指示)以及与中央处理单元101通信的高速缓存140。
【0049】中央处理单元101是响应并处理取自主存储器单元122的指令的任意逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由位于Mountain View,California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的产品;由位于Santa Clara,California的Transmeta公司出品的产品;由位于WhitePlains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale,California的Advanced Micro Devices公司出品的产品。计算装置100可以基于任意的这些处理器、或者可以如此处所描述地操作的任意其它处理器。
【0050】主存储器单元122可以是能够保存数据并允许微处理器101直接访问任意存储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或者可以如此处所描述地操作的任意其它可用的存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150与主存储器122进行通信(在下面进行更详细的描述)。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1D中,主存储器122可以是DRDRAM。
【0051】图1D描述了在其中主处理器101通过有时被称为背端总线的次级总线来直接与高速缓存140通信的实施例。在其它实施例中,主处理器101使用系统总线150与高速缓存140进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地通过SRAM、BSRAM或EDRAM来提供。在图1C中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。多种总线可以用来将中央处理单元101连接到任意一种I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)来与显示器124进行通信。图1D描述了在其中主处理器101通过HyperTransport、快速I/O或InfiniBand来直接与I/O装置130通信的计算机100的一个实施例。图1D还描述了混合本地总线和直接通信的一个实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。
【0052】计算装置100可以支持任意适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任意客户机代理120或其部分的软件和程序的任意其它装置。计算装置100还可以包括存储装置128,例如一个或多个硬盘驱动器或独立盘的冗余阵列,用于保存操作系统及其它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的应用软件程序。可选地,任意一种安装装置116还可以被用作存储装置128。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如像
Figure A20088001578300461
的可引导CD,作为来自于knoppix.net可用作GNU/Linux分发的GNU/Linux的可引导CD。
【0053】进一步地,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任意或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100接口到可以传达并执行此处所描述的操作的任意类型的网络的任意其它装置。各式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨迹垫、轨迹球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O装置130可以由如图1E所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例如鼠标或光笔的定点装置127的一个或多个I/O装置。进一步地,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。还是在其它实施例中,计算装置100可以提供USB连接以接收诸如由位于LosAlamitos,California的Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。
【0054】在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任意类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以接口、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以接口多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作系统的任意部分可以被配置用于使用多个显示器124a-124n。在其它实施例中,一个或多个显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任意类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配置为具有多个显示装置124a-124n的多个方法和实施例。
【0055】在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、AppleDesktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
【0056】图1C和1D中描述类型的计算装置100典型地在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任意操作系统,例如任意一种版本的微
Figure A20088001578300481
Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac
Figure A20088001578300482
任意的嵌入式操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者可以运行在计算装置上并执行此处所描述的操作的任意其它操作系统。典型的操作系统其中包括:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS2003、WINDOWS XP和WINDOWS SISTA,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果计算机出品的MacOS和OS X;由位于Armonk,New York的国际商业机器公司出品的OS/2;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统(诸如称为Solaris/Sparc,Solaris/x86,AIX IBM,HP UX,和SGI(Silicon Graphics)的Unix的这些版本),以及其它。
【0057】在其它实施例中,计算装置100可以具有符合所述装置的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。在另一个实施例中,计算装置100可以是具有ARM(高级RISC机器)类型的处理器的WinCE或者PchetPC。在一个例子中,计算装置100包括Finland的Nokia出品的Series 80(Nokia 9500或者Nokia 9300)类型的智能电话,其可以运行UnitedKingdom,London的Symbian软件有限公司出品的Symbian OS或者EPOC移动操作系统。在另一个实施例中,计算装置100可以包括Illimois,Schaumburg的Motorola公司出品的FOMA M100品牌的智能电话,并且操作EPOC或者Symbian OS操作系统。在又一个实施例中,计算装置100包括North Carolina,Research Triangle Park的索尼爱立信通信(USA)公司出品的Sony Ericsson P800、P900或者P910 Alpha模型电话(modelphone)。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、智能电话、任意其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计算或电信装置。
B、系统和设备架构
【0058】现在参考图2A,描述了用于递送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多个客户机102的应用递送系统290。简单概述,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境215。计算环境215可以执行或操作用来访问、处理或使用数据文件的应用。可以经由设备200和/或服务器106来递送计算环境215、应用和/或数据文件。
【0059】在一些实施例中,设备200加速将计算环境215或其任意部分递送给客户机102。在一个实施例中,设备200通过应用递送系统290来加速计算环境215的递送。例如,此处描述的实施例可以用来将可由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在客户机102和服务器106之间的传输层业务量。在另一个实施例中,设备200控制、管理、或者调整传输层协议来加速递送计算环境。在一些实施例中,设备200使用高速缓存和/或压缩技术来加速递送计算环境。
【0060】在一些实施例中,应用递送管理系统290根据多个执行方法以及根据经由策略引擎295应用的任意验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应用递送技术。使用这些技术,远程用户可以从任意网络连接装置100获取计算环境以及访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统290可以驻留于服务器106或在服务器106上执行。在另一个实施例中,应用递送系统290可以驻留于多个服务器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可以在服务器群组38中执行。在一个实施例中,执行应用递送系统190的服务器106还可以存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执行应用递送系统290,而不同的服务器106n可以存储或提供应用和数据文件。在一些实施例中,应用递送系统290、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在又一个实施例中,应用递送系统290的任意部分可以驻留、执行或保存或被分配于设备200或多个设备。
【0061】客户机102可以包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可以经由网络104、104′和设备200来从服务器106请求应用和数据文件。在一个实施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可以不具有本地存储或可存取的应用和数据文件。响应于请求,应用递送系统290和/或服务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以以应用流的形式发送该应用,以在客户机102上的计算环境215中进行操作。
【0062】在一些实施例中,应用递送系统290包括Citrix Systems公司的例如MetaFrame或Citrix表示(Presentation)服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微
Figure A20088001578300501
Windows终端服务。在一个实施例中,应用递送系统290可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到客户机102或用户。在另一个实施例中,应用递送系统290可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
【0063】在一个实施例中,应用递送系统290包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎295。在一些实施例中,策略引擎295确定用户或客户机102可以访问的一个或多个应用。在另一个实施例中,策略引擎295确定应用应该如何被递送给用户或客户机102,例如执行方法。在一些实施例中,应用递送系统290提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给客户机120以用于本地执行。
【0064】在一个实施例中,客户机102请求执行应用程序而包括服务器106的应用递送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在另一个实施例中,服务器106从客户机102接收可用应用的列举的请求。在一个实施例中,响应于所述请求或收到的证书,应用递送系统290列举客户机102可用的多个应用程序。应用递送系统290接收请求以执行所列举的应用。应用递送系统290选择预定数目的方法中的一个来执行列举的应用,例如响应于策略引擎的策略。应用递送系统290可以选择一个执行应用的方法,使得客户机102可以接收通过在服务器106上执行应用程序而生成的应用输出数据。应用递送系统290可以选择执行应用的方法,使得本地机器102可以在检索包括应用的多个应用文件之后本地执行所述应用程序。在又一个实施例中,应用递送系统290可以选择执行应用的方法以经由网络104将应用流式传输到客户机102。
【0065】客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。在一个实施例中,服务器106可以使用任意瘦-客户机或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任意类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与VoIP通信相关的任意类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输视频和/或音频的应用。
【0066】在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群组38作为应用而执行CitrixSystems公司的例如MetaFrame或Citrix表示服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微
Figure A20088001578300521
Windows终端服务。在一个实施例中,应用是由位于Fort Lauderdale,Florida的Citrix Systems公司开发的ICA客户机。在其它实施例中,应用包括由位于Redmond,Washington的微软公司开发的远程桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是提供例如由位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、web或网络服务器、或桌面共享服务器、或协作服务器。在一些实施例中,任意一种应用可以包括任意类型的寄载服务或产品,例如由Santa Barbara,California的Citrix Online部门提供的GoToMeetingTM、由位于Santa Clara,California的WebEx公司提供的WebExTM、或由位于Redmond,Washington的微软公司提供的微软Office Live Meeting。
示例设备架构
【0067】图2A还示出设备200的示例实施例。仅通过示例来提供图2A中的设备200的架构并且不意于以任一方式受限。设备200可以包括任一类型和形式的计算装置100,诸如结合上面图1D和1E所描述的任一元件或者部分。总的来说,设备200具有一个或者多个网络端口266A-266N和一个或者多个网络堆栈267A-267N用于经由网络104接收和/或传输通信。设备200还局域网络优化引擎250,用于优化、加速或者以其他方式改进通过设备200的任一网络业务量或者通信的性能、操作或者质量。
【0068】设备200包括操作系统或者受操作系统的控制。设备200的操作系统可以是任一类型和/或形式的Unix操作系统,但是本发明不受这样的限制。由此,设备200可以运行任意操作系统,诸如任意一种版本的微
Figure A20088001578300522
Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac
Figure A20088001578300523
任意的嵌入式操作系统、任意的网络操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置或者网络装置的任意操作系统、或者可以运行在设备200上并执行此处所描述的操作的任意其它操作系统。
【0069】设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核或者系统空间和用户或者应用空间。内核空间典型地被保留用于运行内核,所述内核包括任一设备驱动程序、内核扩展或其它内核相关软件。如本领域技术人员所知,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间还包括和网络优化引擎250或其部分一起工作的多个网络服务或进程。另外,内核的实施例将依赖于由装置200所安装、配置或者以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或者以其他方式运行于用户模式的程序所使用的存储器区域或部分操作系统。用户模式应用不可以直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或者应用空间用于执行或者运行应用和提供用户级程序、服务、过程和/或任务。
【0070】设备200具有一个或者多个网络端口266用于通过网络104传输和接收数据。网络端口266提供计算装置和网络104或者另一个装置100之间的物理和/或逻辑接口用于传输和接收网络通信。网络端口266的类型和形式依赖于网络的类型和形式以及用于连接到网络的介质的类型。进一步,提供用于网络端口266和网络堆栈267或者由其使用的任一软件可以运行在内核空间或者用户空间中。
【0071】在一个实施例中,设备200包括诸如基于TCP/IP的堆栈的一个网络堆栈267,用于在网络105上与客户机102和/或服务器106进行通信。在一个实施例中,网络堆栈267用于与诸如网络104的第一网络以及第二网络104′进行通信。在另一个实施例中,装置200可以包括两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A可以用于和第一端口266A相结合在第一网络104上通信。第二网络堆栈267N可以用于和第二端口266N相结合在第二网络104′上通信。在一个实施例中,网络堆栈267包括一个或多个缓冲器用于对一个或多个网络分组排队以便被设备200发送。
【0072】网络堆栈267包括任意类型和形式的软件或硬件或其任意组合,用于提供到网络的连通性以及与网络的通信。在一个实施例中,网络堆栈267包括用于网络协议套件的软件实现。网络堆栈267可以包括一个或多个网络层,例如如本领域技术人员所认识和理解的开放系统互连(OSI)通信模型的任意网络层。因而,网络堆栈267可以包括用于下列OSI模型的任意一层的任意类型和形式的协议:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层以及7)应用层。在一个实施例中,网络堆栈267包括在网际协议(IP)的网络层协议上的传输控制协议(TCP),通常被称为TCP/IP。在一些实施例中,可以在以太网协议上携带TCP/IP协议,所述以太网协议可以包括诸如由IEEE 802.3所覆盖的那些协议的IEEE广域网(WAN)或局域网(LAN)协议的任意族。在一些实施例中,网络堆栈267包括诸如IEEE 802.11和/或移动网际协议的任意类型和形式的无线协议。
【0073】考虑到基于TCP/IP的网络,可以使用任意基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、公共因特网文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在另一个实施例中,网络堆栈267包括诸如修改的传输控制协议的任意类型和形式的传输控制协议,例如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。在其它实施例中,网络堆栈267可以使用诸如IP上UDP的任意类型和形式的用户数据报协议(UDP),例如用于音频通信或实时数据通信。
【0074】进一步,网络堆栈267可以包括诸如TCP驱动程序或网络层驱动程序的支持一个或多个层的一个或多个网络驱动程序。网络驱动程序可以被包括作为计算装置100的操作系统的一部分或作为计算装置100的任意网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈267的任意一种网络驱动程序可以被定制、修改或改变以提供支持此处描述的任意技术的网络堆栈267的定制或修改部分。
【0075】在一个实施例中,设备200使用单个网络堆栈267提供或者维持客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或者控制客户机和服务器之间的传输控制协议连接的行为来有效终接传输层连接。在这些实施例中,设备200可以使用单个网络堆栈267。在其他实施例中,设备200终接诸如客户机102的TCP连接的第一传输层连接,并且建立代表客户机102或者由客户机102使用的到服务器106的第二传输层连接,例如第二传输层连接在设备200和服务器106处终接。第一和第二传输层连接可以经由单个网络堆栈267建立。在其他实施例中,设备200使用多个网络堆栈,例如267A和267B。在这些实施例中,第一传输层连接可以在一个网络堆栈267A处建立或者终接,而第二传输层连接可以在第二网络堆栈267N处建立或者终接。例如,一个网络堆栈可以用于在第一网络上接收和发送网络分组,并且另一个网络堆栈用于在第二网络上接收和发送网络分组。
【0076】如图2A中所示,网络优化引擎250包括一个或者多个以下的元件、部件或者模块:网络分组处理引擎240、LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295′。网络优化引擎250或其一部分可以包括软件、硬件或者软件和硬件的任意组合。此外,网络优化引擎250所提供的或者使用的任一软件可以运行在内核空间或者用户空间。例如,在一个实施例中,网络优化引擎250可以运行在内核空间中。在另一个实施例中,网络优化引擎250可以运行在用户空间中。在又一个实施例中,网络优化引擎250的第一部分运行在内核空间中,而网络优化引擎250的第二部分运行在用户空间中。
网络分组处理引擎
【0077】通常也被称为分组处理引擎或分组引擎的网络分组引擎240,负责管理由设备200经由网络端口266和网络堆栈267接收和发送的分组的处理。网络分组引擎240可以操作在网络堆栈267的任一层。在一个实施例中,网络分组引擎240操作在网络堆栈267的层2或者层3。在一些实施例中,分组引擎240在在诸如TCP/IP实施例中的IP层的网络层处拦截或者以其他方式接收分组。在另一个实施例中,分组引擎240在网络堆栈267的层4处操作。例如,在一些实施例中,分组引擎240在传输层处拦截或者以其他方式接收分组,诸如在TCP/IP实施例中的TCP层处拦截分组。在其他实施例中,分组引擎240在层4之上的任一会话或者应用层处操作。例如,在一个实施例中,分组引擎240在传输层之上的协议层拦截或者以其他方式接收网络分组,诸如TCP实施例中的TCP分组的净荷。
【0078】分组引擎240可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,分组引擎240与一个或多个网络堆栈267通信以经由网络端口266发送和接收网络分组。分组引擎240可以包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入(即,接收)或输出(即,发送)的网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。分组处理定时器提供任意类型和形式的信号给分组引擎240,以通知、触发或通信时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以例如像100毫秒、50毫秒、25毫秒、10毫秒、5毫秒或者1毫秒的这样的毫秒级来进行操作。
【0079】在操作期间,分组引擎240可以与诸如LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295′的网络优化引擎250的任一部分接口、集成或通信。因而,可以响应于分组处理定时器和/或分组引擎240来执行LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295′的任意逻辑、功能或操作。在一些实施例中,可以以例如小于或等于10毫秒的时间间隔的、通过分组处理定时器提供的时间间隔的粒度来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任意逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可以响应于集成的分组引擎240和/或分组处理定时器242来执行任意高速缓存的对象的终止。在另一个实施例中,可以将高速缓存的对象的满期或终止时间设置为与分组处理定时器的时间间隔相同的粒度级,例如每10毫秒。
高速缓存管理器
【0080】高速缓存管理器232可以包括软件、硬件或软件和硬件的任意组合,以将数据、信息和对象保存到存储器或者存储装置的高速缓存中,提供高速缓存访问,并且控制和管理高速缓存。由高速缓存管理器232处理和保存的数据、对象或内容可以包括诸如标记语言的或者通过任意协议通信的任意类型的数据。在一些实施例中,高速缓存管理器232复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中原始数据也许需要相对于读取高速缓存存储器或者存储元件来说更长的访问时间以取出、计算或者以其他方式获取。一旦数据被保存在高速缓存中,未来的使用可以通过访问高速缓存的拷贝而不是重新取回或再计算原始数据来进行,从而减少访问时间。在一些实施例中,高速缓存可以包括设备200的存储器中的数据对象。在另一个实施例中,高速缓存可以包括诸如硬盘的一部分的设备200的任意类型和形式的存储元件。在一些实施例中,装置的处理单元可以提供由高速缓存管理器232使用的高速缓存存储器。在又一个进一步的实施例中,高速缓存管理器232可以使用存储器、存储装置或处理单元的任意部分和组合,以用于高速缓存数据、对象及其它内容。
【0081】进一步地,高速缓存管理器232包括任意逻辑、功能、规则或操作,以执行设备200的任意高速缓存技术。在一些实施例中,高速缓存管理器232可以作为应用、库、程序、服务、进程、线程或任务来操作。在一些实施例中,高速缓存管理器232可以包括任意类型的通用处理器(GPP)或者诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC)的任意其它类型的集成电路。
策略引擎
【0082】策略引擎295′包括任意逻辑、功能或者操作,用于提供和应用一个或者多个策略或者规则到设备200的任一部分的功能、操作或者配置。策略引擎295′可以包括例如智能统计引擎或者其他可编程应用。在一个实施例中,策略引擎295提供配置机制来允许用户识别、指定、限定或者配置用于网络优化引擎250或者其任一部分的策略。例如,策略引擎295可以提供策略,用于高速缓存哪些数据、何时高速缓存数据、高速缓存数据用于谁、何时终止高速缓存中的对象或者刷新高速缓存。在其它实施例中,策略引擎236可以包括任意逻辑、规则、功能或操作,以便确定和提供由设备200高速缓存的对象、数据或内容的访问、控制和管理以及由设备200执行的安全、网络业务量、网络访问、压缩或任意其它功能或操作的访问、控制和管理之外。
【0083】在一些实施例中,策略引擎295′基于以下的任意一个或者多个来提供和应用一个或者多个策略:用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或者网络业务量的内容。在一个实施例中,策略引擎295′基于网络分组的任意协议层处的任一字段或者首部来提供和应用策略。在另一个实施例中,策略引擎295′基于网络分组的任一净荷来提供和应用策略。例如在一个实施例中,策略引擎295′基于将所运载的应用层协议的内容的特定部分识别为传输层分组的净荷来应用策略。在另一个实施例中,策略引擎295′基于客户机、服务器或者用户证书所识别的任一信息来应用策略。在又一个实施例中,策略引擎295′基于关于客户机所获取的任意属性或者特征来应用策略,诸如经由任一类型和形式的端点检测(参见示例以下讨论的客户机代理的收集代理)。
【0084】在一个实施例中,策略引擎295′和应用递送系统290的策略引擎295结合或者协同运行。在一些实施例中,策略引擎295′是应用递送系统290的策略引擎295的分布的部分。在另一个实施例中,应用递送系统290的策略引擎295被部署在或者执行在设备200上。在一些实施例中,策略引擎295和295′都在设备200上操作。在又一个实施例中,设备200的策略引擎295′或其一部分在服务器106上操作。
多协议和多层压缩引擎
【0085】压缩引擎238包括用于压缩诸如由装置200的网络堆栈267使用的任意一种协议的网络堆栈的一个或多个协议的网络分组的任意逻辑、商业规则、功能或操作。压缩引擎238也可以被称为多协议压缩引擎238,这是由于其可以被设计、构建或者能够压缩多个协议。在一个实施例中,压缩引擎238应用上下文不敏感的压缩,其是应用到数据而不需要知道数据类型的压缩。在另一个实施例中,压缩引擎238应用上下文敏感的压缩。在此实施例中,压缩引擎238利用知道数据类型来从一组合适算法中选择特定压缩算法。在一些实施例中,特定协议的知识被用来执行上下文敏感的压缩。在一个实施例中,设备200或者压缩引擎238可以使用端口号(例如,公知端口)以及来自自身连接的数据来确定要使用的适当的压缩算法。一些协议仅使用单个类型的数据,仅要求在连接建立时可以被选择的单个压缩算法。其他协议在不同时间包括不同类型的数据。例如,引入有其他协议数据的随意类型的POP、IMAP、SMTP和HTTP所有移动文件。
【0086】在一个实施例中,压缩引擎238使用德尔塔类型的压缩算法。在另一个实施例中,压缩引擎238使用第一位置压缩以及在高速缓存、存储器或者盘中保存的数据上搜索重复的模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎使用有损压缩算法。在一些情况中,知道数据类型和有时来自用户的许可被要求使用有损压缩算法。在一些实施例中,压缩不限于协议的净荷。协议自身的控制字段可以被压缩。在一些实施例中,与对于净荷的使用不同,压缩引擎238对于控制字段使用不同的算法。
【0087】在一些实施例中,压缩引擎238在网络堆栈267的一个或者多个层处压缩。在一个实施例中,压缩引擎238在传输层协议处压缩。在另一个实施例中,压缩引擎238在应用层协议处压缩。在一些实施例中,压缩引擎238在层2-4协议处压缩。在其他实施例中,压缩引擎238在层5-7处压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。
【0088】在一些实施例中,压缩引擎238使用基于存储器压缩、基于高速缓存压缩或者基于盘压缩,或者其任一组合。由此,压缩引擎238可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用保存在诸如RAM的存储器中的数据的历史。在另一个实施例中,压缩引擎238使用保存在诸如处理器的L2高速缓存的高速缓存中的数据的历史。在其他实施例中,压缩引擎238使用保存到盘或者存储位置的数据的历史。在一些实施例中,压缩引擎238使用分层的基于高速缓存、基于存储器和基于盘的数据历史。压缩引擎238可以首先使用基于高速缓存的数据来确定一个或者多个数据匹配用于压缩,并且随后可以检查基于存储器的数据来确定一个或者多个数据匹配用于压缩。在另一个情况中,压缩引擎238在检查基于高速缓存和/或基于存储器的数据历史之后可以检查盘存储用于数据匹配来压缩。
【0089】在一个实施例中,多协议压缩引擎238双向地在客户机102a-102n和服务器106a-106n之间压缩任意的基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、公共因特网文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中提供诸如可扩展标记语言(XML)的任意标记语言的压缩。在一个实施例中,多协议压缩引擎238提供诸如为设备200设计用于设备200通信的的任意协议的任意高性能协议的压缩。在另一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任意通信的任意净荷或任意通信,所述修改的传输控制协议诸如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。
【0090】因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的通用的企业应用所启动的任意客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240结合在一起,多协议压缩引擎238可以压缩由传输层协议所携带的任意一种协议,诸如任意应用层协议。
LAN/WAN检测器
【0091】LAN/WAN检测器238包括用于自动检测慢侧连接(例如诸如内联网的广域网(WAN)连接)和相关端口267以及快侧连接(例如局域网(LAN)连接)和相关端口267的任一逻辑、商业规则、功能或者操作。在一些实施例中,LAN/WAN检测器238监控设备200的网络端口267上的网络业务量来检测同步分组,有时称之为“标记”网络分组。该同步分组识别网络分组的类型或者速度。在一个实施例中,同步分组识别WAN速度或者WAN类型的连接。LAN/WAN检测器238还识别对标记的同步分组的确认分组的接收以及其在哪个端口上被接收。设备200随后配置其自身来操作标记的同步分组到达的所识别的端口,使得该端口上的速度被设置为与该端口连接的网络相关联的速度。其它端口随后被设置为和该端口连接的网络相关联的速度。
【0092】此处为了讨论方便,“慢”侧可以参考关于与诸如因特网的广域网(WAN)的连接,并且操作在WAN的网络速度。同样,“快”侧可以参考关于与局域网(LAN)的连接并且操作在LAN的网络速度。然而,注意到网络中“快”和“慢”侧可以根据每个连接而改变并且是针对网络连接的速度或网络拓扑的类型的相对术语。这样的配置可以用在复杂网络拓扑中,其中网络仅在和相邻网络比较时是“快”或“慢”的并且在某种意义上不是绝对的。
【0093】在一个实施例中,LAN/WAN检测器238可以被用来允许设备自动发现其连接的网络。在另一个实施例中,LAN/WAN检测器238可以被用来检测部署在网络104中的第二设备200’的存在或者缺失。例如,根据图1A的操作中的自动发现机制起到以下作用:设备200和200’被置于和联接客户机102和服务器106的连接相一致。设备200和200’处于连接两个LAN的诸如内联网的低速链路的端点。在一个示例实施例中,设备200和200’的每一个包括两个端口,一个连接到“较低”速链路并且另一个连接到诸如LAN的“较高”速链路。到达一个端口的任一分组被复制到其它端口。因此,设备200和200’每一个被配置为起到两个网络104之间的桥接器的作用。
【0094】当诸如客户机102的端点节点开启与诸如服务器106的另一个端点节点的新的TCP连接,则客户机102将具有同步(SYN)首部位集或者SYN分组的TCP分组发送到服务器106。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组传递通过设备200时,设备200将特征TCP首部选项插入、附加或者以其他方式提供给分组,以告知其存在。如果分组传递通过第二设备,则在此示例设备200’中,第二设备记录SYN分组上的首部选项。服务器106响应于具有同步确认(SYN-ACK)分组的SYN分组。当SYN-ACK分组传递通过设备200’时,TCP首部选项被标记(例如附加、插入或者增加)到SYN-ACK分组来将设备200’的存在告知设备200。当设备200接收到此分组,则两个设备200和200’此时互相察觉并且该连接可以被适当加速。
【0095】进一步到LAN/WAN检测器238的操作,描述用于使用SYN分组来检测网络的“快”和“慢”侧的方法或者过程。在客户机102和服务器106之间的传输层连接建立期间,设备200经由LAN/WAN检测器238确定SYN分组是否用确认(ACK)来被标记。如果其被标记,则设备200将接收标记的SYN分组(SYN-ACK)的端口识别或者配置为“慢”侧。在一个实施例中,设备200可选地在将分组复制到其它端口之前将ACK标记从分组移除。如果LAN/WAN检测器238确定分组未被标记,则设备200将接收未标记的SYN分组的端口识别或者配置为“快”侧。设备200随后用ACK来标记SYN分组并且将分组复制到其它端口。
【0096】在其他实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快和慢侧。设备200经由LAN/WAN检测器238确定是否用确认(ACK)标记了SYN-ACK分组。如果其被标记,则设备200将接收标记的SYN分组(SYN-ACK)的端口识别或者配置为“慢”侧。在一个实施例中,设备200可选地在将分组复制到其它端口之前将ACK标记从分组移除。如果LAN/WAN检测器238确定分组未被标记,则设备200将接收未标记的分组的端口识别或者配置为“快”侧。LAN/WAN检测器238确定SYN分组是否被标记。如果SYN分组未被标记,则设备200将分组复制到其它端口。如果SYN分组被标记,则设备在将SYN-ACK分组复制到其它端口之前标记该SYN-ACK端口。
【0097】设备200、200’可以增加、插入、修改、附加或者以其他方式提供TCP选项中的任意信息或者数据来提供关于网络连接、网络业务流或者设备200的配置或者操作的任意信息、数据或者特征。以此方式,设备200不仅将其存在通知给另一个设备200’或者标记较高或者较低的速度连接,设备200还经由TCP选项首部来提供关于设备或者连接的附加信息和数据。TCP选项首部信息可以用于或者被设备用于控制、管理、优化、加速或者改进通过设备200的网络业务流,或者以其他方式配置其自身或者网络端口的操作。
【0098】尽管总的结合检测网络连接的速度或者设备的存在来描述,但是LAN/WAN检测器238还可以被用于将设备200的任意类型的功能、逻辑或者操作应用到网络业务量的端口、连接或者流。更具体地,无论装置在何时在不同端口上执行不同的功能,都可以发生端口的自动分配,其中,在单元操作期间可以做出对任务的端口分配,和/或由设备200可以发现每一端口上的网络段的性质。
流控制
【0099】流控制器220包括用于优化、加速或者以其他方式改进网络分组的传输层通信的性能、操作或者服务质量或者传输层处的分组的递送的任意逻辑、商业规则、功能或者操作。流控制器有时也称之为流控制模块,其调节、管理和控制数据传输率。在一些实施例中,该流控制器220被部署在网络104中的带宽瓶颈处或与其连接。在一个实施例中,该流控制器220有效地调节、管理和控制带宽使用或者利用。在其他实施例中,流控制模块还可以部署在等待时间转变(低等待时间到高等待时间)的网络上和具有介质损失的链路(诸如无线或者卫星链路)上的点处。
【0100】在一些实施例中,流控制器220可以包括用于控制网络传输量的接收率的接收器侧流控制模块和用于控制网络分组的传输率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220部署在第一设备200上并且第二流控制器220’部署在第二设备200’上。同样,在一些实施例中,第一设备200控制接收器侧上的数据流,并且第二设备200’控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于传播通过设备200的网络通信的接收器侧和发送器侧的流控制。
【0101】在一个实施例中,流控制模块220被配置为允许瓶颈处的带宽更充分利用,并且在一些实施例中,不能过度利用。在一些实施例中,流控制模块220透明地缓冲(或者重新缓冲由例如发送器已经缓冲的数据)在具有相关联的流控制模块220的节点之间传递的网络会话。当会话传递通过两个或者多个流控制模块220,则一个或者多个流控制模块控制会话的速率。
【0102】在一个实施例中,流控制模块200被配置具有涉及瓶颈带宽的预定数据。在另一个实施例中,流控制模块220可以被配置为检测瓶颈带宽或者其关联数据。接收器侧流控制模块220可以控制数据传输率。接收器侧流控制模块220通过将传输率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块220,例如数据传输率。在一个实施例中,接收器侧流控制模块220到在由例如服务器106的接收器发送到诸如客户机102的发送器的确认(ACK)分组(或者信号)上捎带(piggyback)这些传输率限制。接收器侧流控制模块220响应于发送器侧流控制模块220’发送的速率控制请求来做这一工作。来自发送器侧流控制模块220’的请求可以在发送器106发送的数据分组上被“捎带”。
【0103】在一些实施例中,流控制器220掌控、调整、模拟、改变、改进或者以其他方式调节传输层协议的行为来提供传输层的递送、数据率和/或带宽利用的改进的性能或者操作。流控制器220可以在传输层实现多个数据流控制技术,包括但不限于1)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传输技术,4)波前检测和消除二义性。5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分包。
【0104】尽管发送器总的在此处描述为客户机102以及接收器为服务器106,但是发送器也可以是诸如网络104上服务器106或者任一计算装置100的任一端点。同样,接收器也可以是网络104上客户机102或者任意其它计算装置。
预确认
【0105】对于预确认流控制技术总的来说,在一些实施例中,流控制器220处理发送器的确认和重新传输,有效终接发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的将设备200布置到网络架构中的一个可能的部署。在此示例实施例中,发送计算机或者客户机102在网络104上例如经由转换器发送数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据传播通过设备200,使得设备200可以将任一必要的算法应用到该数据。
【0106】进一步在该例中,客户机102发送由设备200接收的分组。当设备200接收从客户机102经由VPN设备205发送到接收者的分组时,设备200保留分组的备份并且将分组向下游转发到VPN设备205。设备200随后产生确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK即预确认使得发送器102相信分组已经被成功递送,释放发送器的资源用于随后的处理。在请求分组重新传输的事件中,设备200保留分组数据的备份,使得发送器102不必处理数据的重新传输。这个确认的早期产生可以称为“预确认”。
【0107】如果需要分组的重新传输,设备200将分组重新传输到发送器。设备200可以确定当发送器处于传统系统中时是否需要重新发送,例如,在预定时间之后对于该分组如果没有接收到确认信息则确定分组丢失。对此,设备200监控例如服务器106(或者任意其它下游网络实体)的接收端点产生的确认,使得其可以确认是否分组已经成功递送或者需要重新传输。如果设备200确定分组已经成功发送,则设备200能够自由丢弃所保存的分组数据。设备200还可以禁止将已经由发送端点接收的分组的确认进行转发。
【0108】在上述实施例中,设备200经由流控制器220通过预确认(也称之为”预告知”)的递送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于对发送端点提供过流控制的机制。无需过流控制,因为设备200保存已经预确认到发送端点但还没有确认为由接收端点接收的分组,所以设备200能够用完存储器。在发送器102发送分组到设备200快于设备向下游转发分组的情况中,设备200中可用于保存未确认分组数据的存储器可以快速填充。用于过流控制的机制允许设备200控制来自发送器102的分组的传输以避免该问题。
【0109】在一个实施例中,设备200或者流控制器包括固有的“自同步”(self-clocking)过流控制机制。该自同步归因于这样的顺序:设备200可以被设计为将分组发送到下游并且将ACK发送到发送器102或者106。在一些实施例中,设备200并不预确认分组,直到其向下游发送分组为止。以此方式,发送器102以设备200能够发送分组而不是设备200能够从发送器100接收分组的速率接收ACK。这有助于调节来自发送器102的分组的传输。
窗口虚拟化
【0110】设备200可以实现的另一个过流控制机制是使用TCP窗大小参数,其告知发送器接收器允许发送器填满多少缓冲器。预确认中的非零窗大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续将数据递送到设备,而零窗大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲器变满时通过适当地设置每一预确认中的TCP窗大小来调节来自发送器的分组的流量。
【0111】另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据递送到较慢侧时,设备200中的过流控制机制可以在发送非零窗公布到发送器之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗分组之前等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间,,非零窗分组诸如是指示四个分组的窗大小的分组。对于四个数据分组的每个组由于仅两个ACK分组被发送,而不是对于四个数据分组要发送八个ACK分组,这可以将开销大概降低到原来的四分之一。
【0112】设备200或者流控制器220可以用于过流控制的另一个技术是TCP延迟ACK机制,其跳过ACK来降低网络业务量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或者直到发生固定的超时为止。该机制单独导致开销减半,此外,通过增加分组的数量高于两个,实现附加的开销降低。但是仅延迟ACK本身不足以控制过流,并且设备200还可以使用ACK上公布的窗机制来控制发送器。当这样操作时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。
【0113】在一个实施例中,流控制220不对一组分组的最后一个分组进行预确认。通过不对最后一个分组或者该组的分组的至少一个预确认,设备避免对一组分组的错误确认。例如,如果设备将发送最后一个分组的预确认并且该分组随后丢失,则发送器在分组没有被递送时已经被欺骗认为其被递送。考虑到分组已经递送,则发送器丢弃该数据。如果设备还损失该分组,则不能重新传输该分组到接收者。通过不对一组分组的最后一个分组预确认,则发送器直到该分组被递送时才将其丢弃。
【0114】在另一个实施例中,流控制器220可以使用窗虚拟化技术来控制流速或者网络连接的带宽利用。虽然根据检查诸如RFC 1323的传统文献其可能不是直接明显的,但是存在用于诸如TCP的传输层协议的发送窗。发送窗由于消耗缓冲器空间(尽管在发送器上),所以和接收窗相同。发送器的发送窗包括接收器还没有确认的应用发送的所有数据。在要求重传输的情况中该数据必须保留在存储器中。由于存储器是共享资源,所以一些TCP堆栈实现限制了该数据的大小。当发送窗满时,应用程序尝试发送更多的数据导致阻断应用程序,直到空间可用为止。随后的确认接收将释放发送窗存储器并且不阻断应用程序。该窗大小公知为一些TCP实现中的套接字缓冲器大小。
【0115】在一个实施例中,流控制模块220被配置为提供对增加的窗(或者缓冲器)大小的访问。该配置还可以称为窗虚拟化。在包含作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗范围的位字符串。在一个实施例中,“窗”可以在发送、接收或者二者的上下文中提及。
【0116】窗虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图1A或1B的任意一个环境,建立例如客户机102(为讨论方便,现在称为源节点102)的源节点和例如服务器106(为讨论方便,现在称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
【0117】设备200经由流控制模块220提供窗(或者缓冲器)来允许会话内的增加的数据缓冲能力,尽管具有例如16k字节的小缓冲器大小的端节点。然而,RFC 1323要求窗缩放大于64k字节的任何缓冲器大小,其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗的缩放对应于数据路径中的最小公分母(common denominator),经常是具有小的缓冲器大小的端节点。该窗比例(window scale)通常是0或者1的比例,其对应于直到64k或者128k字节的缓冲器大小。注意到,由于窗大小被限定为随窗比例改变的每一分组中的窗字段,则窗比例建立用于该缓冲期的上限,但并不保证该缓冲器实际上就那么大。每个分组指示窗字段中接收器处当前可用的缓冲器空间。
【0118】在使用窗的虚拟技术缩放的实施例中,在当第一流控制模块220从源节点102接收SYN信号(或者分组)的连接建立(即,会话初始化)期间,流控制模块220将源节点102(其是之前的节点)的窗比例或者如果之前的节点的比例丢失则为窗比例保存0值。第一流控制模块220还在SYN-FCM信号中修改比例,例如将比例从0或者1增加到4。当第二流控制模块220接收SYN信号时,其将来自第一流控制信号的增加的比例保存并且将SYN信号中的比例重置为源节点103的比例值以用于传输到目标节点106。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其将来自目标节点106比例(例如,0或者1)的比例保存并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗比例并且将发送返回源节点102的窗比例修订为下降到例如0或者1的初始比例。基于上面连接建立期间的窗变化会话,会话的例如TCP分组的每一个随后的分组中的窗字段必须根据窗变化转换而改变。
【0119】如上所述,窗比例表示出大于64k的缓冲器大小,并且可以不需要窗虚拟化。因此,窗比例的变化可以用于表示每一个流控制模块220中的增加的缓冲器容量。该缓冲器容量的增加可以被称为窗(或者缓冲器)虚拟化。该缓冲器大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲器大小典型地以字节表示,但是为了讨论方便由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。
【0120】通过示例,描述流控制器220执行的窗(或者缓冲器)虚拟化。在此例中,源节点102和目标节点106配置为与具有受限的16k字节的缓冲器容量的传统端节点相同,其大约等于10个数据分组。典型地,端节点102、106在下一组分组能够传输之前必须等到该分组被传输并且收到确认。在一个实施例中,使用流控制模块220中的增加的缓冲器容量,当源节点103发送其数据分组时,第一流控制模块220接收该分组,将该分组保存在其例如512个分组容量的较大容量的缓冲器中,并且立即发送指示分组接收(“REC-ACK”)的确认信号回到源节点102。源节点102可以随后“清除”其当前缓冲器,将10个新的数据分组载入缓冲器,并且将这些传输到第一流控制模块220上。在此,第一流控制模块220发送REC-ACK信号回到源节点,并且源节点102清除其缓冲器并且对其载入10个更新的分组用于传输。
【0121】当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲器中。当其准备好时,第一流控制模块220可以开始将数据分组传送到第二流控制模块230,其还具有增加的缓冲器大小例如来接收512个分组。第二流控制模块220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的来自目标节点106的每一个REC-ACK导致10个更多分组传输到目标节点106,直到所有的数据分组被传送。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲器来增加源节点(发送器)102和目标节点(接收器)106之间的传输量。
【0122】注意到通过之前描述的数据的“预确认”传输,发送器(或者源节点102)被允许传输超过不需要预确认的可能的更多的数据,因此造成更大的窗大小。例如,在一个实施例中,该技术有效地用在流控制模块220、220’处于缺乏大窗的节点(例如,源节点102或者目标节点106)附近的时候。
重新拥塞
【0123】流控制器220的另一个技术或者算法称之为重新拥塞。标准的TCP拥塞避免算法在面对特定网络条件时公知地表现差,包括:大的RTT(往返时间)、高分组损失率以及其它。当设备200检测到诸如长的往返时间或者高的分组损失的拥塞条件时,设备200插入、代入更好地适合特定网络条件的替代的拥塞避免算法。在一个实施例中,该重新拥塞算法使用分组来有效终接发送器和接收器之间的连接。设备200随后使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特性。设备200监控每一个TCP连接,在特征在于关于不同的维度,选择适合用于当前特征的重新拥塞算法。
【0124】在一个实施例中,当检测到通过往返时间(RTT)限制的TCP连接时,作为多个TCP连接运行的重新拥塞算法被应用。每个TCP连接操作在其自身性能限度内,但是集合的带宽实现了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N和连接束的值过大实现超过其合理共享的带宽。N和连接束的值过小实现低于其合理共享的带宽。建立“N”的一个方法依赖于监控分组损失率、RTT和实际连接的分组大小的设备200。这些数字插入TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算到上限的基本相同的性能,则应用附加的并行连接。如果当前束正获得低于上限的性能,则降低并行连接的数量。以此方式,由于单独的连接束包含不超过其所需的并行,则维持系统的总的共享,来消除协议自身强加的限制。进一步,每个单独的连接保留TCP兼容性。
【0125】建立“N”的另一个方法是使用诸如TCP“Vegas”算法或者TCP“稳定Vegas”算法的并行流控制算法。在此方法中,和连接束中的连接相关的网络信息(例如,RTT、损失率、平均分组大小等等)被集合并且应用到替代流控制算法。该算法的结果相应被分布到控制他们数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。
【0126】在另一个实施例中,并行束中的单独连接被虚拟化,即实际上不建立单独的TCP连接。事实上拥塞避免算法仍被修改为好像存在N个并行连接来运行。该方法的优点呈现为如同单个连接一样传输网络节点。因此,通过重新拥塞算法而不会影响这些节点的QOS、安全性和其他监控方法。在又一个实施例中,并行束中的单独连接是真实存在的,即独立的。TCP连接被建立用于束中的并行连接的每一个。不必修改用于每一个TCP连接的拥塞避免算法。
重新传输
【0127】在一些实施例中,流控制器220可以应用本地重传输技术。用于实现预确认的一个原因是准备发送到高损链路(例如无线)。在这些实施例中,预确认设备200或者流控制模块220最有益地位于无线链路“之前”。这允许要进行的重传输更接近于高损链路,将重传输负荷从网络的剩余部分移除。设备200可以提供本地重传输,在此情况中,由于链路失败而丢失的分组由设备200直接重传输。由于这消除了诸如服务器106的端节点上的重传输负担和任一网络104的基础结构,所以这是有益的。利用设备200提供本地重传输,丢失的分组可以被重传输通过高损链路而不需要必须由端节点重传输并且来自端节点的数据传输率对应下降。
【0128】用于实现预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,存在多种情况导致RTO,即使是成功接收传输中的较大百分比的分组。使用标准TCP算法,RTT窗中丢失多于一个分组有可能会导致超时。此外,如果重传输分组丢失,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组损失率也会导致频繁的重传输超时(RTO)。在一个实施例中,设备200使用重传输和超时算法来避免早期的RTO。设备200或者流控制器220基于每一分组来维持重传输的计数。每当重传输分组时,计数加一并且设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传输预定次数后后才被宣告为RTO。
波前检测和消除二义性
【0129】在一些实施例中,设备200或者流控制器220在管理和控制网络业务量的流时使用波前检测和消除二义性技术。在此技术中,流控制器220使用传输标识符或者号码来确定是否需要重传输特定数据分组。通过示例,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例和传输号码相关联。可以理解,由于序列号索引分组中的数据而传输号码索引该数据的传输的实例,分组的传输号码与分组的序列号不相同。传输号码可以是对于该目的可用的任意信息,包括和分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。由于数据段可以被重传输,则不同的传输号码可以和特定序列号相关联。
【0130】由于发送器传输数据分组,所以发送器保持数据分组传输的所确认的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码索引。通过保持对于每个分组的传输号码,发送器保留数据分组的传输的顺序。当发送器接收到ACK或者SACk时,发送器确定和所指示的接收器(在所接收的确认中)已经接收的分组相关联的最高传输号码。具有最低传输号码的任一未完成的未确认分组被假设丢失。
【0131】在一些实施例中,当到达分组已经被重传输时,发送器呈现出不明确的状态:标准的ACK/SACK没有包含足够的信息来允许发送器确定到达分组的传输已经触发该确认。从而接收到不明确确认之后,发送器将确认消除二义性来将其和传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该不确定性。
【0132】在一个实施例中,发送器包括具有所传输的数据分组的标识符,并且接收器返回该标识符或者其中具有确认的函数。标识符可以是时间戳(例如在RFC 1323中描述的TCP时间戳)、序列号、可以被用来在分组传输的两个或者多个实例之间解析的任一其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,每一分组使用高达32位唯一的信息来标记。接收到数据分组时,接收器将此唯一信息回送到具有该确认的发送器。发送器确保最初发送的分组和其重传输的一个或者多个版本包含对于时间戳选项的不同值,允许明确地消除ACK不确定性。发送器可以将该唯一信息保存在例如用来保存所发送数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此不会遇到或者遇到很少互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可以要求十个字节的TCP首部空间,降低了网络上的有效吞吐率并且减少了可用于其它TCP选项的空间。
【0133】在另一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项类似的方式来消除二义性。发送器安排该分组的最初的和重传输形式的的ID字段值,以使在IP首部中具有不同的ID字段。在接收器或者其中代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发ACK的分组的ID字段的函数。由于该方法不需要附加的数据发送,保持网络和TCP首部空间的有效性,所以该方法是有益的。所选择的功能应该提供消除二义性的高度可能性。在优选实施例中,发送器选择具有最高有效位设置为0的IP ID值。当接收器响应时,IP ID值被设置为具有最高有效位设为1的同样的IP ID值。
【0134】在另一个实施例中,和非模糊性确认相关联的传输号码被用来消除不确定确认的二义性。该技术基于的原理是由于该两个分组在时间上更接近地传输,则对于两个分组的确认将倾向于时间上更接近地接收。由于对于这样的分组所接收的确认不能轻易地与传输号码相关联,所以没有重传输的分组不会导致不确定性。因此,对于在时间上接近于已知确认的多接收的不确定确认,比较这些已知的传输号码和可能的传输号码。发送器将不确定确认的传输号码和最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到数据分组1的确认并且最后所接收的确认是用于数据分组5,发送器通过假设数据分组1的第三实例所导致的确认来解析该不确定性。
选择性确认
【0135】设备200或者流控制器220的另一个技术是实现传输控制协议选择确认或者TCP SACK的实施例来确定哪些分组已经接收到或者没有接收到。该技术允许发送器明确确定已经由接收器接收的一分组列表以及没有接收到的一精确分组列表。可以通过修改发送器和/或接收器或者通过将发送器和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图1A或者图1B,例如客户机102的发送器被配置为通过网络104将数据分组传输到例如服务器106的接收器。作为响应,接收器将称之为SACK分组的TCP选择确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持一个列表或者其它适合的数据结构,包含用于接收器已经实际接收到的数据分组的序列号的一组范围。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃(left-off)的指针,其包括对列表的引用并且指示从之前产生的SACK分组的放弃点。
【0136】当接收到数据分组时,接收器产生SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保持序列号的范围来指示一组已接收的数据分组。接收器使用包括触发SACK分组的登陆(landing)分组的序列号的范围来填充SACK分组的该第一字段。剩余可用的SACK字段使用来自所接收分组的列表的序列号的范围填充。由于列表中的范围多于可以被载入SACK分组的,则接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从分类的列表连续插入SACK范围,从指针索引的范围开始并且在列表持续向下,直到消耗完SACK分组的TCP首部中的可用SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或者三个附加的SACK范围可以被增加到SACK范围信息。
【0137】一旦接收器产生SACK分组,则接收器将确认发送回发送器。接收器随后在列表中将放弃指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃指针达到列表的末端,则指针被重置为列表的开始,有效地围绕已知所接收范围的列表。将该列表围绕使得系统可以执行得好,甚至在SACK分组大的损失的情况下,这是由于一旦列表被围绕,则由于丢失的SACK分组导致的未被通信的SACK信息最终被通信。
【0138】因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。第一,SACK分组指示在SACK分组产生时接收器已经接收该SACK信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指示接收器已经接收这些范围中的数据分组。SACK信息还暗示接收器在SACK分组的产生时没有接收落入SACK信息的第二和随后的字段之间的任意一个数据分组。本质上,SACk信息中的第二和随后的范围之间的范围是所接收数据中的“孔”,其中已知的未被递送的数据。从而,使用该方法,当SACK分组具有足够空间来包括多于两个的SACK范围,接收器可以向发送器指示还没有由接收器接收的数据分组的范围。
【0139】在另一个实施例中,发送器使用之上描述的SACK分组结合上述重传输技术来假设数据分组已经被递送到接收器。例如,当重传输算法(使用传输号码)宣告分组丢失,则发送器认为该分组仅是条件性丢失,有可能识别该分组接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组增加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,来SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据的分组被宣告实际丢失并且被随后重传输。以此方式,组合这两个方案来给予发送器关于分组已经丢失并且需要重传输的更好的信息。
事务边界检测
【0140】在一些实施例中,设备200或者流控制器220应用称之为事务边界检测的技术。在一个实施例中,该技术适合于乒乓(ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器例如发送器发送数据并且随后等待来自另一个通信器例如接收器的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传输超时来恢复和事务相关的最后的分组的丢失。由于在一些实施例中TCP RTO机制极端粗略,例如在所有情况中要求最小一秒的值,差的应用行为在这些情况中可以看到。
【0141】在一个实施例中,数据的发送器或者耦合到发送器的流控制模块220检测所发送数据中的事务边界。在检测到事务边界时,发送器或者流控制模块220发送附加的分组,其接收产生来自于接收器的附加的ACK或者SACK响应。附加分组的插入优选地限制到改进的应用响应时间和网络能力利用之间的平衡。所插入的附加分组的数量可以根据和该连接相关的当前损失率来选择,对于越高损失率的连接选择更多的分组。
【0142】检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并且停止,则在一段时间之后发送器或者流控制模块200宣告事务边界。这可以和其他技术相组合。例如,通过发送器在TCP首部中设置PSH(TCP进栈)位可以指示事务边界。随之,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中,如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。
【0143】响应于检测事务边界,发送器或者流控制模块220将附加的数据分组传输到接收器来从其引发确认。从而附加数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或者SACK。在一个实施例中,简单地重传输事务的最后一个或者多个分组。相比于仅发送哑元数据分组,如果最后一个或者多个分组已经丢失,这就具有重传输所需数据的增加的益处。在另一个实施例中,发送最后一个或者多个分组的片段,允许发送器来消除来自于他们最初分组的这些分组到来的二义性。允许接收器来避免错误的搞乱任一重新排序自适应算法。在另一个实施例中,任意数量的公知的前向纠错技术可被用来产生附加的数据用于插入的分组,允许重新构造接收器处丢失的或者以其他方式失败的数据。
【0144】在一些实施例中,当事务中的最后一个分组的确认丢失时,此处描述的边界检测技术有助于避免超时。当发送器或者流控制模块220接收用于这些附加数据分组的确认时,发送器可以从这些附加确认来确定是否最后一个分组已经接收或者需要重发送,从而避免超时。在一个实施例中,如果最后的分组已经接收到但是它们的确认丢失,则流控制模块220产生用于该数据分组的确认,并且将确认发送给发送器,从而告知发送器数据分组已经递送。在另一个实施例中,如果最后的数据分组还没有接收到,则流控制模块220发送一个分组给发送器来引发发送来重发送丢失的数据分组。
重新分包
【0145】在又一个实施例中,设备200或者流控制器220应用重新分组技术来改进传输层网络业务量的流。在一些实施例中,TCP的性能和分组大小成比例。因此增加分组大小能改进性能,除非其引发实质的增加的分组损失率或者其他的非线性效应,例如IP分片(fragmentation)。通常,有线介质(诸如铜缆或者光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前,最大化分组大小可以是有益的(通过基本传输介质的协议来限制最大化分组大小)。但是对于具有较高损失率的传输介质(例如,诸如WiFi等的无线技术或者诸如配电线网络等的高损环境),由于介质引发的错误导致整个分组丢失(即,介质引发的错误超过对于该介质的标准纠错码的能力),增加了分组丢失率,从而增加分组大小可以导致较低传输率。分组损失率中的显著大的增加实际上否定了增加的分组大小的任一性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小根据每个链路的性质在通过传输路径时改变。
【0146】通过将设备200或者流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或者流控制器220将具有连续数据的分组重新分组为较小数量的较大的分组。在另一个实施例中,设备200或者流控制器220通过一列大的分组的部分分为大量的较小的分组而将分组重新分组。在其他实施例中,设备200或者流控制器220监控链路特征并且通过重新组合来调整分组大小以改进吞吐量。
QoS
【0147】仍旧参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,也称为QoS控制器。在另一个实施例中,例如设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行一个或者多个服务质量(QoS)技术改进任一网络连接的性能、操作或者服务质量的任意逻辑、商业规则、功能或者操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或者连接提供不同特性的网络业务量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或者连接控制、维持或者确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或者连接控制、维持或者确保特定部分的带宽或者网络容量。在一些实施例中,QoS引擎236监控性能的实现水平或者对应于用户、应用、数据流或者连接的服务质量,例如数据率和延迟。响应于监控,QoS引擎236动态地控制或者调整网络分组的调度特性来实现期望水平的性能或者服务质量。
【0148】在一些实施例中,QoS引擎236根据一个或者多个服务的等级或者水平来优先排序、调度和传输网络分组。在一些实施例中,服务的等级或者水平可以包括:1)最好的努力,2)控制的负载,3)担保或者4)性质。对于服务的最好结果等级,设备200作出合理的努力来递送分组(标准服务水平)。对于服务的控制的负载等级,设备200或者QoS引擎236逼近传输介质的标准的分组错误损失或者逼近小负载网络条件中的最好努力的服务的行为。对于服务的担保等级,设备200或者QoS引擎236保证该能力来在连接期间以确定速率传输数据。对于服务的性质等级,设备200或者QoS引擎236使用性质服务等级用于请求或者期望优先排序的业务量但不能保证资源需求或者服务水平的应用、用户、数据流或者连接。在这些情况中,设备200或者QoS引擎236基于QoS引擎236的任意逻辑或者配置或者基于商业规则或者策略来确定服务等级或者优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、295’执行的一个或者多个策略来优先排序、调度和传输网络分组。
协议加速
【0149】协议加速器234包括用于优化、加速或者以其他方式改进一个或者多个协议的性能、操作或者服务质量的任意逻辑、商业规则、功能或者操作。在一个实施例中,协议加速器234在网络堆栈的层5-7处加速任意应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或者层3的协议。协议加速器234被配置、构建或者设计来根据数据类型、协议的特征和/或行为来优化或者加速一个或者多个协议的每一个。在另一个实施例中,协议加速器234被配置、构建或者设计来改进用户体验、响应时间、网络或者计算机负载和/或关于协议的网络或者带宽利用。
【0150】在一个实施例中,协议加速器234被配置、构建或者设计来最小化文件系统访问上的WAN等待时间的效应。在一些实施例中,协议加速器234优化或者加速CIFS(公共因特网文件系统)协议的使用来改进文件系统访问时间或者对数据和文件的访问时间。在一些实施例中,协议加速器234优化或者加速NFS(网络文件系统)协议的使用。在另一个实施例中,协议加速器234优化或者加速文件传输协议(FTP)的使用。
【0151】在一个实施例中,协议加速器234被配置、构建或者设计来优化或者加速承载净荷或者使用任一类型和形式标记语言的协议。在其他实施例中,协议加速器234被配置、构建或者设计为优化或者加速超文本传输协议(HTTP)。在另一个实施例中,协议加速器234被配置、构建或者设计为来优化或者加速承载净荷或者以其他方式使用XML(可扩展标记语言)的协议。
透明并且多点布置配置
【0152】在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任意数据流是透明的。在一个实施例中,设备200和/或网络设备250以此方式操作:通过WAN的数据流是由任意网络监控、QoS管理或者网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不产生任意隧道或者流用于传输可以隐藏、混淆或者以其他方式是网络业务量不透明的数据。在其他实施例中,设备200透明操作,其中设备不改变网络分组的任一源和/或目标地址信息或者端口信息,诸如互联网协议地址或者端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或者其他设备或者计算装置透明地操作或者运转。也就是在一些实施例中,设备是透明的,其中网络上的任意装置或者设备的网络相关配置不必修改来支持设备200。
【0153】设备200可以以下面的布置配置方式来布置:1)串行业务量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以与以下的一个或者多个串行布置:路由器、客户机、服务器或者另一个网络装置或者设备。在其他实施例中,设备200可以与以下的一个或者多个并行布置:路由器、客户机、服务器或者另一个网络装置或者设备。在并行布置中,客户机、服务器、路由器或者其它网络设备可以被配置为转发、传送或者传输到设备200或者经由设备200。
【0154】在串行的实施例中,设备200与路由器的WAN链路串行布置。以此方式,来自WAN的所有业务量在到达LAN的目标之前传递通过设备。
【0155】在代理模式的实施例中,设备200被布置为客户机和服务器之间的代理装置。在一些实施例中,设备200允许客户机做出到网络上的资源的间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到资源、不同的资源、或者通过从高速缓存服务该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处讨论的任一优化技术。在一个实施例中,客户机102发送寻址到代理的请求。在一个情况中,代理响应于客户机来代替或者充当服务器106。在其他实施例中,设备200通过将请求和响应拦截并透明地转发到客户机和/或服务器,用作为透明代理。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或者网络。在一些实施例中,设备200可以在穿越设备的任一网络业务量上执行任一类型和形式的网络地址转换,称之为NAT。
【0156】在一些实施例中,设备200以虚拟串行模式配置来布置。在此实施例中,具有路由或者转换功能的路由器或者网络装置被配置为转发、路由或者去以其他方式提供发往网络或者设备200的网络分组。设备200随后在网络分组上执行任一期望的处理,诸如此处讨论的任一WAN优化技术。当完成处理时,设备200将处理的网络分组阻转发到路由器以发送到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但是仍旧如同设备200串行一样操作。因为分组经由设备通过网络处理和传输,则该布置模式还透明地提供所保持的源和目标地址以及端口信息。
端点节点布置
【0157】尽管网络优化引擎250以上总的结合设备200描述,但是网络优化引擎250或者其任意部分可以被布置、分布或者以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或者服务器可以提供此处描述的结合一个或更多设备200或者不结合设备200的网络优化引擎250的任一系统和方法。
【0158】现在参考图2B,描述布置在一个或者多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎250”。客户机102和服务器106可以建立传输层连接并且交换穿越或者不穿越设备200的通信。
【0159】在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。在另一个实施例中,服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或者以其他方式改进在客户机102与服务器106之间通信的网络业务量的性能、操作或者服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。仍在另一个实施例中,服务器106的网络优化引擎250”结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。
C.客户机代理
【0160】如图2A和2B所示,部署在系统中或者具有设备200或者205的客户机可以包括客户机代理120。在一个实施例中,客户机代理120被用来促进与一个或者多个设备200或者205的通信。在一些实施例中,此处描述的设备200或者205的任意系统和方法可以经由客户机代理120部署、实施或者包含在客户机中。在其他实施例中,客户机代理120可以包括提供诸如端点检测和验证、虚拟专用网络连接和应用流式传输的附加功能性的应用、程序或者代理。在讨论设备200的系统和方法的其它实施例之前,将描述客户机代理120的实施例。
【0161】现在参考图3,描述了客户机代理120的一个实施例。客户机102包括用于经由网络104与设备200、设备205和/或服务器106建立、交换、管理或者控制通信的客户机代理120。在一些实施例中,也被称为WAN代理的客户机代理120加速WAN网络通信和/或被用来经由网络上的设备200进行通信。简单概述,客户机102在计算装置100上操作,所述计算装置100具有带有内核模式302和用户模式303的操作系统以及带有一个或多个层310a-310b的网络堆栈267。客户机102已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可以经由网络堆栈267 通信到网络104。诸如web浏览器的一个应用还可以包括第一程序322。例如,第一程序322可以被用于在一些实施例中安装和/或执行客户机代理120或者其任意部分。客户机代理120包括用于从一个或多个应用中拦截来自于网络堆栈267的网络通信的拦截机制或拦截器350。
【0162】如同设备200一样,客户机具有包括任意类型和形式的软件、硬件或者其任一组合的网络堆栈267来提供与网络104的连接性以及与网络104的通信。客户机102的网络堆栈267包括以上结合设备200描述的任一网络堆栈实施例。在一些实施例中,客户机代理120或者其任一部分被设计和构建为和网络堆栈267一起操作或者结合工作,网络堆栈267是由客户机102的操作系统安装或者以其他方式提供的。
【0163】在进一步的细节中,客户机102或者设备200(或者205)的网络堆栈267可以包括用于接收、获取、提供或者以其他方式访问与客户机102的网络通信相关联的任意信息和数据的任意类型和形式的接口。在一个实施例中,到网络堆栈267的接口包括应用编程接口(API)。该接口还可以包括任意函数调用、挂钩或过滤机制、事件或回叫机制、或任意类型的连接技术。网络堆栈267经由接口可以接收或提供诸如对象的与网络堆栈267的功能或操作相关的任意类型和形式的数据结构。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、参考或者识别诸如传输层的网络分组的在网络堆栈267的协议层处理的网络分组的一部分。在一些实施例中,数据结构325是内核级数据结构,而在其它实施例中,数据结构325是用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任意数据结构。
【0164】另外,例如数据链路或网络层的网络堆栈267的一些部分可以在内核模式302中执行或操作,而诸如网络堆栈267的应用层的其它部分执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可以包括诸如层5-7中的任意一个的网络堆栈267的一个或多个较上的层。在其它实施例中,网络堆栈267的第二部分310b包括诸如层1-4中的任意一个这样的一个或多个较低的层。网络堆栈267的第一部分310a和第二部分310b中的每一个可以在任意一个或多个网络层处、在用户模式203、内核模式202或其组合中、或者在网络层的任意部分或网络层的接口点或用户模式302和内核模式203的任意部分或接口点处,包括网络堆栈267的任意部分。
【0165】拦截器350可以包括软件、硬件或软件和硬件的任意组合。在一个实施例中,拦截器350在网络堆栈267中的任一点拦截或者以其他方式接收网络通信,并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所期望、管理或控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并发送该网络通信给设备200以用于在第二网络104上的传输。在一些实施例中,拦截器350包括或者是驱动器,诸如被构造和设计为与网络堆栈267接口和工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处的网络堆栈267的一个或多个层处操作。在一个实施例中,拦截器350包括过滤器驱动程序、挂钩机制或任意格式和类型的适当的网络驱动程序接口,所述接口例如经由传输驱动程序接口(TDI)来接口于网络堆栈的传输层。在一些实施例中,拦截器350接口到诸如传输层的第一协议层以及诸如传输协议层之上的任意层的例如应用协议层的另一个协议层。在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS)的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以是小过滤器(min-filter)或迷你端口(mini-port)驱动程序。在一个实施例中,拦截器350或者其一部分操作于内核模式202中。在另一个实施例中,拦截器350或者其一部分操作于用户模式203中。在一些实施例中,拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分操作于用户模式203中。在其它实施例中,客户机代理120操作于用户模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施例中,拦截器350是诸如应用的用户模式应用或程序。
【0166】在一个实施例中,拦截器350拦截或者接收任意的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以对于该位置设置目的地信息,诸如所期望的位置的目的地IP地址和/或端口。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代理120在客户机102的本地IP地址和端口上进行监听。例如,客户机代理120可以包括在用于重定向的传输层通信的本地IP地址和端口上监听的代理服务。在一些实施例中,客户机代理120随后传达重定向的传输层通信到设备200。
【0167】在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在另一实施例中,拦截器发送被拦截的DNS请求到设备200以用于DNS解析。在一个实施例中,设备200解析DNS请求并通信DNS响应给客户机代理120。在一些实施例中,设备200解析经由另一设备200′或DNS服务器106的DNS请求。
【0168】在又一个实施例中,客户机代理120可以包括两个代理120和120′。在一个实施例中,第一代理120可以包括操作于网络堆栈267的网络层的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120′可以在传输层操作并拦截传输层通信。在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120′连接或通信被拦截的通信到第二代理120′。
【0169】客户机代理120和/或拦截器350可以以相对于网络堆栈267的任意其它协议层透明的方式操作于协议层处或与协议层连接。例如,在一个实施例中,拦截器350以相对于诸如网络层的传输层之下的任意协议层以及诸如会话、表示或应用层协议的传输层之上的任意协议层透明地来操作网络堆栈267的传输层或与其连接。这允许网络堆栈267的其它协议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120和/或拦截器350可以与传输层交互或者在其上操作以保护、优化、加速、路由或负载平衡经由诸如TCP/IP之上的任意应用层协议的通过传输层携带的任意协议提供的任意通信。
【0170】进一步地,客户机代理120和/或拦截器350可以以相对于任意应用、客户机102的用户以及诸如与客户机102通信的服务器的任意其它计算装置100透明的方式来操作于网络堆栈267处或与网络堆栈267连接。客户机代理120或者其任一部分可以以一定方式安装和/或执行于客户机102上而不修改应用。客户机代理120或者其任一部分可以以对于客户机102、设备200、205或者服务器106的任意网络配置透明的方式安装和/或执行。客户机代理120或者其任一部分可以以一定方式安装和/或执行而不修改客户机102、设备200、205或者服务器106的任意网络配置。在一个实施例中,客户机102或与客户机102通信的计算装置的用户不知道客户机代理120或其任一部分的存在、执行或操作。因而,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或者设备200、205的另一个计算装置、或者在由拦截器350联接的协议层之上和/或之下的任意协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
【0171】客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/加速程序302。在一个实施例中,客户机代理120是由位于Fort Lauderdale,Florida的Citrix Syestems公司开发的独立计算架构(ICA)客户机或者其任意部分,并且还被称为ICA客户机。在一些实施例中,客户机120包括用于将应用从服务器106流式传输到客户机102的应用流客户机306。在另一个实施例中,客户机代理120包括用于执行端点检测/扫描以及为设备200和/或服务器106收集端点信息的收集代理304。在一些实施例中,客户机代理120包括诸如网络优化引擎250和加速程序302的一个或者多个网络加速或者优化程序或者代理。在一个实施例中,加速程序302加速经由设备205’的客户机102和服务器106之间的通信。在一些实施例中,网络优化引擎250提供此处讨论的WAN优化技术。
【0172】流客户机306是用于接收和执行来自于服务器106的流式传输的应用的应用、程序、进程、服务、任务或可执行指令集。服务器106可以将一个或多个应用数据文件流式传输到流客户机306,以用于在客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和存储在诸如CAB、ZIP、SIT、TAR、JAR或其它档案(archive)的档案文件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives)应用文件,并发送所述文件到客户机102。在另一个实施例中,客户机102解压缩、解封装或解档应用文件。流客户机306动态地安装应用或其中的一部分,并执行应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以启用另一个可执行程序。
【0173】收集代理304是用于识别、获得和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送收集的有关客户机102的信息给设备200。在一个实施例中,设备200的策略引擎236使用收集的信息来确定并提供对客户机到网络104的连接的访问、验证和授权控制。
【0174】在一个实施例中,收集代理304是端点检测和扫描程序,其识别和确定客户机的一个或多个属性或特性。例如,收集代理304可以识别和确定任意一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别和确定客户机上的任意一个或多个下列软件的存在或版本:1)防病毒软件,2)个人防火墙软件,3)反垃圾邮件软件,和4)因特网安全软件。策略引擎236可以具有根据客户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。
【0175】SSL VPN代理308是用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网络(VPN)连接或者从客户机102到服务器106的SSL VPN连接的应用、程序、进程、服务、任务或者可执行指令集。在一个实施例中,SSL VPN代理308建立从公共网络104到专用网络104’或者104”的SSL VPN连接。在一些实施例中,SSL VPN代理308结合设备205一起工作来提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在另一个实施例中,SSL VPN代理308建立与客户机上的应用的第一传输层连接,和与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200结合工作来提供SSL VPN连接。
【0176】在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个的下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)经由高速缓存管理器的高速缓存。另外,加速程序302可以执行对由客户机102接收和/或发送的任意通信的加密和/或解密。在一些实施例中,加速程序302以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302可以在被携带为传输层协议的网络分组的净荷的任意协议或多个协议上执行压缩。
【0177】在一个实施例中,加速程序302被设计、构建或者配置为和设备205一起工作来提供LAN侧加速或者提供经由设备205提供的加速技术。例如,在Citrix System公司出品的NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302提供在诸如分支结构中的远程装置中独立的NetScaler加速技术。在其他实施例中,加速程序和一个或者多个NetScaler设备205一起工作。在一个实施例中,加速程序302提供网络业务量的LAN侧或者基于LAN的加速或者优化。
【0178】在一些实施例中,网络优化引擎250可以被设计、构建或者配置为和WAN优化设备200一起工作。在其他实施例中,网络优化设备250可以被设计、构建或者配置为提供设备200的WAN优化技术,需要或者不需要设备200。例如,在Citrix System公司出品的NeNScaler设备205的一个实施例中,网络优化设备250包括NeNScaler客户机。在一些实施例中,网络优化引擎250提供在诸如分支结构中的远程位置中独立的NeNScaler加速技术。在其他实施例中,网络优化引擎250和一个或者多个NeNScaler设备200一起工作。
【0179】在另一个实施例中,网络优化引擎250包括加速程序302,或者加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250,或者网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250被提供或者安装为来自加速程序302的单独的程序或者可执行指令集。在其他实施例中,网络优化引擎250和加速程序302包括在相同的程序中或者同一个可执行指令集中。
【0180】在一些实施例中以及仍然参考图3,可以使用第一程序322来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120或者其一部分。在一个实施例中,第一程序322是诸如被加载应用并由应用执行的ActiveX控件或Java控件或脚本的插件部件。例如,第一程序包括由web浏览器应用加载并运行在例如应用的存储空间或上下文中的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器的应用加载并运行的一组可执行指令。在一个实施例中,第一程序322被设计和构造来安装客户机代理120。在一些实施例中,第一程序322通过网络来从另一个计算装置获得、下载或接收客户机代理120。在另一个实施例中,第一程序322是客户机102的操作系统上的诸如网络驱动程序和客户机代理120或其任意部分的安装程序或用于安装程序的即插即用管理器。
【0181】在一些实施例中,客户机代理120、流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250、加速程序302、拦截器350的每一个或者其中任意部分可以被安装、执行、配置或者操作为单独的应用、程序、进程、服务、任务或者可执行指令集。在其他实施例中,客户机120的每一个或者任意部分可以被一起安装、执行、配置或者操作为单独的客户机代理120。
D、用于使用共享压缩历史的系统和方法
【0182】现在参考图4A,示出使用共享的压缩历史来降低传输的数据的大小的实施例的框图。总的来说,两个客户机102a和102b经由分别具有压缩历史400a和400b(总的400)并且在网络104上通信的两个设备200a和200b传输数据。压缩历史400a和400b被用来压缩设备200a、200b之间传输的数据并且包括两个设备200a、200b之间之前传输的数据部分。设备200a通过识别客户机102a发送的数据流中的数据部分(该数据部分之前已经在两个客户机之间传输)来压缩经由网络104传输的数据。设备200a随后使用压缩历史400a、400b中的位置参考来替代那些数据部分,降低了传输的数据容量,还允许对应设备200b精确重新构建原始数据流。包含网络优化引擎250a的客户机102a还可以使用压缩历史400c来加速与设备200或者具有压缩历史400d的第二客户机102d的通信。
【0183】仍旧参考图4A,现在更详细地,客户机102a传输数据流到设备200a。数据流可以包括通过网络发送的任意类型的数据,包括任意协议。在一些实施例中,数据流可以经由诸如TCP连接的传输层连接传输。在其他实施例中,数据流可以经由诸如SSL的会话层协议传输。在一些实施例中,可以加密一些或者全部数据流。
【0184】在一些实施例中,一个或者多个设备200a可以对于一个或者多个客户机102a、102b透明的操作。在其他实施例中,一个或者多个设备200a可以操作如同透明代理用于一个或者多个客户机102a、102b。例如,设备200a和200b可以拦截并且压缩经由客户机102a和102b之间的TCP连接的、对于客户机102a和102b的其中一个或者二者透明的网络业务量。在此例中,客户机102a可以发送寻址到客户机102b的TCP流,其由设备200a拦截。设备200a可以随后压缩数据流并且通过设备200b将数据流转发到客户机102b。以此方式,客户机102a和客户机102b能够维持它们使用标准TCP协议和地址。
【0185】设备200a、200b维持同步的压缩历史400a、400b,其每一个含有之前在设备200b之间传输的数据。这些同步压缩历史还可以被称为共享的压缩历史。压缩历史400a、400b可以通过任意装置同步。在一个实施例中,压缩历史可以通过将同样的数据流拦截并保存到压缩历史400a、400b的设备200a、200b来同步。在另一个实施例中,设备200a、200b可以在它们之间传输压缩历史的全部或者一部分。在一些实施例中,压缩历史可以仅被不完全同步或者部分同步。压缩历史400可以驻留在任意存储介质上,包括但不限于RAM和磁盘。在一些实施例中,驻留在设备200上的压缩引擎238可以维持压缩历史400。
【0186】压缩历史400可以保存任意类型和形式的数据,包括之前传输的任意数据。在一些实施例中,设备可以保存通过该设备传递的所有数据到压缩历史。在其他实施例中,设备可以基于以下任一因素从保存在压缩历史中的数据流来选择数据的一部分,包括但不限于:数据流源、数据流目标、传输协议、应用协议、可用磁盘空间、当前磁盘使用、可用存储器空间、当前可用带宽和数据部分的大小。在一些实施例中,保存在压缩历史中的数据可以使用无损压缩算法来压缩。在一个实施例中,压缩历史可以以块的形式来保存,其将参考图4B来讨论。
【0187】在一些实施例中,设备可以保存经由设备传输的任一协议层分组的有效载荷或者其中任一部分到压缩历史中。在一个实施例中,设备可以仅保存经由设备传输的TCP分组的有效载荷到压缩历史中。在一个实施例中,设备将经由应用层协议获取的应用数据保存到压缩历史1138。在一些实施例中,设备将诸如HTTP有效载荷的应用层首部的网络分组的首部保存到压缩历史。在其他实施例中,设备不保存网络分组的首部。在另一个实施例中,设备仅将经由设备传输的UDP分组的有效载荷保存到压缩历史中。在一个实施例中,设备可以选择不保存任一加密数据到压缩历史中。在另一个实施例中,设备可以解密该加密的数据并且将解密数据保存到压缩历史中。仍在另一个实施例中,设备可以将加密的数据包存到压缩历史。
【0188】压缩引擎238可以将压缩历史400保存在诸如磁盘的存储装置128、例如RAM的存储器,或者存储装置和存储器的组合中。在一些实施例中,压缩引擎238使用对象或者数据索引来参考或者识别保存在压缩历史中的对应的对象或者数据。在图4C中给出这样的索引的一个实施例的特定例子。在一个实施例中,压缩引擎238使用保存在存储器中的对象索引。在其他实施例中,压缩引擎238使用保存到盘的对象索引。对象索引可以包括任意类型和形式的索引方案,用于将索引对应到压缩历史400中的对象。在一个实施例中,对象索引维持在存储器中,而对应的对象保存在压缩历史400中。在一些实施例中,对象索引包括参考或者识别保存在压缩历史400中的对象的位置或者指针的项。在一些实施例中,压缩历史或者索引的一些或者全部可以保存在高速缓存232中。在其他实施例中,高速缓存232的一些或者全部可以使用压缩历史来保存。
【0189】在将所传输数据的一部分写到压缩历史的过程中,设备可以建立共享的标识符来启用该设备并且该设备接收所传输的数据来指示之后通信中的数据部分。在一些实施例中,该标识符可以是两个设备之间的唯一标识符。在其他实施例中,该共享的标识符可以是多个设备之间的全局唯一的标识符。例如,通过记录经由设备之间的连接发送的字节的数量并且分配连续的标识符给所传输的连续字节,可以建立共享的标识符。
【0190】在一些实施例中,单个设备200可以维持多个压缩历史。例如,和多个其他设备通信的设备200a可以维持包含传输进出每一设备的数据的分离的压缩历史。在一个实施例中,这些分离的压缩历史可以物理分隔来,诸如单独的磁盘被维持用于每个压缩历史。在另一个实施例中,这些分离的压缩历史可以被逻辑分隔开,诸如其中多个压缩历史混合在一个盘上,具有标识符或者索引来识别给定数据内容属于哪个压缩历史或者哪些压缩历史。
【0191】在所示实施例中,设备200a使用压缩历史400a来识别已经在之前从客户机102a传输到设备200b的数据流中的数据部分。设备随后使用在数据流发送到设备200b之前来识别包含数据流的那些部分的压缩历史的位置的标识符来代替数据流的那些部分。例如,设备可以使用对包含序列和指令来包括从所参考的位置的120字节的存储器位置的参考来替代120字节的序列。
【0192】当接收到包含对压缩历史中位置的引用的数据流时,对于所识别的数据部分设备200b搜索其压缩历史400b。设备200b随后使用识别的数据部分替代数据流中的标识符,并且发送重新构建的数据流到客户机102b。
【0193】在这些实施例和以下讨论的之后的实施例中,设备200a、200b执行的压缩历史和高速缓存功能可以由一个或者多个客户机102、客户机代理120或者服务器106来执行。例如,客户机代理120可以维持包括之前传输到服务器的数据部分的压缩历史400,该服务器还维持对应的压缩历史。客户机代理120和服务器106可以随后通过使用压缩历史来压缩在服务器和客户机代理120所驻留的客户机之间发送的数据。
【0194】现在参考图4B,示出用来在压缩历史中保存数据的数据结构的一个实施例的框图。总的来说,压缩历史400包括称之为块405a、405b、405c、405d(总的称之为405)的多个存储单元,用于保存压缩历史的数据。每个块405包括具有状态标识符475和下一个块指针485的首部455。每个块还包括包含之前传输的数据465的部分。
【0195】仍旧参考图4B,更详细地,压缩历史400包括多个块405。块可以指的是任一分散的物理或者逻辑存储单元。块的例子可以包括盘区域、盘的多个序列区域、和存储器位置、一系列连续存储器位置。例如,10MB的盘可以被分为1000个10KB的块,其中每个块是盘上的10K的逻辑邻接区域。或者例如,两个10MB的盘可以被分为20000个1KB的块,一个或者多个块跨越多个盘。在其他实施例中,块可以包括一个或者多个盘的不连续区域。例如,2K块可以保存在4个分离的512字节的片,并且可以维持识别分离的片的位置的数据结构。仍在其他实施例中,块首部455可以保存与块有效载荷465不同的位置中。例如,一个或者多个块首部455可以维持在存储器中,而块数据465可以维持在盘上。
【0196】块可以是任意尺寸,包括但不限于32字节、64字节、100字节、128字节、256字节、512字节、1K、2K、3K、4K、8K、10K、16K、32K、64K和128K。在一些实施例中,使用数据仅部分填充一些块。例如,在块具有固定5K大小的实施例中,在块保存给定传输的最后字节的情况中,块仅可以包括2K的数据。
【0197】在一些实施例中,一串块可以顺序保存在盘上或者存储器中。在其他实施例中,块可以保存在盘上或者存储器中的多个位置中。例如,在一个实施例中,设备可以保存多个块,该块包含以盘的邻接部分的方式传输到另一个设备的数据。在另一个实施例中,客户机上的压缩引擎可以在盘上交错保存具有传输到第一设备的数据的多个块和包括传输到第二设备的数据的块。
【0198】在一些实施例中,设备可以建立新的块,用于经由设备打开的每一个新的连接。例如,在用作对于多个TCP连接的中间设备的设备中,在每次新的TCP连接打开时设备就建立新的块,并且将来自TCP连接的数据保存到该块中。在此例中,如果初始块变满,则设备可以建立附加的块用于TCP连接。在此实施例中,设备可以确保每个块保持仅来自一个TCP连接的数据。设备可以保存涉及TCP连接的任何信息,包括时间戳、序列号和一个或者多个块首部中的源和目标地址。
【0199】在一些实施例中,压缩历史可以包含相同大小的块。在其他实施例中,压缩历史可以包含不同大小的块。
【0200】所示压缩历史包括多个块405。每个块包含块首部455。块首部405可以包括涉及该块的任意识别、导航或历史数据。可以被保存在块首部的数据例子包括但不限于块标识符、对序列中的下一个块的指针、对序列中的前一个块的指针、块的大小、建立块的时间、最后访问块的时间、已经访问块的总的次数、和校验和或者其它纠错措施。
【0201】在所示实施例中,块包括块标识符,其可以包括分配给该块的唯一序列号。在一个实施例中,该唯一序列号可以对应于块的存储器地址,诸如存储器中或者盘上的块的位置的起始地址。在其他实施例中,块标识符可以对应于一列所传输数据中的位置。例如,在两个装置之间共享的压缩历史中,具有序号4500000的块可以包括在两个设备之间传输的第4500000个字节和一些随后的字节。对应于所传输数据的一部分的块标识符可以由对应的设备明确地或者隐含地共享。例如,两个设备可以使用上述方法以使得给定部分的所传输数据将在两个设备上具有相同的块标识符。以此方式,唯一的序列号指的是驻留在两个或者多个设备上的数据的相同部分。在另一个例子中,在第一设备传输给定数量的字节到第二设备之后,第一设备可以传输识别第一设备保存所传输的数据的该块的块标识符。第二设备可以随后将接收的块标识符记录在对应于分配给同样数据的第二设备的块标识符的表中。
【0202】在一个实施例中,块标识符可以是在多个设备之间全局唯一的。例如,在一组设备中,每一个具有唯一的序列号,设备可以将设备的序列号附加到本地唯一的块标识符的开始或者结束来建立全局唯一的块标识符。在另一个实施例中,将所传输数据保存到盘上块的每个装置可以通过将盘序列号附加到块序列号来建立块标识符。如果块序列号从来没有再用过,则该技术可以被用来建立全局唯一的块标识符。装置可以随后将所建立的块标识符传输到所传输数据的接收者,使得对应的表可以维持在接收装置上。
【0203】在一些实施例中,包括在块首部455的一些或者全部数据可以保存在块之后的脚注(footer)中。仍在其他实施例中,包含在块首部455的一些或者全部数据可以保存在外部表或者其它数据结构中。
【0204】现在参考图4C,示出可以用来定位压缩历史、压缩索引410中的数据部分的数据结构的一个实施例的框图。总的来说,压缩索引410包含布置在表中的多个位置标识符420。表的每一行对应于给定的数据指纹。例如,表的行4包含用于具有等于4的数据指纹的压缩历史中的数据部分的位置标识符。每一个位置标识符420通过识别给定块中的位置来指向压缩历史400中的位置。在所示实施例中,位置标识符识别特定块和块中的偏移量。
【0205】仍旧参考图4C,更详细地,压缩索引410包括布置在索引中的多个位置标识符420,其中每一行对应于给定数据指纹。该索引可以使用任一数据结构实现,包括阵列、表、哈希表和联接的列表、二进制树、红-黑树和字典树(trie)。索引也可以使用实现哈希表的任一技术来实现。例如,在一个实施例中,索引可以被实现为联接的列表的阵列,其中每个联接的列表对应于索引的一行。在另一个实施例中,该表可以实现为单个二维阵列。在此实施例中,如果阵列的一行变满,则丢弃该行中最近最少使用的位置标识符。仍在其他实施例中,索引可以被实现为单个阵列,其中通过将位置标识符放置在过载的哈希值的槽(slot)之后的阵列槽中来解决哈希冲突。说明书全文中词语“项”也可以用来指示具有对应于给定指纹的位置标识符的压缩索引的部分。因此,关于图4C,项8保存位置标识符C73+x和C2+x(其中x代表任一偏移量)。
【0206】位置标识符420可以包括任意标识符,该标识符允许设备来定位压缩历史中的对应数据部分。在一个实施例中,位置标识符可以包括块标识符475和偏移量。在另一个实施例中,位置标识符可以包括对应于数据部分的存储器或者盘位置的单个地址。仍在另一个实施例中,位置标识符可以包括地址和大小指示。
【0207】确定压缩历史的一部分匹配输入流的一部分之后,设备可以随后执行行程长度延伸来确定用于匹配序列的总长度。通过将压缩历史中的连续字节和输入流的连续字节相比较可以执行行程长度延伸,而不需要计算指纹。在一些实施例中,行程长度延伸还可以比较压缩历史中之前的字节与输入流中的之前的字节。例如,如果输入数据的600个字节的序列已经由设备200缓存用于之后的传输并且在压缩历史中发现关于第140-145个字节的匹配,则设备可以将压缩历史中的之前和连续的字节和输入流的之前的和连续的字节相比较,来识别压缩历史匹配的全部长度。在一些实施例中,行程长度延伸可以在多个块上延伸。在这些实施例中,下一个块和包含在给定块中的之前的块指针可以被用来识别压缩历史的连续的和在先的区域。
E、用于有效识别压缩历史匹配的系统和方法
【0208】现在参考图5A,示出用于图示使用压缩索引来定位对应于输入数据的压缩历史匹配的一个实施例的框图。总的来说,设备可以拦截一个或者多个数据流510、520。设备将数据流510、520组织到多个片段(shingle)中,并且随后计算每一片段的指纹。例如,10个字符流“thequick”被处理为十个四字节交迭片段。每个指纹随后用作到压缩索引410a中的索引。例如,片段“the”产生4的指纹,其对应于压缩索引410a的行4。该行具有指向包括还具有4的指纹的片段的压缩历史中的位置的多个位置标识符。
【0209】仍旧参考图5A,更详细地,设备将数据流510分为多个片段。在所示实施例中,数据流是字符串“the quick”。设备将字符串分散为四字节片段。在其他实施例中,该片段可以是任一其它长度,包括但不限于3、5、6、7、8、10、12、16、32或者64字节。在所示实施例中,设备对于数据流中的每个连续字节来建立交迭的4字节片段。在其他实施例中,片段可以是非交迭的。仍在其他实施例中,设备可以仅对数据流中的字节子集建立片段。例如,设备可以对于数据流中每隔一个字节建立片段,或者对于数据流中每第三个字节建立片段。在一些实施例中,设备可以计算多个片段的指纹,用来选择在压缩索引中查询的指纹。在美国专利7098815“Method and apparatus for efficientcompression”中更全面的描述了该技术和其他指纹技术,其全部内容通过引用明确包含进来。
【0210】在所示实施例中,设备计算每一片段的指纹值,其随后被用作到压缩索引410a中的索引。在一些实施例中,设备可以随后访问驻留在索引中的位置标识符识别的数据部分。设备可以随后进行压缩历史中的数据部分和片段的逐字节比较来确保已经找到匹配。例如,如果指纹方法不能产生用于每个可能片段的唯一的指纹,或者如果多个指纹合并到压缩索引410a的一给定“行”,则该比较是必须的。在一个实施例中,当发现与压缩历史中给定数据部分匹配的片段时,设备随后进行匹配的行程长度延伸来确定压缩历史的之后的数据部分是否匹配所接收的输入流的之后的部分。
【0211】在一个实施例中,设备可以在访问压缩历史之前利用检查策略用于多个指纹匹配来确认找到匹配。在此实施例中,设备比较对应于之后的片段的位置标识符来查看所指向的位置是否是单个块的之后的部分。设备可以以此策略来建立给定长度的匹配实际存在的一些可能性,并且不是来自指纹算法的错误肯定或者不能提供显著压缩益处的这样的小的长度的匹配。该策略在压缩历史保存在盘的情况中能够导致性能改进,并且因此可以具有比压缩索引较低的访问次数,其可以保存在存储器中。通过最小化对盘或者存储器区域的访问次数,该策略还可以在压缩历史由多个连接大量使用的情况中导致性能改进。
【0212】仍旧参考图5A,设备可以计算数据流510中的第一片段“the”的指纹。当检查对应于指纹的项的压缩索引时,或许由于大量之前传输的数据包含字节序列“the”,设备发现大量的项。设备可以随后计算下一个片段“he_q”的指纹,并且仅找到一个匹配,识别为块6和给定偏移量。设备可以随后计算下一个片段“e_qu”的指纹,并且仅找到一个匹配,识别为块2和6的偏移量。由于块2和块6不代表压缩历史中的顺序区域,则存在很低的可能性是这些块将包含对于任意其它而不是单个片段的匹配。设备可以因此确定不访问压缩历史中的这些数据部分的任一个,并且实际上发送未压缩的数据,或者使用压缩机制而不是压缩历史压缩的数据。
【0213】关于数据流520,设备可以确定和连续片段“brev”、“revi”、“evit”和“vity”相关的位置标识符识别压缩历史的连续部分,也就是它们识别块2的字节4、5、6和7。这指示对于块2上的数据流520存在长的匹配的潜在可能性。该设备可以随后确定访问压缩历史的该部分并且执行行程长度延伸来确定匹配序列的总长度。
【0214】现在参考图5B,示出通过在存储器中保持的索引中识别输入数据与保存在盘上的邻接数据匹配的估计程度高于或者低于预定阈值来确定是否执行基于盘的压缩的方法的实施例的流程图。总的来说,具有压缩历史的装置在存储器中建立索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储单元中的位置的位置标识符(步骤501)。装置识别输入数据的多个指纹匹配存储器中的索引的多个项的指纹(步骤503),并且从具有对应于第一位置标识符的项目的存储器中的所识别的指纹数量来确定输入数据与盘上邻接数据的估计匹配可延伸地低于预定阈值(步骤505)。如果该匹配可延伸地低于给定阈值,该装置传输未压缩的数据(步骤507)。如果该匹配可延伸地高于预定阈值,则该装置使用压缩历史来压缩该数据(步骤509)。尽管本方法以下结合通过设备执行的上下文中来讨论,但是该装置可以包括客户机102、服务器106、设备200或者任意其它计算装置100。
【0215】仍旧参考图5B,更详细地,具有所保存的压缩历史的装置在存储器中建立索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储单元中的位置的位置标识符(步骤501)。在一个实施例中,索引可以包括此处描述的压缩索引410。位置标识符还可以包括此处描述的位置标识符420。在一个实施例中,盘上的位置可以对应于此处描述的块400。可以在任意时间建立并维持索引。在一个实施例中,每当数据保存在压缩历史中就可以更新索引。存储元件可以包括任意方式的存储装置,包括一个或者多个RAM、盘和闪速存储器。在一些实施例中,存储元件可以驻留在装置上。在其他实施例中,存储元件可以经由网络连接到装置。在一个实施例中,存储元件比包含索引的存储器具有更高的等待时间。
【0216】在所示实施例中,装置识别输入数据的多个指纹匹配存储器中的索引的多个项的指纹(步骤503)。输入数据可以包括来自任一源的输入数据。在一个实施例中,输入数据可以包括从客户机102或者服务器106传输到装置的数据流。在一个实施例中,数据流可以包括来自TCP连接的数据,该装置用作对于TCP连接的代理。在另一个实施例中,输入数据可以包括从运行在装置上的应用发送的数据。
【0217】装置可以使用任一指纹方法计算输入数据的指纹,包括但不限于此处描述的片段方法。指纹的数量可以是任意数量2或者更多,包括2、3、4、5、6、7、8、9和10。例如,设备可以计算给定数据流的四个连续片段的指纹。在另一个实施例中,设备可以计算输入数据中的五个邻接的非交迭片段的指纹。在一个实施例中,可以预定指纹的数量用来平衡与较少盘访问获取的益处相对的小的匹配片段上的可能忽略的缺陷。
【0218】在所示实施例中,该方法还包括通过该装置从具有对应于第一位置标识符的项目的存储器中的所识别的指纹数量来确定输入数据与盘上邻接数据的估计匹配可延伸地低于预定阈值(步骤505)。在一个实施例中,该方法可以包括识别一个或者多个指纹对应于包含空指针的索引中的项或者在压缩历史中不存在对于该指纹的匹配的指示。在另一个实施例中,该方法可以包括识别两个或者多个指纹对应于包含指向压缩历史的不连续位置的位置标识符的项。例如,关于输入流510,装置可以确定通过指纹1和9识别的位置在压缩历史中不邻接。这说明对应于数据流的开始的压缩历史中的匹配不超过五个字符。
【0219】预定的阈值可以包括任意数量个字节。在一个实施例中,预定阈值可以是8、12、16、32、64、128或者256个字节。在一些实施例中,预定阈值可以响应于装置的操作特征而改变。在一个实施例中,响应于传递通过该装置的连接的数量的增加,传递通过该装置的数据数量的增加,或者涉及输入数据的连接速度的增加,可以提高阈值。在另一个实施例中,响应于连接的数量的减少,传递通过该装置的数据数量的减少,或者涉及输入数据的连接速度的减少,可以减小阈值。例如,在用作压缩多个TCP连接的代理的设备中,设备可以响应于打开的附加的TCP连接来提高阈值,用来对于需要同时访问包含压缩历史的盘的两个连接来最小化压缩程序的出现。
【0220】在所示实施例中,该方法还包括响应于该匹配可延伸地不高于给定阈值的确定,该装置传输未压缩的数据(步骤507)。该装置可以随后继续计算之后接收的输入数据部分的指纹来识别压缩历史中可能的匹配。未压缩的数据可以被传输到设备、客户机或者任一其它装置。在一些实施例中,所传输的数据可以使用压缩方法而不是压缩历史来压缩。例如,该数据可以随后使用行程长度压缩或者LZW压缩来压缩。在一个实施例中,可以仅使用在快速存储元件中可用的压缩历史的一部分来压缩数据。例如,装置可以维持高速缓存中压缩历史的最近访问的部分。该装置可以选择仅使用在高速缓存中可用的那些部分来压缩数据。
【0221】如果该匹配可延伸地高于预定阈值,则该装置使用压缩历史来压缩该数据。使用压缩历史可以包括访问、参考或者以其他方式影响压缩历史来尝试压缩输入数据的任何方法。例如,该装置可以访问压缩历史来确定具有对应于输入数据的指纹的压缩历史的部分是否逐字节地匹配于输入数据。或者,该装置可以在访问压缩历史以确认匹配之后使用重传输所述输入数据之前的压缩历史的参考来替代输入数据的一个或者多个部分。
【0222】使用片段作为到压缩历史的索引的基本问题是在一些情况中给定片段可以发生大量传输文件或者数据中。这可能阻止压缩引擎找到对于给定输入流的压缩历史中的长连续匹配的能力。这些长连续匹配可以期望用于降低所传输数据的数量以及在压缩历史保存在盘上时降低盘访问的次数。例如,在大多数的网页中出现片段“<HTML”。如果设备随后接收以“<HTML”开始的输入流,甚至输入流是设备的压缩历史中存在的文件的开始,设备难以识别包含片段“<HTML”的多个块的哪一个与输入流的其余部分匹配。
【0223】现在参考图6A,示出使用压缩索引来定位对应于输入数据的压缩历史匹配的第二实施例的框图。总的来说,输入流“Call meIshmael”被处理成多个片段。指纹被计算用于每个片段并且识别索引中的对应的行。设备随后计数每一行中的位置标识符的数量,来确定哪行选择用于访问盘。
【0224】仍旧参考图6A,设备(或者客户机代理或者服务器代理)在访问压缩历史之前计算多个片段的指纹。接收到输入流“Call meIshmael”之后,设备计算连续交迭的四个字节的片段的每一个的指纹,所述片段组成输入流。第一片段“Call”具有4的指纹值,并且对应的压缩索引项410b具有多个位置标识符。这可以指示盘上的多个块包含字符序列“Call”。设备随后继续计算输入流的多个连续片段的指纹,而不是尝试访问这些块的其中一个。在所示例子中,设备计算下四个片段的指纹。设备随后计数每一个索引项中的位置标识符的数量。在所示例子中,片段“all”具有匹配一个压缩历史位置的指纹,片段“11m”具有匹配三个压缩历史位置的指纹,片段“1me”具有匹配两个压缩历史位置的指纹,并且片段“me”具有匹配超过三个压缩历史位置的指纹。随后可以进行观察包含输入流的任意长的压缩历史匹配必须包含对每一个片段的匹配。因此,如果在压缩历史中存在长的匹配,其必须包含对片段“all”的匹配,其仅具有对应项中的一个位置标识符。压缩引擎可以推论该位置标识符最可能指向包含长的匹配的压缩历史的区域,并且访问指定位置中的压缩历史。压缩引擎可以随后执行匹配的行程长度延伸来确定匹配序列的总长度。
【0225】压缩引擎可以使用任一方法来确定压缩索引项中的位置标识符的数目。在一个实施例中,压缩引擎可以通过在每个位置标识符上重复来计数给定索引项中的位置标识符。在另一个实施例中,压缩引擎可以通过确定压缩索引项的总大小来计数位置标识符。在仍旧另一个实施例中,压缩索引的每个项可以保存包含在项中的位置标识符的数量的计数。
【0226】现在参考图6B,示出用于确定将输入数据的指纹与识别压缩历史中的多个数据实例的指纹索引匹配的优先级的方法的实施例的流程图。总的来说,该方法包括具有压缩历史的装置建立一个索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储单元上的位置的位置标识符(步骤601)。该装置识别输入数据的多个指纹匹配具有至少一个位置标识符的索引中的多个项(步骤603);并且选择具有最少数量的位置标识符的多个项中的一个项(步骤605)。该装置可以随后将输入数据的第一部分和所选择项识别的压缩历史中的第一位置中的数据相匹配(步骤607)。该方法可以通过具有压缩历史的任一装置执行,包括客户机、客户机代理、服务器或者服务器代理。此外该方法可以结合此处描述的任一其它压缩历史方法和系统来执行。例如,该方法可以结合参考图5B描述的方法来执行。在此例中,压缩引擎可以计算多个片段的指纹,识别索引中具有最少位置标识符的片段,并且随后检查用于那些片段的位置标识符是否指向压缩历史的顺序区域。
【0227】仍旧参考图6B,更详细地,装置建立用于压缩历史的任一类型和形式的索引(步骤601)。在一个实施例中,该索引可以包括压缩索引410。在另一个实施例中,该装置可以使用网络优化引擎250和/或压缩引擎238来建立索引。该索引可以使用任意数据指纹方法,并且可以使用任一方法来选择数据部分。在一个实施例中,该索引可以将从多个交迭片段采用的指纹对应于块标识符和偏移量。在另一个实施例中,索引可以将从多个交迭片段采用的指纹对应于压缩历史中的存储器地址。可以从任一源接收压缩历史中的数据。在一个实施例中,压缩历史中的数据可以包括由装置之前传输的数据。存储压缩历史的存储元件可以包括任一方式的存储设备,包括一个或者多个RAM、盘和闪速存储器。在一些实施例中,存储元件可以驻留在装置上。在其他实施例中,存储元件可以经由网络连接到该装置。在一个实施例中,存储元件可以比包含索引的存储器具有更高的等待时间。
【0228】建立索引之后,该装置可以识别输入数据的多个指纹匹配具有至少一个位置标识符的索引中的多个项(步骤603)。装置可以计算对于任意数量和总数的输入数据的指纹。在一个实施例中,装置可以计算输入数据的四个部分的指纹。在另一个实施例中,该装置可以计算对于输入数据的两个、三个、五个、六个、七个、八个、九个、十个、或者更多个部分的指纹。在一个实施例中,该装置可以识别多个指纹,每一个对应于输入数据的连续交迭片段,匹配多个项。
【0229】在一些实施例中,装置可以在检查用于对应的位置标识符之前来计算用于多个数据部分的指纹。在其他实施例中,装置可以计算数据部分的指纹,检查对应的位置标识符的索引,并且随后,如果找到多于一个的位置标识符,则装置在访问压缩历史之前计算用于随后的数据部分的指纹。例如,装置可以继续计算指纹并且计数对应的位置标识符,直到该装置计算仅有一个位置标识符位于对应的索引项中的指纹。装置可以随后选择该项(步骤605)并且访问由该一个位置标识符识别的压缩历史中的位置并且确定匹配长度。
【0230】该装置可以选择具有最少数量的位置标识符的多个项的一个项(步骤605)。在一些情况中,该装置可以选择仅具有一个位置标识符的项。在其他情况中,该装置可以选择具有多于一个位置标识符的项,但是具有最少数量的该多个的位置标识符。在这些情况中,装置可以使用任一方法从项中来选择位置标识符进行访问,包括但不限于随机选择位置标识符、或者使用图5B中描述的方法来选择位置标识符。
【0231】在选择项之后,该装置可以随后将输入数据的第一部分和所选择项识别的压缩历史中的第一位置中的数据相匹配(步骤607)。第一部分可以是指纹对应于所选择项的部分。可以通过任一方法执行匹配,包括但不限于逐字节比较、第二指纹处理、校验和、和行程长度延伸。
【0232】如果发现匹配,则装置可以随后通过使用随后传输中的压缩历史的匹配部分的参考来替代数据的匹配序列,以压缩输入数据。该装置可以随后重复关于之后输入数据的任意或者全部步骤。
F、用于从压缩历史数据移除应用层首部的系统和方法
【0233】如之前讨论的,相对于较短的匹配,许多益处可以与识别和使用较长的压缩历史匹配相关。潜在的益处包括较少的压缩历史访问、改进的压缩率和较低的处理开销。增加产生较长压缩历史匹配的可能的另一个方法是从压缩历史中移除认为不可能重复的输入数据。不可能重复的数据的一个例子是应用层协议首部,其可以包括会话号、时间戳和其他唯一的数据。通过将这些应用层首部从压缩历史数据中移除,可以获得较长的压缩历史匹配,并且可以保存压缩历史空间。
【0234】现在参考图7A,示出用于将应用层协议首部从保存在压缩历史中的数据移除的技术的一个实施例的框图。总的来说,应用数据流700从客户机102传输到设备200。应用数据流包括通过应用层协议首部710a、710b、710c(总的710)分开的应用数据的多个序列720a、720b、720c(总的720)。该设备200在压缩历史400的邻接区域保存应用数据720的部分。
【0235】仍旧参考图7A,更详细地,设备200(在其他实施例中,其可以是客户机代理、服务器代理、客户机或者服务器)经由任意类型和形式的协议来接收应用数据流700。应用数据流700可以包括应用层数据的任意流。如在图7A、7B、7C、7D和附图说明中使用,应用层可以是指OSI模型的应用层(或者层7)或者应用层可以是指OSI模型中的传输层之上的任一层。应用数据流的例子包括但不限于HTTP通信、公共因特网文件系统(CIFS)通信、网络文件系统(NFS)通信、ICA通信、和文件传输协议(FTP)通信。在一个实施例中,设备200可以用作包含应用数据流700的数据流的代理或者透明代理。例如,设备200可以用作TCP连接的透明代理,其中TCP分组的有效载荷包括应用数据流。
【0236】应用数据流700可以包括多个应用层协议首部710。应用层协议首部可以包括应用协议使用的任一序列来格式化、描绘或者承载关于应用数据的信息。应用层协议首部可以出现在应用数据流中的任一位置、和应用数据对象中的任一位置。术语应用层协议首部同样包含页脚、报尾、和中间对象(mid-object)序列。例如,诸如CIFS的文件访问应用可以传输散置有首部的文件部分,该首部指示和该首部一起传输的文件数据的大小和位置。应用层协议首部710可以使用特定字符、格式和/或应用特定的协定来定界。例如,应用层协议首部710可以包括指示应用数据720的之后的部分的大小的大小字段。跟随指定大小的应用数据720的序列的可以是另一个应用层协议首部710。
【0237】应用数据720可以包括除了传输用于应用使用的应用层协议首部710之外的任一数据。应用数据720的例子可以包括但不限于文本、文档、文件、图像、对象、视频流、和音频流。在一种情况中,应用数据720可以包括在两个计算装置之间使用FTP传输的文件。在另一种情况中,应用数据720可以包括在两个计算装置之间使用CIFS传输的文件。在第三种情况中,应用数据720可以包括在虚拟应用中所使用的文件或者数据对象。例如,远程用户可以由通过中央服务器提供的字处理应用来访问。中央服务器可以通过传输多个数据对象来提供对应用的访问,包括但不限于应用的可执行部分、显示给用户的图形数据和一个或者多个文档文件。
【0238】接收到应用数据流700之后,设备可以解析应用数据流700来识别应用层协议首部710和应用数据720。在一个实施例中,设备可以通过使用解析引擎或者定制用于给定应用的部分解析引擎来识别应用层协议首部。例如,设备可以被编程来特定地识别CIFS首部。
【0239】一旦应用数据720和应用层协议首部710已经被识别,则设备200可以随后将应用数据720保存在压缩历史的顺序区域中。在一些实施例中,压缩历史的顺序区域可以包括存储器的物理邻接的区域。在其他实施例中,压缩历史的顺序区域可以包括单个压缩历史块的顺序区域。仍在其他实施例中,压缩历史的顺序区域可以包括逻辑上连续的多个块的部分。例如,应用数据720可以被保存在多个块中,每个块包含指向序列中下一个块的指针。或者例如,应用数据720可以被保存在扩散在压缩历史之间的多个块,使用外部数据结构指示包括应用数据720的块序列。
【0240】在一个实施例中,设备可以不保存应用层协议首部710。在另一个实施例中,设备可以将应用层协议首部710保存在来自应用数据720的压缩历史的分离区域中。
【0241】通过将应用数据720顺序保存在压缩历史中,如果之后经由设备传输相同的应用数据,则设备可以获取较长的压缩历史匹配。许多应用层协议使用对于应用数据的每次传输唯一的首部。例如,应用层协议首部可以包括专用于应用数据的发送器或者接收者的信息,或者专用于传输应用数据中的特定会话的信息。通过顺序保存应用数据并且随后搜索仅关于应用数据的压缩历史匹配,可以找到较长的匹配。
【0242】尽管在所示实施例中应用数据720保存在压缩历史的顺序区域中,但是在其他事示例中,应用数据720可以保存在压缩历史的非顺序区域中。
【0243】现在参考图7B,示出将应用层协议首部从保存在压缩历史中的数据移除的第二实施例的框图。总的来说,设备接收包括多个应用数据对象720、721的应用数据流700,其可以在应用数据流700上多路复用,并且通过应用层协议首部710分离开。设备解析应用数据流700来识别应用数据对象,并且将每一个应用数据对象保存在压缩历史400的单独块中。
【0244】仍旧参考图7B,更详细地,应用数据对象可以包括应用数据的任一离散单元。应用数据对象的例子包括但不限于文档、文件、图像、视频流、和音频流。例如,应用可以经由单个传输层连接传输多个文件。多个文件的部分可以互相散置,并且通过识别文件的应用层协议首部来分开。在另一个例子中,服务器可以将对应用的访问提供给用户。服务器可以在单个传输层连接上传输包括应用或者应用所使用的对象的多个对象。
【0245】设备可以使用包含在应用数据流700中的任意信息来识别应用数据对象730、731。在一个实施例中,设备可以解析一个或者多个应用层协议首部来识别应用数据对象。在所示实施例中,设备识别出应用数据对象730已经分为两部分730a、730b用于传输。设备随后将这两部分730a、730b保存在压缩历史的单独的序列区域。尽管图7B示出设备识别两个散置的应用数据对象,但是在其他实施例中,设备可以识别任意数量个散置的应用数据对象。同样,尽管图7B示出设备将应用数据对象保存在单独块中,但是在其它实施例中应用数据对象可以保存在同一块中,其中,第一对象保存在该块的第一邻接区域并且第二应用数据对象保存在该块的第二邻接区域。
【0246】在压缩历史的邻接区域中保存应用数据对象使得如果同样的应用数据对象再次经由设备传输则能够发现更长的压缩历史。这就不可能给定的应用数据对象以同样方式散置,并且在同样的其他应用数据对象之间,如之前发生的。因此,当给定应用数据对象730可以经由给定设备200多次传输,基于所传输的应用数据流的压缩历史匹配的搜索可以仅导致与应用数据对象片段730a和730b一样长的匹配。通过作为完整单元来保存和解析应用数据对象,设备可以改进随后的压缩历史匹配的长度。
【0247】现在参考图7C,示出用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的方法的一个实施例的流程图。总的来说,所述方法包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部(步骤701)。第一装置从应用数据流识别第一序列和第二序列(步骤703);并且将包括第一序列和第三序列的组合序列保存到压缩历史中(步骤705)。
【0248】仍旧参考图7C,更详细地,所示方法包括在第一装置和第二装置之间传输应用数据流700,所述应用数据流700包括应用数据720的第一序列和应用数据720的第二序列之间的至少一个应用层协议首部710(步骤701)。第一和第二装置可以是任意计算装置100。在一个实施例中,第一和第二装置可以是设备200。在另一个实施例中,一个或者多个的第一和第二装置可以是客户机、服务器、客户机代理或者服务器代理。在一个实施例中,第一和第二装置可以是WAN优化装置。在另一个实施例中,第一和第二装置可以用作客户机和服务器之间的传输层连接的透明代理。
【0249】应用数据720的第一和第二序列可以包括应用数据的任意序列。应用数据的序列的示例包括要传送的文件、数据对象、图像、文本或者文档的连续部分。例如,应用数据的第一序列可以包括经由CIFS传输的文件的第一5000字节的部分。应用数据的第二序列可以随后包括该文件的之后5000字节,第一和第二序列通过CIFS首部分开。
【0250】在一些实施例中,第一装置可以使用应用数据的每个序列之间的应用层协议首部来传输应用数据的多个序列。例如,两个WAN优化装置可以用作客户机和服务器之间的连接的透明代理。服务器可以随后使用NFS传输10MB文件到客户机,其中该文件使用通过NFS首部定界的每一部分而被分为10个1M的部分。
【0251】第一装置通过任意方法从应用数据流识别第一序列和第二序列(步骤703)。在一个实施例中,第一装置可以解析一个或者多个应用层协议首部。在另一个实施例中,第一装置可以解析通过任意数量的应用层协议首部分开的应用数据的任意数量序列。在一些实施例中,第二装置可以类似地识别应用数据的第一和第二序列,使得第二装置能够将其压缩历史和第一装置的压缩历史同步。在其他实施例中,第一装置可以将明确的通知传输给识别应用数据的第一和第二序列的第二装置。
【0252】第一装置可以随后将包括第一序列和第二序列的组合序列保存到压缩历史中(步骤705)。组合序列可以保存在压缩历史的逻辑或者物理连续区域。在其他实施例中,组合序列可以包括应用数据的任意数量个序列。第二装置还可以将包括第一序列和第二序列的组合序列保存在压缩历史中。
【0253】例如,两个WAN优化装置可以用作客户机和服务器之间的连接的透明代理。服务器可以随后使用NFS传输10MB文件到客户机,其中该文件使用通过NFS首部定界的每一部分而被分为10个1M的部分。每个WAN优化装置通过解析NFS首部可以识别文件的部分。每个WAN优化装置可以随后将该部分保存在他们各自的压缩历史的连续区域中。以此方式,该文件作为整体表示在压缩历史中,而不需要插入协议首部。设备可以随后在文件再次在两个装置之间传输的事件中实现更长的压缩历史匹配。
【0254】现在参考图7D,示出用于通过将应用层协议首部从所接收的数据移除来改进压缩历史匹配的方法的第二实施例的流程图。总的来说,所述方法包括通过第一装置接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部(步骤751)。该装置从应用数据流识别第一序列和第二序列(步骤753);并且确定包括第一序列和第二序列的组合序列匹配压缩历史的一部分(步骤755)。该装置随后将识别压缩历史的匹配部分的信息传输给第二装置(步骤757)。
【0255】仍旧参考图7D,更详细地,所述方法包括通过第一装置接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部(步骤751)。第一装置可以包括客户机、服务器、客户机代理、服务器代理、设备、WAN优化设备和透明代理中的任意一个。第一装置可以从客户机、服务器、客户机代理、服务器代理、设备、WAN优化设备的任意一个接收应用数据流。在一个实施例中,第一装置可以包括接收来自服务器的应用数据流的WAN优化设备。在另一个实施例中,第一装置可以包括接收来自客户机的应用数据流的客户机代理。第一装置可以正重传输应用数据流的一些或者全部到第二装置。在一个实施例中,第一装置可以用作对于第一装置从其接收数据的客户机或者服务器的透明代理。
【0256】第一装置可以随后从应用数据流识别第一序列和第二序列(步骤753)。第一装置可以使用此处描述的任意技术来识别第一和第二序列。在一些实施例中,当第一装置正识别第一和第二序列时,第一装置可以延迟重传输应用数据流。例如,当接收到CIFS流时,WAN优化装置可以等待重传输该流,直到设备识别出经由该流传输的文件的一个或者多个序列,使得设备可以检查压缩历史中的一个或者多个文件序列的匹配。
【0257】第一装置可以随后确定包括第一序列和第二序列的组合序列匹配压缩历史的一部分(步骤755)。在一些实施例中,第一装置设备可以通过使用此处描述的指纹方法和/或压缩索引来确定匹配。在其他实施例中,第一装置可以使用行程长度延伸来确定匹配。例如,当发现与数据的第一序列的开始部分匹配时,第一装置可以进行所接收的应用数据流和压缩历史的匹配部分的逐字节比较,但忽略来自逐字节比较的任一应用层协议首部。压缩历史的匹配部分可以已经使用参考图7C描述的方法保存。
【0258】第一装置可以随后将识别压缩历史的匹配部分的信息传输给第二装置(步骤757)。在一个实施例中,识别压缩历史的匹配部分的信息可以包括块标识符、块标识符加偏移量、和/或存储器地址。第二装置可以随后使用压缩历史的对应部分来重新构建应用数据流。
【0259】作为以上方法的例子,第一和第二装置可以是用作客户机和服务器之间的传输层连接的代理的WAN优化装置,第一装置位于服务器侧并且第二装置位于客户机侧。第一WAN优化装置可以接收包括通过由CIFS首部分开的多个序列传播开的文件的CIFS流。第一装置通过识别该文件的序列并且使用行程长度延伸来匹配文件序列和第一装置的压缩历史的连续区域来识别该文件之前已经在第一和第二装置之间传输。第一装置可以随后将块标识符传输给第二装置,识别和CIFS首部一起的压缩历史的匹配部分。第二装置可以随后访问对应于块标识符的第二装置上的压缩历史的部分。第二装置可以随后通过将来自第二装置的压缩历史的合适的文件序列插入到从第一设备接收的CIFS首部之间来重新构建来自服务器的该流。第二装置可以随后将解压的流传输到客户机。
G、用于同步共享的压缩历史数据的终止的系统和方法
【0260】该部分描述用于同步两个装置之间共享的压缩历史的技术和装置。通过将数据部分的优先列表保持在压缩历史中,并且随后将列表中的数据部分的数量传输给其它装置,两个装置可以维持压缩历史内容的至少大致的同步。这可以导致较少实例的益处,其中装置使用对接收者的压缩历史所不保持的数据部分的参考来压缩数据。这还可以允许装置来更有效的删除未使用的或者不可能使用的来自压缩历史的数据部分。
【0261】现在参考图8A和8B,示出用于同步两个装置之间共享的压缩历史的方法。总的来说,所述方法包括:通过第一装置保存第一压缩历史,压缩历史包括之前传输到第二装置的多个数据部分,每一个数据部分都具有位置标识符(步骤801)。第一装置可以随后建立通过时间排序的位置标识符的排序列表,该时间是第一装置最后访问对应于每一标识符的位置中的数据部分的时间(步骤803)。第二装置可以随后删除数据的一个或者多个部分,并且传输剩余数量个部分的数量到第一装置。第一装置接收来自第二装置的识别第二装置上对应的第二压缩历史的大量位置标识符的信息(步骤805);并且确定所接收的数量比第一压缩历史的大量位置标识符小第一数量(步骤807)。第一装置可以随后从位置标识符的列表中选择废弃处于对应于最近最少访问过的数据部分的排序列表的结尾处的第一数量个位置标识符(步骤809)。第一和第二装置可以包括客户机、服务器、客户机代理、服务器代理、设备、WAN优化设备和/或透明代理的任意一个。
【0262】仍旧参考图8A和8B,更详细地,所述方法包括:通过第一装置保存第一压缩历史,压缩历史包括之前传输到第二装置的多个数据部分,每一个数据部分都具有位置标识符(步骤801)。该压缩历史可以通过任意方法建立和保存,包括此处描述的所有方法。在一个实施例中,数据部分可以包括块405,并且位置标识符可以包括块标识符和/或块标识符和偏移量。该第一压缩历史的建立可以和第二装置上的第二压缩历史的建立同步。
【0263】第一装置可以随后建立通过时间排序的位置标识符的排序列表,该时间是第一装置最后访问对应于每一标识符的位置中的数据部分的时间(步骤803)。排序的列表可以包括允许表示排序的任一数据结构,包括但不限于阵列、树、堆或者联接列表。排序列表可以以任一方式保存,包括在盘上、存储器中或者以任一组合。例如,长的排序列表可以保存在盘上,具有传输到RAM中的列表的有效部分。
【0264】在一个实施例中,对压缩历史的给定部分的最后访问的时间可以表示该部分被最后用来压缩数据流的时间。在另一个实施例中,最后访问的时间可以表示建立该部分的时间。仍在另一个实施例中,最后访问的时间可以表示该部分被最后用来压缩传输到给定装置的数据流的时间。在此实施例中,该装置可以维持单独的排序列表用于该装置传输压缩数据所到的多个装置的每一个。在一些实施例中,装置还可以维持给定排序列表中的位置标识符的数量的计数。
【0265】在一个实施例中,该装置可以通过每当压缩历史的部分被访问时将对应于压缩历史的部分的位置标识符移动到列表的前端来维持排序列表。当装置建立压缩历史的新的部分,该装置还可以将用于新的部分的位置标识符置于列表的前端处。例如,装置可以初始建立包括数据部分A、B、C、D、E、F、G、H、I和J的压缩历史。排序列表可以随后是J、I、H、G、F、E、D、C、B和A,反映了建立该部分的顺序,其中J位于最前端。如果装置随后接收并且压缩包括来自部分F的数据的压缩数据,则装置可以重新将列表排序为F、J、I、H、G、E、D、C、B和A。如果装置随后建立新的部分K,则列表被再次更新为K、F、J、I、H、G、E、D、C、B和A。如果装置随后接收并且压缩来自部分C和D的数据,则列表可以再次更新为D、C、K、F、J、I、H、G、E、B和A。
【0266】该装置还可以通过当该装置接收到数据部分被破坏的指示时将对应于该数据部分的位置标识符移到列表的末端来维持排序的列表。该装置还可以当该装置接收到数据部分不再保存在第二装置上的对应压缩历史中的指示时将对应于该数据部分的位置标识符移到列表的末端。例如,第一装置可以通过将给定数据部分替换为对压缩历史中的数据的相同部分的参考来尝试压缩数据流。第一装置可以随后从接收者接收到错误消息,指示接收者在其对应的压缩历史中不具有数据部分,可能是由于其被删除来为最近经常传输的数据部分腾出空间。第一装置可以随后将对应于数据部分的位置标识符移动到其排序的列表的末端。
【0267】第一装置接收来自第二装置的识别第二装置上对应的第二压缩历史的大量位置标识符的信息(步骤805)。该信息可以通过任一方法来接收。在一些实施例中,该信息可以经由在第一和第二装置之间使用的控制协议接收。在一个实施例中,可以在与第二装置的通信的建立和/或终止时接收该信息。例如,当在两个WAN优化装置之间建立通信时,每一个可以传输对应于其他装置的压缩历史中的块的总数。在另一个实施例中,该信息可以在两个装置之间传输的另一个数据流中编码。
【0268】第一装置可以随后确定所接收的数量比第一压缩历史的大量位置标识符小第一数量(步骤807)。例如,第一装置可以接收第二装置在其对应于第一装置的压缩历史中具有共1546个块的指示。第一装置可以随后识别处其在第对应于第二装置的压缩历史中具有共1613个块。在此例中,所接收的数量比本地数量小67个块。块数量中的差值可以由任意因素导致,包括可用盘空间中的差异、一个或者多个数据部分的破坏或者不同的软件版本。
【0269】第一装置可以随后选择从列表中废弃对应于最近最少使用的数据部分的第一数量个位置标识符(步骤809)。例如,如果第一装置的块的排序列表是来自上面例子的列表D、C、K、F、J、I、H、G、E、B和A,并且第一装置接收到第二装置在其对应压缩历史中仅具有8个块的指示,则第一装置可以选择块E、B和A来废弃。
【0270】在一些实施例中,第一装置可以随后从排序列表失活、删除或者以其他方式移除所选择的位置标识符。在一个实施例中,第一装置还可以随后失活、删除或者以其他方式移除对应于所选择的位置标识符的数据部分。在一些实施例中,第一装置可以失活来自仅关于单个装置的压缩历史的数据部分,而保持该数据部分关于其他装置有效。
【0271】上述方法还可以和在多个部分需要删除时总是删除最近最少使用的压缩历史的数据部分的总的策略相结合。例如,位于中心站(central office)的WAN优化装置可以被用来加速和压缩与位于分支机构的多个WAN优化装置的通信。因为中心站装置必须维持对应于每个分支机构装置的压缩历史,所以位于中心站的WAN优化装置可能在任意分支机构装置之前耗尽用于压缩历史的盘空间。当中心站装置传输数据到分支机构装置A时,中心站装置可以被迫删除其压缩历史的其中一个中的多个数据部分,来为写入压缩历史的新的数据部分腾出空间。在一些情况中,中心站装置可以删除来自对应于装置A的压缩历史的部分。在其他情况中,中心站装置可以删除对应于不同分支机构装置的压缩历史的部分。然而,中央装置可以从选择要从中删除数据部分的压缩历史中选择删除最近最少使用的数据部分。接着,在之后的时间,中央装置可以传输在从中删除该多个部分的压缩历史中保留的全部数量的部分。接收更新的总数的装置可以随后使用上述方法来删除最近最少使用的数据部分,使得中央和分支结构的装置上的压缩历史至少大概同步。
H、用于影响通过多于两个装置的共享的压缩历史和高速缓存的系统 和方法
【0272】通过在装置之间传输压缩历史的部分和/或压缩历史索引,之前传输的数据的有效压缩的益处可以延伸超过做出最初传输的两个装置。为了使用简单的例子,如果装置A将对应于装置C的压缩历史传送给装置B,则装置C和B现在可以具有能力通信之前在C和A之间传输的压缩数据。以下部分讨论用于影响压缩历史来提供除了最初发送器的装置之间的压缩的系统和方法。
【0273】现在参考图9A,示出说明在多个装置之间共享压缩历史的一个实施例的框图。总的来说,设备200c通过低性能网络104b将数据传输到设备200a。设备200c随后接收对来自另一个设备200b的相似数据的请求。当设备200c接收到对该请求的响应时,设备可以检测与保存在传输给设备200a的压缩历史中的数据的匹配。设备200c随后发送与设备200b匹配的指示。该指示可以采取根据压缩来压缩响应的形式,并且使用指向设备200a的位置标识符。设备200b可以随后请求来自设备200a维持的压缩历史的匹配数据。设备200b接收带来自设备200a的请求的数据之后,设备200a可以随后解压缩从设备200a接收的数据并且将其发送给客户机102b。
【0274】仍旧参考图9A,更详细地,多个设备200a、200b、200c通过多个网络104a、104b、104c通信。在一些实施例中,设备可以是WAN优化装置,并且网络104b可以包括WAN。在其他实施例中,设备可以用作多个客户机102a、102b和服务器106之间通信的透明代理。服务器可以位于具有设备200c的网络104a上。两个设备200a、200b可以位于具有一个或者多个客户机102a、102b的LAN上。在一个实施例中,设备200c和服务器106可以位于中心站中,并且设备200a、200b和客户机102a、102b可以位于一个或者多个分支机构中。尽管图9A描述了设备,但是关于图9A描述的系统和方法可以同样应用到客户机、客户机代理、服务器和服务器代理。例如,一个或者多个设备200a或者200b可以在图9A中被在客户机上执行的客户机代理120代替。
【0275】在所示实施例中,设备200c将数据从服务器106传输到设备200a。在响应于客户机102a对服务器106的数据的请求期间,该数据可以被发送。尽管图9A描述从服务器发送的数据,但是该数据可以来自于任一其它源,包括另一个设备或者设备200c中的高速缓存。当数据从设备200c传输到设备200a时,两个设备可以在他们各自的压缩历史中保存数据的备份。在一个实施例中,设备可以将所保存的指示数据所传输到的设备的数据和一个记录一起保存,。例如,数据可以保存在设备200c的压缩历史中的块中,其中该块包含块中数据被传输到设备200a的指示器。
【0276】设备200c可以随后接收来自设备200b的对服务器106的请求。该请求可以源自客户机102b。在另一个实施例中,该请求如之前数据一样可以源自于同一客户机102a。该实施例是可应用的以下情况的:其中多于一个的WAN优化装置被用来提供对给定分支机构或者客户机集的访问。设备200c将请求传递到服务器106。在其他实施例中,设备可以将请求传递到任意其它计算装置或者使用内部高速缓存来服务该请求。
【0277】当设备200c接收到来自于服务器106的对该请求的响应时,设备可以检测对应于所接收数据的一个或者多个压缩历史的匹配。设备可以使用任一方法来检测这些匹配,包括此处描述的指纹和索引方法的任意一个。设备可以随后确定匹配对应于之前传输到设备200a的数据。
【0278】设备200c可以随后开始传输从服务器接收的数据流到设备200b,该数据流是根据与设备200a共享的压缩历史来压缩的。在一些实施例中,设备200c可以确定网络104b关于网络104c足够的低性能,使得所请求数据如果使用来自于设备200a的压缩历史压缩的话则其到设备200b的传输将更快。在其他实施例中,设备200c可以不具有关于网络104b、104c的性能的信息,但是仍旧传输给设备200b希望该传输被改进的指示。在这些实施例的每一个中,当设备200a不可用或者在其压缩历史中不再具有请求的数据时,设备200c还可以以未压缩的格式开始传输所请求的数据到设备200b。
【0279】设备200b在接收到压缩的数据流之后可以随后请求来自设备200a的压缩历史的所指示的部分。在一些情况中,设备200b可以请求多个之后的压缩历史块。
【0280】设备200a接收到对于压缩历史的匹配部分的请求之后,设备200a可以随后将数据的请求部分传输给设备200b。在一个实施例中,设备200b可随后将所接收的部分保存在用来加速设备200b和设备200c之间的通信的压缩历史中。
【0281】在另一个实施例中,除了直接发送压缩数据流到设备200b,设备200c可以传输请求到设备200a来用作对于设备200c和设备200b之间的连接的中间设备。设备200c可以随后开始传输所请求的数据流到200a,使用之前的压缩历史来加速传输。设备200a可以随后将数据流转发给设备200b。
【0282】现在参考图9B,示出用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的一个实施例的流程图。总的来说,第一装置将第一数据流传输到第二装置,第一数据流根据所述第一装置和所述第二装置之间共享的第一压缩历史而被压缩(步骤901)。第一装置可以接收来自第三装置的该第三装置位于和第二装置相同网络上的指示。第一装置接收目的发往第三装置的第二数据流(步骤903)。第一装置识别所述数据流的一部分与所述第一压缩历史的一部分在预定阈值内相匹配(步骤905);并且将识别所述第一压缩历史的该部分的信息传输到第三装置(步骤907)。第一、第二和第三装置可以是客户机、服务器、客户机代理、服务器代理、设备、WAN优化装置和/或透明代理的任意一个。在一个实施例中,该方法可以反映通过图9A中的设备200c执行的步骤。
【0283】仍旧参考图9B,更详细地,该方法包括在第一装置和第二装置之间传输第一数据流,第一数据流根据所述第一装置和所述第二装置之间共享的第一压缩历史而被压缩(步骤901)。在一个实施例中,数据流可从第一设备传输到第二设备。在另一个实施例中,数据流可从第二设备传输到第一设备。数据流根据第一和第二装置共享的压缩历史而被压缩。该压缩可以通过任意方式执行,包括此处描述的任意一个,并且压缩历史可以包括任一压缩历史,包括此处描述的任一压缩历史。在一个实施例中,共享的压缩历史可以已经包括包含在第一数据流中的一个或者多个数据部分。在一些情况中,如果对于共享的压缩历史中的数据没有找到匹配,则数据可以未压缩地传输。共享的压缩历史可被更新来包括一个或者多个数据部分,该数据部分包含已经不在第一压缩历史中的第一数据流中。
【0284】第一装置可以以任一方式接收第三装置位于和第二装置相同网络上的指示(步骤902)。第一装置可以接收来自任一源的该指示。在一些实施例中,第一装置可接收来自第二或者第三装置的该指示。在其他实施例中,第一装置可已接收来自另一个装置的该指示。仍在其他实施例中,第一装置可以使用该指示人工配置。
【0285】在一个实施例中,当在两个装置之间建立连接时,每个装置可以发送识别同一网络上的一个或者多个其他装置的其他信息。例如,启动时,设备可以使用任一网络技术来自动发现驻留在LAN上或者以其他方式和该设备群集的其他设备。每一设备可以在启动时识别位于同一群集中的其他设备。
【0286】在一个实施例中,同一群集中的设备,可以交换识别对应于每一装置保持的压缩历史部分的块标识符的范围的信息。在另一个实施例中,群集中的设备可以交换识别每一个设备保持的盘的信息。以此方式,群集中的每个设备可以识别给定的位置标识符或者块标识符是否对应于位于该群集中的另一个设备上的压缩历史。例如,在通过将序列号附加到全局唯一盘标识符来建立块标识符的情况中,每个设备可以向群集中的其他设备发送对于设备的每个盘的标识符和指定对于每个盘标识符的合法序列号的范围。以此方式,当群集中的设备接收到块标识符时,该设备可以检查包含在块标识符中的盘标识符,来确定该盘是否通过群集中的设备保持。
【0287】在该发现步骤之后,当设备建立和任意其它设备或者客户机代理的连接时,设备可以传输与该设备本地群集的设备的列表。该设备还可以在建立该连接时接收在LAN上或者以其他方式与连接接收者群集的设备或者客户机代理的列表。以此方式,与另一个设备或者客户机代理通信的每个设备或者客户机代理可以知道任意其它的本地设备或者客户机代理对于其它设备或者客户机代理的身份。在其他实施例中,群集的装置的该发现的任意一个或者全部可以经由人工配置来实现。
【0288】为了给出详细的例子,中心站可以使用WAN优化设备的群集来和多个分支机构进行通信,每个分支机构也具有WAN优化装置的群集。当来自中心站的设备和处于分支机构的设备建立连接时,中心站设备可以向分支机构设备传输识别位于中心站群集中的其他设备的信息。分支机构设备也可以向中心站设备传输识别位于分支机构群集中的其他设备的信息。连同该识别信息一起,设备可以交换关于他们各自群集中的其他设备的任意其它信息,包括IP地址、容量、性能、盘标识符和配置信息。
【0289】所示方法还包括通过第一装置接收目的发往第三装置的数据流(步骤903)。第一装置可以接收来自任一源的数据流,包括客户机102、服务器106或者客户机代理120。在一个实施例中,数据流可以包括来自服务器106的对客户机请求的响应。例如,第一装置可以用作对客户机和服务器之间的TCP连接的透明代理,并且数据流可以包括对通过客户机的HTTP请求的响应。或者,例如,数据流可以包括来自应用服务器到客户机代理的ICA流。
【0290】第一装置随后识别所述该数据流的一部分与所述第一压缩历史的一部分相匹配(步骤905)。第一装置可以使用任一技术识别该匹配,包括此处描述的指纹和索引技术的任意一个。在一个实施例中,第一装置可识别数据流的一个或者多个片段和第一压缩历史中保存的块部分相匹配。例如,包括匹配部分的该块可以具有指示数据发送到第二装置的首部。或者例如,压缩索引项可以指示数据的该匹配部分被传输到第二装置。在确定数据的匹配部分由未与目的接收者共享的压缩历史保持之后,第一装置可以确定数据的匹配部分由具有目的接收者的群集中的设备或者其他装置共享的压缩历史所保持。
【0291】在一个实施例中,第一装置可以确定数据流的一部分在预定阈值内和第一压缩历史的一部分相匹配。预定阈值可以包括任一计数、百分比或者数据分布。在一个实施例中,预定阈值可以包括最小数量的字节。例如,第一装置可以识别数据流的至少64个字节和第一压缩历史的一部分相匹配。最小数量的字节可以是任意数量的字节,包括4、8、16、32、64、128、256、512、1024、2048和3072个字节。在一些实施例中,预定阈值可以要求最小数量的匹配字节是连续的。在其他实施例中,预定阈值可以要求最小数量的匹配字节被发现处于贯穿数据流的给定分布处。例如,预定阈值可以要求三个连续100字节的序列之中的至少50个匹配。或者预定阈值可以要求找到至少64字节的至少三个不同匹配序列。在一些实施例中,预定阈值可以要求压缩历史的匹配部分是连续的。例如,预定阈值可以要求至少128字节的序列和第一压缩历史中的128字节的连续序列相匹配。在一些实施例中,第一装置可以使用诸如关于图5B和6B描述的技术来有效确定任意长度的序列匹配的存在。仍在其他实施例中,预定阈值可以要求特定百分比的数据流和第一压缩历史中的数据相匹配。例如,预定阈值可以要求数据流的第一数量个字节的85%和第一压缩历史相匹配。
【0292】在一个实施例中,预定阈值可以通过第一装置被自动设置。在其他实施例中,预定阈值可人工配置。在一些实施例中,预定阈值可以被校准来考虑使用未由目标装置保持的压缩历史块的可能开销,而不是压缩历史数据的成功传送的结果。例如,预定阈值响应于网络104b的较低性能可以被降低。或者当将第一装置连接到第二和第三装置的网络性能变得更快时,预定阈值可以提高。在另一个例子中,如果第一和第三装置之间连接的带宽大体上低于第二和第三装置之间的连接的带宽,则预定阈值可以被降低。在一些实施例中,预定阈值可以包括用于使用和数据流的目的接收者共享的压缩历史压缩的相同的阈值。在其他实施例中,对于匹配部分不由目的接收者保持而是由与数据流的目的接收者群集的装置保持的情况,预定阈值可以更高。
【0293】第一装置随后将识别所述第一压缩历史的匹配部分的信息传输到第三装置(步骤907)。在一个实施例中,该步骤可以包括将数据流传输到第三装置,该数据流是根据第一压缩历史的匹配部分压缩的。第一装置可以以任一方式根据第一压缩历史的匹配部分来执行该压缩。在一个实施例中,第一装置可以使用识别第一压缩历史的匹配部分的位置标识符来替代数据流的部分。在此实施例中,第一装置还可以使用任意其它技术压缩数据流,包括但不限于根据第一装置和第三装置之间共享的第二压缩历史来附加地压缩数据流。在一个实施例中,该步骤可以包括将一个或者多个块标识符传输到第三装置。在另一个实施例中,该步骤可以包括传输一个或者多个位置标识符到第三装置。在一个实施例中,第一装置还可以传输识别第二装置的信息。
【0294】在一个实施例中,第一装置还可以包括已识别的匹配部分之后的第一压缩历史的一个或者多个部分的位置标识符。第一装置可以包括基于之后的部分还匹配于第二数据流的之后的部分的推测的这些部分。在一些实施例中,可以通过所发现的匹配的数量或质量来确定第一装置所识别的之后的部分的数量。
【0295】第三装置接收到根据第一压缩历史压缩的数据流之后,第三装置可以向第二装置传输对于第一压缩历史的所识别的部分的请求。这些部分可以随后使用任一方法和任一协议从第二装置传输到第三装置。在一些实施例中,第三装置可以随后发信号给第一装置其已经接收压缩历史的一个或者多个部分。在其他实施例中,第三装置可以向第一装置传输不能获取压缩历史的所识别部分的指示,其可以在第二装置不运行或者忙碌时发生。在这些情况中,第一装置可以随后重传输数据流到第三装置,而不需要根据第一压缩历史对其压缩。
【0296】现在参考图9C,示出用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的第二实施例的流程图。总的来说,所述方法包括:在第一装置和第二装置之间传输第一数据流,第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩(步骤911)。第一装置接收识别第三装置和第一压缩历史的一部分的信息(步骤913);并且将第一压缩历史的所识别的部分传输到第三装置(步骤915)。第一、第二和第三装置可以是客户机、服务器、客户机代理、服务器代理、设备、WAN优化装置和/或透明代理的任意一个。在一个实施例中,该方法可以反映通过图9A中的设备200a执行的步骤。
【0297】仍旧参考图9C,更详细地,所述方法包括:在第一装置和第二装置之间传输第一数据流,第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩(步骤911)。该步骤可以对应于之前的方法的步骤901,并且可以根据此处讨论的任一实施例执行。第一装置可以是第一数据流的发送者或者接收者。
【0298】第一装置可以随后接收来自第三装置的识别第一压缩历史的一部分的信息(步骤913);。在一些实施例中,所接收的信息可以包括根据之前讨论的方法的步骤907传输的任何信息。在一个实施例中,该信息还可以包括传输识别的部分到第三装置的请求。在另一个实施例中,该信息可以识别第一压缩历史的多个部分以传输到第三装置。在另一个实施例中,第一装置可以接收多个块标识符。仍在另一个实施例中,第一装置可以接收位置标识符和指示跟随位置标识符传输到第三装置的多个字节的字节计数。
【0299】在一些实施例中,第一装置可以接收来自第三装置的多个传输量,所具有的信息识别第三装置和第一压缩历史的一部分。例如,第二装置可以传输长的数据流给第三装置,并且持续识别匹配第一压缩历史的部分的数据流的部分并且相应地压缩该流。当第三装置接收到来自数据流的数据的位置中的每个位置标识符时,第三装置可以从第一装置请求第一压缩历史的所识别的部分。第三装置可以随后使用第一压缩历史的所请求的部分来重新构建该数据流。
【0300】第二装置可以随后将第一压缩历史的所识别的部分传输到第三装置(步骤915)。第二装置可以使用任意协议来传输第一压缩历史的这些部分。在一些实施例中,第二装置可以立刻传输多个所识别的部分。在其他实施例中,该装置可以在一个序列中传输多个所识别的部分。
【0301】现在参考图9D,示出用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法的第三实施例的流程图。总的来说,所述方法包括:第一装置通过第一装置接收来自第二装置的数据流,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩(步骤921)。第一装置识别第三装置(步骤923)并且将对于部分压缩历史的请求传输到第三装置(步骤925)。第一装置接收来自第三装置的压缩历史的所请求的部分(步骤927)。第一装置可以随后解压缩数据流(步骤929)并且传输解压缩的数据流到客户机(步骤931)。第一、第二和第三装置可以是客户机、服务器、客户机代理、服务器代理、设备、WAN优化装置和/或透明代理的任意一个。在一个实施例中,该方法可以反映通过图9A中的设备200b执行的步骤。
【0302】仍旧参考图9D,更详细地,第一装置接收来自第二装置的数据流,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩(步骤921)。该步骤可以根据此处描述的任一实施例来执行。在一些实施例中,该步骤可以对应于接收根据图9B中的方法的步骤907传输的压缩数据流。在一个实施例中,第一装置可以接收包括多个位置标识符的数据流,其中位置标识符识别插入到数据流中的数据部分。
【0303】第一装置可以以任一方式识别第三装置(步骤923)。在一个实施例中,第三装置可以在LAN上或者以其他方式和第一装置集群。第一装置可以使用此处描述的任一探测技术和群集技术来识别第三装置。在一些实施例中,第一装置可以通过确定包括在数据流中的块标识符中的盘标识符对应于第三装置保持的盘来识别第三装置。在另一个实施例中,第一装置可以确定包含在数据流中的位置标识符落入第三装置所公布的位置标识符的范围。
【0304】第一装置将对于部分压缩历史的请求传输到第三装置(步骤925)。该请求可以经由任意一个或者多个协议传输。在一些实施例中,该请求可以要求压缩历史的多个部分。在一些实施例中,第一装置可以传输对于在数据流中接收的多个标识符的每一个的单独请求。在另一个实施例中,第一设备可以包括在单个请求中的多于一个的标识符。在一些实施例中,第一装置可以请求所识别的部分之后的压缩历史的一个或者多个部分。例如,如果第一装置接收到包括识别第三装置保持的块的块标识符的数据流,则第一装置可以将对于所识别块以及一个或者多个随后的块的请求传输给第三装置。这可以基于随后的匹配将出现和包括之后的块的可能性。或者例如,如果第一装置接收到包括识别由第三装置保持的212字节的块的位置标识符的数据流,则第一装置可以将对于所识别字节以及来自该块的多个之后的字节的请求传输给第三装置。所请求的随后的字节的数量可以以任一方式确定,包括但不限于基于多个之前的匹配或者之前匹配的长度。
【0305】第一装置可以接收来自第三装置的压缩历史的所请求的部分(步骤927)。该部分可以经由任意协议接收。在一个实施例中,该部分可以被接收作为第三装置执行之前描述方法的步骤915的结果。在一些实施例中,第一装置可以接收压缩历史的多个部分。在一些实施例中,第一装置接收压缩历史的整个块。例如,响应于对于514字节的块的请求,第一设备可以接收包含所请求字节的整个块。在其他实施例中,第一装置可以接收块的部分。第一装置还可以接收具有压缩历史的所请求部分的任意附加信息,包括但不限于包含在对应于所请求部分的块首部或者压缩索引的任一信息。
【0306】在一些实施例中,接收到压缩历史的所请求部分之后,第一装置可以将第二压缩历史的部分插入到第一装置上的一个或者多个压缩历史中(步骤925)。该插入可以通过任一方法进行。在一些实施例中,该步骤可以包括将从第三装置接收的一个或者多个块合并到和第二装置共享的压缩历史中。在一个实施例中,该插入可以临时进行,并且在完成他们的使用之后可以移除或者失活该块。在另一个实施例中,该插入可以使得该部分被合并到第一压缩历史中去,如同它们已经在与第二装置传输数据的正常过程中建立。
【0307】在一些实施例中,第一装置可以在成功接收到来自第三装置的该部分时传输指示给第二装置。该指示可以用来通知第二装置其可以开始或者继续根据第二压缩的部分来压缩第二数据流。在一些实施例中,第一装置可以在没有接收到来自第三装置的所请求的部分时传输指示给第二装置。该指示可以用来指导第二装置不使用来自压缩历史的数据部分来压缩该数据流。第二装置还可以响应于该指示来重传输数据流的一个或者多个部分。
【0308】接收到压缩历史的所请求部分之后,第一装置可以解压缩所接收的数据流(步骤927)。该解压缩可以以任意方式进行。在一个实施例中,第一装置可以使用位置标识符识别的数据部分来代替多个位置标识符。第一装置可以使用任意数量个解压缩方法。例如,第一装置可以首先使用行程长度解压缩方法来解压缩该数据流,并且之后进一步通过使用压缩历史数据的所接收的部分来解压缩该数据流。在一些实施例中,第一装置还可以使用来自本地保存的压缩历史的数据部分来解压缩该数据流。
【0309】解压缩该数据流之后,第一装置可以传输数据流到客户机(步骤929)。在其他实施例中,第一装置可以传输该数据流到任一其它装置,包括客户机、服务器或者设备。
【0310】在一些实施例中,所描述的方法可以在服务一个或者多个请求的过程中连续应用。例如,位于分支机构的客户机可以访问来自使用ICA的中心站处的应用服务器的多个应用。分支机构和中心站可以每一个都具有WAN优化设备200的群集。ICA连接可以通过第一中心站设备和第一分支机构设备来代理。当来自应用服务器的数据通过中心站WAN设备传输时,中心站设备可以确定数据的部分已经之前发送给具有第一分支结构设备的群集中的第二分支机构WAN优化设备。中心站设备可以在该数据传递通过时使用对与第二分支机构装置共享的压缩历史部分的参考来压缩该数据。当通过第一分支结构设备接收到压缩数据流中的每一参考,其可以发送对于所参考数据的请求。当接收到每一条参考数据时,第一分支结构设备可以使用所接收的数据来重构部分数据流并且将重构的数据流部分转发给客户机。
【0311】现在参考图10A,示出用于在两组装置之间共享压缩历史索引来加速数据传输的系统的一个实施例的框图。总的来说,第一数据流在设备200c和设备200a之间传输,每一设备在其各自压缩历史中保存数据流部分。设备200a随后与设备200d共享压缩索引,包含对应于所传输的第一数据流的项。在传输第二数据流到设备200b的过程中,设备200d可以识别对应于从设备200c接收的索引的一个或者多个匹配。设备200d可以随后采取步骤来影响设备200c和200a上存在的压缩历史来加速该传输。在所示实施例中,设备200d请求来自设备200c的压缩历史的对应部分,并且通过使用对于设备200a和200c共享的压缩历史的引用来压缩第二数据流来发送匹配的指示到设备200b。在接收到压缩流时,设备200b可以随后请求来自设备200a的压缩历史的对应的部分,以解压数据流。
【0312】仍旧参考图10A,更详细地,多个设备200a、200b、200c、200d通过多个网络104a、104b、104c通信。在一些实施例中,设备可以是WAN优化装置,并且网络104b可以包括WAN。在其他实施例中,设备可以用作多个客户机102a、102b和服务器106之间通信的透明代理。服务器可以位于具有设备200c的网络104a上。两个设备200a、200b可以位于具有一个或者多个客户机102a、102b的LAN上。在一个实施例中,设备200c、200d和服务器106可以位于中心站中,并且设备200a、200b和客户机102a、102b可以位于一个或者多个分支机构中。尽管图10A描述了设备,但是关于图10A描述的系统和方法可以同样应用到客户机、客户机代理、服务器和服务器代理。
【0313】在所示实施例中,设备200c将数据从服务器106传输到设备200a。在一些情况中,这可以是通过客户机102a从服务器106请求的文件或者其它数据。在这些情况中,设备200c、200a可以用作用于通信的透明代理。当数据传输时,设备200a、200c可以正将来自传输的数据保存在他们各自的压缩历史中,并且将关于该数据的信息保存在压缩索引中。
【0314】设备200c可以随后传输其压缩索引的一些或者全部到设备200d。设备200d还可以传输其压缩索引的一些或者全部到设备200c。在一些实施例中,设备200c、200d可以是包含两个或者多个装置的设备群集的一部分,所有装置互相传输它们的压缩索引部分。设备可以以任一方式群集。并且可以使用任意技术来互相发现。以此方式,群集中的任一设备可以确定设备正传输的数据流是否包含对之前通过群集中任一其他设备传输的数据流的多个匹配。群集中的装置可以使用任一方法交换压缩索引。在一些实施例中,装置可以周期性地传输它们的压缩历史索引的更新到群集中的其他装置。在其他实施例中,装置在启动时或者在检测到群集中的新的装置时可以传输它们的压缩历史的部分到群集中的其他装置。在一些实施例中,装置可以仅传输压缩历史索引的部分到群集中的另一装置。在其他实施例中,装置可以仅传输对应于频繁使用或者最近使用的压缩历史的部分的压缩索引的项。
【0315】在接收到来自设备200c的压缩索引之后,设备200d可以将所接收到的压缩索引和设备200d维持的一个或者多个压缩索引合并在一起。在一些实施例中,设备200d可以标记从设备200c接收的索引项来指示该索引项对应于设备200c。
【0316】在装置的群集之间共享压缩历史索引可以用在设备的群集提供对服务器的加速的情况中,以及同样的设备不能总是提供对该集中的同样的服务器的加速的那些情况中。在这些方法中,图10A中的系统和图10B中所示的方法可以是图9A-9D所示系统和方法的变化。
【0317】设备200d可以随后接收来自服务器106的经由设备200b发往客户机102b的数据流。设备200d可以确定该数据流的一个或者多个部分和从设备200c接收的压缩索引的部分相匹配。识别所匹配的部分之后,设备200d可以发送对于与设备200c的匹配部分的请求。设备200c可以通过传输所请求部分以及识别还可以具有所请求的数据部分的设备200a的信息来做出响应。
【0318】接收到来自设备200c的匹配部分之后,设备200d可以确定该部分是否实际匹配数据流。这在压缩索引仅包含数据指纹的情况中是有必要的,并且因此所接收的部分和数据流的逐字节比较对于确认匹配是必要的。一旦确认匹配,设备200d可以发送匹配的指示给设备200b并且使用对于压缩历史的匹配部分的参考来代替数据流的一个或者多个部分。设备200b可以随后请求来自设备200a的数据的匹配部分。
【0319】设备200b已经类似地接收到来自设备200a的压缩历史的对应部分,可以随后解压缩该数据流并且传输该数据流到客户机102b。
【0320】现在参考图10B,示出用于在多个装置之间共享压缩索引来改进经由多个连接传输的数据的压缩的方法的流程图。总的来说,所述方法包括:通过第一装置接收来自第二装置的对于第二装置和第三装置之间共享的压缩历史的项的索引;每一个索引项包括保存在第二装置中的数据的位置标识符(步骤1001)。第一装置接收目的发往第四装置的数据流(步骤1003);并且识别一部分数据流和所接收的索引项匹配(步骤1005)。第一装置将对应于匹配项的位置标识符传输到第二装置(步骤1007)。第一装置接收来自第二装置的对应于位置标识符的压缩历史的一部分(步骤1009);并且确定该部分压缩历史匹配数据流的部分(步骤1011)。第一装置可以随后发送识别该部分压缩历史的信息到第四装置(步骤1013)。第一、第二第三和第四装置可以是客户机、服务器、客户机代理、服务器代理、设备、WAN优化装置和/或透明代理的任意一个。在一个实施例中,该方法可以反映通过图10A中的设备执行的步骤,其中第一装置是设备200d,第二装置是设备200c,第三装置是设备200a,第四装置是设备200b。
【0321】仍旧参考图10B,更详细地,该方法包括通过第一装置接收来自第二装置的对于第二装置和第三装置之间共享的压缩历史的项的索引;每一个索引项包括保存在第二装置中的数据的位置标识符(步骤1001)。所接收的索引可以包括对于第一压缩历史的任一类型的索引。在一个实施例中,该索引可以包括压缩索引410。所接收的索引可以包括对于第一压缩历史的索引的整体,或者所接收的索引可以只包括对于第一压缩历史的索引的一部分。在一些实施例中,该索引可以包括对于第一压缩历史的索引的指定选择的部分。在其他实施例中,该索引可以包括来多个压缩历史的项。在一些实施例中,第一装置在检测到第二装置和第一装置处于一个群集中之后可以接收项的索引。在其他实施例中,第一装置可以周期性地接收来自第二装置的多个索引项。第一装置还可以接收来自第二装置的任意其它的信息,包括合法位置标识符的范围和/或第二装置操作的盘的一个或者多个盘标识符。
【0322】在一些实施例中,所接收的索引项可以和第一装置上存在的压缩索引合并在一起。例如,所接收的索引可以已经使用第三装置所使用的同样的指纹方法建立,并且项编号可以对应于第三装置的压缩索引的项编号。在一个实施例中,第三装置可以标记或者以其他方式标注该项已经从第一装置接收到。在另一个实施例中,所接收的索引项中的位置标识符可以指向第一装置上已知的位置。
【0323】在一些实施例中,一组装置中的每个装置可以周期性地传输更新的压缩索引给该组中的其他装置。以此方式,可以建立装置的群集,其中所有全部地或者部分地共享同样的压缩索引。这可以允许任一单个装置影响任意其他装置的之前的数据传输来加速未来的通信。例如,一组装置可以提供对于中心站到多个分支机构的WAN优化服务。中心站中的每个装置可以周期性地将其压缩索引的一些或者全部传输到其他的中心站装置。以此方式,中心站的每个装置可以影响到分支机构的之前的传输来压缩分支机构的未来的传输,甚至之前的传输来自不同的中心站装置,和到不同的分支机构装置或者客户机。
【0324】第一装置可以随后接收目的发往第四装置的数据流(步骤1003)。第一装置可以接收来自任一源的数据流,包括客户机102、服务器106或者客户机代理120。在一个实施例中,数据流可以包括来自服务器106的对客户机请求的响应。例如,第一装置可以用作对于客户机和服务器之间的TCP连接的透明代理,并且数据流可以包括对于通过客户机对HTTP请求的响应。或者例如,数据流可以包括来自应用服务器对客户机代理的ICA流。
【0325】第一装置可以识别一部分数据流和所接收的索引项匹配(步骤1005)。在一些实施例中,第一装置可以在任一数据传输到第四装置之前识别数据流的一部分和所接收的索引的项相匹配。在其他实施例中,第三装置在一些数据已经传输到第四装置之后可以识别数据流的一部分和所接收的索引的项相匹配。第一装置可以使用任一技术识别该匹配,包括此处描述的指纹和索引技术的任意一个。在一个实施例中,第一装置可以识别数据流的一个或者多个片段具有对应于所接收的索引中的项的指纹。
【0326】在一些实施例中,第一装置可以识别第二数据流的一部分在预定阈值内和所接收的索引的一部分相匹配。预定阈值可以包括任一计数、百分比或者数据分布。在一个实施例中,预定阈值可以包括最小数量的字节。例如,第三装置可以识别第二数据流的至少64个字节和所接收的索引中的项相匹配。最小数量的字节可以是任意数量的字节,包括4、8、16、32、64、128、256、512、1024、2048和3072个字节。在一些实施例中,预定阈值可以要求最小数量的匹配字节是连续的。在其他实施例中,预定阈值可以要求最小数量的匹配字节被发现处于贯穿第二数据流的给定分布处。例如,预定阈值可以要求第二数据流中的至少三个不同位置处的至少50个匹配字节序列。或者预定阈值可以要求找到至少64字节的至少三个不同匹配序列。在一些实施例中,预定阈值可以要求压缩索引项具有对应于第一压缩历史的顺序部分的位置标识符。例如,预定阈值可以要求至少128字节的序列和识别第一压缩历史中的128字节的连续序列的索引项相匹配。在一些实施例中,第三装置可以使用诸如关于图5B和6B描述的技术来有效确定任意长度的序列匹配的存在。仍在其他实施例中,预定阈值可以要求特定百分比的第二数据流和所接收的索引项相匹配。例如,预定阈值可以要求第二数据流的第一数量个字节的85%和所接收的索引项相匹配。
【0327】预定阈值可以通过第一装置被自动设置或者人工配置。在一些实施例中,预定阈值可以被校准以相对于由于压缩历史数据的成功传送而导致的传输速度的可能增加,平衡接触第一装置以及随后传输压缩历史的部分的开销。例如,预定阈值响应于网络104b的较低性能可以被降低。或者网络104b的性能变得更快时,预定阈值可以提高。在另一个例子中,如果第一和第三装置之间连接的带宽大体上高于第三和第四装置之间的连接的带宽,则预定阈值可以被降低。
【0328】识别出匹配之后,第一装置将对应于匹配项的位置标识符传输到第二装置(步骤1009)。在一个实施例中,第一装置可以向第二装置传输一个或者多个块标识符。在另一个实施例中,第一装置可以向第二装置传输多个位置和/或块标识符。这些部分可以使用任意装置或者任意协议从第二装置传输给第一装置。在一些实施例中,第一装置可以随后通知第一装置其已经成功接收到压缩历史的所请求的一个或者多个部分。
【0329】在一个实施例中,第一装置可以向第二装置传输请求来发送第一压缩历史的所识别的部分到第一装置。该请求可以经由任意协议传输。在一些实施例中,第一装置可以传输对于从数据流中接收多个标识符的每一个的单独的请求。在另一个实施例中,第一装置可以在单个请求中包括多于一个的标识符。在一些实施例中,第一装置可以请求识别的部分之后的压缩历史的一个或者多个部分。例如,如果第一装置接收到包括匹配从第二装置接收索引项的数据部分的数据流,则第一装置可以将对于所识别块以及一个或者多个随后的块的请求传输给第二装置。这可以基于随后的匹配将出现和包括之后的块的可能性。或者例如,如果212字节的数据流匹配识别由第二装置保持的块的索引项,则第一装置可以将对于所识别字节以及来自该块的多个随后的字节的请求传输给第二装置。所请求的随后的字节的数量可以以任一方式被确定,包括但不限于基于多个之前的匹配或者之前匹配的长度。
【0330】第一装置从第二装置以任一方式接收对应于位置标识符的压缩历史的部分(步骤1011)。该部分可以经由任意协议接收。在一些实施例中,第一装置可以接收压缩历史的多个部分。在一些实施例中,第一装置接收压缩历史的整个块。例如,响应于对于514字节的块的请求,第一设备可以接收包含所请求字节的整个块。在其他实施例中,第一装置可以接收块的一部分。第一装置还可以接收具有压缩历史的所请求部分的任意附加信息,包括但不限于包含在对应于所请求部分的块首部或者压缩索引的任一信息。在一些实施例中,第一装置可以接收识别也具有该块的其它装置的信息。在这些实施例中,第一装置可以随后确定具有该块的其他装置的其中一个是否位于群集中或者对于第四装置为本地的。
【0331】第一装置可以随后确定该部分压缩历史匹配数据流的一部分(步骤1011)。该步骤可以在这样的实施例中使用:索引匹配不能保证压缩历史中的数据也将匹配。例如,如果使用非唯一指纹方法实现索引,则两个截然不同的片段将具有同样的指纹。与压缩历史中的所参考的数据部分的比较需要验证匹配的存在。在其他实施例中,该步骤可以忽略。
【0332】第一装置可以随后发送识别该部分压缩历史的信息到第四装置(步骤1013)。在一个实施例中,该步骤可以包括发送根据第一压缩历史的匹配部分压缩的数据流到第四装置。第一装置可以以任一方式根据第一压缩历史的匹配部分来执行这一压缩。在一个实施例中,第一装置可以使用识别第一压缩历史的匹配部分的位置标识符来代替数据流的部分。在此实施例中,第一装置还可以使用任意其它技术来压缩数据流,包括但不限于根据第一装置和第三装置之间共享的第二压缩历史来附加地压缩数据流。在一个实施例中,该步骤可以包括将一个或者多个块标识符传输到第四装置。在另一个实施例中,该步骤可以包括传输一个或者多个位置标识符到第四装置。在一个实施例中,第一装置还可以传输识别第三装置的信息。
【0333】在一个实施例中,第一装置还可以包括已识别的匹配部分之后的压缩历史的一个或者多个部分的位置标识符。第一装置可以包括基于之后的部分还匹配于第二数据流的之后的部分的推测的这些部分。在一些实施例中,可以通过所发现的匹配的数量或质量来确定第一装置所识别的之后的部分的数量。
【0334】第四装置接收到根据第一压缩历史压缩的数据流之后,第四装置可以以任一方式解压缩数据流。在一些实施例中,第四装置可以使用关于图9D的步骤921-931描述的任一技术来解压缩数据流。在一个实施例中,第四装置可以向第三装置传输对于第一压缩历史的所识别的部分的请求。这些部分可以随后使用任一方法和任一协议从第三装置传输到第二装置。在一些实施例中,第四装置可以随后发信号给第一装置其已经接收压缩历史的一个或者多个部分。在其他实施例中,第四装置可以向第一装置传输不能获取压缩历史的所识别部分的指示,其可以在第二装置不运行或者忙碌时发生。在这些情况中,第一装置可以随后重传输数据流到第三装置,而不需要根据第一压缩历史对其压缩。
I、用于ad-hoc高速缓存分层的系统和方法
【0335】现在参考图11A,示出用于提供高速缓存的ad-hoc分层来服务对象的一个实施例的框图。总的来说,设备200a拦截从客户机对服务器的对象的请求。设备200a在发现该对象不在本地高速缓存之后,将对该对象的请求传输给服务器。设备200a还可以传输多个复制请求给具有该对象的高速缓存副本的装置。这些装置可以包括客户机代理120、设备200b或者任意其他装置。设备200a可以随后从请求所发往的任一源处接收对象。设备200a可以随后从第一响应者发送该对象到客户机。
【0336】仍旧参考图11A,更详细地,设备200a、200b和客户机102a和102b位于网络104a上。在一些实施例中,设备200a、200b可以是WAN优化装置,并且网络104b可以包括WAN。在其他实施例中,任一设备可以包括代理服务器、代理高速缓存、SSL/VPN设备、防火墙和/或透明代理。在一些实施例中,设备可以用作多个客户机102a、102b和服务器106之间通信的透明代理。在一些实施例中,网络104a可以包括LAN。两个设备200a、200b可以位于具有一个或者多个客户机102a、102b的LAN上。在一个实施例中,设备200a、200b和客户机102a、102b可以位于一个或者多个分支机构中,服务器106可以位于中心站中。在另一个实施例中,可以在网络104c上存在一个或者多个设备拦截对于服务器106的业务量。尽管图11A描述了设备200a,但是关于图11A描述的系统和方法可以同样应用到在客户机102a上执行的客户机代理120来执行设备200a的功能。
【0337】在所示实施例中,设备200a、200b和客户机102b可以每一个包含之前通过设备传输的对象的高速缓存。高速缓存可以包括任意类型和形式的存储元件,包括但不限于存储器或盘上的存储元件。数据对象可以包括数据的任意离散序列。数据对象的例子包括但不限于文件、图像、可执行文件、web页面、音频文件和视频文件。在一个实施例中,数据对象可以和每个数据对象的名称的索引一起保存在设备上的高速缓存中。例如,设备可以维持通过设备经由CIFS传输的文件的一部分或者文件的高速缓存,并且可以保持文件名的索引,使得响应于接收到对于给定名称的对象的请求,设备可以从高速缓存找回该名称的对象。在另一个实施例中,数据对象可以和任意其他标识符一起保存,包括但不限于位置标识符、块标识符和指纹。
【0338】在一些实施例中,高速缓存可以和压缩历史合并在一起。例如,设备可以保持已经经由设备传输的命名对象的索引,其中该索引包含对包括命名对象的压缩历史的部分的指针。在一个实施例中,设备可以保持将对象名称和识别命名对象的位置的块标识符和偏移量匹配的索引。在其他实施例中,高速缓存可以与一个或者多个压缩历史分离地维持。
【0339】所示系统可以用来建立ad-hoc高速缓存分层。由于发送到已经高速缓存该对象的装置的请求可以被并行发送到服务器,如果任一装置不具有高速缓存的对象,所以该系统不会导致附加的等待时间惩罚。该系统可以被用在设备200a不确定对象是否存在于另一个装置的高速缓存中的情况中,或者不确定另一个装置是否可用的情况中。
【0340】现在参考图11B,示出用于提供高速缓存的ad-hoc分层来服务对象的方法的一个实施例的流程图。总的来说,所述方法包括通过设备接收来自客户机的对于来自服务器的对象的第一请求(步骤1101)。第一装置识别该对象不在该设备的第一高速缓存中(步骤1103)并且将对于该对象的第一请求转发到服务器(步骤1105)。设备在接收对所转发的请求的响应之前传输对于该对象的第二请求到第二装置(步骤1107)。设备接收来自服务器或者第二装置的至少一个的该对象(步骤1109);并且随后将对象传输到客户机(步骤1111)。在一些实施例中,第一设备可以是客户机、服务器、客户机代理、服务器代理、设备、WAN优化装置和/或透明代理的任意一个。在一个实施例中,该方法可以反映通过11A中的设备200a执行的步骤。
【0341】仍旧参考图11B,更详细地,所述方法包括通过设备接收从客户机到服务器的对于对象的第一请求(步骤1101)。在一些实施例中,第一设备可以拦截对于客户机、服务器、客户机代理、服务器代理或者中间设备中的一个或者多个透明的第一请求。第一请求可以包括经由任意协议传输的请求,并且可以以任一方式接收。对于对象的请求的例子包括但不限于对于文件的HTTP请求、对于文件的FTP请求、对于文件的一些或者全部的CIFS请求,对于文件的一些或者全部的NFS请求、和对于一个或者多个应用对象的ICA请求。在一个实施例中,设备可以在传输层拦截对于应用层对象的请求。在另一个实施例中,设备可以在网络层拦截对于应用层对象的请求。在一些实施例中,该请求可以经由设备对于其用作中间设备的TCP连接来传输。
【0342】在一些实施例中,接收请求的设备可以对于做出该请求的客户机为本地的。在其他实施例中,接收该请求的设备可以经由WAN连接到客户机。仍在另一个实施例中,接收该请求的设备可以经由该一个或者多个中间装置连接到客户机。在此实施例中,中间装置可以包括WAN优化装置、VPN装置和/或透明代理装置中的任意一个。
【0343】在拦截该请求之后,设备可以以任一方式识别该对象不在该设备的高速缓存中(步骤1103)。该识别可以通过任意方式做出,包括但不限于:基于对象名称执行高速缓存查询,指纹方法,并且确定对象的高速缓存副本已经过期或者以其他方式不可用。在一些实施例中,该步骤可以被省略。例如,该步骤在第一设备不维持高速缓存的时候可以被省略。
【0344】设备可以随后将该请求转发到服务器(步骤1105)。第一设备可以经由任意协议传输所转发的请求到服务器,包括除了用来接收第一请求的协议之外的协议。在一些实施例中,转发的请求可以包括第一请求。在其他实施例中,第一设备可以修改、重新格式化或者以其他方式改变第一请求。例如,第一设备可以加密第一请求的一些或者全部。在一些实施例中,设备可以将请求传输给用作服务器的代理的第二设备。在其他实施例中,所转发的请求可以在到达服务器106之前传递通过任意数量的中间装置。
【0345】在接收到第二请求之后,设备在接收到对所转发的请求的响应之前传输对于该对象的第二请求到第二装置(步骤1107)。第二装置可以包括客户机102、服务器106、设备200或者客户机代理120中的任意一个。在一些实施例中,第二装置可以包括浏览器高速缓存。在一些实施例中,设备可以通过搜索之前传输的对象的索引来确定该对象可以保存在第二装置中。在另一个实施例中,设备可以通过查阅压缩历史或者压缩历史索引来确定该对象可以保存在第二装置中。在一些实施例中,该设备可以确定对象是否已经在预定时间周期内传输到第二装置。
【0346】第二装置可以驻留在相对于该设备的任一位置。在一些实施例中,第二装置可以与该设备在LAN上。在一个实施例中,第二装置可以包括与该设备在一个群集中的第二设备。在另一个实施例中,第二装置可以经由比服务器到该设备更低的等待时间连接来连接到设备。
【0347】在一个实施例中,该设备可以在接收到来自服务器的对该请求的响应之前传输第二请求。在另一个实施例中,设备可以在接收到来自服务器的已经接收到请求的确认或者其它确定之前传输第二请求。仍在另一个实施例中,设备可以在接收到来自设备和服务器之间的中间装置对于该请求的任何响应之前传输第二请求。
【0348】设备可以在接收到对于所转发的请求的响应之前传输对于该对象的任意数量的附加请求。在一个实施例中,该设备可以向第三装置传输对于该对象的第三请求。在一个实施例中,该设备可以将对于该对象的请求传输给群集中的多个设备的每一个。在另一个实施例中,该设备可以发送对于该对象的请求到具有该设备的LAN上的多个客户机代理120。例如,分支机构处的设备在接收到对于该对象的请求时可以将该请求转发给处于中心站的服务器,并且还发送对于该对象的请求到也处于分支机构的任意其它设备,以及位于分支机构上的一个或者多个客户机。
【0349】在一些实施例中,设备可以将对于该对象的一部分的请求传输给第一装置,并且对于该对象的第二部分的请求传输给第二装置。在其他实施例中,设备可以将所请求的对象划分为任意数量的部分并且对于每一个部分发出一个或者多个请求。
【0350】接收附加请求的装置可以以任何方式服务它们。在一些实施例中,该装置可以以任一方式定位对象并且开始传输该对象到设备。在其他实施例中,该装置可忽略该请求。在其他实施例中,该装置可以确定该对象不保存在装置的上的高速缓存中。在这些实施例中,该装置可以或者不可以向第一装置传输该对象没有发现的指示。仍在其他实施例中,该装置可以将该请求转发到一个或者多个附加装置。
【0351】该设备可以随后接收来自服务器或者第二装置的至少一个的该对象(步骤1109)。该对象可以以任一方式并且经由任一连接或者协议来接收。在一些实施例中,该设备可以开始接收来自多个源的该对象。在这些实施例中,该设备可以选择一个源来用于接收该对象。在一些实施例中,该设备可以选择首先响应的源。在其他实施例中,该设备可以选择具有最高可用带宽的源。仍在其他实施例中,该设备可以基于与该设备的相似性来选择该源。在一些实施例中,该设备可以取消请求或者可以重置或者关闭与传输该对象的其它源的连接。
【0352】在一些实施例中,设备可以接收来自第一装置的该对象的第一部分,并且接收来自第二装置的该对象的第二部分。在这些实施例中,该设备可以以任意方式将从多个源接收的对象的一部分组装成该对象。
【0353】该设备可以随后以任一方式将该对象传输给客户机。在一些实施例中,该设备可以转发从服务器106接收的对象。在其他实施例中,该设备可以传输从一个或者多个其它装置接收的对象。
【0354】虽然本发明参考特定优选实施例具体描述和示出,但是本领域内的普通技术人员应该理解在不脱离由下面的权利要求书限定的本发明的精神和范围的情况下,可以在形式和细节上作出多种变化。

Claims (249)

1、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法,所述方法包括:
(a)通过第一装置将第一数据流传输到第二装置,所述第一数据流根据所述第一装置和所述第二装置之间共享的第一压缩历史而被压缩;
(b)通过第一装置接收计划发往第三装置的第二数据流;
(c)通过第一装置识别所述第二数据流的一部分与所述第一压缩历史的一部分相匹配;并且
(d)通过第一装置将识别所述第一压缩历史的该部分的信息传输到第二装置。
2、权利要求1的方法,其中,所述第一装置、第二装置、或者第三装置的至少一个包括透明代理。
3、权利要求1的方法,其中,所述第一装置包括客户机、服务器或者网络设备的其中一个。
4、权利要求1的方法,其中,步骤(c)包括通过第一装置识别所述第二数据流的一部分在预定阈值内与所述第一压缩历史的一部分相匹配。
5、权利要求1的方法,其中,步骤(c)包括通过第一装置使用逐字节比较来识别所述第二数据流的一部分与所述第一压缩历史的一部分相匹配。
6、权利要求1的方法,其中,步骤(c)包括通过第一装置使用逐字节比较来识别所述第二数据流的一部分与所述第一压缩历史的一部分的预定数量的字节相匹配。
7、权利要求1的方法,其中,步骤(c)包括通过第一装置使用数据指纹技术来识别所述第二数据流的一部分与所述第一压缩历史的一部分相匹配。
8、权利要求1的方法,其中,步骤(c)包括通过第一装置识别所述第三装置经由局域网连接到所述第二装置。
9、权利要求1的方法,其中,步骤(d)通过所述第一装置将所述第二数据流的一部分传输到所述第三装置,该第二数据流的所述部分是根据所述第一压缩历史的部分来压缩的。
10、权利要求1的方法,其中,步骤(d)包括通过所述第一装置将所述第二数据流的一部分传输到所述第三装置,所述第二数据流是根据所述第一压缩历史的至少一部分和第二压缩历史的至少一部分来压缩的,所述第二压缩历史在第一装置和第三装置之间共享。
11、权利要求1的方法,其中,步骤(d)包括通过第一装置将识别保存在第二装置上的压缩历史块的信息传输给第三装置。
12、权利要求1的方法,其中,步骤(d)包括通过第一装置将识别第一压缩历史的部分和识别第一压缩历史中的至少一个随后位置的信息传输给第三装置。
13、权利要求1的方法,还包括通过第三装置确定从第一装置接收的块标识符对应位于第二装置上的块。
14、权利要求1的方法,还包括通过第三装置确定从第一装置接收的块标识符在和第二装置相关联的值的范围内。
15、权利要求1的方法,还包括通过第三装置向第二装置传输识别第一压缩历史的部分的信息和用于开始传输第一压缩历史的所述部分到第三装置的请求。
16、权利要求15的方法,还包括通过第三装置接收第一压缩历史的所识别的部分。
17、权利要求15的方法,还包括通过第三装置使用第一压缩历史的所述部分解压缩第二数据流的一部分。
18、权利要求1的方法,还包括通过第三装置向第二装置传输识别第一压缩历史的部分的信息和用于开始传输第一压缩历史的所述部分以及第一压缩历史的至少一个随后部分到第三装置的请求。
19、权利要求1的方法,还包括通过第一装置从第三装置接收第三装置位于与第二装置相同网络上的指示。
20、权利要求19的方法,还包括通过第一装置响应于该指示向第三装置传输第二数据流,所述第二数据流是根据第一压缩历史的所述部分被压缩的。
21、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
第一装置上的分组处理器,其将第一数据流传输到第二装置,所述第一数据流根据所述第一装置和所述第二装置之间共享的第一压缩历史而被压缩;并且接收目的发往第三装置的第二数据流;和
压缩引擎,其识别所述第二数据流的一部分与所述第一压缩历史的一部分相匹配;并且将识别所述第一压缩历史的该部分的信息传输到第二装置。
22、权利要求21的系统,其中,所述第一装置、第二装置、或者第三装置的至少一个包括透明代理。
23、权利要求21的系统,其中,所述第一装置包括客户机、服务器或者网络设备的其中一个。
24、权利要求21的系统,其中,所述压缩引擎使用逐字节比较来识别所述第二数据流的一部分在预定阈值内与所述第一压缩历史的一部分相匹配。
25、权利要求21的系统,其中,所述压缩引擎使用逐字节比较来识别所述第二数据流的一部分与所述第一压缩历史的一部分的预定数量的字节相匹配。
26、权利要求21的系统,其中,所述压缩引擎使用数据指纹技术来识别所述第二数据流的一部分在预定阈值内与所述第一压缩历史的一部分相匹配。
27、权利要求21的系统,其中,所述压缩引擎识别所述第三装置经由局域网连接到所述第二装置。
28、权利要求21的系统,其中,所述压缩引擎将所述第二数据流传输到所述第三装置,所述第二数据流是根据所述第一压缩历史的所述部分来压缩的。
29、权利要求21的系统,其中,所述压缩引擎将所述第二数据流传输到所述第三装置,所述第二数据流是根据所述第一压缩历史的至少一部分和第二压缩历史的至少一部分来压缩的,所述第二压缩历史在第一装置和第三装置之间共享。
30、权利要求21的系统,其中,所述压缩引擎将识别保存在第二装置上的压缩历史块的信息传输给第三装置。
31、权利要求21的系统,其中,所述压缩引擎将识别第一压缩历史的所述部分和识别第一压缩历史中的至少一个随后位置的信息传输给第三装置。
32、权利要求21的系统,其中,第三装置确定从第一装置接收的块标识符对应位于第二装置上的块。
33、权利要求21的系统,其中,第三装置向第二装置传输识别第一压缩历史的所述部分的信息和用于开始传输第一压缩历史的所述部分到第三装置的请求。
34、权利要求21的系统,其中,第三装置接收第一压缩历史的所识别的部分。
35、权利要求21的系统,其中,第三装置使用第一压缩历史的所述部分解压缩第二数据流的一部分。
36、权利要求36的系统,其中,第三装置向第二装置传输识别第一压缩历史的所述部分的信息和用于开始传输第一压缩历史的所述部分以及第一压缩历史的至少一个随后部分到第三装置的请求。
37、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
通过第一装置用于将第一数据流传输到第二装置的装置,所述第一数据流根据所述第一装置和所述第二装置之间共享的第一压缩历史而被压缩;
通过第一装置用于接收目的发往第三装置的第二数据流的装置;
通过第一装置用于识别所述第二数据流的一部分与所述第一压缩历史的一部分相匹配的装置;和
通过第一装置用于将识别所述第一压缩历史的所述部分的信息传输到第二装置的装置。
38、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法,所述方法包括:
(a)在第一装置和第二装置之间传输第一数据流,该第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩;
(b)第一装置从第三装置接收识别第一压缩历史的一部分的信息;并且
(c)第一装置将第一压缩历史的所识别的部分传输到第三装置。
39、权利要求38的方法,其中步骤(a)包括从第一装置向第二装置传输第一数据流,该第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩。
40、权利要求38的方法,其中步骤(a)包括通过第一装置接收来自第二装置的第一数据流,该第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩。
41、权利要求38的方法,其中步骤(c)包括通过第一装置向第三装置传输该第一压缩历史的所识别的部分和该第一压缩历史的至少一个随后部分。
42、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
第一装置中的分组处理器,其向第二装置传输第一数据流,该第一数据流根据第一装置和第二装置之间共享的第一压缩历史而被压缩;并且从第二装置接收识别第三装置的信息和第一压缩历史的一部分;和
与分组处理器通信的压缩引擎,该压缩引擎通过第一装置将第一压缩历史的所识别的部分传输到第三装置。
43、权利要求42的系统,其中压缩引擎向第三装置传输第一压缩历史的所识别的部分和第一压缩历史的至少一个随后部分。
44、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法,所述方法包括:
(a)通过第一装置接收来自第二装置的数据流,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩;
(b)通过第一装置识别第三装置;
(c)通过第一装置将对于压缩历史的一部分的请求传输到第三装置;
(d)通过第一装置接收来自第三装置的压缩历史的所请求的部分;并且
(e)通过第一装置解压缩所述数据流。
45、权利要求44的方法,其中,所述数据流还根据第一和第二装置之间共享的压缩历史来压缩。
46、权利要求44的方法,其中,所述数据流包括识别位于第三装置的压缩历史中的块的多个位置标识符。
47、权利要求44的方法,其中步骤(b)包括基于包含在数据流中的块标识符来识别第三装置。
48、权利要求44的方法,还包括接收来自第三装置的识别驻留在第三装置上的多个块的信息。
49、权利要求44的方法,其中步骤(b)包括通过第一装置确定包含在数据流中的位置标识符处于和第三装置相关联的值的范围内。
50、权利要求44的方法,还包括通过第一装置向第二装置传输第三装置通过LAN与第一装置相连接的指示。
51、权利要求44的方法,还包括传输解压缩的数据流到客户机。
52、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
分组处理器,其通过第一装置接收来自第二装置的数据流,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩;和
和分组处理器通信的压缩引擎,其识别第三装置;将对于压缩历史的一部分的请求传输到第三装置;接收来自第三装置的压缩历史的所请求的部分;和解压缩所述数据流。
53、权利要求52的系统,其中,所述数据流还根据第一和第二装置之间共享的压缩历史来压缩。
54、权利要求52的系统,其中,所述数据流包括识别位于第三装置的压缩历史中的块的多个位置标识符。
55、权利要求52的系统,其中,压缩引擎基于包含在所述数据流中的块标识符来识别第三装置。
56、权利要求52的系统,其中,压缩引擎接收来自第三装置的识别驻留在该第三装置上的多个块的信息。
57、权利要求52的系统,其中,压缩引擎确定包含在所述数据流中的位置标识符处于和该第三装置相关联的值的范围内。
58、权利要求52的系统,其中,压缩引擎向第二装置传输第三装置通过LAN与第一装置相连接的指示。
59、权利要求52的系统,其中,分组处理器传输解压缩的数据流到客户机。
60、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
用于通过第一装置接收来自第二装置的数据流的装置,该数据流根据第一装置和第三装置之间共享的压缩历史而被压缩;
用于通过第一装置识别第三装置的装置;
用于通过第一装置将对于压缩历史的一部分的请求传输到第三装置的装置;
用于通过第一装置接收来自第三装置的压缩历史的所请求的部分的装置;和
用于通过第一装置解压缩所述数据流的装置。
61、一种用于提供高速缓存的ad-hoc分层来服务对象的方法,所述方法包括步骤:
(a)通过设备接收来自客户机的对服务器的对象的第一请求;
(b)通过所述设备识别该对象不在该设备的第一高速缓存中;
(c)通过所述设备将对该对象的所述第一请求转发到服务器;
(d)通过所述设备在接收对所转发的请求的响应之前传输对该对象的第二请求到第二装置;和
(e)通过所述设备接收来自服务器或者第二装置的至少一个的对象;并且
(f)通过所述设备将所述对象传输到客户机。
62、权利要求61的方法,其中,所述设备包括透明代理装置。
63、权利要求61的方法,其中,所述第二装置包括如下的其中一个:客户机、服务器或者网络设备。
64、权利要求61的方法,其中,所述第二装置包括客户机代理。
65、权利要求61的方法,其中,所述设备包括提供用于网络业务量的加速功能的透明代理装置。
66、权利要求61的方法,其中,步骤(a)包括通过用作对于客户机和服务器之间的传输层连接的透明代理的第一设备拦截经由传输层连接来自客户机的对对象的第一请求。
67、权利要求61的方法,其中,步骤(c)包括通过所述第一设备传输对该对象的请求到服务器,其中该第二请求由第二设备透明地拦截。
68、权利要求61的方法,其中,步骤(d)包括通过所述设备在接收到对所转发的请求的响应之前传输对该对象的多个请求到多个装置。
69、权利要求61的方法,其中,步骤(d)包括通过所述设备在接收到对所转发的请求的响应之前传输对该对象的第二请求到经由LAN连接到所述设备的第二装置。
70、权利要求61的方法,其中,步骤(d)包括通过所述设备在接收到对所转发的请求的响应之前传输对该对象的第二请求到第二装置,所述第二装置经由所述设备先前已经请求该对象。
71、权利要求61的方法,其中,步骤(f)包括通过所述设备向客户机传输来自服务器或者第二装置中首先进行响应的那一个的对象。
72、权利要求61的方法,其中,步骤(f)包括通过所述设备向客户机传输来自服务器或者多个装置中首先进行响应的那一个的对象。
73、一种用于提供高速缓存的ad-hoc分层来服务对象的设备的系统,所述设备包括:
分组处理器,其接收来自客户机的对服务器的对象的第一请求;将对该对象的第一请求转发到服务器;在接收到对所转发的请求的响应之前传输对该对象的第二请求到第二装置;接收来自服务器或者第二装置中的至少一个的对象;和将该对象传输到客户机;和
和分组处理器通信的高速缓存管理器,其识别该对象不在所述设备的第一高速缓存中。
74、权利要求73的系统,其中,所述设备包括透明代理装置。
75、权利要求73的系统,其中,所述第二装置包括如下的其中一个:客户机、服务器或者网络设备。
76、权利要求73的系统,其中,所述第二装置包括客户机代理。
77、权利要求73的系统,其中,所述设备包括提供用于网络业务量的加速功能的透明代理装置。
78、权利要求73的系统,其中,所述分组处理器用作对于客户机和服务器之间的传输层连接的透明代理并且拦截经由传输层连接来自客户机的对该对象的第一请求。
79、权利要求73的系统,其中,所述分组处理器传输对该对象的请求到服务器,其中该第二请求由第二设备透明拦截。
80、权利要求73的系统,其中,所述分组处理器在接收到对所转发的请求的响应之前传输对该对象的多个请求到多个装置。
81、权利要求73的系统,其中,所述分组处理器在接收到对于所转发的请求的响应之前传输对该对象的第二请求到经由LAN连接到所述设备的第二装置。
82、权利要求73的系统,其中,所述分组处理器在接收到对于所转发的请求的响应之前传输对该对象的第二请求到第二装置,所述第二装置经由所述设备先前已经请求该对象。
83、权利要求73的系统,其中,所述分组处理器向客户机传输来自服务器或者第二装置中首先进行响应的那一个的对象。
84、权利要求73的系统,其中,所述分组处理器向客户机传输来自服务器或者多个装置中首先进行响应的那一个的对象。
85、一种用于提供高速缓存的ad-hoc分层来服务对象的系统,所述系统包括:
用于通过设备接收来自客户机的对服务器的对象的第一请求的装置;
用于通过所述设备识别该对象不在所述设备的第一高速缓存中的装置;
用于通过所述设备将对该对象的第一请求转发到服务器的装置;
用于通过所述设备在接收对所转发的请求的响应之前传输对该对象的第二请求到第二装置的装置;和
用于通过所述设备接受来自服务器或者第二装置的至少一个的对象的装置;和
用于通过所述设备将所述对象传输到客户机的装置。
86、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的方法,所述方法包括:
(a)通过第一装置接收来自第二装置的对于在第二装置和第三装置之间共享的压缩历史的项的索引;每一个索引项包括保存在第二装置中的数据的位置标识符;
(b)通过第一装置接收目的发往第四装置的数据流;
(c)通过第一装置识别数据流的一部分和所接收的索引的项匹配;
(d)通过第一装置将对应于匹配项的位置标识符传输到第二装置;
(e)通过第一装置从第二装置接收对应于位置标识符的压缩历史的一部分;
(f)通过第一装置确定该部分压缩历史匹配所述数据流的一部分;并且
(g)通过第一装置传输识别该部分压缩历史的信息到第四装置。
87、权利要求86的方法,其中,第一装置、第二装置、第三装置或者第四装置的至少一个包括透明代理。
88、权利要求86的方法,其中,第一装置经由局域网连接到第二装置。
89、权利要求86的方法,其中,步骤(a)包括通过第二装置确定第一装置经由局域网连接到第二装置;并且通过第二装置响应于该确定来传输项的索引。
90、权利要求86的方法,其中,步骤(a)包括通过第一装置接收来自第二装置的对于压缩历史的项的索引,每一索引项包括压缩历史的块标识符。
91、权利要求86的方法,其中,步骤(a)包括通过第一装置在预定时间间隔接收来自第二装置的对于多个压缩历史的索引。
92、权利要求86的方法,其中,步骤(c)包括通过第一装置使用数据指纹技术来识别数据流的一部分匹配所传输的索引的项。
93、权利要求86的方法,其中,步骤(c)包括通过第一装置使用数据指纹技术来识别超过预定数量的字节的数据流的部分匹配所传输的索引的项。
94、权利要求86的方法,其中,步骤(d)包括通过第一装置向第二装置传输来自所匹配的项的位置标识符。
95、权利要求86的方法,其中,步骤(d)包括通过第一装置向第二装置传输对由所匹配的项识别的压缩历史的一部分的请求。
96、权利要求86的方法,其中,步骤(d)包括通过第一装置向第二装置传输对于由所匹配的项识别的压缩历史的一部分和该压缩历史的至少一个随后部分的请求。
97、权利要求86的方法,其中,步骤(g)包括通过第一装置向第四装置传输数据流的一部分,该数据流的所述部分是根据压缩历史的所述部分来压缩的。
98、权利要求86的方法,其中,步骤(g)包括通过第一装置向第四装置传输第二数据流的一部分,该第二数据流是根据压缩历史的至少一部分和第二压缩历史的至少一部分来压缩的,所述第二压缩历史在第一装置和第四装置之间共享。
99、权利要求86的方法,其中,步骤(g)包括通过第一装置向第四装置传输识别保存在第三装置上的压缩历史块的信息。
100、一种用于在多个装置之间启用压缩历史的共享来改进经由多个连接传输的数据的压缩的设备,所述设备包括:
压缩引擎,其接收来自第一装置的对于在第一装置和第二装置之间共享的压缩历史的项的索引;每一个索引项包括保存在第一装置中的数据的位置标识符;识别目的发往第三装置的所接收的数据流的一部分和所接收的索引的项匹配;和确定所述压缩历史的一部分与所述数据流的一部分匹配;和
与压缩引擎相通信的分组处理器,其将对应于匹配项的位置标识符传输到第一装置;接收来自第一装置的对应于位置标识符的压缩历史的部分;并且发送识别该部分压缩历史的信息到第三装置。
101、权利要求100的设备,其中,第一装置、第二装置或者第三装置的至少一个包括透明代理。
102、权利要求100的设备,其中,第一装置经由局域网连接到第三装置。
103、权利要求100的设备,其中,所述分组处理器接收来自第一装置的对于压缩历史的项的索引,每一索引项包括压缩历史块标识符。
104、权利要求100的设备,其中,所述分组处理器在预定时间间隔接收来自第一装置的对于多个压缩历史的索引。
105、权利要求100的设备,其中,所述压缩引擎使用数据指纹技术来识别数据流的一部分匹配传输的索引的项。
106、权利要求100的设备,其中,所述压缩引擎使用数据指纹技术来识别超过预定数量字节的数据流的部分匹配所传输的索引的项。
107、权利要求100的设备,其中,所述分组处理器向第一装置传输来自所匹配的项的位置标识符。
108、权利要求100的设备,其中,所述分组处理器向第一装置传输包含所匹配的项的压缩历史块的位置。
109、权利要求100的设备,其中,所述分组处理器向第一装置传输(i)对应于所匹配的项的位置标识符,和(ii)开始传输压缩历史的所识别的位置到第三装置的指示。
110、权利要求100的设备,其中,所述分组处理器向第一装置传输(i)对应于所匹配的项的位置标识符,和(ii)开始传输压缩历史的所识别的位置和压缩历史的至少一个随后位置到第三装置的指示。
111、权利要求100的设备,其中,所述分组处理器向第四装置传输第二数据流的一部分,该第二数据流的所述部分是根据压缩历史的所述部分来压缩的。
112、权利要求100的设备,其中,所述分组处理器向第四装置传输第二数据流的一部分,该第二数据流是根据压缩历史的至少一部分和第二压缩历史的至少一部分来压缩的,所述第二压缩历史在第一装置和第三装置之间共享。
113、权利要求100的设备,其中,所述分组处理器向第四装置传输识别保存在第二装置上的压缩历史块的信息。
114、权利要求100的设备,其中,所述分组处理器向第四装置传输识别压缩历史的所述部分并识别压缩历史中的至少一个随后部分的信息。
115、一种用于在多个装置之间共享压缩历史来改进经由多个连接传输的数据的压缩的系统,所述系统包括:
用于通过第三装置接收来自第一装置的对于在第一装置和第二装置之间共享的压缩历史的项的索引的装置;每一个索引项包括保存在第一装置中的数据的位置标识符;
用于通过第三装置接收目的发往第四装置的数据流的装置;
用于通过第三装置识别数据流的一部分和所接收的索引的项匹配的装置;
用于通过第三装置将对应于所匹配的项的位置标识符传输到第一装置的装置;
用于通过第三装置接收来自第一装置的对应于位置标识符的压缩历史的部分的装置;
用于通过第三装置确定该部分压缩历史匹配数据流的一部分的装置;和
用于通过第三装置发送识别该部分压缩历史的信息到第四装置的装置。
116、一种用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的方法,所述方法包括:
(a)通过第一装置接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部;
(b)通过第一装置从应用数据流中识别第一序列和第二序列;并且
(c)通过第一装置确定包括第一序列和第三序列的组合序列匹配压缩历史的一部分。
117、权利要求116的方法,其中,第一装置或者第二装置的其中一个是用于至少一个传输层连接的透明代理。
118、权利要求116的方法,其中,步骤(a)包括通过第一装置经由传输层连接接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二数据序列之间的至少一个应用层协议首部。
119、权利要求116的方法,其中,步骤(a)包括通过第一装置接收应用数据流,所述应用数据流包括在HTTP数据的第一序列和HTTP数据的第二序列之间的至少一个HTTP首部。
120、权利要求116的方法,其中,步骤(a)包括通过第一装置接收应用数据流,所述应用数据流包括在CIFS数据的第一序列和CIFS数据的第二序列之间的至少一个CIFS首部。
121、权利要求116的方法,其中,步骤(a)包括通过第一装置接收应用数据流,所述应用数据流包括NFS数据的第一序列和NFS数据的第二序列之间的至少一个NFS首部。
122、权利要求116的方法,其中,步骤(a)包括通过第一装置接收应用数据流,所述应用数据流包括SMTP数据的第一序列和SMTP数据的第二序列之间的至少一个SMTP首部。
123、权利要求116的方法,其中,步骤(a)包括通过第一装置接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部,其中所述第一序列和第二序列包括所传送文件的连续序列。
124、权利要求116的方法,其中,步骤(b)包括通过第一装置识别来自应用数据流的第一序列和第二序列包括所传送文件的连续序列。
125、权利要求116的方法,其中,步骤(b)包括通过第一装置在应用数据流中识别应用数据的多个序列,所述应用数据的多个序列通过至少一个应用层协议首部分隔开。
126、权利要求125的方法,其中,步骤(c)包括通过第一装置确定包括多个序列的组合序列匹配压缩历史的一部分。
127、权利要求116的方法,其中,步骤(c)包括通过第一装置使用数据指纹技术来确定包括第一序列和第二序列的组合数据序列匹配压缩历史的一部分。
128、权利要求116的方法,其中,步骤(c)包括通过第一装置确定包括第一序列和第二序列的组合数据序列匹配由第一装置和第二装置共享的压缩历史的一部分。
129、权利要求116的方法,还包括步骤:
(d)通过第一装置向第二装置传输识别压缩历史的所匹配部分的信息。
130、权利要求129的方法,其中,步骤(d)包括通过第一装置向第二装置传输识别包括匹配部分的压缩历史块的信息。
131、权利要求129的方法,其中,步骤(d)包括通过第一装置向第二装置传输识别压缩历史的匹配部分的信息和至少一个应用层协议首部。
132、权利要求129的方法,其中,步骤(d)包括通过第一装置向第二装置传输识别压缩历史的匹配部分的信息、至少一个应用层协议首部、以及识别在合并的数据序列中的至少一个应用层协议首部的位置的信息。
133、权利要求116的方法,其中,步骤(a)通过第一装置接收应用数据流,所述应用数据流包括对应于第一应用对象的应用数据的第一序列和应用数据的第二序列,并且所述应用数据流包括第一序列和第二序列之间的至少一个应用层协议首部。
134、权利要求116的方法,其中,步骤(a)通过第一装置接收应用数据流,所述应用数据流包括(i)对应于第一应用对象的应用数据的第一序列和应用数据的第二序列,(ii)第一序列和第二序列之间的至少一个应用层协议首部,和(iii)对应于第一序列和第二序列之间的第二应用对象的应用数据的第三序列。
135、权利要求116的方法,其中,步骤(a)包括通过第一装置接收ICA流,所述ICA流包括(i)对应于第一应用对象的应用数据的第一序列和应用数据的第二序列,(ii)第一序列和第二序列之间的至少一个ICA首部,和(iii)对应于第一序列和第二序列之间的第二应用对象的应用数据的第三序列。
136、一种用于通过将协议专用首部从所传送的数据中移除来改进压缩历史匹配的方法,所述方法包括:
(a)在第一装置和第二装置之间传输应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部;
(b)通过第一装置从应用数据流中识别第一序列和第二序列;并且
(c)通过第一装置将包括第一序列和第二序列的组合序列保存到压缩历史中。
137、权利要求136的方法,其中,步骤(a)包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括HTTP数据的第一序列和HTTP数据的第二序列之间的至少一个HTTP首部。
138、权利要求136的方法,其中,步骤(a)包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括CIFS数据的第一序列和CIFS数据的第二序列之间的至少一个CIFS首部。
139、权利要求136的方法,其中,步骤(a)包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括NFS数据的第一序列和NFS数据的第二序列之间的至少一个NFS首部。
140、权利要求136的方法,其中,步骤(a)包括在第一装置和第二装置之间传输应用数据流,所述应用数据流包括在应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部,其中所述第一序列和第二序列包括所传送文件的连续序列。
141、权利要求136的方法,其中,步骤(b)包括包括通过第一装置识别来自应用数据流的第一序列和第二序列包括所传送文件的连续序列。
142、权利要求136的方法,还包括步骤:
(d)通过第一装置接收第二应用数据流,所述应用数据流包括应用数据的第三序列和应用数据的第四序列之间的第二至少一个应用层协议首部;
(e)通过第一装置从第二应用数据流识别第三序列和第四序列;
(f)通过第一装置确定包含第三序列和第四序列的第二组合序列匹配压缩历史中的所保存的组合序列;和
(g)通过第一装置传输识别压缩历史的所匹配部分的信息到第二装置。
143、一种用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的系统,所述系统包括:
分组处理器,接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部;和
压缩引擎,从应用数据流识别第一序列和第二序列;并且确定包括第一序列和第三序列的组合序列匹配压缩历史的一部分。
144、权利要求143的系统,其中,第一装置或者第二装置的其中一个是用于至少一个传输层连接的透明代理。
145、权利要求143的系统,其中,所述分组处理器经由传输层连接接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部。
146、权利要求143的系统,其中,所述分组处理器接收应用数据流,所述应用数据流包括HTTP数据的第一序列和HTTP数据的第二序列之间的至少一个HTTP首部。
147、权利要求143的系统,其中,所述分组处理器接收应用数据流,所述应用数据流包括在CIFS数据的第一序列和CIFS数据的第二序列之间的至少一个CIFS首部。
148、权利要求143的系统,其中,所述分组处理器接收应用数据流,所述应用数据流包括在NFS数据的第一序列和NFS数据的第二序列之间的至少一个NFS首部。
149、权利要求143的系统,其中,所述分组处理器接收应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部,其中所述第一序列和第二序列包括所传送文件的连续序列。
150、权利要求143的系统,其中,所述压缩引擎识别来自应用数据流的第一序列和第二序列包括所传送文件的连续序列。
151、权利要求143的系统,其中,所述压缩引擎在应用数据流中识别应用数据的多个序列,所述应用数据的多个序列通过至少一个应用层协议首部分隔开。
152、权利要求151的系统,其中,所述压缩引擎确定包括多个序列的组合序列匹配压缩历史的一部分。
153、权利要求143的系统,其中,所述压缩引擎使用数据指纹技术来确定包括第一序列和第二序列的组合数据序列匹配压缩历史的一部分。
154、权利要求143的系统,其中,所述压缩引擎确定包括第一序列和第二序列的组合数据序列匹配第一装置和第二装置共享的压缩历史的部分。
155、权利要求143的系统,其中,所述压缩引擎向第二装置传输识别压缩历史的所匹配部分的信息。
156、权利要求143的系统,其中,所述压缩引擎向第二装置传输识别包括匹配部分的压缩历史块的信息。
157、权利要求143的系统,其中,所述压缩引擎向第二装置传输识别压缩历史的匹配部分的信息和至少一个应用层协议首部。
158、权利要求143的系统,其中,所述压缩引擎向第二装置传输识别压缩历史的匹配部分的信息、至少一个应用层协议首部,以及识别在合并的数据序列中的至少一个应用层协议首部的位置的信息。
159、权利要求143的系统,其中,所述分组处理器向第二装置传输应用数据流,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部,其中所述第一序列和第二序列包括所传送文件的连续序列。
160、一种用于通过将应用层协议首部从压缩历史数据移除来改进压缩历史匹配的系统,所述系统包括:
分组处理器,其传输应用数据流到第二装置,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部;和
压缩引擎,其从应用数据流中识别第一序列和第二序列;并且将包括第一序列和第三序列的组合序列保存到压缩历史中。
161、权利要求160的系统,其中,所述分组处理器传输应用数据流到第二装置,,所述应用数据流包括HTTP数据的第一序列和HTTP数据的第二序列之间的至少一个HTTP首部。
162、权利要求160的系统,其中,所述分组处理器传输应用数据流到第二装置,所述应用数据流包括CIFS数据的第一序列和CIFS数据的第二序列之间的至少一个CIFS首部。
163、权利要求160的系统,其中,所述分组处理器传输应用数据流到第二装置,所述应用数据流包括NFS数据的第一序列和NFS数据的第二序列之间的至少一个NFS首部。
164、权利要求160的系统,其中,所述分组处理器传输应用数据流到第二装置,所述应用数据流包括应用数据的第一序列和应用数据的第二序列之间的至少一个应用层协议首部,其中所述第一序列和第二序列包括所传送文件的连续序列。
165、权利要求160的系统,其中,所述压缩引擎识别来自应用数据流的第一序列和第二序列包括所传送文件的连续序列。
166、权利要求160的系统,其中:
所述分组处理器向第二装置传输第二应用数据流,所述应用数据流包括应用数据的第三序列和应用数据的第四序列之间的第二至少一个应用层协议首部;和
所述压缩引擎从第二应用数据流中识别第三序列和第四序列;确定包含第三序列和第四序列的第二组合序列匹配压缩历史中的所保存的组合序列;和传输识别压缩历史的所匹配部分的信息到第二装置。
167、一种用于同步在两个装置之间共享的压缩历史的方法,所述方法包括:
(a)通过第一装置保存第一压缩历史,该压缩历史包括之前传输到第二装置的数据的多个部分,每一个数据部分都具有位置标识符;
(b)通过第一装置建立按照时间排序的位置标识符的排序列表,该时间是第一装置最后访问对应于每一标识符的位置中的数据部分的时间;
(c)通过第一装置接收来自第二装置的识别在第二装置上对应的第二压缩历史的大量位置标识符的信息;
(d)通过第一装置确定所接收的数量比第一压缩历史的大量位置标识符的数量少第一数量;和
(e)从位置标识符的列表中选择废弃处于对应于最近最少访问过的数据部分的排序列表的结尾处的第一数量个位置标识符。
168、权利要求167的方法,还包括通过第一装置使第一压缩历史中对应于选择的标识符的数据部分无效。
169、权利要求167的方法,其中,所述装置包括透明代理。
170、权利要求167的方法,其中,所述装置包括执行广域网(WAN)加速功能的透明代理。
171、权利要求167的方法,其中,所述装置包括客户机、服务器或者网络设备的其中一个。
172、权利要求167的方法,其中,步骤(a)包括通过第一装置保存第一压缩历史,所述压缩历史包括之前传输到第二装置的多个数据部分,每一个数据部分都具有全局唯一的位置标识符。
173、权利要求167的方法,其中,步骤(b)包括通过第一装置响应于访问第一压缩历史中的数据的一部分将对应于该数据部分的位置标识符插入到标识符列表的首部。
174、权利要求167的方法,其中,步骤(b)包括通过第一装置响应于建立第一压缩历史中的数据的一部分将对应于该数据部分的位置标识符插入到标识符列表的首部。
175、权利要求167的方法,其中,步骤(c)包括通过第一装置响应于建立与第二装置的连接来从第二装置接收识别在第二装置上的对应的第二压缩历史的大量位置标识符的信息。
176、权利要求167的方法,还包括通过第一装置从第一压缩历史删除对应于选择的标识符的数据部分。
177、权利要求167的方法,还包括通过第一装置从位置标识符的列表中移除所选择的标识符。
178、权利要求167的方法,还包括通过第一装置使第一压缩历史对应于所选择的标识符的数据部分无效,并且其中至少其中一个无效的部分被保持为关于在第一装置上的第三压缩历史有效。
179、一种用于同步在第一装置和第二装置之间共享的压缩历史的系统,所述系统包括:
存储元件,其保存第一压缩历史,所述压缩历史包括含有之前传输到第二装置的数据的多个块,每个块都具有唯一的标识符;
和存储元件通信的压缩引擎,该压缩引擎保持一个块的列表,其中所述块根据最近访问的时间排序;从第二装置接收在第二计算装置上的对应的第二压缩历史中的块的数量的指示;确定所接收的数量比第一压缩历史的块数量小一个数量;并且通过第一装置使第一压缩历史中所述数量的块无效,其中所述选择的块包括最近最少使用的块。
180、权利要求179的系统,其中,所述压缩引擎使第一压缩历史中对应于所选择的标识符的数据部分无效。
181、权利要求179的系统,其中,所述装置包括透明代理。
182、权利要求179的系统,其中,所述装置包括执行广域网(WAN)加速功能的透明代理。
183、权利要求179的系统,其中,所述装置包括客户机、服务器或者网络设备的其中一个。
184、权利要求179的系统,其中,所述存储元件保存第一压缩历史,所述压缩历史包括之前传输到第二装置的多个数据部分,每一个数据部分都具有全局唯一的位置标识符。
185、权利要求179的系统,其中,所述存储元件保存第一压缩历史,所述压缩历史包括含有之前传输到第二装置的数据的多个块,每个数据块都具有全局唯一的位置标识符。
186、权利要求179的系统,其中,所述压缩引擎响应于访问第一压缩历史中的数据部分,将对应于该数据部分的位置标识符插入到标识符列表的首部。
187、权利要求179的系统,其中,所述压缩引擎响应于建立第一压缩历史中的数据部分,将对应于该数据部分的位置标识符插入到标识符列表的首部。
188、权利要求179的系统,其中,所述压缩引擎响应于建立与第二装置的连接来从第二装置接收识别在第二装置上对应的第二压缩历史的大量位置标识符的信息。
189、权利要求179的系统,其中,所述压缩引擎从第一压缩历史中删除对应于所选择的标识符的数据部分。
190、权利要求179的系统,其中,所述压缩引擎从位置标识符的列表中移除所选择的标识符。
191、权利要求179的系统,其中,所述压缩引擎使第一压缩历史中对应于所选择的标识符的数据部分无效,并且关于第一装置上的第三压缩历史至少其中一个无效的部分被维持为有效。
192、一种用于通过在存储器中保持的索引中识别输入数据与所保存的邻接数据的估计的匹配程度高于或者低于预定阈值来确定是否执行压缩的方法,所述方法包括步骤:
(a)通过在存储装置中具有压缩历史的装置在存储器中建立索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有数据的多个部分的存储装置中的位置的位置标识符;
(b)通过该装置识别输入数据的多个指纹匹配存储器中的索引的多个索引的指纹;和
(c)通过该装置从具有对应于第一位置标识符的索引的存储器中的所识别的指纹的数量来确定输入数据与存储装置中的邻接数据的估计匹配可延伸到低于预定阈值。
193、权利要求192的方法,还包括通过该装置响应于该确定来传输未压缩的数据。
194、权利要求192的方法,还包括通过该装置响应于该确定来传输经由使用压缩历史之外的方法压缩的数据。
195、权利要求192的方法,其中,压缩历史保存在盘上。
196、权利要求192的方法,其中,压缩历史保存在闪速存储器中。
197、权利要求192的方法,其中,步骤(c)包括通过装置确定输入数据与存储装置中的邻接数据的估计匹配可延伸到预定阈值。
198、权利要求192的方法,其中,执行步骤(b)或者步骤(c)的其中一个而不访问存储装置。
199、权利要求192的方法,其中,步骤(c)包括通过装置确定对应于每一个所识别的指纹的存储装置中的数据之间的间距对应于匹配所述识别的指纹的输入数据的部分之间的间距。
200、权利要求192的方法,其中,第一位置标识符包括对逻辑存储单元的唯一标识符。
201、权利要求192的方法,其中,第一位置标识符包括相对于逻辑存储单元中的起始位置的偏移量。
202、权利要求192的方法,包括通过装置拦截来自经由连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
203、权利要求192的方法,包括通过装置基于装置的操作条件来调整预定的阈值。
204、权利要求192的方法,包括通过装置基于装置并行处理的多个连接来调整预定的阈值。
205、权利要求204的方法,包括通过装置基于连接数量的增加来减小预定的阈值。
206、权利要求204的方法,包括通过装置基于连接数量的减少来提高预定的阈值。
207、权利要求192的方法,包括通过装置基于装置连接的网络的速度或者类型的其中一个来调整预定的阈值。
208、权利要求192的方法,其中,所述装置包括用作客户机和服务器之间代理的客户机、服务器或者设备的其中一个。
209、在包括设备的网络环境中,该设备拦截并转发在请求对象的客户机和响应客户机请求的服务器之间的通信,所述设备通过在存储器中保持的索引中识别输入数据与所保存的邻接数据的估计的匹配程度高于或者低于预定阈值来确定是否执行压缩,所述设备包括:
存储装置中的压缩历史;
存储器中的索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储装置上的位置的位置标识符;和
压缩引擎,其识别输入数据的多个指纹匹配存储器中的索引的多个索引的指纹;该压缩引擎从具有对应于第一位置标识符的索引的存储器中的所识别的指纹数量来确定输入数据与存储装置中的邻接数据的估计匹配可延伸到低于预定阈值。
210、权利要求209的设备,其中,所述设备响应于该确定传输未压缩的数据。
211、权利要求209的设备,其中,所述设备传输通过使用压缩历史之外的方法压缩的数据。
212、权利要求209的设备,其中,所述存储装置包括盘。
213、权利要求209的设备,其中,所述压缩引擎确定输入数据与存储装置中的邻接数据的估计匹配可延伸到预定阈值。
214、权利要求209的设备,其中,所述设备响应于该确定传输压缩的数据,所述设备使用经由第一位置标识符识别的压缩历史的数据来压缩数据。
215、权利要求209的设备,其中,所述压缩引擎响应于该确定来执行输入数据对经由第一位置标识符识别的压缩历史的数据的匹配。
216、权利要求209的设备,其中,所述压缩引擎不访问存储装置以做出识别或者确定的其中一个。
217、权利要求209的设备,其中,所述压缩引擎确定对应于每一个所识别的指纹的存储装置中的数据之间的间距对应于匹配所述识别的指纹的输入数据的部分之间的间距。
218、权利要求209的设备,其中,第一位置标识符包括对逻辑存储单元的唯一标识符。
219、权利要求209的设备,其中,第一位置标识符包括相对于逻辑存储单元中的起始位置的偏移量。
220、权利要求209的设备,其中,所述设备拦截来自经由客户机和服务器之间的连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
221、权利要求209的设备,其中,所述压缩引擎基于装置的操作条件来调整预定的阈值。
222、权利要求209的设备,其中,所述压缩引擎基于装置并行处理的多个连接来调整预定的阈值。
223、权利要求222的设备,其中,所述压缩引擎基于连接数量的增加来减小预定的阈值。
224、权利要求222的设备,其中,所述压缩引擎基于连接数量的减少来提高预定的阈值。
225、权利要求209的设备,其中,所述压缩引擎基于装置连接的网络的速度或者类型的其中一个来调整预定的阈值。
226、权利要求209的设备,其中,所述设备用作客户机和服务器之间的代理。
227、一种用于确定将输入数据的指纹与识别压缩历史中的多个数据实例的指纹索引匹配的优先级的方法,所述方法包括步骤:
(a)通过具有压缩历史的装置建立一个索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储元件上的位置的位置标识符;
(b)通过该装置识别输入数据的多个指纹匹配具有至少一个位置标识符的索引中的多个项;
(c)通过该装置选择具有最少数量的位置标识符的多个项中的一个项;并且
(d)通过该装置将输入数据的第一部分和由所选择的项识别的压缩历史中的第一位置中的数据相匹配。
228、权利要求227的方法,其中,所述存储元件包括盘。
229、权利要求227的方法,还包括通过装置执行输入数据的第一部分和由选择的项中的第二位置标识符识别的压缩历史中的第二位置的数据相匹配。
330、权利要求227的方法,其中,步骤(c)包括通过装置选择具有单个位置标识符的多个项中的一个项。
231、权利要求227的方法,还包括通过装置执行输入数据对第一位置的数据之后的数据的延伸的匹配。
232、权利要求227的方法,其中,步骤(d)还包括通过装置匹配输入数据的第二部分和与第一位置的数据的第一部分相邻的数据。
333、权利要求227的方法,包括通过装置在索引中经由第一位置标识符识别到逻辑存储单元的第一位置。
234、权利要求227的方法,其中,所述位置标识符包括相对于逻辑存储单元的起始位置的偏移量。
235、权利要求227的方法,包括通过装置拦截来自经由连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
236、权利要求227的方法,包括通过装置拦截来自经由传输层连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
237、权利要求227的方法,其中,所述装置包括客户机、服务器或者用作客户机和服务器之间代理的设备中的其中一个。
238、在包括设备的网络环境中,该设备拦截并转发请求对象的客户机和响应客户机请求的服务器之间的通信,所述设备确定将输入数据的指纹与识别压缩历史中的多个数据实例的指纹索引匹配的优先级,所述设备包括:
索引,该索引将压缩历史的多个数据部分的指纹对应于识别具有多个数据部分的存储元件上的位置的位置标识符;和
压缩引擎,通过装置识别输入数据的多个指纹匹配具有至少一个位置标识符的索引中的多个项;通过该装置选择具有最少数量的位置标识符的多个项中的一个项;并且通过该装置将输入数据的第一部分和由所选择的项识别的压缩历史中的第一位置中的数据相匹配。
239、权利要求238的设备,其中,所述存储元件包括盘。
240、权利要求238的设备,其中,所述压缩引擎将输入数据的第一部分和选择的项中的第二位置标识符所识别的压缩历史中的第二位置的数据相匹配。
241、权利要求238的设备,其中,所述压缩引擎选择具有单个位置标识符的多个项中的一个项。
242、权利要求238的设备,其中,所述压缩引擎执行输入数据对第一位置的数据之后的数据的延伸的匹配。
243、权利要求238的设备,其中,所述压缩引擎匹配输入数据的第二部分和与第一位置的数据的第一部分相邻的数据。
244、权利要求238的设备,其中,所述压缩引擎经由第一位置标识符识别到逻辑存储单元的第一位置。
245、权利要求238的设备,其中,所述位置标识符包括相对于逻辑存储单元中的起始位置的偏移量。
246、权利要求238的设备,其中,所述设备拦截来自经由连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
247、权利要求238的设备,其中,所述设备拦截来自经由传输层连接传输的网络业务量的数据,并且使用所拦截的数据作为输入数据。
248、权利要求238的设备,包括保存在盘上的压缩历史和保存在存储器中的索引。
249、权利要求238的设备,其中,所述设备用作客户机和服务器之间的代理。
CN200880015783.3A 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法 Expired - Fee Related CN101690079B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310447262.8A CN103516725B (zh) 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US11/685,157 US7619545B2 (en) 2007-03-12 2007-03-12 Systems and methods of using application and protocol specific parsing for compression
US11/685,172 2007-03-12
US11/685,161 US7532134B2 (en) 2007-03-12 2007-03-12 Systems and methods for sharing compression histories between multiple devices
US11/685,172 US8255570B2 (en) 2007-03-12 2007-03-12 Systems and methods of compression history expiration and synchronization
US11/685,157 2007-03-12
US11/685,165 2007-03-12
US11/685,153 US7865585B2 (en) 2007-03-12 2007-03-12 Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US11/685,165 US7460038B2 (en) 2007-03-12 2007-03-12 Systems and methods of clustered sharing of compression histories
US11/685,153 2007-03-12
US11/685,159 2007-03-12
US11/685,159 US7827237B2 (en) 2007-03-12 2007-03-12 Systems and methods for identifying long matches of data in a compression history
US11/685,161 2007-03-12
US11/685,170 2007-03-12
US11/685,170 US7453379B2 (en) 2007-03-12 2007-03-12 Systems and methods for identifying long matches of data in a compression history
PCT/US2008/056681 WO2008112777A2 (en) 2007-03-12 2008-03-12 Systems and methods for using compression histories to improve network performance

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310447262.8A Division CN103516725B (zh) 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法

Publications (2)

Publication Number Publication Date
CN101690079A true CN101690079A (zh) 2010-03-31
CN101690079B CN101690079B (zh) 2013-11-06

Family

ID=39760372

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200880015783.3A Expired - Fee Related CN101690079B (zh) 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法
CN201310447262.8A Expired - Fee Related CN103516725B (zh) 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201310447262.8A Expired - Fee Related CN103516725B (zh) 2007-03-12 2008-03-12 用于使用压缩历史来改进网络性能的系统和方法

Country Status (8)

Country Link
EP (7) EP2672670B1 (zh)
CN (2) CN101690079B (zh)
AU (1) AU2008225158B2 (zh)
BR (1) BRPI0809005A2 (zh)
CA (1) CA2680169A1 (zh)
HK (6) HK1141906A1 (zh)
IL (1) IL200813A0 (zh)
WO (1) WO2008112777A2 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523305A (zh) * 2011-12-31 2012-06-27 深信服网络科技(深圳)有限公司 缓存信息推送装置、构件、方法、系统及局域网
CN103299581A (zh) * 2011-01-12 2013-09-11 适应性频谱和信号校正股份有限公司 用于联合优化wan和lan网络通信的系统及方法
CN104219102A (zh) * 2013-05-29 2014-12-17 华为技术有限公司 一种网络数据压缩统计的方法、装置和系统
CN105007572A (zh) * 2015-06-29 2015-10-28 江苏鸿信系统集成有限公司 天翼终端售后管理的信息防冲突的方法
CN105045783A (zh) * 2013-12-07 2015-11-11 庄颢 含冗余的数据压缩与解压缩的系统和方法
CN106027296A (zh) * 2016-05-16 2016-10-12 国网江苏省电力公司信息通信分公司 一种对电力系统中信息系统模型的分解方法及装置
CN109792410A (zh) * 2016-09-12 2019-05-21 思杰系统有限公司 压缩流量的服务质量优先级重新排序的系统和方法
CN112399479A (zh) * 2020-11-03 2021-02-23 广州机智云物联网科技有限公司 用于数据传输的方法、电子设备和存储介质
CN113282587A (zh) * 2021-06-01 2021-08-20 青岛海尔科技有限公司 状态数据的传输方法及装置、存储介质、电子装置

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9544252B2 (en) 2011-10-14 2017-01-10 Google Inc. Compressing and decompressing electronic messages in message threads
EP2784976A4 (en) * 2012-10-26 2015-03-11 Huawei Tech Co Ltd VDI FILE TRANSMISSION PROCESS AND DEVICE
US9860209B2 (en) * 2015-05-12 2018-01-02 Cisco Technology, Inc. Stateful connection processing in a security device cluster
CN105406915B (zh) * 2015-10-16 2018-10-26 中国人民解放军国防科学技术大学 一种面向星地链路的文件传输方法
US10747726B2 (en) 2016-03-08 2020-08-18 International Business Machines Corporation Deduplication ratio estimation using an expandable basis set
US10395145B2 (en) 2016-03-08 2019-08-27 International Business Machines Corporation Deduplication ratio estimation using representative images
CN106060134A (zh) * 2016-05-30 2016-10-26 乐视控股(北京)有限公司 数据传输方法及系统
CN106101189A (zh) * 2016-05-30 2016-11-09 乐视控股(北京)有限公司 数据传输方法及系统
CN107071813A (zh) * 2017-04-21 2017-08-18 桂林电子科技大学 基于BeagleBone‑Black的Ad‑Hoc路由协议验证系统
GB2563894A (en) 2017-06-29 2019-01-02 Airbus Operations Ltd Data centric messaging
US20190141567A1 (en) * 2017-11-06 2019-05-09 Mediatek Inc. Uplink Data Compression Transaction Flow
CN108667646A (zh) * 2018-03-22 2018-10-16 北京奇艺世纪科技有限公司 网络访问方法及装置
US20200145342A1 (en) * 2018-11-05 2020-05-07 Danfoss Power Solutions, Inc. Method and system for optimizing data flow between devices
JP7418114B2 (ja) * 2019-11-27 2024-01-19 キヤノン株式会社 通信装置、その制御方法、およびそのプログラム
CN111511045B (zh) * 2020-04-10 2023-06-02 玳能科技(杭州)有限公司 移动终端与电脑的交互方法、装置、电子设备及存储介质
EP4066474A4 (en) * 2021-02-11 2023-08-23 Tayf Ileri Teknoloji Hizmetleri Anonim Sirketi NETWORK MANAGEMENT SYSTEM TO ACCELERATE TCP TRAFFIC TO A TRANSPORT LAYER LEVEL
CN114900557A (zh) * 2022-03-30 2022-08-12 中国科学院上海微系统与信息技术研究所 一种面向物联网网关的异构设备数据的处理装置和方法
CN114785719A (zh) * 2022-04-13 2022-07-22 北京亚鸿世纪科技发展有限公司 通过ping命令形成地域指纹的IP地域归属方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2065578C (en) * 1991-04-22 1999-02-23 David W. Carr Packet-based data compression method
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
FI962381A (fi) * 1996-06-07 1997-12-08 Nokia Telecommunications Oy Datan pakkaaminen tietoliikenneyhteydellä
WO1999067886A1 (en) * 1998-06-23 1999-12-29 Infit Communications Ltd. Data compression for a multi-flow data stream
US7538694B2 (en) * 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6856651B2 (en) * 2000-07-25 2005-02-15 Peribit Networks, Inc. System and method for incremental and continuous data compression
DE60130367T2 (de) * 2000-10-11 2008-06-12 Broadcom Corp., Irvine Verfahren zum dynamischen mischen von Paketkopfunterdrückungstechniken
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US20020138654A1 (en) * 2001-03-21 2002-09-26 Zhigang Liu Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages
US7133905B2 (en) * 2002-04-09 2006-11-07 Akamai Technologies, Inc. Method and system for tiered distribution in a content delivery network
JP4269870B2 (ja) * 2003-10-02 2009-05-27 ソニー株式会社 記録再生装置及び記録方法
US7348904B2 (en) * 2004-02-19 2008-03-25 Telefonaktiebolaget Lm Ericsson (Publ) Selective updating of compression dictionary
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7417943B2 (en) * 2004-08-11 2008-08-26 Sonim Technologies, Inc. Dynamic compression training method and apparatus
CN100484225C (zh) * 2004-10-26 2009-04-29 索尼株式会社 数据处理设备、再现设备、数据处理系统及再现方法
CA2590345A1 (en) * 2004-12-08 2006-06-15 B-Obvious Ltd. Bidirectional data transfer optimization and content control for networks
US7098815B1 (en) 2005-03-25 2006-08-29 Orbital Data Corporation Method and apparatus for efficient compression
GB0513433D0 (en) * 2005-06-30 2005-08-10 Nokia Corp Signal message compressor

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9369370B2 (en) 2011-01-12 2016-06-14 Adaptive Spectrum And Signal Alignment, Inc. Systems and methods for jointly optimizing WAN and LAN network communications
CN103299581A (zh) * 2011-01-12 2013-09-11 适应性频谱和信号校正股份有限公司 用于联合优化wan和lan网络通信的系统及方法
US10757003B2 (en) 2011-01-12 2020-08-25 Assia Spe, Llc Systems and methods for jointly optimizing WAN and LAN network communications
US10333819B2 (en) 2011-01-12 2019-06-25 Assia Spe, Llc Systems and methods for jointly optimizing WAN and LAN network communications
CN102523305B (zh) * 2011-12-31 2014-10-15 深信服网络科技(深圳)有限公司 缓存信息推送装置、构件、方法、系统及局域网
CN102523305A (zh) * 2011-12-31 2012-06-27 深信服网络科技(深圳)有限公司 缓存信息推送装置、构件、方法、系统及局域网
CN104219102B (zh) * 2013-05-29 2018-10-30 华为技术有限公司 一种网络数据压缩统计的方法、装置和系统
CN104219102A (zh) * 2013-05-29 2014-12-17 华为技术有限公司 一种网络数据压缩统计的方法、装置和系统
CN105045783A (zh) * 2013-12-07 2015-11-11 庄颢 含冗余的数据压缩与解压缩的系统和方法
CN105007572A (zh) * 2015-06-29 2015-10-28 江苏鸿信系统集成有限公司 天翼终端售后管理的信息防冲突的方法
CN106027296A (zh) * 2016-05-16 2016-10-12 国网江苏省电力公司信息通信分公司 一种对电力系统中信息系统模型的分解方法及装置
CN106027296B (zh) * 2016-05-16 2019-06-04 国网江苏省电力公司信息通信分公司 一种对电力系统中信息系统模型的分解方法及装置
CN109792410A (zh) * 2016-09-12 2019-05-21 思杰系统有限公司 压缩流量的服务质量优先级重新排序的系统和方法
CN109792410B (zh) * 2016-09-12 2022-08-16 思杰系统有限公司 压缩流量的服务质量优先级重新排序的系统和方法
CN112399479A (zh) * 2020-11-03 2021-02-23 广州机智云物联网科技有限公司 用于数据传输的方法、电子设备和存储介质
CN112399479B (zh) * 2020-11-03 2023-04-07 广州机智云物联网科技有限公司 用于数据传输的方法、电子设备和存储介质
CN113282587A (zh) * 2021-06-01 2021-08-20 青岛海尔科技有限公司 状态数据的传输方法及装置、存储介质、电子装置

Also Published As

Publication number Publication date
AU2008225158B2 (en) 2012-03-29
EP2672670B1 (en) 2015-11-25
EP2672670A1 (en) 2013-12-11
HK1190526A1 (zh) 2014-07-04
EP2651091A3 (en) 2014-01-29
EP2651089A3 (en) 2014-01-22
EP2651091B1 (en) 2015-04-29
IL200813A0 (en) 2010-05-17
EP2677714A1 (en) 2013-12-25
CA2680169A1 (en) 2008-09-18
CN103516725A (zh) 2014-01-15
EP2651089A2 (en) 2013-10-16
HK1192384A1 (zh) 2014-08-15
EP2651090A3 (en) 2014-01-22
HK1192382A1 (zh) 2014-08-15
EP2651092A2 (en) 2013-10-16
WO2008112777A2 (en) 2008-09-18
CN103516725B (zh) 2017-01-11
EP2651089B1 (en) 2016-12-21
HK1141906A1 (en) 2010-11-19
EP2651092A3 (en) 2014-01-22
EP2651091A2 (en) 2013-10-16
EP2156642B1 (en) 2013-05-22
BRPI0809005A2 (pt) 2014-09-16
EP2156642A2 (en) 2010-02-24
HK1190528A1 (zh) 2014-07-04
AU2008225158A1 (en) 2008-09-18
EP2677714B1 (en) 2015-04-22
CN101690079B (zh) 2013-11-06
EP2651090B1 (en) 2015-01-14
WO2008112777A3 (en) 2009-12-30
EP2651090A2 (en) 2013-10-16
EP2651092B1 (en) 2015-08-12
HK1190527A1 (zh) 2014-07-04

Similar Documents

Publication Publication Date Title
CN101690079B (zh) 用于使用压缩历史来改进网络性能的系统和方法
CN102405631B (zh) 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
CN101682565B (zh) 用于通过代理进行动态带宽控制的系统和方法
CN101711468B (zh) 用于在tcp拥塞控制中提供服务质量优先的系统和方法
CN102948131B (zh) 用于经由wan设备分离代理ssl的系统和方法
CN101682621A (zh) 用于高速缓存操作的系统和方法
CN103518358B (zh) 为单个流ICA提供QoS的系统和方法
US7916047B2 (en) Systems and methods of clustered sharing of compression histories
US8244852B2 (en) Systems and methods for identifying long matches of data in a compression history
CN101682566A (zh) 用于提供基于代理的服务质量的系统和方法
US8352605B2 (en) Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US8063799B2 (en) Systems and methods for sharing compression histories between multiple devices
US7872597B2 (en) Systems and methods of using application and protocol specific parsing for compression
CN103384991A (zh) 用于加密网络流量的服务质量的系统和方法
KR20040044182A (ko) 통신네트워크의 유효 대역폭 증가 시스템 및 방법
CN103229460A (zh) 用于经由流控制隧道提供服务质量的系统和方法
AU2012203797A1 (en) Systems and methods for using compression histories to improve network performance

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131106

CF01 Termination of patent right due to non-payment of annual fee