CN103384991B - 用于加密网络流量的服务质量的系统和方法 - Google Patents

用于加密网络流量的服务质量的系统和方法 Download PDF

Info

Publication number
CN103384991B
CN103384991B CN201180049247.7A CN201180049247A CN103384991B CN 103384991 B CN103384991 B CN 103384991B CN 201180049247 A CN201180049247 A CN 201180049247A CN 103384991 B CN103384991 B CN 103384991B
Authority
CN
China
Prior art keywords
packet
application
network
equipment
grader
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180049247.7A
Other languages
English (en)
Other versions
CN103384991A (zh
Inventor
S·杰克斯基
S·基思
M·欧西安妮卡夫
D·辛格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN103384991A publication Critical patent/CN103384991A/zh
Application granted granted Critical
Publication of CN103384991B publication Critical patent/CN103384991B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2475Traffic characterised by specific attributes, e.g. priority or QoS for supporting traffic characterised by the type of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及对加密网络分组进行分类以用于执行QoS和加速技术的系统和方法。可由在装置的网络堆栈的第一部分的第一分类器将加密分组分类为对应于第一预定应用,并且可将应用标识符包含在该分组中。在一些实施例中,可根据加密网络分组的第一分类按顺序解密分组。在解密后,可由在所述第一部分上方的装置的网络堆栈的第二部分运行的第二分类器,将分组重新分类为对应于第二预定应用。因此,可通过向QoS和加速引擎提供对应于应用的特定于分组或特定于数据的信息来提高和优化网络性能,而同时避免由于缺少解密的优先次序造成的效率低下。

Description

用于加密网络流量的服务质量的系统和方法
相关申请
本申请要求在2010年8月12日提出的、标题为“Systems And Metho ds For Quality of Service of Encrypted Network Traffic”的美国非临时专利申请NO.12/855335的利益和优先权,该申请通过引用被全部包含于此。
技术领域
本发明总的涉及数据通信网络。本发明尤其涉及对加密网络分组进行分类以用于执行QoS和加速技术的系统和方法。
背景技术
在许多企业网络环境中,大量用户可以执行各种本地和远程应用,并且与其他客户机、服务器和中间装置交互。这些应用和交互可能使用各种各样的通信协议。在一些实施例中,尽管按不同的性能要求来传输数据,多个应用或服务可使用相同的通信协议。在其他实例中,可加密、压缩或以其他方式变更通信。由于这些和其他的特征,可能难以对这些通信进行分类和排列优先顺序,以执行或使用各种服务质量(QoS)技术或机制。
发明内容
本发明涉及对加密网络分组进行分类以用于执行QoS和加速技术的系统和方法。可由在装置的网络堆栈的第一部分的第一分类器将加密分组分类为对应于第一预定应用,并且可将应用标识符包含在该分组中。在一些实施例中,可根据加密网络分组的第一分类按顺序解密分组。在解密后,可由在所述第一部分上方的装置的网络堆栈的第二部分运行的第二分类器,将分组重新分类为对应于第二预定应用。因此,可通过向QoS和加速引擎提供对应于应用的特定于分组或特定于数据的信息来提高和优化网络性能,而同时避免由于缺少解密的优先次序造成的效率低下。
在一个方面,本发明描述用于对加密网络流量进行分类的方法。所述 方法包括,在装置的网络堆栈的第一部分运行的第一分类器对经由网络端口接收的加密分组进行分类。所述方法还包括所述第一分类器将对应于由所述分类识别的第一预定应用的应用标识符包含在所述分组中。所述方法还包括,在所述第一部分上方的网络堆栈的第二部分运行的第二分类器,基于所述加密分组的解密内容将从所述第一分类器接收的所述加密分组重新分类为第二预定应用。
在一个实施例中,所述方法包括所述第一分类器基于所述分组的未加密部分对所述分组进行分类。在另一个实施例中,所述方法包括所述第一分类器接收包括加密的有效载荷的分组并且基于非有效载荷内容对所述分组进行分类。
在一些实施例中,所述方法包括由所述第一分类器将所述应用标识符附接到所述分组。在其他实施例中,所述方法包括所述第一分类器修改所述分组以包括所述应用标识符。
在一个实施例中,所述的方法包括所述第二分类器识别加密网络流量的隧道中的第二预定应用。在另一个实施例中,所述方法包括所述第二分类器确定第二预定应用是比第一预定应用更合适的分类,并且将所述应用标识符替换为第二预定应用的第二应用标识符。
在一些实施例中,所述方法包括所述第二分类器确定第一预定应用具有与第二预定应用的子关系。在一个实施例中,所述方法包括所述第二分类器确定是使用第二预定应用还是第一预定应用来对所述分组进行分类。在另一个实施例中,所述方法包括所述第二分类器确定第一预定应用比第二预定应用的粒度更精细,并且维持所述第一分类器的应用标识符。
在另一个方面,本发明描述用于对加密网络流量进行分类的系统。所述系统包括在多个客户机和多个服务器中间并且接收多个客户机和多个服务器之间的网络流量的装置。所述系统还包括在所述装置的网络堆栈的第一部分运行的第一分类器,所述第一分类器对经由网络端口接收的加密分组进行分类,并且将对应于由所述分类识别的第一预定应用的应用标识符包含在所述分组中。所述系统还包括在所述第一部分上方的网络堆栈的第二部分运行的第二分类器,所述第二分类器基于所述加密分组的解密内容将从所述第一分类器接收的所述加密分组重新分类为第二预定应用。
在一些实施例中,所述系统包括所述第一分类器基于所述分组的未加密部分对所述分组进行分类。在其他实施例中,所述系统包括所述装置接 收包括加密的有效载荷的分组并且所述第一分类器基于非有效载荷内容对所述分组进行分类。
在一个实施例中,所述系统包括所述第一分类器将所述应用标识符附接到所述分组。在另一个实施例中,所述系统包括所述第一分类器修改所述分组以包括所述应用标识符。
在一些实施例中,所述系统包括所述第二分类器识别加密网络流量的隧道中的第二预定应用。在其他实施例中,所述系统包括所述第二分类器确定第二预定应用是比第一预定应用更合适的分类,并且将所述应用标识符替换为第二预定应用的第二应用标识符。
在一个实施例中,所述系统包括所述第二分类器确定第一预定应用具有与第二预定应用的子关系。在另一个实施例中,所述系统包括所述第二分类器确定是使用第二预定应用还是第一预定应用来对所述分组进行分类。在又一个实施例中,所述系统包括所述第二分类器确定第一预定应用比第二预定应用的粒度更精细,并且维持所述第一分类器的应用标识符。
在附图和下面的描述中将详细阐述本发明的各种实施例的细节。
附图说明
通过参考下述结合附图的描述,本发明的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中:
图1A是客户机经由一个或多个网络优化设备访问服务器的网络环境的实施例的框图;
图1B是客户机经由一个或多个网络优化设备连同其他网络设备访问服务器的网络环境的另一个实施例的框图;
图1C是客户机经由单独部署的或者与其他网络设备一起部署的单个网络优化设备访问服务器的网络环境的另一个实施例的框图;
图1D和1E是计算装置的实施例的框图;
图2A是用于处理客户机与服务器之间的通信的设备的实施例的框图;
图2B是部署设备的网络优化特征的客户机和/或服务器的另一个实施例的框图;
图3是使用网络优化特征与服务器通信的客户机的实施例的框图;
图4A是用于提供网络分组的多级分类的系统的实施例的框图;
图4B是用于提供网络分组的多级分类的网络优化引擎的实施例的框图;
图5是多个层3-7协议的父子关系的实施例的框图;
图6是用于提供网络分组的多级分类的方法的实施例的流程图;
图7是经由远程显示协议发现应用以将应用包括在应用列表中用于网络流量的分类的方法的实施例的流程图;以及
图8是用于提供加密网络流量的分类的方法的实施例的流程图。
从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素。
具体实施方式
为了阅读本发明下述各种具体实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的:
-A部分描述有益于实施本发明的实施例的网络环境和计算环境;
-B部分描述用于向远程用户加速传送计算环境的系统和设备架构的实施例;
-C部分描述用于加速客户机和服务器之间的通信的客户机代理的实施例;以及
-D部分描述用于对网络分组进行分类的系统和方法的实施例。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这样的实施例的网络和计算环境是有帮助的。现在参见图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相 关的网络流量。
虽然图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的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州Seattle的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper NetWorks公司出品的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的Citrix Systems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备200包括执行诸如SSL VPN连通、SSL卸载、交换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或功能的任何逻辑、功能、规则或操作。
在一些实施例中,设备205提供在客户机102和服务器106之间的SSLVPN连接。例如,第一网络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)CGI-BIN参数操纵,3)表单/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)被破坏的访问控制列表(ACLs)或弱密码,7)跨站脚本处理(XSS),8)命令注入,9)SQL注入,10)错误触发敏感信息泄露,11)对加密的不安全使用,12)服务器错误配置,13)后门和调试选项,14)网站涂改,15)平台或操作系统弱点,和16)零天攻击。在一个实施例中,对下列情况的一种或多种,设备的防火墙以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),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和1E描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1D和1E所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1D所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a-130b(总的使用附图标记130表示),以及与中央处理单元101通信的高速缓存存储器140。
中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由加利福尼亚州Mountain View的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(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1E中,主存储器122可以是DRDRAM。
图1D描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为后端总线。其他实施例中,主处理器101使用系统总线150和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1E中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器124通信。图1E说明了主处理器101通过超传输(HyperTransport)、快速I/O或者InfiniBand直接与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的可引导介质运行,诸如一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口118,所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,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连接的计算装置100a和100b。这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置124a-124n的各种方法和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。
图1C和1D中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MAC任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括:WINDOWS3.x、WINDOWS95、WINDOWS98、WINDOWS2000、WINDOWS NT3.51、WINDOWS NT4.0、WINDOWS CE和WINDOWS XP,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机出品的MacOS;由位于纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于犹他州Salt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。
在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、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,而不同的服务器106n可存储或提供应用和数据文件。在一些实施例中,应用传送系统290、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统290的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。
客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可通过网络104、104’和设备200请求来自服务器106的应 用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。
在一些实施例中,应用传送系统290包括Citrix Systems公司的Citrix Access SuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的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 SuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的Windows终端服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州Fort Lauderdale的Citrix Systems Inc.开发的ICA客户机。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。另外,服务器106可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州Redmond的Microsoft公司制造的Microsoft Exchange,web或Internet服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于加利福尼亚州Santa Barbara的Citrix Online Division提供的GoToMeetingTM,位于加利福尼亚州Santa Clara的WebEx Inc.提供的WebExTM,或者位于华盛顿州Redmond的Microsoft公司提供的Microsoft Office Live Meeting。
示例设备架构
图2A也示出设备200的示例实施例。仅通过示例来提供图2A的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图1D和1E所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和/或传输通信的一个或多个网络堆栈267A-267N和一个或多个网络端口266A-266N。设备200还具有用于优化、加速或以其他方式改善经过设备200的任何网络流量或通信的质量、操作或性能。
设备200包括操作系统或在操作系统的控制之下。设备200的操作系统 可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的Mac任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、或者能够运行在设备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或1ms。
在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器 220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于10ms的时间间隔),可执行加密引擎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’基于网络分组的任一有效载荷来提供和应用策略。例如,在一个实施例中,策略引擎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、IMSP、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为用户加速经由桌面客户机以及甚至移动客户机访问应用的性能。所述桌面客户机例如Micosoft Outlook和非web瘦客户机,例如由像Oracle、SAP和Siebel的通用企业应用所启动的任何客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240集成,多协议压缩引擎能够压缩由传输层协议携带的任何协议,例如任何应用层协议。
LAN/WAN 检测器
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分组加标记。
设备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可在传输层实现多个数据流控制技术,包括但不限于1)预确认,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和1B的任何一个环境,建立例如客户机102(为讨论方便,现称为源节点102)的源节点与例如服务器106(为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于64k字节的任何缓冲区大小进行窗口缩放(window scaling),其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是0或1的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。
在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(即,会话初始化)期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220源节点102(其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储0。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从0或者1增加到4。当第二流控制模块220接收SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106的比例(例如,0或1)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如0或者1)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如TCP分组)的中的窗口字段必须随窗口变换对话而改变。
如上所述,窗口比例表示出大于64k的缓冲区大小,并且可以不需要窗口虚拟化。因此,窗口比例的变换可以用于表示在每个流控制模块220中的增加的缓冲区容量。该缓冲区容量的增加可作为窗口(或缓冲区)虚拟化而 被提及。该缓冲区大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲区大小典型地以字节表示,但是为了讨论的方便,由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。
通过举例描述由流控制器220执行的窗口(或缓存区)虚拟化。在该示例中,源节点102和目标节点106被配置为与具有16k字节的有限的缓存区容量的传统端节点相似,其大约等于10个数据分组。通常,端节点102、106在能够传输下一组分组之前必须进行等待,直到该分组被传输并且收到确认为止。在一个实施例中,使用在流控制模块220中的增加的缓冲区容量,当源节点103传输其数据分组时,第一流控制模块220接收该分组,将该分组存储在其较大容量的缓存区(例如512个分组容量)中,并且立即将指示分组接收的确认信号(“REC-ACK”)发送回到源节点102。源节点102接着可以“刷新”其当前缓冲区,将10个新的数据分组载入到缓存区,并且将这些传输到第一流控制模块220上。再次,第一流控制模块220将REC-ACK信号发送回到源节点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个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的QOS、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的,即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。
重传
在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接 重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。
实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RTO。使用标准TCP算法,在一个RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RTO)。在一个实施例中,设备200使用重传和超时算法来避免过早的RTO。设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RTO。
波前检测和消除二义性
在一些实施例中,设备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值且将最高有效位设置为0。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为1。
在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理:由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组1的确认并且最后所接收的确认是针对数据分组5,那么发送器通过假设数据分组1的第三个实例导致了该确认来解决该模糊性。
选择性确认
设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCP SACK的实施例以确定已经收到哪些分组或没有收到哪些分组。该 技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块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机制极端粗略,例如在所有情况中要求最小1秒的值,在这些情况下可以看到差的应用行为。
在一个实施例中,数据的发送器或耦合到发送器的流控制模块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中操作。在其它实施例中,客户机代理120在用户模式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包括由佛罗里达州Fort Lauderdale的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”的SSL VPN连接。在一些实施例中,SSL VPN代理308和设备205联合工作以提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在又一个实施例中,SSL VPN代理308建立与客户机上应用的第一传输层连接,以及与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200联合工作以提供SSL VPN连通。
在一些实施例中,加速程序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和拦截代理350)可作为单独的应用、程序、进程、服务、任务或可执行指令集而被安装、执行、配置或操作。在其他实施例中,客户机代理120的每一或任一部分可以一起作为单个客户机代理120而被安装、执行、配置或操作。
D.用于对网络分组进行分类的系统和方法
传统的QoS和加速处理可经由源或目的IP对网络分组进行分类,但这样做可能效率很低且当单个的IP地址与多个应用关联时可能达不到预期目标。例如,在一个IP地址的客户机可执行要求高服务优先级的VoIP应用、具有中优先级的web浏览处理,以及具有低优先级的FTP客户机,但是如果QoS和加速仅基于IP地址,则会失去这些区别。此外,即使利用端口号来尝试区分服务,也会失去使用同一端口的应用之间的区别。例如,把TCP端口80上的所有流量看作中优先级web浏览的系统可能不能识别该流量中的一些是低优先级http文件传输、一些是中或高优先级web应用,以及其他是使用端口80穿过防火墙的流式多媒体。
也可能存在进一步的区别。例如,在使用ICA、RDP或其他应用传送协议或系统的环境中,可经由单个端口上的数据或控制通道来传输多个应用的应用数据流量,该多个应用包括文字处理器、email应用、VoIP或视频聊天应用、文件系统管理器或其他应用。可能会失去这些应用之间的区别以及它们的QoS和优先级的不同需求。类似地,在其中经由单个加密通道发送来自多个应用的应用数据的环境中,传送加密流量的中间装置可能无法确定优先级及执行适当的排队。
因此,在上述系统的一些实施例中,可以通过向QoS和加速引擎提供特定于分组或特定于数据的信息来提高和优化网络性能。除了源和目的IP地址以及端口号,特定于分组或特定于数据的信息可包括流量的方向(客户机到主机或服务器、服务器或主机到客户机,或两者)、虚拟LAN(VL AN)ID、源或目的应用或关联的应用、服务类别、ICA优先级、服务类型、差分服务代码点(DSCP)或其他信息。该信息中的一些或全部可用于在网络堆栈的多个层进行网络分组的分类,以允许分组的深度检测以及多个粒度级的分类。
现参考图4A,示出了用于提供网络分组的多级分类的系统的实施例的框图。简要概括,该系统包括在内核模式302和用户模式303下运行的单元。在内核模式302下运行的单元可包括一个或多个NIC(该NIC可包括在上文中结合图1D描述的一个或多个网络接口118)、插件框架402、QoS插件404以及客户机代理驱动程序406。这些组件可经由共享存储器池408和/或IO控制通道410与在用户模式303下运行的单元交互、通信或交换数据。在用户模式303下运行的单元可包括网络优化引擎250、XML远程过程调用(RPC)客户端426、客户机代理控制服务,以及默认策略416和配置数据418的存储。在一些实施例中,网络优化引擎250可包括报告器(reporter)412、策略库414、XML-RPC侦听器420、telnet侦听器422和简单网络管理协议(SNMP)代理424。此外,管理层428提供管理组件,包括:PHP:超文本预处理器(PHP)服务器、命令行接口(C LI)(能够提供telnet或ssh shell)、SNMP接口,和诸如Microsoft管理控制台(MMC)和/或经由WMI提供程序服务的Windows管理规范(WMI)的管理接口。
仍参考图4A且更深入地,在一些实施例中,系统可以包括插件框架402。插件框架402可包括库、服务、进程、模块、可扩展的服务提供程序或者用于管理或控制网络服务的执行的其他接口。在一些实施例中,插件框架402可提供在应用和应用层下方的网络堆栈层之间的接口。在一些实施例中,插件框架402可管理多个插件或网络服务提供程序,并且以适当的顺序执行所述网络服务提供程序或插件。例如,在一些实施例中,在执行分组过滤操作之前加密数据可能效率较低。可根据每个分组,动态地确定该执行顺序。例如,在一个实施例中,可在发送的分组上进行内容过滤后并且在接收的分组上进行内容过滤之前执行加密,使得总是在解密分组上执行内容过滤。类似地,通过根据每个分组确定需要哪些插件,对于较少使用的功能,插件框架402可减少费用,且增加了操作效率。
插件框架402的插件可包括加密、压缩、安全、代理、重新路由、过滤、深度分组检测、加速、流控制、基于盘或基于存储器的压缩,或者其他服务。在一个实施例中,插件可包括QoS插件404。在一些实施例中,QoS插件404可向每个分组提供QoS和优先排队、带宽限制和调节以及流量阻塞。在一些实施例中,QoS插件404可在分组中设置服务类型(ToS)位,以通过智能交换机和启用QoS的路由器进行管理。在进一步的实施例 中,QoS插件404可设置与诸如在IETF RFC2474中描述的差分服务代码点(DSCP)方案或者任何其他服务类别和优先排队系统一致的ToS位。
在一些实施例中,插件框架402可包括分组拦截和过滤系统。在一个实施例中,插件框架402可以在应用层下方的网络堆栈的一层或多层拦截分组并且在该分组上使用一个或多个过滤器来确定要应用的一个或多个插件。例如,在一个实施例中,插件框架402可拦截由网络接口接收的分组并且可使用过滤器来确定该分组是否被加密。如果分组被加密,插件框架402可应用解密插件。如果分组没有被加密,插件框架402可禁用或者不应用解密插件,从而减少了分组所需的处理量。在一些实施例中,可根据每个分组应用这些过滤器。在另一个实施例中,可根据每个流、每个类别、每个链接或者在其他更粗粒度的基础上应用这些过滤器。在一些实施例中,插件框架402可包括和管理图3的客户机代理的任何实施例的任何组件。
如图4A所示,插件框架402可向一个或多个NIC提供插件管理。每个NIC可提供一个或多个通信链接或端口。可将这些通信链接限定为将网络流量区分到不同的物理网段,并且每个适配器可包括多个链接。可由插件框架402根据过滤策略将过滤器应用于链接。过滤策略可指示将一个或多个过滤器应用于经由链接接收或发送的分组,并且可包括应用过滤器的顺序。此外,在一些实施例中,可将多个过滤策略应用于链接,并且每个策略可具有关联的优先级。例如,在一个实施例中,可将具有高序位的第一策略应用于所有链接,而将具有较低序位的第二策略应用于一个或多个特定链接,例如与LAN上的内部网段关联的链接。插件框架402可基于顺序应用这些策略,使得在上述示例中可首先应用第一策略且其次应用第二策略。这允许在不同网段上的不同过滤和处理操作。在一些实施例中,可根据方向,将不同的策略应用于链接上的流量。例如,可将第一策略应用于入站(inbound、)分组而将第二策略应用于出站(outbound)分组。
在一些实施例中,QoS插件404可包括服务、进程、子例程或用于对分组进行分类和应用QoS策略的其他可执行代码。在其他实施例中,QoS插件404可包括由插件框架402执行的、用于对分组进行分类和应用QoS策略的库、数据库、策略组或功能。在一个实施例中,QoS插件404提供用于识别各种以太网协议(包括IP、非IP、TCP和UDP流量)的功能。在另一个实施例中,QoS插件404提供用于经由状态或深度分组检测识别 流量的功能。因此,QoS插件404可包括数据库或存储元件,用于记录或高速缓存关于分组、流、链接和/或通信链接的状态的信息。在一个实施例中,QoS插件404可包括应用列表和用于识别分组是否与该应用列表中的应用关联的功能。在一些实施例中,由用户或系统管理员,或者由QoS插件404的制造商来预定义应用列表中的应用。在其他实施例中,QoS插件404可动态地识别应用并且将该应用添加到应用列表。在一个实施例中,在识别与分组关联的应用之后,QoS插件404可将应用标识符附接或附加到该分组。应用标识符可包括代码、名称、字符串、指针、表或列表索引,或者指示与分组关联的应用列表中的应用的其他标识符。
在一个实施例中,QoS插件404可提供一个或多个队列用于缓冲网络分组。在一个实施例中,QoS插件404可提供多个队列,其中每个队列具有关联的优先级。例如,QoS插件404可提供低优先级队列、中优先级队列和高优先级队列,并且将分组放入对应于关联该分组的QoS优先级的队列中。接着QoS插件404可按优先级顺序处理队列。例如,在一个实施例中,比起QoS插件404处理低优先级队列,该插件可以用较快的速率或者更频繁地处理高优先级队列。在另一个实施例中,QoS插件404可在单个队列中移动分组。例如,QoS插件404可将高优先级分组放在队列中的低优先级分组之前。在一个实施例中,可响应于ToS位、DSCP位、ICA优先级标签或分组中的任何其他信息来确定分组的优先级。在一些实施例中,QoS插件可具有对应于由协议、分组或其他方式识别的多个一个或多个优先级中的每一个的多个队列,如用于由ToS位、DSCP位或ICA优先级标签识别的多个优先级的多个队列。
在一些实施例中,QoS插件404可包括一个或多个应用分类器。应用分类器可包括逻辑、可执行代码或其他功能,用于在网络层解析由QoS插件404接收的网络分组,其中该网络分组来自于内部来源或者外部来源。在一些实施例中,QoS插件404可包括多个应用分类器,每个分类器在不同的网络层运行。因此,应用分类器可提供网络分组的多级分类。在一个实施例中,在较低网络层运行的第一应用分类器可将接收的分组分类为对应于第一应用并且附接对应于该第一应用的应用标识符。该应用分类器可将接收的分组传送到在较高的网络层运行的第二分类器,该第二分类器可将接收的分组分类为对应于第二应用。经由应用标识符提供两种分类的第二分类器可确定第二分类更加合适,并且可以相应地修改应用标识符。这 样做例如可以允许对加密的网络分组进行排队以便由解密模块处理。例如,第一分类器可将加密分组分类为TCP分组或UDP分组,但由于加密,可能不能够确定该分组的应用层协议。然而,在一些实施例中,策略可指示应该以高于TCP分组的优先级解密该UDP分组。因此,即使第一分类器可能不能访问该分组中的所有信息,但可以识别与解密模块的处理顺序相关的信息,从而为另外的优先化处理或QoS改进做准备。解密后,可将解密的分组传送给第二分类器以响应于较高层的协议来进一步识别和分类,还要实现基于高级别应用的QoS的细粒度的分类。
应用分类器可访问与应用标识符关联的应用列表。在一些实施例中,列表中的应用可以是预定的。在其他实施例中,应用分类器可包括用于识别不在该列表中的新应用并且创建新应用标识符的功能。例如,应用分类器可包括解析器,以识别与经由远程桌面协议或ICA协议发送的应用关联的应用数据流量。应用分类器可确定应用在应用列表中不具有对应的应用标识符,并且可在列表中创建对应于新的应用的新的应用标识符。应用标识符可包括应用的参数,包括:应用名称、类型、协议、服务类别、默认策略、ToS、端口、URL、组成员、用户、业务流或其他信息。
暂时转向图5,描述了多个层3-层7的协议的父子关系的实施例的框图。本领域技术人员应很容易理解,可将所示的父子关系应用于其他协议,包括Appletalk、ICMP、IPX、NetBIOS、SIP、DNS、NTP、POP、IMAP、Telnet、RDP、ICA或任何其他类型和形式的网络协议。可将网络分组与数个协议相关联,可沿着这些父子关系解析这些协议。例如,HTTP网络分组也是TCP和IP分组。在对分组进行分类的过程中,QoS插件404、网路优化引擎250或其他组件可在一层对分组进行分类并且附接应用标识符。在一些实施例中,应用标识符可包括父标识符。因此,解析数据分组以确定该分组例如是SAP分组的应用分类器,可附接指示父亲是HTTP的第一应用标识符。在应用标识符列表中,可将协议HTTP标识为具有父协议TCP。类似地,可将TCP协议标识为具有父协议IP。因此,单个高级别的应用标识符可通过这些建立的父子关系来标识多个低级别的协议。因此,可响应于这些关系来创建组。例如,TCP和UDP都具有与IP的父关系,且因而可一起归入IP的子协议。
除了经由父子关系来对应用进行分组,还可将应用标识为一个或多个预定组的部分。例如,预定组可包括web服务、文件传送、目录服务、V oIP、email、游戏、对等应用、客户机-服务器应用、路由协议、安全协议或其他信息。应用标识符可经由一个或多个标志指示应用是数个组的部分。例如,应用标识符可包括多个标志来指示该应用是使用IP协议的、基于web的对等多媒体文件传输工具。在一个实施例中,应用标识符可使用字段,该字段具有设置为指示一个或多个组中的成员身份的一个或多个位。例如,在一些实施例中,可将应用标识为属于以下组中的一个或多个:
在一些实施例中,应用定义可包括:标识应用的唯一标识符、应用列表中的父应用的标识符、唯一应用名称、应用的长名称或描述、上述复合组ID、分类器标识符(例如用于流量分类的网络、传输、会话或应用级分类器模块)、对于其中需要多个分类器来进行流量分类的实施例的下一个分类器标识符、用于指示是否能够加速应用的标志、用于指示是否已经修改了定义的标志,以及应用参数的向量数组。可动态地定义这些应用参数。例如,在一些实施例中,应用参数的向量数组可包括参数名称(例如“端口”)、参数类型(例如“无符号整数”或“字符串”)、要基于类型评估的参数值、参数的最小和最大值(如果有的话),以及用于指示参数是否是用户可编辑的标志。可为应用定义多个参数。
返回图4A,客户机代理驱动程序406可包括用于在(上文中详细描述的)客户机代理120或客户机代理组件与插件框架402之间通信的驱动程序、库、API、服务或其他接口。在一些实施例中,客户机代理驱动程序包括客户机代理120的任何实施例。由于内核模式组件和用户模式组件可使用不同的结构和对象,在一个实施例中,客户机代理驱动程序406可包括翻译库或API,以允许网络优化引擎250或网络优化引擎的组件与插件框架402和/或QoS插件404通信。
在一些实施例中,内核模式组件可经由共享存储器池408和/或IO控制通道410与在用户模式303下运行的单元交互、通信或交换数据。在一个实施例中,共享存储器池408可包括内核模式组件和用户模式组件都可以访问的预定存储结构或位置。在一些实施例中,这种存储结构或位置可包括锁定功能,例如用于阻止访问共享存储结构的组件相互干涉的信号、标志或互斥。在一个实施例中,IO控制通道410可包括在系统的各个组件之间的通信通道,例如共享通信总线或用于系统调用的虚通道。
在一些实施例中,经由共享存储器或IO控制通道的这种交互、通信或数据交换可包括命令或方法,用于:
收集关于内核级驱动程序或指定的网络适配器的信息;
映射指定的存储区域用于经由共享存储器进行传递。
分配用于交互的存储器或缓冲区;
从用户模式向内核模式传送关于共享数据结构的信息;
指示内核模式驱动程序检查要发送的多个分组,以及检索多个等待处理的发送和接收请求;
检索计数器信息、名称或值;
重置一个或多个计数器;
设置或检索调试级别;
为分组跟踪启用或禁用信息收集,包括设置或检索用于分组跟踪的地址掩码;
从驱动程序检索缓冲区的内容;
启用路由控制,包括旁路(bypass)从输入适配器接收的任何流量、设置虚拟内联模式来向网络堆栈传送流量或将流量返回给发送者,或者丢弃所有流量;
接收NDIS WAN适配器地址;以及
设置关于帧间延迟、高速缓存大小、虚拟存储器的参数或任何其他参数。
在一些实施例中,报告器412可包括用于请求和收集数据、并且创建报告或报告对象的服务、功能、模块、子例程、逻辑或其他可执行代码。在一些实施例中,报告器412可包括用于从QoS插件404请求信息的接口,该信息包括对丢失的分组和字节、发送和接收的分组和字节、延迟、缓冲区大小和其他信息的统计。在一个实施例中,报告器412可以以规律的时间间隔来请求这样的信息,而在其他实施例中,报告器412可响应于触发(例如用户请求)来请求信息。在一些实施例中,可由用户或管理员配置该时间间隔。
在一个实施例中,报告器412可在多个不同的级别或范围收集数据。例如,在一个这样的实施例中,报告器412可收集特定于一个或多个QoS策略、一个或多个应用、一个或多个服务类别、一个或多个链接的数据或者全系统的数据。因此,可以在针对每个级别或范围的报告中提供该数据。在一些实施例中,全系统数据可包括历史加速的和没加速的数据,以允许用户或管理员确定通过加速获得的系统效率。由于每个网络适配器可配置多个链接,并且可将经由一个链接接收的流量发送到多个链接,因此报告 器412可单独地收集每个链接的数据并且聚合该数据以提供网络流量的完整概述。类似地,报告期412可收集特定于应用的数据以向用户或管理员提供对于流入和流出应用的流量的更多的理解。例如,报告器412可收集和显示由应用按如下顺序排序的数据:发送的流量、接收的流量、发送的分组、接收的分组、发送的总流量、总流量和总分组。
同样地,在一些实施例中,报告器412可基于每个链接为每个策略收集和显示与QoS策略关联的数据。在其他实施例中,报告器412可收集和显示与一个或多个服务类别关联的数据(包括流量的速率)以及每个链接服务类别的统计信息。
在一些实施例中,可在不同的粒度级别保留历史数据:每秒一次、每分钟一次、每5分钟一次、每小时一次、每两小时一次、每天一次或任何其他值,并且可保留不同期间的历史数据,包括一分钟、一小时、一天、一周和一个月。在一些实施例中,报告器412可保留不同期间和粒度的历史数据的多个并存集合。
在一个实施例中,报告器412可响应于加速或QoS策略来创建一个或多个报告对象。可特定于流量方向、对象类型、策略的唯一标识符或父对象中的一个或多个来创建对象。报告器412可收集。在一个实施例中,对于每个对象,报告器412可收集统计信息或数据,包括由策略处理的多个字节或分组、多个丢弃的字节或分组,以及多个丢失的字节或分组。由于阻塞或监管策略,可能丢失或丢弃这样的分组或字节。
报告器412可包括一个或多个API或XML-RPC方法,在一些实施例中,可对上文描述的各种报告对象、统计信息或收集的数据应用该一个或多个API或XML-RPC方法,例如:获得按对象的统计信息和计数器的顺序排序的应用列表,例如每个应用丢失的分组列表;获得在特定组中、按对象的统计信息和计数器顺序排序的所有应用列表,例如所有HTTP应用或与Google关联的所有应用;获得关于特定链接的报告数据;获得关于特定服务类别的报告数据;或者获得关于特定QoS策略的报告数据。在一些实施例中,可将该报告输出为XML文件或者链接名称和计数器统计信息对的数组。此外,为管理报告和计数器,报告器412可包括XML-RPC方法,用于重置一个或多个应用计数器、链接计数器、服务类别计数器或QoS策略计数器。
由于可以在扩展性能计数器中存储一些报告的对象可能不使用的多 个数据,因此在一些实施例中,报告器412使用选择性的数据收集和报告。在这些实施例中,每个报告的对象可包括有关数据的一个或多个标志,例如字节、分组、丢弃的字节、丢弃的分组、丢失的字节、丢失的分组,并且可以仅收集和报告标志的数据。在另一个实施例中,报告对象可包括指示收集和报告所有数据的标志。
在一些实施例中,报告器412可包括或管理关于以下内容的计数器:丢失的发送分组;丢失的接收分组;NIC中断;接收缓冲区清理(drop);由复制或克隆设置过滤的出站分组;跟踪的分组或没有包括在跟踪中的分组;接收的分组;从队列中除去的分组;不能在存储器中分配的过滤器;NIC无载波指示器;超时指示器;中断或超时;在回送模式下接收、丢失的分组或与填充一起接收的分组;接收或发送的分组、字节、出错、丢失的分组;接收或发送的多播分组;检测的冲突;接收长度错误;接收超差错误(oversize error);接收CRC错误;接收帧错误;接收缓冲区FIFO错误;接收缓冲区丢失的分组错误;发送中止错误;发送载体损失错误;发送缓冲区FIFO错误、发送心跳误差、发送窗口错误或者多个发送或接收的压缩分组或字节。
在其他实施例中,报告器412可包括或管理与插入框架关联的计数器,该计数器关于从网络堆栈接收的多个字节或分组;从堆栈接收的且传送到过滤器的多个字节或分组;从堆栈接收的IPSec分组中的多个字节或从堆栈接收的多个IPSec分组;从网络适配器接收的多个字节或分组;从适配器接收的且传送到过滤器的多个字节或分组;从适配器接收的IPSec分组中的多个字节或从适配器接收的多个IPSec分组;丢失的多个分组;所接收的、传送到过滤器的和/或由协议丢失的多个分组;多个丢失的跟踪分组;多个遗失的分组;从发送队列除去的多个分组;不能从发送队列移除分组或者由于停止(stall)丢失分组的次数;适配器连接、断开连接或故障;或者适配器建立、失灵或进入待机的次数。
在一些实施例中,计数器可特定于适配器或基于每个适配器,并且可以包括:接收或发送的分组、接收或发送的字节、从发送队列中去除的分组或字节,以及从接收缓冲区除去的分组或字节。
类似地,为提高报告器的可用性,报告器412可在生成报告之前向数据应用过滤器。在一些实施例中,报告器412可基于计数器过滤有关数据,例如字节、分组、丢弃的字节、丢弃的分组、丢失的字节、丢失的分组或 所有数据。在其他实施例中,报告器412可基于时间过滤有关数据,例如在最后一分钟、最后一小时、最后一天、最后一周、最后一月中收集的数据或所有数据。在其他实施例中,报告器412可基于流或流量方向过滤有关数据,包括入站、出站或入站和出站。在其他实施例中,可收集数据作为计数器值和变化率,并且报告器412可按类型过滤数据,其中类型包括值、速率或所有。在其他实施例中,报告器412可通过仅报告特定数量的活动对象来过滤数据,例如最活跃的前十个应用、丢失最多入站分组的前五个链接,或任何其他数量的对象。在其他实施例中,报告器412可由应用组来过滤数据,例如属于组“游戏”的所有应用。在其他实施例中,报告器412可通过链接过滤数据,使得报告器412可能仅报告特定链接的统计信息。在多个实施例中,可应用多个过滤器。例如,在一个这样的实施例中,报告器412可报告在过去的一小时中,关于链接#3的email应用的入站数据的每秒丢失字节的速率。在一些实施例中,报告器412可以在报告前将数据排序。
策略库414可包括库、数据库、注册表、数据文件或用于存储、修改和检索由网络优化引擎250和/或QoS插件404使用的一个或多个策略的其他数据存储元件。在一个实施例中,策略库414可包括默认参数,该默认参数可以存储在默认策略文件416中。可由网络优化引擎250和/或QoS策略404将这些策略应用于分组、流或链接。在一个实施例中,可将在下文详细讨论的管理功能看作经由内部或虚拟链接访问的服务。在这些实施例中,为避免将指向这些功能的分组用压缩、加密、QoS或其他加速特征来处理,策略库414可对一个或多个外部或非管理链接中的每一个应用策略,指示在该一个或多个外部或非管理链接中的每一个上的流量应该被发送到加速器功能。可将类似策略用于各种类型的流量,包括地址解析协议流量、具有非内部目的地的通用路由封装流量,或者不应该由网络优化引擎250的一个或多个加速特征处理的其他类型的流量。
在一个实施例中,QoS策略可包括:当流量匹配策略的一个或多个过滤条件时要应用的一个或多个动作。在一个实施例中,要应用的动作包括调节或限制与过滤条件匹配的流量的带宽。在进一步的实施例中,动作可包括根据流的方向以不同级别调节或限制流量的带宽。例如,策略可指示将入站流量限制为第一速率,以及将出站流量限制为第二速率。在另一个实施例中,要应用的动作可以是以最小延迟或者尽可能快地处理匹配过滤 条件的流量,其中可包括将最小延迟流量优先化为在其他流量之前,或者缓冲或延迟其他非最小延迟流量。在另一个实施例中,要应用的动作可以是阻塞匹配一个或多个过滤条件的流量。
在另一个实施例中,要应用的动作可以是根据优先级别处理流量。在一些实施例中,可存在多个优先级别,包括三个(高、中、低)、五个(高、中高、中、中低、低)、七个(非常高、高、中高、中、中低、低、非常低)或者任何其他数量的优先级别。在一个实施例中,每个级别可使用数值表示的优先级的值。例如,在一个实施例中,优先级别10、20、30、40、50、60和70可对应于上述七个优先级别。然而,也可以使用其他值,在必要时提供更粗略或者更精细的划分。在一些实施例中,当策略中没有指定优先级时,可使用中优先级别。在一些实施例中,可存在后台(back ground)流量的优先级别。在一些实施例中,根据优先级别处理流量可包括根据优先级以各种速率或频率处理流量,或者执行本文描述的其他加速功能。
在又一个实施例中,要应用的动作可能是用ToS位标记匹配一个或多个条件的网络流量分组,用于由智能交换机和启用QoS的路由器管理。在另一个实施例中,要应用的动作可能是用DSCP位标记分组。在又一个实施例中,要应用的动作可能是用ICA优先标签标记分组。
如上文所述,可将策略应用于匹配一个或多个过滤条件的分组。在一些实施例中,这些过滤条件可包括应用名称、类型或标识符、端口、流的方向、本地IP地址、远程IP地址、VLAN ID、DSCP设置、优先级、分组大小、Web高速缓存通信协议(WCCP)服务组ID,或任何其它类型的信息。过滤条件可包括应用的优先顺序,使得可在应用具有低优先级的条件前应用具有高优先级的条件。在一些实施例中,用户或系统管理员可调整一个或多个过滤条件的优先级。
先简要参考图4B,描述了用于提供网络分组的多级分类的网络优化引擎的实施例的框图。策略库414可提供从QoS插件404可用的数据结构到网络优化引擎250或其他用户模式组件可用的那些数据结构的翻译或转换。在一些实施例中,可经由一个或多个分类器、配置策略翻译器和报告翻译器来提供这种翻译或转换。可由QoS插件404或网络优化引擎250使用分类器来定义和分类应用。可由策略库414响应于应用定义的变化来更新分类器。类似地,可响应于链接策略、服务类别策略和/或QoS策略 来创建配置策略翻译器。例如,可使用服务类别过滤器中的规则和QoS策略中的动作来建立策略,其中可使用翻译器将该策略传送到QoS插件404。类似地,可使用策略库414提供的翻译器收集或处理如上文所述的用于报告的数据。
在下文中详细描述的一些实施例中,分类器可包括应用、程序、模块、服务、守护进程、子例程、逻辑、功能或用于将分组分类为对应于应用的其他可执行代码。在一个实施例中,分类器可包括解析器,用于检测或定位分组中的信息,该信息将分组识别为对应于应用。在另一个实施例中,分类器可包括或管理具有一个或多个应用以及一个或多个对应的应用标识符的应用列表。在进一步的实施例中,如下文中详细描述的,应用列表可包括与另一个应用的父子关系的信息。在另一个进一步的实施例中,如下文中详细描述的,应用列表可包括应用的组成员信息。在一些实施例中,分类器可包括解析分组获得信息的功能,该信息识别不在应用列表中的新应用,并且可包括将新的应用添加到应用列表中并且为新的应用建立新的应用标识符的功能。
在一些实施例中,为了使Qos和加速能够一起工作,需要在策略树中建立链接和服务类别策略。在该树的一个实施例中,可为每个链接创建两个链接策略对象,一个方向(入站和出站)一个对象。可在每个链接策略下创建服务类别策略。因此,当分组到达,可将该分组进行分类,可收集统计信息用于报告,并且可应用QoS或加速动作。
回到图4A,在一些实施例中,网络优化引擎可包括XML-RPC侦听器420、telnet侦听器422和/或SNMP代理424。XML-RPC侦听器420、tel net侦听器422和SNMP代理424可包括一个或多个服务、功能、子例程、守护进程、应用或用于监控网络优化引擎250、管理功能428和配置存储418之间的通信的其他可执行代码。例如,SNMP代理424可在内部或经由网络连接来提供SNMP管理数据和命令的处理和传输。XML-RPC侦听器420可与XML-RPC客户端426相接口,在一些实施例中XML-RPC客户端426可包括web浏览器、shell、终端或用于处理XML-RPC调用或者其他HTTP、PHP或类似流量的任何其他类型和形式的客户机接口。在一个实施例中,可将XML-RPC客户端426可与WMI提供程序或其他管理接口相接口以用于自动化和监控。
在一些实施例中,网络优化引擎250、QoS插件404和/或客户机代理 驱动程序406可包括许可模块或与许可模块通信。在一个实施例中,如果许可模块检测到产品没有获得许可,则可能禁用一个或多个过滤器或QoS策略,使得不处理网络流量。
部署示例以及服务类别和策略定义
可在各个实施例中部署图4A中所示的系统,包括作为中间装置的部分,该中间装置例如路由器、网络交换机、防火墙、网桥或其他装置,或者作为客户机或服务器的部分。在这些各种实施例中,可一起使用系统的网络端口用于从一个网段到另一个网段的桥接或路由,或者可以单独使用系统的网络端口。在这些实施例中,系统可经由常规路由、基于策略的路由、web高速缓存通信协议(WCCP)路由,或任何其他路由机制来与其他路由器通信。例如,可在直接或端点模式中、内联(in-line)或虚拟内联(VI)模式中、路由模式中、WCCP模式中、代理模式中、隧道模式中或在任何其他部署模式中部署系统。
在这些实施例中,如上文所述,NIC端口或适配器可使用多个链接。可由一个或多配置参数来标识每个链接。这些参数可包括链接ID(该链接ID可以是内部索引或唯一ID)、适配器名称(可由用户或管理员定义或者自动生成)、链接类型标识符(可用于定义链接对象类型,例如LAN、W AN、站点或任何其他类型)、应用于链接的一个或多个过滤器规则、采用每秒传送位数或任何其他度量表示的最大入站链接速度或带宽、采用每秒传送位数或任何其他度量表示的最大出站链接速度或带宽,以及处理与链接关联的策略或通信的顺序,使得可在低次序的策略之前处理高次序的策略。在一些实施例中,可由用户或系统管理员修改参数,且参数可包括修改标志,该修改标志在一些实施例中设置为零值,或在其他实施例中设置为非零值,以指示已经修改了策略。
如上文所述,为了在不同的网络拓扑、配置和部署模式中支持QoS、每个链接定义或标识可进一步包括一个或多个过滤参数,该过滤参数包括一个或多个IP地址、适配器名称、以太网地址、VLAN ID、WCCP服务组ID或任何其他标识符。在一些实施例中,每个链接可包括关于IP地址和/或以太网地址的单个入口,使得源和目的地址之间不存在区别。在一个这样的实施例中,可基于链接策略的方向(即入站或出站)将地址用作源或目的地址。例如,具有地址1.2.3.4的链接可具有用于入站流量的过滤策 略,该过滤策略应用于具有目的IP1.2.3.4的流量,以及可具有用于出站流量的过滤策略,该过滤策略应用于具有源IP1.2.3.4的流量。在一些实施例中,可以用不同的格式指定或定义IP地址,包括包含点的字符串、字节数组和/或整数值。
在一个实施例中,如上所述,可通过一个或多个远程过程调用命令或方法管理链接。这些方法可包括用于如下操作的命令:创建链接、重命名链接、删除链接、改变链接、获得链接参数、重置与链接关联的一个或多个计数器,或者从与链接关联的一个或多个计数器获得统计信息或计数器的值。进一步的命令可与用于CLI或其他接口的方法相关联,包括用于以下操作的命令:以一种或多种格式(如XML)显示链接的统计信息;以一种或多种格式(如XML)显示或转储链接的特性、以一种或多种格式(如XML)显示或转储高速缓存的链接的特征;显示当前链接或使用链接的应用的列表;以及重置与链接关联的一个或多个计数器。在一个实施例中,可在参数文件中以一种格式(如XML)存储链接定义。在一些实施例中,可在初始化期间首先创建这些定义。XML提供的层级可用于例如在入站和出站模式中表示与链接关联的策略或服务类别:
链接-1(入站)
-服务类别-1
-服务类别-2
-服务类别-n
链接-1(出站)
-服务类别-1
-服务类别-2
-服务类别-n
链接-2(入站)
-服务类别-1
-服务类别-2
-服务类别-n
链接-2(出站)
-服务类别-1
-服务类别-2
-服务类别-n
在一些实施例中,服务类别可用于在流量的优先级之间进行区分。如上文所述,可使用DSCP位来表示服务类别,其中每个类别是具有相同优先值的DSCP组。类别中的值可提供类似的网络服务,但是具有轻微区别(例如“金”、“银”和“铜”性能子类)。如上所述,IETF RFC2474经由代码编号描述一些服务类别。在一些实施例中,可将DSCP位映射到这些代码编号的一些或全部以确保与RFC2474兼容交换机的兼容性,如下所示:
类似地,可将其他优先级代码映射到一个或多个服务类别。例如,在一些实施例中,ICA优先级标签可包括值0-3,表示高、中、低和后台任务,该值0-3可被映射到一个或多个DSCP位或其他服务类别级别。
在一些实施例中,QoS策略可包括多个参数,包括:标识策略动作的唯一标识符;标识根据QoS策略使用哪些动作的一个或多个动作标签(例如,如上文所述的阻塞、提供带宽限制或调节、提供具有最小延迟的流量等);唯一QoS策略名称;优先级别;设置为改变根据策略处理的分组的ToS或DSCP位的服务位;最大输入和/或输出带宽;包含在分组中的ICA优先值或其他协议优先值;以及指示策略是否已被修改的标志。
在一些实施例中,可将不同的动作(诸如加速、QoS、报告和分类)基于服务类别应用于分组。在一个实施例中,报告和分类动作可以是隐式的,或者可以是所有服务类别所需的。因此,在该实施例中,可能对用户或管理员仅报告两个选项-QoS和加速,或者将这两个选项提供作为配置选项。在一些实施例中,加速动作可基于包括在服务类别定义中的应用。例如,如果服务类别包括能够被加速的应用,则其可以仅是能够加速的。取决于用于定义服务类别的一个或多个应用,不是所有服务类别都是与加速有关的。不能将一些动态协议应用配置用于加速。因而,可在配置工具中提供选项,用于用户或管理员选择要使用的关于类别的加速和/或QoS任务。在一些实施例中,诸如压缩比或加速的vs非加速的流量的一些统计参数,对于没有被选择用于加速的类别将不可用。在一个实施例中,当选择用于加速的选项,配置工具可以仅显示能被加速的应用的列表。在一些实施例中,配置工具可包括发现能加速哪些应用的机制。
在一些实施例中,服务类别可包括参数或由参数定义,该参数例如是服务类别的唯一标识符;处理与服务类别相关的策略的优先顺序;所支持的策略的一个或多个标志;有序列表中的一个或多个过滤器规则;一个或多个QoS策略,其中在一个实施例中,该一个或多个QoS策略可包含策略标识符和链接标识符对的值的数组;一个或多个加速策略;标识服务类别是否已被修改的标志;以及可设置为启用或禁用服务类别的标志,无需删除来自装置配置的参数。在一些实施例中,加速策略可包括流控制、基于盘的压缩以及基于存储器的压缩。可在服务类别参数中分别定义QoS策略,且将QoS策略与多个服务类别相关联。
在一些实施例中,XML-RPC命令和方法可用于管理服务类别。这些命令和方法可包括用于以下操作的命令:创建服务类别、重命名服务类别、删除服务类别、改变服务类别的一个或多个参数、获得或检索服务类别的一个或多个参数、重置与服务类别关联的一个或多个计数器、获得或检索与服务类别关联的一个或多个计数器的值或统计信息、设置关于服务类别的加速策略或多个策略、设置关于服务类别的QoS策略或多个策略、更新服务类别的优先顺序,以及改变服务类别的启用或禁用状态。用于CLI或其他接口的命令可包括用于以下操作的命令:显示当前服务类别的列表、显示服务类别的索引表中的条目、以一种或多种格式(如XML)显示服务类别统计信息、以XML转换或输出服务类别定义、检索高速缓存的服务类别的XML定义、重置服务类别驱动程序、倒排服务类别索引以控制应用的顺序、转储与服务类别关联的连接的连接信息,以及重置一个或多个服务类别计数器。在一个实施例中,可在XML文件中存储服务类别列表,并且可在初始化期间将服务类别列表创建为默认列表。在一些实施例中,默认服务类别可以是硬编码的,而在其他实施例中,可在初始化期间响应于存在的一个或多个应用或组件生成默认服务类别。
在一些实施例中,如图4A所示的系统可包括用于禁用一个或多个特性的功能。这样做是有益的,特别是用于测试的目的。在一些实施例中,可禁用一个或多个加速策略和/或一个或多个QoS策略,而不需要将它们从活动配置中删除。在一个实施例中,可通过系统状态参数来控制禁用策略,使得可基于设置或不设置预定的位(例如,第一位用于QoS策略且第二位用于加速策略)来启用或者禁用QoS策略和/或加速策略。在进一步的实施例中,XML-RPC方法可用于获得系统特征的当前状态(例如正启用或禁用的QoS或加速),或者用于通过改变预定的一位或多位的值来设置当前状态。
在一些实施例中,系统可包括用于处理加密流量的功能,该功能将在下文中结合图8详细讨论。例如,在一个实施例中,系统可解密、压缩以及重新加密SSL流量。可基于一个或多个特征(如目的端口、SSL服务器地址和源IP地址)通过过滤SSL流量来对SSL流量使用服务类别。如上文中结合图4A所述,包括报告器412的系统可收集和报告与SSL流量关联的统计信息。在一些实施例中,为提供每个应用级别的统计信息,报告器可使用多级分类方法,例如在下文中结合图8详细讨论的方法,来将S SL流量分类为与应用关联或对应于应用。接着,可收集和报告关于加密流量的每个应用统计信息,以及关于未加密流量的统计信息。例如,在一个这样的实施例中,可用SSL服务器IP和端口地址的过滤器来限定关于消息传送API(MAPI)流量的服务类别,并且可以将与该IP和端口关联的流量分类为MAPI流量。如果另一个服务类别包括启用MAPI的应用,如Microsoft Outlook,则可以报告加密流量和与启用MAPI的应用关联的未加密流量。相反地,如果没有服务类别包括启用MAPI的应用,那么在一些实施例中,可将加密流量报告为未分类的TCP流量。因此,最好配置特定于应用的服务类别和SSL服务类别。
在一些实施例中,系统可包括具有可阻止用户或管理员删除的默认链接和服务类别的默认配置。例如,在一些实施例中,可将默认链接和服务类别用作构造新链接和服务类别的模板,且因此不应删除默认链接和服务类别。因此,在这些实施例中,服务类别、链接、策略和/或其他对象可包括设置为指示以下一个或多个的一个或多个标志或预定位:不允许用户删除对象、不允许用户编辑对象定义、不允许用户改变对象的顺序,不允许用户改变对象的QoS策略和/或动作,以及不允许用户改变对象的加速策略。可由字符串中的独立位来表示每个标志,使得可以独立地设置多个标志。
在一些实施例中,还可使用其他默认值。例如,系统可包括默认最大队列深度,用于分组排队,以及最大数量的条目和/或表大小值用于报告应用、链接、服务类别或其他统计信息。在一些实施例中,系统还可以包括预先配置的过滤规则,例如将所有TCP流量发送到QoS插件和/或网络优化引擎250用于分类和/或进一步处理的规则。这样做可以例如避免管理接口流量的额外处理。在其他实施例中,系统可包括将通用路由封装(GRE)的隧道流量指向QoS插件的规则。例如,一个规则可指示可以将不是we b高速缓存通信协议流量的所有GRE流量(不论TCP或UDP),传送到Q oS插件或网络优化引擎用于分类或进一步处理。还可以将具有更高优先级的另一个规则用于拦截GRE WCCP流量。在一个实施例中,可将该规则仅应用于指向寄载的IP地址的传入的流量。
在一个实施例中,可使用内部地址解析协议(ARP)或“伪ARP”消息来标识要用于特定流量的适当的适配器。在该实施例中,系统可包括预先配置的规则,以在预定端口(如5555)上拦截传送到QoS插件或网络 优化引擎的出站TCP同步(SYN)分组。一旦将分组传送到这些模块中的一个,模块可使用分组中的MAC信息来识别适配器并且更新ARP表。为确保SYN分组不会导致悬挂的连接,模块可向初始套接字回复RST分组以终止该连接。
可能在一些实施例中存在的其他预先配置的策略包括排除策略,其中去除特定的流量。在使用该策略的系统的一个实施例中,匹配过滤设置的流量可具有应用的策略,该策略缺乏导致流量被发送到QoS插件或网络优化引擎的任何动作。因此,通过将该策略放在优先级的第一个,可将流量排除在进一步的处理之外。在一些实施例中,可使用的过滤器包括预定端口号,例如用于RDP终端服务的3389、用于HTTP通信的80或443、用于SSH的22、用于telnet的23,或其他端口,包括用于内部XML-RPC协议消息的那些端口。在其他实施例中,过滤器可包括匹配系统的寄载的IP地址的源或目的IP地址,例如回送地址或内部配置地址。在其中系统使用虚拟IP(VIP)地址的其他实施例中,可使用过滤器排除具有与虚拟IP地址匹配的源或目的IP地址的TCP流量。在其中系统与另一个系统交互以提供高可用性(HA)服务的其他实施例中,可使用过滤器排除具有与HA管理适配器上寄载的IP地址匹配的源或目的IP地址的HA管理流量。
在一些实施例中,为管理在客户机和设备或系统上的应用之间的信令通道流量,该系统可包括预先配置的信号通道策略。在一个这样的实施例中,可将来自信令通道IP和端口的出站流量重定向回QoS插件或网络优化引擎,并且将去往信令通道IP和端口的入站流量定向到QoS插件或网络优化引擎。
在一些实施例中,系统可包括预先配置的策略以将QoS应用到UDP流量而不在该流量上执行加速技术。例如,在充当来自WCCP路由器的U DP流量的代理的系统中,可倒装MAC和IP地址以允许用于业务流的实时重定向的内容路由。因此,在一个实施例中,系统可包括过滤器,该过滤器拦截具有与系统接口匹配的目的MAC地址以及与接口不匹配的目的IP地址的UDP流量,并且将该流量传送到QoS插件用于优先化排序。
在一些实施例中,系统可包括带宽管理功能。在积极带宽管理的实施例中,系统可忽略传统的拥塞控制和包装信号。例如,系统可响应于分组丢失而重新发送分组,但不降低传输速率,和/或可能不使用慢启动协议, 但以协商的带宽立即发送分组。在一些实施例中,系统可忽略自同步程序。例如,在一个这样的实施例中,系统可发送数据来填充窗口(如8MB窗口)而不管没有接收任何ACK分组。在这些积极带宽管理的实施例中,接收侧QoS系统可能不能通过使用这些积极技术、不通过TCP选项调节协商的带宽来减速远程发送者。
网络分组的多级分类
图6示出了用于提供网络分组的多级分类的方法的实施例的流程图。简要而言,在步骤602,第一分类器可接收网络分组。在步骤604,第一分类器可将接收的分组分类为对应于第一预定应用。在步骤606,第一分类器可将第一预定应用的应用标识符包含在网络分组中。在步骤608,第二分类器可接收该网络分组。在步骤610,第二分类器可将接收的分组分类为对应于第二预定应用。在步骤612,第二分类器可确定是使用包括的第一预定应用的应用标识符还是第二预定应用的应用标识符。
参考图6且具体而言,在步骤602,在装置的网络堆栈的第一部分中运行的第一分类器可接收来自网络端口的网络流量的分组。在一些实施例中,第一分类器可经由中间处理来接收网络流量的分组,中间处理例如是上述插件框架的过滤器或网络优化引擎。在一些实施例中,第一分类器可在装置的内核级运行。在一个实施例中,第一分类器可拦截网络流量的分组。在进一步的实施例中,第一分类器可在网络层或者在传输层下方的网络堆栈部分拦截分组。在该实施例中,可将分组不同地称作由分类器拦截或接收的分组。
在步骤604,在一些实施例中,第一分类器可将接收的网络流量的分组分类为对应于第一预定应用。在一个实施例中,第一分类器可解析分组以识别在该分组内标识的一个或多个协议。例如,在一个实施例中,第一分类器可识别分组的网络协议并且将接收的分组分类为对应于使用该网络协议的第一预定应用。在另一个实施例中,第一分类器可识别分组中的其他信息,包括协议类型、应用名称、数据串、一个或多个数据标志,或者可将分组识别为对应于第一预定应用的任何其他信息。在一些实施例中,第一分类器可在网络堆栈的网络层或该网络堆栈的传输层的下方对接收的分组进行分类。
在步骤606,在一些实施例中,第一分类器可将第一预定应用的应用 标识符包含在该分组中。在一个实施例中,将应用标识符包含在分组中可包括将应用标识符附接或附加到该分组。在另一个实施例中,将应用标识符包含在分组中可包括添加或者修改分组的头部的标志或字符串。例如,在一个这样的实施例中,第一分类器可向分组的协议头部的选项字段添加用于标识应用标识符的字符串。在其他实施例中,应用标识符可包含在包括网络流量的分组的数据对象中。在其中数据已经分散在多个网络分组的一个实施例中,可将分组的数据组合到连续的数据块中并且可以将应用标识符包含在该数据块中。
在步骤608,在多个实施例中,在装置的网络堆栈的第一部分(其中,第一分类器在该第一部分运行)上方的网络堆栈的层运行的第二分类器可接收网络分组。在一些实施例中,第二分类器可接收由第一分类器传递的网络分组。例如,在一个实施例中,第一分类器可经由网络堆栈向第二分类器传递分组。在另一个实施例中,第一分类器可经由网络堆栈传递分组,且第二分类器可拦截该分组。在又一个实施例中,第一分类器可经由存储器映射接口将分组传递到第二分类器。因而,在一些实施例中,第一分类器可将分组显式传输到第二分类器,而在其他实施例中,第一分类器可仅发送分组而不知道进一步的处理或者不知道第二分类器的操作。在一些实施例中,第二分类器可在装置的用户级执行。在很多实施例中,第二分类器可在网络堆栈的传输层或传输层上方运行。
在步骤610,在一些实施例中,第二分类器可将接收的分组分类为对应于第二预定应用。在一个实施例中,第二分类器可经由分组的内容,在网络堆栈的传输层或传输层上方将接收的分组分类为对应于第二预定应用。在一个实施例中,第二分类器可解析分组以识别在分组中标识的一个或多个协议。例如,在一个实施例中,第二分类器可识别分组的应用协议并且将接收的分组分类为对应于使用该应用协议的第二预定应用。在另一个实施例中,第二分类器可识别分组中的其他信息,包括协议类型、应用名称、数据串、一个或多个数据标志,或可将分组识别为对应于第二预定应用的任何其他信息。在一些实施例中,第二分类器可将分组识别为包括远程显示协议、远程桌面协议或ICA协议分组,并且可以将与应用显示或分组中的控制数据关联的应用识别为第二预定应用。
在步骤612,在一些实施例中,第二分类器可确定是否使用将分组分类为对应于第二预定应用的第二分类器的分组分类,或者使用由应用标识 符标识的第一分类器的分组分类。在一个实施例中,第二分类器可确定第一预定应用比第二预定应用的粒度更精细,并且可维持或使用第一分类器的应用标识符。例如,在一个实施例中,第一分类器可将网络流量识别为对应于web应用,且第二分类器可将网络流量识别为对应于HTTP流量。在这种情况下,web应用的第一标识可能比第二标识HTTP(可包括HTT P web应用和其他HTTP数据)的粒度更加精细。在一个实施例中,如上文结合图5所描述的,可响应于应用和协议的父子关系来确定粒度。例如,如果第一标识符是第二标识符的孩子,那么可认为第一标识符的粒度更精细。在其他实施例中,第二分类器可确定第二预定应用是比第一预定应用更合适的分类,并且可以将包含在分组中的应用标识符用第二预定应用的第二应用标识符或对应于第二预定应用的第二应用标识符来代替。例如,如果第二预定应用的标识比第一预定应用的标识粒度更加精细,那么第二分类器可将分组中包含的应用标识符用对应于第二预定应用的应用标识符来代替。一旦由第一应用或第二应用适当地分类,可响应于该分类将各种QoS策略应用于该分组。
自动发现应用
如上文所述,应用列表可包括多个预定应用。然而,在远程桌面或瘦客户机系统的一些实施例中,有可能可以远程访问任何应用。因此,远程显示协议的网络分组可包括对应于不包括在预定应用列表中的应用的应用显示数据、图形数据或控制数据。因此,对于应用分类器而言,包括用于识别新应用和添加新应用到应用列表的功能是有价值的。
在一个实施例中,上述应用分类器可包括与预定应用列表交互的功能。例如,在一个实施例中,应用分类器可使用API来创建应用定义,以及作为参数列表或XML文件的参数。还可以使用XML-RPC方法来管理该应用列表,包括用于下列操作的方法:创建应用定义、重命名应用定义、删除应用定义、改变应用定义设置、获得或检索应用定义、根据名称获得或检索应用定义、根据组标识符获得或检索应用定义、重置与应用定义关联的一个或多个计数器,或者获得或检索与应用定义关联的一个或多个计数器的值或统计信息。用于CLI或其他接口与应用列表交互的命令可包括用于以一种或多种格式(包括XML)显示应用定义统计信息或计数器值的命令、以XML格式检索应用定义的命令、以XML格式检索应用定义 的高速缓存的版本的命令、显示应用列表或当前使用的应用列表的命令,以及重置与应用关联的一个或多个计数器的命令。
现参考图7,描述了用于经由远程显示协议发现应用以便包括在应用列表中用于对网络流量进行分类的方法的实施例的流程图。简要而言,在步骤702,中间装置可根据关于远程显示协议的应用列表对远程显示协议的流量进行分类。在步骤704,中间装置可解析分组以获得应用信息。在步骤706,中间装置可根据解析的应用信息识别新应用不在关于远程显示协议的应用列表中。在步骤708,中间装置可将新应用添加到用于对远程协议显示流量进行分类的应用列表中。在一些实施例中,中间装置可接着重复步骤702来重新分类流量。
仍参考图7且具体而言,在一些实施例中在步骤702,在多个客户机和多个服务器中间的装置可根据关于远程显示协议的应用列表对远程显示协议的流量进行分类。尽管一般称作远程显示协议,但该协议可包括RDP协议、ICA协议、远程帧缓冲(RFB)协议、X11协议或任何其他类型和形式的远程显示协议。可由用户或管理员预先配置应用列表,或者在一些实施例中,可在装置的初始化期间建立关于远程显示协议的应用列表。在一个实施例中,装置可响应于或对应于由用于远程显示协议的多个服务器中的一个或多个服务器发布的一个或多个应用,来建立关于远程显示协议的应用列表。
在步骤704,在一个实施例中,装置可解析穿过该装置的远程显示协议流量获得远程显示协议的应用信息。在一些实施例中,多个服务器中的一个服务器可将应用发布为在服务器上可由一个或多个用户经由远程显示协议访问的应用。在许多这样的实施例中,服务器可发送远程显示协议流量,向一个或多个用户公告该新发布的应用。一旦接收该流量,中间装置可解析该流量以识别新发布的应用。在其他实施例中,中间装置可解析远程协议流量获得应用的标识符。例如,在一些实施例中,可发送流量,该流量标识要执行、开始、退出、关闭或以其他方式交互的应用。装置可接着解析该流量以确定应用的标识。
在步骤706,在一些实施例中,装置可根据解析的应用信息来识别新应用不在关于远程显示协议的应用列表中。在一个实施例中,识别新应用可包括比较来自解析的应用信息的新应用的名称与来自应用列表的名称。在另一个实施例中,识别新应用可包括比较解析的应用信息与应用列表中 对应信息的标识符、字符串、唯一ID或任何其他信息。在一些实施例中,装置可确定远程显示协议的解析的应用信息将应用识别为新应用。在其他实施例中,装置可确定解析的应用信息识别已在应用列表中的应用。在该实施例中,装置可跳过步骤708。
在步骤708,在一些实施例中,中间装置可将新应用添加到用于对远程显示协议流量进行分类的应用列表。在一个实施例中,如上所述,装置可为新应用建立应用标识符。在其他实施例中,装置可为新应用从多个优先级中建立优先级。例如,在一个这样的实施例中,装置可将新应用建立为高优先级应用。在进一步的实施例中,装置可接收关于新应用的远程显示协议流量并且可根据建立的优先级来对该远程显示协议流量进行分类。可响应与分类的优先级执行QoS和其他加速技术。在许多实施例中,装置可接受关于新应用的进一步的远程显示协议流量,且可以根据添加到应用列表的新应用的分类信息对该远程显示协议流量进行分类。
对加密网络流量进行分类
如上文所述,在多个实施例中,执行QoS、优先排队和其他加速技术的装置可将接收的分组分类为对应于应用,并且接着应用与该应用关联的QoS和其他策略。然而,在许多实施例中,分组可能被加密,使得在加密前,应用分类器不能确定与该分组关联的或对应于该分组的应用。一种解决方案可以是不对分组进行分类直到它们都已经被解密。然而,这样可能导致无论优先级如何,所有加密分组都被放入解密队列或缓冲区中。因此,根据对加密网络分组的第一分类按顺序解密分组,并且在解密后对加密网络分组进行重新分类可能更有效率。
图8示出了用于提供对加密网络流量进行分类的方法的实施例的流程图。简要而言,在步骤802,第一分类器可接收加密分组。在步骤804,第一分类器可将加密分组分类为对应于第一预定应用。在步骤806,第一分类器可将第一预定应用的应用标识符包含在该加密网络分组中。在步骤808,第二分类器可接收和解密网络分组。在步骤810,第二分类器可将解密分组分类为对应于第二预定应用。在步骤812,第二分类器可确定是使用包含的第一预定应用的应用标识符还是第二预定应用的应用标识符。
仍参考图8且具体而言,在步骤802,在装置的网络堆栈的第一部分运行的第一分类器可经由网络端口接收加密的网络流量的分组。在一些实 施例中,第一分类器可经由中间处理接收网络流量的分组,该中间处理例如是上文描述的插件框架的过滤器或网络优化引擎。在一些实施例中,第一分类器可在装置的内核层运行。在一个实施例中,第一分类器可拦截加密分组。在进一步的实施例中,第一分类器可以在网络层或者在传输层下方的网络堆栈部分拦截加密分组。在这样的实施例中,可将加密分组不同地称作由分类器拦截的或接收的加密分组。
在步骤804,在一些实施例中,第一分类器可对接收的加密分组进行分类。在一个实施例中,第一分类器可将加密分组分类为对应于第一预定应用。在一个实施例中,第一分类器可解析该分组以识别在该分组中标识的一个或多个协议。例如,在一个实施例中,第一分类器可识别分组的网络协议并且将接收的分组分类为对应于使用该网络协议的第一预定应用。在另一个实施例中,第一分类器可识别加密分组的未加密部分中的其他信息,例如IP头部,包括协议类型、应用名称、数据串、一个或多个数据标志,或者可将分组识别为对应于第一预定应用的任何其他信息。在一个实施例中,第一分类器可基于分组的未加密部分对该分组进行分类。在另一个实施例中,第一分类器可接收包括加密有效载荷的分组,并且基于非有效载荷的内容对该分组进行分类。在另一个实施例中,分组可包括封装在未加密的第二协议中的第一协议的加密分组,且第一分类器可基于未加密的封装头部和/或数据部分对分组进行分类。在一些实施例中,第一分类器可以在网络堆栈的网络层或者网络堆栈的传输层下方接收分组。
在步骤806,在一些实施例中,第一分类器可将与由分类标识的第一预定应用对应的应用标识符包含在分组中。在一个实施例中,将应用标识符包含在分组中可包括将应用标识符附接或附加到该分组。在另一个实施例中,将应用标识符包含在分组中可包括添加或修改分组的头部的标志或字符串。例如,在一个这样的实施例中,第一分类器可以向分组的协议头部的可选字段添加字符串,该字符串标识应用标识符。在其他实施例中,应用标识符可包含在包含该网络流量的分组的数据对象中。在其中数据已分散在多个网络分组的一个实施例中,可将分组的数据装入连续的数据块中并且将应用标识符包含在该数据块中。
在步骤808,在多个实施例中,在第一部分(其中第一分类器在该第一部分运行)上方的装置的网络堆栈的第二部分运行的第二分类器可接收网络分组。在一些实施例中,第二分类器可解密该分组。在其他实施例中, 第二分类器可将该分组传送到解密模块,该解密模块可解密该分组并且向第二分类器返回未加密的分组。在一些实施例中,第二分类器可接收由第一分类器传递的加密分组。例如,在一个实施例中,第一分类器可经由网络堆栈将加密分组传递给第二分类器。在另一个实施例中,第一分类器可经由网络堆栈传递加密分组,并且第二分类器可拦截该分组。在又一个实施例中,第一分类器可经由存储器映射接口将加密分组传递给第二分类器。因此,在一些实施例中,第一分类器可向第二分类器显示地传输加密分组,而在其他实施例中,第一分类器可以仅传输该分组而不知道进一步的处理或者不知道第二分类器的操作。在一些实施例中,第二分类器可在装置的用户层执行。在多个实施例中,第二分类器可在网络堆栈的传输层或传输层上方操作分组。
在步骤810,在一些实施例中,第二分类器可基于加密分组的解密内容对该分组进行分类或重新分类。在一个实施例中,第二分类器可在网络堆栈的传输层或在传输层的上方,经由分组的解密内容将该分组分类为对应于第二预定应用。在一个实施例中,第二分类器可解析该分组以识别在该分组中标识的一个或多个协议。例如,在一个实施例中,第二分类器可识别解密分组的应用协议,并且将该分组分类为对应于使用该应用协议的第二预定应用。在另一个实施例中,第二分类器可识别分组中的其他信息,包括协议类型、应用名称、数据串、一个或多个数据标志或者可将分组识别为对应于第二预定应用的任何其他信息。在一些实施例中,第二分类器可将与应用显示或分组中的控制数据关联的应用识别为第二预定应用。在一个实施例中,第二分类器可识别加密网络流量隧道中的第二预定应用。在另一个实施例中,第二分类器可根据包括用隧道协议(例如TLS或SS L协议)头部封装的分组的未加密有效载荷,来识别第二预定应用。
在步骤812,在一些实施例中,第二分类器可确定是使用包含的应用标识符还是第二预定应用的应用标识符。在一个实施例中,第二分类器可确定使用第二预定应用的应用标识符,并且可对加密分组进行重新分类。在一个实施例中,第二分类器可确定第二预定应用是比第一预定应用更适合的分类,并且可将包含在分组中的应用标识符用第二预定应用的第二应用标识符或对应于第二预定应用的第二应用标识符来代替。例如,如果第二预定应用的标识比第一预定应用的标识的粒度更精细,那么第二分类器可将包含在分组中的应用标识符替换为对应于第二预定应用的应用标识 符。在一个实施例中,如上文中结合图5所讨论的,可响应于应用和协议的父子关系来确定粒度。例如,如果第一标识符是第二标识符的孩子,那么可认为第一标识符的粒度更细。在另一个实施例中,第二标识符可确定第一预定应用比第二预定应用的粒度更精细,并且可维持或利用第一分类器的应用标识符。例如,在一个实施例中,第一分类器可将网络流量识别为对应于web应用,并且第二分类器可将该网络流量识别为对应于HTTP流量。在该实施例中,web应用的第一标识比HTTP的第二标识的粒度更精细,其中HTTP可包括HTTP web应用和其他HTTP数据。一旦由第一应用或第二应用适当地分类,可响应于该分类对该分组应用各种QoS策略。
尽管已经描述方法和系统的各种实施例,但是这些实施例是示例性的并且不以任何方式限制所述方法和系统的范围。相关领域中的技术人员在不脱离所描述方法和系统的最宽范围的情况下可以对所描述的方法和系统的形式和细节进行修改。因此,本文描述的方法和系统的范围不应该通过这些示例性实施例来限定,而是应该根据所附权利要求书和其等价范围来限定。

