用于通过代理进行动态带宽控制的系统和方法

文档序号:7938025阅读:449来源:国知局
专利名称:用于通过代理进行动态带宽控制的系统和方法
技术领域
0002本发明总的涉及数据通信网络。更具体地,本发明涉及用 于通过一个或者多个连接的代理来动态控制带宽的系统和方法。
背景技术
0003不同类型的网络业务量对于网络性能具有不同的敏感性。 关于等待时间,大的文件传输通过在连接的等待时间中的适度增加而可 以相对不受影响。相反,通过在导致较慢的应用响应时间的等待时间中 改变,诸如VoIP、远程进程调用、媒体流、应用流和远程应用执行的交 互式业务量受到显著影响。
0004现有的服务质量(QoS)系统尝试将交互式业务量列入优先 地位来降低等待时间,但是面临许多困难。第一、QoS的带宽分配方法可 以确保一定数量的交互式业务量具有该带宽来通过网络,但是带宽分配 不能保证等待时间。第二,交互式业务量难以识别。许多端口和应用运 载混合交互式、流式和整体(bulk)的业务量。因此,基于端口或者基 础应用的简单的优先排序分组不能正确地识别等待时间敏感的业务量。 这就需要一种方法来基于业务量的等待时间敏感度来识别和优先排序网络业务量。
0005关于交互式或者流式业务量的等待时间的附加的潜在原因 是丢失的分组。丢失的分組对于包含诸如交互式或者流式业务量的业务 量产生附加的成本,其在传输的分组之间可以包括显著大的间隙。当这 些间隙发生时,由于不存在随后的分组来通知接收器最后一个分组的存
在,则接收器不能识别间隙之前紧邻的分组是否丢失。诸如TCP的许多 协议可以使用重传输超时(RT0)来发现和改正诸如一个群的最后一个分 组已经丟失的情况。然而,RTO仅可以提供对分組丟失导致的延迟的粗略 控制。在一些协议中,RTO将是开销非常大,诸如TCP,其中RT0默认为 整一秒。因此需要一种方法来避免这些重传输超时以改进连接性能。
0006进一步,在包括例如TCP的一些协议中,使用重传输作为 提供可靠数据流的方法。除了标准的重传输延迟之外,当重传输的分组 也丟失时,可以引发额外的延迟。在一些情况中,重传输分组的丢失可 以导致延迟等于整个往返时间。这种延迟可以对于对时间每文感的网络业 务量产生严重的影响。因此,需要一种系统和方法来减轻或者避免由丢 失的重传输导致的延迟。

发明内容
0007本发明涉及用于在对和网络业务量相关的决策进行排队并 重传输中利用事务边界检测方法的系统和方法。通过检测事务的边界和 大小,客户机、服务器或者中间装置可以在对决策排队中基于事务大小 优先排序,将优先级赋予可以表示交互式和/或等待时间敏感的业务量的 较小事务。进一步,在检测事务边界之后,装置可以重传输提示确认的 一个或者多个附加的分组,用来确保如果事务的最后一个分组已经丢失 时的及时通知。本发明还涉及用于潜在地改进网络等待时间的其他重传 输系统和方法,包括两次或者多次重传输丢失的分组,用来避免由于重 传输分组的丢失而导致的附加的延迟。
0008在一个方面中,本发明涉及用于基于事务大小将等待从中 间设备传输的分组优先排序的方法。在一个实施例中,该方法包括通 过中间设备接收第 一分组和第二分组。中间设备可以随后确定对应于第一分组的第一事务大小或者对应于从中接收第一分组的连接的平均事务 大小。中间设备可以分配第一传输优先级给第一分组,响应于所确定的 第一事务大小来确定所述传输优先级。所述中间设备随后可以传输第一 分组和第二分组,其中根据第 一分配的传输优先级来确定传输顺序。
0009在第二方面中,本发明涉及用于基于事务大小将等待从中 间装置传输的分组优先排序的系统。在一个实施例中,该系统包括接 收第一分组和第二分组的分组处理器;和确定与第一分组相关联的第一 事务大小的流控制器;响应于所确定的第一事务大小,为第一分组分配 传输优先级;并且根据所分配的传输优先级来传输第一分组和第二分组。
0010在第三方面中,本发明涉及用于通过基于识别事务边界来 选择性传输来自中间装置的附加的分组而降低传输超时的方法。在一个 实施例中,该方法包括通过装置经由发送器和接收器之间的传输层连 接来接收来自发送器经由第一传输层连接的第 一分组;通过所述装置将 所述第一分组发送到所述接收器;通过所述装置确定第一分组小于传输 层连接的最大分组大小;通过装置响应于该确定而产生至少一个附加的 分组;并且通过装置在所述第一分组已经传输到接收器之后经由传输层 连接来传输所述至少 一个附加的分组到接收器。
0011在第四方面中,本发明涉及用于通过基于识别事务边界来 选择性传输来自中间装置的附加分组而降低传输超时的系统。在一个实 施例中,该系统包括用作对于发送器和接收器之间的传输层连接的中 间设备的装置,该装置包括分组处理器,其经由第一传输层连接接收 来自发送器的第一分组;并且将所述第一分组发送到所述接收器;和流 控制器,其用于确定第一分组小于传输层连接的最大分组大小;响应于 该确定,产生至少一个附加的分组;并且在所述第一分组已经传输到接 收器之后,经由传输层连接来传输所述至少一个附加的分组到接收器。
0012在第五方面中,本发明涉及用于在发送器和接收器之间重 传输网络分组来降低与传输层连接相关联的传输错误的方法。在一个实 施例中,该方法包括通过装置接收经由传输层连接传输的网络分组没 有被接收器接收的指示;通过该装置响应于该指示来重传输所述网络分 组到所述接收器;通过该装置确定和传输层连接相关联的分组丢失率;通过该装置响应于所确定的分组丟失率来确定多个附加的重传输;并且
通过该装置根据附加的重传输的确定数量来重传输所述网络分组。
0013在第六方面中,本发明涉及用于在发送器和接收器之间重 传输网络分组来降低与传输层连接相关联的传输错误的系统。在一个实 施例中,该系统包括分组处理器,其接收经由传输层连接传输的网络 分组没有被接收器接收的指示;并且响应于该指示来重传输所述网络分 组到所述接收器;和与分组处理器通信的流控制器,其确定和传输层连 接相关联的分组丟失率;响应于所确定的分组丢失率来确定多个附加的 重传输;并且根据附加的重传输的确定数量来重传输所述网络分组。
0014在下面附图和具体实施方式
中提出本发明的多种实施例的
细节。


0015参考结合附图的以下描述,本发明的前述和其他对象、方 面、特征和优势将会十分明显并更容易理解,其中
图1A是客户机经由一个或者多个网络优化设备来访问服务器的网络 环境的实施例的框图IB是客户机经由与其他网络设备结合的一个或者多个网络优化设 备来访问服务器的网络环境的另 一个实施例的框图1C是客户机经由独立布置或者和其他网络设备结合的单个网络优 化设备来访问服务器的网络环境的另 一个实施例的框图1D和1E是计算装置的实施例的框图2A是处理在客户机和服务器之间的通信的设备的实施例的框图; 图2B是布置设备的网络优化特征的客户机和/或服务器的另一个实 施例的框图3是使用网络优化设备来与服务器进行通信的客户机的实施例的 框图4是取样TCP分组的框图; 图4示出取样的TCP分组;
图5是传输可以分类为事务的分组群的多个客户机的示意图;图6是用于基于事务大小将等待从中间装置传输的分组优先排序的
方法的流程图7A和7B描述用于使用事务边界来降低超时处罚的系统和方法;

