用于经由流控制隧道提供服务质量的系统和方法

文档序号:7886147阅读:273来源:国知局
专利名称:用于经由流控制隧道提供服务质量的系统和方法
技术领域
本公开总的涉及数据通信网络。本公开尤其涉及用于经由流控制隧道提供多个应用的服务质量的系统和方法。
背景技术
在很多执行多个应用的系统中,可能期望在应用之间对通信划分优先级以满足性能、带宽和延迟需求。然而,由于这些应用的不同需求,以及应用流量的不同服务器或端点目的地,服务质量管理可能非常复杂或者需要冗长的每链路的配置。这在诸如智能电话或膝上型电脑的移动环境中尤其不可取,该移动环境中用户可在一周或甚至在一天内从数个不同的位置并且通过数个不同的链路进行连接。

发明内容
本发明涉及用于经由流控制隧道提供服务质量(QoS)的系统和方法。无需配置单独链路速度,可将来自多个应用的流量定向到单个连接或流控制隧道中并且可跨多个应用来应用QoS策略,这样使得不管应用通信的最终端点是什么,QoS调度能够动态调整流量发送和接收速率从而保证应用的优先级管理。因此,可以很容易地平衡不同类型的流量且对其划分优先级,所述类型包括VPN、HTTP、IP电话(VoIP )、远程桌面协议流量或其他流量。在很多实施例中,隧道可对应用透明,使得不需任何应用配置,仍可以根据QoS需求对应用流量划分优先级。在一个方面,本发明描述一种用于经由流控制隧道提供多个应用的服务质量的方法。所述方法包括在客户机的网络堆栈的部分处运行的代理,所述代理用于代理多个对应于在客户机上执行的多个应用中的每一个的传输层连连接。所述方法还包括所述代理以根据对多个应用中的每一个进行分类得到的指定优先级的顺序接收来自多个被代理的传输层连接中的每一个的数据。所述方法还包括所述代理以根据所述指定优先级的顺序向在客户机上执行的第一隧道应用传送从多个被代理的传输层连接中的每一个所接收的预定量的数据,所述第一隧道应用具有所建立的到第二隧道应用的传输层连接。在一些实施例中,所述方法包括在客户机上的第一隧道应用将来自每个应用的预定量的数据发送到在客户机和多个服务器中间的装置上执行的第二隧道应用。在其他实施例中,所述代理在客户机的内核空间中执行且 第一隧道应用在客户机的用户空间中执行。在一个实施例中,所述方法包括所述代理来代理返回客户机的多个传输层连接中的每一个。在另一个实施例中,所述方法包括所述代理对多个应用中的每一个透明地代理多个传输层连接中的每一个。在一些实施例中,所述方法包括代理根据服务质量分类方案对多个应用中的每一个进行分类。在其他实施例中,所述方法包括所述代理在向第一隧道应用传送预定量的数据时应用服务质量。在其他实施例中,所述方法包括所述代理在刚收到预定量的数据中的每一个时就将其传送给第一隧道应用。在一个实施例中,所述方法包括所述代理从多个被代理的传输层连接中的一个或多个接收数据可读的指示。在进一步的实施例中,所述方法包括所述代理向第一隧道应用传送该指示并且响应于该指示,第一隧道应用以优先级顺序接受来自一个或多个被代理的传输层连接中的每一个的预定量的数据。在另一个方面,本发明描述用于经由流控制隧道提供多个应用的服务质量的系统。所述系统包括在客户机的网络堆栈的部分处运行并且代理多个对应于在客户机上执行的多个应用中的每一个的传输层连接的代理。所述系统还包括在客户机上执行、并且具有所建立的到第二隧道应用的传输层连接的第一隧道应用。所述系统还包括所述代理以根据对多个应用中的每一个进行分类得到的指定优先级的顺序接收来自多个被代理的传输层连接中的每一个的数据,并且以根据所述指定优先级的顺序向第一隧道应用传送从多个被代理的传输层连接中的每一个所接收的预定量的数据。在一些实施例中,第一隧道应用将来自每个应用的预定量的数据发送到在客户机和多个服务器中间的装置上执行的第二隧道应用。在其他实施例中,所述代理在客户机的内核空间中执行且第一隧道应用在客户机的用户空间中执行。在一个实施例中,所述代理用于代理返回客户机的多个被代理的传输层连接中的每一个。在另一个实施例中,所述代理对多个应用的每一个透明地代理多个被代理的传输层连接中的每一个。在另一个实施例中,所述代理根据服务质量分类方案对多个应用中的每一个进行分类。在又一个实施 例中,所述代理在将预定量的数据传送给第一隧道应用时应用服务质量调度。在一些实施例中,所述代理在刚接收到预定量的数据中的每一个时就将其传送给第一隧道应用。在一个实施例中,所述代理从多个被代理的传输层连接中的一个或多个接收数据可读的指示。在进一步的实施例中,所述代理向第一隧道应用传送该指示并且响应于该指示,第一隧道应用以优先级的顺序接受来自一个或多个被代理的传输层连接中的每一个的预定量的数据。在附图和下面的描述中将详细阐述本发明的各种实施例的细节。