Claims (16)

1.一种用于对加密网络流量进行分类的方法,所述方法包括:
(a)由在装置的网络堆栈的第一部分运行的第一分类器,对经由网络端口接收的加密分组进行分类;
(b)由所述第一分类器将对应于由所述分类识别的第一预定应用的应用标识符包含在所述分组中;
(c)由在所述第一部分上方的网络堆栈的第二部分运行的第二分类器,接收所述应用标识符和所述加密分组;
(d)由所述第二分类器,基于所述加密分组的解密内容将从所述第一分类器接收的所述加密分组重新分类为第二预定应用;
(e)如果所述第二分类器确定第二预定应用比第一预定应用的粒度更精细,则由所述第二分类器将所述应用标识符替换为第二预定应用的第二应用标识符;以及
(f)如果所述第二分类器确定第一预定应用比第二预定应用的粒度更精细,则维持所述第一分类器的应用标识符。
2.根据权利要求1所述的方法,其中步骤(a)还包括由所述第一分类器基于所述分组的未加密部分对所述分组进行分类。
3.根据权利要求1所述的方法,其中步骤(a)还包括:
接收包括加密的有效载荷的分组并且基于非有效载荷内容对所述分组进行分类。
4.根据权利要求1所述的方法,其中步骤(b)还包括由所述第一分类器将所述应用标识符附接到所述分组。
5.根据权利要求1所述的方法,其中步骤(b)还包括由所述第一分类器修改所述分组以包括所述应用标识符。
6.根据权利要求1所述的方法,其中步骤(d)还包括由所述第二分类器识别加密网络流量的隧道中的第二预定应用。
7.根据权利要求1所述的方法,其中步骤(d)还包括由所述第二分类器确定第一预定应用具有与第二预定应用的子关系。
8.根据权利要求1所述的方法,其中步骤(d)还包括由所述第二分类器确定是使用第二预定应用还是第一预定应用来对所述分组进行分类。
9.一种用于对加密网络流量进行分类的系统,所述系统包括:
装置,其在多个客户机和多个服务器中间并且接收多个客户机和多个服务器之间的网络流量;
第一分类器,其在所述装置的网络堆栈的第一部分运行,所述第一分类器对经由网络端口接收的加密分组进行分类,并且将对应于由所述分类识别的第一预定应用的应用标识符包含在所述分组中;以及
第二分类器,其在所述第一部分上方的网络堆栈的第二部分运行,所述第二分类器:(i)接收所述应用标识符和所述加密分组,以及(ii)基于所述加密分组的解密内容将从所述第一分类器接收的所述加密分组重新分类为第二预定应用;
其中,如果所述第二分类器确定第二预定应用比第一预定应用的粒度更精细,则所述第二分类器将所述应用标识符替换为第二预定应用的第二应用标识符,以及如果所述第二分类器确定第一预定应用比第二预定应用的粒度更精细,则维持所述第一分类器的应用标识符。
10.根据权利要求9所述的系统,其中所述第一分类器基于所述分组的未加密部分对所述分组进行分类。
11.根据权利要求9所述的系统,其中所述装置接收包括加密的有效载荷的分组并且所述第一分类器基于非有效载荷内容对所述分组进行分类。
12.根据权利要求9所述的系统,其中所述第一分类器将所述应用标识符附接到所述分组。
13.根据权利要求9所述的系统,其中所述第一分类器修改所述分组以包括所述应用标识符。
14.根据权利要求9所述的系统,其中所述第二分类器识别加密网络流量的隧道中的第二预定应用。
15.根据权利要求9所述的系统,其中所述第二分类器确定第一预定应用具有与第二预定应用的子关系。
16.根据权利要求9所述的系统,其中所述第二分类器确定是使用第二预定应用还是第一预定应用来对所述分组进行分类。
CN201180049247.7A 2010-08-12 2011-08-11 用于加密网络流量的服务质量的系统和方法 Expired - Fee Related CN103384991B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/855,335 2010-08-12
US12/855335 2010-08-12
US12/855,335 US8638795B2 (en) 2010-08-12 2010-08-12 Systems and methods for quality of service of encrypted network traffic
PCT/US2011/047449 WO2012021723A2 (en) 2010-08-12 2011-08-11 Systems and methods for quality of service of encrypted network traffic