图8A和8B描述用于在发送器和接收器之间重传输网络分组来降低 与传输层连接相关联的传输开销的系统和方法。
0016根据以下结合附图提出的详细描述,本发明的特征和优势 将变得更加明显,其中相同的参考符号在全文中是指对应的元件。在附 图中,相似的附图标记通常指示相同的、功能类似的和/或结构类似的元 件。
具体实施例方式
0017为了阅读下面的本发明的多个实施例的描述,说明下面的
说明书的各部分以及它们相应的内容是有帮助的
部分A描述用于实现本发明的实施例的网络环境和计算环境;
部分B描述用于将计算环境加速递送到远程用户的系统和设备架构
的实施例;
部分C描述用于加速在客户机和服务器之间的通信的客户机代理的 实施例;
部分D描述用于使用事务边界来确定传输优先级的系统和方法的实 施例5 和
部分E描述用于降低和网络连接相关联的超时处罚和开销的系统和 方法的实施例。
A.网络和计算环境
0018在讨论设备和/或客户机的系统和方法的实施例的细节之 前,讨论可以部署这样的实施例的网络和计算环境是有帮助的。现在参 考图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相关的网络业务 量。
0019虽然图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进行 通信。
0020网络104可以是任意类型和/或形式的网络,并且可以包括 下列任意一种网络点到点网络、广播网、广域网、局域网、远程通信 网、数据通信网、计算机网络、ATM (异步传送^^莫式)网络、SONET (同 步光学网络)网络、SDH (同步数字系列)网络、无线网络和有线网络。 在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链 路。网络104的拓朴结构可以是总线型、星型或环型网络拓朴结构。网 络104以及网络拓朴结构可以是能够支持此处描述的操作的本领域内普 通技术人员所知的任一种这样的网络或网络拓朴结构。
0021如图1A所示,在网络104和104'之间示出第一网络优化设备200并且在网络1 Of和104''之间示出第二网络优化设备200\在一 些实施例中,设备200可以位于网络104上。例如,公司企业可以在所 述分支机构处部署设备200。在其它实施例中,设备200可以位于网络 104'上。在一些实施例中,设备200'可以位于网络104'或者网络104〃 上。例如设备200可以位于公司的数据中心。在一个实施例中,设备200 和i殳备200'可以位于相同网络上。在另一个实施例中,设备200和设备 20(T可以位于不同网络上。
0022在一个实施例中,设备200是用于加速、优化或者以其他 方式改善任意类型和形式的网络业务量的性能、操作或服务质量的装置。 在一些实施例中,设备200是一个性能强化的代理。在其它实施例中, 设备200是任意类型和形式的WAN优化或加速装置,有时也被称为WAN 优化控制器。在一个实施例中,设备2 0 0是由位于F t. Lauder da 1 e F1 or i da 的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任意 一种。在其它实施例中,设备200包括由位于Seattle, Washington的F5 Networks公司出品的被称为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相关装置中的 任意一种。在一个实施例中,i殳备200包括由位于Cupertino, California 的Packeteer公司出品的4壬意一种WAN相关i殳备,例如由Packeteer提 供的PacketShaper、 iShared和SkyX产品实施例。在又一个实施例中, i殳备200包4舌由4立于San Jose, California的Cisco Systems/>司出品 的任意WAN相关设备和/或软件,例如C i sco广域网应用服务软件和网络 模块以及广域网引擎设备。
0023在一些实施例中,设备200提供用于分支机构或远程办公 室的应用和数据加速业务。在一个实施例中,设备200包括广域文件服 务(WAFS)的优化。在另一个实施例中,设备200加速文件的递送,例
19如经由公共因特网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储设备中提供高速緩存来加速应用和数据的递送。在一个实施例中,设备205提供在任意级别的网络堆栈或在任意的协议或网络层的网络业务量的压缩。在另一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备200提供传输控制协议
(TCP)优化。在其它实施例中,设备200提供对于任意会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下面B部分中讨论设备200的优化技术、操作和架构的进一步细节。
0024仍旧参考图1A,网络环境可以包括多个、逻辑分组的服务器106。在这些实施例中,服务器的逻辑组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务器106可以是在地理上分敎的。有时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户机102来执行一个或多个应用。
0025在每个群组38中的服务器106可以是不同种类的。 一个或多个服务器106可以根据一种类型的操作系统平台(例如,由位于Redmond, Washington的孩1软/>司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另 一种类型的操作系统平台(例如,Unix或Linux)来进行4喿作。每个群组38中的服务器106不需要与同一群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的组可以-使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、冲史园或房间的不同区域的服务器106。如果4吏用局域网
(LAN)连接或一些形式的直接连接来连接服务器106,则可以增加在群组38中的服务器106之间的数据传输速度。
0026服务器106可以是文件服务器、应用服务器、web服务器、代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包括活动目录(Active Directory )。客户机102也可以净皮称为客户机节点或端点。在一些实施例中,客户机102有能力起到寻求访问服务器
上的应用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应用的访问的应用服务器的作用。
0027在一些实施例中,客户机102与服务器106进行通信。在一个实施例,客户机102直接与群组38中的服务器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻近应用以与群组38中的服务器106进行通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群组38中的服务器106进行通信。例如,通过网络104,客户机102可以请求执行由群组38中的服务器106a-106n寄载的多个应用,并接收应用执行的结果输出用于显示。在一些实施例中,只有主节点提供所要求的识别并提供与寄载被请求的应用的服务器10 6'相关的地址信息的功能。
0028在一个实施例中,服务器106提供web服务器的功能。在另一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自于服务器106b的对请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102
106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户机102直接与服务器106进行通信以访问所标识的应用。在另一个实施例中,客户机102接收由执行服务器106上的标识的应用所生成的诸如显示数据的应用输出数据。
与其他设备一起布置
0029现在参考图1B,描述网络环境的另一个实施例,其中,网络优化设备200和诸如网关、防火墙或者加速设备的一个或者多个其他设备205、 205'(总的称为设备205或者第二设备205 )布置在一起。例如,在一个实施例中,设备205是防火墙或者安全设备,而设备205'是LAN加速装置。在一些实施例中,客户机102可以经由一个或者多个第一设备200和一个或者多个第二设备205与服务器106相通信。0030
一个或者多个设备200和205可以布置在客户机102和服务器106之间的网络或者网络通信路径中的任一点处。在一些实施例中,第二设备205可以布置在和第一设备200相同的网络104上。在其他实施例中,第二设备205可以布置在和第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在例如网络104的相同网络上,而第一i殳备200'和第二设备205'可以位于诸如网络104〃的相同网络上。
0031在一个实施例中,第二设备205包括任一类型和形式传输控制协议或者传输后终接装置,诸如网关或者防火墙装置。在一个实施例中,设备205通过建立与客户机的第一传输控制协议连接以及与第二设备或者服务器的第二传输控制连接,来终接传输控制协议。在另一个实施例中,设备205通过改变、管理或者控制客户机和服务器或者第二设备之间的传输控制协议连接的行为,来终接传输控制协议。例如,设备205可以以有效终接传输控制协议连接或者作用为或者冲莫拟为终接连接的方式来改变、排列、转发或者传输网络分组。
0032在一些实施例中,第二设备205是性能强化代理。在一个实施例中,设备205提供虚拟专用网络(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN (SSL VPN)连接。在其他实施例中,设备205提供基于IPsec (互联网协议安全)的VPN连接。在一些实施例中,设备205提供任意一个或者多个以下的功能性压缩、加速、负载平衡、切换/路由、高速緩存和传输控制协议(TCP)加速。
0033在一个实施例中,设备205是位于Ft. Lauderdale Florida的Citrix Systems公司出品的被称为访问网关、应用防火墙、应用网关或者WANScaler的产品实施例。由此,在一些实施例中,i殳备205包括任一逻辑、功能、规则或者操作来执行诸如SSLVPN连接、SSL卸载、切换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或者功能性。
0034在一些实施例中,设备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的端到端安全传输层连接。
0035在一个实施例中,设备205在虚拟专用网104上寄载客户机102的内联网网际协议或内联网IP地址。客户机102具有诸如第一网络104上的网际协议(IP )地址和/或主机名的本地网络标识符。当经由设备205连接到第二网络104'时,设备205在第二网络104'上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名的网络标识符。使用客户机的建立的内联网IP,设备205在第二或专用网104'上监听并接收指向客户机102的任意通信。在一个实施例中,设备205在第二专用网104上充当或代表客户机102。
0036在一些实施例中,设备205具有提供用于操控诸如SSL或者TLS的任意安全相关的协议或者其中涉及的任意功能的处理的逻辑、商业规则、功能或者#:作的加密引擎。例如,加密引擎加密和解密经由设备205通信的网络分组或者其中任意部分。加密引擎还可以代表客户机102a-102n、服务器106a-106n或者设备200、 205设置或者建立SSL或者TLS连接。由此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧穿协议来在客户机102a-102n和服务器106a-106n之间提供虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其他实施例中,加密引擎包括在加密处理器上运行的可执行指令。
0037在一些实施例中,设备205提供下列一个或多个加速技术来在客户机102和服务器106之间进行通信l)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议緩沖;以及6)高速緩存。在一个实施例中,设备200通过重复地打开与每个服
23务器106的一个或多个传输层连接并维持这些连接以允许客户机经由因
特网的重复数据访问来减轻服务器106的通过反复打开和关闭到客户机 102的传输层连接所造成的大量处理负载。这个技术在这里被称为"连接 池(connection pooling)',。
0038在一些实施例中,为了经由池化的传输层连接来无缝拼接 从客户机102到服务器106的通信,设备205通过在传输层协议级修改 序号和确认号来转换或多路复用通信。这被称为"连接多路复用"。在一 些实施例中,不需要应用层协议相互作用。例如,在入站分组(即,接 收来自客户机102的分组)的情况中,所述分组的源网络地址被改变为 设备205的输出端口的网络地址,而目的网络地址^L改变为预期的服务 器的网络地址。在出站分组(即,接收来自服务器106的一个分组)的 情况中,源网络地址被从服务器106的网络地址改变为设备205的输出 端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客 户机102的网络地址。所述分组的序号和确认号也被转换为到客户机102 的设备205的传输层连接上由客户机102所期待的序号和确认。在一些 实施例中,传输层协议的分组校验和被重新计算以计及这些转换。
0039在另一个实施例中,设备205为客户机102和服务器106 之间的通信提供切换或负载平衡功能。在一些实施例中,设备205根据 层4净荷或应用层请求数据来分配业务量并将客户机请求引向服务器 106。在一个实施例中,虽然网络分组的网络层或层2标识了目的地服务 器106,但设备205通过作为传输层分组的净荷而携带的应用信息和数据 来确定服务器106以分配网络分组。在一个实施例中,设备205的健康 监测程序监控服务器的健康以确定为其分配客户机请求的服务器106。在 一些实施例中,如果设备205探测到服务器106不可用或具有超过预定 阈值的负载,则设备205可以将客户机请求引向或分配到另一个服务器 106。
0040在一些实施例中,设备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请 求。
0041在又一个实施例中,设备205为客户机102和服务器106 之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295'提供 用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙防止拒 绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求内容以识 别和阻塞基于应用程序的攻击。在一些实施例中,规则/策略引擎包括用 于提供对多个种类和类型的基于web或因特网的脆弱点的保护的一个或 多个应用防火墙或安全控制策略,例如下列的一个或多个l)緩沖器溢 出,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来防止强 制浏览。
0042还是在又一些实施例中,应用防火墙设备205保护在网络 通信中包含的任意机密信息。设备205可以根据策略引擎的规则或策略 来检查或分析任意网络通信以识别在网络分组的任意字段中的任意机密 信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、 社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网 络通信的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙可以在网络通信上釆取策略行动,例如阻止网 络通信的传输。在另一个实施例中,应用防火墙可以重写、移除或者以 其他方式掩盖这样识别出的出现或机密信息。
0043尽管总的称为网络优化或者第一设备200和第二设备205, 但是第一设备200和第二设备205可以是同样类型和形式的设备。在一 个实施例中,第二设备205可以执行和第一设备100相同的功能性或者 部分,反之亦然。例如,第一设备200和第二设备205可以一起提供加 速技术。在一个实施例中,第一设备可以执行LAN加速而第二设备执行 WAN加速,或者反之亦然。在另一个例子中,第一设备200还可以是传输 控制协议终接装置,如同第二设备205 —样。进一步,尽管设备200和 205视为网络上的单独设备,但是设备200和/或205可以是任一客户机 102或者服务器106的一部分。
0044现在参考图1C,描述用于布置设备200的网络环境的其他 实施例。在如图1C的上部所描述的另一个实施例中,设备200可以布置 为网络104上的单个设备或者单个代理。例如,设备200可以被设计、 构建或者调整来执行此处讨论的WAN优化技术,而不需要第二协作设备 200'。在如图1C的下部所描述的其它实施例中,单个设备200可以和一 个或者多个第二设备205 —起布置。例如,诸如Citrix WANScaler设备 的WAN加速第一设备200可以和诸如Citrix Nat Scaler设备的LAN加速 或者应用防火墙第二设备205 —起布置。 计算装置
0045客户机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通
26信的高速緩存140。
0046中央处理单元101是响应并处理取自主存储器单元122的 指令的任意逻辑电路。在许多实施例中,中央处理单元由微处理器单元 提供,例如由位于Mountain View, Cal ifornia的Intel公司出品的产 品;由位于Schaumburg, Illinois的Motorola公司出品的产品;由位于 Santa Clara, Cal if ornia的Transmeta公司出品的产品;由位于White Plains, New York的国际商业机器公司出品的RS/6000处理器;或者由位 于Sunnyvale, Cal ifornia的Advanced Micro Devices公司出品的产品。 计算装置100可以基于任意的这些处理器、或者可以如此处所描述地操 作的任意其它处理器。
0047主存储器单元122可以是能够保存数据并允许微处理器101 直接访问任意存储位置的 一个或多个存储芯片,例如静态随机存取存储 器(SRAM)、突发式SRAM或同步突发式SRAM (BSRAM)、动态随机存取存 储器(DR認)、快速页面才莫式DRAM (FPM DRAM)、增强型DRAM (EDRAM)、 扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DR細)、突发式 扩展数据输出DRAM( BED0 DRAM )、增强型DRAM( EDR趨)、同步DRAM( SDRAM )、 JEDEC SRAM、 PCI00 SDRAM、双数据速率SDRAM ( DDR SDRAM )、增强型SDRAM (ESDR細)、同步链接DR雄(SLDR组)、直接Rambus DRAM ( DRDR雄)、或 铁电RAM ( FRAM )。主存储器122可以基于任意一种上面描述的存储芯片、 或者可以如此处所描述地操作的任意其它可用的存储芯片。在图1C中所 示的实施例中,处理器101通过系统总线150与主存储器122进行通信 (在下面进行更详细的描述)。图1C描述了在其中处理器通过存储器端 口 103直接与主存储器122通信的计算装置100的实施例。例如,在图 ID中,主存储器122可以是DRDRAM。
0048图1D描述了在其中主处理器IOI通过有时被称为背端总线 的次级总线来直接与高速缓存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。对于1/0装置是视频显示器124的实施例, 处理器101可以使用高级图形端口 (AGP)来与显示器124进行通信。图 ID描述了在其中主处理器101通过HyperTransport、快速I/O或 Inf iniBand来直4妄与I/O装置130通信的计算才几100的一个实施例。图 1D还描述了混合本地总线和直接通信的一个实施例处理器101使用本 地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通 信。
0049计算装置IOO可以支持任意适当的安装装置116,例如用于 接收像3. 5英寸、5. 25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、 CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动 器、USB装置、硬盘驱动器或适于安装像任意客户机代理120或其部分的 软件和程序的任意其它装置。计算装置IOO还可以包括存储装置128,例 如一个或多个硬盘驱动器或独立盘的冗余阵列,用于保存操作系统及其 它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的应 用软件程序。可选地,任意一种安装装置116还可以被用作存储装置128。 另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如 像KNOPPIX⑧的可引导CD,作为来自于kn叩pix. net可用作GNU/Linux分 发的G冊/Linux的可引导CD。
0050进一步地,计算装置100可以包括通过多种连接接口到局 域网(LAN)、广域网(WAN)或因特网的网络接口 118,所述多种连接包 括但不限于标准电话线、LAN或WAN链3各(例如,802.11、 Tl、 T3、 56kb、 X. 25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任意或 所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接 口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络 适配器、调制解调器或适于将计算装置100接口到可以传达并执行此处 所描述的操作的任意类型的网络的任意其它装置。各式各样的I/O装置 130a-130n可以存在于计算装置100中。输入装置包括^建盘、鼠标、轨迹 垫、轨迹球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O装置130可以由如图
IE所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例 如鼠标或光笔的定点装置127的一个或多个1/0装置。进一步地,1/0装 置还可以为计算装置100提供存储装置128和/或安装介质116。还是在 其它实施例中,计算装置100可以提供USB连接以接收诸如由位于Los Alamitos, California的Twintech Industry公司出品的USB闪存驱动器 系列装置这样的便携USB存储装置。
0051在一些实施例中,计算装置100可以包括或连接到多个显 示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。 因而,任意一种1/0装置130a-130n和/或1/0控制器123可以包括任意 类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许 或提供通过计算装置IOO连接和使用多个显示装置124a-124n。例如,计 算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器 和/或库,以接口、通信、连接或以其他方式使用显示装置124a-124n。 在一个实施例中,视频适配器可以包括多个连接器以接口多个显示装置 124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器, 每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例 中,计算装置100的搡作系统的任意部分可以被配置用于使用多个显示 器124a-124n。在其它实施例中, 一个或多个显示装置124a-124n可以由 一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和 100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将 另 一个计算机的显示装置用作计算装置100的第二显示装置124a的任意 类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配 置为具有多个显示装置124a-124n的多个方法和实施例。
0052在进一步的实施例中,1/0装置130可以是在系统总线150 和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、A卯leTalk总线、吉比特以太网总线、异步传送 模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总 线、FibreChannel总线或串行附加小型计算机系统接口总线。
290053图1C和ID中描述类型的计算装置100典型地在控制任务 的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可 以运行任意操作系统,例如任意一种版本的微软⑧Windows操作系统、不 同版本的Unix和Linux操作系统、用于Macintosh计算才几的任意版本的 MacOS⑧、任意的嵌入式搡作系统、任意的实时操作系统、任意的开放源 操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、 或者可以运行在计算装置上并执行此处所描述的操作的任意其它操作系 统。典型的操作系统其中包括WINDOWS 3. x、 WINDOWS 95、 WINDOWS 98、 WINDOWS 2000、 WINDOWS NT 3. 51、 WINDOWS NT 4. 0、 WINDOWS CE、 WINDOWS 2003 、 WINDOWS XP和 WINDOWS SISTA , 所有这些均由位于 Redmond, Washington的《效寿欠/>司出品;由^f立于Cupert ino, 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的这些版本),以及其它。
0054在其它实施例中,计算装置100可以具有符合所述装置的 不同的处理器、搡作系统和输入装置。例如,在一个实施例中,计算机 IOO是由Palm/^司出品的Treol80、 270、 1060、 600或650智能电话。 在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括 指示笔输入装置以及五向导航装置。在另一个实施例中,计算装置100 可以是具有ARM (高级RISC机器)类型的处理器的WinCE或者PchetPC。 在一个例子中,计算装置100包括Finland的Nokia出品的Series 80 (Nokia 9500或者Nokia 9300 )类型的智能电话,其可以运4亍United Kingdom, London的Symbian软件有限公司出品的Symbian OS或者EPOC 移动^^喿作系统。在另一个实施例中,计算装置100可以包括Illimois, Schamnburg的Motorola公司出品的FOMAM100品牌的智能电话,并且操 作EPOC或者Symbian OS操作系统。在又一个实施例中,计算装置100 包括North Carolina, Research Triangle Park的索尼爱立信通信(USA ) 公司出品的Sony Ericsson P800、 P900或者P910 Alpha模型电话(modelphone )。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、智能电话、任意其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计算或电信装置。
B、系统和"i殳备架构
0055现在参考图2A,描述了用于递送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多个客户机102的应用递送系统290。简单概述,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境215。计算环境215可以执行或操作用来访问、处理或使用数据文件的应用。可以经由设备200和/或服务器106来递送计算环境215、应用和/或数据文件。
0056在一些实施例中,设备200加速将计算环境215或其任意部分递送给客户机102。在一个实施例中,设备200通过应用递送系统290来加速计算环境215的递送。例如,此处描述的实施例可以用来将可由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在客户机102和服务器106之间的传输层业务量。在另一个实施例中,设备200控制、管理、或者调整传输层协议来加速递送计算环境。在一些实施例中,设备200使用高速缓存和/或压缩技术来加速递送计算环境。
0057在一些实施例中,应用递送管理系统290根据多个执行方法以及根据经由策略引擎295应用的任意验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应用递送技术。使用这些技术,远程用户可以从任意网络连接装置100获取计算环境以及访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统290可以驻留于服务器106或在服务器106上执行。在另一个实施例中,应用递送系统290可以驻留于多个服务器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可以在服务器群组38中执行。在一个实施例中,执行应用递送系统19G的服务器106还可以存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执行应用递送系统290,而不同的服务器106n可以存储或^是供应用和数据文件。在一些实施例中,应用递送系统290、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在又一个实施例中,应用递送系统290的任意部分可以驻留、执行或保存或被分配于设备200或多个设备。
0058客户机102可以包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可以经由网络104、 104'和设备200来从服务器106请求应用和数据文件。在一个实施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可以不具有本地存储或可存耳又的应用和数据文件。响应于请求,应用递送系统290和/或服务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,月l务器106可以以应用流的形式发送该应用,以在客户才几102上的计算环境215中进行操作。
0059在一些实施例中,应用递送系统290包括Citrix Systems公司的例如MetaFrame或Citrix表示(Presentation )服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微软⑧Windows终端服务。在一个实施例中,应用递送系统290可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到客户机102或用户。在另一个实施例中,应用递送系统290可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
0060在一个实施例中,应用递送系统290包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎295。在一些实施例中,策略引擎2 9 5确定用户或客户机10 2可以访问的 一 个或多个应用。在另一个实施例中,策略引擎295确定应用应该如何被递送给用户或客户机102,例如执行方法。在一些实施例中,应用递送系统290提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给客户机12 0以用于本地抽J亍。0061在一个实施例中,客户机102请求执行应用程序而包括服 务器106的应用递送系统290选择执行应用程序的方法。在一些实施例 中,服务器106从客户机102接收证书。在另一个实施例中,服务器106 从客户机102接收可用应用的列举的请求。在一个实施例中,响应于所 述请求或收到的证书,应用递送系统290列举客户才几102可用的多个应 用程序。应用递送系统290接收请求以执行所列举的应用。应用递送系 统290选裤,预定数目的方法中的一个来执行列举的应用,例如响应于策 略引擎的策略。应用递送系统290可以选择一个执行应用的方法,使得 客户机102可以接收通过在服务器106上执行应用程序而生成的应用输 出数据。应用递送系统290可以选择执行应用的方法,1吏得本地机器102 可以在^f全索包括应用的多个应用文件之后本地执行所述应用程序。在又 一个实施例中,应用递送系统290可以选择执行应用的方法以经由网络 104将应用流式传输到客户机102。
0062客户机102可以执行、操作或以其他方式提供应用,所述 应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类 型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、 瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户 机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中, 应用可以是代表客户机102在服务器106上执行的基于服务器或基于远 程的应用。在一个实施例中,服务器106可以使用任意瘦-客户机或远程 显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft. Lauderdale, Florida的Citrix Systems公司出品的独立计算架构(ICA) 协议或由位于Redmond, Wash i ng ton的微软公司出品的远程桌面协议 (RDP)。应用可以使用任意类型的协议,并且它可以是例如HTTP客户机、 FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包 括与VoIP通信相关的任意类型的软件,例如软IP电话。在进一步的实 施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输 -见频和/或音频的应用。
0063在一些实施例中,服务器106或服务器群组38可以运行一 个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应
33用。在一个实施例中,服务器106或服务器群组38作为应用而执行Ci tr ix Systems公司的例如MetaFrame或Citrix表示服务器TM的Citrix访问 套件TM的任意部分和/或由微软公司出品的任意一种微软⑧Windows终端 服务。在一个实施例中,应用是由位于Fort Lauderdale, Florida的 CUrix Systems公司开发的ICA客户机。在其它实施例中,应用包括由 位于Redmond, Washington的微软公司开发的远程桌面(RDP )客户机。 此外,服务器106可以运行应用,例如,所述服务器106可以是提供例 如由位于Redmond, Washington的凝:專欠/>司出品的孩i專欠Exchange的电子 邮件服务的应用服务器、web或网络服务器、或桌面共享服务器、或协作 服务器。在一些实施例中,任意一种应用可以包括任意类型的寄载服务 或产品,例如由Santa Barbara, California的Citrix Online部门提供 的GoToMeetingTM、由位于Santa Clara, Cal if ornia的WebEx/厶司提供 的WebExTM、或由位于Redmond, Washington的孩支專欠/>司才是供的樣i软 Office Live Meeting。 示例设备架构
0064图2A还示出设备200的示例实施例。仅通过示例来提供图 2A中的设备200的架构并且不意于以任一方式受限。设备200可以包括 任一类型和形式的计算装置100,诸如结合上面图ID和IE所描述的任一 元件或者部分。总的来说,设备200具有一个或者多个网络端口 266A-266N 和一个或者多个网络堆栈267A-267N用于经由网络104<接收和/或传输通 信。设备200还局域网络优化引擎250,用于优化、加速或者以其他方式 改进通过设备200的任一网络业务量或者通信的性能、操作或者质量。
0065设备200包括操作系统或者受操作系统的控制。设备200 的操作系统可以是任一类型和/或形式的Unix操作系统,但是本发明不 受这样的限制。由此,设备200可以运行任意才喿作系统,诸如任意一种 版本的《效软⑧Windows 4喿作系统、不同版本的Unix和Linux #:作系统、 用于Macintosh计算机的任意版本的Mac 0S 、任意的嵌入式操作系统、 任意的网络操作系统、任意的实时操作系统、任意的开放源操作系统、 任意的专用操作系统、用于移动计算装置或者网络装置的任意操作系统、 或者可以运行在设备200上并执行此处所描述的操作的任意其它操作系统。
0066设备200的操作系统将可用的系统存储器分配、管理或者 以其他方式分离成内核或者系统空间和用户或者应用空间。内核空间典 型地被保留用于运行内核,所述内核包括任一设备驱动程序、内核扩展 或其它内核相关软件。如本领域技术人员所知,内核是操作系统的核心, 并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据 设备200的实施例,内核空间还包括和网络优化引擎250或其部分一起 工作的多个网络服务或进程。另外,内核的实施例将依赖于由装置200 所安装、配置或者以其他方式使用的操作系统的实施例。与内核空间不 同,用户空间是由用户模式应用或者以其他方式运行于用户模式的程序 所使用的存储器区域或部分操作系统。用户模式应用不可以直接访问内 核空间而使用服务调用以访问内核服务。操作系统使用用户或者应用空 间用于执行或者运行应用和提供用户级程序、服务、过程和/或任务。
0067设备200具有一个或者多个网络端口 266用于通过网络104 传输和接收数据。网络端口 266提供计算装置和网络104或者另一个装 置100之间的物理和/或逻辑接口用于传输和接收网络通信。网络端口 266 的类型和形式依赖于网络的类型和形式以及用于连接到网络的介质的类 型。进一步,提供用于网络端口 266和网络堆栈267或者由其使用的任 一软件可以运行在内核空间或者用户空间中。
0068在一个实施例中,设备200包括诸如基于TCP/IP的堆栈的 一个网络堆栈267,用于在网络105上与客户机102和/或服务器106进 行通信。在一个实施例中,网络堆栈267用于与诸如网络104的第一网 络以及第二网络104'进行通信。在另一个实施例中,装置200可以包括 两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第 一网络堆栈267A可以用于和第一端口 266A相结合在第一网络104上通 信。第二网络堆栈267N可以用于和第二端口 266N相结合在第二网络104' 上通信。在一个实施例中,网络堆栈267包括一个或多个緩沖器用于对 一个或多个网络分组排队以便被设备200发送。
0069网络堆栈267包括任意类型和形式的软件或硬件或其任意 组合,用于提供到网络的连通性以及与网络的通信。在一个实施例中,网络堆栈267包括用于网络协议套件的软件实现。网络堆栈267可以包 括一个或多个网络层,例如如本领域技术人员所认识和理解的开放系统 互连(0SI)通信模型的任意网络层。因而,网络堆栈267可以包括用于 下列OSI模型的任意一层的任意类型和形式的协议l)物理链路层,2) 数据链路层,3 )网络层,4 )传输层,5 )会话层,6 )表示层以及7 )应 用层。在一个实施例中,网络堆栈267包括在网际协议(IP)的网络层 协议上的传输控制协议(TCP),通常被称为TCP/IP。在一些实施例中, 可以在以太网协议上携带TCP/IP协议,所述以太网协议可以包括诸如由 IEEE 802. 3所覆盖的那些协议的IEEE广域网(WAN)或局域网(LAN)协 议的任意族。在一些实施例中,网络堆栈267包括诸如IEEE 802. 11和/ 或移动网际协议的任意类型和形式的无线协议。
0070考虑到基于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),例如用于音频通信或实时数据通信。
0071进一步,网络堆栈267可以包括诸如TCP驱动程序或网络 层驱动程序的支持一个或多个层的一个或多个网络驱动程序。网络驱动 程序可以被包括作为计算装置100的搡作系统的一部分或作为计算装置 100的任意网络接口卡或其它网络访问部件的一部分。在一些实施例中, 网络堆栈267的任意一种网络驱动程序可以被定制、修改或改变以提供 支持此处描述的任意技术的网络堆栈267的定制或修改部分。
0072在一个实施例中,设备200使用单个网络堆栈267提供或 者维持客户机102和服务器106之间的传输层连接。在一些实施例中, 设备200通过改变、管理或者控制客户机和服务器之间的传输控制协议连接的行为来有效终接传输层连接。在这些实施例中,设备200可以使
用单个网络堆栈267。在其他实施例中,设备200终接诸如客户机102的 TCP连接的第一传输层连接,并且建立代表客户机102或者由客户机102 使用的到服务器106的第二传输层连接,例如第二传输层连接在设备200 和服务器106处终接。第一和第二传输层连接可以经由单个网络堆栈267 建立。在其他实施例中,设备200使用多个网络堆栈,例如267A和267B。 在这些实施例中,第一传输层连接可以在一个网络堆栈267A处建立或者 终接,而第二传输层连接可以在第二网络堆栈267N处建立或者终接。例 如, 一个网络堆栈可以用于在第一网络上接收和发送网络分组,并且另 一个网络堆栈用于在第二网络上接收和发送网络分组。
0073如图2A中所示,网络优化引擎250包括一个或者多个以下 的元件、部件或者模块网络分组处理引擎240、 LAN/WAN探测器210、 流控制器220、 Qos引擎236、协议加速器234、压缩引擎238、高速緩存 管理器232和策略引擎295'。网络优化引擎250或其一部分可以包括软 件、硬件或者软件和硬件的任意组合。此外,网络优化引擎250所提供 的或者使用的任一软件可以运行在内核空间或者用户空间。例如,在一 个实施例中,网络优化引擎250可以运行在内核空间中。在另一个实施 例中,网络优化引擎250可以运行在用户空间中。在又一个实施例中, 网络优化引擎250的第一部分运行在内核空间中,而网络优化引擎250 的第二部分运行在用户空间中。
网络分组处理引擎
0074通常也被称为分组处理引擎或分组引擎的网络分组引擎 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 分组的净荷。
0075分组引擎240可以包括用于在例如接收网络分组或发送网 络分组的处理期间排队一个或多个网络分组的緩冲器。另外,分组引擎 240与一个或多个网络堆栈267通信以经由网络端口 266发送和接收网络 分组。分组引擎24G可以包括分组处理定时器。在一个实施例中,分组 处理定时器提供一个或多个时间间隔以触发输入(即,接收)或输出(即, 发送)的网络分组的处理。在一些实施例中,分组引擎240响应于定时 器来处理网络分组。分组处理定时器提供任意类型和形式的信号给分组 引擎240,以通知、触发或通信时间相关的事件、间隔或发生。在许多实 施例中,分组处理定时器以例如Y象IOO毫秒、50毫秒、25毫秒、IO毫秒、 5毫秒或者1毫秒的这样的毫秒级来进行操作。
0076在操作期间,分组引擎24 0可以与诸如LAN/WAN探测器210 、 流控制器220、 Qos引擎236、协议加速器234、压缩引擎238、高速緩存 管理器232和/或策略引擎295'的网络优化引擎250的任一部分接口 、集 成或通信。因而,可以响应于分组处理定时器和/或分组引擎24Q来^L行 LAN/WAN探测器210、流控制器220、 Qos引擎236、协议加速器234、压 缩引擎238、高速緩存管理器232和策略引擎295'的任意逻辑、功能或 才喿作。在一些实施例中,可以以例如小于或等于10毫秒的时间间隔的、 通过分组处理定时器提供的时间间隔的粒度来执行加密引擎234、高速緩 存管理器232、策略引擎236和多协议压缩逻辑238的任意逻辑、功能或 操作。例如,在一个实施例中,高速緩存管理器232可以响应于集成的 分组引擎240和/或分组处理定时器242来执行任意高速緩存的对象的终 止。在另一个实施例中,可以将高速緩存的对象的满期或终止时间设置 为与分组处理定时器的时间间隔相同的粒度级,例如每10毫秒。
高速緩存管理器
0077高速緩存管理器232可以包括软件、硬件或软件和硬件的任意组合,以将数据、信息和对象保存到存储器或者存储装置的高速緩 存中,提供高速緩存访问,并且控制和管理高速緩存。由高速緩存管理 器232处理和保存的数据、对象或内容可以包括诸如标记语言的或者通 过任意协议通信的任意类型的数据。在一些实施例中,高速緩存管理器
232复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中 原始数据也许需要相对于读取高速緩存存储器或者存储元件来说更长的 访问时间以取出、计算或者以其他方式获取。 一旦数据被保存在高速緩 存中,未来的使用可以通过访问高速緩存的拷贝而不是重新取回或再计 算原始数据来进行,从而减少访问时间。在一些实施例中,高速緩存可 以包括设备200的存储器中的数据对象。在另一个实施例中,高速緩存 可以包括诸如硬盘的一部分的设备200的任意类型和形式的存储元件。 在一些实施例中,装置的处理单元可以提供由高速緩存管理器232使用 的高速緩存存储器。在又一个进一步的实施例中,高速緩存管理器232 可以使用存储器、存储装置或处理单元的任意部分和组合,以用于高速 緩存数据、对象及其它内容。
0078进一步地,高速緩存管理器232包括任意逻辑、功能、规 则或操作,以执行设备200的任意高速緩存技术。在一些实施例中,高 速緩存管理器232可以作为应用、库、程序、服务、进程、线程或任务 来操作。在一些实施例中,高速緩存管理器232可以包括任意类型的通 用处理器(GPP)或者诸如现场可编程门阵列(FPGA)、可编程逻辑器件 (PLD)或专用集成电路(ASIC)的任意其它类型的集成电路。
策略引擎
0079策略引擎295'包括任意逻辑、功能或者操作,用于提供和 应用一个或者多个策略或者规则到设备200的任一部分的功能、操作或 者配置。策略引擎295'可以包括例如智能统计引擎或者其他可编程应用。 在一个实施例中,策略引擎295提供配置机制来允许用户识别、指定、 限定或者配置用于网络优化引擎250或者其任一部分的策略。例如,策 略引擎295可以提供策略,用于高速緩存哪些数据、何时高速緩存数据、 高速緩存数据用于谁、何时终止高速緩存中的对象或者刷新高速緩存。
39在其它实施例中,策略引擎236可以包括任意逻辑、规则、功能或操作,
以便确定和提供由设备200高速緩存的对象、数据或内容的访问、控制 和管理以及由设备200执行的安全、网络业务量、网络访问、压缩或任 意其它功能或操作的访问、控制和管理之外。
0080在一些实施例中,策略引擎295'基于以下的任意一个或者 多个来提供和应用一个或者多个策略用户、客户机的标识、服务器的 标识、连接的类型、连接的时间、网络的类型或者网络业务量的内容。 在一个实施例中,策略引擎295'基于网络分组的任意协议层处的任一字 段或者首部来提供和应用策略。在另一个实施例中,策略引擎295'基于 网络分组的任一净荷来提供和应用策略。例如在一个实施例中,策略引 擎295'基于将所运载的应用层协议的内容的特定部分识别为传输层分组 的净荷来应用策略。在另一个实施例中,策略引擎295'基于客户机、服 务器或者用户证书所识别的任一信息来应用策略。在又一个实施例中, 策略引擎295'基于关于客户机所获取的任意属性或者特征来应用策略, 诸如经由任一类型和形式的端点检测(参见示例以下讨论的客户机代理 的收集代理)。
0081在一个实施例中,策略引擎295'和应用递送系统290的策 略引擎295结合或者协同运行。在一些实施例中,策略引擎295'是应用 递送系统290的策略引擎295的分布的部分。在另一个实施例中,应用 递送系统290的策略引擎295被部署在或者执行在设备200上。在一些 实施例中,策略引擎295和295'都在设备200上操作。在又一个实施例 中,设备200的策略引擎295'或其一部分在服务器106上操作。
多协议和多层压缩引擎
0082压缩引擎238包括用于压缩诸如由装置200的网络堆栈267 使用的任意一种协议的网络堆栈的一个或多个协议的网络分组的任意逻 辑、商业规则、功能或操作。压缩引擎238也可以^t称为多协议压缩引 擎238,这是由于其可以被设计、构建或者能够压缩多个协议。在一个实 施例中,压缩引擎238应用上下文不敏感的压缩,其是应用到数据而不 需要知道数据类型的压缩。在另一个实施例中,压缩引擎238应用上下文敏感的压缩。在此实施例中,压缩引擎238利用知道数据类型来从一 组合适算法中选择特定压缩算法。在一些实施例中,特定协议的知识被
用来执行上下文敏感的压缩。在一个实施例中,设备200或者压缩引擎 238可以使用端口号(例如,公知端口 )以及来自自身连接的数据来确定 要使用的适当的压缩算法。 一些协议仅使用单个类型的数据,仅要求在 连接建立时可以被选择的单个压缩算法。其他协议在不同时间包括不同 类型的数据。例如,引入有其他协议数据的随意类型的P0P、 IMAP、 SMTP 和HTTP所有移动文件。
0083在一个实施例中,压缩引擎238使用德尔塔类型的压缩算 法。在另一个实施例中,压缩引擎238使用第一位置压縮以及在高速緩 存、存储器或者盘中保存的数据上搜索重复的模式。在一些实施例中, 压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎使用有损 压缩算法。在一些情况中,知道数据类型和有时来自用户的许可被要求 使用有损压缩算法。在一些实施例中,压缩不限于协议的净荷。协议自 身的控制字段可以被压缩。在一些实施例中,与对于净荷的使用不同, 压缩引擎238对于控制字賴:使用不同的算法。
0084在一些实施例中,压缩引擎238在网络堆栈267的一个或 者多个层处压缩。在一个实施例中,压缩引擎238在传输层协议处压缩。 在另一个实施例中,压缩引擎238在应用层协议处压缩。在一些实施例 中,压缩引擎238在层2-4协议处压缩。在其他实施例中,压缩引擎238 在层5-7处压缩。在又一个实施例中,压缩引擎238压缩传输层协议和 应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7 协议。
0085在一些实施例中,压缩引擎238使用基于存储器压缩、基 于高速緩存压缩或者基于盘压缩,或者其任一组合。由此,压缩引擎238 可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用保存在 诸如RAM的存储器中的数据的历史。在另一个实施例中,压缩引擎238 使用保存在诸如处理器的L2高速缓存的高速缓存中的数据的历史。在其 他实施例中,压缩引擎238使用保存到盘或者存储位置的数据的历史。 在一些实施例中,压缩引擎238使用分层的基于高速緩存、基于存储器和基于盘的数据历史。压缩引擎238可以首先使用基于高速緩存的数据 来确定一个或者多个数据匹配用于压缩,并且随后可以检查基于存储器 的数据来确定一个或者多个数据匹配用于压缩。在另一个情况中,压缩
引擎238在检查基于高速緩存和/或基于存储器的数据历史之后可以检查
盘存储用于数据匹配来压缩。
0086在一个实施例中,多协议压缩引擎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欺骗协议。
0087因而,多协议压缩引擎238为经由桌面客户机以及甚至移 动客户机访问应用的用户加速性能,所述桌面客户机例如微软Outlook 以及诸如由诸如Oracle、 SAP和Siebel的通用的企业应用所启动的任意 客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一些实施 例中,通过与访问网络堆栈267的分组处理引擎240结合在一起,多协 议压缩引擎238可以压缩由传输层协议所携带的任意一种协议,诸如任 意应用层协议。
LAN/WAN纟企测器
0088LAN/WAN检测器238包括用于自动检测慢侧连接(例如诸如 内联网的广域网(WAN)连接)和相关端口 267以及快侧连接(例如局域网(LAN)连接)和相关端口 267的任一逻辑、商业规则、功能或者操作。 在一些实施例中,LAN/WAN检测器2 38监控设备2 00的网络端口 267上的 网络业务量来4企测同步分组,有时称之为"标记,,网络分组。该同步分 组识别网络分组的类型或者速度。在一个实施例中,同步分组识别WAN 速度或者WAN类型的连接。LAN/WAN检测器238还识别对标记的同步分组 的确认分组的接收以及其在哪个端口上被接收。设备200随后配置其自 身来操作标记的同步分组到达的所识别的端口 ,使得该端口上的速度被 设置为与该端口连接的网络相关联的速度。其它端口随后被设置为和该 端口连接的网络相关联的速度。
0089此处为了讨论方便,"慢"侧可以参考关于与诸如因特网的 广域网(WAN)的连接,并且操作在WAN的网络速度。同样,"快"侧可 以参考关于与局域网(LAN)的连接并且操作在LAN的网络速度。然而, 注意到网络中"快"和"慢"侧可以根据每个连接而改变并且是针对网 络连接的速度或网络拓朴的类型的相对术语。这样的配置可以用在复杂 网络拓朴中,其中网络仅在和相邻网络比较时是"快"或"慢"的并且 在某种意义上不是绝对的。
0090在一个实施例中,LAN/WAN检测器238可以被用来允许设备 自动发现其连接的网络。在另一个实施例中,LAN/WAN检测器238可以被 用来检测部署在网络104中的第二设备200'的存在或者缺失。例如,根 据图1A的操作中的自动发现机制起到以下作用设备200和200'被置 于和联接客户机102和服务器106的连接相一致。设备200和200,处于 连接两个LAN的诸如内联网的低速链路的端点。在一个示例实施例中, 设备200和200,的每一个包括两个端口, 一个连接到"较低"速链路并 且另一个连接到诸如LAN的"较高"速链路。到达一个端口的任一分组 被复制到其它端口。因此,设备200和200,每一个被配置为起到两个网 络104之间的桥接器的作用。
0091当诸如客户机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,此时互相察觉并且该连接可以被适当加速。
0092进一步到LAN/WAN 4企测器238的操作,描述用于4吏用SYN 分组来4企测网络的"快"和"慢"侧的方法或者过程。在客户机102和 服务器106之间的传输层连接建立期间,设备200经由LAN/WAN检测器 238确定SYN分组是否用确认(ACK)来被标记。如果其被标记,则设备 200将接收标记的SYN分组(SYN-ACK)的端口识别或者配置为"慢"侧。 在一个实施例中,设备200可选地在将分组复制到其它端口之前将ACK 标记从分组移除。如果LAN/WAN检测器238确定分组未被标记,则设备 200将接收未标记的SYN分组的端口识别或者配置为"快"侧。设备200 随后用ACK来标记SYN分组并且将分组复制到其它端口 。
0093在其他实施例中,LAN/WAN检测器238使用SYN-ACK分组来 检测网络的快和慢侧。设备200经由LAN/WAN检测器238确定是否用确 认(ACK)标记了 SYN-ACK分组。如果其被标记,则设备200将接收标记 的SYN分组(SYN-ACK)的端口识别或者配置为"慢"侧。在一个实施例 中,设备200可选地在将分组复制到其它端口之前将ACK标记从分组移 除。如果LAN/WAN检测器238确定分组未被标记,则设备2QQ将接收未 标记的分组的端口识别或者配置为"快"侧。LAN/WAN检测器238确定 SYN分组是否被标记。如果SYN分组未被标记,则设备200将分组复制到 其它端口。如果SYN分组被标记,则设备在将SYN-ACK分组复制到其它 端口之前标i己该SYN-ACK端口 。
0094设备200、 200,可以增加、插入、修改、附加或者以其他 方式提供TCP选项中的任意信息或者数据来提供关于网络连接、网络业 务流或者设备200的配置或者操作的任意信息、数据或者特征。以此方 式,设备2Q0不仅将其存在通知给另一个设备200'或者标记较高或者较低的速度连接,设备200还经由TCP选项首部来提供关于设备或者连接 的附加信息和数据。TCP选项首部信息可以用于或者被设备用于控制、管 理、优化、加速或者改进通过设备200的网络业务流,或者以其他方式 配置其自身或者网络端口的操作。
但是LAN/WAN检测器238还可以被用于将设备200的任意类型的功能、 逻辑或者操作应用到网络业务量的端口、连接或者流。更具体地,无论 装置在何时在不同端口上执行不同的功能,都可以发生端口的自动分配, 其中,在单元操作期间可以做出对任务的端口分配,和/或由设备200可 以发现每一端口上的网络段的性质。
流控制
0096流控制器220包括用于优化、加速或者以其他方式改进网 络分组的传输层通信的性能、操作或者服务质量或者传输层处的分组的 递送的任意逻辑、商业规则、功能或者操作。流控制器有时也称之为流 控制模块,其调节、管理和控制数据传输率。在一些实施例中,该流控 制器220被部署在网络104中的带宽瓶颈处或与其连接。在一个实施例 中,该流控制器220有效地调节、管理和控制带宽使用或者利用。在其 他实施例中,流控制模块还可以部署在等待时间转变(低等待时间到高 等待时间)的网络上和具有介质损失的链路(诸如无线或者卫星链路) 上的点处。
0097在一些实施例中,流控制器220可以包括用于控制网络传 输量的接收率的接收器侧流控制模块和用于控制网络分组的传输率的发 送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧 流控制模块并且第二流控制器220,包括发送器侧流控制模块。在一些实 施例中,第一流控制器220部署在第一设备200上并且第二流控制器220, 部署在第二设备200'上。同样,在一些实施例中,第一设备200控制接 收器侧上的数据流,并且第二设备200'控制来自发送器侧的数据流。在 又一个实施例中,单个设备200包括用于传播通过设备200的网络通信 的接收器侧和发送器侧的流控制。0098在一个实施例中,流控制模块220被配置为允许瓶颈处的 带宽更充分利用,并且在一些实施例中,不能过度利用。在一些实施例 中,流控制模块220透明地緩沖(或者重新緩冲由例如发送器已经緩冲 的数据)在具有相关联的流控制模块220的节点之间传递的网络会话。 当会话传递通过两个或者多个流控制模块220,则一个或者多个流控制模 块控制会话的速率。
0099在一个实施例中,流控制模块200被配置具有涉及瓶颈带 宽的预定数据。在另一个实施例中,流控制模块220可以被配置为检测 瓶颈带宽或者其关联数据。接收器侧流控制模块220可以控制数据传输 率。接收器侧流控制模块220通过将传输率限制转发到发送器侧流控制 模块220来控制发送器侧流控制模块220,例如数据传输率。在一个实施 例中,接收器侧流控制模块220到在由例如服务器106的接收器发送到 诸如客户机102的发送器的确认(ACK)分组(或者信号)上捎带 (piggyback )这些传输率限制。接收器侧流控制模块220响应于发送器 侧流控制模块220'发送的速率控制请求来做这一工作。来自发送器侧流 控制模块220,的请求可以在发送器106发送的数据分组上被"捎带"。
0100在一些实施例中,流控制器220掌控、调整、模拟、改变、 改进或者以其他方式调节传输层协议的行为来提供传输层的递送、数据 率和/或带宽利用的改进的性能或者操作。流控制器220可以在传输层实 现多个数据流控制技术,包括但不限于l)预确认,2)窗口虚拟化,3) 重新拥塞技术,3)本地重传输技术,4)波前检测和消除二义性。5)传 输控制协议选择性确认,6)事务边界检测技术和7)重新分包。
0101尽管发送器总的在此处描述为客户机102以及接收器为服 务器106,但是发送器也可以是诸如网络104上服务器106或者任一计算 装置100的任一端点。同样,接收器也可以是网络104上客户机102或 者任意其它计算装置。
预确认
0102对于预确认流控制技术总的来说,在一些实施例中,流控 制器220处理发送器的确认和重新传输,有效终接发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的将设备200布置到
网络架构中的一个可能的部署。在此示例实施例中,发送计算机或者客
户机102在网络104上例如经由转换器发送数据,其确定该数据发往VPN 设备205。由于所选择的网络拓朴,发往VPN设备205的所有数据传播通 过设备200,使得设备200可以将任一必要的算法应用到该数据。
0103进一步在该例中,客户机102发送由设备200接收的分组。 当设备200接收从客户机102经由VPN设备205发送到接收者的分组时, 设备200保留分组的备份并且将分组向下游转发到VPN设备205。设备 200随后产生确认分组(ACK)并且将ACK分组发送回客户机102或者发 送端点。该ACK即预确认使得发送器102相信分组已经被成功递送,释 放发送器的资源用于随后的处理。在请求分组重新传输的事件中,设备 200保留分组数据的备份,使得发送器102不必处理数据的重新传输。这 个确认的早期产生可以称为"预确认"。
0104如果需要分组的重新传输,设备200将分组重新传输到发 送器。设备200可以确定当发送器处于传统系统中时是否需要重新发送, 例如,在预定时间之后对于该分组如果没有接收到确认信息则确定分组 丢失。对此,设备200监控例如服务器106(或者任意其它下游网络实体) 的接收端点产生的确认,使得其可以确认是否分组已经成功递送或者需 要重新传输。如果设备200确定分组已经成功发送,则设备200能够自 由丟弃所保存的分组数据。设备200还可以禁止将已经由发送端点接收 的分组的确认进行转发。
0105在上述实施例中,设备200经由流控制器220通过预确认 (也称之为"预告知")的递送来控制发送器102,如同设备200是接收 端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设 备200包括用于对发送端点提供过流控制的机制。无需过流控制,因为 设备200保存已经预确认到发送端点但还没有确认为由接收端点接收的 分组,所以设备200能够用完存储器。在发送器102发送分组到设备200 快于设备向下游转发分组的情况中,设备200中可用于保存未确认分组 数据的存储器可以快速填充。用于过流控制的机制允许设备200控制来 自发送器102的分组的传输以避免该问题。0106在一个实施例中,设备200或者流控制器包括固有的"自 同步"(self-clocking)过流控制机制。该自同步归因于这样的顺序 设备200可以被设计为将分组发送到下游并且将ACK发送到发送器102 或者106。在一些实施例中,设备200并不预确认分组,直到其向下游发 送分组为止。以此方式,发送器102以设备200能够发送分组而不是设 备200能够从发送器100接收分组的速率接收ACK。这有助于调节来自发 送器102的分组的传输。
窗口虚拟化
0107设备200可以实现的另一个过流控制机制是使用TCP窗大 小参数,其告知发送器接收器允许发送器填满多少緩冲器。预确认中的 非零窗大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继 续将数据递送到设备,而零窗大小禁止进一步的数据传输。相应地,设 备200可以例如当设备200的緩冲器变满时通过适当地设置每一预确认 中的TCP窗大小来调节来自发送器的分组的流量。
0108另 一 项用来降低该附加开销的技术是应用滞后作用 (hysteresis )。当设备200将数据递送到较慢侧时,设备200中的过流 控制机制可以在发送非零窗公布到发送器之前要求可用的最小数量的空 间。在一个实施例中,设备200在发送非零窗分组之前等待直到存在最 小的预定数量的分组(诸如四个分组)的可用空间,,非零窗分组诸如是指 示四个分组的窗大小的分组。对于四个数据分组的每个组由于仅两个ACK 分组被发送,而不是对于四个数据分组要发送八个ACK分组,这可以将 开销大概降^f氐到原来的四分之一。
0109设备200或者流控制器220可以用于过流控制的另一个技 术是TCP延迟ACK机制,其跳过ACK来降低网络业务量。TCP延迟ACK自 动延迟ACK的发送,直到接收到两个分组或者直到发生固定的超时为止。 该机制单独导致开销减半,此外,通过增加分组的数量高于两个,实现 附加的开销降低。但是仅延迟ACK本身不足以控制过流,并且设备200 还可以使用ACK上公布的窗机制来控制发送器。当这样操作时,在一个 实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。
0110在一个实施例中,流控制220不对一组分组的最后一个分 组进行预确认。通过不对最后一个分组或者该组的分组的至少一个预确 认,设备避免对一组分组的错误确认。例如,如果设备将发送最后一个 分组的预确认并且该分组随后丢失,则发送器在分组没有被递送时已经 被欺骗认为其被递送。考虑到分组已经递送,则发送器丟弃该数据。如 果设备还损失该分组,则不能重新传输该分组到接收者。通过不对一组 分组的最后一个分组预确认,则发送器直到该分组被递送时才将其丢弃。
0111在另一个实施例中,流控制器220可以使用窗虚拟化技术 来控制流速或者网络连接的带宽利用。虽然根据检查诸如RFC 1323的传 统文献其可能不是直接明显的,但是存在用于诸如TCP的传输层协议的 发送窗。发送窗由于消耗緩冲器空间(尽管在发送器上),所以和接收窗 相同。发送器的发送窗包括接收器还没有确认的应用发送的所有数据。 在要求重传输的情况中该数据必须保留在存储器中。由于存储器是共享 资源,所以一些TCP堆栈实现限制了该数据的大小。当发送窗满时,应 用程序尝试发送更多的数据导致阻断应用程序,直到空间可用为止。随 后的确认接收将释放发送窗存储器并且不阻断应用程序。该窗大小公知 为一些TCP实现中的套接字緩沖器大小。
0112在一个实施例中,流控制模块220被配置为提供对增加的 窗(或者緩沖器)大小的访问。该配置还可以称为窗虚拟化。在包含作 为传输层协议的TCP的实施例中,TCP首部可以包括对应窗范围的位字符 串。在一个实施例中,"窗,,可以在发送、接收或者二者的上下文中提及。
0113窗虚拟化的一个实施例是将预确认设备200插入到TCP会 话中。参考图1A或1B的任意一个环境,建立例如客户机102 (为讨论方 便,现在称为源节点102)的源节点和例如服务器106 (为讨论方便,现 在称之为目标节点106)的目标节点之间数据通信会话的初始化。对于 TCP通信,源节点102最初将同步信号("SYN")通过其局域网104传输 到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首 部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
Oll4设备200经由流控制模块220提供窗(或者緩冲器)来允许会话内的增加的数据緩沖能力,尽管具有例如16k字节的小緩冲器大
小的端节点。然而,RFC 1 323要求窗缩放大于64k字节的任何緩冲器大 小,其必须在会话初始化(SYN、 SYN-ACK信号)时设置。此外,窗的缩 放对应于数据路径中的最小公分母(common denominator),经常是具有 小的緩沖器大小的端节点。该窗比例(window scale)通常是0或者1 的比例,其对应于直到64k或者128k字节的緩冲器大小。注意到,由于 窗大小被限定为随窗比例改变的每一分组中的窗字段,则窗比例建立用 于该緩冲期的上限,但并不保证该緩冲器实际上就那么大。每个分组指 示窗字段中接收器处当前可用的緩沖器空间。
0115在使用窗的虚拟技术缩放的实施例中,在当第一流控制模 块220从源节点102接收SYN信号(或者分组)的连接建立(即,会话 初始化)期间,流控制模块220将源节点102 (其是之前的节点)的窗比 例或者如果之前的节点的比例丢失则为窗比例保存0值。第一流控制模 块220还在SYN-FCM信号中^f奮改比例,例如将比例/人0或者1增加到4。 当第二流控制才莫块220接收SYN信号时,其将来自第一流控制信号的增 加的比例保存并且将SYN信号中的比例重置为源节点103的比例值以用 于传输到目标节点106。当第二流控制器220接收到来自目标节点106的 SYN-ACK信号时,其将来自目标节点106比例(例如,0或者1)的比例 保存并且将其^f參改为与SYN-ACK-FCM信号一起发送的增加的比例。第一 流控制节点220接收并且记录所接收的窗比例并且将发送返回源节点102 的窗比例修订为下降到例如0或者1的初始比例。基于上面连接建立期 间的窗变化会话,会话的例如TCP分组的每一个随后的分组中的窗字段 必须根据窗变化转换而改变。
0116如上所述,窗比例表示出大于64k的緩冲器大小,并且可 以不需要窗虚拟化。因此,窗比例的变化可以用于表示每一个流控制模 块220中的增加的緩沖器容量。该缓冲器容量的增加可以被称为窗(或 者緩冲器)虚拟化。该緩冲器大小的增加允许更大的分组从各自的端节 点102和106进出。注意到,TCP中的缓沖器大小典型地以字节表示,但 是为了讨论方便由于"分组"和虛拟化相关,在此处描述中可以使用"分 组"。0117通过示例,描述流控制器220执行的窗(或者緩沖器)虚
拟化。在此例中,源节点102和目标节点106配置为与具有受限的16k 字节的緩冲器容量的传统端节点相同,其大约等于IO个数据分组。典型 地,端节点102、 106在下一组分组能够传输之前必须等到该分组被传输 并且收到确认。在一个实施例中,使用流控制模块220中的增加的緩冲 器容量,当源节点103发送其数据分组时,第一流控制模块220接收该 分组,将该分组保存在其例如512个分组容量的较大容量的緩冲器中, 并且立即发送指示分组接收("REC-ACK")的确认信号回到源节点102。 源节点102可以随后"清除"其当前緩冲器,将10个新的数据分组载入 緩冲器,并且将这些传输到第一流控制模块220上。在此,第一流控制 模块220发送REC-ACK信号回到源节点,并且源节点102清除其緩冲器 并且对其载入10个更新的分组用于传输。
0118当第一流控制模块220接收到来自源节点的数据分组时, 其相应地将该数据分组载入到缓冲器中。当其准备好时,第一流控制模 块220可以开始将数据分组传送到第二流控制^i块230,其还具有增加的 緩冲器大小例如来接收512个分组。第二流控制模块220'接收数据分组 并且开始每次传输10个分组到目标节点106。在第二流控制节点220处 接收的来自目标节点106的每一个REC-ACK导致10个更多分组传输到目 标节点106,直到所有的数据分组被传送。因此,本发明能够通过利用装 置之间的流控制模块220、 220,的较大的緩冲器来增加源节点(发送器) 102和目标节点(接收器)106之间的传输量。
0119注意到通过之前描述的数据的"预确认"传输,发送器(或 者源节点102 )被允许传输超过不需要预确认的可能的更多的数据,因此 造成更大的窗大小。例如,在一个实施例中,该技术有效地用在流控制 模块220、 220,处于缺乏大窗的节点(例如,源节点102或者目标节点 106)附近的时候。
重新拥塞
0120流控制器220的另一个技术或者算法称之为重新拥塞。标 准的TCP拥塞避免算法在面对特定网络条件时公知地表现差,包括大的RTT(往返时间)、高分组损失率以及其它。当设备200检测到诸如长 的往返时间或者高的分组损失的拥塞条件时,设备200插入、代入更好 地适合特定网络条件的替代的拥塞避免算法。在一个实施例中,该重新 拥塞算法使用分组来有效终接发送器和接收器之间的连接。设备200随 后使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算 法可以依赖于TCP连接的特性。设备200监控每一个TCP连接,在特征 在于关于不同的维度,选择适合用于当前特征的重新拥塞算法。
0121在一个实施例中,当4企测到通过往返时间(RTT)限制的TCP 连接时,作为多个TCP连接运行的重新拥塞算法被应用。每个TCP连接 操作在其自身性能限度内,但是集合的带宽实现了更高的性能水平。该 机制中的一个参数是所应用的并行连接的数量(N )。 N和连接束的值过大 实现超过其合理共享的带宽。N和连接束的值过小实现低于其合理共享的 带宽。建立"N"的一个方法依赖于监控分组损失率、RTT和实际连接的 分组大小的设备200。这些数字插入TCP响应曲线方程来提供本配置中单 个TCP连接的性能的上限。如果连接束中每个连接正获得与计算到上限 的基本相同的性能,则应用附加的并行连接。如果当前束正获得低于上 限的性能,则降低并行连接的数量。以此方式,由于单独的连接束包含 不超过其所需的并行,则维持系统的总的共享,来消除协议自身强加的 限制。进一步,每个单独的连接保留TCP兼容性。
0122建立"N,,的另一个方法是使用诸如TCP "Vegas"算法或者 TCP "稳定Vegas"算法的并行流控制算法。在此方法中,和连接束中的 连接相关的网络信息(例如,RTT、损失率、平均分组大小等等)被集合 并且应用到替代流控制算法。该算法的结果相应被分布到控制他们数量 (即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP 拥塞避免算法。
0123在另一个实施例中,并行束中的单独连接被虚拟化,即实 际上不建立单独的TCP连接。事实上拥塞避免算法仍被修改为好像存在N 个并行连接来运行。该方法的优点呈现为如同单个连接一样传输网络节 点。因此,通过重新拥塞算法而不会影响这些节点的QOS、安全性和其他 监控方法。在又一个实施例中,并行束中的单独连接是真实存在的,即
52独立的。TCP连接被建立用于束中的并行连接的每一个。不必修改用于每
一个TCP连接的拥塞避免算法。
重新传输
0124在一些实施例中,流控制器220可以应用本地重传输技术。 用于实现预确认的一个原因是准备发送到高损链路(例如无线)。在这些 实施例中,预确认设备200或者流控制模块220最有益地位于无线链路 "之前"。这允许要进行的重传输更接近于高损链路,将重传输负荷从网 络的剩余部分移除。设备200可以提供本地重传输,在此情况中,由于 链路失败而丢失的分组由设备200直接重传输。由于这消除了诸如服务 器106的端节点上的重传输负担和任一网络104的基础结构,所以这是 有益的。利用设备200提供本地重传输,丢失的分组可以被重传输通过 高损链路而不需要必须由端节点重传输并且来自端节点的数据传输率对 应下降。
0125用于实现预确认的另 一个原因是避免接收超时(RTO )惩罚。 在标准TCP中,存在多种情况导致RTO,即使是成功接收传输中的较大百 分比的分组。使用标准TCP算法,RTT窗中丟失多于一个分组有可能会导 致超时。此外,如果重传输分组丟失,则大部分TCP连接经历超时。在 具有高带宽延迟产品的网络中,甚至相对小的分组损失率也会导致频繁 的重传输超时(RTO)。在一个实施例中,设备200使用重传输和超时算 法来避免早期的RTO。设备200或者流控制器220基于每一分组来维持重 传输的计数。每当重传输分组时,计数加一并且设备200继续传输分组。 在一些实施例中,仅有当 一个分组已经被重传输预定次数后后才被宣告 为RTO。
波前纟企测和消除二义性
0126在一些实施例中,设备200或者流控制器220在管理和控 制网络业务量的流时使用波前检测和消除二义性技术。在此技术中,流 控制器220使用传输标识符或者号码来确定是否需要重传输特定数据分 组。通过示例,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例和传输号码相关联。可以理解,由于序列号索引分组中的 数据而传输号码索引该lt据的传输的实例,分组的传输号码与分组的序 列号不相同。传输号码可以是对于该目的可用的任意信息,包括和分组 相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。由 于数据段可以被重传输,则不同的传输号码可以和特定序列号相关联。
0127由于发送器传输数据分组,所以发送器保持数据分组传输
的所确认的实例的数据结构。数据分组传输的每个实例由其序列号和传 输号码索引。通过保持对于每个分组的传输号码,发送器保留数据分组
的传输的顺序。当发送器接收到ACK或者SACk时,发送器确定和所指示 的接收器(在所接收的确认中)已经接收的分组相关联的最高传输号码。 具有最低传输号码的任一未完成的未确认分组被々支设丢失。
0128在一些实施例中,当到达分组已经被重传输时,发送器呈 现出不明确的状态标准的ACK/SACK没有包含足够的信息来允许发送器 确定到达分组的传输已经触发该确认。从而接收到不明确确认之后,发 送器将确认消除二义性来将其和传输号码相关联。在不同的实施例中, 多个技术的其中之一或者组合可以被用来解决该不确定性。
0129在一个实施例中,发送器包括具有所传输的数据分组的标 识符,并且接收器返回该标识符或者其中具有确认的函数。标识符可以 是时间戳(例如在RFC 1323中描述的TCP时间戳)、序列号、可以被用 来在分组传输的两个或者多个实例之间解析的任一其他信息。在TCP时 间戳选项被用来消除确认的二义性的实施例中,每一分组使用高达32位 唯一的信息来标记。接收到数据分组时,接收器将此唯一信息回送到具 有该确认的发送器。发送器确保最初发送的分组和其重传输的一个或者 多个版本包含对于时间戳选项的不同值,允许明确地消除ACK不确定性。 发送器可以将该唯一信息保存在例如用来保存所发送数据分组的状态的 数据结构中。由于该技术与工业标准相兼容并且因此不会遇到或者遇到 很少互操作性的问题,所以该技术是有益的。然而,该技术在一些实现 中可以要求十个字节的TCP首部空间,降低了网络上的有效吞吐率并且 减少了可用于其它TCP选项的空间。
0130在另一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项类似的方式来消除二义性。发送器
安排该分组的最初的和重传输形式的的ID字段值,以使在IP首部中具 有不同的ID字段。在接收器或者其中代理装置接收到数据分组时,接收 器将ACK分组的ID字段设置为触发ACK的分组的ID字段的函数。由于 该方法不需要附加的数据发送,保持网络和TCP首部空间的有效性,所 以该方法是有益的。所选择的功能应该提供消除二义性的高度可能性。 在优选实施例中,发送器选择具有最高有效位设置为Q的IP ID值。当 接收器响应时,IP ID值被设置为具有最高有效位设为1的同样的IP ID 值。
0131在另一个实施例中,和非模糊性确认相关联的传输号码被 用来消除不确定确认的二义性。该技术基于的原理是由于该两个分组在 时间上更接近地传输,则对于两个分组的确认将倾向于时间上更接近地 接收。由于对于这样的分组所接收的确认不能轻易地与传输号码相关联, 所以没有重传输的分组不会导致不确定性。因此,对于在时间上接近于 已知确认的多接收的不确定确认,比较这些已知的传输号码和可能的传 输号码。发送器将不确定确认的传输号码和最近已知的所接收的传输号 码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如 果接收到数据分组1的确认并且最后所接收的确认是用于数据分组5,发 送器通过假设数据分组1的第三实例所导致的确认来解析该不确定性。
选择性确认
0132设备200或者流控制器220的另一个技术是实现传输控制 协议选择胜确认或者TCP SACK的实施例来确定哪些分组已经接收到或者 没有接收到。该技术允许发送器明确确定已经由接收器接收的一分组列 表以及没有接收到的一精确分组列表。可以通过修改发送器和/或接收器 或者通过将发送器和接收器侧流控制模块220插入到发送器和接收器之 间的网络路径中来实现该功能。参考图1A或者图1B,例如客户机102的 发送器被配置为通过网络104将数据分组传输到例如服务器106的接收 器。作为响应,接收器将称之为SACK分组的TCP选择胜确认选项返回给 发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持一个列表或者其它适合的数据结构, 些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放
弃(left-off )的指针,其包括对列表的引用并且指示从之前产生的SACK 分组的放弃点。
0133当接收到数据分组时,接收器产生SACK分组并将其传输回 到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保 持序列号的范围来指示一组已接收的数据分组。接收器使用包括触发 SACK分组的登陆(landing)分组的序列号的范围来填充SACK分组的该 第一字段。剩余可用的SACK字段使用来自所接收分组的列表的序列号的 范围填充。由于列表中的范围多于可以被载入SACK分组的,则接收器使 用放弃指针来确定哪个范围被载入SACK分组。接收器从分类的列表连续 插入SACK范围,从指针索引的范围开始并且在列表持续向下,直到消耗 完SACK分组的TCP首部中的可用SACK范围空间。如果到达末端,则接 收器环绕到列表的开始。在一些实施例中,两个或者三个附加的SACK范 围可以被增加到SACK范围信息。
0134一旦接收器产生SACK分组,则接收器将确认发送回发送器。 接收器随后在列表中将放弃指针前进一个或者多个SACK范围项。例如, 如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个 SACK范围。当所推进的放弃指针达到列表的末端,则指针被重置为列表 的开始,有效地围绕已知所接收范围的列表。将该列表围绕使得系统可 以执行得好,甚至在SACK分组大的损失的情况下,这是由于一旦列表被 围绕,则由于丢失的SACK分组导致的未被通信的SACK信息最终被通信。
0135因此可以理解,SACK分组可以通信关于接收器的情况的多 个细节。第一,SACK分组指示在SACK分组产生时接收器已经接收该SACK 信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指 示接收器已经接收这些范围中的数据分组。SACK信息还暗示接收器在 SACK分组的产生时没有接收落入SACK信息的第二和随后的字段之间的任 意一个数据分组。本质上,SACk信息中的第二和随后的范围之间的范围 是所接收数据中的"孔",其中已知的未被递送的数据。从而,使用该方法,当SACK分组具有足够空间来包括多于两个的SACK范围,接收器可 以向发送器指示还没有由接收器接收的数据分组的范围。
0136在另一个实施例中,发送器使用之上描述的SACK分组结合 上述重传输技术来假设数据分组已经被递送到接收器。例如,当重传输 算法(使用传输号码)宣告分组丟失,则发送器认为该分组仅是条件性 丢失,有可能识别该分组接收的SACK分组丢失,而不是数据分组本身丟 失。发送器因此将该分组增加到潜在丟失的分组的列表,称之为假定丢 失的列表。每当SACK分组到达,来SACK分组的数据的已知丟失范围和 假定丢失列表中的分组相比较。包括已知丟失的数据的分组被宣告实际 丟失并且被随后重传输。以此方式,组合这两个方案来给予发送器关于 分组已经丟失并且需要重传输的更好的信息。
事务边界检测
0137在一些实施例中,设备200或者流控制器220应用称之为 事务边界检测的技术。在一个实施例中,该技术适合于兵乓(ping-pong ) 表现的连接。在TCP层,乒乓行为是当一个通信器例如发送器发送数据 并且随后等待来自另一个通信器例如接收器的响应。乒乓行为的例子包 括远程程序调用、HTTP和其他。以上描述的算法使用重传输超时来恢复 和事务相关的最后的分组的丟失。由于在一些实施例中TCP RT0机制极 端粗略,例如在所有情况中要求最小一秒的值,差的应用行为在这些情 况中可以看到。
0138在一个实施例中,数据的发送器或者耦合到发送器的流控 制模块220检测所发送数据中的事务边界。在检测到事务边界时,发送 器或者流控制模块220发送附加的分組,其接收产生来自于接收器的附 加的ACK或者SACK响应。附加分组的插入优选地限制到改进的应用响应 时间和网络能力利用之间的平衡。所插入的附加分组的数量可以根据和 该连接相关的当前损失率来选择,对于越高损失率的连接选择更多的分 组。
0139检测事务边界的一个方法是基于时间的。如果发送器已经 发送数据并且停止,则在一段时间之后发送器或者流控制模块200宣告
57事务边界。这可以和其他技术相组合。例如,通过发送器在TCP首部中
设置PSH (TCP进栈)位可以指示事务边界。随之,将基于时间的方法和 这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在 另一个技术中,如果发送器或者流控制模块22G理解应用协议,其可以 解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于 任一基于时间的机制使用此最后的行为。
0140响应于检测事务边界,发送器或者流控制模块220将附加 的数据分组传输到接收器来从其引发确认。从而附加数据分组应该使得 接收器将响应于接收数据分组来至少产生ACK或者SACK。在一个实施例 中,简单地重传输事务的最后一个或者多个分组。相比于仅发送哑元数 据分组,如果最后一个或者多个分组已经丢失,这就具有重传输所需数 据的增加的益处。在另一个实施例中,发送最后一个或者多个分组的片 段,允许发送器来消除来自于他们最初分组的这些分组到来的二义性。 允许接收器来避免错误的搞乱任一重新排序自适应算法。在另一个实施 例中,任意数量的公知的前向纠错技术可被用来产生附加的数据用于插 入的分组,允许重新构造接收器处丢失的或者以其他方式失败的数据。
0141在一些实施例中,当事务中的最后一个分组的确认丟失时, 此处描述的边界检测技术有助于避免超时。当发送器或者流控制模块220 接收用于这些附加数据分组的确认时,发送器可以从这些附加确认来确 定是否最后一个分组已经接收或者需要重发送,从而避免超时。在一个 实施例中,如果最后的分组已经接收到但是它们的确认丢失,则流控制 模块220产生用于该数据分组的确认,并且将确认发送给发送器,从而 告知发送器数据分组已经递送。在另一个实施例中,如果最后的数据分 组还没有接收到,则流控制模块220发送一个分组给发送器来引发发送 来重发送丟失的数据分组。
重新分包
0142在又一个实施例中,设备200或者流控制器220应用重新 分组技术来改进传输层网络业务量的流。在一些实施例中,TCP的性能和 分组大小成比例。因此增加分组大小能改进性能,除非其引发实质的增加的分组损失率或者其他的非线性效应,例如IP分片(fragmentation )。 通常,有线介质(诸如铜缆或者光纤)具有极低的误码率,低到可以忽 略不计。对于这些介质,在分片发生之前,最大化分组大小可以是有益 的(通过基本传输介质的协议来限制最大化分组大小)。但是对于具有较 高损失率的传输介质(例如,诸如WiFi等的无线技术或者诸如配电线网 络等的高损环境),由于介质引发的错误导致整个分组丟失(即,介质引 发的错误超过对于该介质的标准纠错码的能力),增加了分组丟失率,从 而增加分组大小可以导致较低传输率。分组损失率中的显著大的增加实 际上否定了增加的分组大小的任一性能益处。在一些情况中,对于TCP 端点来选择最优的分组大小可能是困难的。例如,最优的分组大小根据 每个链路的性质在通过传输路径时改变。
0143通过将设备200或者流控制模块220插入到传输路径中, 流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在 一个实施例中,设备200或者流控制器220将具有连续数据的分组重新 分组为较小数量的较大的分组。在另一个实施例中,设备200或者流控 制器220通过一列大的分组的部分分为大量的较小的分组而将分组重新 分组。在其他实施例中,设备200或者流控制器220监控链路特征并且 通过重新组合来调整分组大小以改进吞吐量。
QoS
0144仍旧参考图2A,在一些实施例中,流控制器220可以包括 QoS引擎236,也称为QoS控制器。在另一个实施例中,例如设备200和 /或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。 QoS引擎236包括用于执行一个或者多个服务质量(QoS)技术改进任一 网络连接的性能、操作或者服务质量的任意逻辑、商业规则、功能或者 操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或 者连接提供不同特性的网络业务量控制和管理机制。在其他实施例中, QoS引擎236为用户、应用、数据流或者连接控制、维持或者确保特定水 平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或者连 接控制、维持或者确保特定部分的带宽或者网络容量。在一些实施例中,QoS引擎236监控性能的实现水平或者对应于用户、应用、数据流或者连 接的服务质量,例如数据率和延迟。响应于监控,QoS引擎236动态地控 制或者调整网络分组的调度特性来实现期望水平的性能或者服务质量。
0145在一些实施例中,QoS引擎236根据一个或者多个服务的等 级或者水平来优先排序、调度和传输网络分组。在一些实施例中,服务 的等级或者水平可以包括l)最好的努力,2)控制的负载,3)担保或 者4)性质。对于服务的最好结果等级,设备200作出合理的努力来递送 分组(标准服务水平)。对于服务的控制的负载等级,设备200或者QoS 引擎236逼近传输介质的标准的分组错误损失或者逼近小负载网络条件 中的最好努力的服务的行为。对于服务的担保等级,设备200或者QoS 引擎236保证该能力来在连接期间以确定速率传输数据。对于服务的性 质等级,设备200或者QoS引擎236使用性质服务等级用于请求或者期 望优先排序的业务量但不能保证资源需求或者服务水平的应用、用户、 数据流或者连接。在这些情况中,设备200或者QoS引擎236基于QoS 引擎236的任意逻辑或者配置或者基于商业规则或者策略来确定服务等 级或者优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、 295'执行的一个或者多个策略来优先排序、调度和传输网络分组。
协议力口速
0146协议加速器234包括用于优化、加速或者以其他方式改进 一个或者多个协议的性能、操作或者服务质量的任意逻辑、商业规则、 功能或者操作。在一个实施例中,协议加速器234在网络堆栈的层5-7 处加速任意应用层协议。在其他实施例中,协议加速器234加速传输层 或者层4协议。在一个实施例中,协议加速器234加速层2或者层3的 协议。协议加速器234被配置、构建或者设计来根据数据类型、协议的 特征和/或行为来优化或者加速一个或者多个协议的每一个。在另一个实 施例中,协议加速器234被配置、构建或者设计来改进用户体验、响应 时间、网络或者计算机负载和/或关于协议的网络或者带宽利用。
0147在一个实施例中,协议加速器234被配置、构建或者设计 来最小化文件系统访问上的WAN等待时间的效应。在一些实施例中,协200880015762.1 用来 改进文件系统访问时间或者对数据和文件的访问时间。在一些实施例中, 协议加速器234优化或者加速NFS (网络文件系统)协议的使用。在另一 个实施例中,协议加速器234优化或者加速文件传输协议(FTP )的使用。0148在一个实施例中,协议加速器234 -陂配置、构建或者设计 来优化或者加速承载净荷或者使用任一类型和形式标记语言的协议。在 其他实施例中,协议加速器234被配置、构建或者设计为优化或者加速 超文本传输协议(HTTP )。在另 一个实施例中,协议加速器234被配置、 构建或者设计为来优化或者加速承载净荷或者以其他方式使用XML(可扩 展标记语言)的十办i义。
透明并且多点布置配置
0149在一些实施例中,设备200和/或网络优化引擎250对于通 过诸如WAN链路的网络连接或链路的任意数据流是透明的。在一个实施 例中,设备200和/或网络设备250以此方式操作通过WAN的数据流是 由任意网络监控、QoS管理或者网络分析工具可识别的。在一些实施例中, 设备200和/或网络优化引擎250不产生任意隧道或者流用于传输可以隐 藏、混淆或者以其他方式是网络业务量不透明的数据。在其他实施例中, 设备200透明操作,其中设备不改变网络分组的任一源和/或目标地址信 息或者端口信息,诸如互联网协议地址或者端口号。在其他实施例中, 设备2 0 0和/或网络优化引擎2 5 0被认为对于网络架构中的网络、应用、 客户机、服务器或者其他设备或者计算装置透明地操作或者运转。也就 是在一些实施例中,设备是透明的,其中网络上的任意装置或者设备的 网络相关配置不必修改来支持设备200。
0150设备200可以以下面的布置配置方式来布置1)串行业务 量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以 与以下的一个或者多个串行布置路由器、客户机、服务器或者另一个 网络装置或者设备。在其他实施例中,设备200可以与以下的一个或者 多个并行布置路由器、客户机、服务器或者另一个网络装置或者设备。 在并行布置中,客户机、服务器、路由器或者其它网络设备可以被配置
61为转发、传送或者传输到设备200或者经由设备200。
0151在串行的实施例中,设备200与路由器的WAN链路串行布 置。以此方式,来自WAN的所有业务量在到达LAN的目标之前传递通过 设备。
0152在代理模式的实施例中,设备200被布置为客户机和服务 器之间的代理装置。在一些实施例中,设备200允许客户机做出到网络 上的资源的间接连接。例如,客户机经由设备200连接到资源,并且设 备通过连接到资源、不同的资源、或者通过从高速緩存服务该资源来提 供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或 者服务器响应,诸如对于此处讨论的任一优化技术。在一个实施例中, 客户机102发送寻址到代理的请求。在一个情况中,代理响应于客户机 来代替或者充当服务器106。在其他实施例中,设备200通过将请求和响 应拦截并透明地转发到客户机和/或服务器,用作为透明代理。不使用客 户机侧配置,设备200可以将客户机请求重定向到不同的服务器或者网 络。在一些实施例中,设备200可以在穿越设备的任一网络业务量上执 行任一类型和形式的网络地址转换,称之为NAT。
0153在一些实施例中,设备200以虚拟串行才莫式配置来布置。 在此实施例中,具有路由或者转换功能的路由器或者网络装置被配置为 转发、路由或者去以其他方式提供发往网络或者设备20G的网络分组。 设备200随后在网络分组上执行任一期望的处理,诸如此处讨论的任一 WAN优化技术。当完成处理时,设备200将处理的网络分组阻转发到路由 器以发送到网络上的目的地。以此方式,设备200可以并行耦合到路由 器,但是仍旧如同设备200串行一样操作。因为分组经由设备通过网络 处理和传输,则该布置模式还透明地提供所保持的源和目标地址以及端 口信息。
端点节点布置
0154尽管网络优化引擎250以上总的结合设备200描述,但是 网络优化引擎250或者其任意部分可以被布置、分布或者以其他方式操 作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或者服务器可以提供此处描述的结合一个或更多设备200或者不结合设备2 0 0的网络优化引擎2 5 0的任 一 系统和方法。
0155现在参考图2B,描述布置在一个或者多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250,并且服务器106可以包括第二网络优化引擎250,,。客户机102和服务器106可以建立传输层连接并且交换穿越或者不穿越设备200的通信。
0156在一个实施例中,客户机102的网络优化引擎250'执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。在另一个实施例中,服务器106的网络优化引擎250',执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。在一些实施例中,客户机102的网络优化引擎250, 和服务器106的网络优化引擎250,'执行此处描述的技术来优化、加速或者以其他方式改进在客户机102与服务器106之间通信的网络业务量的性能、操作或者服务质量。在又一个实施例中,客户机102的网络优化引擎250'结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。仍在另一个实施例中,服务器106的网络优化引擎250,,结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。
C.客户机代理
0157如图2A和2B所示,部署在系统中或者具有设备200或者205的客户机可以包括客户机代理120。在一个实施例中,客户机代理120被用来促进与一个或者多个设备200或者205的通信。在一些实施例中,此处描述的设备2 00或者2 05的任意系统和方法可以经由客户机代理12 0部署、实施或者包含在客户机中。在其他实施例中,客户机代理120可以包括提供诸如端点检测和验证、虚拟专用网络连接和应用流式传输的附加功能性的应用、程序或者代理。在讨论设备200的系统和方法的其
63它实施例之前,将描述客户机代理120的实施例。
0158现在参考图3,描述了客户;fc/L代理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。
0159如同设备200 —样,客户机具有包括任意类型和形式的软件、硬件或者其任一组合的网络堆栈267来提供与网络104的连接性以及与网络104的通信。客户机102的网络堆栈267包括以上结合设备200描述的任一网络堆栈实施例。在一些实施例中,客户机代理120或者其任一部分被设计和构建为和网络堆栈267 —起操作或者结合工作,网络堆栈267是由客户机102的操作系统安装或者以其他方式提供的。
0160在进一步的细节中,客户机102或者设备200 (或者205 )的网络堆栈267可以包括用于接收、获取、提供或者以其他方式访问与客户机102的网络通信相关联的任意信息和数据的任意类型和形式的接口。在一个实施例中,到网络堆栈267的接口包括应用编程接口 (API)。该接口还可以包括任意函数调用、挂钩或过滤机制、事件或回叫机制、或任意类型的连接技术。网络堆栈267经由接口可以接收或提供诸如对象的与网络堆栈267的功能或操作相关的任意类型和形式的数据结构。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、参考或者识别诸如传输层的网络分组的在网络堆栈267的协议层处理的网络分组的一部分。在一
64些实施例中,数据结构325是内核级数据结构,而在其它实施例中,数
据结构325是用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任意数据结构。
0161另外,例如数据链路或网络层的网络堆栈267的一些部分可以在内核模式302中执行或操作,而诸如网络堆栈267的应用层的其它部分执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给应用^^供对网络堆栈267的用户才莫式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可以包括诸如层5-7中的任意一个的网络堆栈267的一个或多个较上的层。在其它实施例中,网络堆栈267的第二部分310b包括诸如层1-4中的任意一个这样的一个或多个较低的层。网络堆栈267的第 一部分310a和第二部分310b中的每一个可以在任意一个或多个网络层处、在用户模式203、内核模式202或其组合中、或者在网络层的任意部分或网络层的接口点或用户模式302和内核模式203的任意部分或接口点处,包括网络堆栈267的任意部分。
0162拦截器350可以包括软件、硬件或软件和硬件的任意组合。在一个实施例中,拦截器350在网络堆栈267中的任一点拦截或者以其他方式接收网络通信,并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所期望、管理或控制的目的地。例如,拦截器350可以拦截第 一 网络的网络堆栈2 6 7的网络通信并发送该网络通信给设备2 0 0以用于在第二网络104上的传输。在一些实施例中,拦截器350包括或者是驱动器,诸如被构造和设计为与网络堆栈267接口和工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处的网络堆栈267的一个或多个层处梯:作。在一个实施例中,拦截器350包括过滤器驱动程序、挂钩机制或任意格式和类型的适当的网络驱动程序接口,所述接口例如经由传输驱动程序接口 (TDI )来接口于网络堆栈的传输层。在一些实施例中,拦截器350接口到诸如传输层的第一协议层以及诸如传输协议层之上的任意层的例如应用协议层的另 一个协议
层。在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS)的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以是小过滤器(min-filter)或迷你端口 (mini-port)驱动程序。在一个实施例中,拦截器350或者其一部分操作于内核模式202中。在另一个实施例中,拦截器350或者其一部分^^喿作于用户;f莫式203中。在一些实施例中,拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分操作于用户模式203中。在其它实施例中,客户机代理120操作于用户模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施例中,拦截器350是诸如应用的用户模式应用或程序。
0163在一个实施例中,拦截器350拦截或者接收任意的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口 (API)调用以对于该位置设置目的地信息,诸如所期望的位置的目的地IP地址和/或端口。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器35 0为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代理120在客户4几102的本地IP地址和端口上进行监听。例如,客户机代理120可以包括在用于重定向的传输层通信的本地IP地址和端口上监听的代理服务。在一些实施例中,客户机代理120随后传达重定向的传输层通信到设备200。
0164在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在另一实施例中,拦截器发送被拦截的DNS请求到设备200以用于DNS解析。在一个实施例中,设备200解析DNS请求并通信DNS响应给客户机代理120。在一些实施例中,设备200解析经由另一设备200'或DNS服务器106的DNS请求。
0165在又一个实施例中,客户机代理120可以包括两个代理120和12(K。在一个实施例中,第一代理120可以包括才喿作于网络堆栈267的网络层的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。
在其它实施例中,第二代理120'可以在传输层操作并拦截传输层通信。在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120'连接或通信被拦截的通信到第二代理120'。
0166客户机代理120和/或拦截器350可以以相对于网络堆栈267的任意其它协议层透明的方式操作于协议层处或与协议层连接。例如,在一个实施例中,拦截器350以相对于诸如网络层的传输层之下的任意协议层以及诸如会话、表示或应用层协议的传输层之上的任意协议层透明地来操作网络堆栈267的传输层或与其连接。这允许网络堆栈267的其它协议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120和/或拦截器350可以与传输层交互或者在其上操作以保护、优化、加速、路由或负载平衡经由诸如TCP/IP之上的任意应用层协议的通过传输层携带的任意协议提供的任意通信。
0167进一步地,客户机代理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。
0168客户机代理120包括流客户机306、收集代理304、 SSL VPN代理308、网络优化引擎250和/加速程序302。在一个实施例中,客户机代理120是由位于Fort Lauderdale, Florida的Citrix Syestems公200880015762. 1
司开发的独立计算架构(ICA)客户机或者其任意部分,并且还被称为ICA
客户机。在一些实施例中,客户机120包括用于将应用/人服务器106流 式传输到客户机102的应用流客户机306。在另一个实施例中,客户机代 理120包括用于执行端点检测/扫描以及为设备200和/或服务器106收 集端点信息的收集代理304。在一些实施例中,客户机代理120包括诸如 网络优化引擎250和加速程序302的一个或者多个网络加速或者优化程 序或者代理。在一个实施例中,加速程序302加速经由i殳备205'的客户 机102和服务器106之间的通信。在一些实施例中,网络优化引擎250 提供此处讨论的WAN优化技术。
0169流客户机306是用于接收和执行来自于服务器106的流式 传输的应用的应用、程序、进程、服务、任务或可执行指令集。服务器 106可以将一个或多个应用数据文件流式传输到流客户机306,以用于在 客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。 在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到 流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和 存储在诸如CAB、 ZIP、 SIT、 TAR、 JAR或其它档案(archive)的档案文 件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives ) 应用文件,并发送所述文件到客户机102。在另一个实施例中,客户机 102解压缩、解封装或解档应用文件。流客户机306动态地安装应用或其 中的一部分,并执行应用。在一个实施例中,流客户机306可以是可执 行程序。在一些实施例中,流客户机306可以启用另一个可执行程序。
0170收集代理304是用于识别、获得和/或收集关于客户机102 的信息的应用、程序、进程、服务、任务或可执行指令集。在一些实施 例中,设备200发送收集代理304到客户机102或客户机代理120。可以 根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它 实施例中,收集代理304发送收集的有关客户机102的信息给设备200。 在一个实施例中,设备200的策略引擎236使用收集的信息来确定并提 供对客户机到网络104的连接的访问、验证和授权控制。
0171在一个实施例中,收集代理304是端点检测和扫描程序, 其识别和确定客户机的一个或多个属性或特性。例如,收集代理304可以识别和确定4壬意一个或多个以下的客户^/L侧属性1)才喿作系统和/或 操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进 程,和5 )文件。收集代理304还可以识别和确定客户机上的任意一个或 多个下列软件的存在或版本l)防病毒软件,2)个人防火墙软件,3) 反垃圾邮件软件,和4)因特网安全软件。策略引擎236可以具有根据客 户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。
0172SSL VPN代理308是用于建立从第一网络104到第二网络 l(M'、 104,,的安全套接字层(SSL)虛拟专用网络(VPN)连接或者从 客户机102到服务器106的SSL VPN连接的应用、程序、进程、服务、 任务或者可执行指令集。在一个实施例中,SSLVPN代理308建立从公共 网络104到专用网络104,或者104,,的SSL VPN连接。在一些实施例 中,SSL VPN代理308结合设备205 —起工作来提供SSL VPN连接。在一 个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一 些实施例中,设备205建立与服务器106的第二传输层连接。在另一个 实施例中,SSL VPN代理308建立与客户机上的应用的第一传输层连接, 和与设备205的第二传输层连接。在其他实施例中,SSLVPN代理308和 WAN优化设备200结合工作来提供SSL VPN连接。
0173在一些实施例中,加速程序302是用于执行一个或多个加 速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机 与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106 提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执 行一个或多个的下列加速技术l)多协议压缩,2)传输控制协议池,3) 传输控制协议多路复用,4)传输控制协议緩冲,以及5)经由高速緩存 管理器的高速緩存。另外,加速程序302可以执行对由客户机102接收 和/或发送的任意通信的加密和/或解密。在一些实施例中,加速程序302 以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302 可以在被携带为传输层协议的网络分组的净荷的任意协议或多个协议上 执行压缩。
0174在一个实施例中,加速程序302被设计、构建或者配置为 和设备205 —起工作来提供LAN侧加速或者提供经由设备205提供的加速才支术。例如,在Citrix System/>司出品的NetScaler i殳备205的一 个实施例中,加速程序302包括NetScaler客户机。在一些实施例中, 加速程序302提供在诸如分支结构中的远程装置中独立的NetScaler加 速技术。在其他实施例中,加速程序和一个或者多个NetScaler设备205 一起工作。在一个实施例中,加速程序302提供网络业务量的LAN侧或 者基于LAN的加速或者优化。
0175在一些实施例中,网络优化引擎250可以净皮设计、构建或 者配置为和WAN优化设备200 —起工作。在其他实施例中,网络优化设 备250可以被设计、构建或者配置为提供设备200的WAN优化技术,需 要或者不需要设备200。例如,在Citrix System/^司出品的NeNScaler 设备205的一个实施例中,网络优化设备250包括NeNSca 1 er客户机。 在一些实施例中,网络优化引擎250提供在诸如分支结构中的远程位置 中独立的NeNScaler加速技术。在其他实施例中,网络优化引擎250和 一个或者多个NeNScaler设备200 —起工作。
0176在另一个实施例中,网络优化引擎250包括加速程序302, 或者加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302 包括网络优化引擎250,或者网络优化引擎250的功能、操作和逻辑。在 又一个实施例中,网络优化引擎250被提供或者安装为来自加速程序302 的单独的程序或者可执行指令集。在其他实施例中,网络优化引擎250 和加速程序302包括在相同的程序中或者同一个可执行指令集中。
0177在一些实施例中以及仍然参考图3,可以^:用第一程序322 来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120 或者其一部分。在一个实施例中,第一程序322是诸如被加载应用并由 应用执行的ActiveX控件或Java控件或脚本的插件部件。例如,第一程 序包括由web浏览器应用加载并运行在例如应用的存储空间或上下文中 的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器 的应用加载并运行的一组可执行指令。在一个实施例中,第一程序322 被设计和构造来安装客户机代理120。在一些实施例中,第一程序322通 过网络来从另一个计算装置获得、下载或接收客户机代理120。在另一个 实施例中,第一程序322是客户机102的操作系统上的诸如网络驱动程序和客户机代理120或其任意部分的安装程序或用于安装程序的即插即 用管理器。 '
0178在一些实施例中,客户机代理120、流客户机306、收集代 理304、 SSL VPN代理308、网络优化引擎250、加速程序302、拦截器 350的每一个或者其中任意部分可以被安装、执行、配置或者操作为单独 的应用、程序、进程、服务、任务或者可执行指令集。在其他实施例中, 客户机120的每一个或者任意部分可以被一起安装、执行、配置或者操 作为单独的客户机代理120。
D、用于使用事务边界来优先排序业务量的系统和方法0179现在参考图4,示出取样的TCP分组。总的来说,TCP分组 包括首部410和有效载荷490。首部410包括可以被用来指示和数据通信 和网络拥塞相关的传输事件的多个指示,包括ACK号460、显性拥塞通知 回应(ECE标志)、ACK标志440和进栈(PSH )标志420。
0180仍旧参考图4,所示取样TCP分组图形示出包括在TCP分组 中的一些信息。尽管所示取样反映了 TCP分组的特定实施例,但是本领 域内普通技术人员可以认识到TCP和其他网络协议的许多实现方案和变 化可以应用到此处描述的系统和方法中,包括RFC 793中指定的TCP实 现方案,并且特别是涉及拥塞控制和避免的RFC 2581和RFC 3168。在这 些实现方案和其他的一些中,ECE标记可以被用来通知分组接收者发生了 网络拥塞。分组接收者随后可以选择降低它们的传输率或者采取任一其 它拥塞控制或者避免策略。该ECE标记还被用来和其他信令位相结合, 其和接收者协商是否支持显性拥塞通知(ECN)。显性拥塞的协商或者信 令中使用的任一协议中的任一位可以称之为ECN位,
0181现在参考图5,示出传输可以被分类为事务的分组群的多个 客户机的示意图。总的来说,每个客户机102正经由连接520传输多个 分组。分组可以包括任意类型的分组并且可以包括任意一个或者多个协 议。在一个例子中,分组可以包括网络层分组,例如IP分组。在另一个 例子中,分组可以包括传输层分组,例如TCP或UDP分组。连接可以包 括任一类型 连接并且可以经由任一 网络传输。分组可以使用任意方法200880015762. 被分为对应于事务的群,如之前讨论的。
0182仍旧参考图5,现在更详细地,在许多情况中,其可以被用
来识别包括事务的分组群。广义而言,事务包括一组分组,在随后的传 输开始之前需要接收到整组的分组。在一些情况中,事务可以包括一组 分组,其必须在接收者开始发送响应之前成功接收。该情况的例子可以
是HTTP请求,其中服务器必须在该服务器可以开始传输HTTP响应之前 接收整个HTTP请求。在其他情况中,事务可以包括一組分组,该一组分 组必须在该分组的发送器可以发送随后的传输之前成功接收。在一些情 况中,繁忙事务(transaction-heavy )通信流可以显示出"兵乓,,行为, 其中每一侧必须在下一个传输开始之前等待来自其它侧的响应。
0183装置可以使用任意技术来检测事务或者事务边界。在一些 实施例中,装置可以具有允许装置检测事务边界的 一个或者多个应用协 议的特定知识。在其他实施例中,装置可以检测事务边界,而不需要产 生事务的应用的特定知识。
0184在一个实施例中,装置可以使用基于时间的方法用于检测 事务边界。如果发送器已经发送数据并且随后停止,在一段不活动时间 之后,装置可以决定事务边界已经被指示。装置可以在宣告事务边界之 前请求任意时间间隔来传递。在一些实施例中,时间间隔可以是绝对时 间间隔,包4^f旦不限于lms、 2ms、 5ms、 10ms、 20ms、 30ms、 50ms、 100ms、 200ms、 500tns和l秒。在其^(也实施例中,时间间隔可以是相对于之前分 组延迟的时间间隔。例如,如果连接具有5ms的平均分组间距,则大于 10ms的间距可以指示事务边界。例如,在连接520a中,分组群500b和 500a之间的长的延迟可以指示事务边界。该基于时间的方法可以被用来 在使用未知或者加密协议的连接中来识别事务边界。
0185在其他实施例中,装置可以使用包含在分组中的显性信号 来确定事务边界。例如,通过发送器在分组的TCP首部中设定PSH (TCP 进栈)位可以指示事务边界。或者例如,打开和关闭TCP连接还可以标 记事务边界。在一些情况中,装置可以将基于时间的方法和这些附加的 试探法相结合用于检测事务边界。在另一个技术中,如果装置220理解 应用协议,其可以解析协议数据流并且直接决定事务边界。在一些实施
72例中,该最后的行为可以独立于任意基于时间的机制而使用。例如,装 置可以识别给定的分组是远程程序调用的最后一个分组(或者仅该分 组)。或者装置可以识别分组是HTTP请求的最后一个分组。
0186仍在其他实施例中,装置通过比较分组和该连接的最大分 组大小可以检测事务边界。如果分组大小低于该连接的最大分组大小, 因为在较小的分组被接收和/或响应之前发送器不能发送任何数据,其可 以指示发送器不传输全尺寸的分组。装置可以经由任意方法确定连接的 最大分组大小,包括之前的配置和经由该连接发送的一个或者多个之前 分组的分析。例如,在连接520b中,装置在接收多个全尺寸的分组及随 后的较短分组之后可以检测事务500c。仍在其他实施例中,装置可以检 测分组小于之前的分组的情况,并且将那些情况标记为指示事务边界。 在一些实施例中,这些方法在装置能够确定较短分组在传输中是否跟随 有延迟之前可以允许检测检测事务边界。这些方法还可以被用来在使用 未知的或者加密的协议的连接中来识别事务边界。在其他实施例中,这 些技术可以和一个或者多个其它技术相结合,用于确定事务边界。
0187在另一个实施例中,装置可以通过检测对应于连接的一个 或者多个緩冲器是否已经从满转变为空来检测事务边界。例如,装置可 以具有对应于经由多个连接接收的数据的多个输入缓沖器。如果输入缓 冲器的其中一个变为空,则装置可以确定经由连接接收的最后一个分组 是事务的最后一个分组。在一些情况中,监控緩冲器状态可以用作检测 分组到达时间中的间隙的方法,并且因此提供对事务边界检测的基于时 间的方法的类似功能性。缓冲器从空转变为满时还可以被用来划界事务 的开始。
0188现在参考图5B,示出用于基于事务大小来优先排序等待从 中间装置传输的分组的系统的框图。总的来说,设备200从多个客户机 102经由多个连接515接收分组流。流控制器220和QoS引擎236将所接 收的分组分类为高或低优先级的多个传输队列,其中它们等待经由网络 104传输出去。设备可以将对应于较小事务大小的分组优先排序高于对应 于较大事务大小的分组。参考图6更详细地描述该系统,其描写可以由 所示系统使用的方法。0189现在参考图6,示出用于基于事务大小优先排序等待从中间 装置传输的分组的方法。总的来说,该方法包括由中间设备接收第一分
组(步骤601 );并且由中间设备接收第二分组(步骤603 )。中间设备可 以随后确定事务的第一事务大小(步骤605 );并且分配第一传输优先级 给第一分组,响应于确定的第一事务大小确定传输优先级(步骤607 )。 中间设备可以随后传输第 一分组和第二分组,其中传输顺序根据第 一分 配的传输优先级来确定(步骤609 )。
0190仍旧参考图6,更详细地,中间设备可以以任一方式接收第 一分组(步骤601)。在一些实施例中,中间设备可以包括客户机102、 客户机代理120、服务器106、服务器代理或者网络设备的其中一个。在 一个实施例中,用于多个传输层连接的中间设备可以经由多个传输层连 接的第一传输层连接来接收第一分组。在一些情况中,多个传输层连接 可以全部包括相同的传输层协议。在一些情况中,多个传输层连接可以 包括多个传输层协议。例如,中间设备可以是用作对于从客户机到服务 器的多个TCP连接的中间设备的客户机代理。或者例如,中间设备可以 是用作对于从多个客户机到多个服务器的多个TCP连接的透明代理的网 络设备。所接收的第一分组可以包括任一传输层协议,包括但不限于TCP 和UDP。
0191中间设备可以以任一方式接收第二分组(步骤603 )。在一 些实施例中,中间设备可以经由多个传输层连接中的第二传输层连接来 接收第二分组。第二分组可以是在第一分组之前、之后或者与其同时被 接收。在一些实施例中,第二分组和第一分组可以共享源和/或目标。在 其他实施例中,第二分组可以包括不同的源和目标。
0192中间设备可以以任一方式确定事务的第一事务大小(步骤 60";。在一些实施例中,第一事务大小可以是包括第一分组的事务的事 务大小。在其他实施例中,第一事务大小可以是涉及第一分组的另一个 事务的事务大小,诸如经由与第 一分组同样的连接的紧接第 一分组之前 的事务。在一些实施例中,中间设备可以使用此处描述的一个或者多个 任一事务和事务边界检测技术,包括但不限于基于时间的方法、PSH位检 测、分组大小分析和缓沖器监控。事务大小可以通过任一规格测量,包括但不限于包括事务的字节的总数、包括事务的分组的总数或者事务从 开始到结束的经过的时间。在一个实施例中,关于给定连接,中间设备 可以通过保存在每一事务开始时设为零的值来确定事务大小。随着更多 分组经由该连接接收,则该值可以随经由该连接发送的字节的数量而递 增,直到检测到事务边界结束为止。在另一个实施例中,关于给定连接, 中间设备可以通过保存事务开始的时间戳来确定事务大小。检测到事务 结束边界之后,中间设备可以计算在结束边界和时间戳之间的经过时间。
在一些实施例中,中间设备可以将事务大小限制(cap)到给定数量。例 如,中间设备可以将所有大于10KB的事务当作它们是10KB事务。或者 例如,中间设备可以将所有大于1秒的事务当作1秒的事务。
0193在一些实施例中,中间设备可以确定对于第一传输层连接 的平均事务大小。该平均值可以包括任意类型的平均值,包括但不限于 平均数、中值或者众数(mode)。可以以任一方式计算平均事务大小。在 一些实施例中,中间设备可以保持对于给定连接的事务大小的移动平均。 在其他实施例中,中间设备可以通过计算对于经由该连接发送的一个取 样组的数据的平均事务大小来计算对于该连接的平均事务大小。例如, 中间设备可以计算在连接的第 一分钟期间发送的事务的平均事务大小。 还可以使用之后的取样值来周期性更新该平均值。在另一个实施例中, 中间设备可以记录经由连接发送的字节的总数并且将该总数除以所探测 的事务的总数来确定平均事务大小。
0194在一个实施例中,中间设备还可以以任一方式确定包括第 二分组的事务的第二事务大小。可以使用任意上述技术来确定该事务大 小。在一个实施例中,中间设备确定关于第二连接的平均事务大小。在 一些实施例中,可以使用同样的方法来确定第一和第二事务大小。
0195中间设备可以以任一方式基于确定的第一事务大小分配第 一传输优先级给第一分组(步骤607 )。在一个实施例中,较高的传输优 先级可以被分配给对应于较小事务大小的分组。该实施例可以被用来提 供QoS给一个或者多个突发连接,诸如VoIP或者视频会议业务量。在一 个例子中,中间设备可以将高的优先级分配给小于256字节长度的事务, 正常的优先级分配给257到1280字节长度的事务,并且将高的优先级分配给大于1280字节的事务。在一些实施例中,传输优先级可以响应于事 务大小和之前存在的优先级。例如,中间设备可以通过响应于确定的事 务大小来提高连接的优先级而计算分组的优先级。在其他实施例中,传 输优先级可以响应于确定的事务大小和预定的带宽阈值。例如,中间设 备可以给较小的事务优先排序高的优先级,除非或者直到发送小的事务 的连接已经超过给定的带宽限制。中间设备可以随后降低经由该连接发 送的随后的小的事务的优先级,直到该连接所使用的带宽降到可接受阈 值之下。
0196在一些实施例中,中间设备可以使用与给第一分组分配优 先级相同的方式将优先级分配给第二分组。在其他实施例中,不给第二 分组分配优先级。
0197中间设备可以随后以任一方式传输第 一分组和第二分组, 其中传输顺序根据分配的传输优先级来确定(步骤609 )。在一个实施例 中,中间设备可以将第一和第二分组放到如图5B描述的优先排序的传输 队列中。例如,经由连接515a和515b发送的分组在其对应于较小事务 大小时被置于高优先级队列中。对应于515n的分组在其对应于单个长的 事务时被置于低优先级队列中。为了给出另一个例子,在三个连接的情 况中,A、 B和C已经进行事务排队用于发送并且事务分别是3、 2、 l分 组长度。分组可以随后以C B B A A A的顺序发送。这和循环法不同, 循环法发送顺序是A B C A B A。在此例中,可以清楚的看到基于事务的 优先排序的潜在益处。事务C和B每一个比它们在循环法的情况下更快 地完成两个分组,而不影响事务A。
0198在另一个实施例中,第一和第二分组可以被置于单个队列
施例中,传输队列可以响应于接收随后的事务而被重新排序。在这些实 施例中,中间设备可以将新接收的事务插入到等待传输的较大的事务之 前。例如,如果传输队列当前包括D EEEFFFF,其中D、 E和F分 别是来自1、 3和4字节的事务的分组,并且接收事务G G,队列可以被 修改为DG GEEFFFF。在一些实施例中,单个队列可以和一个或 者多个定时器相组合,使得对应于较长传输的分组不由较短的事务无限期地来保持。仍在其他实施例中,中间设备可以根据给定优先级维持多 个队列并且根据队列中的相对优先级来给每一队列中的分组排序。例如, 中间设备对于低于200字节的事务可以维持高的优先级队列,对于所有 其它事务维持正常的优先级队列。在每一队列中,事务根据他们各自大 小随后排序。
0199在一些实施例中,可以使用任一上述方法来提供QoS。例如, 上述方法可以被用来优先排序实时业务量,实时业务量的特征可以在于 在文件下载上的短的突发事务,其特征可以在于长的持续事务。在另一 个实施例中,上述方法可以被用来优先排序远程程序调用和非交互业务 量上的其它交互应用。
E、用于減少超时惩罚的系统和方法
0200现在参考图7A和图7B,示出用于使用事务边界来减少超时 惩罚的系统和方法。总的来说,检测到事务边界之后,装置可以在事务 传输之后产生并且传输附加的分组。附加的分组可以被配置为从指示事 务的最后一个分组是否成功被接收的接收器产生ACK。诸如TCP的许多协 议可以使用重传输超时(RTO)来发现和纠正事务的最后一个分组已经丢 失的情况。然而,RTO可以仅提供通过分组丢失引发的延迟的粗略控制。 在一些协议中,RTO非常昂贵,诸如TCP,其中RTO默认为整秒。图7A 和7B的系统和方法可以被用来尝试通过较早发现丢失的最后的分组来避 免诸如RTO延迟。
0201现在参考图7B,示出用于通过基于识别事务边界来从中间 装置选择性传输附加分组来减少传输超时的方法。总的来说,该方法包 括通过第一装置接收来自发送器的第一分组(步骤701)。第一装置将第 一分组发送到接收器(步骤703 ),并且确定第一分组4艮可能就是事务的 最后一个分组(步骤705 )。第一装置随后响应于该确定产生至少一个附 加的分组(步骤707 );并且在第一分组已经传输之后将附加的分组传输 到接收器(步骤709 )。第一装置可以随后接收对应于附加分组的确认(步 骤711),确定之前传输的数据分组还没有接收到(步骤709 ),和重传输 没有接收到的数据分组(步骤711 )。0202仍旧参考图7B,更详细地,装置可以经由任一方式接收来 自发送器的第一分组(步骤701)。装置可以包括任一计算装置,包括客 户机、服务器、客户机代理、服务器代理或者设备。发送器还可以包括 任意计算装置。在一些情况中,发送器可以是客户机并且装置可以是客 户机上执行的客户机代理。第一分组可通过任一连接接收,包括但不限 于诸如TCP或者UDP连接的传输层连接。在一些实施例中,装置可以用 作对于该连接的透明代理。在其他实施例中,装置可以对于该连接执行 一个或者多个加速功能。
0203第一装置随后可以经由任一方式将第一分组传输到接收器 (步骤703 )。在一些实施例中,第一装置可以经由诸如TCP或者UDP连 接的传输层连接来传输第一分组。接收器还可以包括任一计算装置。在 一些实施例中,发送器或者接收器都可以通过WAN连接到该装置。在一 些实施例中,设备可以基于发送器或者接收器的其中一个经由WAN连接 到装置的判定来确定使用所示方法。
0204第一装置可以经由任一方式来确定第一分组很可能就是事 务的最后一个分组(步骤705 )。第一装置可以使用此处描述的任意一个 或者多个事务边界技术。在一些实施例中,第一装置可以确定第一分组 小于之前传输的分组或者最大分组大小。在其他实施例中,第一装置可 以检测对应于连接的緩冲器已经从非空转变为空。
0205第一装置随后可以响应于该确定来发送至少一个附加的分 组(步骤707 )。附加的分组可以包括任意类型的分组并且可以包括任意 有效载荷。在一些实施例中,附加分组可以包括第一分组的复制品。在 其他实施例中,附加分组可以包括第一分组的一部分的复制品。仍在其 他实施例中,附加分组可以根据任一前向纠错技术来产生。在一些情况 中,装置可以发送多个附加分组。例如,如果连接具有高损失率,则装 置可以发送多个复制分组。
0206在一些实施例中,装置可以包括决策中的任一附加因素来 传输一个或者多个附加因素。这些因素可以包括但不限于连接损失率、 等待时间、可用带宽、装置上的当前负载和分配给连接的优先级或者QoS 水平。0207第一装置在第一分组已经传输到接收器之后以任一方式将
至少一个附加的分组经由该连接传输到接收器(步骤709 )。装置可以在
第一分组传输之后在发送附加分组之前等待任意的时间间隔。在一个实 施例中,装置可以紧随第一分组将附加分组传输。在另一个实施例中, 装置可以等待一个时间周期使得第一分组和附加分组不会在单个损失事 件中全丢失。
0208可以以任一方式配置附加的分组来产生来自接收器的确认。 在一些实施例中,附加分组可以包括意于激发TCP确认的TCP分组。
0209第一装置可以随后接收对应于附加分组的确认(步骤ni)
并且确定一个或者多个之前传输的数据分组还没有接收到(步骤713)。 所接收的确认可以包括任意类型的确认并且可以包括数据分组没有接收 到的任一指示。在一些实施例中,所接收的确认可以包括复制的TCP确 认的。在一些情况中,所接收的确认可以指示第一数据分组还没有接收 到。在其他情况中,所接收的确认可以指示一个或者多个其它数据分组 没有接收到。
0210第一装置然后重传输没有接收到的数据分组(步骤715)。 在一些实施例中,第一装置还可以在重传输之后传输一个或者多个附加 分组。在其他实施例中,第一装置可以将指示丢失的分组的指示传输给 发送器,使得发送器可以重传输丟失的分组。
0211现在参考图8A和8B,描述用于在发送器和接收器之间重传 输网络分组来降低和连接关联的重传输开销的系统和方法。在包括例如 TCP的许多协议中,使用重传输作为用来提供可靠数据流的一种方法。除 了标准重传输延迟之外,当重传输的分组也被丟失时,则导致额外的延 迟。在一些情况中,重传输分组的丢失可以导致等于整个RTT的延迟。 所示系统和方法可以被用来减少这些附加性能惩罚的可能性。总的来说, 可以是设备200的装置接收并转发分组。接收到分组没有接收到的指示 时,设备重传输该分组并且还确定连接的损失率是否超过给定阔值。如 果损失率已经超过阔值,则设备可以可以随后再次重传输该丟失的分组。 可以在接收到重传输分组丟失的任一指示之前执行该再次重传输。
0212现在参考图8B,描述用于在发送器和接收器之间重传输网络分组来降低和连接关联的重传输开销的方法。总的来说,该方法包括通过装置接收经由连接传输的网络分组没有被接收器接收到的指示(步
骤801);并且通过装置响应于该指示来重传输网络分组到接收器(步骤803 )。装置可以确定和连接相关联的分组损失率(步骤805 )。装置可以随后响应于确定的分组损失率来确定多个附加的重传输(步骤807 );并且根据附加重传输的确定数量来重传输网络分组(步骤809 )。
0213仍然参考图8B,装置可以接收经由传输层连接传输的分组没有被接收器接收到的指示(步骤801)。装置可以包括任一计算装置,包括客户机、服务器、客户机代理、服务器代理或者设备。接收器还可以包括任意计算装置。在一个实施例中,该连接可以包括传输层连接。在一些实施例中,该连接可以包括TCP连接并且该分组可以包括TCP分组。在这些实施例中,指示可以包括指示该分组没有接收到的一个或者多个复制确认。在其他实施例中,该装置可以接收任意其它类型的指示。
0214装置可以随后以任一方式来重传输网络分组到接收器(步骤803 )。装置可以经由任意协议来重传输网络分组。在一些实施例中,装置还可以将指示分组丢失事件的指示发送给分组的发送器。
0215装置可以以任一方式确定和连接相关联的分组损失率(步骤805 )。分组损失率可以反映任一分组损失事件,包括分组丢掉、丢失、损失、破坏或者其他未成功的接收。在一些实施例中,可以基于涉及单个连接的统计来计算分组损失率。在这些实施例中,装置可以基于经由连接发送的分组的总数除以分组损失的总数来计算损失率。替代地,装置可以通过计算对于经由连接传输的分组的一个子集或者多个子集的分组损失率来计算分组损失率。在其他实施例中,分组损失率可以关于穿越类似网络的多个连接来计算。例如,连接到WAN的设备可以计算对于W緒上的所有业务量的平均分组损失率。或者连接到无线网络的设备可以计算穿越无线网络的所有业务量的平均损失率。仍在其他实施例中,可
以人工配置分组损失率。
0216装置可以响应于确定的损失率来确定多个附加的重传输。附加的重传输指示在接收到还没有接收到第一重传输分组的指示之前该分组将被重传输的额外次数。在一些情况中,如果损失率高于给定阈值,则装置可以确定必须进行附加的重传输。例如,如果分组损失率高于5%,则装置可以确定使用一次附加的重传输。或者例如,如果分组损失率高于10%,则装置可以确定使用两次附加的重传输。该装置可以确定并且使
用任意数量的附加重传输,包括0、 1、 2、 3、 4和5。损失率阈值可以包括任意数量或者百分比的分组损失,包括但不限于1%、 2%、 3°/。、 5%、 8%、10%和20%。
0217在一些实施例中,装置可以响应于除了损失率之外的一个或者多个因素来确定附加重传输的次数。这些附加因素可以包括但不限于连接带宽、连接等待时间、和连接相关联的事务大小、和连接关联的协议和/或与连接相关联的优先级或者QoS。例如,装置可以确定对于低优先级连接,不考虑损失率,不进行附加的重传输。或者例如,装置可以确定对于正常的优先级连接,使用附加的重传输必须该连接损失率超过8%,而对于高优先级连接,使用附加重传输之前必须要求损失率仅超过2%。在另一个例子中,具有低等待时间容忍度的协议可以给予较高数量的附加重传输。在此例子中,和VoIP或者其他实时应用相关联的协议可以被优先,使得可以避免与重传输的传统方法相关联的额外延迟。仍在另一个实施例中,装置可以确定和丟失的分组相关联的事务大小,并且相应计算重传输的次数。在此例中,较小的事务大小由于更可能包含时间敏感数据而可以给予更多的附加重传输。
0218装置根据附加重传输的确定数量来重传输该分组。装置可以以任一方式再次重传输分组。在一些实施例中,装置可以间隔附加重传输的传输,使得它们不可能在单个网络损失事件中全丢失。在一些情况中,装置可以在接收到分组已经成功地被接收的指示时停止一个或者多个附加重传输的传输。
0219虽然本发明参考特定优选实施例具体描述和示出,但是本领域内的普通技术人员应该理解在不脱离由下面的权利要求书限定的本发明的精神和范围的情况下,可以在形式和细节上作出多种变化。
权利要求
1、一种用于优先排序分组的传输的方法,包括(a)通过中间设备接收第一分组;(b)通过中间设备接收第二分组;(c)通过中间设备确定事务的第一事务大小;(d)通过中间设备分配第一传输优先级给第一分组,响应于所确定的第一事务大小来确定所述传输优先级;和(e)通过中间设备传输第一分组和第二分组,其中根据第一分配的传输优先级来确定传输顺序。
2、 权利要求l的方法,其中,所述中间设备包括以下其中之一客户机、服务器、客户机代理和网络设备。
3、 权利要求1的方法,其中,步骤(a)包括通过中间设备经由第一传输层连接来接收第 一分组。
4、 权利要求1的方法,其中,步骤(a)包括通过中间设备接收包括加密的数据的第一分组。
5、 权利要求1的方法,其中,步骤(a)包括通过中间设备接收包括互联网计算架构(ICA)协议或者远程桌面协议(RDP)协议的其中一个的第一分组。
6、 权利要求1的方法,其中,步骤(a )包括对于多个传输控制协议(TCP )连接,通过中间设备经由多个TCP连接中的第一 TCP连接来接收第一分组。
7、 权利要求1的方法,其中,步骤(b)包括通过中间设备经由传输层连接来接收第二分组。
8、 权利要求1的方法,其中,步骤(c)包括由中间设备通过识别所述第一分组包括事务的最后分组来确定事务的第一事务大小。
9、 权利要求1的方法,其中,步骤(c)包括由中间设备通过识别经由第一传输层连接传输的事务的至少一个开始和结束点和识别在所述开始和结束点之间传输的数据的量来确定事务的第一事务大小。
10、 权利要求l的方法,其中,步骤(c)包括由中间设备通过识别至少一个所接收的分组小于最大分组大小来确定事务的第一事务大小。
11、 权利要求l的方法,其中,步骤(C)包括由中间设备通过识别至少一个所接收的分组小于最大分组大小并且紧接在所述最大分组大小的至少一个分组之后来确定事务的第 一分组大小。
12、 权利要求l的方法,其中,步骤(C)包括由中间设备通过识别对应于连接的缓冲器已经从非空转变为空来确定事务的第一事务大小。
13、 权利要求l的方法,其中,步骤(c)包括由中间设备通过识别分组到达时间之间的间隙来确定事务的第一事务大小。
14、 权利要求l的方法,其中,步骤(c)包括由中间设备通过识别标记的PSH位来确定事务的第一事务大小。
15、 权利要求l的方法,其中,步骤(c)包括由中间设备通过识别对应于传输层连接的緩冲器已经从空转变为非空来确定事务的第一事务大小。
16、 权利要求l的方法,其中,步骤(c)包括由中间设备确定和第一传输层连接相关联的第一平均事务大小。
17、 权利要求16的方法,其中,步骤(c)包括由中间设备通过识别经由第一传输层连接传输的事务的多个开始和结束点并且确定在所述多个开始和结束点之间传输的数据的平均量来确定和第 一传输层连接相关联的第 一平均事务大小。
18、 权利要求16的方法,其中,步骤(c)包括由中间设备通过识别在预定时间间隔经由第一传输层连接传输的事务的多个开始和结束点并且确定在所述多个开始和结束点之间传输的数据的平均量来确定和第一传输层连接相关联的第一平均事务大小。
19、 权利要求16的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,其中响应于第一平均事务大小小于第二平均事务大小的确定,第一数据分组具有比第二数据分组更高的优先级。
20、 权利要求16的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,其中响应于第一平均事务大小小于第二平均事务大小的确定和第一传输层连接没有超过给定传输带宽阈值的确定,第一数据分组具有比第二数据分组更高的优先级。
21、 权利要求16的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,其中响应于第一平均事务大小大于第二平均事务大小的确定,第一数据分组具有比第二数据分组更低的优先级。
22、 权利要求l的方法,其中,步骤(c)包括步骤(c-a)由中间设备确定和第一分组相关联的第一事务大小;和(c-b )由中间设备确定和第二分组相关联的第二事务大小。
23、 权利要求22的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,响应于所确定的第一事务大小和所确定的第二事务大小来确定所述传输优先级。
24、 权利要求22的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,其中响应于第一事务大小小于第二事务大小的确定,第一数据分组具有比第二数据分组更高的优先级。
25、 权利要求22的方法,其中,步骤(d)包括由中间设备为第一分組和第二分组分配传输优先级,其中响应于第一事务大小小于第二事务大小的确定和第一传输层连接没有超过给定传输带宽阈值的确定,第 一数据分组具有比第二数据分组更高的优先级。
26、 权利要求22的方法,其中,步骤(d)包括由中间设备为第一分组和第二分组分配传输优先级,其中响应于第一事务大小大于第二事务大小的确定,第一数据分组具有比第二数据分组更低的优先级。
27、 权利要求l的方法,其中,步骤(e)包括将第一分组置于具有对应于第一分配的传输优先级的优先级的第一传输队列中。
28、 权利要求l的方法,其中,步骤(e)包括将第一分组置于具有对应于第一分配的传输优先级的优先级的第一传输队列中并且将第二分组置于具有对应于分配给第二分组的传输优先级的优先级的第二传输队列中。
29、 一种用于优先排序用于传输的分组的设备,包括接收第一分组和第二分组的分组处理器;和流控制器,其确定与第一分组相关联的第一事务大小;响应于所确定的第一事务大小,为第一分组分配传输优先级;并且根据所分配的传输优先级来传输第 一分组和第二分组。
30、 权利要求29的设备,其中,所述分组处理器经由第一传输层连接来接收第一分组。
31、 权利要求29的设备,其中,所述分组处理器经由第二传输层连接来接收第二分组。
32、 权利要求29的设备,其中,所述流控制器通过确定所述第一分组包 括事务的最后分组来确定和第 一分组相关联的第 一事务大小。
33、 权利要求29的设备,其中,所述流控制器通过确定经由第一传输层 连接传输的事务的至少一个开始和结束点并且计算在所述开始和结束点之间 传输的数据的量来确定和第一分组相关联的第一事务大小。
34、 权利要求29的设备,其中,所述流控制器通过识别由装置经由传输 层连接所接收的至少一个分组小于最大分组大小来确定事务的结束点,从而 确定和第一分组相关联的第一事务大小。
35、 权利要求29的设备,其中,所述流控制器通过识别由装置经由传输 层连接接收的至少一个分组小于最大分组大小并且在紧接所述最大分组大小 的至少一个分组之后来确定事务的结束点,从而确定和第一分组相关联的第 一分组大小。
36、 权利要求29的设备,其中,所述流控制器通过识别对应于传输层连 接的緩冲器已经从非空转变为空来确定事务的结束点,从而确定和第一分组 相关联的第一事务大小。
37、 权利要求29的设备,其中,所述流控制器通过识别分组到达时间之 间的间隙来确定事务的结束点,从而确定和第一分组相关^:的第一事务大小。
38、 权利要求29的设备,其中,所述流控制器通过识别标记的PSH位来 确定事务的结束点,从而确定和第一分组相关联的第一事务大小。
39、 权利要求29的设备,其中,所述流控制器通过识别对应于传输层连 接的緩冲器已经从空转变为非空来确定事务的开始点,从而确定和第一分组 相关联的第一事务大小。
40、 权利要求29的设备,其中,所述流控制器通过以下步骤确定和第一 分组相关联的第一事务大小确定和第一分组相关联的第一事务大小;和 确定和第二分组相关联的第二事务大小。
41、 权利要求40的设备,其中,所述流控制器分配第一传输优先级给第 一分组和分配第二传输优先级给第二分组,所述第一传输优先级是响应于所 确定的第一事务大小来确定的而所述第二传输优先级是响应于所确定第二事务大小来确定的。
42、 权利要求40的设备,其中,响应于第一事务大小小于第二事务大小, 所述流控制器分配第 一传输优先级,其具有高于第二传输优先级的优先级。
43、 权利要求40的设备,其中,响应于第一事务大小小于第二事务大小 的确定和第一传输层连接没有超过给定传输带宽阈值的确定,所述流控制器 分配第一传输优先级,其具有高于第二传输优先级的优先级。
44、 权利要求40的设备,其中,响应于第一事务大小大于第二事务大小, 所述流控制器分配第一传输优先级,其具有低于第二传输优先级的优先级。
45、 权利要求29的设备,其中,所述流控制器通过确定经由第一传输层 连接传输的事务的多个开始和结束点并且确定在所述多个开始和结束点之间 传输的数据的平均量来确定和第一分组相关联的第一事务大小。
46、 权利要求29的设备,其中,所述流控制器通过确定经由第一传输层 连接在预定时间间隔内传输的事务的多个开始和结束点并且计算在所述多个 开始和结束点之间传输的数据的平均量来确定和第一分组相关联的第一事务 大小。
47、 权利要求29的设备,其中,所述流控制器通过以下步骤确定和第一 分组相关联的第一事务大小确定和第一传输层连接相关联的第一平均事务大小;和 确定和第二传输层连接相关联的第二平均事务大小。
48、 权利要求47的设备,其中,所述流控制器响应于所确定的第一平均 事务大小将第一传输优先级分配给第一分组并且响应于确定的第二平均事务 大小将第二传输优先级分配给第二分组。
49、 权利要求47的设备,其中,所述流控制器响应于第一平均事务大小 小于第二平均事务大小的确定将第一传输优先级分配给第一数据分组,该第一数据分组具有高于分配给第二数据分组的第二传输优先级的优先级。
50、 权利要求47的设备,其中,所述流控制器响应于第一平均事务大小 小于第二平均事务大小的确定和第一传输层连接没有超过给定传输带宽阈值的确定,将第一传输优先级分配给第一数据分组,该第一数据分组具有高于 分配给第二数据分组的第二传输优先级的优先级。
51、 权利要求47的设备,其中,所述流控制器响应于第一平均事务大小大于第二平均事务大小的确定将第一传输优先级分配给第一数据分组,该第 一数据分组具有低于分配给第二数据分组的第二传输优先级的优先级。
52、 权利要求29的设备,其中,所述设备是以下其中之一客户机、服 务器、客户机代理和网络设备。
53、 一种用于优先排序分组的传输的设备,包括(a) 接收第一分组的装置;(b) 接收第二分组的装置;(c) 确定事务的第一事务大小的装置;(d) 分配第一传输优先级给第一分组的装置,响应于所确定的第一事务 大小来确定该第一传输优先级;和(e) 用于传输第一分组和第二分组的装置,其中根据分配的第一传输优 先级来确定传输顺序。
54、 一种用于通过基于识别事务边界来选择性传输来自中间装置的附加 的分组以降低传输超时的方法,该方法包括(a )通过装置经由发送器和接收器之间的连接来接收来自发送器经由该 连接的第一分组;(b) 通过所述装置将所述第一分组发送到所述接收器;(c) 通过所述装置确定第一分组是事务的最后一个分组;(d) 通过装置响应于该确定而产生至少一个附加的分组;并且(e )通过装置在所述第一分组已经传输到接收器之后经由该连接来传输 所述至少 一个附加的分组到接收器。
55、 权利要求54的方法,其中,所述连接包括传输层连接。
56、 权利要求54的方法,其中,所述装置是以下的其中一个客户机、服务器或者网络设备。
57、 权利要求54的方法,其中,步骤(c)包括通过所述装置来确定第 一分组小于所述连接的最大分组大小。
58、 权利要求54的方法,其中,步骤(c)包括通过所述装置确定第一 分组小于连接的最大分组大小并且在紧接所述最大分组大小的至少一个分组 之后。
59、 权利要求54的方法,其中,步骤(c)包括通过所述装置确定对应步骤(d)包括通过装置响应于所述确 所述至少 一个附加的数据分组包括第步骤(d)包括通过装置响应于所述确所述至少 一个附加的数据分组包括所步骤(d)包括通过装置响应于所述确 对于之前传输的数据根据前向纠错技步骤(d)包括通过装置响应于所述确 基于传输层连接的当前丢失率来选择于所述连接的緩冲器已经从非空转变为空。
60、 权利要求54的方法,其中,步骤(d)包括通过装置响应于所述确 定来产生至少一个附加的分组,其中,所述至少一个附加的数据分组包括接 收机发送至少 一个确认的指示。
61、 权利要求54的方法,其中, 定来产生至少一个附加的分组,其中, 一数据分组。
62、 权利要求54的方法,其中, 定来产生至少一个附加的分组,其中, 接收的数据分组的一部分。
63、 权利要求54的方法,其中, 定来产生至少一个附加的分组,其中, 术来产生所述至少一个附加数据分组。
64、 权利要求54的方法,其中, 定来产生至少一个附加的分组,其中, 所传输的附加数据分组的数量。
65、 权利要求54的方法,其中,还包括步骤(f )通过所述装置接收对应于至少一个附加数据分组的至少一个确认; (g )通过所述装置基于接收的至少一个确认来确定一个或者多个之前传 输的数据分组还没接收到;和(h )通过所述装置重传输还没有接收到的一个或者多个之前传输的数据分组。
66、 一种用于通过基于识别事务边界来选择性传输来自中间装置的附加 分组以降低传输超时的系统,该系统包括经由连接接收来自发送器的第一分组的分组处理器;并且将所述第一分 组传输到接收器;和确定所述第 一分组是事务的最后一个分组的流控制器;响应于该确定, 产生至少一个附加的分组;并且在所述第一分组已经传输到接收器之后,传 输所述至少一个附加的分组到接收器。
67、 权利要求66的系统,其中,所述装置用作用于发送器和接收器之间的传输层连接的中间设备。
68、 权利要求66的系统,其中,所述装置是以下的其中一个客户机、 服务器或者网络设备。
69、 权利要求66的系统,其中,所述装置包括透明代理。
70、 权利要求66的系统,其中,所述流控制器确定对应于所述连接的緩 冲器已经从非空转变为空。
71、 权利要求66的系统,其中,所述流控制器来确定第一分组小于所述 传输层连接的最大分组大小。
72、 权利要求66的系统,其中,所述流控制器确定第一分组小于传输层 连接的最大分组大小并且在紧接所述最大分组大小的至少一个分组之后。
73、 权利要求66的系统,其中,所述流控制器响应于所述确定来产生至 少一个附加的分组,其中,所述至少一个附加的数据分组包括接收机传输至 少一个确认的指示。
74、 权利要求66的系统,其中,所述流控制器响应于所述确定来产生至 少一个附加的分组,其中,所述至少一个附加的数据分组包括所述第一数据 分组。
75、 权利要求66的系统,其中,所述流控制器响应于所述确定来产生至 少一个附加的分组,其中,所述至少一个附加的数据分组包括所接收的数据 分组的一部分。
76、 权利要求66的系统,其中,所述流控制器响应于所述确定来产生至 少一个附加的分组,其中,对于之前传输的数据根据前向纠错技术来产生所 述至少一个附加数据分组。
77、 权利要求66的系统,其中,所述流控制器响应于所述确定来产生至 少一个附加的分组,其中,基于对于传输层连接的当前丢失率来选择所传输 的附加数据分组的数量。
78、 权利要求66的系统,其中,所述分组处理器接收对应于至少一个附 加数据分组的至少一个确认;基于所接收的至少一个确认来确定一个或者多 个之前传输的数据分组还没接收到;并且重传输还没有接收到的一个或者多 个之前传输的数据分组。
79、 一种用于通过基于识别事务边界来选择性传输来自中间装置的附加分组以降低传输超时的系统,该系统包括通过装置经由发送器和接收器之间的连接来接收来自发送器经由该连接的第一分组的设备;通过所述装置将所述第一分组传输到所述接收器的设备; 通过所述装置确定所述第 一分组是事务的最后一个分组的i殳备; 通过装置响应于该确定而产生至少一个附加的分组的"i殳备;和 通过装置在所述第一分组已经传输到接收器之后经由该连接来传输所述至少 一个附加的分组到接收器的设备。
80、 一种用于在发送器和接收器之间重传输网络分组来降低与连接相关 联的传输差错的方法,该方法包括(a )通过装置接收经由连接传输的网络分组没有被接收器接收的指示; (b )通过该装置响应于该指示来重传输所述网络分组到所述接收器;(c) 通过该装置确定和该连接相关联的分组丢失率;(d) 通过该装置响应于所确定的分组丟失率来确定多个附加的重传输;并且(e )通过该装置根据附加的重传输的确定数量来重传输所述网络分组。
81、 权利要求80的方法,其中,所述连接包括传输层连接。
82、 权利要求80的方法,其中,步骤(e)包括通过所述装置在网络分 组的之前重传输的预定时间阈值内重传输网络分组。
83、 权利要求80的方法,其中,步骤(c)包括确定在预定时间周期内 的分组丢失率。
84、 权利要求80的方法,其中,步骤(c)包括将分组丢失率确定为在 预定时间周期内的平均值。
85、 权利要求80的方法,其中,所述装置包括以下其中一个客户机、 服务器或者设备。
86、 权利要求80的方法,其中,步骤(c)包括通过所述装置响应于所 接收到的指示和确定的事务大小来确定重传输的数量,其中所述重传输的数 量大于l。
87、 权利要求80的方法,其中,步骤(c)包括通过所述装置响应于所 接收到的指示和确定的事务大小来确定重传输的数量,其中相对于较低的确定的事务大小所述重传输的数量较高。
88、 权利要求80的方法,其中,步骤(c)包括通过所述装置响应于所接收到的指示和确定的平均事务大小来确定重传输的数量,其中相对于较低 的确定的平均事务大小所述重传输的数量较高。
89、 权利要求80的方法,其中,步骤(d)包括通过所述装置将所述数 据分组重传输多次,所述多次等于确定的重传输的数量,其中,所述多次重 传输的每一次在时间上被间隔为使得两个重传输不可能受单个丟失事件影响。
90、 一种用于在发送器和接收器之间重传输网络分组来降低与连接相关 联的传输差错的系统,该系统包括分组处理器,其接收经由该连接传输的网络分组没有被接收器接收的指 示;并且响应于该指示来重传输所述网络分组到所述^^收器;和与分组处理器通信的流控制器,其确定和传输层连接相关联的分组丢失 率;响应于所确定的分组丟失率来确定多个附加的重传输;并且根据附加的 重传输的确定数量来重传输所述网络分组。
91、 权利要求90的系统,其中,所述连接包括传输层连接。
92、 权利要求90的系统,其中,所述分组处理器和流控制器的其中一个 或者两个组合驻留在以下其中之一上面客户机、服务器或者网络设备。
93、 权利要求90的系统,其中,所述分组处理器和流控制器驻留在用作 用于传输层连接的透明代理的网络设备中。
94、 权利要求90的系统,其中,所述流控制器在网络分组的之前的重传 输的预定时间阈值内重传输网络分组。
95、 权利要求90的系统,其中,所述流控制器确定在预定时间周期内的 分组丢失率。
96、 权利要求90的系统,其中,所述流控制器将分组丟失率确定为预定 时间周期内的平均值。
97、 权利要求90的系统,其中,所述流控制器响应于所接收到的指示和 确定的事务大小来确定重传输的数量,其中所述重传输的数量大于1。
98、 权利要求90的系统,其中,所述流控制器响应于所接收到的指示和 确定的事务大小来确定重传输的数量,其中相对于较低的确定的事务大小所述重传输的数量较高。
99、 权利要求90的系统,其中,所述流控制器响应于所接收到的指示和 确定的平均事务大小来确定重传输的数量,其中相对于较低的确定的平均事 务大小所述重传输的数量较高。
100、 权利要求90的系统,其中,所述流控制器确定所述数据分组重传 输多次,所述多次等于确定的重传输的数量,其中所述多次重传输的每一次 在时间上被间隔为使得两个重传输不可能受单个丢失事件影响。
101、 一种用于在发送器和接收器之间重传输网络分组来降低与连接相关 联的传输差错的系统,该系统包括用于通过装置接收经由连接传输的网络分组没有被接收器接收到的指示 的设备;用于通过该装置响应于该指示来重传输所述网络分组到所述接收器的设备;用于通过该装置确定和该传输层连接相关联的分组丢失率的设备; 用于通过该装置响应于所确定的分组丢失率来确定多个附加的重传输的 设备;并且用于通过该装置根据附加的重传输的确定数量来重传输所述网络分组的 设备。
全文摘要
本发明描述用于在对和网络业务量相关的决策进行排队并重传输中利用事务边界检测方法的系统和方法。通过检测事务的边界和大小,客户机、服务器或者中间装置可以在对决策排队中基于事务大小优先排序,将优先级赋予可以表示交互式和/或等待时间敏感的业务量的较小事务。进一步,在检测事务边界之后,装置可以重传输提示确认的一个或者多个附加分组,用来确保如果事务的最后一个分组已经丢失时的及时通知。本发明还描述用于潜在地改进网络等待时间的系统和方法,包括两次或者多次重传输丢失的分组,用来避免由于重传输分组的丢失而导致的附加的延迟。
文档编号H04L12/54GK101682565SQ200880015762
公开日2010年3月24日 申请日期2008年3月12日 优先权日2007年3月12日
发明者A·塞缪尔斯, M·奥夫斯相尼科夫, R·普拉蒙东 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1