通过参考下述结合附图的描述,本发明的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中:图1A是用于客户机经由一个或多个网络优化设备访问服务器的网络环境的实施例的框图;图1B是用于客户机经由一个或多个与其他网络设备结合的网络优化设备访问服务器的网络环境的另一个实施例的框图;图1C是用于客户机经由单独部署的或与其他网络设备结合部署的单个网络优化设备访问服务器的网络环境的另一个实施例的框图;图1D和IE是计算装置的实施例的框图;图2A是用于处理客户机和服务器之间的通信的设备的实施例的框图;图2B是部署了设备的网络优化特征的客户机和/或服务器的另一个实施例的框图;图3是使用网络优化特征与服务器通信的客户机的实施例的框图;图4A是用于经由流控制隧道提供多个应用的服务质量的系统的实施例的框图;图4B是用于经由流控制隧道提供多个应用的服务质量的客户机或设备的实施例的框图;图4C是客户机或设备上的队列隧道代理的实施例的框图;图5A是在经由流控制隧道提供多个应用的服务质量的系统内的通信流的实施例的框图;图5B是在经由加密网关和流控制隧道提供多个应用的服务质量的系统内的通信流的实施例的框图;以及图6是用于经由流控制隧道提供多个应用的服务质量的方法的实施例的流程图;从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素 。
具体实施例方式为了阅读本发明下述各种具体实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的:- A部分描述有益于实施本发明实施例的网络环境和计算环境;- B部分描述用于将计算环境加速传送到远程用户的系统和设备架构的实施例;以及- C部分描述用于加速在客户机和服务器之间的通信的客户机代理的实施例;以及一 D部分描述用于经由流控制隧道提供多个应用的服务质量的系统和方法的实施例。A.网络和计算环塏在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这样的实施例的网络和计算环境是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括经由一个或多个网络104、104’、104”与一个或多个服务器106a —106η (同样总的称为服务器106,或远程机器106)通信的一个或多个客户机102a — 102η(同样总的称为本地机器102,或客户机102)。在一些实施例中,客户机102经由一个或多个网络优化设备200、200’(总的称为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计为、配置为或适合于优化广域网(WAN)网络流量。在一些实施例中,第一设备200与第二设备200’结合或协同工作来优化网络流量。例如,第一设备200可位于分支机构和WAN连接之间而第二设备200’位于WAN和公司局域网(LAN)之间。设备200、200’可一起工作以优化在分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网
络流量。虽然图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进行通信。网络104可以是任何类型和/或形式的网络,并且可包括任何下列任何一种网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM (异步传输模式)网络,SONET (同步光纤网络)网络,SDH (同步数字体系)网络,无线网络和有线网络。在一些实施例中, 网络104可以包括诸如红外信道或者卫星频带的无线链路。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104以及网络拓扑可以是本领域普通技术人员所知的能够支持此处描述的操作的任何这样的网络或网络拓扑。如图1A所示,第一网络优化设备200被显示在网络104和104’之间,并且第二网络优化设备200’也在网络104’和104”之间。在一些实施例中,设备200可位于网络104上。例如,公司企业可在分支机构中部署设备200。在其它实施例中,设备200可以位于网络104’上。在一些实施例中,设备200可以位于网络104’或网络104”上。例如,设备200可位于公司的数据中心。在一个实施例中,设备200和200’在同一网络上,在又一个实施例中,设备200和200’在不同的网络上。在一个实施例中,设备200是用于加速、优化或者以其他方式改善任何类型和形式的网络流量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能增强代理。在其它实施例中,设备200是任何类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于佛罗里达州Ft.Lauderdale的CitrixSystems公司出品的被称为WANScaler的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州Seattle的F5Networks公司出品的被称为BIG-1P链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper Netfforks公司出品的WX和WXC WAN加速装置平台中的任何一种。在一些实施例中,设备200包括由加利福尼亚州San Francisco的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任何一种。在其它实施例中,设备200包括由位于新泽西州Roseland的Expand Networks公司出品的WAN相关装置中的任何一种。在一个实施例中,设备200包括由位于加利福尼亚州Cupertino的Packeteer公司出品的任何一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于加利福尼亚州San Jose的Cisco Systems公司出品的任何WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
在一些实施例中,设备200为分支机构或远程办公室提供应用和数据加速服务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在又一个实施例中,设备200加速文件的传送,例如经由通用互联网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储装置中提供高速缓存来加速应用和数据的传送。在一个实施例中,设备200在任何级别的网络堆栈或在任何的协议或网络层中提供网络流量的压缩。在又一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的传送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任何会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下文的B部分中讨论设备200的架构、操作和优化技术的进一步的细节。仍参考图1A,网络环境可包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的一些中,服务器106可为地理上分散的。在一些情况中,群38可以作为单个实体被管理。在其它实施例中,服务器群38包括多个服务器群38。在一个实施例中,服务器群代表一个或多个客户机102执行一个或多个应用程序。在每个群38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如,由华盛顿州Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群38的服务器106不需要与同一群38内的另一个服务器106物理上接近。因此,被逻辑分组为群38的服务器106组可使用广域网(WAN)连接或城域网(MAN)连接互联。例如,群38可包括物理上位于不同大陆或大陆的不同区域、国家、州、城市、校园或房间的服务器106。如果使用局域网(LAN)连接或一些直连形式来连接服务器106,则可增加群38中的服务器106间的数据传送速度。服务器106可被称为文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中 ,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户机102可以有作为客户机节点寻求访问服务器上的应用的能力,也可以有作为应用服务器为其它客户机102a-102n提供对寄载的应用的访问的能力。在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群38中的服务器106的其中一个直接通信。在又一个实施例中,客户端102执行程序邻近应用(program neighborhood application)以与群38内的服务器106通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群38中的服务器106通信。通过网络104,客户机102例如可以请求执行由群38中的服务器106a-106n寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供识别和提供与寄载所请求的应用的服务器106’相关的地址信息所需的功能。在一个实施例中,服务器106提供web服务器的功能。在又一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自服务器106b对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与由该应用的列举所识别的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在又一个实施例中,客户机102接收由执行服务器106上所识别的应用而产生的诸如显示数据的应用输出数据。与其他设备一起部署现在参考图1B,描述了网络环境的又一个实施例,在其中,网络优化设备200和诸如网关、防火墙或加速设备的一个或多个其他设备205、205’(总的称为设备205或第二设备205)部署在一起。例如,在一个实施例中,设备205是防火墙或安全设备,而设备205’是LAN加速设备。在一些实施例中,客户机102可通过一个或多个第一设备200和一个或多个第二设备205与服务器106通信。一个或多个设备200和205可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,第二设备205可与第一设备200位于同一网络104上。在其他实施例中,第二设备205可位于与第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在同一网络上,例如网络104,而第一设备200,和第二设备205,在同一网络上,例如网络104,,。在一个实施例中,第二设备205包括任何类型和形式的传输控制协议或传输后终止装置,例如网关或防火墙装置。在一个实施例中,设备205通过与客户机建立第一传输控制协议连接并且与第二设备或服务器建立第二传输控制协议连接来终止传输控制协议。在又一个实施例中,设备205通过改变、管理或控制在客户机和服务器或第二设备之间的传输控制协议连接的行为来终止传输控制协议。例如,设备205可以改变、排队、转发或传输网络分组以有效地终止传输控制协议连接或者起到终止该连接的作用或模拟为终止该连接。在一些实施例中,第二设备205是性能增强代理。在一个实施例中,设备205提供虚拟专用网(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN (SSL VPN)连接。在其他实施例中,设备205提供基于IPsec (互联网协议安全)的VPN连接。在一些实施例中,设备205提供任何一个或多个下列功能:压缩、加速、负载平衡、交换/路由、缓存和传输控制协议(TCP)加速。在一个实施例中,设备205是由位于佛罗里达州Ft.Lauderdale的CitrixSystems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备200包括执行诸如SSL VPN连通、SSL卸载、交换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或功能的任何逻辑、功能、规则或操作。在一些实施例中,设备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提供端到端安全传输层连接。在一个实施例中,设备205寄载虚拟专用网络104上的客户机102的内部网互联网协议或者IntranetIP地址。客户机102具有本地网络标识符,诸如第一网络104上的互联网协议(IP)地址和/或主机名称。当经由设备205连接到第二网络104’时,设备205在第二网络104’上为客户机102建立、分配或者以其它方式提供IntranetIP (内部网IP),其是诸如IP地址和/或主机名称的网络标识符。使用客户机的所建立的IntranetIP,设备205在第二或专用网104’上监听并接收指向该客户机102的任何通信。在一个实施例中,设备205在第二专用网络104上用作或者代表客户机102。在一些实施例中,设备205具有加密引擎,所述加密引擎提供用于操控诸如SSL或TLS的任何安全相关协议或其中涉及的任何功能的处理的逻辑、商业规则、功能或操作。例如,加密引擎加密并解密通过设备205传输的网络分组,或其任何部分。加密引擎也可代表客户机102a-102n、服务器106a_106n或设备200、205来设置或建立SSL或TLS连接。因此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧道协议来提供在客户机102a-102n和服务器106a_106n间的虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其它实施例中,加密引擎包括运行在加密处理器260上的可执行指令。在一些实施例中,设备205为在客户机102和服务器106之间的通信提供下列一个或多个加速技术:1)压缩 、2)解压缩、3)传输控制协议池、4)传输控制协议多路复用、5)传输控制协议缓冲、以及6)高速缓存。在一个实施例中,设备200通过打开与每一服务器106的一个或者多个传输层连接并且维持这些连接以允许由客户机经由互联网的重复数据访问,来为服务器106缓解由重复打开和关闭到客户机102的传输层连接所造成的大量处理负载。该技术此处称为“连接池”。在一些实施例中,为了经由池化的传输层连接无缝拼接从客户机102到服务器106的通信,设备205通过在传输层协议级修改序列号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在到来的分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改为目的服务器的网络地址。在发出的分组(即,自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。分组的序列号和确认号也被转换为到客户机102的设备205的传输层连接上的由客户机102所期待的序列号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。在又一个实施例中,设备205为客户机102和服务器106之间的通信提供交换或负载平衡功能。在一些实施例中,设备205根据层4有效载荷或应用层请求数据来分配流量并将客户机请求定向到服务器106。在一个实施例中,尽管网络分组的网络层或者层2标识了目的服务器106,但设备205利用承载为传输层分组的有效载荷的数据和应用信息来确定服务器106以便分发网络分组。在一个实施例中,设备205的健康监控程序监控服务器的健康来确定分发客户机请求到哪个服务器106。在一些实施例中,如果设备205检测到某个服务器106不可用或者具有超过预定阈值的负载,设备205可以将客户机请求定向或者分发到另一个服务器106。在一些实施例中,设备205用作域名服务(DNS)解析器或以其他方式提供对来自客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备205以设备205的IP地址或其所寄载的IP地址来响应客户机的DNS请求。在此实施例中,客户机102把用于该域名的网络通信发送到设备200。在又一个实施例中,设备200以第二设备200’的或其所寄载的IP地址来响应客户机的DNS请求。在一些实施例中,设备205使用由设备200确定的服务器106的IP地址来响应客户机的DNS请求。在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295’提供用于检测和阻断非法请求的规则。在一些实施例中,应用防火墙防御拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或互联网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲区泄出,2) CG1-BIN参数操纵,3)表单/隐藏字段操纵,4)强制浏览,5) cookie或会话中毒,6)被破坏的访问控制列表(ACLs)或弱密码,7)跨站脚本处理(XSS),8)命令注入,9) SQL注入,10)错误触发敏感信息泄露,11)对加密的不安全使用,12)服务器错误配置,13)后门和调试选项,14)网站涂改,15)平台或操作系统弱点,和16)零天攻击。在一个实施例中,对下列情况的一种或多种,设备的防火墙以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enf0rcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookie不被修改。在其它实施例中,设备205通过执行合法的URL来防御强制浏览。在其他实施例中,应用防火墙设备205保护在网络通信中包含的任何机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任一网络通信以识别在网络分组的任一字段中的任一机密信息。在一`些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。基于这些出现,在一个实施例中,应用防火墙可以对网络通信采取策略行动,诸如阻止发送网络通信。在又一个实施例中,应用防火墙可以重写、移动或者以其它方式掩盖该所识别的出现或者机密信息。尽管总的称为网络优化或第一设备200和第二设备205,但第一设备200和第二设备205可以是相同类型和形式的设备。在一个实施例中,第二设备205可执行与第一设备200相同的功能,或部分相同的功能,反之亦然。例如,第一设备200和第二设备205都可以提供加速技术。在一个实施例中,第一设备200可执行LAN加速而第二设备205执行WAN加速,或者反之亦然。在又一个实施例中,第一设备200也可以与第二设备205 —样是传输控制协议终止装置。而且,尽管设备200和205被显示为在网络上单独的装置,但设备200和/或设备205可以是客户机102或服务器106的一部分。现参考图1C,描述了用于部署设备200的网络环境的其他实施例。在如图1C的上部所描述的又一个实施例中,设备200可以部署为网络104上单个设备或单个代理。例如,设备200可以被设计、构建或调整来执行此处所讨论的WAN优化技术,而不需要第二协同设备200’。在如图1C的下部所描述的其他实施例中,可以将单个设备200与一个或多个第二设备205部署在一起。例如,诸如Citrix WANScaler设备的WAN加速第一设备200可以与LAN加速或应用防火墙第二设备205 (例如Citrix NetScaler设备)部署在一起。计算装置客户机102、服务器106和设备200和205可以被部署为和/或执行在任何类型和形式的计算装置上,诸如能够在任何类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图1D和IE描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1D和IE所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1D所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a — 130b (总的使用附图标记130表不),以及与中央处理单元101通信的高速缓存存储器140。中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由加利福尼亚州MountainView的Intel公司制造的 微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;由纽约州 White Plains 的 International Business Machines 公司制造的 RS/6000 处理器;或者由加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。主存储器单元122可以是能够存储数据并允许微处理器101直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM (FPM DRAM)、增强型DRAM (EDRAM)、扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、突发式扩展数据输出DRAM(BED0 DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率 SDRAM (DDRSDRAM)、增强型 SRAM (ESDRAM)、同步链路 DRAM (SLDRAM)、直接 RambusDRAM (DRDRAM)或铁电RAM (FRAM)0主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150 (在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口 103直接与主存储器122通信的计算装置100的实施例。例如,在图1D中,主存储器122可以是DRDRAM。图1D描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为后端总线。其他实施例中,主处理器101使用系统总线150和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1F中所示的实施例中,处理器101通过本地系统总线150与多个1/0装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何1/0装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PC1-X总线、PC1-Express总线或NuBus。对于1/0装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器124通信。图1E说明了主处理器101通过超传输(HyperTransport)、快速I/O或者Inf iniBand直接与I/O装置130通信的计算机100的一个实施例。图1E还描述了在其中混合本地总线和直接通信的实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。计算装置100可以支持任何适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任何客户机代理120或其部分的软件和程序的任何其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任何程序的应用软件程序。或者,可以使用安装装置116的任何一种作为存储装置128。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如KNOPPIX ,一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口 118, 所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如802.ll,Tl,T3、56kb、X.25)、宽带连接(如ISDN、帧中继、ATM)、无线连接、或上述任何或所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100接口到能够通信并执行本文所述的操作的任何类型的网络的任何其它设备。计算装置100中可以包括各种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1C所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127 (如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接以接纳手持USB存储装置,例如由位于加利福尼亚州Los Alamitos的Twintech Industry公司制造的USB闪存驱动系列装置。在一些实施例中,计算装置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连接的计算装置IOOa和100b。这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置124a-124n的各种方法和实施例。在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、Fireffire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。图1C和ID中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如Microsoft Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MAC OS ,任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专
有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括:WIND0WS3.x、WIND0WS95、WIND0WS98、WIND0WS2000, WINDOWS ΝΤ3.51、WINDOWS ΝΤ4.0、WINDOWS CE 和 WINDOWS XP,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机出品的MacOS ;由位于纽约州Armonk的国际商业机器公司出品的OS/2 ;以及由位于犹他州Salt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由Palm公司出品的Treo 180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任何工作站、桌面计算机、膝上型或笔记本计算机、服 务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。B.系统和设各架构现参考图2A,描述了用于传送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于向一个或多个客户机102传送计算环境或应用和/或数据文件的应用传送系统290。总的来说,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可驻留在公司的远程办公室里,例如分支机构,而服务器106可驻留在公司数据中心。客户机102包括客户机代理120以及计算环境215。计算环境215可执行或操作用于访问、处理或使用数据文件的应用。可经由设备200和/或服务器106传送计算环境215、应用和/或数据文件。在一些实施例中,设备200向客户机102加速传送计算环境215或者其任何部分。在一个实施例中,设备200通过应用传送系统290加速计算环境15的传送。例如,可使用此处描述的实施例来加速从公司中央数据中心到远程用户位置(例如公司的分支机构)的流应用(streaming application)及该应用可处理的数据文件的传送。在又一个实施例中,设备200加速客户机102和服务器106之间的传输层流量。在又一个实施例中,设备200控制、管理、或调整传输层协议以便加速计算环境的传送。在一些实施例中,设备200使用缓存和/或压缩技术来加速计算环境的传输。
在一些实施例中,基于多个执行方法并且基于通过策略引擎295所应用的任一验证和授权策略,应用传送管理系统290提供将计算环境传送到远程的或者其它的用户的桌面的应用传送技术。使用这些技术,远程用户可以从任何网络连接装置100获取计算环境并且访问存储应用和数据文件的服务器。在一个实施例中,应用传送系统290可驻留在服务器106上或在其上执行。在又一个实施例中,应用传送系统290可驻留在多个服务器106a-106n上或在其上执行。在一些实施例中,应用传送系统290可在服务器群38内执行。在一个实施例中,执行应用传送系统290的服务器106也可存储或提供应用和数据文件。在又一个实施例中,一个或多个服务器106的第一组可执行应用传送系统290,而不同的服务器106η可存储或提供应用和数据文件。在一些实施例中,应用传送系统290、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统290的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可通过网络104、104’和设备200请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。在一些实施例中,应用传送系统290包括Citrix Systems公司的Citrix AccessSuite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微软公司开发的Microsoft Windows终端服务中的任何一个。在一个实施例中,应用传送系统290可以通过远程显示协议或者以其它方式通过基于远程计算或者基于服务器计算来传送一个或者多个应用到客户机102或者用户。在又一个实施例中,应用传送系统290可以通过应用流来传送一个或者多个应用到客户机或者用户。在一个实施例中,应用传送系统290包括策略引擎295,其用于控制和管理对应用的访问、应用执行方法的选择 以及应用的传送。在一些实施例中,策略引擎295确定用户或者客户机102可以访问的一个或者多个应用。在又一个实施例中,策略引擎295确定应用应该如何被传送到用户或者客户机102,例如执行的方法。在一些实施例中,应用传送系统290提供多个传送技术,从中选择应用执行的方法,例如基于服务器的计算、本地流式传输或传送应用给客户机120以用于本地执行。在一个实施例中,客户机102请求应用程序的执行而包括服务器106的应用传送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在又一个实施例中,服务器106从客户机102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统290列举对于客户机102可用的多个应用程序。应用传送系统290接收执行所列举的应用的请求。应用传送系统290选择预定数量的方法之一来执行所列举的应用,例如响应策略引擎的策略。应用传送系统290可以选择执行应用的方法,使得客户机102接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统290可以选择执行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用传送系统290可以选择执行应用的方法,以通过网络104流式传输应用到客户机102。
客户机102可以执行、操作或者以其它方式提供应用,所述应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机一服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任何其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任何瘦-客户端或远程显示协议来显示输出到客户机102,所述瘦_客户端或远程显示协议例如由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于华盛顿州Redmond的微软公司出品的远程桌面协议(RDP )。应用可使用任何类型的协议,并且它可为,例如,HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。在一些实施例中,服务器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群38作为一个应用来执行Citrix Systems Inc.的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微软公司开发的 Microsoft Windows终端服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州FortLauderdale的Citrix Systems Inc.开发的ICA客户机。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。另外,服务器106可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州Redmond 的 Microsoft 公司制造的 Microsoft Exchange, web 或 Internet 服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的月艮务或产品,例如位于加利福尼亚州Santa Barbara的Citrix Online Division提供的GoToMeeting ,位于加利福尼亚州Santa Clara的WebEx Inc.提供的WebEx ,或者位于华盛顿州 Redmond 的 Microsoft 公司提供的 Microsoft Office Live Meeting。示例设备架构图2A也示出设备200的示例实施例。仅通过示例来提供图2A的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图1D和IE所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和/或传输通信的一个或多个网络堆栈267A-267N和一个或多个网络端口 266A-266N。设备200还具有用于优化、加速或以其他方式改善经过设备200的任何网络流量或通信的质量、操作或性能。设备200包括操作系统或在操作系统的控制之下。设备200的操作系统可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Microsoft Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的Mac OS .任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、 或者能够运行在设备200上并执行此处所描述的操作的任何其它操作系统。
设备200的操作系统分配、管理或以其他方式将可用的系统存储器分离到被称为内核或系统空间和用户或应用空间中。通常保留内核空间用于运行内核,所述内核包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间也包括与网络优化引擎250或其任何部分协同工作的多个网络服务或进程。另外,内核的实施例将依赖于通过设备200安装、配置或以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或以其他方式运行于用户模式的程序所使用的操作系统的存储区域或部分。用户模式应用不能直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或应用空间来执行或运行应用以及供应用户级程序、服务、进程和/或任务。设备200具有一个或多个网络端口 266,用于通过网络104传输和接收数据。网络端口 266提供在计算装置和网络104或另一个装置100之间的物理和/或逻辑接口,用于传输和接收网络通信。网络端口 266的类型和形式取决于网络的类型和形式以及用于连接到网络的介质的类型。而且,网络端口 266和网络堆栈267的、为其供应的或者其使用的任何软件可运行在内核空间或用户空间。在一个实施例中,设备200具有一个网络堆栈267,例如基于TCP/IP的堆栈,用于在网络105上与客户机102和/或服务器106通信。在一个实施例中,网络堆栈267用于与诸如网络104第一网络以及第二网络104’通信。在又一个实施例中,设备200可具有两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A可与第一网络端口 266A联合使用以在第一网络104上通信。第二网络堆栈可与第二网络端口 266N联合使用以在第二网络104’上通信。在一个实施例中,网络堆栈267包括用于为由设备200产生的一个或多个网络分组进行排队的一个或多个缓冲器。网络堆栈267可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈267包括用于网络协议组的软件实现。网络堆栈267可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联
(OSI)通信模型的任何网络层。这样,网络堆栈267可包括用于下列OSI模型的任何一层的任何类型和形式的协议:1)物理链路层;2)数据链路层;3)网络层;4)传输层;5)会话层);6)表示层,以及7)应用层。在一个实施例中,网络堆栈267可包括在互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在以太网协议上承载TCP/IP协议,所述以太网协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802.3覆盖的这些协议。在一些实施例中,网络堆栈267包括任何类型和形式的无线协议,例如IEEE802.11和/或移动互联网协议。考虑到基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI) (email)、文件传输协议(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),例如用于语音通信或实时数据通信。另外,网络堆栈267可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络层驱动器可作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分被包括。在一些实施例中,网络堆栈267的任何网络驱动器可被定制、修改或调整以提供支持此处描述的任何技术网络堆栈267的定制或修改部分。在一个实施例中,设备200使用单个网络堆栈267来提供或维持在客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或控制在客户机和服务器之间的传输控制协议连接的行为来有效地终止传输层连接。在这些实施例中,设备200可使用单个网络堆栈267。在其他实施例中,设备200终止第一传输层连接,例如客户机102的TCP连接,并建立客户机102使用的或代表客户机102的到服务器106的第二传输层连接,例如,终止在设备200和服务器106的第二传输层连接。可通过单个网络堆栈267建立第一和第二传输层连接。在其他实施例中,设备200可使用多个网络堆栈,例如267A和267N。在这些实施例中,在第一网络堆栈267A可建立或终止第一传输层连接,且在第二网络堆栈267N可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络分组,并且另一个网络堆栈可用于在第二网络上接收和传输网络分组。如图2A所示,网络优化引擎250包括一个或多个下列元件、组件或模块:网络分组处理引擎250、LAN/WAN检测器210、流控制器220、QoS引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’。网络优化引擎250或其任何部分可包括软件、硬件或软件和硬件的任何组合。而且网络引擎250的、为其供应的或由其使用的任何软件可运行在内核空间或用户空间。例如,在一个实施例中,网络优化引擎250可运行在内核空间。在又一个实施例中,网络优化引擎250可运行在用户空间。在又一个实施例中,网络优化引擎250的第一部分可运行在内核空间而网络优化引擎250的第二部分可运行在用户空间。 网络分鉬处理引擎网络分组引擎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分组的有效载荷。分组引擎240可包括用于在例如接收网络分组或者传输网络分组的处理期间排队一个或多个网络分 组的缓冲器。另外,分组引擎240与一个或多个网络堆栈267通信以通过网络端口 266发送和接收网络分组。分组引擎240包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入的(即,接收的)或输出的(即,传输的)网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。分组处理定时器向分组引擎240提供任何类型和形式的信号以通知、触发或传输时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以毫秒级操作,例如100ms、50ms、25ms、10ms、5ms 或 Ims0在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器220、QoS引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、QoS引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于IOms的时间间隔),可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238的任何逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可响应于集成分组引擎240和/或分组处理定时器242来执行任何高速缓存的对象的终止。在又一个实施例中,高速缓存的对象的终止或无效时间被设定为与分组处理定时器的时间间隔相同的粒度级,例如每10ms。高速缓存管理器

高速缓存管理器232可包括软件、硬件或软件和硬件的任何组合,以将数据、信息和对象存储到在存储器或存储中的高速缓存、提供高速缓存访问以及控制和管理高速缓存。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式(例如标记语言)的数据,或者通过任何协议的通信的任何类型的数据。在一些实施例中,高速缓存管理器232复制存储在其他地方的原始数据或先前计算、生成或传输的数据,其中相对于读高速缓存存储器或存储元件,需要更长的访问时间以取得、计算或以其他方式得到原始数据。一旦数据被存储在高速缓存中,通过访问高速缓存的副本而不是重新获得或重新计算原始数据即可进行后续操作,因此而减少了访问时间。在一些实施例中,高速缓存可以包括设备200的存储器中的数据对象。在又一个实施例中,高速缓存可以包括设备200的任一类型和形式的存储元件,诸如硬盘的一部分。在一些实施例中,装置的处理单元可提供由高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储区或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。另外,高速缓存管理器232包括用于执行设备200的任何高速缓存技术的任何逻辑、功能、规则或操作。在一些实施例中,高速缓存管理器232可作为应用、库、程序、服务、进程、线程或任务而操作。在一些实施例中,高速缓存管理器232可包括任何类型的通用处理器(GPP),或者任何其他类型的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑设备(PLD),或者专用集成电路(ASIC)。策略引擎策略引擎295’包括用于提供和应用一个或多个策略或规则到设备200的任一部分的功能、操作或配置的任何逻辑、功能或操作。策略引擎295’可包括例如智能统计引擎或其它可编程应用。在一个实施例中,策略引擎295’提供配置机制以允许用户识别、指定、定义或配置用于网络优化引擎250或其任何部分的策略。例如,策略引擎295’可提供用于缓存哪些数据、何时缓存该数据、为谁缓存该数据、何时终止高速缓存中的对象或刷新高速缓存的策略。在其他实施例中,除了对安全、网络流量、网络访问、压缩或由设备200执行的任何其它功能或操作的访问、控制和管理之外,策略引擎236可包括任何逻辑、规则、功能或操作以确定和提供对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。在一些实施例中,策略引擎295’可基于下列的任何一个或多个来提供和应用一个或多个策略:用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或网络流量的内容。在一个实施例中,策略引擎295’基于网络分组的任何协议层的字段或首部来提供和应用策略。在又一个实施例中,策略引擎295’基于网络分组的任一有效载荷来提供和应用策略。例如,在一个实施例中,策略弓I擎295 ’基于对被承载为传输层分组的有效载荷的应用层协议内容的特定部分的识别来应用策略。在又一个实施例中,策略引擎295’基于由客户机、服务器或用户证书识别的任何信息来应用策略。在又一个实施例中,策略引擎295’基于例如通过任何类型和形式的端点检测(参见下面所描述的客户机代理的收集代理示例)所获得的关于客户机102的任何属性或特征来应用策略。在一个实施例中,策略引擎295’和应用传送系统290的策略引擎295联合或协同工作。在一些实施例中,策略引擎295’是应用传送系统290的策略引擎295的一个分布式的部分。在又一个实施例中,应用传送系统290的策略引擎295被部署于或执行在设备200上。在一些实施例中,策略引擎295、295’都操作在设备200上。在又一个实施例中,设备200的策略引擎295’或其一部分操作在服务器106上。多协议和多层压缩引擎

压缩引擎238包括用于压缩一个或多个协议的网络分组(例如由设备200的网络堆栈267使用的任何协议)的任何逻辑、商业规则、功能或操作。压缩引擎238也可被称为多协议压缩引擎238,这是由于其可以被设计、构建为或能够压缩多个协议。在一个实施例中,压缩引擎238使用对上下文不敏感的压缩,其可在不了解数据类型的情况下对数据进行压缩。在又一个实施例中,压缩引擎238使用对上下文敏感的压缩。在该实施例中,压缩引擎238利用数据类型的知识来从一系列合适的算法中选择特定的压缩算法。在一些实施例中,使用特定协议的知识来执行上下文敏感的压缩。在一个实施例中,设备200或压缩引擎238可使用端口号(例如,公知端口),以及来自连接本身的数据来确定要使用的合适的压缩算法。一些协议仅使用一种类型的数据,仅要求当连接建立时可被选择的单个压缩算法。其他协议在不同的时间包含不同类型的数据。例如,POP、MSP、SMTP和HTTP都移动夹杂其他协议数据的任意类型的文件。在一个实施例中,压缩引擎238使用增量型压缩算法。在又一个实施例中,压缩引擎238使用首地点压缩以及搜索在高速缓存、存储器或盘中存储的数据间的重复模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎238使用有损压缩算法。在一些情况下,数据类型的知识和有时来自用户的许可被要求使用有损压缩算法。压缩不限于协议的有效载荷。协议本身的控制字段也可以被压缩。在一些实施例中,压缩引擎238使用与用于有效载荷的算法不同的算法。在一些实施例中,压缩引擎238在网络堆栈267的一个或多个层进行压缩。在一个实施例中,压缩引擎238在传输层协议处进行压缩。在又一个实施例中,压缩引擎238在应用层协议处进行压缩。在一些实施例中,压缩引擎238在层2-4协议处进行压缩。在其他实施例中,压缩引擎238在层5-7协议处进行压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。在一些实施例中,压缩引擎238使用基于存储器的压缩、基于高速缓存的压缩或基于盘的压缩或上述的任一组合。这样,压缩引擎238也可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用在存储器(例如RAM)中存储的数据历史。在又一个实施例中,压缩引擎238使用在高速缓存(例如处理器的L2高速缓存)中存储的数据历史。在其他实施例中,压缩引擎238使用存储到盘或存储单元的数据历史。在一些实施例中,压缩引擎238使用基于高速缓存的、基于存储器的和基于盘的数据历史的分层结构。压缩引擎238可首先使用基于高速缓存的数据来确定用于压缩的一个或多个数据匹配,然后可检查基于存储器的数据以确定用于压缩的一个或多个数据匹配。在另一种情况下,压缩引擎238可在检查基于高速缓存的和/或基于存储器的数据历史之后检查盘存储来找出用于压缩的数据匹配。在一个实施例中,多协议压缩引擎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欺骗协议(TCP spoofing protocol)。同样的,多协议压缩引擎238为用户加速经由桌面客户机以及甚至移动客户机访问应用的性能。所述桌面客户机例如Microsoft Outlook和非web瘦客户机,例如由像Oracle、SAP和Siebel的通用企业应用所启动的任何客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络`堆栈267的分组处理引擎240集成,多协议压缩引擎能够压缩由传输层协议携带的任何协议,例如任何应用层协议。LAN/ffAN 检测器LAN/WAN检测器238包括用于自动检测慢速侧连接(例如,诸如内部网的广域网(WAN)连接)和关联端口 267,以及快速侧连接(例如,局域网(LAN)连接)和关联端口 267的任何逻辑、商业规则、功能或操作。在一些实施例中,LAN/WAN检测器238监控设备200的网络端口 267上的网络流量以便检测同步分组(有时被称为“加标记的”网络分组)。同步分组识别网络流量的类型或速度。在一个实施例中,同步分组识别WAN的速度或WAN类型的连接。LAN/WAN检测器238也识别对加标记的同步分组的确认分组的接收以及其在哪个端口上被接收。接着,设备200将自身配置为操作所识别的、加标记的同步分组到达的端口以使得该端口上的速度被设置为与连接到该端口的网络相关联的速度。那么,另一个端口被设置为与连接到该端口的网络相关联的速度。为了本文讨论的方便,“快速”侧可参考关于与广域网(WAN)(例如,互联网)的连接,并且以该WAN的网络速度操作。类似地,“慢速”侧可参考关于与局域网(LAN)的连接并且以LAN的网络速度操作。然而,应指出网络的“快速”和“慢速”侧可以在每连接的基础上改变并且是对于网络连接的速度或者网络拓扑类型的相关术语。这样的配置可以用在复杂的网络拓扑中,其中网络仅在与相邻网络比较时是“快速”或“慢速”,而不是绝对的“快速”或“慢速”。在一个实施例中,LAN/WAN检测器238可用于使设备200自动发现其所连接的网络。在又一个实施例中,LAN/WAN检测器238可用于检测在网络104中部署的第二设备200 ’的存在或在场。例如,根据图1A的操作中的自动发现机制起到以下作用:将设备200和200’置于与链接客户机102和服务器106的连接在一条线上。设备200和200’处于连接两个LAN的低速链路(例如,互联网)的端点处。在一个示例实施例中,设备200和200’各自包括两个端口,一个端口与“较低”速度的链路连接而另一个端口与“较高”速度的链路(例如,LAN)连接。到达一个端口的任一分组被复制到另一个端口。因此,设备200和200’各自被配置为充当两个网络104之间的桥。当诸如客户机102的端节点打开与诸如服务器106的另一个端节点的新的TCP连接时,客户机102向服务器106发送具有同步(SYN)首部位组的TCP分组或SYN分组。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组穿过设备200时,设备200给该分组插入、附加或以其他方式提供特有的TCP首部选项,以宣告其存在。如果该分组穿过第二设备(在该示例中设备200’),第二设备记录该SYN分组中的首部选项。服务器106用同步确认(SYN-ACK)分组来响应该SYN分组。当SYN-ACK分组穿过设备200’时,TCP首部选项被标记(例如,附加、插入或添加)到该SYN-ACK分组以便向设备200宣告设备200’的存在。当设备200收到该分组时,设备200,200’此时互相察觉并且该连接可以被适当地加速。关于LAN/WAN检测器238的操作,描述了使用SYN分组来检测网络的“快速”侧和“慢速”侧的方法或过程。在客户机102和服务器106之间建立传输层连接的期间,设备200通过LAN/WAN检测器238确定SYN分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该 分组复制到另一个端口之前ACK标记从该分组删除。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。设备200接着给该SYN分组加上ACK标记并将该分组复制到另一个端口。在又一个实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快速侧和慢速侧。设备200通过LAN/WAN检测器238确定SYN-ACK分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前从该分组删除ACK标记。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。LAN/WAN检测器238确定SYN分组是否被加了标记。如果该SYN分组没有被加标记,那么设备200将该分组复制到另一个端口。如果该SYN分组被加了标记,那么该设备在将该分组拷贝到另一个端口之前给SYN-ACK分组加
T 己 O设备200、200’可以添加、插入、修改、附加或以其他方式提供TCP选项首部中的任
何信息或数据,以提供关于网络连接、网络流量或者设备200的配置或操作的任何信息、数据或特征。在这种方式中,设备200不仅向另一个设备200’宣告其存在或者标记较高或较低速度的连接,该设备200还通过TCP选项首部提供关于该设备或该连接的其他信息和数据。TCP选项首部信息可能是对设备有用的或由设备用于控制、管理、优化、加速或改善经过设备200的网络流量,或者以其他方式配置其自身或网络端口的操作。尽管通常LAN/WAN检测器238被结合检测网络连接的速度或设备的存在来描述,但LAN/WAN检测器238可被用于将设备200的任何类型的功能、逻辑或操作应用到网络流量的端口、连接或流。更具体地,每当设备在不同的端口执行不同的功能时都可以自动分配端口,其中给任务分配端口可以在该单元操作期间,和/或每个端口的网络段的性质可被设备200发现。流控制流控制器220包括用于优化、加速或以其他方式改善网络分组的传输层通信的性能、操作或服务质量或者在传输层的分组的发送的任何逻辑、商业规则、功能或操作。流控制器(有时也被称为流控制模块)调节、管理和控制数据传输速率。在一些实施例中,流控制器220被部署在或连接在网络104中的带宽瓶颈处。在一个实施例中,流控制器220有效地调节、管理和控制带宽的使用或利用。在其他实施例中,流控制模块也可以被部署在延迟转换(从低延迟到高延迟)的网络上的位置和具有介质损失的链路(例如无线或卫星链路)上的位置。在一些实施例中,流控制器220可包括用于控制网络传输的接收速率的接收器侧流控制模块和用于控制网络分组的传输速率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220被部署在第一设备200上并且第二流控制器220’被部署在第二设备200’上。同 样,在一些实施例中,第一设备200控制接收器侧上的数据流而第二设备200’控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于经过设备200的网络通信的接收器侧和发送器侧的流控制。在一个实施例中,配置流控制模块220以使瓶颈处的带宽被更充分地利用,以及在一些实施例中,配置流控制模块220以使瓶颈处的带宽不被过度利用。在一些实施例中,流控制模块220透明地缓冲(或者重新缓冲例如发送器已经缓冲的数据)经过具有相关联的流控制模块220的节点间的网络会话。当会话经过两个或多个流控制模块220时,一个或多个流控制模块控制会话的速率。在一个实施例中,用有关瓶颈带宽的预定数据来配置流控制模块200。在又一个实施例中,流控制模块220可被配置为检测瓶颈带宽或与其关联的数据。与诸如TCP的传统网络协议不同,接收器侧流控制模块220控制数据传输速率。接收器侧流控制模块220通过将传输速率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块(例如,220)的数据传输速率。在一个实施例中,接收器侧流控制模块220在由接收器(例如服务器106)向发送器(例如客户机102)发送的确认(ACK)分组(或信号)上捎带这些传输速率限制。接收器侧流控制模块220响应于由发送器侧流控制模块220’发送的速率控制请求来执行这一工作。可以在由发送器106发送的数据分组上“捎带”来自发送器侧流控制模块220’的请求。在一些实施例中,流控制器220操纵、调整、模拟、改变、改进或以其他方式修改传输层协议的行为以便提供传输层的传送、数据速率和/或带宽利用的改善的性能或操作。流控制器220可在传输层实现多个数据流控制技术,包括但不限于I)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传技术,4)波前检测和消除二义性,5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分组。尽管此处通常将发送器描述为客户机102,将接收器描述为服务器106,但发送器可以是诸如网络104上任一计算装置100或者服务器106的任一端点。同样地,接收器可以是客户机102或者网络104上的任何其他计算装置。预确认概括来讲预确认流控制技术,在一些实施例中,流控制器220处理确认并为发送器重传确认,有效地终止发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的,设备200在网络架构中的一个可能的部署。在该示例实施例中,发送计算机或者客户机102在网络104上例如经由交换机传输数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据穿过设备200,使得设备200可以将任一必要的算法应用到该数据。进一步在该示例中,客户机102传输由设备200接收的分组。当设备200接收从客户机102向接收者传输的经过VPN设备205的分组时,设备200保留分组的副本并且将该分组向下游转发到VPN设备205。设备200接着生成确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK (即预确认)使发送器102相信分组已经被成功传输、释放发送器的资源用于后续的处理。在要求重传分组的事件中,设备200保留该分组的副本,使得发送器102不必处理数据的重传。提前生成确认可以被称为“提前确认(preack)”。如果要求重传分组,设备200将分组重传到发送器。设备200可以确定当发送器处于传统系统中时是否需要重传,例如,在预定时间段之后对于该分组如果没有接收到确认则确定分组丢失。为此,设备200监控由例如服务器106 (或者任何其他下游网络实体)的接收端点生成的确认,以便其可以确定是否已经成功传送分组或者需要重传分组。如果设备200确定分组已经被成功 传送,则设备200能够自由地丢弃所保存的分组数据。设备200还可以禁止转发对已经由发送端点接收的分组的确认。在上述实施例中,设备200经由流控制器220通过预确认(也称为“提前确认”)的传送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于给发送端点提供溢出控制的机制。如果没有溢出机制,设备200将耗尽存储器,因为设备200存储已经向发送端点提取确认的但还没有被确认为由接收端点接收的分组。因此,在发送器102传输分组到设备200快于设备200向下游转发分组的情况下,设备200中可用于存储未被确认的分组数据的存储器将迅速填满。用于溢出控制的机制允许设备200控制来自发送器的分组的传输以避免该问题。在一个实施例中,设备200或者流控制器220包括固有的“自同步(self-clocking)”溢出控制机制。该自同步归因于这样的顺序,其中设备200可以被设计为向下游传输分组并向发送器102或者106发送ACK。在一些实施例中,设备200直到其向下游传输分组后为才提前确认分组。以此方式,发送器102将以设备200能够传输分组的速率而不是以设备200从发送器100接收分组的速率来接收ACK。这有助于调节来自发送器102的分组的传输。
窗口虚拟化设备200可以实现的另一个溢出控制机制是使用TCP窗口大小参数,其告知发送器接收器允许该发送器填满多少缓冲区。预确认中的非零窗口大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续向设备传输数据,而零窗口大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲区变满时通过适当地设置每一预确认中的TCP窗口大小来调节来自发送器的分组的流量。另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据传送到较慢侧时,设备299中的溢出控制机制可以在向发送器发送非零窗口通告之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗口分组(例如,四个分组的窗口大小)之前进行等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间为止。由于对于四个数据分组的每个组仅发送两个ACK分组,而不是对于四个数据分组要发送八个ACK分组,因此这将开销降低到大约原来的四分之一。设备200或流控制器220可用于溢出控制的另一技术是TCP延迟ACK机制,其跳过ACK来降低网络流量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或直到发生固定的超时为止。该机制单独导致开销减半,而且,通过将分组的数量增加到两个以上,降低了附加的开销。但是仅延迟ACK本身不足以控制溢出,并且设备200还可以使用在ACK上的通告窗口机制来控制发送器。当这样做时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。在一个实施例中,流控制器220不对一组分组的最后一个分组进行提取确认。通过不提取确认最后一个分组或 者该组中分组的至少一个,设备避免对一组分组的错误确认。例如,如果设备将发送对最后一个分组的预确认而该分组随后丢失,那么发送器在分组没有被传送时已经欺骗认为其被传送。考虑到分组已被传送,发送器将丢弃该数据。如果设备也丢失该分组,那么不能将该分组重传到接收者。通过不对一组分组的最后一个分组进行提前确认,发送器直到该分组被传送时才将其丢弃。在又一个实施例中,流控制器220可以使用窗口虚拟化技术来控制网络连接的带宽利用或者流速。虽然根据检查诸如RFC1323的传统文献其可能不是直接明显的,但是用于诸如TCP的传输层协议的发送窗口是有效的。由于发送窗口消耗缓冲区空间(尽管在发送器上),所以发送窗口类似于接收窗口。发送器的发送窗口包括还没有被接收器确认的、由应用发送的所有数据。在要求重传的情况下,必须在存储器中保留该数据。由于存储器是共享资源,所以一些TCP堆栈的实现限制了该数据的大小。当发送窗口满时,应用程序尝试发送更多的数据导致阻塞应用程序直到空间可用为止。随后接收的确认将释放发送窗口存储器并且不再阻塞应用程序。在一些实施例中,该窗口大小就是一些TCP实现中的套接字缓冲区大小。在一个实施例中,流控制模块220被配置为提供对增加的窗口(或缓冲区)大小的访问。该配置还可以被称为窗口虚拟化。在作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗口比例(window scale)的位串。在一个实施例中,“窗口 ”可以在发送、接收或二者的上下文中提及。窗口虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图1A和IB的任何一个环境,建立例如客户机102 (为讨论方便,现称为源节点102)的源节点与例如服务器106 (为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于64k字节的任何缓冲区大小进行窗口缩放(window scaling),其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是O或I的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(B卩,会话初始化)期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220源节点102 (其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储O。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从O或者I增加到4。当第二流控制模块220接收SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106的比例(例如,O或I)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如O或者I)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如TCP分组)的中的窗口字段必须随窗口变换对话而改变。如上所述,窗口比例表示出大于64k的缓冲区大小,并且可以不需要窗口虚拟化。因此,窗口比例的变换可以用于表示在每个流控制模块220中的增加的缓冲区容量。该缓冲区容量的增加可作为窗口(或缓冲区)虚拟化而被提及。该缓冲区大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲区大小典型地以字节表示,但是为了讨论的方便,由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。通过举例描述由流控制器220执行的窗口(或缓存区)虚拟化。在该示例中,源节点102和目标节点106被配置为与具有16k字节的有限的缓存区容量的传统端节点相似,其大约等于10个数据分组。通常,端节点102、106在能够传输下一组分组之前必须进行等待,直到该分组被传输并且收到确认为止。在一个实施例中,使用在流控制模块220中的增加的缓冲区容量,当源节点103传输其数据分组时,第一流控制模块220接收该分组,将该分组存储在其较大容量的缓存区(例如512个分组容量)中,并且立即将指示分组接收的确认信号(“ REC-ACK ”)发送回到源节点102。源节点102接着可以“刷新”其当前缓冲区,将10个新的数据分组载入到缓存区,并且将这些传输到第一流控制模块220上。再次,第一流控制模块220将REC-A CK信号发送回到源节点102,并且源节点102刷新其缓冲区并且对其载入10个更新的分组用于传输。当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲区中。当其准备好时,第一流控制模块220可以开始将数据分组传输到第二流控制模块230,其也具有增加的缓存区大小,例如以便接收512个分组。第二流控制模块220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的、来自目标节点106的每个REC-ACK致使又有10个分组被传输到目标节点106,直到所有的数据分组被传送为止。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲区来增加在源节点(发送器)102和目标节点(接收器)106之间的数据传输吞吐量。注意到通过之前描述的“预确认”数据的传输,发送器(或源节点102)被允许传输比没有预确认时可能传输的数据更多的数据,因此造成更大的窗口大小。例如,在一个实施例中,流控制模块220、220’处于缺乏大窗口的节点(例如,源节点102或者目标节点106)附近时,该技术是有效的。重新拥寒流控制器220的另一个技术或者算法被称为重新拥塞。众所周知标准的TCP拥塞避免算法在面对特定网络条件(包括:大的RTT (往返时间)、高分组丢失率,以及其它)时性能低下。当设备200检测到诸如长的往返时间或者高的分组丢失的拥塞条件时,设备200插入、代入更适合该特定网络调节的替代的拥塞避免算法。在一个实施例中,重新拥塞算法使用预确认来有效地终止发送器和接收器之间的连接。设备200接着使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特征。设备200监控每个TCP连接,在不同的维度将其特征化,选择适合用于当前特征的重新拥塞算法。在一个实施例中,当检测到由往返时间(RTT)限制的TCP连接时,应用表现为多个TCP连接的重新拥塞算法。每个TCP连接操作在其自身性能限度内,但是聚合带宽获得了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N值过大则连接束获得超过其合理份额的带宽。N值过小则连接束获得低于其合理份额的带宽。建立“N”的一个方法依赖于设备200监控 实际连接的分组大小、RTT和分组丢失率。将这些数字插入TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算出的上限性能基本相同的性能,则应用额外的并行连接。如果当前束正获得低于上限的性能,则减少并行连接的数量。依次方式,由于单独的连接束包含的并行性不比消除协议自身所强加的限制所需的并行性更多,所以维持了系统的整体公平性。进一步,每个单独的连接保留TCP兼容性。建立“N”的另一个方法是使用并行流控制算法,例如TCP “Vegas”算法或者其改进版本“稳定的Vegas”。在该方法中,与连接束中的连接相关联的网络信息(例如,RTT、丢失率、平均分组大小等等)被聚集并且被应用到替代的流控制算法。该算法的结果进而被分布到控制其数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。在又一个实施例中,并行束中的单独的连接被虚拟化,即不建立实际的单独的TCP连接。事实上拥塞避免算法被修改为表现得就好像存在N个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的Q0S、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的,即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。ΜΦ在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RT0。使用标准TCP算法,在一个RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RT0)。在一个实施例中,设备200使用重传和超时算法来避免过早的RT0。设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RT0。波前检测和消除二 义性在一些实施例中,设备200或者流控制器220在管理和控制网络流量中使用波前检测和消除二义性技术。在该技术中,流控制器220使用传输标识符或者号码来确定是否需要重传特定数据分组。举例来说,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例与一个传输号码相关联。可以理解,分组的传输号码与分组的序列号不相同,因为序列号标记分组中的数据,而传输号码标记该数据的传输的实例。传输号码可以是对于该目的可用的任意信息,包括与分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。因为数据段可以被重传,所以不同的传输号码可以与特定的序列号相关联。由于发送器传输数据分组,所以发送器保持被确认的数据分组传输的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码标记。通过保持对于每个分组的传输号码,发送器保留数据分组的传输顺序。当发送器接收到ACK或者SACK时,发送器确定与接收器(在所接收的确认中)指示的已经接收的分组相关联的最高的传输号码。具有较低传输号码的任何未完成的未经确认的分组被假设为已丢失。在一些实施例中,当到达分组已经被重传时,发送器呈现出模糊的情形:标准的ACK/SACK没有包含足够的信息来使发送器确定该到达分组的哪个传输触发了该确认。从而,在接收到模糊确认之后,发送器消除该确认二义性以将其与传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该模糊性。在一个实施例中,发送器在所传输的数据分组中包含标识符,然后,接收器在确认中返回该标识符或者该标识符的函数。该标识符可以是时间戳(例如在RFC1323中描述的TCP时间戳)、序列号、可以被用来在分组传输的两个或多个实例之间进行解析的任何其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,使用高达32位唯一的信息来标记每个分组。接收到数据分组时,接收器通过确认将该唯一信息回送到发送器。发送器确保最初发送的分组和其重传的一个或者多个版本包含对于时间戳选项的不同值,这允许其明确地消除ACK的模糊性。发送器可以将该唯一信息保持在例如用来保存所发送的数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此很少或不会遇到互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可能要求十个字节的TCP首部空间,这降低了网络上有效吞吐率并且减少了可用于其他TCP选项的空间。在又一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项相似的方式来消除二义性。发送器安排该分组的最初和重传版本的ID字段值,以使在IP首部中具有不同的ID字段。在接收器或其代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发该ACK的分组的ID字段的函数。由于该方法不需要发送额外的数据,保持了网络和TCP首部空间的效率,所以该方法是有益的。所选择的函数应有极大可能消除二义性。在优先实施例中,发送器选择IP ID值且将最高有效位设置为O。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为I。在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理:由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组I的确认并且最后所接收的确认是针对数据分组5,那么发送器通过假设数据分组I的第三个实例导致了该确认来解决该模糊性。诜择件确认设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCPSACK的实施例以确定已经收 到哪些分组或没有收到哪些分组。该技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图1A或者1B,发送器(例如客户机102)被配置为通过网络104向接收器(例如服务器106)传输数据分组。作为响应,接收器将被称为SACK分组的TCP选择性确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持包含接收器实际已收到的数据分组的序列号的一组范围的列表或者其他适合的数据结构。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃的(left-off)指针,其包括对列表的引用并且指示从之前生成的SACK分组的放弃点。当接收到数据分组时,接收器生成SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保留序列号的范围来指示一组已接收的数据分组。接收器用包括触发SACK分组的正在到达(landing)分组的序列号的范围来填充该SACK分组的第一字段。剩余可用的SACK字段用已收到的分组的列表的序列号的范围来填充。当该列表中的范围超过可以被载入SACK分组的范围时,接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从有序的列表连续插入SACK范围,从指针引用的范围开始并且沿列表持续向下,直到消耗完SACK分组的TCP首部中的可用的SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或三个附加的SACK范围可以被添加到SACK范围信息。
一旦接收器生成SACK分组,接收器将确认发送会发送器。然后,接收器在列表中将放弃的指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃的指针到达列表的末端,则指针被重置为列表的开始,从而有效地环绕已知所接收范围的列表,环绕该列表使得系统甚至能在SACK分组大量丢失的情况下良好地运行,这是由于一旦列表被环绕,则由于丢失的SACK分组导致的未被通信的SACK信息将最终被通信。
因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。首先,SACK分组指示在SACK分组生成时接收器刚刚收到该SACK信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指示接收器已经收到这些范围中的数据分组。SACK信息还暗示接收器在SACK分组生成时没有接收落入SACK信息的第二和随后的字段之间的任何一个数据分组。本质上,SACK信息中的第二和随后的字段之间的范围是所接收的数据中的“孔”,其中的数据是已知的未被传送的数据。因此,使用该方法,当SACK分组具有足够空间来包括多余两个的SACK范围时,接收器可以向发送器指示还没有被接收器接收的数据分组的范围。
在另一个实施例中,发送器使用上述的SACK分组结合上述重传技术来假定哪些数据分组已经被传送到接收器。例如,当重传算法(使用传输号码)宣告分组丢失时,发送器认为该分组仅是条件性丢失,因为有可能是识别该分组的接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组添加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,将来自SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据分组被宣告实际丢失并被随后重传。以此方式,组合这两个方案来将更好的关于已丢失且需要重传哪些分组的信息给予发送器。
事务边界检测
在一些实施例中,设备200或流控制器220使用被称为事务边界检测的技术。在一个实施例中,该技术适合于乒乓( ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器(发送器)发送数据然后等待来自另一个通信器(接收器)的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传超时来从与事务相关的最后的一个分组或多个的丢弃进行恢复。由于在一些实施例中,TCP RTO机制极端粗略,例如在所有情况中要求最小I秒的值,在这些情况下可以看到差的应用行为。
在一个实施例中,数据的发送器或耦合到发送器的流控制模块220检测所发送的数据中的事务边界。在检测到事务边界时,发送器或者流控制器220发送额外的分组,额外的分组的接收从接收器生成额外的ACK或者SACK响应。额外的分组的插入优选地限于改善的应用响应时间和网络能力利用之间的平衡。所插入的额外的分组的数量可以根据与该连接相关联的当前丢失率来进行选择,对于较高的丢失率的连接选择更多的分组。
检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并停止,则在一段时间之后发送器或流控制模块220宣告事务边界。这可以和其他技术相结合。例如,由发送器在TCP首部中设置PSH (TCP推送)位可以指示事务边界。因此,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中,如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。
响应于检测事务边界,发送器或流控制模块220向接收器传输额外的数据分组以便从接收器引发确认。因此,额外的数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或SACK。在一个实施例中,简单地重传事务的最后一个或多个分组。相比于仅发送虚拟的数据分组,如果最后一个或多个分组已经被丢弃,这就具有重传所需数据的增加的益处。在又一个实施例中,发送最后一个或多个分组的片段,允许发送器来消除来自于其最初分组的这些分组到来的二义性。这使接收器避免错误的混淆任意重新排序自适应算法。在又一个实施例中,任意数量的公知的前向纠错技术可被用来为所插入的分组生成额外的数据,这允许重新构造接收器处丢失的或以其他方式错过的数据。
在一些实施例中,当对事务中的最后的数据分组的确认被丢弃时,此处描述的边界检测技术有助于避免超时。当发送器或流控制模块220接收对于这些额外的数据分组的确认时,发送器可以从这些额外的确认来确定最后的数据分组是否已经被接收或这需要被重传,从而避免超时。在一个实施例中,如果最后的分组已经被接收但是它们的确认被丢弃,则流控制模块220生成对该数据分组的确认,并且将该确认发送到发送器,从而告知发送器该数据分组已经被传送。在又一个实施例中,如果没有收到最后的分组,则流控制模块220向发送器发送一个分组来使发送器重传丢弃的数据分组。
重新分组
在又一个实施例中,设备200或流控制器220使用重新分组技术来改善传输层网络流量。在一些实施例中,TCP性能和分组大小成比例。因此增加分组大小能改进性能,除非其引起大大增加的分组丢失率或其他非线性效应,例如IP分片。通常,有线介质(诸如铜缆或光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前,最大化分组大小是有益的(通过底层传输介质的协议来限制最大化的分组大小)。但是对于具有较闻丢失率的传输介质(例如,诸如WiFi等的无线技术,或者诸如电力线网络等闻损环境),增加分组大小可能导致较低的传输率,因为介质引发的错误导致整个分组被丢弃(即,介质引发的错误超过对于该介质的标准纠错码的能力),从而增加了分组丢失率。分组丢失率中的显著大的增加实际上否定了增加的分组大小的任何性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小可以根据每个链路的性质在传输路径时发生变化。
通过将设备200或流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或流控制器220将具有连续数据的分组重新分组为少量的较大分组。在又一个实施例中,设备200或流控制器220通过将一系列大分组分为大量的较小的分组来对分组进行重新分组。在其他实施例中,设备200或流控制器220监控链路特征并且通过重新组合来调整分组大小以提高吞吐量。
QoS
仍参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,(也被称为QoS控制器)。在又一个实施例中,例如,设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行改善任何网络连接的性能、操作或服务质量的一个或多个服务质量(QoS)技术的任何逻辑、商业规则、功能或操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或连接提供不同优先级的网络流量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定部分的带宽或网络容量。在一些实施例中,QoS引擎236监控对应于用户、应用、数据流或连接的性能或服务质量的所达到的水平,例如数据速率和延迟。响应于监控,QoS引擎236动态地控制或调整网络分组的调度优先级来获得期望水平的性能或服务质量。
在一些实施例中,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’指定的一个或多个策略来优先排序、调度和传输网络分组。
协议加速
协议加速器234包括用 于优化、加速或以其他方式改善一个或多个协议的性能、操作或服务质量的任何逻辑、商业规则、功能或操作。在一个实施例中,协议加速器234在网络堆栈的层5-7的加速任何应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或层3的协议。在一些实施例中,协议加速器234被配置、构建或设计来根据数据类型、协议的特征和/或行为来优化或加速一个或多个协议的每一个。在又一个实施例中,协议加速器234被配置、构建或设计来改善用户体验、响应时间、网络或者计算机负载,和/或关于协议的网络或带宽利用。
在一个实施例中,协议加速器234被配置、构建或设计来最小化文件系统访问上的WAN延迟的影响。在一些实施例中,协议加速器234优化或加速CIFS (通用互联网文件系统)协议的使用来改善文件系统访问时间或对数据和文件的访问时间。在一些实施例中,协议加速器234优化或加速NFS (网络文件系统)协议的使用。在又一个实施例中,协议加速器234优化或加速文件传输协议(FTP)的使用。
在一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载为有效载荷的或使用任何类型和形式的标记语言的协议。在其他实施例中,协议加速器234被配置、构建或设计来优化或加速超文本传输协议(HTTP)。在又一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载有效载荷或以其他方式使用XML (可扩展标记语言)的协议。
透明并且多点部署配置
在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任何数据流是透明的。在一个实施例中,设备200和/或网络优化引擎250以这样的方式操作:通过WAN的数据流是由任何网络监控、QoS管理或网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不创建用于传输可以隐藏、遮掩或以其他方式使网络流量不透明的数据的任何隧道或流。在其他实施例中,设备200透明地操作,因为设备不改变网络分组的任何源和/或目标地址信息或端口信息,诸如互联网协议地址或端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或其他设备或计算装置透明地操作或运转。也就是在一些实施例中,设备是透明的,因为不必修改网络上的任何装置或设备的网络相关配置来支持设备200。
可以下面的部署配置的任何一个来部署设备200:1)串行流量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以与以下的一个或多个串行部署:路由器、客户机、服务器或者另一个网络装置或设备。在其他实施例中,设备200可以与以下的一个或多个并行部署:路由器、客户机、服务器或者另一个网络装置或设备。在并行部署中,路由器、客户机、服务器或者其他网络设备可以被配置为转发、转换或通过网络至设备200或者经由设备200转发、转换或通过网络。
在串行的实施例中,设备200与路由器的WAN串行部署。以此方式,来自WAN的所有流量在到达LAN的目的地之前穿过该设备。
在代理模式的实施例中,设备200被部署为客户机和服务器之间的代理装置。在一些实施例中,设备200使客户机与网络上的资源间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到该资源、不同的资源、或者通过从高速缓存供应该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处所讨论的任何优化技术。在其他实施例中,设备200通过透明地拦截并转发到客户机和/或服务器的请求和响应来作为透明代理运行。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或网络。在一些实施例中,设备200可以在穿过该设备的任何网络流量上执行任何类型和形式的网络地址转换(被称为NAT)。
在一些实施例中,设备200以虚拟串行模式配置来部署。在该实施例中,具有路由或转换功能的路由器 或网络装置被配置为转发、路由或以其他方式提供发往网络或设备200的网络分组。设备200接着在该网络分组上执行任一期望的处理,诸如此处讨论的任一 WAN优化技术。当完成处理时,设备200将经处理的网络分组转发到路由器以传输到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但仍如同设备200串行一样操作。该部署模式还提供透明性,因为当分组被处理并经由设备通过网络传输时,保留了源和目标地址以及端口信息。
端节点部署
尽管在上文网络优化引擎250总是结合设备200来描述,但是网络优化引擎250或其任何部分可以被部署、分布或以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或服务器可以提供此处所描述的结合一个或多个设备200或者不结合设备200的网络优化引擎250的任何系统和方法。
现参考图2B,描述部署在一个或多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎250’ ’。客户机102和服务器106可以建立传输层连接并且交换穿过或不穿过设备200的通信。
在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250’’执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250’’执行此处描述的技术来优化、加速或以其他方式改善在客户机102与服务器106之间通信的网络流量的性能、操作或服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250’’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。
C.客户机代理
现参考图3,描述客户机代理120的实施例。客户机102包括客户机代理120,用于经由网络104与设备200、设备205和/或服务器106来建立、交换、管理和控制通信。在一些实施例中,客户机120 (其 也可以被称为WAN客户机)加速WAN网络通信和/或用于通过网络设备200通信。总的来说,客户机102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303的操作系统,以及带有一个或多个层310a-310b的网络堆栈267。客户机102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈267与网络104通信。所述应用之一,诸如web浏览器,也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户机代理120,或其中任何部分。客户机代理120包括拦截机制或者拦截器350,用于从网络堆栈267拦截来自一个或者多个应用的网络通信。
与设备200 —样,客户机102具有网络堆栈267,其包括任何类型和形式的软件、或硬件或其组合,用于提供与网络104的连接和通信。客户机102的网络堆栈267包括上文结合设备200所描述的任何一个网络堆栈实施例。在一些实施例中,客户机代理120或其任何部分被设计和构建为与由客户机102的操作系统安装或以其他方式提供的网络堆栈267一起操作或联合工作。
在进一步的细节中,客户机102或设备200 (205)的网络堆栈267可包括任何类型和形式的接口,用于接收、获得、提供或以其它方式访问与客户机102的网络通信相关的任何信息和数据。在一个实施例中,与网络堆栈267的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制,事件或回调机制、或任何类型的接口技术。网络堆栈267通过接口可接收或提供与网络堆栈267的功能或操作相关的任何类型和形式的数据结构,例如对象。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、引用或识别在网络堆栈267的协议层处理的网络分组的一部分,例如传输层的网络分组。在一些实施例中,数据结构325包括内核级别数据结构,而在其他实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分、或者运行在内核模式302中的网络驱动程序或其它软件相关的数据结构、或者由运行或操作在操作系统的内核模式的服务、进程、任务、线程或其它可执行指令获得或收到的任何数据结构。
此外,网络堆栈267的一些部分可在内核模式302执行或操作,例如,数据链路或网络层,而其他部分在用户模式303执行或操作,例如网络堆栈267的应用层。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈267的一个或多个更上层,例如层5-7的任何层。在其它实施例中,网络堆栈267的第二部分310b包括一个或多个较低的层,例如层1-4的任何层。网络堆栈267的第一部分310a和第二部分310b的每一个可包括网络堆栈267的任何部分,位于任何一个或多个网络层,处于用户模式203、内核模式202,或其组合,或在网络层的任何部分或者到网络层的接口点,或用户模式203和内核模式202的任何部分或到用户模式203和内核模式202的接口点。
拦截器350可以包括软件、硬件、或者软件和硬件的任何组合。在一个实施例中,拦截器350在网络堆栈267的任一点拦截或以其他方式接收网络通信,并且重定向或者传输网络通信到由拦截器350或者客户机代理120所期望的、管理的或者控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并且传输该网络通信到设备200,用于在第二网络104上传输。在一些实施例中,拦截器350包括驱动器或是驱动器,例如被构建和设计来与网络堆栈267对接并一同工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350操作在网络堆栈267的一个或者多个层,诸如在传输层。在一个实施例中,拦截器350包括过滤器驱动器、钩子机制、或者连接到网络堆栈的传输层的任一形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,拦截器350连接到诸如传输层的第一协议层和诸如传输协议层之上的任何层的另一个协议层,例如,应用协议层。在一个实施例中,拦截器350可以包括遵守网络驱动器接口规范(NDIS)的驱动器,或者NDIS驱动器。在又一个实施例中,拦截器350可以包括微型过滤器或者微端口驱动器。在一个实施例中,拦截器350或其部分在内核模式202中操作。在又一个实施例中,拦截器350或其部分在用户模式203中操作。在一些实施例中,拦截器350的一部分在内核模式202中操作,而拦截器350的另一部分在用户模式203中操作。在其它实施例中,客户机代理12 0在用户模式203操作,但通过拦截器350连接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构225。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应用。
在一个实施例中,拦截器350拦截或接收任何的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以设置目的地信息,诸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350把该连接的目的地信息设置为客户机代理120监听的客户机102的本地IP地址和端口。例如,客户机代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。在一些实施例中,客户机代理120随后将重定向的传输层通信传送到设备200。
在一些实施例中,拦截器350拦截域名服务(DNS )请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在又一个实施例中,拦截器发送所拦截的DNS请求到设备200以进行DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应传送到客户机代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器106来解析DNS请求。
在又一个实施例中,客户机代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈267的网络层操作的拦截器350。在一些实施例中,第一代理120拦截网络层请求,诸如互联网控制消息协议(ICMP)请求(例如,查验和跟踪路由)。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈210的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传送到第二代理120’。
客户机代理120和/或拦截器350可以以对网络堆栈267的任何其它协议层透明的方式在协议层操作或与之对接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的任何协议层和诸如会话、表示或应用层协议的传输层之上的任何协议层透明的方式在网络堆栈267的传输层操作或与之对接。这允许网络堆栈267的其它协议层如所期望的进行操作并无需修改以使用拦截器350。这样,客户机代理120和/或拦截器350可以与传输层对接以安全、优化、加速、路由或者负载平衡经由传输层承载的任一协议提供的任一通信,诸如TCP/IP上的任一应用层协议。
此外,客户机代理120和/或拦截器可以以对任何应用、客户机102的用户、客户机102和/或与客户机102通信的诸如服务器或设备200、206的任何其它计算装置100透明的方式在网络堆栈267上操作或与之对接。客户机代理120和/或拦截器350可以以无需修改应用的方式被安装和/或执行在客户机102上。在一个实施例中,客户机代理120或其任何部分被以对客户机102、设备200、205或服务器106的任何网络配置透明的方式被安装和/或执行。在一些实施例中,客户机代理120或其任何部分被以无需修改客户机102、设备200、205或服务器106的任何网络配置的方式被安装和/或执行。在一个实施例中,客户机102的用户或者与客户机102通信的计算装置未意识到客户机代理120或其任何部分的存在、执行或者操作。同样,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或设备200、205的另一个计算装置、或者在由拦截器350连接的协议层之上和/或之下的任何协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/或加速程序302。在一个实施例中,客户机代理120包括由佛罗里达州FortLauderdale的Citrix Systems公司开发的独立计算架构(ICA)客户机或其任一部分,并且也被称为ICA客户机。在一些实施例中,客户机代理120包括应用流客户机306,用于从服务器106流式传输应用到客户机102。在又一个实施例中,客户机代理120包括收集代理304,用于执行端点检测/扫描并且用于为设备200和/或服务器106收集端点信息。在一些实施例中,客户机代理120具有一个或多个网络加速或优化程序或代理,例如网络优化引擎250和加速程序302。在一个实施例中,加速程序302加速客户机102和服务器106之间的经过设备205’的通信。在一些实施例中 ,网络优化引擎250提供此处所讨论的WAN优化技术。
流客户机306是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于接收和执行从服务器106所流式传输的应用。服务器106可以流式传输一个或者多个应用数据文件到流客户机306,用于播放、执行或者以其它方式引起客户机102上的应用被执行。在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客户机306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它档案文件。在一个实施例中,月艮务器106解压缩、解包或者解档应用文件并且将该文件发送到客户机102。在又一个实施例中,客户机102解压缩、解包或者解档应用文件。流客户机306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以能够启动另一个可执行程序。
收集代理304是用于识别、获取和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或者可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或者客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送在客户机102上收集的信息到设备200。在一个实施例中,设备200的 策略引擎236使用所收集的信息来确定和提供客户机到网络104的连接的访问、验证和授权控制。
在一个实施例中,收集代理304包括端点检测和扫描机制,其识别并且确定客户机的一个或者多个属性或者特征。例如,收集代理304可以识别和确定任何一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别并确定客户机上任何一个或多个以下软件的存在或版本:1)防病毒软件;2)个人防火墙软件;3)防垃圾邮件软件,和4)互联网安全软件。策略引擎236可以具有基于客户机或客户机侧属性的任何一个或多个属性或特性的一个或多个策略。
SSL VPN代理308是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网(VPN)连接,或从客户机102到服务器106的SSL VPN连接。在一个实施例中,SSL VPN代理308建立从公共网104到专用网104’或104”的SSLVPN连接。在一些实施例中,SSL VPN代理308和设备205联合工作以提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在又一个实施例中,SSL VPN代理308建立与客户机上应用的第一传输层连接,以及与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200联合工作以提供SSL VPN连通。
在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)通过高速缓存管理器的高速缓存。另外,加速程序302可执行由客户机102接收和/或发送的任何通信的加密和/或解密。在一些实施例中,加速程序302以集成的方式或者格式执行一个或者多个加速技术。另外,加速程序302可以对作为传输层协议的网络分组的有效载荷所承载的任一协议或者多协议执行压缩。
在一个实施例中,加速程序302被设计、构建或配置为与设备205 —起工作以提供LAN侧加速或者提供通过设备205提供的加速技术。例如,在由Citrix System公司出品的NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302在例如分支机构中的远程装置中提供独立的NetScaler加速技术。在其他实施例中,加速程序302和一个或多个NetScaler设备205联合工作。在一个实施例中,加速程序302提供网络流量的LAN侧或基于LAN的加速或优化。
在一些实施例中,网络优化引擎250可以被设计、构建或配置为与WAN优化设备200 一起工作。在其他实施例中,网络优化引擎250可以被设计、构建或配置为用或不用设备200提供设备200的WAN优化技术。例如,在由Citrix System公司出品的WANScaler设备200的一个实施例中,网络优化引擎250包括WANScaler客户机。在一些实施例中,网络优化引擎250在例如分支机构的远程位置中提供独立的WANScaler加速技术。在其他实施例中,网络优化引擎250和一个或多个WANScaler设备200联合工作。
在又一个实施例中,网络优化引擎250包括加速程序302、或加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250或网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250作为从加速程序302分开的程序或可执行指令集而被提供或安装。在其他实施例中,网络优化引擎250和加速程序302可被包括在同一程序或同一可执行指令集中。
在一些实施例中,仍参见图3,第一程序322可以用于自动地、静默地、透明地或者以其它方式安装和/或执行客户机代理120或其任何部分。在一个实施例中,第一程序322包括插件组件,例如ActiveX控件或Java控件或脚本,其加载到应用并由应用执行。例如,第一程序包括由web浏览器应用加载和运行的ActiveX控件,例如在存储器空间或应用的上下文中。在又一个实施例中,第一程序322包括被例如浏览器的应用载入并执行的可执行指令集。在一个实施例中,第一程序322是被设计和构造为安装客户机代理120的程序。在一些实施例中,第一程序322通过网络从另一个计算装置获得、下载、或接收客户机代理120。在又一个实施例中,第一程序322是安装程序或即插即用管理器,用于在客户机102的操作系统上安装诸如网络驱动和客户机代理120或其任何部分的程序。
在一些实施例中,客户机代理120的每一或任一部分(流客户机360、收集代理304、SSL VPN代理308和拦截代理3`50)可作为单独的应用、程序、进程、服务、任务或可执行指令集而被安装、执行、配置或操作。在其他实施例中,客户机代理120的每一或任一部分可以一起作为单个客户机代理120而被安装、执行、配置或操作。
D.用于经由流控制隧道提供多个应用的服务质暈的系统和方法
在很多执行多个应用的系统中,每个应用可创建或使用到一个或多个服务器的链路,并且可在每个应用和服务器之间独立协商这些链路的速度或带宽。因此,在这些系统中应用QoS技术可能需要复杂的管理以避免疏忽而导致的后果。例如,高优先级链路上的拥塞可能导致延迟不拥塞的低优先级链路上的通信。此外,需要频繁地按每个链路单独地配置QoS策略。当客户机移动到新的位置(例如从旅馆房间连接的移动客户端),可能不能使用之前配置的QoS策略。
因此,通过将来自多个应用的流量定向到单个连接或流控制隧道,可以在多个应用上应用QoS策略而无需链路速度配置。在一些实施例中,不管应用通信的最终端点是什么,该隧道使得QoS调度能够动态地调整流量发送和接收速率从而保证应用的优先级管理。因此,可以很容易地平衡不同类型的流量并且对不同类型的流量划分优先级,所述流量类型包括VP N、HTTP、IP电话(VoIP)、远程桌面协议流量或其他流量。此外,通过使用流控制隧道,QoS提供者可以不需要知道客户机和服务器之间的连接速率。因而,即使该连接速率动态变化(例如由于蜂窝或无线WAN连接上的干扰或站切换、LAN或WAN上的拥塞、由于多个用户连接或断开而在该网络上的多个用户之间划分带宽分配(例如根据使用该网络的客人数量而变化的对旅馆房间可用的带宽),或者任何其他理由),也能够保持QoS优先级划分以及调度。例如,在无线WAN连接(诸如35)中,带宽可以从每秒百万比特变为零并且在几秒内回到每秒百万比特。由于用在TCP中的慢启动算法(该慢启动算法在拥塞时呈指数地减少吞吐量而线性地增加吞吐量),带宽的短暂下降导致较大的效率损失并且在链路恢复时浪费带宽。然而,通过使用隧道进行流控制,可避免这样的浪费。此外,在很多实施例中,隧道可以对应用透明,使得无需任何应用配置仍能由QoS需求对应用流量划分优先级。
应用QoS优先级划分的系统的很多实施例具有特定于系统或应用的选项。例如,独立计算架构(ICA)协议可使用TCP选项来设置或者应用QoS优先级划分,但客户机和服务器之间的一些中间装置可能不支持这些选项。无论任何中间装置的能力如何,通过隧道连接传递这些类别的流量,可由最后目的地来保存或处理该选项。
现参考图4A,示出用于经由流控制隧道提供多个应用的服务质量的系统的实施例的框图。简要而言,在一些实施例中,客户机102经由隧道协议408通过网络104与中间设备200通信。尽管被描述为中间装置(例如一个设备),但在很多实施例中,客户机102可经由隧道协议与另一个客户机、服务器,或者充当隧道端点的任何其他装置通信。类似地,尽管被描述为客户机102,但在很多实施例中,隧道的第一端点可以是另一个客户机、服务器、设备或任何其他装置。隧道的端点,如客户机102和设备200,可包括队列隧道器(tunneIer )客户机400a或主机400b,总的称作队列隧道器400。尽管被称作客户机和主机,但在很多实施例中,队列隧道器400包括客户机和服务器进程,其允许双向隧道式通信。
在一些实施例中,隧道一端的客户机或装置可执行其他的执行一个或多个应用的客户机或与其通信。可使用本文描述的任何其他技术对来自这些应用的流量划分优先级,或处理来自这些应用的流量,包括压缩、加速以及加密。队列隧道器客户机400a可以用隧道协议封装该流量并且将该流 量定向到去往另一端点的隧道中。在对面的隧道端点(图4A中所示实施例中的设备200)处,可由队列隧道器400b解封(de-encapsulate)该流量并且将其经由一个或多个网络转发到对应于到一个或多个应用服务器106、设备或客户机的连接的套接字。因而,在一些实施例中,设备或其他端点可提供QoS优先级划分功能并且可将所接收的流量重新路由到各个服务提供者。
可以由隧道端点(图4A中的设备200)类似地压缩、加速、加密或以其他方式处理来自应用服务器、设备或其他客户机的返回流量,并且以QoS顺序对该流量划分优先级。接着可封装该流量并经由隧道连接将其转发到客户机102。当接收到该流量,客户机102上的队列隧道器400可解封该流量、执行包括解密和解压缩的其他处理,并且以QoS优先级将特定于应用的响应传递给一个或多个应用中的每一个。
现参考图4B,描述了用于经由流控制隧道提供多个应用的服务质量的计算装置的实施例的框图。简要而言,该计算装置可包括客户机、设备、服务器或其他计算装置,并且可以包含QoS和重定向模块404、队列隧道代理模块406,以及隧道协议408,在一些实施例中共同称作队列隧道器400。如图所示,该计算装置还可以包括多个应用或服务器、传输和网络协议402以及客户机代理120。
现参考图4B且具体而言,在一些实施例中,一个或多个应用经由传输和网络协议402发送流量。在很多实施例中,传输和网络协议402可包括诸如TCP、UDP、流控制传输协议(SCTP)、FAST TCP、可靠数据报套接字(RDS)协议、通用路由封装(GRE)的传输协议或者任何其他传输协议,并且可包括网络协议,诸如IPv4、IPv6或IPSec。在一些实施例中,传输和网络协议402可包括组合协议,例如AppleTalk或IPX。
可由QoS和重定向模块404拦截或者以其他方式接收通过传输和网络协议402传递的或者由传输和网络协议402封装的应用流量。QoS和重定向模块404可包括硬件、软件或者硬件和软件的组合,并且可包含应用、服务器、进程、服务、守护进程,或者用于拦截或接收通信、根据QoS对流量划分优先级以及将流量重定向到隧道代理模块的其他可执行逻辑。在其中隧道对应用透明操作的一个实施例中,来自传输和网络协议402的流量可包括在该计算装置外面的目的地址和端口。在其他实施例中,可将来自传输和网络协议402的流量定向到由充当代理服务器的QoS和重定向模块404寄载的本地地址。在这些实施例中,QoS和重定向模块404可执行地址转换或查找或者解析应用流量以确定目的地址和/或端□。
在一些实施例中,QoS和重定向模块404可包括一个或多个过滤器和重定向器。过滤器可例如用于解析输出vs输入的 流量,或者用于重定向去往或来自另一应用的流量。例如,如具有应用I和2的图4B所示,如上文中详细描述的,在很多实施例中可将一些应用流量重定向到客户机代理120。这样做是出于如下目的:例如加速、压缩、加密或由客户机代理120提供的其他特征。可将其他流量,例如图4B中所示的与应用3关联的流量,重定向到队列隧道代理模块406,而不经过客户机代理。这样做例如可以将VoIP流量与ICA、RDP或其他流量分开,以用于使用低延迟技术进行处理。类似地,还可以经由队列隧道代理模块406过滤或重定向来自于客户机代理或从外部装置定向到客户机代理的流量。这样避免了将来自客户机代理120的流量不断地重定向回该客户机代理。
QoS和重定向模块404还可以包括一个或多个缓冲区或者队列,用于执行QoS优先级划分。在一些实施例中,QoS和重定向模块404可包括单个队列或缓冲区并且根据优先级在该缓冲区内移动数据分组。在其他实施例中,QoS和重定向模块404可包括多个缓冲区或队列,每一个缓冲区或队列对应一个优先级别,例如基础、非常低、低、中、高或非常高。类似地,可通过如10、20、30、40、50、60或70的值或者任何其他值将队列与优先级别相关联。在其他实施例中,QoS和重定向模块404可包括缓冲区、队列或其他类似结构,以用于流量的优先级处理。例如,一些流量可被指定为立即发送,并且QoS和重定向模块404可以甚至不管一个高优先级队列中的等待项目而立即发送该流量。QoS和重定向模块404可包括一个或多个计数器或者计时器,用于按优先级的顺序处理来自缓冲区或队列的分组。
在一些实施例中,QoS和重定向模块404可按QoS优先级顺序将分组和其他网路流量定向到由队列隧道代理模块406提供的隧道中。类似地,可由QoS和重定向模块将通过由队列隧道代理模块406提供的隧道接收的分组和网络流量,经由传输和网络协议重定向回到客户机代理120或者一个或多个应用。在一些实施例中,由于可以按照优先级顺序通过隧道提供来自于远程侧的分组,QoS和重定向模块404可能不需要对从队列隧道代理模块406接收的分组执行缓冲或排队。在其他实施例中,QoS和重定向模块404可缓冲分组直到应用请求该分组或者直到应用以其他方式准备接收它们。这样可以允许多线程操作。
在一些实施例中,QoS和重定向模块404还可以包括一个或多个分类器用以解析和分类应用流量。例如,可将流量分类为对应于一个应用(如Microsoft Outlook)、一组应用(如“emaiI ”或“游戏”)、目的地、源、协议(如HTTP或TCP)、由另一个应用提供的应用或服务(如Google Web应用或基于Flash的媒体播放器)或者任何其他分类器。对流量进行分类可允许QoS和重定向模块404基于任何识别的特征在不同级别或根据不同策略来应用QoS优先级划分。
队列隧道代理模块406可包括硬件、软件或者硬件和软件的组合,用于处理分组以经由隧道协议408发送或接收。队列隧道代理模块406可包括应用、服务器、进程、服务、守护进程或用于以隧道协议封装和解封流量的其他可执行逻辑。可使用各种隧道协议,包括通用路由封装(GRE)、第二层隧道协议(L2TP)、基于UDP的数据传输(有时称作基于Μ)Ρ的数据传输协议UDT)、SCTP, TCP或任何其他协议。此外,隧道协议可使用SSL或类似的安全协议进行加密。在一些实施例中,可将由传输和网络协议402封装的分组进一步封装为隧道协议的有效载荷,该隧道协议可包括基于UDP或TCP隧道。在一些实施例中,队列隧道代理模块406可包括用于建立各种隧道的功能。例如,如果架构不支持基于UDP的隧道协议,在这些实施例中,队列隧道代理模块406可建立不同的隧道,例如基于TCP的隧道。在一些实施例中,由于确认数量的减少,基于UDP的隧道可能更为有效。例如,可由队列隧道代理模块406使用实时控制协议(R TCP)或类似的反馈机制来提供流控制。
在一些实施例中,可由隧道代理模块406处理和解封经由隧道协议408的输入流量,并且可将该流量传递到QoS和重定向模块404。在一个实施例中,如图4B所示,QoS和重定向模块404可接着将该输入流量经由传输和网络协议402路由到对应的应用或客户机代理120。在该计算装置外面的应用也可以是输入流量通信的目标。例如,如图4A所示,接收隧道流量的中间装置可解封流量并且将该流量路由到该装置外的一个或多个目的地。在一些实施例中,该流量可包括该计算装置可用于重定向的目的IP地址和/或端口。在其他实施例中,该流量可 对应于预定应用(如Vo IP),并且中间装置可具有指示与该预定应用对应的流量的目的地(如VoI P服务器)的表或其他信息。在其他实施例中,中间装置可解析该流量得到指示用于重定向的目的地的标识符,例如URL、MAC地址、VLAN或其他指示器。
在客户机发起的连接中由中间装置重定向隧道流量可能要比在服务器发起的连接中由中间装置重定向隧道流量更加容易,因为发起请求可能隐式或显示地标识目的地。然而,在一个实施例中,客户机代理120可以在隧道建立期间或者在某个其他点与中间装置通信,以标识客户机、客户机的应用、客户机的能力或其他标识信息,包括IP地址、虚拟IP地址、端口、虚拟端口、VLAN、MAC地址或其他标识符。在该实施例中,当服务器尝试发起经由中间装置到客户机的连接时,中间装置可使用由客户机代理提供的该信息来实现合适的路由以及标识客户机上的目的地。
在一些实施例中,队列隧道代理模块406可按优先级顺序,使用加权公平排队(WFQ)、公平排队、循环(round robin)或其他算法来发送由来自QoS和重定向模块404的套接字提供的数据。例如,在一个实施例中,队列隧道代理模块406可处理来自对应于第一流量类别的一个或多个套接字的数据,接着处理来自对应于下一流量类别的一个或多个套接字的数据,接着处理来自对应于后面的流量类别的一个或多个套接字的数据,等等。在其他实施例中,可由QoS和重定向模块处理优先级划分,并且按优先级顺序将流量提供给队列隧道代理模块406。
在一个实施例中,队列隧道代理模块406可使用加权公平排队的一种变形,即由Zhang等人提出的WFQ2+,其除了 WFQ的排队和调度能力之外还包括速率控制和调节能力。在一个应用WFQ的实施例中,该算法假定发送者以链路速率发送并且使用链路速度来造成对WFQ树的向下压力(downward pressure),如上所述,该树包括每个链路的多个流量类别以及每个类别的多个套接字。然而,在另一个实施例中,该算法可以是与速率无关的。相反的,该算法可利用拥塞的存在或者该链路上拥塞通知的速率和数量来提供对该树的反向压力。
在一些实施例中,包括用于QoS的拥塞控制和流控制的隧道看上去像是到WFQ算法的单个链路。因而,无论中间链路的数量和类型是什么,可将QoS调度从一个隧道端应用到另一个隧道端。这样做可以比其他非隧道化QoS实现具有更好的性能和效率,其中每个中间路由器或节点仅具有调度用于下一链路或下一跳的输出分组的能力,其仅提供本地QoS0当沿该路由合并更多流量时,由第一节点发送分组采用的分组顺序可能变化。然而,不需要知道单个链路速度或类型,并且不管动态变化的端到端数据路径如何,隧道实现可提供完整的端到端QoS。在进一步的实施例中,客户机和服务器可建立多个隧道连接,并且可通过在端点处合并流控制和拥塞控制来跨隧道平衡流量负载。这样做可以提供增强的可扩展性并且能够基于每个隧道使用额外的加速技术和处理,以及实现对于多个隧道的最佳路由平衡。
现参考图4C,描述了客户机、设备或服务器上的队列隧道代理的实施例的框图,示出了内核模式302和用户模式303之间的组件的分布。在所示的实施例中,QoS和重定向模块404可在内核模式302下执行,而队列隧道代理模块406可在用户模式303下执行。在一些实施例中,队列隧道代理模块406可包括套接字接口 410、隧道接口 412、连接管理器414和数据管理器416。队列隧道代理模块406还可以与配置管理器418通信。在一些实施例中,QoS和重定向模块404或队列隧道代理模块406中的任何一个可负责封装用于隧道的分组,或重写目的IP地址和 端口以控制重定向。
仍参考图4C且具体而言,在一些实施例中,队列隧道代理模块406可包括套接字接口 410。套接字接口 410可包括任何类型和形式的基于套接字的编程接口或API,例如TCP或UDP套接字API。套接字接口 410可包括API或其他接口用于向或者从Qos和重定向模块404传送分组。在一些实施例中,套接字接口 410或者QoS和重定向模块404还可以包括用于控制拥塞的功能或命令,例如使套接字接口 410或QoS和重定向模块404中止或重新开始经由通信通道发送数据的命令。在其他实施例中,套接字接口 410或QoS和重定向模块404可包括用于获得关于新连接的连接信息的功能或命令,该连接信息包括与上述要建立的连接的目的地相关的信息。
在一些实施例中,套接字接口可以在一个或多个本地地址和端口上侦听来自QoS和重定向模块404或来自直接与隧道代理模块通信的其他应用的通信。在一些实施例中,套接字接口可包括用于如下操作的功能或方法:打开TCP或UDP连接、经由数据管理器从一个或多个缓冲区向隧道接口发送数据、将来自隧道接口的所接收的数据返回到QoS和重定向模块或者另一应用,以及向QoS和重定向模块或者其他应用通知建立的、打开的或关闭的连接。套接字接口还可以包括用于在先前尝试的数据发送已经失败时请求重新发送数据的功能或方法。
在一些实施例中,队列隧道代理模块406可包括隧道接口 412。隧道接口 412可包括API或其他接口用于向或者从网络接口 118传送分组。在一些实施例中,隧道接口 412还可以包括用于建立和关闭到隧道对等端的隧道连接的功能,该隧道对等端诸如是上述的中间设备、服务器或客户机。在一些实施例中,隧道接口 412可提供对经由数个隧道协议(包括UDP、SCTP和TCP或任何其他协议)封装和传送分组的支持。在一些实施例中,诸如UDT的协议可提供具有最小延迟的最大响应时间,但在其中网络防火墙阻止UDT连接的环境中,可以使用诸如TCP Reno的其他协议。在一些实施例中,隧道接口 412可响应于安全性要求、错误率和延迟来选择协议以优化性能。因此,出于基准测试(benchmark)的目的,隧道接口 412还可以包括用于确定错误率、延迟、带宽、抖动、往返时间和其他连接特征的功能。
在一些实施例中,隧道接口 412还可以提供加密和解密特征,例如SSL或TLS加密协议。隧道接 口 412还可以向网络接口 118、连接管理器414或数据管理器416提供一个或多个回叫信号(callback),包括指示对等端状态(如连接的、断开的、停止的、中止的、准备好的或任何其他状态)的消息、指示发送缓冲区可用的消息、指示已经接收一个或多个数据分组的消息、指示创建新缓冲区的消息,或其他管理或设置功能。尽管图4A和4B中示出了单个隧道,但在很多实施例中,隧道接口 412可包括用于建立到对应的多个远程装置和/或单个远程装置上的多个网络接口的多个隧道的功能。
在一些实施例中,隧道接口可包括用于下列操作的API功能或方法:建立或连接隧道;对建立隧道的远程请求进行响应;断开隧道;打开或关闭到目的地址和端口的TCP、UDP或其他协议连接,且包括启动器连接句柄;响应于打开连接的请求发送接收器连接句柄;中止或重新开始连接;以及经由连接发送指定长度的数据。在一个实施例中,为避免TCP慢启动和类似技术的延迟,在打开连接时,隧道客户机可立即开始发送数据。如果隧道的对面一侧的装置不能打开连接,会发送回关闭消息,并且丢弃传输中的所有数据。在一些实施例中,当接收到包括启动器连接句柄的、打开连接的请求时,接收器可发送带有接收器连接句柄的确认。在一些实施例中,这些句柄可以是唯一的、可以是随每个建立的连接增长的,可以随机确定的,或者可以是彼此的函数。例如,在一个实施例中,接收器连接句柄可以是启动器连接句柄的逆或者可以包括预定位被翻转的启动器句柄。中止、重新开始或关闭连接的命令以及经由连接发送数据的命令可包括启动器或接收器连接句柄。隧道接口还可以包括用于连接或断开隧道连接、经由隧道打开或关闭TCP或UDP连接,或者经由隧道向远程计算装置发送中止或重新开始命令以控制拥塞的本地API功能或方法。这些命令可包括标识隧道的本地句柄。隧道接口还可以包括用于经由本地句柄所标识的隧道从一个或多个缓冲区发送数据的命令,以及可以包括一个或多个发送缓冲区的标识。隧道接口还可以包括一个或多个回调函数,用于向数据管理器传递所接收的消息、在连接或通信故障的情况下请求重新发送数据、向连接管理器发送对等端状态变化的通知、通知连接管理器新请求的或者建立的连接,或者指示已接收来自远程计算装置的中止或重新开始命令。
在一些实施例中,队列隧道代理模块406可包括连接管理器414。连接管理器414可包括服务、守护进程、应用、例程或子例程,或用于经由套接字接口 410和隧道接口 412管理连接的其他可执行代码或逻辑。连接管理器414可包括用于创建和删除连接,以及维护连接表的功能。在一些实施例中,连接管理器414可包括一个或多个计时器,用于通过将休眠连接标记为已超时来维护该连接表。当检测到拥塞或者经由套接字或隧道接口接收到中止命令时,连接管理器414可将连接标记为停止并且向相应的其他接口发送中止命令。连接管理器414可管理对等端列表、连接列表、可用于服务本地套接字的非中止连接列表、在隧道接口检测到拥塞时或由于来自本地套接字缓冲区的反向压力时可被中止的中止连接列表、具有需要本地发送的从隧道接收的数据(可缓冲该数据直到本地连接可接受该数据)的连接列表、需要建立到对等端的新本地连接列表,以及需要本地建立的新对等端连接列表。在一些实施例中,可将这些列表组合到一个或多个列表中。例如,在一个这样的实施例中,连接列表可包括指示中止或非中止连接的标志。可使用类似标志来指示其他连接状态。
连接管理器414可包括用于响应于经由套接字接口接收的请求来创建新连接的功能。在一些实施例中,连接管理器414可使用对等端列表来确定对等端单元,并且可以包括负载平衡或用于从对等端列表中选择对等端的其他功能。连接管理器可经由隧道接口向对等端发送建立新连接的请求。类似地,在一些实施例中,连接管理器可经由隧道接口从对等端接收打开连接的请求,并且可以初始化该连接以及将输入的分组路由到合适的目的地。在一些实施例中,这可以包括将分组定向到QoS和重定向模块404,用以转发到客户机代理120或者应用。在其他实施例中,这可以包括将分组定向到网络接口,用以发送到远程服务器、中间装置或客户机。在一些实施例中,连接管理器可将隧道化分组重定向到有效载荷分组的原始的目的IP地址。
连接管理器414还可以包括关闭连接的功能。连接管理器可响应于接收到关闭连接的请求、隧道中的传输故障、超时或其他原因来关闭连接。关闭连接可包括清理分配给该连接的资源、重置缓冲区或执行其他维护任务。在一些实施例中,连接管理器414还可以包括响应于拥塞中止或重新开始连接的功能。例如,如果本地套接字不能接受提供给该套接字的所有数据,连接管理器可中止该连接并且向对等端单元发送中止命令。类似地,如果连接管理器从对等端单元接收中止命令,该连接管理器可中止该连接并且指示QoS和重定向模块中止。连接管理器还可 以包括用于显式拥塞通知的功能。在一些实施例中,连接管理器还可以执行定期的维护功能,包括维护连接超时以及关闭的连接的列表。
在一些实施例中,队列隧道代理模块406还可以包括数据管理器416。数据管理器416可包括应用、服务、守护进程、例程或子例程,或者用于在套接字接口与隧道接口之间管理和移动数据的其他可执行代码或逻辑。如图所示,在一些实施例中,接收和发送路径可能是分开的并且可以并行地控制该接收和发送路径。
在一个实施例中,当套接字接口接收来自QoS和重定向模块或者来自其他应用的数据,其可以调用由数据管理器416提供的数据接收功能。响应于该功能,数据管理器可尝试将该数据经由隧道接口传递给对等端单元。如果隧道接口拒绝该数据,例如由于拥塞或中止的连接,数据管理器416可在每一连接队列或缓冲区中存储该数据。接着可将该队列或缓冲区添加到等待发送列表。当要发送的等待数据的数量超过预定阈值时,在一些实施例中,数据管理器可经由该套接字接口向QoS和重定向模块404或其他应用发送中止连接的请求。一旦接收到来自隧道接口的连接重新开始消息,数据管理器416将尝试从等待发送列表中的队列或缓冲区发送数据。在一些实施例中,数据管理器可尝试发送尽可能多的数据,避免由慢启动技术导致的延迟。
类似地,在一个实施例中,当隧道接口经由网络接口接收来自对等端的数据时,其可以向数据管理器发送回调函数。响应于该回调函数,数据管理器可尝试将数据经由套接字接口传递到QoS和重定向模块或另一应用。如果套接字接口拒绝该数据,例如由于拥塞或执行延迟,数据管理器可将数据存储到本地缓冲区或队列中。当要发送到本地缓冲区或队列的数据的数量超过预定阈值时,在一些实施例中,数据管理器可经由隧道接口向远程对等端发送中止连接的请求。当本地套接字又能够接受数据时,数据管理器可以类似地发送重新开始命令。
现参考图5A和5B,描述了在经由流控制隧道提供多个应用的服务质量的系统内的通信流的实施例的框图。简要而言,图5A示出了提供直接QoS和重定向的实施例,而图5B示出了经由加密网关提供重定向的实施例。在图5A所示的实施例中,来自应用的流量去往QoS和重定向模块404的QoS模块420,该QoS模块420使用上述任何技术拦截流量、对流量进行分类且划分其优先级。接着将流量传递给QoS和重定向模块404的流量重定向器422,如上文所述,该重定向器422经由套接字接口将流量传递给队列隧道代理模块406。在接收流量时,该过程反向执行:通过隧道接收数据,以及将数据分割成单独的流且传送给应用。
然而,在图5B所示的实施例中,在流量的流程中放置客户机代理120以执行额外功能,例如加密、压缩或其他加速技术。在该实施例中,由QoS模块420拦截来自应用的流量并对其划分优先级,且该流量接着被发送给客户机代理重定向器424。类似于流量重定向器422,客户机代理重定向器424将流量发送到客户机代理120的套接字,用于使用上文描述的加密、压缩、加速或其他技术中的任何一个来进行进一步的处理。例如,客户机代理120可将流封装在SSL流中,用于发送到远程解密模块。接着客户机代理可以将处理后的流量通过网络堆栈发送回来,其中,该流量可能被QoS和重定向模块404再次拦截。在划分优先级后,可由流量重定向器422将该流量重定向到队列隧道代理模块406,用于经由隧道传输。当接收到加密的、压缩的或以其他方式加速的流量时,流量重定向器422可将该流量定向回客户机代理120进行处理。在一些实施例中,在进行处理后,可将流量传递到客户机代理重定向器424,并且接着返回给QoS和重定向模块404用于发送到其原始目的地。在其他实施例中,可由客户机代理120将由该客户机代理处理的所接收的流量发送到网络堆栈并且由QoS和重定向模块404拦截,用以发送到其原始目的地。
结合图5A和5B重新简要参考图4B,其中可同时使用通信流的实施例。例如,如图4B所示,可将一些流量(对应于应用I和2)重定向以穿过客户机代理120,而将其他流量(对应于应用3,以及来自客户机120的处理后的流量)重定向到队列隧道代理模块406。例如,当客户机代理120所执行的额外处理对于应用(例如低延迟VoIP连接)来说是不必要的或者不需要的时,可以这样做。
图6是用于经由 流控制隧道提供多个应用的服务质量的方法的实施例的流程图。简要而言,在步骤602,在客户机的网络堆栈的部分处运行的代理可代理多个对应于在客户机上执行的多个应用的每一个的传输层连接。在步骤604,该代理可按根据对多个应用中的每一个进行分类得到的指定优先级的顺序来接收来自所述多个被代理的传输层连接中的每一个的数据。在步骤606,该代理可以按根据该指定优先级的顺序经由建立的传输层连接传送从所述多个被代理的传输层连接中的每一个所接收的预定量的数据。
仍参考图6且具体而言,在步骤602,在客户机的网络堆栈的部分处执行或运行的代理可代理多个对应于在该客户机上执行的多个应用中的每一个的传输层连接。在一些实施例中,代理连接可包括充当传输层连接的中间装置,并且可包括将来自多个传输层连接的一个或多个分组的数据封装成一个或多个隧道协议分组的有效载荷。在一些实施例中,该代理可代理返回该客户机的多个传输层连接中的每一个。在很多实施例中,该代理可对多个应用中的每一个透明地代理多个传输层连接中的每一个。例如,该代理可对应用透明地重写目的和/或源地址或端口或者封装和解封分组。
在步骤604,在一些实施例中,该代理可按根据对多个应用中的每一个进行分类得到的指定优先级的顺序来接收来自所述多个被代理的传输层连接中的每一个的数据。在一些实施例中,代理可根据服务质量分类方案对多个应用中的每一个进行分类。可使用连接、数据或应用中的任何可识别信息来执行这样的分类,包括通过目的地、通过应用、通过应用组或类型、通过协议、通过数据大小或任何其他信息来执行分类。
在步骤606,在一些实施例中,该代理可向在客户机上执行的第一隧道应用传送从所述多个被代理的传输层连接中的每一个所接收的预定量的数据。在一些实施例中,第一隧道应用可具有所建立的到第二隧道应用的传输层连接,该第二隧道应用可在诸如远程客户机、中间装置或服务器的远程计算装置上执行。在很多实施例中,该代理可按根据指定优先级的顺序传送预定数据。在一些实施例中,该代理可在将预定量的数据传送给第一隧道应用时应用服务质量。在 其他实施例中,该代理可在刚接收到预定量的数据中的每一个时就将其传送给第一隧道应用。
在一些实施例中,客户机上的第一隧道应用可将来自每个应用的预定量的数据发送到在该客户机和多个服务器中间的装置上执行的第二隧道应用。在多个实施例中,该代理可以在客户机的内核空间或内核模式下执行,并且第一隧道应用可在客户机的用户空间或用户模式下执行。在一些实施例中,该代理可从所述多个被代理的传输层连接中的一个或多个接收数据可读的指示。在进一步的实施例中,该代理可向第一隧道应用传送该指示,并且响应于该指示,第一隧道应用可按优先级顺序接受来自一个或多个被代理的传输层连接中的每一个的预定量的数据。
虽然已经描述方法和系统的多个实施例,但是这些实施例是示例性的并且不以任何方式限制所述方法和系统的范围。相关领域中的技术人员在不脱离所描述方法和系统的最宽范围的情况下可以对所描述的方法和系统的形式和细节进行修改。因此,此处描述的方法和系统的范围不应该通过这些示例性实施例来限定,而是应该根据所附权利要求书和其等价范围来限定。
权利要求
1.一种用于经由流控制隧道提供多个应用的服务质量的方法,所述方法包括: Ca)由在客户机的网络堆栈的部分处运行的代理来代理多个对应于在所述客户机上执行的多个应用中的每一个的传输层连接; (b)由所述代理以根据对多个应用中的每一个进行分类得到的指定优先级的顺序,接收来自多个被代理的传输层连接中的每一个的数据;以及 (C)由所述代理向在所述客户机上执行的第一隧道应用以根据所述指定优先级的顺序传送从多个被代理的传输层连接中的每一个所接收的预定量的数据,所述第一隧道应用具有所建立的到第二隧道应用的传输层连接。
2.根据权利要求1所述的方法,还包括由所述客户机上的第一隧道应用将来自每个应用的所述预定量的数据发送到在所述客户机和多个服务器中间的装置上执行的所述第二隧道应用。
3.根据权利要求1所述的方法,还包括在所述客户机的内核空间中执行所述代理并且在所述客户机的用户空间中执行所述第一隧道应用。
4.根据权利要求1所述的方法,其中步骤(a)还包括由所述代理来代理返回所述客户机的多个传输层连接中的每一个。
5.根据权利要求1所述的方法,其中步骤(a)还包括由所述代理对多个应用中的每一个透明地代理多个传输层连接中的每一个。
6.根据权利要求1所述的方法,其中步骤(b)还包括由所述代理根据服务质量分类方案对多个应用中的每一个进行分类。
7.根据权利要求1所述 的方法,其中步骤(c)还包括由所述代理在向所述第一隧道应用传送所述预定量的数据时应用服务质量。
8.根据权利要求1所述的方法,其中步骤(c)还包括由所述代理在刚接收到所述预定量的数据中的每一个时就将其传送给所述第一隧道应用。
9.根据权利要求1所述的方法,还包括由所述代理从多个被代理的传输层连接中的一个或多个接收数据可读的指示。
10.根据权利要求9所述的方法,还包括由所述代理将所述指示传送到所述第一隧道应用,并且响应于所述指示,所述第一隧道应用以优先级的顺序接受来自一个或多个被代理的传输层连接中的每一个的预定量的数据。
11.一种用于经由流控制隧道提供多个应用的服务质量的系统,所述系统包括: 代理,其在客户机的网络堆栈的部分处运行,并且代理多个对应于在所述客户机上执行的多个应用中的每一个的传输层连接; 第一隧道应用,其在客户机上执行并且具有所建立的到第二隧道应用的传输层连接;以及 其中,所述代理以根据对多个应用中的每一个进行分类得到的指定优先级的顺序接收来自多个被代理的传输层连接中的每一个的数据,并以根据该指定优先级的顺序向所述第一隧道应用传送从多个被代理的传输层连接中的每一个所接收的预定量的数据。
12.根据权利要求11所述的系统,其中所述第一隧道应用将来自每一个应用的预定量的数据发送到在所述客户机和多个服务器中间的装置上执行的所述第二隧道应用。
13.根据权利要求11所述的系统,其中所述代理在所述客户机的内核空间中执行,并且所述第一隧道应用在所述客户机的用户空间中执行。
14.根据权利要求11所述的系统,其中所述代理用于代理返回所述客户机的多个被代理的传输层连接中的每一个。
15.根据权利要求11所述的系统,其中所述代理对多个应用中的每一个透明地代理多个被代理的传输层连接中的每一个。
16.根据权利要求11所述的系统,其中所述代理根据服务质量分类方案对多个应用中的每一个进行分类。
17.根据权利要求11所述的系统,其中所述代理在向所述第一隧道应用传送所述预定量的数据时应用服务质量调度。
18.根据权利要求11所述的系统,其中所述代理在刚接收到所述预定量的数据中的每一个时就将其传送给所述第一隧道应用。
19.根据权利要求11所述的系统,其中所述代理从多个被代理的传输层连接中的一个或多个接收数据可读的指示。
20.根据权利要求19所述的系统,其中所述代理将所述指示传送给所述第一隧道应用,并且响应于所述指示,所述第一隧道应用以优先级的顺序接受来自一个或多个被代理的传输层连接中的每一个的预定量的数`据`。
全文摘要
本发明涉及用于经由流控制隧道提供服务质量(QoS)的系统和方法。无需配置单独链路速度,可将来自多个应用的流量定向到单个连接或流控制隧道并且可跨多个应用来应用QoS策略,这使得无论应用通信的最终端点如何,QoS调度能够动态调整流量发送和接收速率以保证应用的优先级管理。因此,可以容易地平衡不同类型的流量并且对其划分优先级,所述类型包括VPN、HTTP、IP电话(VoIP)、远程桌面协议流量或其他流量。在多个实施例中,隧道可对应用透明,从而使得无需任何应用配置,仍可以根据QoS需求对应用流量划分优先级。
文档编号H04L12/46GK103229460SQ201180056391
公开日2013年7月31日 申请日期2011年9月26日 优先权日2010年9月29日
发明者S·杰克斯基, S·基思, K·特斯蒂西欧格鲁 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1