Publications (2)

Publication Number Publication Date
CN103384991A CN103384991A (zh) 2013-11-06
CN103384991B true CN103384991B (zh) 2016-09-28

Family

ID=44584645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180049247.7A Expired - Fee Related CN103384991B (zh) 2010-08-12 2011-08-11 用于加密网络流量的服务质量的系统和方法

Country Status (4)

Country Link
US (2) US8638795B2 (zh)
EP (1) EP2604020B1 (zh)
CN (1) CN103384991B (zh)
WO (1) WO2012021723A2 (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990380B2 (en) 2010-08-12 2015-03-24 Citrix Systems, Inc. Systems and methods for quality of service of ICA published applications
US8433783B2 (en) 2010-09-29 2013-04-30 Citrix Systems, Inc. Systems and methods for providing quality of service via a flow controlled tunnel
US9438384B2 (en) * 2011-03-08 2016-09-06 Qualcomm Incorporated Providing multiple retransmission policies for a single data stream by mapping differentiated services code point (DSCP) bit fields to media access control protocol data unit (MPDU) bit fields
US9237168B2 (en) * 2012-05-17 2016-01-12 Cisco Technology, Inc. Transport layer security traffic control using service name identification
KR20140011539A (ko) * 2012-07-02 2014-01-29 한국전자통신연구원 네트워크 애플리케이션의 가상화 방법 및 장치
JP6021487B2 (ja) * 2012-07-18 2016-11-09 キヤノン株式会社 情報処理システム、制御方法、サーバ、情報処理装置およびコンピュータプログラム
JP6248379B2 (ja) * 2012-09-24 2017-12-20 富士通株式会社 入出力装置、メモリ監視方法および伝送装置
US10776335B2 (en) * 2013-03-13 2020-09-15 Comcast Cable Communications, Llc Systems and methods for managing data
JP6079348B2 (ja) * 2013-03-22 2017-02-15 富士通株式会社 スイッチ装置、スイッチ装置の制御方法、及びネットワークシステム
US9614739B2 (en) * 2014-01-30 2017-04-04 Cisco Technology, Inc. Defining service chains in terms of service functions
US10205648B1 (en) * 2014-05-30 2019-02-12 EMC IP Holding Company LLC Network monitoring using traffic mirroring and encapsulated tunnel in virtualized information processing system
EP3016432B1 (en) * 2014-10-30 2018-07-04 Vodafone IP Licensing limited Content compression in mobile network
JP2016184824A (ja) * 2015-03-25 2016-10-20 富士通株式会社 パケット解析プログラム、パケット解析装置およびパケット解析方法
CN107710812B (zh) * 2015-07-16 2021-08-17 诺基亚技术有限公司 支持承载内子流qos区分的用户平面增强
US10044502B2 (en) 2015-07-31 2018-08-07 Nicira, Inc. Distributed VPN service
US10567347B2 (en) * 2015-07-31 2020-02-18 Nicira, Inc. Distributed tunneling for VPN
US20170104728A1 (en) * 2015-10-07 2017-04-13 E.J. Ward, Inc. Wireless network identifier with encrypted network access information
US10116553B1 (en) 2015-10-15 2018-10-30 Cisco Technology, Inc. Application identifier in service function chain metadata
US10547559B2 (en) * 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing
US10362373B2 (en) 2016-01-07 2019-07-23 Cisco Technology, Inc. Network telemetry with byte distribution and cryptographic protocol data elements
US10250491B2 (en) 2016-05-09 2019-04-02 Qualcomm Incorporated In-flow packet prioritization and data-dependent flexible QoS policy
US10326730B2 (en) 2016-06-27 2019-06-18 Cisco Technology, Inc. Verification of server name in a proxy device for connection requests made using domain names
US10659476B2 (en) 2016-09-12 2020-05-19 Architecture Technology Corporation Transparent bridge for monitoring crypto-partitioned wide-area network
US10757161B2 (en) * 2017-01-09 2020-08-25 Citrix Systems, Inc. Learning technique for QoS based classification and prioritization of SAAS applications
CN107749859B (zh) * 2017-11-08 2020-03-31 南京邮电大学 一种面向网络加密流量的恶意移动应用检测方法
US11089058B2 (en) * 2018-01-25 2021-08-10 International Business Machines Corporation Context-based adaptive encryption
US10805341B2 (en) 2018-02-06 2020-10-13 Cisco Technology, Inc. Leveraging point inferences on HTTP transactions for HTTPS malware detection
CN108923956A (zh) * 2018-06-13 2018-11-30 广州微林软件有限公司 一种网络数据传输的方法
CN110912859B (zh) 2018-09-17 2021-12-14 华为技术有限公司 发送报文的方法、接收报文的方法及网络设备
US11095626B2 (en) * 2018-09-26 2021-08-17 Marvell Asia Pte, Ltd. Secure in-line received network packet processing
US11025601B2 (en) * 2018-12-04 2021-06-01 Citrix Systems, Inc. System and apparatus for enhanced QOS, steering and policy enforcement for HTTPS traffic via intelligent inline path discovery of TLS terminating node
CN109831422B (zh) * 2019-01-17 2020-08-18 中国科学院信息工程研究所 一种基于端到端序列网络的加密流量分类方法
CN109902313B (zh) * 2019-03-01 2023-04-07 北京金山数字娱乐科技有限公司 一种翻译方法及装置、翻译模型的训练方法及装置
TWI685231B (zh) * 2019-04-23 2020-02-11 國立中央大學 封包分類方法
CN110417729B (zh) * 2019-06-12 2020-10-27 中国科学院信息工程研究所 一种加密流量的服务与应用分类方法及系统
US11489777B1 (en) * 2019-08-09 2022-11-01 Cfph, Llc Network optimization and state synchronization
US11310669B2 (en) * 2019-08-20 2022-04-19 Verizon Patent And Licensing Inc. Systems and methods for intercepting network traffic
CN111327604B (zh) * 2020-01-21 2022-09-06 深圳市泰信通信息技术有限公司 数据处理系统及其方法
US11463366B1 (en) 2020-09-22 2022-10-04 Architecture Technology Corporation Autonomous network optimization using network templates
CN112217679B (zh) * 2020-10-16 2024-05-31 腾讯科技(深圳)有限公司 应用程序加速方法、装置、计算机设备和存储介质
US20210255973A1 (en) * 2020-12-17 2021-08-19 Intel Corporation Stream routing and ide enhancements for pcie
US11601399B2 (en) 2021-01-20 2023-03-07 Bank Of America Corporation System and method for detecting forbidden network accesses based on zone connectivity mapping
US11729167B2 (en) 2021-02-12 2023-08-15 Target Brands, Inc. Authorization proxy
US11283768B1 (en) * 2021-03-02 2022-03-22 NortonLifeLock Inc. Systems and methods for managing connections
KR102370114B1 (ko) * 2021-06-21 2022-03-07 (주)소울시스템즈 지능형 네트워크 관리 시스템의 정보묶음 생성관리 장치 및 그 방법
KR102376349B1 (ko) * 2021-06-21 2022-03-18 (주)소울시스템즈 자동 패킷 분석 기반의 네트워크 장애 자동 해결 장치 및 그 방법
US11902168B2 (en) 2021-06-24 2024-02-13 Cisco Technology, Inc. Data packet prioritization in multiplexed sessions
CN114500682B (zh) * 2021-12-27 2023-08-08 天翼云科技有限公司 一种数据包的处理方法、装置及边端设备
US20230328038A1 (en) * 2022-04-12 2023-10-12 Cisco Technology, Inc. Layer-3 policy enforcement for layer-7 data flows

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1540916A (zh) * 2003-04-24 2004-10-27 松下电器产业株式会社 加密信息包处理设备、方法、程序和程序记录媒体

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200684B1 (en) * 2000-04-13 2007-04-03 International Business Machines Corporation Network data packet classification and demultiplexing
US6917588B1 (en) 2000-05-16 2005-07-12 Nortel Networks Limited Apparatus and method for classifying data packet flows
AU2001292801A1 (en) 2000-09-11 2002-04-29 Sitara Networks, Inc. Central policy manager
US7051084B1 (en) * 2000-11-02 2006-05-23 Citrix Systems, Inc. Methods and apparatus for regenerating and transmitting a partial page
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US7308711B2 (en) * 2003-06-06 2007-12-11 Microsoft Corporation Method and framework for integrating a plurality of network policies
US7827602B2 (en) 2003-06-30 2010-11-02 At&T Intellectual Property I, L.P. Network firewall host application identification and authentication
US7408932B2 (en) 2003-10-20 2008-08-05 Intel Corporation Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing
US20090040925A1 (en) 2005-03-21 2009-02-12 Jarl Tomas Holmstrom DEVICE HAVING QUALITY OF SERVICE (QoS) CONFIRMATION AND METHOD FOR CONFIGURING QoS
US7607168B1 (en) * 2005-04-22 2009-10-20 Sun Microsystems, Inc. Network interface decryption and classification technique
ES2323244T3 (es) 2005-05-13 2009-07-09 Qosmos Analisis del trafico en redes de alta velocidad.
US20070078955A1 (en) 2005-09-15 2007-04-05 Xelor Software Pty Ltd Service quality management in packet networks
ATE426980T1 (de) 2005-12-02 2009-04-15 Alcatel Lucent Netzknoten mit modularer, mehrstufiger paketklassifizierung
US20070233804A1 (en) 2006-03-31 2007-10-04 Microsoft Corporation Providing remote application access in accordance with decentralized configuration information
US7813337B2 (en) * 2007-01-19 2010-10-12 Broadcom Corporation Network packet processing using multi-stage classification
US20080267177A1 (en) * 2007-04-24 2008-10-30 Sun Microsystems, Inc. Method and system for virtualization of packet encryption offload and onload
US8194657B2 (en) 2007-05-22 2012-06-05 Actiontec Electronics, Inc. Systems and methods for dynamic quality of service
US7773510B2 (en) 2007-05-25 2010-08-10 Zeugma Systems Inc. Application routing in a distributed compute environment
US7831181B2 (en) 2007-12-06 2010-11-09 Kabushiki Kaisha Toshiba Developing device
WO2010042578A1 (en) 2008-10-08 2010-04-15 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component
KR101152958B1 (ko) 2008-12-19 2012-06-08 한국전자통신연구원 계층적 패킷 처리 장치 및 방법
US20120144025A1 (en) 2008-12-23 2012-06-07 Telefonaktiebolaget L.M. Ericsson (Publ) Method and an Arrangement For Enabling User Traffic Classification Configuration
US20110106937A1 (en) 2009-10-29 2011-05-05 Fluke Corporation Mixed-mode analysis

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1540916A (zh) * 2003-04-24 2004-10-27 松下电器产业株式会社 加密信息包处理设备、方法、程序和程序记录媒体

Also Published As

Publication number Publication date
EP2604020B1 (en) 2021-01-06
US20120039337A1 (en) 2012-02-16
EP2604020A2 (en) 2013-06-19
CN103384991A (zh) 2013-11-06
US20140185482A1 (en) 2014-07-03
US9294378B2 (en) 2016-03-22
WO2012021723A2 (en) 2012-02-16
WO2012021723A3 (en) 2012-04-05
US8638795B2 (en) 2014-01-28

Similar Documents

Publication Publication Date Title
CN103384991B (zh) 用于加密网络流量的服务质量的系统和方法
CN103354989B (zh) 用于中间装置中的多级服务质量分类的系统和方法
CN103229460B (zh) 用于经由流控制隧道提供服务质量的系统和方法
CN103518358B (zh) 为单个流ICA提供QoS的系统和方法
US9602577B2 (en) Systems and methods for quality of service of ICA published applications
CN102986189B (zh) 用于为对应于虚通道的网络连接分配服务等级的系统和方法
CN102405631B (zh) 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
US9130864B2 (en) Prioritizing classes of network traffic to provide a predetermined quality of service
CN102948131B (zh) 用于经由wan设备分离代理ssl的系统和方法
CN103152279B (zh) 用于在tcp拥塞控制中提供服务质量优先的系统和方法
CN101682565B (zh) 用于通过代理进行动态带宽控制的系统和方法
CN103988483A (zh) 用于网络加速器的动态适应的系统和方法

Legal Events

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

Granted publication date: 20160928