CN101682526B - 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法 - Google Patents

用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法 Download PDF

Info

Publication number
CN101682526B
CN101682526B CN2008800158624A CN200880015862A CN101682526B CN 101682526 B CN101682526 B CN 101682526B CN 2008800158624 A CN2008800158624 A CN 2008800158624A CN 200880015862 A CN200880015862 A CN 200880015862A CN 101682526 B CN101682526 B CN 101682526B
Authority
CN
China
Prior art keywords
equipment
object class
strategy
network
arbitrary
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.)
Active
Application number
CN2008800158624A
Other languages
English (en)
Other versions
CN101682526A (zh
Inventor
P·凯马尼
V·班德卡尔
V·科拉帕提
R·米拉尼
A·乔汉
N·西卡
A·雷迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/685,171 external-priority patent/US7853678B2/en
Priority claimed from US11/685,147 external-priority patent/US7865589B2/en
Priority claimed from US11/685,180 external-priority patent/US8631147B2/en
Priority claimed from US11/685,167 external-priority patent/US7870277B2/en
Priority claimed from US11/685,177 external-priority patent/US8490148B2/en
Priority claimed from US11/685,175 external-priority patent/US7853679B2/en
Priority to CN201310491676.0A priority Critical patent/CN103560905B/zh
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN101682526A publication Critical patent/CN101682526A/zh
Application granted granted Critical
Publication of CN101682526B publication Critical patent/CN101682526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0233Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • 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/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • 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
    • H04L63/0457Network 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 wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

描述了用于配置和估计指导一个或者多个数据流的处理的策略的系统和方法。所描述的配置接口允许用户指定面向对象的策略。这些面向对象的策略可以允许关于所接收的分组流的有效载荷来应用任一数据结构,包括HTTP业务量的任一部分。配置接口除了在一个或者多个策略未被定义时指定所采取的行动之外还可以允许用户控制执行策略和策略组的顺序。用于处理策略的系统和方法可以允许通过应用可能复杂的数据结构来解构数据流而允许面向对象的策略的有效处理。装置也可以解释和处理大量流量控制命令和策略组调用语句来确定在多个策略和策略组上执行的顺序。这些策略配置和处理可以允许配置和处理涉及负载平衡、VPNs、SSL卸载、内容转换、应用安全、加速和高速缓存的复杂网络行为。

Description

用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法
相关申请
本申请涉及并要求以下未决美国申请的优先权,其每一个通过引用全部包含于此:2007年3月12日提交的美国申请11/685,147号″Systems and Methods for Providing Structured Policy Expressionsto Represent Unstructured Data in a Network Appliance,″;2007年3月12日提交的美国申请11/685,167号″Systems and Methods for UsingObject Oriented Expressions to Configure Application SecurityPolicies″;2007年3月12日提交的美国申请11/685,171号″Systems andMethods for Configuring Flow Control of Policy Expressions″;2007年3月12日提交的美国申请11/685,180号″Systems and Methods forConfiguring Policy bank Invocations″;2007年3月12日提交的美国申请11/685,175号″Systems and Methods for Configuring Handling ofUndefined Policy Events″;和2007年3月12日提交的美国申请11/685,177号″Systems and Methods for Managing ApplicationSecurity Profiles″。
技术领域
本发明涉及计算机网络技术。更具体地,本发明涉及用于在网络装置中配置和应用策略以及设置的系统和方法。
背景技术
网络装置和客户机可以提供关于网络业务量的大量复杂功能。除了这些功能之外,网络装置还可以提供负载平衡、应用安全、内容转换、SSL卸载、加速和高速缓存。然而,随着网络装置所提供的功能的数量和复杂性增加,对于网络装置所需的配置的复杂性和数量也同样增加。进一步,网络装置的不适当的和非最优的配置可以导致性能下降、网络错误、应用不兼容和安全削弱。
许多网络装置可以使用策略框架来控制网络装置功能。在这些框架中,策略可以指定专用于指定特定条件下行为的规则和动作。例如,使用HTTP业务量,策略框架可以允许用户来配置基于HTTP流中的内容的装置行为。根据要被分析的内容和所寻找(sought)的行为,这些策略可以变得复杂。因此,为了写策略来指导装置行为,需要策略框架允许用户将结构应用到网络业务量。同样需要网络装置随后能够以有效方式来实现这样结构化的策略表达式。
此外,随着网络装置功能的数量和复杂性增加,它们的配置所需的策略的数量也可以增加。随着策略数量的增加,同样需要指定和实现策略和策略组上的处理顺序。
进一步,网络装置中使用的一些期望的策略可能未必具有所定义的结果。例如,策略可以响应HTTP请求的给定字段来指定行为,但是在字段不存在或者字段具有不期望的值的情况中可以不被定义。虽然在一些情况中有可能写入通常被定义的策略,但是这可能要求附加的策略或者更复杂的策略并且可能增加管理开销。因此需要允许用户对于策略未被限定的情况指定一个或者多个动作的配置系统。
发明内容
本发明涉及用于配置和估计指导一个或者多个数据流的处理的策略的系统和方法。所描述的配置接口用来允许用户指定面向对象的策略。这些面向对象的策略可以允许关于所接收的分组流的有效载荷来应用的任一数据结构,包括HTTP业务量的任一部分。配置接口除了在一个或者多个策略未定义时执行所采取的行动之外还可以允许用户控制执行策略和策略组的顺序。用于处理策略的系统和方法可以通过应用可能复杂的数据结构以解构数据流来允许面向对象的策略的有效处理。装置也可以解释和处理大量流量控制命令和策略组调用语句来确定在大量策略和策略组上执行的顺序。这些策略配置和处理可以允许用户来有效配置涉及负载平衡、VPNs、SSL卸载、内容转换、应用安全、加速和高速缓存的复杂网络行为。
在一个方面中,本发明涉及使用面向对象的表达式来配置网络装置的策略以指定网络装置所接收的分组流的有效载荷中的结构的系统和方法。在一个实施例中,该方法包括:提供用于配置对于网络装置的策略的配置接口;经由配置接口接收对于策略的表达式,该表达式识别(i)应用到分组流的有效载荷的部分的对象类;和(ii)对象类的成员;和经由配置接口接收识别策略的动作的信息,该动作基于该表达式的估计而被采取。
在第二方面中,本发明涉及用于在策略中应用面向对象的表达式来指定设备接收的分组流的有效载荷中的结构的系统和方法。在一个实施例中,方法包括:由设备识别策略来估计关于所接收的分组流的有效负载,该策略指定(i)应用到分组流的有效载荷的部分的对象类;、(ii)对象类的成员和(iii)动作;由设备选择该对象类识别的有效载荷的部分;由设备确定对于该对象类的成员的值;并且响应所确定的值来采取动作。在另一个实施例中,该方法包括:由设备识别包括面向对象表达式的策略来估计关于所接收的分组流的有效载荷;基于有效载荷的部分,由设备分配值给面向对象表达式所指定的数据结构;由设备执行基于所分配的值的表达式的估计;和响应于该估计,采取策略所指定的动作。对应的系统可以包括用于接收分组流的分组处理器和用于估计一个或者多个面向对象的策略并且采取相关动作的策略引擎。
在第三个方面中,本发明涉及用于在策略中应用面向对象的表达式来指定设备接收的分组流的有效载荷中的结构的系统和方法。在一个实施例中,方法包括:由设备识别包括面向对象的表达式的策略来估计关于所接收的分组流的有效负载;基于有效载荷的部分,由设备分配值给面向对象表达式所指定的数据结构;由设备执行基于所分配的值的表达式的估计;和响应于该估计,改变所接收的分组流的部分;并且由设备发送所改变的分组流。对应的系统可以包括用于接收和转发分组流的分组处理器和用于估计一个或者多个面向对象的策略并且采取相关的动作的策略引擎。
在第四方面中,本发明涉及用于在策略的元素(element)未被限定的情况下通过指定所采取的动作来配置和/或处理网络装置所使用的策略的系统和方法。在一个实施例中,方法包括:提供用于配置网络装置的策略的配置接口;由配置接口识别包括基于表达式的估计所采取的第一动作的策略;经由配置接口接收识别策略的第二动作的信息,如果策略的元素未被限定,则采取第二动作。在另一个实施例中,在策略的元素未被限定的情况下应用指定所采取的动作的策略的方法包括:由设备识别策略来估计关于所接收的分组流的有效负载,该策略指定(i)表达式;(ii)基于该表达式的估计所采取的第一动作和(iii)如果策略的元素未被限定所采取的第二动作;由设备确定关于有效载荷的未被限定的策略的元素;并且由设备响应该确定来采取第二动作。对应的系统可以包括用于接收分组流的分组处理器和用于估计一个或者多个策略并且采取相关动作的策略引擎。
在第五方面中,本发明涉及用于在处理分组流中使用的策略间配置和/或处理流量控制。在一个实施例中,方法包括:提供用于配置网络装置的多个策略的配置接口,多个策略的至少一个策略包括策略识别符;经由配置接口接收识别多个策略的第一策略的信息,第一策略识别(i)包括第一表达式的规则和(ii)基于该规则的估计所采取的第一动作;和经由配置接口接收识别多个策略的第二策略的信息使得当规则估计为真时随后应用到第一策略。在另一个实施例中,方法包括:由设备识别多个策略以应用到所接收的分组流,多个策略的至少一个策略包括策略识别符;由设备处理多个策略的第一策略,第一策略识别(i)包括第一表达式的规则和(ii)基于该规则的估计所采取的第一动作,和(iii)多个策略的第二策略;由设备基于该表达式的估计来确定规则估计为真;并且由设备响应该确定来处理所识别的第二策略。对应的系统可以包括用于接收分组流的分组处理器和用于估计一个或者多个策略并且采取相关动作的策略引擎。
在第六方面中,本发明涉及用于在处理分组流的网络装置中使用的策略组间配置和/或处理流量控制。在一个实施例中,方法包括:提供用于配置网络装置的多个策略组的配置接口,由配置接口识别第一策略组的第一策略,第一策略指定包括第一表达式的规则;并且经由接口接收指定基于规则的估计而要处理的第二策略组的信息。在另一个实施例中,方法包括:由设备识别第一策略组以应用到所接收的分组流;由设备处理第一策略组的第一策略,第一策略识别(i)包括第一表达式的规则,和(ii)识别第二策略组的信息;由设备估计该规则;并且由设备响应该规则的估计来处理所识别的第二策略组。对应的系统可以包括用于接收分组流的分组处理器和用于估计一个或者多个策略并且采取相关动作的策略引擎。
在第七方面中,本发明涉及用于配置和/或处理对于装置的一个或者多个应用安全配置文件的系统和方法,每一个应用安全配置文件指定执行关于应用的安全功能的多个检验。在一个实施例中,方法包括:提供用于配置应用安全配置文件的配置接口;经由配置接口接收第一设置,该设置对应于应用安全配置文件的第一检验指定;经由配置接口接收第二设置,第二设置对应于应用安全配置文件的第二检验指定;由配置接口识别策略,该策略指定包括第一表达式的规则;并且经由接口接收识别基于规则的估计而要处理的应用安全配置文件的信息。在另一个实施例中,方法可以包括:由设备识别第一策略以应用到所接收的分组流;第一策略指定包括第一表达式的规则并且识别应用安全配置文件;由设备估计该规则;由设备响应于规则的估计来处理由应用安全配置文件指定的第一检验;并且由设备响应于规则的估计来处理由应用安全配置文件指定的第二检验。对应的系统可以包括用于接收分组流的分组处理器和用于估计一个或者多个应用安全配置文件并且采取相关动作的策略引擎。
在下面附图和具体实施方式中提出本发明的多种实施例的细节。
附图说明
参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会变得更加明显更好理解,其中:图1A是客户机经由设备来访问服务器的网络环境的实施例的框图;图1B是经由多个设备来将计算环境从服务器递送到客户机的网络环境的另一个实施例的框图;图1C是经由一个或多个不同的设备来将计算环境从服务器递送到客户机的网络环境的另一个实施例的框图;图1D是经由网络来将计算环境从服务器递送到客户机的环境的实施例的框图;图1E和1F是计算装置的实施例的框图;图2A是处理在客户机和服务器之间的通信的设备的实施例的框图;图2B是用于优化、加速、负载平衡和路由在客户机和服务器之间的通信的设备的另一个实施例的框图;图3是经由设备来与服务器进行通信的客户机的实施例的框图;图4A是可以被用来构建HTTP通信的示例对象模型的视图;图4B是可以被用来构建HTTP通信的对象模型的文档编制的示例屏幕;图4C示出关于HTTP表达式的多个示例面向对象的表达式;图5示出策略的例子;图6是可用被用来配置一个或者多个表达式的示例屏幕;图7A是可以被用来配置网络装置的策略的配置接口的示例屏幕;图7B是在客户机上执行的配置接口的一个实施例的框图;图8A是用于配置策略表达式的方法的一个实施例的流程图;图8B是用于处理网络设备中的面向对象的表达式的方法的一个实施例的流程图;图8C是用于使用面向对象的表达式来重写所接收的分组流的部分的方法的一个实施例的流程图;图9是用于处理未限定的策略元素的方法的一个实施例的流程图;图10A是策略库的一个实施例的例子的视图;图10B是用于控制一组策略中的处理顺序的一个实施例的流程图;图11A是控制多个策略组上的处理顺序的一个实施例的框图;图11B是用于控制多个策略组上的处理顺序的方法的一个实施例的框图;图12示出可以被用来配置应用安全配置文件的多个示例配置屏幕;图13A是用于配置应用安全配置文件的方法的一个实施例的流程图;和图13B是用于处理应用安全配置文件的方法的一个实施例的流程图。
根据以下结合附图提出的详细描述,本发明的特征和优势将变得更加明显,其中相同的参考特征在全文中是指对应的元件。在附图中,相似的附图标记通常指示相同的、功能类似的和/或结构类似的元件。
具体实施方式
为了阅读下面的本发明的多个实施例的描述,说明下面的说明书的各部分以及它们相应的内容是有帮助的:部分A描述有益于实施本发明实施例的网络环境和计算环境;部分B描述用于将计算环境加速递送到远程用户的系统和设备架构的实施例;部分C描述用于加速在客户机和服务器之间的通信的客户机代理的实施例;部分D描述用于配置和使用面向对象策略表达式的系统和方法的实施例;部分E描述用于处理未限定的策略表达式的方法和系统的实施例;部分F描述用于配置和使用策略分组的系统和方法的实施例;和部分G描述用于配置和使用应用安全配置文件的系统和方法的实施例。A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可以部署这样的实施例的网络和计算环境是有帮助的。现在参考图1A,描述了网络环境的一个实施例。总的来说,网络环境包括经由一个或多个网络104和104′(通常被称为网络104)与一个或多个服务器106a-106n(通常也被称为服务器106或远程机器106)通信的一个或多个客户机102a-102n(通常也被称为本地机器102或客户机102)。在一些实施例中,客户机102经由设备200与服务器106通信。
虽然图1A示出客户机102和服务器106之间的网络104和网络104′,但客户机102和服务器106可以在同一个网络104上。网络104和104′可以是相同类型的网络或不同类型的网络。网络104和/或网络104′可以是像公司内联网的局域网(LAN)、城域网(MAN)或者诸如因特网或万维网的广域网(WAN)。在一个实施例中,网络104′可以是专用网而网络104可以是公用网。在一些实施例中,网络104可以是专用网而网络104′可以是公用网。在另一个实施例中,网络104和104′可以都是专用网。在一些实施例中,客户机102可以位于公司的分支机构,经由网络104上的WAN连接来与位于公司的数据中心的服务器106进行通信。
网络104和/或104′可以是任一类型和/或形式的网络,并且可以包括下列任意一种网络:点到点网络、广播网、广域网、局域网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络104和/或104′的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104和/或104′以及网络拓扑结构可以是能够支持此处描述的操作的本领域内普通技术人员所知的任一种这样的网络或网络拓扑结构。
如图1A所示,在网络104和104′之间示出也可以被称为接口单元200或网关200的设备200。在一些实施例中,设备200可以位于网络104上。例如,公司的分支机构可以在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104′上。例如,设备200可以位于公司的数据中心。在又一个实施例中,多个设备200可以部署在网络104上。在一些实施例中,多个设备200可以部署在网络104′上。在一个实施例中,第一设备200与第二设备200′相通信。在其它的实施例中,设备200可以是在与客户机102相同或不同的网络104,104′上的任一客户机102或服务器106的一部分。一个或多个设备200可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。
在一些实施例中,设备200包括被称为Citrix NetScaler装置的由位于Ft.Lauderdale Florida的Citrix Systems公司制造的任一网络装置。在其它实施例中,设备200包括由位于Seattle,Washington的F5 Networks公司制造的被称为WebAccelerator和BigIP的任意一个产品实施例。在另一个实施例中,设备205包括由位于Sunnyvale,California的Juniper Networks公司制造的DX加速装置平台和/或诸如SA700、SA2000、SA4000和SA6000装置的SSL VPN系列装置中的任意一个。在又一个实施例中,设备200包括由位于SanJose,California的Cisco Systems公司制造的任一应用加速和/或安全相关的设备和/或软件,例如Cisco ACE应用控制引擎模块业务(Application Control Engine Module service)软件和网络模块以及Cisco AVS系列应用速度系统(Application Velocity System)。
在一个实施例中,该系统可以包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务器106可以是在地理上分散的。有时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户机102来执行一个或多个应用。
在每个群组38中的服务器106可以是不同种类的。一个或多个服务器106可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另一种类型的操作系统平台(例如,Unix或Linux)来进行操作。每个群组38中的服务器106不需要与同一群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的分组可以使用广域网(WAN)连接或中域网(medium-areanetwork,MAN)连接来互连。例如,群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器106,则可以增加在群组38中的服务器106之间的数据传输速度。
服务器106可以被称为文件服务器、应用服务器、web服务器、代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包括活动目录(Active Directory)。客户机102也可以被称为客户机节点或端点。在一些实施例中,客户机102有能力起到寻求访问服务器上的应用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应用的访问的应用服务器的作用。
在一些实施例中,客户机102与服务器106进行通信。在一个实施例,客户机102直接与群组38中的服务器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻近应用以与群组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的网络环境的实施例。第一设备200可以部署在第一网络104上,而第二设备200′部署在第二网络104′上。例如,公司可以在分支机构部署第一设备200,而在数据中心部署第二设备200′。在另一个实施例中,第一设备200和第二设备200′被部署在同一个网络104或网络104′上。例如,第一设备200可以部署用于第一服务器群组38,而第二设备200′可以部署用于第二服务器群组38′。在另一个实例中,第一设备200可以部署在第一分支机构,而第二设备200′被部署在第二分支机构′。在一些实施例中,第一设备200和第二设备200′彼此协同或联合工作,以加速客户机和服务器之间的网络业务量或应用和数据的递送。
现在参考图1C,描述了使用一个或多个其它类型的设备,例如在一个或多个WAN优化设备205,205′之间,来部署设备200的网络环境的另一个实施例。例如,第一WAN优化设备205显示在网络104和104′之间,而第二WAN优化设备205′可以部署在设备200和一个或多个服务器106之间。通过示例,公司可以在分支机构部署第一WAN优化设备205,而在数据中心部署第二WAN优化设备205′。在一些实施例中,设备205可以位于网络104′上。在其它实施例中,设备205′可以位于网络104上。在一些实施例中,设备205′可以位于网络104′或网络104″上。在一个实施例中,设备205和205′在同一个网络上。在另一个实施例中,设备205和205′在不同的网络上。在另一个实例中,第一WAN优化设备205可以部署用于第一服务器群组38,而第二WAN优化设备205′可以部署用于第二服务器群组38′。
在一个实施例中,设备205是用于加速、优化或者以其他方式改善诸如往和/或返于WAN连接的业务量的任一类型和形式的网络业务量的性能、操作或服务质量的装置。在一些实施例中,设备205是一个性能提高的代理。在其它实施例中,设备205是任一类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备205是由位于Ft.Lauderdale Florida的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任意一种。在其它实施例中,设备205包括由位于Seattle,Washington的F5 Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在另一个实施例中,设备205包括由位于Sunnyvale,California的JuniperNetWorks公司出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备205包括由San Francisco,California的RiverbedTechnology公司出品的虹鳟(steelhead)系列WAN优化设备中的任意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的ExpandNetworks公司出品的WAN相关装置中的任意一种。在一个实施例中,设备205包括由位于Cupertino,California的Packeteer公司出品的任意一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备205包括由位于San Jose,California的Cisco Systems公司出品的任一WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
在一个实施例中,设备205提供用于分支机构或远程办公室的应用和数据加速业务。在一个实施例中,设备205包括广域文件服务(WAFS)的优化。在另一个实施例中,设备205加速文件的递送,例如经由通用Internet文件系统(CIFS)协议。在其它实施例中,设备205在存储器和/或存储设备中提供高速缓存来加速应用和数据的递送。在一个实施例中,设备205提供在任一级别的网络堆栈或在任一的协议或网络层的网络业务量的压缩。在另一个实施例中,设备205提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备205提供传输控制协议(TCP)优化。在其它实施例中,设备205提供对于任一会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。
在另一个实施例中,设备205将任一类型和形式的数据或信息编码成网络分组的定制或标准的TCP和/或IP报头字段或可选字段,以将存在、功能或能力通告给另一个设备205′。在另一个实施例中,设备205′可以使用在TCP和/或IP报头字段或选项中编码的数据来与另一个设备205′进行通信。例如,设备可以使用TCP选项或IP报头字段或选项来传达在执行诸如WAN加速的功能时或者为了彼此联合工作而由设备205,205′所使用的一个或多个参数。
在一些实施例中,设备200保存在设备205和205′之间传达的TCP和/或IP报头和/或可选字段中编码的任一信息。例如,设备200可以终止经过设备200的传输层连接,例如经过设备205和205′的在客户机和服务器之间的一个传输层连接。在一个实施例中,设备200识别并保存在由第一设备205通过第一传输层连接发送的传输层分组中的任一编码信息,并经由第二传输层连接来将具有编码信息的传输层分组传达到第二设备205′。
现在参考图1D,描述了用于递送和/或操作客户机102上的计算环境的网络环境。在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多个客户机102的应用递送系统190。简单概述,客户机10经由网络104、104′和设备200与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境15。计算环境15可以执行或操作访问、处理或使用数据文件的应用。可以经由设备200和/或服务器106来递送计算环境15、应用和/或数据文件。
在一些实施例中,设备200加速将计算环境15或其任一部分递送给客户机102。在一个实施例中,设备200通过应用递送系统190来加速计算环境15的递送。例如,此处描述的实施例可以用来将可由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在客户机102和服务器106之间的传输层业务量。设备200可以提供用于加速从服务器106到客户机102的任一传输层有效载荷的加速技术,例如:1)传输层连接池,2)传输层连接多路复用,3)传输控制协议缓冲,4)压缩和5)高速缓存。在一些实施例中,设备200提供响应于客户机102的请求的服务器106的负载平衡。在其它实施例中,设备200充当代理或访问服务器以提供对一个或多个服务器106的访问。在另一个实施例中,设备200提供从客户机102的第一网络104到服务器106的第二网络104′的安全虚拟专用网连接,例如SSL VPN连接。在又一些实施例中,设备200提供在客户机102和服务器106之间的连接和通信的应用防火墙安全、控制和管理。
在一些实施例中,应用递送管理系统190根据多个执行方法以及根据经由策略引擎195应用的任一验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应用递送技术。使用这些技术,远程用户可以从任一网络连接装置100获取计算环境以及访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统190可以驻留于服务器106或在服务器106上执行。在另一个实施例中,应用递送系统190可以驻留于多个服务器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可以在服务器群组38中执行。在一个实施例中,执行应用递送系统190的服务器106还可以存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执行应用递送系统190,而不同的服务器106n可以存储或提供应用和数据文件。在一些实施例中,应用递送系统190、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在又一个实施例中,应用递送系统190的任一部分可以驻留、执行或保存或被分配于设备200或多个设备。
客户机102可以包括用于执行使用或处理数据文件的应用的计算环境15。客户机102可以经由网络104、104′和设备200来从服务器106请求应用和数据文件。在一个实施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可以不具有本地存储或可存取的应用和数据文件。响应于请求,应用递送系统190和/或服务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以以应用流的形式发送应用,以在客户机102上的计算环境15中进行操作。
在一些实施例中,应用递送系统190包括Citrix Systems公司的例如MetaFrame或Citrix表示(Presentation)服务器TM的Citrix访问套件TM的任一部分和/或由微软公司出品的任意一种微软
Figure G2008800158624D00141
Windows终端服务。在一个实施例中,应用递送系统190可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到客户机102或用户。在另一个实施例中,应用递送系统190可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
在一个实施例中,应用递送系统190包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎195。在一些实施例中,策略引擎195确定用户或客户机102可以访问的一个或多个应用。在另一个实施例中,策略引擎195确定应用应该如何被递送给用户或客户机102,例如执行方法。在一些实施例中,应用递送系统190提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给客户机120以用于本地执行。
在一个实施例中,客户机102请求执行应用程序而包括服务器106的应用递送系统190选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在另一个实施例中,服务器106从客户机102接收列举可用的应用的请求。在一个实施例中,响应于所述请求或收到的证书,应用递送系统190列举客户机102可用的多个应用程序。应用递送系统190接收请求以执行所列举的应用。应用递送系统190选择预定数目的方法中的一个来执行列举的应用,例如响应于策略引擎的策略。应用递送系统190可以选择一个执行应用的方法,使得客户机102可以接收通过在服务器106上执行应用程序而生成的应用输出数据。应用递送系统190可以选择执行应用的方法,使得本地机器10可以在检索包括应用的多个应用文件之后本地执行所述应用程序。在又一个实施例中,应用递送系统190可以选择执行应用的方法以经由网络104将应用流式传输到客户机102。
客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任一类型和/或形式的软件、程序或可执行指令,例如任一类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户机102上执行的任一其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。在一个实施例中,服务器106可以使用任一瘦-客户机或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任一类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与VoIP通信相关的任一类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任一应用,例如用于流式传输视频和/或音频的应用。
在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群组38作为应用而执行CitrixSystems公司的例如MetaFrame或Citrix表示服务器TM的Citrix访问套件TM的任一部分和/或由微软公司出品的任意一种微软
Figure G2008800158624D00161
Windows终端服务。在一个实施例中,应用是由位于Fort Lauderdale,Florida的CitrixSystems公司开发的ICA客户机。在其它实施例中,应用包括由位于Redmond,Washington的微软公司开发的远程桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是提供例如由位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、web或Internet服务器、或桌面共享服务器、或协作服务器。在一些实施例中,任意一种应用可以包括任一类型的寄载服务或产品,例如由Santa Barbara,California的Citrix Online部门提供的GoToMeetingTM、由位于Santa Clara,California的WebEx公司提供的WebExTM、或由位于Redmond,Washington的微软公司提供的微软OfficeLive Meeting。
仍然参考图1D,网络环境的一个实施例可以包括监控服务器106A。监控服务器106A可以包括任一类型和形式的性能监控业务198。性能监控业务198可以包括监控、测量和/或管理软件和/或硬件,包括数据收集、集合、分析、管理和报告。在一个实施例中,性能监控业务198包括一个或多个监控代理197。监控代理197包括用于在诸如客户机102、服务器106或设备200和205的装置上执行监控、测量和数据收集活动的任一软件、硬件或其组合。在一些实施例中,监控代理197包括诸如Visual Basic脚本或Java描述语言的任一类型和形式的脚本。在一个实施例中,监控代理197相对于装置的任一应用和/或用户透明地执行。在一些实施例中,监控代理197相对于应用或客户机不引人注目地被安装和操作。在又一个实施例中,监控代理197被安装和操作而不需要用于该应用或装置的任何设备(instrumentation)。
在一些实施例中,监控代理197以预定频率监控、测量和收集数据。在其它实施例中,监控代理197基于任一类型和形式的事件的检测来监控、测量和收集数据。例如,监控代理197可以在检测到对web页面的请求或收到HTTP响应时收集数据。在另一个实例中,监控代理197可以在检测到诸如鼠标点击的任一用户输入事件时收集数据。监控代理197可以报告或提供任一所监控、测量或收集的数据给监控业务198。在一个实施例中,监控代理197根据调度或预定频率来发送信息给监控业务198。在另一个实施例中,监控代理197在检测到事件时发送信息给监控业务198。
在一些实施例中,监控业务198和/或监控代理197执行诸如客户机、服务器、服务器群组、设备200、设备205或网络连接的任一网络资源或网络基础结构元件的监控和性能测量。在一个实施例中,监控业务198和/或监控代理197执行诸如TCP或UDP连接的任一传输层连接的监控和性能测量。在另一个实施例中,监控业务198和/或监控代理197监控和测量网络等待时间。在又一个实施例中,监控业务198和/或监控代理197监控和测量带宽利用。
在其它实施例中,监控业务198和/或监控代理197监控和测量终端用户响应时间。在一些实施例中,监控业务198执行应用的监控和性能测量。在另一个实施例中,监控业务198和/或监控代理197执行到应用的任一会话或连接的监控和性能测量。在一个实施例中,监控业务198和/或监控代理197监控和测量浏览器的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量基于HTTP的事务的性能。在一些实施例中,监控业务198和/或监控代理197监控和测量IP上语音(VoIP)应用或会话的性能。在其它实施例中,监控业务198和/或监控代理197监控和测量诸如ICA客户机或RDP客户机的远程显示协议应用的性能。在又一个实施例中,监控业务198和/或监控代理197监控和测量任一类型和形式的流媒体的性能。在进一步的实施例中,监控业务198和/或监控代理197监控和测量寄载应用或软件即服务(Software-As-A-Service,SaaS)递送模型的性能。
在一些实施例中,监控业务198和/或监控代理197执行与应用相关的一个或多个事务、请求或响应的监控和性能测量。在其它实施例中,监控业务198和/或监控代理197监控和测量应用层堆栈的任一部分,例如任一.NET或J2EE调用。在一个实施例中,监控业务198和/或监控代理197监控和测量数据库或SQL事务。在又一个实施例中,监控业务198和/或监控代理197监控和测量任一方法、函数或应用编程接口(API)调用。
在一个实施例中,监控业务198和/或监控代理197执行经由诸如设备200和/或设备205的一个或多个设备从服务器到客户机的应用和/或数据的递送的监控和性能测量。在一些实施例中,监控业务198和/或监控代理197监控和测量虚拟化应用的递送的性能。在其它实施例中,监控业务198和/或监控代理197监控和测量流式应用的递送的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量递送桌面应用到客户机和/或在客户机上执行桌面应用的性能。在另一个实施例中,监控业务198和/或监控代理197监控和测量客户机/服务器应用的性能。
在一个实施例中,监控业务198和/或监控代理197被设计和构建为应用递送系统190提供应用性能管理。例如,监控业务198和/或监控代理197可以监控、测量和管理经由Citrix表示服务器递送应用的性能。在该实例中,监控业务198和/或监控代理197监控单独的ICA会话。监控业务198和/或监控代理197可以测量总的以及每次的会话系统资源使用,以及应用和连网性能。监控业务198和/或监控代理197可以对于给定用户和/或用户会话来标识有效服务器。在一些实施例中,监控业务198和/或监控代理197监控在应用递送系统190和应用和/或数据库服务器之间的后端连接。监控业务198和/或监控代理197可以测量每个用户会话或ICA会话的网络等待时间、延迟和容量。
在一些实施例中,监控业务198和/或监控代理197测量和监控对于应用递送系统190的诸如总的存储器使用、每个用户会话和/或每个进程的存储器使用。在其它实施例中,监控业务198和/或监控代理197测量和监控诸如总的CPU使用、每个用户会话和/或每个进程的应用递送系统190的CPU使用。在另一个实施例中,监控业务198和/或监控代理197测量和监控登录到诸如Citrix表示服务器的应用、服务器或应用递送系统所需的时间。在一个实施例中,监控业务198和/或监控代理197测量和监控用户登录应用、服务器或应用递送系统190的持续时间。在一些实施例中,监控业务198和/或监控代理197测量和监控应用、服务器或应用递送系统会话的有效和无效的会话计数。在又一个实施例中,监控业务198和/或监控代理197测量和监控用户会话等待时间。
在又一个进一步的实施例中,监控业务198和/或监控代理197测量和监控任一类型和形式的服务器规格(metrics)。在一个实施例中,监控业务198和/或监控代理197测量和监控与系统存储器、CPU使用和磁盘存储器有关的规格。在另一个实施例中,监控业务198和/或监控代理197测量和监控和页错误有关的规格,诸如每秒页错误。在其它实施例中,监控业务198和/或监控代理197测量和监控往返时间的规格。在又一个实施例中,监控业务198和/或监控代理197测量和监控与应用崩溃、错误和/或中止相关的规格。
在一些实施例中,监控业务198和监控代理198包括由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的被称为EdgeSight的任意一种产品实施例。在另一个实施例中,性能监控业务198和/或监控代理198包括由位于Palo Alto,California的Symphoniq公司出品的被称为TrueView产品套件的产品实施例的任一部分。在一个实施例中,性能监控业务198和/或监控代理198包括由位于SanFrancisco,California的TeaLeaf技术公司出品的被称为TeaLeafCX产品套件的产品实施例的任一部分。在其它实施例中,性能监控业务198和/或监控代理198包括由位于Houston,Texas的BMC软件公司出品的诸如BMC性能管理器和巡逻产品(BMC Performance Manager and Patrolproducts)的商业业务管理产品的任一部分。
客户机102、服务器106和设备200可以被部署和/或执行在任一类型和形式的计算装置上,例如可以在任一类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或设备。图1E和1F描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1E和1F所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1E所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的点击装置127。每个计算装置100也可以包括另外的可选元件,例如一个或多个输入/输出装置130a-130b(通常使用附图标记130来指示)以及与中央处理单元101通信的高速缓存140。
中央处理单元101是响应并处理取自主存储器单元122的指令的任一逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由位于Mountain View,California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的产品;由位于Santa Clara,California的Transmeta公司出品的产品;由位于WhitePlains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale,California的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、PC100 SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或者可以如此处所描述地操作的任一其它可用的存储芯片。在图1E中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1E描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1F中,主存储器122可以是DRDRAM。
图1F描述了在其中主处理器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进行通信。图1F描述了在其中主处理器101通过HyperTransport、快速I/O或InfiniBand来直接与I/O装置130通信的计算机100的一个实施例。图1F还描述了混合本地总线和直接通信的一个实施例:处理器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。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如像
Figure G2008800158624D00211
的可引导CD,作为来自于knoppix.net可用作GNU/Linux分发的GNU/Linux的可引导CD。
进一步地,计算装置100可以包括通过多种连接联接到局域网(LAN)、广域网(WAN)或因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任一或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100连接到可以传达并执行此处所描述的操作的任一类型的网络的任一其它装置。各式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨道垫、轨道球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O装置130可以由如图1E所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例如鼠标或光笔的点击装置127的一个或多个I/O装置。进一步地,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。还是在其它实施例中,计算装置100可以提供USB连接以接收诸如由位于LosAlamitos,California的Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。
在一些实施例中,计算装置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总线、AppleDesktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
图1E和1F中描述类型的计算装置100典型地在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任一操作系统,例如任意一种版本的微软
Figure G2008800158624D00231
Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任一版本的Mac
Figure G2008800158624D00232
任一的嵌入式操作系统、任一的实时操作系统、任一的开放源操作系统、任一的专用操作系统、用于移动计算装置的任一操作系统、或者可以运行在计算装置上并执行此处所描述的操作的任一其它操作系统。典型的操作系统其中包括:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE和WINDOWSXP,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果计算机出品的MacOS;由位于Armonk,NewYork的国际商业机器公司出品的OS/2;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使用的Linux操作系统或者任一类型和/或形式的Unix操作系统,以及其它。
在其它实施例中,计算装置100可以具有和所述装置一致的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任一工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、任一其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计算或电信装置。B.设备架构
图2A举例说明了设备200的一个示例实施例。提供图2A中的设备200的架构仅仅是为了说明,并不是意于进行限制。如图2所示,设备200包括硬件层206和被分为用户空间202和内核空间204的软件层。
硬件层206提供在其上执行内核空间204和用户空间202中的程序和服务的硬件元件。硬件层206还提供允许内核空间204和用户空间202中的程序和服务关于设备200的向内和向外传递数据的结构和元件。如图2所示,硬件层206包括用于执行软件程序和服务的处理单元262、用于保存软件和数据的存储器264、用于在网络上发送和接收数据的网络端口266以及用于执行与在网络上发送和接收的数据的安全套接字层处理相关的功能的加密处理器260。在一些实施例中,中央处理单元262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。处理器262可以包括如上所述的与图1E和1F有关的任一处理器101。在一些实施例中,中央处理单元262可以在单个的处理器中执行加密处理器260的功能。另外,硬件层206可以包括用于每个处理单元262和加密处理器260的多个处理器。例如,在一个实施例中,设备200包括第一处理器262和第二处理器262′。在其它实施例中,处理器262或262′包括多核处理器。
虽然通常所示设备200的硬件层206具有加密处理器260,但处理器260可以是用于执行与诸如安全套接字层(SSL)或传输层安全(TLS)协议的任一加密协议相关的功能的处理器。在一些实施例中,处理器260可以是通用处理器(GPP),并且在进一步的实施例中,可以具有用于执行任一安全相关协议的处理的可执行指令。
虽然在图2中用某些元件来说明设备200的硬件层206,但设备200的硬件部分或部件可以包括计算装置的任一类型和形式的元件、硬件或软件,诸如此处结合图1E和1F来举例说明和讨论的计算装置100。在一些实施例中,设备200可以包括服务器、网关、路由器、交换机、网桥或其它类型的计算或网络装置,并具有与此相关的任一硬件和/或软件元件。
设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核空间204和用户空间204。在示例的软件架构200中,操作系统可以是任一类型和/或形式的Unix操作系统,尽管本发明并未这样限制。因而,设备200可以运行任一操作系统,例如任意一种版本的微软
Figure G2008800158624D00251
Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任一版本的Mac
Figure G2008800158624D00252
任一的嵌入式操作系统、任一的网络操作系统、任一的实时操作系统、任一的开放源操作系统、任一的专用操作系统、用于移动计算装置或网络装置的任一操作系统、或者可以运行在设备200上并执行此处所描述的操作的任一其它操作系统。
内核空间204被保留用于运行内核230,所述内核230包括任一设备驱动程序、内核扩展或其它内核相关软件。如本领域技术人员所知,内核230是操作系统的核心,并提供对应用104的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间204还包括和有时还被称为集成高速缓存的高速缓存管理器232一起工作的多个网络服务或进程,此处进一步详细描述其有益之处。另外,内核230的实施例将依赖于由装置200所安装、配置或者以其他方式使用的操作系统的实施例。
在一个实施例中,装置200包括诸如基于TCP/IP的堆栈的一个网络堆栈267,用于与客户机102和/或服务器106进行通信。在一个实施例中,网络堆栈267用于与诸如网络108的第一网络以及第二网络110进行通信。在一些实施例中,装置200终止诸如客户机102的TCP连接的第一传输层连接,并建立由客户机102使用的到服务器106的第二传输层连接,例如,第二传输层连接在设备200和服务器106处终止。第一和第二传输层连接可以经由单个的网络堆栈267建立。在其它实施例中,装置200可以包括例如267和267′的多个网络堆栈,并且第一传输层连接可以在一个网络堆栈267处建立或终止,而第二传输层连接在第二网络堆栈267′上建立或终止。例如,一个网络堆栈可以用于在第一网络上接收和发送网络分组,而另一个网络堆栈用于在第二网络上接收和发送网络分组。在一个实施例中,网络堆栈267包括用于对设备200发送的一个或多个网络分组排队的缓冲器243。
如图2所示,内核空间204包括高速缓存管理器232、高速层2-7集成分组引擎240、加密引擎234、策略引擎236和多协议压缩逻辑238。在内核空间204或内核模式而不是用户空间202中单独以及组合地运行这些部件或进程232、240、234、236和238改进每一个这些部件的性能。内核操作意味着这些部件或进程232、240、234、236和238运行在装置200的操作系统的核心地址空间中。例如,在内核模式中运行加密引擎234通过将加密与解密操作移到内核来改善加密性能,从而减少在内核模式中的存储空间或内核线程与用户模式中的存储空间或线程之间的转换的次数。例如,可以不需要将内核模式中获得的数据传递或复制到运行在用户模式中的进程或线程,例如从内核级的数据结构到用户级的数据结构。在另一个方面,还减少了在内核模式与用户模式之间的上下文转换的次数。另外,在内核空间204中可以更有效地执行在任意一个部件或进程232、240、235、236和238之间通信和通信的同步。
在一些实施例中,部件232、240、234、236和238的任一部分可以运行或操作在内核空间204中,而这些部件232、240、234、236和238的其它部分可以运行或操作在用户空间202中。在一个实施例中,设备200使用提供对一个或多个网络分组的任一部分的访问的内核级数据结构,例如,网络分组包括来自于客户机102的请求或来自于服务器106的响应。在一些实施例中,可以由分组引擎240经由到网络堆栈267的传输层驱动程序接口或过滤器来获得内核级数据结构。内核级数据结构可以包括可经由与网络堆栈267相关的内核空间204存取的任一接口和/或数据、由网络堆栈267接收或传送的网络业务量或分组。在其它实施例中,可以由部件或进程232、240、234、236和238中的任意一个来使用内核级数据结构,以执行部件或进程的期望的操作。在一个实施例中,部件232、240、234、236和238在使用内核级数据结构时运行于内核模式204中,而在另一个实施例中,部件232、240、234、236和238在使用内核级数据结构时运行于用户模式中。在一些实施例中,可以将内核级数据结构复制或传递到第二内核级数据结构或任一期望的用户级数据结构。
高速缓存管理器232可以包括软件、硬件或软件和硬件的任一组合,以提供对诸如由发信服务器106提供的对象或动态生成的对象的任一类型和形式的内容的高速缓存访问、控制和管理。由高速缓存管理器232处理和保存的数据、对象或内容可以包括诸如标记语言的或者通过任一协议传达的任一格式的数据。在一些实施例中,高速缓存管理器232复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中原始数据也许需要相对于读取高速缓存元件来说更长的访问时间以取出、计算或者以其他方式获取。一旦数据被保存在高速缓存元件中,未来的使用可以通过访问高速缓存的拷贝而不是重新取回或再计算原始数据来进行,从而减少访问时间。在一些实施例中,高速缓存元件可以包括装置200的存储器264中的数据对象。在其它实施例中,高速缓存元件可以包括具有比存储器264更快的访问时间的存储器。在另一个实施例中,高速缓存元件可以包括诸如硬盘的一部分的装置200的任一类型和形式的存储元件。在一些实施例中,处理单元262可以提供由高速缓存管理器232使用的高速缓存。然而在进一步的实施例中,高速缓存管理器232可以使用存储器、存储装置或处理单元的任一部分和组合,以用于高速缓存数据、对象及其它内容。
进一步地,高速缓存管理器232包括任一逻辑、功能、规则或操作,以执行此处所描述的设备200的技术的任一实施例。例如,高速缓存管理器232包括根据失效时间周期的期满或一旦从客户机102或服务器106接收到失效命令来使对象无效的逻辑或功能。在一些实施例中,高速缓存管理器232可以作为在内核空间204中执行的程序、服务、进程或任务来操作,而在其它实施例中是在用户空间202中操作。在一个实施例中,高速缓存管理器232的第一部分在用户空间202中执行,而第二部分在内核空间204中执行。在一些实施例中,高速缓存管理器232可以包括任一类型的通用处理器(GPP)或者诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC)的任一其它类型的集成电路。
例如,策略引擎236可以包括智能统计引擎或者其它的可编程应用。在一个实施例中,策略引擎236提供配置机制以允许用户标识、指定、限定或配置高速缓存策略。在一些实施例中,策略引擎236还可以访问存储器以支持诸如查找表或哈希表的数据结构来启用用户选择的高速缓存策略决策。在其它实施例中,策略引擎236可以包括任一逻辑、规则、功能或操作,以便确定和提供除了由设备200执行的安全、网络业务量、网络访问、压缩或任一其它功能或操作的访问、控制和管理之外的由设备200高速缓存的对象、数据或内容的访问、控制和管理。此处进一步描述特定高速缓存策略的进一步的实例。
在一些实施例中,策略引擎236可以提供配置机制以允许用户标识、指定、限定或配置指导包括但不限于图2B中描述的诸如vServers 275、VPN功能280、内联网IP功能282、交换功能284、DNS功能286、加速功能288、应用防火墙功能290和监控代理197的部件的设备的任一其它部件或功能的行为的策略。在其它实施例中,策略引擎236可以响应于任一配置的策略来进行检查、评价、实现或者以其他方式产生作用,并且还可以响应于策略来指导一个或多个设备功能的操作。
加密引擎234包括用于操控诸如SSL或TLS的任一安全相关协议的处理的任一逻辑、商业规则、功能或操作,或者另外的任一相关功能。例如,加密引擎234加密并解密经由设备200传递的网络分组或者其中的任一部分。加密引擎234还可以为客户机102a-102n、服务器106a-106n或设备200设置或建立SSL或TLS连接。因而,加密引擎234提供SSL处理的卸载和加速。在一个实施例中,加密引擎234使用隧道协议来在客户机102a-102n和服务器106a-106n之间提供虚拟专用网。在一些实施例中,加密引擎234与加密处理器260进行通信。在其它实施例中,加密引擎234包括运行在加密处理器260上的可执行指令。
多协议压缩引擎238包括用于压缩诸如由装置200的网络堆栈267使用的任意一种协议的一个或多个协议的网络分组的任一逻辑、商业规则、功能或操作。在一个实施例中,多协议压缩引擎238双向地在客户机102a-102n和服务器106a-106n之间压缩任一的基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、通用Internet文件系统(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欺骗协议。
]因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的通用的企业应用所启动的任一客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过执行于内核模式204中以及与访问网络堆栈267的分组处理引擎240结合在一起,多协议压缩引擎238可以压缩诸如任一应用层协议的由TCP/IP协议所携带的任意一种协议。
通常也被称为分组处理引擎或分组引擎的高速层2-7集成分组引擎240负责管理由设备200经由网络端口266接收和发送的分组的内核级处理。高速层2-7集成分组引擎240可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,高速层2-7集成分组引擎240与一个或多个网络堆栈267通信以经由网络端口266发送和接收网络分组。高速层2-7集成分组引擎240和加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238一起工作。更具体地,加密引擎234被配置为执行分组的SSL处理,策略引擎236被配置为执行诸如请求级内容交换和请求级高速缓存重定向的与业务量管理相关的功能,而多协议压缩逻辑238被配置为执行与数据的压缩和解压缩相关的功能。
高速层2-7集成分组引擎240包括分组处理定时器242。在一个实施例中,分组处理定时器242提供一个或多个时间间隔以触发输入(即,接收)或输出(即,发送)网络分组的处理。在一些实施例中,高速层2-7集成分组引擎240响应于定时器242来处理网络分组。分组处理定时器242提供任一类型和形式的信号给分组引擎240,以通知、触发或传达时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器242以例如像100毫秒、50毫秒或25毫秒这样的毫秒级来进行操作。例如,在一些实施例中,分组处理定时器242提供时间间隔或者以其他方式使高速层2-7集成分组引擎240以10毫秒的时间间隔来处理网络分组,而在其它实施例中按5毫秒的时间间隔,以及甚至在更进一步的实施例中短到3、2或1毫秒的时间间隔。在操作期间,高速层2-7集成分组引擎240可以与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩引擎238交互、集成或通信。因而,可以响应于分组处理定时器242和/或分组引擎240来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任一逻辑、功能或操作。因此,可以以例如小于或等于10毫秒的时间间隔的通过分组处理定时器242提供的时间间隔的粒度来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任一逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可以响应于高速层2-7集成分组引擎240和/或分组处理定时器242来执行任一高速缓存对象的失效。在另一个实施例中,可以将高速缓存对象的满期或失效时间设置为与分组处理定时器242的时间间隔相同的粒度级,例如每10毫秒。
与内核空间204不同,用户空间202是由用户模式应用或者以其他方式运行于用户模式的程序所使用的存储器区域或部分操作系统。用户模式应用可以不直接访问内核空间204而使用服务调用以访问内核服务。如图2所示,设备200的用户空间202包括图形用户界面(GUI)210、命令行接口(CLI)212、命令解释程序(shell)服务214、健康监测程序216和守护服务218。GUI 210和CLI 212提供一个装置,通过所述装置,系统管理员或其它用户可以与设备200的操作相互作用并控制设备200的操作,例如通过设备200的操作系统,并且两者之一是用户空间202或内核空间204。GUI 210可以是任一类型和形式的图形用户界面,并且可以通过文本、图形或者以其他方式通过像浏览器的任一类型的程序或应用来呈现。CLI 212可以是任一类型和形式的命令行或基于文本的接口,例如由操作系统提供的命令行。例如,CLI 212可以包括命令解释程序,所述命令解释程序是允许用户与操作系统相互作用的工具。在一些实施例中,CLI 212可以通过bash、csh、tcsh或ksh型命令解释程序来提供。命令解释程序服务214包括程序、服务、任务、进程或可执行指令以支持用户通过GUI 210和/或CLI 212与设备200或操作系统相互作用。
健康监测程序216被用于监控、检查、报告和确保网络系统在正常工作以及用户通过网络接收所请求的内容。健康监测程序216包括一个或多个程序、服务、任务、进程或可执行指令以提供用于监测设备200的任一活动的逻辑、规则、功能或操作。在一些实施例中,健康监测程序216拦截并检查经由设备200传递的任一网络业务量。在其它实施例中,健康监测程序216通过任一合适的方法和/或机制与一个或多个下列单元连接:加密引擎234、高速缓存管理器232、策略引擎236、多协议压缩逻辑238、分组引擎240、守护服务218和命令解释程序服务214。因而,健康监测程序216可以调用任一应用编程接口(API)以确定设备200的任一部分的状态、状况或健康。例如,健康监测程序216可以周期性地查验或发送一个情况查询以检测程序、进程、服务或任务是否有效以及当前正在运行。在另一个实例中,健康监测程序216可以检查由任一程序、进程、服务或任务提供的任一状态、错误或历史记录,以确定设备200的任一部分的任一情况、状态或错误。
守护服务218是连续或在后台运行并处理由设备200接收到的周期性服务请求的程序。在一些实施例中,守护服务可以将请求转发给其它程序或进程,例如酌情转发给另一个守护服务218。如本领域技术人员所知,守护服务218可以无人监护地运行以执行诸如网路控制的连续的或周期性的全系统的功能或者执行任一期望的任务。在一些实施例中,一个或多个守护服务218运行在用户空间202中,而在其它实施例中,一个或多个守护服务218运行在内核空间中。
现在参考图2B,描述了设备200的另一个实施例。总的来说,设备200提供下列服务、功能或操作中的一个或多个:用于一个或多个客户机102以及一个或多个服务器106之间的通信的SSL VPN连通性280、交换/负载平衡284、域名服务解析286、加速288和应用防火墙290。每个服务器106可以提供一个或多个网络相关的服务270a-270n(称为服务270)。例如,服务器106可以提供http服务270。设备200包括一个或多个虚拟服务器或虚拟网际协议服务器,其被称为vServer、VIP服务器或仅仅称为VIP 275a-275n(此处也被称为vServer 275)。vServer275根据设备200的配置和操作来接收、拦截或者以其他方式处理客户机102和服务器106之间的通信。
vServer 275可以包括软件、硬件或软件和硬件的任一组合。vServer 275可以包括在设备200中的用户模式202、内核模式204中或其任一组合中操作的任一类型和形式的程序、服务、任务、进程或可执行指令。vServer 275包括任一逻辑、功能、规则或操作以执行此处所描述的技术的任一实施例,例如SSL VPN 280、交换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一些实施例中,vServer 275建立到服务器106的服务270的连接。服务275可以包括可以连接和通信到设备200、客户机102或vServer 275的任一程序、应用、进程、任务或可执行指令组。例如,服务275可以包括web服务器、http服务器、ftp、电子邮件或数据库服务器。在一些实施例中,服务270是用于监听、接收和/或发送用于诸如电子邮件、数据库或企业应用的应用的通信的守护进程或网络驱动程序。在一些实施例中,服务270可以在一个特定IP地址或IP地址和端口上进行通信。
在一些实施例中,vServer 275将策略引擎236的一个或多个策略应用到客户机102和服务器106之间的网络通信。在一个实施例中,策略与VServer 275有关。在另一个实施例中,策略基于一个用户或一组用户。在又一个实施例中,策略是全局的并且应用到一个或多个vServers 275a-275n以及经由设备200通信的任一用户或用户组。在一些实施例中,策略引擎的策略有条件,在所述条件时根据诸如网际协议地址、端口、协议类型、报头或分组中的字段的通信的任一内容或者诸如用户、用户组、vServer 275、传输层连接和/或客户机102或服务器106的标识或属性的通信上下文来应用策略。
在其它实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102访问服务器106的计算环境15、应用和/或数据文件的验证和/或授权。在另一个实施例中,设备200与策略引擎236通信或连接以确定对远程用户或远程客户机102的验证和/或授权,以使应用递送系统190递送计算环境15、应用和/或数据文件的一个或多个。在又一个实施例中,设备200根据策略引擎236对远程用户或远程客户机103的验证和/或授权来建立VPN或SSL VPN连接。在一个实施例中,设备102根据策略引擎236的策略来控制网络业务量和通信会话的流量。例如,设备200可以根据策略引擎236来控制对计算环境15、应用或数据文件的访问。
在一些实施例中,vScrvcr 275建立诸如经由客户机代理120与客户机102的TCP或UDP连接的传输层连接。在一个实施例中,vServer 275监听并接收来自于客户机102的通信。在其它实施例中,vServer 275与客户服务器106建立诸如TCP或UDP连接的传输层连接。在一个实施例中,vServer 275建立到运行在服务器106上的服务器270的网际协议地址和端口的传输层连接。在另一个实施例中,vServer 275将到客户机102的第一传输层连接与到服务器106的第二传输层连接关联起来。在一些实施例中,vServer 275建立到服务器106的传输层连接池并多路复用经由所述池化的传输层连接的客户机请求。
在一些实施例中,设备200提供在客户机102和服务器106之间的SSL VPN连接280。例如,第一网络102上的客户机102请求建立到第二网络104′上的服务器106的连接。在一些实施例中,第二网络104′是不可从第一网络104路由的。在其它实施例中,客户机102在公用网104上,而服务器106在诸如公司网的专用网104′上。在一个实施例中,客户机代理120拦截第一网络104上的客户机102的通信,加密所述通信,并经由第一传输层连接发送所述通信到设备200。设备200将第一网络104上的第一传输层连接关联到第二网络104上的到服务器106的第二传输层连接。设备200从客户机代理102接收被拦截的通信,解密所述通信,并经由第二传输层连接发送所述通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。因而,设备200提供在两个网络104和104′之间用于客户机102的端到端安全传输层连接。
在一个实施例中,设备200在虚拟专用网104上寄载客户机102的内联网网际协议或内联网IP 282地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/或主机名的本地网络标识符。当经由设备200连接到第二网络104′时,设备200在第二网络104′上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名的网络标识符。使用客户机的建立的内联网IP 282,设备200在第二或专用网104′上监听并接收指向客户机102的任一通信。在一个实施例中,设备200在第二专用网104上充当或代表客户机102。例如,在另一个实施例中,vServer 275监听并响应到客户机102的内联网IP282的通信。在一些实施例中,如果第二网络104′上的计算装置100发送请求,则设备200处理所述请求就像它是客户机102一样。例如,设备200可以响应到客户机的内联网IP 282的查验。在另一个实例中,设备可以与第二网络104上的请求与客户机的内联网IP 282连接的计算装置100建立诸如TCP或UDP连接的连接。
在一些实施例中,设备200提供下列一个或多个加速技术288来在客户机102和服务器106之间进行通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;以及6)高速缓存。在一个实施例中,设备200通过打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许客户机经由因特网的重复数据访问来减轻服务器106的通过反复打开和关闭到客户机102的传输层连接所造成的大量处理负载。这个技术在这里被称为“连接池”。
在一些实施例中,为了经由池化的传输层连接来无缝接合从客户机102到服务器106的通信,设备200通过在传输层协议级修改序号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在入站分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备200的输出端口的网络地址,而目的网络地址被改变为预期的服务器的网络地址。在出站分组(即,自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备200的输出端口的网络地址,而目的地址被从设备200的网络地址改变为请求的客户机102的网络地址。所述分组的序号和确认号也被转换为到客户机102的设备200的传输层连接上的客户机102所期待的序号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以解释这些转换。
在另一个实施例中,设备200为客户机102和服务器106之间的通信提供交换或负载平衡功能284。在一些实施例中,设备200根据层4或应用层请求数据来分配业务量并将客户机请求指向服务器106。在一个实施例中,虽然网络分组的网络层或层2标识了目的服务器106,但设备200通过作为传输层分组的有效载荷而携带的应用信息和数据来确定服务器106以分配网络分组。在一个实施例中,设备200的健康监测程序216监控服务器的健康以确定为其分配客户机的请求的服务器106。在一些实施例中,如果设备200探测到服务器106不可用或具有超过预定阈值的负载,则设备200可以将客户机请求指向或分配到另一个服务器106。
在一些实施例中,设备200充当域名服务(DNS)解析器或者以其他方式提供来自于客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备200响应具有设备200的IP地址或由设备200寄载的IP地址的客户机的DNS请求。在该实施例中,客户机102发送用于域名的网络通信到设备200。在另一个实施例中,设备200响应具有第二设备200′的IP地址或由第二设备200′寄载的IP地址的客户机的DNS请求。在一些实施例中,设备200响应具有由设备200确定的服务器106的IP地址的客户机的DNS请求。
在又一个实施例中,设备200为客户机102和服务器106之间的通信提供应用防火墙功能290。在一个实施例中,策略引擎236提供用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙290防止拒绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求的内容以识别和阻塞基于应用的攻击。在一些实施例中,规则/策略引擎236包括用于提供对多个种类和类型的基于web或因特网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲器溢出,2)CGI-BIN参数操纵,3)格式/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)破译的访问控制表(ACLs)或弱的口令,7)跨站点的脚本(XSS),8)命令注入,9)SQL注入,10)错误触发感测信息泄漏,11)不安全的使用加密技术,12)服务器误配置,13)后门和调试选择,14)web站点毁损,15)平台或操作系统的脆弱点,以及16)零天攻击。在一个实施例中,对下列情况的一种或多种应用防火墙290以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,应用防火墙290确保cookies不被修改。在其它实施例中,应用防火墙290通过强制实施合法URL来防止强制浏览。
还是在其它实施例中,应用防火墙290保护在网络通信中包含的任一机密信息。应用防火墙290可以根据引擎236的规则或策略来检查或分析任一网络通信以识别在网络分组的任一字段中的任一机密信息。在一些实施例中,应用防火墙290在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙290可以在网络通信上对策略采取行动,例如阻止网络通信的发送。在另一个实施例中,应用防火墙290可以重写、移除或者以其他方式掩盖这样识别出的出现或机密信息。
仍然参考图2B,设备200可以包括如上面结合图1D所讨论的性能监控代理197。在一个实施例中,设备200从如图1D中所描述的监控业务198或监控服务器106中接收监控代理197。在一些实施例中,设备200在诸如磁盘的存储装置中保存监控代理197,以用于递送给与设备200通信的任一客户机或服务器。例如,在一个实施例中,设备200在接收到建立传输层连接的请求时发送监控代理197给客户机。在其它实施例中,设备200在建立与客户机102的传输层连接时发送监控代理197。在另一个实施例中,设备200在拦截或检测对web页面的请求时发送监控代理197给客户机。在又一个实施例中,设备200响应于监控服务器198的请求来发送监控代理197到客户机或服务器。在一个实施例中,设备200发送监控代理197到第二设备200′或设备205。
在其它实施例中,设备200执行监控代理197。在一个实施例中,监控代理197测量和监控在设备200上执行的任一应用、程序、进程、服务、任务或线程的性能。例如,监控代理197可以监控和测量vServers 275A-275N的性能与操作。在另一个实施例中,监控代理197测量和监控设备200的任一传输层连接的性能。在一些实施例中,监控代理197测量和监控通过设备200的任一用户会话的性能。在一个实施例中,监控代理197测量和监控通过设备200的诸如SSL VPN会话的任一虚拟专用网连接和/或会话的性能。在进一步的实施例中,监控代理197测量和监控设备200的存储器、CPU和磁盘使用以及性能。在又一个实施例中,监控代理197测量和监控诸如SSL卸载、连接池和多路复用、高速缓存以及压缩的由设备200执行的任一加速技术288的性能。在一些实施例中,监控代理197测量和监控由设备200执行的任一负载平衡和/或内容交换284的性能。在其它实施例中,监控代理197测量和监控由设备200执行的应用防火墙290保护和处理的性能。C.客户机代理
现在参考图3,描述了客户机代理120的一个实施例。客户机102包括用于经由网络104与设备200和/或服务器106建立和交换通信的客户机代理120。简单概述,客户机102在计算装置100上操作,所述计算装置100具有带有内核模式302和用户模式303的操作系统以及带有一个或多个层310a-310b的网络堆栈310。客户机102已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可以经由网络堆栈310传递到网络104。诸如web浏览器的一个应用还可以包括一个第一程序322。例如,第一程序322可以被用于在一些实施例中安装和/或执行客户机代理120或者其任一部分。客户机代理120包括用于从一个或多个应用中拦截来自于网络堆栈310的网络通信的拦截机制或拦截器350。
客户机102的网络堆栈310可以包括任一类型和形式的软件或硬件或其任一组合,以用于提供到网络的连通性以及与网络的通信。在一个实施例中,网络堆栈310包括用于网络协议套件的软件实现。网络堆栈310可以包括一个或多个网络层,例如如本领域技术人员所认识和理解的开放系统互连(OSI)通信模型的任一网络层。因而,网络堆栈310可以包括用于下列OSI模型的任意一层的任一类型和形式的协议:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层以及7)应用层。在一个实施例中,网络堆栈310可以包括在网际协议(IP)的网络层协议上的传输控制协议(TCP),通常被称为TCP/IP。在一些实施例中,可以在以太网协议上携带TCP/IP协议,所述以太网协议可以包括诸如由IEEE 802.3所覆盖的那些协议的IEEE广域网(WAN)或局域网(LAN)协议的任一族。在一些实施例中,网络堆栈310包括诸如IEEE 802.11和/或移动网际协议的任一类型和形式的无线协议。
考虑到基于TCP/IP的网络,可以使用任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、通用Internet文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在另一个实施例中,网络堆栈310包括诸如修改的传输控制协议的任一类型和形式的传输控制协议,例如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。在其它实施例中,网络堆栈310可以使用诸如IP上UDP的任一类型和形式的用户数据报协议(UDP),例如用于音频通信或实时数据通信。
进一步,网络堆栈310可以包括诸如TCP驱动程序或网络层驱动程序的支持一个或多个层的一个或多个网络驱动程序。网络驱动程序可以被包括作为计算装置100的操作系统的一部分或作为计算装置100的任一网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈310的任意一种网络驱动程序可以被定制、修改或改变以提供支持此处描述的任一技术的网络堆栈310的定制或修改部分。在其它实施例中,加速程序120被设计和构造以和由客户机102的操作系统所安装或者以其他方式提供的网络堆栈310一起操作或联合工作。
网络堆栈310包括用于接收、获取、提供或者以其他方式访问与客户机102的网络通信相关的任一信息和数据的任一类型和形式的接口。在一个实施例中,到网络堆栈310的接口包括应用编程接口(API)。接口还可以包括任一函数调用、挂钩或过滤机制、事件或回叫机制、或任一类型的连接技术。网络堆栈310经由接口可以接收或提供诸如对象的与网络堆栈310的功能或操作相关的任一类型和形式的数据结构。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括诸如传输层的网络分组的在网络堆栈310的协议层处理的网络分组的一部分。在一些实施例中,数据结构325包括内核级数据结构,而在其它实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈310的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任一数据结构。
另外,例如数据链路或网络层的网络堆栈310的一些部分可以执行或操作于内核模式302,而诸如网络堆栈310的应用层的其它部分执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈310的用户模式访问,而网络堆栈310的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可以包括诸如层5-7中的任意一个的网络堆栈310的一个或多个较上的层。在其它实施例中,网络堆栈310的第二部分310b包括诸如层1-4中的任意一个这样的一个或多个较低的层。网络堆栈310的第一部分310a和第二部分310b中的每一个可以包括网络堆栈310的任一部分,在任意一个或多个网络层,在用户模式203、内核模式202或其组合中,或者在网络层的任一部分或网络层的接口点或用户模式203和内核模式203的任一部分或接口点。
拦截器350可以包括软件、硬件或软件和硬件的任一组合。在一个实施例中,拦截器350在网络堆栈310中的任一点拦截网络通信,并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所期望、管理或控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈310的网络通信并发送网络通信给设备200以用于在第二网络104上的传输。在一些实施例中,拦截器350包括含有驱动器的任一类型拦截器350,诸如被构造和设计为与网络堆栈310连接和工作的网络驱动程序。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处的网络堆栈310的一个或多个层操作。在一个实施例中,拦截器350包括过滤器驱动程序、挂钩机制或任一格式和类型的适当的网络驱动程序接口,所述接口例如经由传输驱动程序接口(TDI)来联接于网络堆栈的传输层。在一些实施例中,拦截器350联接于诸如传输层的第一协议层以及诸如传输协议层之上的任一层的例如应用协议层的另一个协议层。在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS)的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以包括小过滤器(min-filter)或迷你端口(mini-port)驱动程序。在一个实施例中,拦截器350或者其部分操作于内核模式202中。在另一个实施例中,拦截器350或者其部分操作于用户模式203中。在一些实施例中,拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分操作于用户模式203中。在其它实施例中,客户机代理120操作于用户模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施例中,拦截器350是诸如应用的用户模式应用或程序。
在一个实施例中,拦截器350拦截任一的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以对于该位置设置目的信息,诸如所期望的位置的目的地IP地址和/或端口。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代理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可以包括操作于网络堆栈310的网络层的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120′可以在传输层操作并拦截传输层通信。在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120′连接或传达被拦截的通信到第二代理120′。
客户机代理120和/或拦截器350可以相对于网络堆栈310的任一其它协议层透明的方式操作于协议层或与协议层连接。例如,在一个实施例中,拦截器350相对于诸如网络层的传输层之下的任一协议层以及诸如会话、表示或应用层协议的传输层之上的任一协议层透明地来操作网络堆栈310的传输层或与其连接。这允许网络堆栈310的其它协议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120和/或拦截器350可以与传输层交互以保护、优化、加速、路由或负载平衡经由诸如TCP/IP之上的任一应用层协议的通过传输层携带的任一协议提供的任一通信。
进一步地,客户机代理120和/或拦截器可以相对于任一应用、客户机102的用户以及诸如与客户机102通信的服务器的任一其它计算装置透明的方式来操作于网络堆栈310或与网络堆栈310连接。客户机代理120和/或拦截器350可以以一定方式安装和/或执行于客户机102上而不修改应用。在一些实施例中,客户机102或与客户机102通信的计算装置的用户不知道客户机代理120和/或拦截器350的存在、执行或操作。因而,在一些实施例中,相对于应用、客户机102的用户、诸如服务器的另一个计算装置、或者在由拦截器350联接的协议层之上和/或之下的任一协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
客户机代理120包括加速程序302、流客户机306、收集代理304和/或监控代理197。在一个实施例中,客户机代理120包括由位于Fort Lauderdale,Florida的Citrix Syestems公司开发的独立计算架构(ICA)客户机或者其任一部分,并且还被称为ICA客户机。在一些实施例中,客户机120包括用于将应用从服务器106流式传输到客户机102的应用流客户机306。在一些实施例中,客户机代理120包括用于加速客户机102和服务器106之间的通信的加速程序302。在另一个实施例中,客户机代理120包括用于执行端点检测/扫描以及为设备200和/或服务器106收集端点信息的收集代理304。
在一些实施例中,加速程序302包括用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或诸如访问由服务器106提供的应用的对服务器106的访问。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个的下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)经由高速缓存管理器的高速缓存。另外,加速程序302可以执行对由客户机102接收和/或发送的任一通信的加密和/或解密。在一些实施例中,加速程序302以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302可以在被携带为传输层协议的网络分组的有效载荷的任一协议或多个协议上执行压缩。
流客户机306包括用于接收和执行来自于服务器106的流式传输的应用的应用、程序、进程、服务、任务或可执行指令。服务器106可以将一个或多个应用数据文件流式传输到流客户机306,以用于在客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和存储在诸如CAB、ZIP、SIT、TAR、JAR或其它档案(archive)的档案文件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives)应用文件,并发送所述文件到客户机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可以具有根据客户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。
在一些实施例中,客户机代理120包括如结合图1D和2B所讨论的监控代理197。监控代理197可以是诸如Visual Basic或Java脚本的任一类型和形式的脚本。在一个实施例中,监控代理129监控和测量任一部分的客户机代理120的性能。例如,在一些实施例中,监控代理129监控和测量加速程序302的性能。在另一个实施例中,监控代理129监控和测量流客户机306的性能。在其它实施例中,监控代理129监控和测量收集代理304的性能。在又一个实施例中,监控代理129监控和测量拦截器350的性能。在一些实施例中,监控代理129监控和测量客户机102的诸如存储器、CPU和磁盘的任一资源。
监控代理197可以监控和测量客户机的任一应用的性能。在一个实施例中,监控代理129监控和测量客户机102上的浏览器的性能。在一些实施例中,监控代理197监控和测量经由客户机代理120递送的任一应用的性能。在其它实施例中,监控代理197测量和监控诸如基于web或HTTP响应时间的应用的最终用户响应时间。监控代理197可以监控和测量ICA或RDP客户机的性能。在另一个实施例中,监控代理197测量和监控用户会话或应用会话的规格。在一些实施例中,监控代理197测量和监控ICA或RDP会话。在一个实施例中,监控代理197测量和监控设备200在加速递送应用和/或数据到客户机102的过程中的性能。
在一些实施例中以及仍然参考图3,可以使用第一程序322来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120或者其中的诸如拦截器350的部分。在一个实施例中,第一程序322包括诸如被加载到应用并由应用执行的ActiveX控件或Java控件或脚本的插件部件。例如,第一程序包括由web浏览器应用加载并运行在例如应用的存储空间或上下文中的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器的应用加载并运行的一组可执行指令。在一个实施例中,第一程序322包括被设计和构造的程序来安装客户机代理120。在一些实施例中,第一程序322通过网络来从另一个计算装置获得、下载或接收客户机代理120。在另一个实施例中,第一程序322是客户机102的操作系统上的诸如网络驱动程序的安装程序或用于安装程序的即插即用管理器。D.用于配置和使用面向对象的策略表达式的系统和方法
参见图4A,示出用来促进HTTP数据的处理的对象模型的部分的例子。总的来说,对象类被限定为HTTP协议中的多个元素。所限定的类包括请求405、响应410、主机名415、url 420、查询425、cookie430和文本435。每个类被限定为包括多个字段和/或方法,其可以包括或者返回对应于其他类的对象,或者可以包括或者返回诸如整数的其他数据类型。
现在仍旧参见图4A,更详细地,对象模型可以包括允许计算装置指定和操控数据的一组限定的对象类,和/或允许计算装置的用户指导计算装置的操作的一组限定的对象类。对象模型可以具有和面向对象的设计或者编程关联的任一特性,包括但不限于继承、抽象、封装、和多态性。可以和此处描述的面向对象的表达式结合使用的对象模型的例子包括但不限于Java对象模型、组件对象模型(COM)和HTML文档对象模型(DOM),以及这些模型的部分的任一部分或者组合。在一些实施例中,对象模型或者对象模型的部分可对应于协议。例如,对象模型可以被建立来表示HTTP通信,具有提供类和用于访问和操控HTTP通信的方法的对象模型。或者,对象模型可以被建立来表示TCP、IP、UDP、ICA或者SSL通信。或者,对象模型可以被建立来表示设备,具有提供类和用于访问和操控涉及网络设备200的状态信息的方法的对象模型。
对象类可以包括对象的抽象概要描述和与该对象关联的任一方法。对象(即类的具体实例)可以表示任一类型或者形式的数据、过程或者协议。示例的对象可以包括但不限于串、文本、编号、列表、协议、数据流、连接、装置、数据结构、系统和网络分组。
对象类可以具有多个成员。对象类的成员可以包括任一字段、方法、构造程序、性质或者对象类指定的变量。在一些实施例中,对象类的成员可以包括第二对象类的对象。例如,在所示实施例中,对象类“http_request”405包括返回url对象的方法“getUrl”。在其他实施例中,对象类的成员可以是优先架构的基本数据类型,诸如整数、浮点数、字节、阵列或者布尔变量。例如,类“cookie”包括作为识别列表中名称-值对的编号的整数的字段“count”。仍在其它实施例中,对象类的成员可以包括常量。仍在其他实施例中,对象类的成员可以包括方法。
在一些情况中,对象类的成员可以被限定在对象类定义中。在其他情况中,对象类的成员可以被限定在对象类的父类中。仍在其他实施例中,对象类的成员可以被限定在对象类的父亲中并且在对象的类定义中修改。例如,“cookie”430和“query”425类从它们的父类“list_nv”继承方法“getName”和“getValue”,父类“list_nv”是表示名称-值对的列表的类。
在所示实施例中,http_request类405包含可以被用来处理HTTP请求的多个方法。可以提供字段和方法来识别和操控HTTP请求的任一部分或者多个部分,包括但不限于URL、cookie、体、内容-类型、数据、版本和主机名。在一个实施例中,可以提供一个或者多个方法来确定给定数据流是否是合法格式的HTTP请求。对于HTTP响应,也可以提供类似的类和/或方法。
所示url类420可以包括任一数量的字段和方法,用于操作和识别url。在一个实施例中,url可以包括用于解析一个或者多个主机名、端口、服务器、域、文件后缀、路径和查询的方法。在一个实施例中,url可以是通用文本对象的一个子类,其可以允许url如同无格式文本一样被对待。例如,url类420可以是文本类435的子类。在一个实施例中,url类可以包括用于重写url的所有或者部分的方法。在一些实施例中,url类可以被应用到文本的任一部分。例如,url类可以包括接受文本串并且通过解析该串来建立url对象的构造程序。在这些和其它实施例中,url类可以包括用于指示URL是否是正确格式的URL的方法。在一些实施例中,URL类可以包括用于识别文本串中一个或者多个URL的方法。例如,可以提供静态方法“findURL”来返回给定文本序列中合法格式的URL的列表。例如,可以使用该方法来找到包含在HTTP响应的体中包含的多个URL。url类随后可以提供用于修改一个或者多个所发现的URL的方法。
cookie类430可以包括用于识别和处理cookie的任一数量个字段和方法。在一个实施例中,cookie可以是HTTP cookie。在所示实施例中,cookie类将cookie表示为名称值对的列表。“getValue”方法响应接收数字n可以返回列表中第n个值的文本对象。getName方法响应于接收数字n可以返回名称中第n个值的文本对象。在其他实施例中,cookie可使用任一其它语法或者数据类型来表示,包括但不限于串、或者链接的列表。在一个实施例中,cookie类可以提供用于插入和/或改变cookie的方法。在其他实施例中,HTTP响应或者请求对象类可以提供用于插入或者修改包含在请求或者响应中的cookie的方法。
所示“text”类435可以包括用于操作文本序列的任意数量个字段和/或方法。文本序列可以包括可以被处理为字符的字节的任一序列。在一些实施例中,文本对象可以包括字节的离散序列。在其他实施例中,文本对象可以包括一个或者多个字节的字节流。在这些实施例中,文本对象甚至在还没有接收到整个流时可以被用来操作字节流的部分。可以和文本对象结合使用的方法包括但不限于比较、截断、搜索、分类和正则表达式匹配和搜索。例如,可以提供方法来确定给定子串是否存在于文本对象中。或者例如,可以提供方法来确定特定字符之前的文本对象的部分。或者例如,可以提供方法用于识别给定正则表达式之后的文本的列表。
在一些实施例中,还可以提供方法用于格式化或者确认文本的格式化,使得其可以由其他类和/或方法处理。例如,可以提供方法来确保文本对象可以被处理为XML。该方法可以检查文本对象符合正确的XML格式并且不包含任一恶意或者不利的错误。或者例如,可以提供类似的方法来确定文本序列是否可以被处理为URL。例如,该方法可以发现并且替代需要由空序列替代的任一字符,使得文本对象符合正确的URL格式协定。
对象模型可以使用任一物理数据结构或者其它基础物理实现方式来实现。在一些实施例中,多个对象可以访问物理存储器中的同一个对象来执行与每个对象相关联的方法。在一个实施例中,所示对象模型可以被实现使得多个对象实例对基础数据流起作用,而不需要对于每个对象实例产生数据流的各自副本。为了给出详细的例子,关于所示对象模型,设备可以从客户机接收HTTP通信并且将其保存在存储器中。设备可以随后执行识别http_request对象,并且随后调用http_request对象类305中的函数来获取url和/或cookie对象。设备可以随后调用url和cookie对象中的附加函数或者参考字段。这些方法的一些或者全部可以通过解析基础数据流的一些或者全部并且随后将参考返回给该流的部分来操作。例如,url对象可以保存基础数据流中的url的开始和结束的存储器位置。url类的每一个方法可以随后解析和/或修改识别的存储器位置中的数据的部分。以此方式,设备可以使用对象模型而不需要在数据流中保持数据的附加副本来处理数据流。
在其他实现方式中,可以关于一些对象来实现一些或者所有数据流的一个或者多个附加副本。这些对象可以在数据流的部分的副本上执行操作,并且如果适当,使用对副本所做的任一改变来更新数据流。
所示对象模型和其它可以指定可以被应用到任一输入流的对象类和数据结构。例如,所示对象模型可以被用来将任一输入流处理为http_request对象,并且随后利用http_request对象类提供的任意一个功能性。此外,尽管所示对象模型涉及HTTP数据,但是其他对象模型可以用来提供关于TCP、SSL或者ICA流的功能性。在一些实施例中,可以提供对象模型和实现方式使得设备可以从多个对象模型来选择以处理给定数据流。例如,接收到给定数据流后,设备可以确定数据流是ICA流,并且应用适当的对象模型用于处理ICA流。但是,如果HTTP数据被发送到ICA流中,则设备也可以应用HTTP对象模型,诸如所示的,用于处理HTTP数据。以此方式,设备可以指定任意一个或者多个结构来应用到接收的字节流。
现在参见图4B,示出对于表示URL的对象类的示例性文档编制屏幕。总的来说,文档编制屏幕包括对于表示URL的“http_url_t”类的多个方法和构造程序的部分列表。文档编制屏幕指示“http_url_t”类中执行多个方法和在父类“text_t”中执行的多个方法。这些类可以对应于参考图4A描述的“url”和“text”类。
现在参见图4C,示出用在策略引擎中的多个示例性面向对象的表达式。总的来说,面向对象的表达式400包括多个对象类,其可以对应于协议、协议对象、数据结构和数据类型。面向对象的表达式可以指定多个识别的对象,其可以包括方法、数据类型或者其他对象类。示出多个示例性面向对象的表达式400a、400b、400c。这些面向对象的表达式可以通过网络装置在执行以下功能中使用,这些功能包括但不限于分析业务量流量、识别系统特性、负载平衡、内容转换和应用安全。
现在仍旧参考图4C,更详细地,面向对象的表达式可以包括允许关于对象模型的数据和函数的规范的任一表达式。第一示例面向对象的表达式400识别对象类和对象类的成员。在所示面向对象的表达式的语法中,通过对象和随后命名对象成员的串之后的周期来指定对象成员。例如,HTTP.REQ识别命名为用于HTTP对象的“REQ”的成员方法。在此例中,方法命名可以使用全部大写来标注。在其他实施例中,也可以使用任一其它语法来指定面向对象的表达式。可以使用的语法的例子包括但不限于ActionScript、Java、JavaScript、C#、Visual FoxPro、VB.Net、C++、Python、Perl、PHP、Ruby和/或Objective-C的语法或者语法组合。
在示例面向对象的表达式400a中,表达式识别协议HTTP。在一个实施例中,HTTP可以对应于对象类、抽象对象类、静态对象类或者对象模型的任一其它分量。在一些实施例中,HTTP可以是用来表示和处理HTTP通信的多个对象类的父类。在其他实施例中,“HTTP”可以是包括一个或者多个对象的静态类或者方法和/或涉及HTTP通信的表达和处理的方法。例如,表达式“HTTP.REQ”可以返回对应于数据流内的HTTP请求的对象。在一个实施例中,该对象可以是诸如图4A中讨论的“http_request”类的对象类的实例。在所示实施例中,表达式400a可以返回布尔值,该布尔值指示“joe”是否包含在HTTP请求的URL的查询部分中命名为“id”的值中。
示例的面向对象的表达式400b提供显式的类型转换(typecasting)的例子,其可以用来指定关于数据流的任一部分的结构。在该例中,从对应于eh可接受语言的HTTP请求首部项目返回的串被显式类型转换为列表。TYPECAST_TO_LIST方法将列表定界符接受作为变元,并且基于该定界符返回列表。表达式随后识别CONTAINS方法来确定列表元素的其中一个是否是“en”。该例400b可以被用来配置装置以探测HTTP请求是否指示请求者将英语接受为语言。在一些实施例中,对象模型和表达式语法可以允许数据流显式类型转换为任一的对象类。这可以允许用户配置装置来指定关于数据流而应用的任一结构。这又可以允许用户来操纵协议或者协定的内容,从而以便利处理的方式来格式化输入流。
作为显式类型转换的另一个例子,表达式HTTP.RES.HEADER(″Location″).TYPECAST_TO_URL.QUERY可以被用来类型转换HTTP首部的元素,使得被处理为URL。通过将文本元素类型转换为URL,URL处理方法可以变得可用于分析网络业务量流的任一部分中的内容。
在一些实施例中,两个或者更多面向对象的表达式可以和诸如AND、OR、NOT、GREATER THAN或者LESS THAN的算子结合使用来产生一个值。例如,在表达式400c中,可以返回布尔值的两个表达式使用OR算子结合。组合的表达式的结果是两个表达式返回的值取OR。在其他实施例中,算子可以关于任一对象或者数据类型运行,包括但不限于整数、浮点数以及串。
尽管所示特定例子反映了HTTP对象模型的上下文中的面向对象的语句,但是面向对象的语句和模型可以被用来访问传递通过装置的网络业务量的任意一个或者多个部分。此外,面向对象的语句和模型可以被用来访问装置的系统特性或者给定连接或连接的装置的特性。
在一个实施例中,面向对象的表达式可以被用来将网络装置行为建立在装置的任一特性上。例如,表达式SYS.TIME.WITHIN(time1,time2)可以被用来将行为建立在天或者一年的天之上。或者,例如,表达式SYS.CONNECTIONS.SSL_OPEN.COUNT可以被用来返回当前对于系统开放的SSL连接的总数的数量。在这些例子中,SYS对象表示执行策略的系统,并且在SYS对象中提供多个方法和/或字段来访问关于系统状态的信息。
在其他实施例中,面向对象的表达式可以被用来将连接到装置的客户机的任一特性作为网络装置行为的基础。在一个实施例中,“CLIENT”对象可以被提供用来表示发送或者接收当前处理的数据流的客户机的特性。例如,表达式:CLIENT.IP.SRC.IN_SUBNET(10.100.202.0/24)可以被用来基于对应于数据流的客户机是否在给定子网中来返回真/假值。或者,例如,表达式CLIENT.AGENT.VERSION_NUM可以被用来重新获取在客户机上执行的客户机代理的版本号。或者例如,表达式CLIENT.VLAN.VIRTUAL_IP可以被用来访问客户机的虚拟IP地址。
仍在另一个实施例中,面向对象的表达式可以被用来将连接到装置的服务器的任一性质作为网络装置行为的基础。例如,SERVER.METRICS.HTTP.AVG_RESP_TIME可以被用来访问用于产生HTTP请求的服务器的平均响应时间。或者例如,SERVER.ICA.MAX_CONNECTIONS.可以被用来识别为给定服务器指定的最大数量ICA连接。或者例如,SERVER.ETHER.HEADER可以被用来识别到服务器的给定连接的以太网分组首部。
在一些实施例中,面向对象的表达式被用来在处理之前或者期间来缓存特定量的通信。例如,对于HTTP通信用作代理服务器的设备可以期望将一些行为建立在响应的初始部分上。在这种情况中,可以期望仅缓存响应的一部分,使得不会承受过度的端到端响应时间。在一个实施例中,表达式可以指定多个字节来在估计表达式之前接收。例如,表达式HTTP.REQ.getBody(5000).TYPECAST_TO_NV_LIST(′=′,′&′).getValue(″id″)可以被用来缓存HTTP请求体的前5000个字节,并且随后将这些字节处理为名称-值对列表。该表达式随后指定来得到对应于名称“id”的值。
现在参考图5,示出可以用在配置装置中的策略的例子。总的来说,策略500包括可以在规则505的上下文中估计的表达式510。策略500还可以包括指定在规则满足时采取的动作的动作515。
仍旧参考图5,现在更详细地,策略可以被用来配置装置。在一些实施例中,策略可以用来配置任一装置,包括但不限于WAN优化设备200、SSL/VPN设备200、加速设备200、高速缓存设备200、负载平衡设备和/或提供那些装置的特征的任一组合的装置。在其他实施例中,策略可以被用来配置客户机代理或者服务器代理。
在一些实施例中,装置上执行的策略引擎可以解释、估计、和/或执行关于装置的功能的策略。例如,策略引擎236可以在设备200上执行,并且解释和执行指导设备的其他动作和模块的多个策略,包括但不限于SSL/VPN模块280、内联网IP模块282、转换模块284、DNS模块286、加速模块288、应用防火墙模块290和/或监控代理197。在一些实施例中,可以提供单组策略用于指导多个设备功能。在其他实施例中,可以使用各组策略来配置多个设备功能的每一个。策略可以以任一方式保存在装置中。在一些实施例中,策略在装置上执行之前可以被编译。在其他实施例中,可以在运行时解释策略。
策略500可以包括一个或者多个表达式510。策略中的表达式由装置在运行时关于在表达式中指定的对象来估计,以产生一个值。表达式510可以是任一类型的表达式。在一个实施例中,表达式510可以是面向对象的表达式。表达式可以在策略中的任何地方使用。在一些实施例中,表达式可以在策略的规则中指定。在其他实施例中,表达式可以在策略的动作中指定。
策略500还可以包括规则505。规则可以在运行时关于对象、方法和规则中识别的算子而被估计,来产生一个结果。依据该结果,设备随后可以执行策略中指定的一个或者多个动作。例如,如果规则估计为“真”,则设备可以执行和规则关联的动作。或者如果规则估计为“假”,则设备不能执行和规则相关联的动作。在一些实施例中,规则可以包括单个表达式。在其他实施例中,规则可以包括由算子连接的多个表达式。
策略500还可以包括动作515。动作可以指定所采取的任一动作。这些动作的例子可以包括但不限于阻断或者允许数据流、将数据流或者对象转发到给定服务器或者装置、将对象保存在存储器中、改变数据流的一部分、改变一个或者多个系统特性、执行加速技术和执行压缩技术。在所示的策略500中,当确定HTTP请求URL包含“JOE”的用户标识符时,策略指示将请求转发到指定服务器的动作。在一些实施例中,动作可以包括运行时被估计的表达式。
现在参考图6,示出用户用来输入面向对象的表达式的表达式输入屏幕600的例子。总的来说,表达式输入屏幕600包括允许用户来指定类的成员以包括在所建立的表达式中的多个下拉菜单620。屏幕610还可以包括用户能够看到和/或编辑表达式的文本版本的显示。屏幕还可以包括为用户显示对应于一个或者多个对象的信息的显示630。
仍旧参考图6,现在更详细地,表达式输入屏幕允许用户以任何方式输入面向对象的表达式。在所示实施例中,下拉菜单620可以被用来选择对象。在其他实施例中,任一其它输入元素可以被用来接受面向对象的表达式,包括但不限于文本字段、菜单、按钮、检验栏和工具栏。在一些实施例中,屏幕600的输入元素可以为用户提供建立和验证合法表达式的功能性。在一些实施例中,下拉菜单620可以和之前指定的类的成员自动组装在一起。例如,当用户选择所示菜单中的“URL”时,下一个下拉菜单将和URL对象类的成员组装在一起。以此方式,用户可以有效导航类的层级和对象模型以产生表达式。在其他实施例中,语法突出显示、自动完成和/或自动推荐可以被用来使得用户可以容易地建立和验证表达式。例如,用户可以提供文本字段610来组成表达式,其中,文本字段以红色突出显示任一未识别的对象或者语法。或者例如,用于可以提供文本字段610,当用户键入对象类时,该文本字段显示对象类的成员的列表。
在一些实施例中,表达式输入屏幕600可以为用户显示关于任一对象或者表达式的信息。在一些实施例中,屏幕600可以显示给定类的特性和/或推荐的使用。在一个实施例中,屏幕600可以和诸如图4B中描写的一个或者多个类文档编制屏幕集成在一起或者一起使用。
现在参见图7A,示出可以被用于配置对应于一个或者多个网络装置的多个策略的配置接口屏幕的例子。总的来说,屏幕显示具有包含一个或者多个策略、策略组或者涉及功能的设置的文件夹的网络装置功能710的列表。在所示例子中,屏幕显示文件夹用于系统策略、网络策略、DNS策略、SSL策略、SSL卸载策略、压缩策略、集成的高速缓存策略、保护特征、负载平衡策略、内容转换策略、高速缓存重定向策略、全局负载平衡策略、SSL VPN策略和应用安全策略。在一些实施例中,多个策略、策略组和/或对应于功能的设置可以被称为配置文件。
仍旧参考图7A,并且更详细地,配置接口可以允许用户指定涉及一个或者多个网络装置的策略或者设置。在一些实施例中,配置接口可以被用来配置设备200,包括但不限于VPN设备、加速设备或者WAN优化装置。在一些实施例中,单个配置接口可以允许用户来配置多个设备。例如,用户可以指定一个或者多个设备来应用给定的策略、策略组或者相关设置。在一个实施例中,用户可以指定为多个设备共享配置文件。例如,用户可以配置设备200的集群使得每一个设备具有相同的策略设置。在其他实施例中,配置接口700可以被用于配置一个或者多个客户机代理120。
配置接口700可以包括收集输入的任一工具,包括但不限于GUI和命令行接口。配置接口可以包括一个或者多个表达式输入屏幕600。在一个实施例中,配置接口可以从文件读出配置信息。在另一个实施例中,配置接口可以通过网络来接收配置信息。例如,配置接口700可以包括用户下载一个或者多个策略、设置、策略组或者配置文件的工具。对于多个应用这些可以包括共同使用的策略或者设置。
配置接口可以模糊(obscure)来自用户的策略、策略组或者配置的任一特征。例如,配置接口可以自动或者默认填充策略或者策略组的任一部分,使得用户不需要主动配置那些部分。例如,配置接口可以提供动作的默认列表,其中用户仅需要指定应该采取的动作所基于的规则的列表。动作的语法和实现对于用户可以完全或者部分隐藏。
现在参考图7B,示出使用计算机来配置使用配置接口的设备的例子。总的来说,在客户机102上显示包括表达式输入屏幕500的配置接口700。客户机102将经由配置接口接收的配置数据发送给设备200。
仍旧参考图7B,现在更详细地,配置接口700可以以任一方式显示在客户机102上。在一些实施例中,配置接口700可以包括客户机上执行的应用。在其他实施例中,配置接口700可以包括通过设备显示的web页面。仍在其他实施例中,配置接口700可以包括通过第三方装置显示的web页面。
配置接口700可以包括对于用户输入配置数据的任一工具,包括但不限于文本字段、菜单、按钮、窗口、检验栏和拖放功能。在一些实施例中,配置接口700可以包括表达式输入屏幕500。在其他实施例中,配置接口还可以提供用于用户输入一个或者多个策略的屏幕。在一些实施例中,这些屏幕可以和一个或者多个表达式输入屏幕集成在一起。
配置接口可以通过任一工具将配置信息发送到设备200。配置信息可以经由任意一个或者多个协议发送。在一个实施例中,用户输入的配置信息可以被保存到客户机102上的文件,并且随后该文件可以被发送到设备。在其他实施例中,用户可以将信息输入到web页面中或者web设备,其可以随后将配置信息传送到设备。在一些实施例中,配置信息在其被发送到设备200之前可以被编译、格式化或者以其他方式处理。仍在其他实施例中,配置信息可以在其已经被设备接收之后被编译、格式化或者以其他方式处理。
现在参考图8A,描述使用面向对象的表达式来配置网络装置的面向对象的策略以指定网络装置所接收的分组流的有效载荷中的结构的方法的实施例。总的来说,由装置提供配置接口700来配置用于网络装置200的策略600(步骤801)。装置经由配置接口700接收用于策略600的表达式610(步骤803)。装置经由配置接口700接收基于表达式的估计来识别所采取的动作的用户信息(步骤805)。
仍旧参考图8A,更详细地,可以提供配置接口用来以任一方式配置用于网络装置200的策略600(步骤801)。在一些实施例中,配置接口700可以包括命令行接口。在其他实施例中,配置接口700可以包括图形用户接口。配置接口700可以包括一个或者多个拖放接口、列表选择接口或者语法突出显示接口。在一些实施例中,配置接口700驻留在客户机装置102上。在其他实施例中,配置接口700在网络装置200上执行。在一些实施例中,提供配置接口700的装置通过网络104连接到设备200。在一些实施例中,配置接口700是web页面。在一些其他实施例中,配置接口700是驻留在网络装置200上的web页面。在其他实施例中,配置接口700是驻留在各服务器106上的web页面。
装置经由配置接口700接收用于策略600的表达式610,该策略600指定对象类来应用到分组流的有效载荷的部分和多个对象类(步骤803)。在一些实施例中,表达式可以经由表达式输入屏幕500接收。在一个实施例中,表达式610识别分组流中的文本的部分。在特定实施例中,表达式610指定协议,并且还可以指定和协议相关的一个或者多个方法和字段。例如,表达式可以指定HTTP、HTML、FTP、SMTP、ICA和/或SSL的协议。所指定的协议随后可以被应用来解析根据协议的数据流。
所接收的表达式可以指定任一对象类。例如,所接收的表达式可以指定图4A的对象模型中描述的任意一个对象类。可以以任一方式指定对象类。在一个实施例中,指定对象类可以包括执行对象类的实例。例如,表达式“HTTP.REQ”可以指定来自图4A的“http_request”对象的实例。在一些实施例中,所接收的表达式可以包括面向对象的表达式。
所接收的表达式还可以指定识别的对象类的任一成员。该成员可以包括任一对象、数据类型或者方法。在一些实施例中,该成员包括字段。在其他实施例中,该成员可以包括对应于第二对象类的字段。在一些实施例中,对象类的成员包括方法。在一些实施例中,对象类的成员从该对象类的父类继承。对象类的成员可以对应于HTTP请求或者响应。在其他情况中,类的成员可以是统一资源定位符(“URL”)或者cookie。
在其他实施例中,表达式610包括明确的类型转换。明确的类型转换可以被用来指定对象类以关于字段或者返回的对象来使用。例如,包含数字的字段可以被显式类型转换为字母数字串,用来执行串比较。或者例如,字节的流可以被类型转换为具有给定定界符的列表。或者例如,数据流可以被类型转换为对应的特定协议或者协议对象。
装置可以经由配置接口700接收识别用于策略600的动作615的信息,该动作615基于表达式610的估计而被采取(步骤805)。在一些实施例中,动作615可以包括面向对象的表达式。在特定实施例中,该方法执行动作615用来提供负载平衡、内容转换、应用安全、应用递送、网络加速或者应用加速。例如,为了加速网络行为,该方法可以估计表达式610来确定用户的位置并且基于用户的位置将用户的业务量路由给地理上最接近的一个或者多个服务器106。在一些实施例中,通过将URL重写到HTTP请求或者响应中,策略可以执行安全、加速、负载平衡或者内容转换功能。例如,动作615可以指定来修改HTTP请求使得URL指向特定的服务器或者服务器群组106。在一些实施例中,从配置接口700接收的动作615可以是用于“无动作”或者用于默认动作的表达式。
现在参考图8B,描述通过装置来应用策略600中的面向对象的表达式610来指定设备200所接收的分组流的有效负载中的结构的方法的实施例。总的来说,设备200识别包括面向对象的表达式610的策略600来估计关于所接收的分组流的有效载荷(步骤821)。设备200基于有效载荷的部分来分配值到面向对象的表达式610指定的数据结构(步骤823)。设备200基于分配的值来执行表达式610的估计(步骤825)并且响应于该估计来采取策略600指定的动作615(步骤827)。
仍旧参考图8B,更详细地,设备可以识别策略来以任一方式应用到数据流(步骤821)。在一些实施例中,设备可以从一个或者多个配置文件读出策略。在其他实施例中,设备中的策略引擎236可以将多个策略保存在存储器中。仍在其他实施例中,设备可以响应于数据流的类型或者协议来识别策略。例如,设备可以具有应用到所有输入TCP流的一组策略。或者例如,设备可以识别应用到SSL流的一个或者多个策略。在一个实施例中,设备可以基于数据流的发送者或者接收者来识别策略。例如,VPN设备可以具有被应用到来自客户机的输入连接请求的一组策略。或者加速装置可以识别一个或者多个策略来应用到来自服务器106的HTTP流。在一些实施例中,策略可以包括经由配置接口700接收的策略。
分组流可以以任一方式并且从任一资源接收。在一些实施例中,分组流可以由设备透明拦截。在其他实施例中,设备可以在代理一个或者多个传输层连接的过程中接收分组流。分组流可以包括任一类型的分组,包括但不限于IP分组、TCP分组、UDP分组和ICMP分组。分组流可以包括任意其它一个或者多个协议。
所识别的策略可以包括面向对象的表达式来估计关于分组流的有效载荷。面向对象的表达式可以包括任一类型的面向对象的表达式,并且可以指定一个或者多个对象类、字段和方法。在一些实施例中,面向对象的表达式可以包括规则的部分。在一些实施例中,表达式可以指定对应于客户机、服务器、HTTP协议或者设备的一个或者多个对象。
面向对象的表达式可以关于分组流的任一有效载荷被估计。在一个实施例中,表达式可以关于TCP或者UDP流的有效载荷被估计。在另一个实施例中,表达式可以关于SSL流被估计。在又一个实施例中,表达式可以关于ICA流的有效载荷被估计。分组流可以从任一资源接收,包括但不限于客户机、服务器、客户机代理、服务器代理或者第二设备。
设备分配值给面向对象的表达式610所指定的数据结构(步骤823)。数据结构可以包括对象实例的物理表示。在一些实施例中,设备可以解析所接收的有效载荷的一些或者全部来分配值。在其他实施例中,设备可以执行表达式指定的或者对象模型中包括的任一方法来分配值。例如,关于表达式:
″HTTP.REQ.HEADER(″Accept-Language″).TYPECAST_TO_LIST(″,″)″,设备可以分配值给所指定的请求、首部和逗号分界的列表中的每一个的相应对象。在一些实施例中,值的分配可以包括确定对应于对象的数据流的一个或者多个部分。在一些实施例中,步骤823包括通过设备200应用面向对象的表达式610指定的类到有效载荷的字节流。例如,如果表达式指定URL类,设备可以通过确定所接收的有效载荷中的URL的开始和结束点来分配值到基本的URL数据结构。这些开始和结束点随后可以被保存在URL数据结构中,并且用来执行URL类中的任意一个方法。在一些实施例中,设备可以分配值到面向对象的表达式指定的多个数据结构。在一个实施例中,策略引擎236可执行和策略的估计相关的任一功能。
设备可以基于所分配的值以任一方式执行表达式610的估计(步骤825)。在一些实施例中,设备可以使用表达式指定的对象类的一个或者多个方法来执行估计。在一些实施例中,估计可以产生布尔值。在其他实施例中,估计可以产生整数、串或者其他对象。设备可以以任一方式使用分配的值。在上面的URL例子中,在确定对于URL的开始和结束点之后设备可以随后使用那些值来执行关于URL的任一操作。在一些实施例中,设备可以随后执行图4A中引用的getSuffix()方法,其识别所请求的URL的文件类型后缀。该方法还可以包括确定关于URL的开始和结束点的后缀的开始和结束点。设备随后可以使用后缀的开始和结束点来执行文件后缀的任一估计,诸如将其与串“.jsp”相比较来确定所请求的URL是否对应于Java服务器页面(Java Server Page)。
在一些实施例中,设备可以估计包括表达式的规则。在其他实施例中,设备可以估计包括多个表达式的规则。
设备随后响应于该估计可以采取策略600所指定的动作615(步骤827)。在一个实施例中,如果估计的结果是对应于真的值,则设备采取动作。在另一个实施例中,如果估计的结果是非零,则设备可以采取动作。所采取的动作可以是任一动作,包括但不限于涉及负载平衡、内容转换、应用安全、应用递送、网络加速或者应用加速的任一动作。在一些实施例中,动作615可以包括“无动作”。
在一些实施例中,设备可以立即执行跟随该估计的动作。在其他实施例中,设备可以执行估计至少一个其它策略之后的动作。在又一些实施例中,设备可以在等待预订数量的时间或者等待直到资源可用之后执行该动作。在一个实施例中,设备可以在接收到分组流的附加部分之后执行动作。
在一些实施例中,设备随后可以将接收的分组流转发到一个或者多个设备服务器、客户机或者客户机代理。设备可以执行关于分组流的任一其它网络设备功能,包括但不限于加速、压缩和负载平衡。
现在参考图8C,示出在设备200中用于应用策略600中的面向对象的表达式610来指定设备200接收的分组流的有效载荷中的结构的方法。总的来说,设备识别包括面向对象的表达式610的策略600来估计关于所接收的分组流的有效载荷(步骤841)。设备基于有效载荷的部分来分配值给面向对象的表达式610所指定的数据结构(步骤843)。设备还基于所分配的值执行表达式610的估计(步骤845)。响应于该估计,设备改变所接收的分组流的部分(步骤847)并且将所改变的分组流发送(步骤849)。
仍旧参考图8C,现在更详细地,设备可以识别指定面向对象的表达式610的策略600来估计关于所接收的分组流的有效载荷(步骤821)。该步骤可以以此处描述的任一方式来执行。
设备可以基于有效载荷的部分以任一方式来分配值给面向对象的表达式610所指定的数据结构(步骤823)。该步骤可以以此处描述的任一方式来执行。
设备基于所分配的值执行表达式的估计(步骤845)。该步骤可以以此处描述的任一方式来执行。
响应于该估计,设备可以改变所接收的分组流的部分(步骤847)。在一些实施例中,改变所接收的分组流的部分可以包括响应于该估计来采取动作(步骤827)。在一些实施例中,所改变的分组流的部分由面向对象的表达式识别的数据结构来指定。在其他实施例中,所改变的分组流的部分由第二面向对象的表达式指定。在一些实施例中,所改变的分组流的部分可以由策略的动作中的面向对象的表达式指定。在一些实施例中,设备可以重写HTTP响应或者请求的体中的URL。在其他实施例中,设备可以重写分组流中的表格(form)字段值。所改变的表格字段(form field)可以是对象中的HTTP请求、HTTP响应或者任一其它字段,该对象是分组流的部分。在又一个实施例中,设备可以改变包含在分组流中的一个或者多个名称-值对。在一些实施例中,设备可以重写所接收的分组流的部分而模糊或者移除机密数据,包括但不限于个人身份号码、支票账户转账号码、个人联系信息、社会安全号码、密码或者其它机密信息。
为了给出详细例子,当从去往服务器的客户机接收HTTP流时,对服务器提供应用安全功能的设备可以确定以应用策略:如果(HTTP.Request.getCookie().getValue(″username″).length>20)则HTTP.Request.getCookie().setValue(″username″,″void″)在此例中,设备可以解析HTTP流的一些或者全部以识别包含请求的流的部分,并且之后识别请求中的cookie。设备可以以任一方式完成此操作,包括维持具有指向对应于请求和cookie的流的区域的参考指针的一个或者多个内部数据结构。设备可以随后识别cookie中的“用户名”名称-值对的值并且确定该值的长度是否大于20个字符。大于20个字符的长度可以指示应用错误或者恶意攻击,诸如所企图的缓存器溢出攻击。当确定长度大于20个字符时,设备可以随后改变该值为“避免”或者任一其它信号,该任一其它信号可以通知接收该流的服务器不正确的值由客户机发送。设备可以使用和/或修改任一内部数据结构,用来改变该流。设备随后可以将改变的流转发给服务器。在其他实施例中,设备可以在探测到可能的溢出时简单地阻止该流到达服务器。在这些实施例中,设备可以返回错误消息给客户机。
在其他实施例中,设备可以使用新的响应来替代整个HTTP响应。例如,如果设备确定响应包含表中的机密数据,则设备可以使用指示错误的响应或者包括中性(neutral)内容的响应来替代该响应。在又一个实施例中,设备可以替换或者重写整个HTTP请求或者响应的首部。
设备可以随后以任一方式发送所改变的分组流(步骤849)。在一些实施例中,设备可以将所改变的分组流转发给指定为该流的接收者的服务器或者客户机。在其他实施例中,设备可以将该流重定向到设备、服务器或者客户机,而不是该流的预期接收者。设备可以使用任意一个或者多个协议发送所改变的分组流,包括但不限于TCP、IP、UDP、SSL和ICA。E、用于处理未限定的策略表达式的系统和方法
现在参考图9,示出在设备200中在策略600的元素未限定的情况下用于应用指定所采取的动作615的策略600的方法的实施例。总的来说,设备识别策略600来估计关于所接收的分组流的有效载荷,其中策略600指定(i)表达式610,(ii)基于表达式610所采取的第一动作615和(iii)如果元素未限定时所采取的第二动作610(步骤901)。设备确定策略600的元素关于有效载荷未限定(步骤903)。响应于元素未限定的其决定,设备采取第二动作(步骤905)。一般来说,该方法允许策略当设备尝试估计策略时如果遇到错误或者异常情况时来指定所采取的动作。以此方式,第二动作可以是撤退或者错误处理方法。
仍旧参考图9,更详细地,设备识别策略600来估计关于所接收的分组流的有效载荷,其中策略600指定表达式610,基于表达式610的所采取的第一动作615和如果策略的元素未限定时所采取的第二动作610(步骤901)。设备可以以任一方式识别策略。在一个实施例中,表达式可以是面向对象的表达式。在另一个实施例中,表达式610可以识别对象类来应用到分组流的有效载荷的部分和对象类的成员。在另一个实施例中,表达式610指定一个协议,并且还可以指定一个或者多个相关的方法和字段。表达式可以指定任一类型的对象和/或对象类。在一些实施例中,表达式可以包括对象类的一个或者多个方法。
分组流可以以任一方式并且从任一资源接收。在一些实施例中,分组流可以由设备透明拦截。在其他实施例中,设备可以在代理一个或者多个传输层连接过程中接收分组流。分组流可以包括任一类型分组,包括但不限于IP分组、TCP分组、UDP分组和ICMP分组。分组流可以包括任意其它的一个或者多个协议。
由策略指定的第一动作可以包括任一动作。在一些实施例中,第一动作可以包括如果表达式或者包含表达式的规则估计为真时所执行的动作。在一些实施例中,动作615可以涉及负载平衡、内容转换、应用安全、应用递送、网络加速或者应用加速。在其他实施例中,动作615可以包括“无动作”或者默认动作。
第二动作指定如果未限定策略的元素时所采取的动作。策略的元素可以包括策略的任一部分,包括但不限于一个或者多个表达式、规则或者算子。元素可以在任一情况中未限定,其中设备不能成功分配值给该元素。在一个实施例中,如果元素导致不兼容的类型的比较时,诸如确定整数是否大于列表或者布尔值是否等于串,元素可以未被限定。在其他实施例中,如果元素导致一个或者多个空值时元素可以未被限定。例如,如果表达式尝试访问URL对象中的“用户名”值并且表达式被应用到具有所指定的无用户名值的URL的数据流,则关于用户名的操作可以未被限定。在其他实施例中,由于一个或者多个不正确的类型转换,元素可以未被限定。
在一些实施例中,第二动作可以已经由用户通过配置接口指定。例如,当进入或者查看配置接口中的策略时,如果在运行时策略未被限定,用户可以被提示输入所采取的动作。在其他实施例中,第二动作可以包括预配置的默认的第二动作。例如,在未限定的元素的情况下一组策略可以具有所采取的默认动作。例如,启用URL重写的一组策略可以具有不重写任一URL的默认的第二动作。或者用于执行负载平衡的一组策略可以具有将分组流转发到指定的备份服务器的默认第二动作。
设备200可以以任一方式确定策略600的元素是否关于有效载荷未限定(步骤903)。在一些实施例中,设备可以确定在估计策略的过程中未限定策略。在其他实施例中,设备可以确定在预编译、编译或者解释策略的过程中未限定策略。在一些实施例中,设备可以通过检测在估计策略期间所产生的一个或者多个异常来确定策略未被限定。例如,设备可以检测策略估计期间的空指针、溢出、或者算术处理异常。
响应于确定元素未被限定,设备可以采取第二动作(步骤905)。第二动作可以包括此处描述的任一动作。在一些实施例中,第二动作可以包括终止分组流的接收和/或传送。在其他实施例中,第二动作可以包括无动作。F、用于配置和使用策略组的系统和方法
现在参考图10A,示出策略体的例子。总的来说,策略体1000a包括具有指定顺序用于估计的一组一个或者多个策略。在所示例子中,对于每个策略由行编号来指定顺序。每个策略还可以具有指示在当前策略估计之后要估计的策略的流指令1010a、1010b、1010c、1010d(总表示为1010)。
仍旧参考图10A,并且更详细地,策略体1000可以包括任意数量个策略,包括但不限于1、2、3、4、5、6、10、20、50和100个策略。策略体的策略可以包括此处描述的任一策略。在一些实施例中,策略体可以包括执行通用功能的一组策略。例如,策略体可以包括提供负载平衡功能的一组策略。或者例如,策略体可以包括用于提供高速缓存的一组所有的策略。
策略体可以以任一方式配置。在一些实施例中,配置接口700可以被提供其允许用户来建立或者分组一个或者多个策略。在一些实施例中,配置接口可以被提供其允许用户来命名给定的策略体。在其他实施例中,配置接口可以被提供其允许用户来指定策略体的一个或者多个属性。例如,在异常或者未限定策略的情况下策略体可以具有默认动作来执行。或者例如,策略体可以具有策略体所应用到的一组环境。例如,用户可以指定关于所有输入的HTTP业务量而使用策略体。或者例如,用户可以指定当接收来自新的装置的任一连接请求时使用策略体。在其他实施例中,策略体可以包括被用来加强策略体的策略中特定特征的一组属性。例如,策略体可以请求策略体中无策略访问特定对象。策略体的属性可以在配置时或者运行时加强。
策略体可以以任一方式保存。在一些实施例中,策略体可以保存在设备中的文件上。在其他实施例中,策略体可以保存在设备的策略引擎236中。
策略体可以包括任一方式的排序策略用于估计。在一个实施例中,策略体可以包括策略的排序列表。在其他实施例中,策略体可以包括具有指示估计顺序的一个或者多个流量指令1010的一组策略。在又一些实施例中,策略体可以包括一列编号的要执行的策略,用于增加编号。
策略体中的每一个表达式可以指定流量指令1010。在包含流量指令的策略估计为真的情况下流量指令1010可以包括指示要执行的策略的任一信息或者表达式。在一个实施例中,流量指令可以包括“NEXT”语句1010a,其指示体中的下一个策略可以被估计。在另一个实施例中,流量指令可以包括“GOTO”语句1010b,其识别接着被估计的策略体中的另一策略。在一些实施例中,GOTO语句可以通过行编号来识别策略。在其他实施例中,GOTO语句可以通过策略名称或者其它标识符来识别策略。在又一个实施例中,流量指令可以包括“END”语句,其指示应该不再估计策略体的策略。
在一些实施例中,流量指令1010d可以包括表达式或者要估计的表达式来确定下一个执行的策略。流量指令可以包括任一表达式,包括但不限于任一面向对象的表达式。例如,流量指令1010d指定跟随查询的“servnum”部分的整数应该被增加到17来确定下一个要执行的策略的行。在示例性策略体中,流量指令1010d可以被用来基于请求中的参数在多个服务器上分布HTTP请求。
在一些实施例中,配置接口700可以配备有用于用户在策略体中排序策略的工具。配置接口可以允许用户指定行号、优先级、列表排序或者指定估计顺序的任一其它工具。在一些实施例中,配置接口700可以允许用户来指定关于策略或者策略体的一个或者多个流量指令。在其他实施例中,配置接口还可以提供用于输入对应于策略体中的策略的一个或者多个流量指令的任一输入工具。
现在参考图10B,示出用在处理分组流的网络装置200中的策略600上的流量控制的方法的实施例。总的来说,该方法包括由设备200识别多个策略600来应用到所接收的分组流,其中,策略600的至少一个包括策略标识符(步骤1001)。设备处理多个策略600的第一策略600,第一策略600识别(i)包括第一表达式610的规则605(ii)基于规则605的估计所采取的第一动作615,和(iii)来自多个策略上的第二策略600(步骤1003)。基于表达式610的估计,设备确定规则605估计为真(步骤1005)。响应于该确定,设备200处理所识别的第二策略600(步骤1007)。
仍旧参考图10B,更详细地,由设备识别多个策略600来应用到所接收的分组流,其中,多个策略的至少一个指定策略标识符(步骤1001)。设备可以以任一方式识别多个策略。在一些实施例中,设备可以识别多个策略对应于对于给定数据流、数据流源或者数据流接收者的策略。在一个实施例中,多个策略可以包括策略库。
分组流可以以任一方式并且从任一源来接收。在一些实施例中,分组流可以由设备透明拦截。在其他实施例中,设备可以在代理一个或者多个传输层连接的过程中接收分组流。分组流可以包括任一类型的分组,包括但不限于IP分组、TCP分组、UDP分组和ICMP分组。分组流可以包括任意其它一个或者多个协议。
至少一个策略标识符可以包括识别策略的任一工具,包括但不限于行编号、策略名称、或者优先权编号。在一些实施例中,多个策略600的每一策略600指定指示其中应该处理策略600的默认顺序的等级。
设备200处理多个策略600的第一策略600,其中第一策略600识别指定第一表达式610的规则605、基于规则605的估计所采取的第一动作615,和识别多个策略600的第二策略600的表达式610(步骤1003)。可以根据用于估计和处理策略的任一方法来处理第一策略。在一些实施例中,第一策略可以包括面向对象的表达式。在其他实施例中,第一策略可以包括包含面向对象的表达式的规则。
第一策略可以包括识别第二策略的任一表达式。在一些实施例中,第一策略可以包括第二策略的名称。在其他实施例中,第一策略600包括指定如果第一动作615应用时下一个要处理的第二策略600的级别的整数。
在一些实施例中,第一策略可以包括流量指令1010。第一策略可以包括任一流量指令,包括“next”、“goto”或者“end”。第一策略可以包括任一其它元素,包括但不限于如果第一策略的元素未限定时要执行的动作。在一个实施例中,多个策略的每一个策略可以包括流量指令。
基于通过设备200的表达式610的估计,设备确定规则605估计为真(步骤1005)。在一些实施例中,该步骤包括估计面向对象的表达式610。
响应于确定该规则估计为真,设备200处理所识别的第二策略600(步骤1007)。在一个实施例中,步骤1007可以包括执行由第一策略指定的流量指令。在一些实施例中,设备200可以估计表达式610来确定下一个要处理的多个策略600中的第二策略600的级别。在一些其他实施例中,设备200可以估计面向对象的表达式610来确定下一个要处理的多个策略600中的第二策略600的级别。例如,设备可以估计表达式来确定结合GOTO流量指令所使用的行编号。在确定行编号之后,设备可以随后处理给定行编号处的策略。
在一些实施例中,设备还可以在确定规则是真时采取由第一策略指定的动作。在其他实施例中,当确定规则为真时,设备可以保存列表中第一策略指定的动作。该列表可以被用来保存所要采取的多个动作。在一个实施例中,由于设备处理策略库中的多个策略,所以设备可以保存对于包含被估计为真的规则的每一策略的一列动作。在处理该多个策略之后,设备可以随后采取保存在列表中的所有动作。在另一个实施例中,由于设备处理多个策略库,则设备可以保存对于包含被估计为真的规则的每一策略的一列动作。处理该多个策略库之后,设备可以随后采取保存在列表中的所有动作。
现在参考图11A,示出图解说明多个策略组上的流量控制的框图。总的来说,策略体1000b包括多个策略。其中一个策略包括调用动作1110,其调用第二策略体1000c。调用动作1110指示如果包含动作的策略的规则估计为真时所处理的策略体1000c。处理已调用的策略体之后,设备随后可以恢复处理第一策略体1000b。该处理将参考图11B进一步被描述。
仍旧参考图11A,配置接口700可以被提供允许用户通过包括一个或者多个调用动作110来指定策略组上执行的顺序。调用动作可以以任一方式识别策略组,包括但不限于通过名称、通过存储器位置或者通过任一其它标识符。在一些实施例中,策略组可以包括策略体。仍在其他实施例中,调用动作1110可以指定第二策略体中特定的策略。
在一些实施例中,调用动作1110可以包括指示第二策略组如何被处理的一个或者多个指示。在一个实施例中,包括在第一策略体中的调用动作1110可以指定在处理已调用的策略体之后是否应该恢复第一策略体的处理。在另一个实施例中,调用动作1110可以指定如果所调用的策略体中遇到硬停或者异常时是否应该恢复第一策略体的处理。例如,调用动作可以指定如果在第二策略体中遇到“END”流量指令,则应该恢复处理第一策略体。或者调用动作可以指定如果在第二策略体中遇到异常或者“END”流量指令,则应该不再处理第一策略体的策略。
以此方式,用户可以配置多个策略体来确保处理特定策略,甚至一个或者多个策略体的结果是不确定的。例如,提供用于拒绝对限制的URL的访问的策略的策略体可以调用用于在检测到URL指示请求包含SQL查询时提供SQL安全的策略体。调用可以指定不考虑SQL安全策略体处理的结果而在处理SQL策略体之后在URL模块处应该恢复处理。以此方式,用户可以保证执行所有限制的URL加强策略体,其可以确保所有限制的URL被阻断。
在给定策略体遇到异常或者硬停止的情况下用户还可以使用策略体调用动作1110来确保策略不被估计。例如,提供内容转换策略的策略体在确定对应于请求的应用之后可以调用包含用于应用的应用安全策略的策略体。该调用可以指示如果应用安全策略体遇到“END”指令,则在内容转换策略体中不再估计策略。这可以用在这些情况中:其中应用安全策略体中的“END”指令指示安全请求还没有满足,并且因此应该不再进行请求的处理。
在一些实施例中,设备可以被配置具有对于策略组的一个或者多个默认执行顺序。例如,设备可以具有一个或者多个全局策略组,其总是首先应用,之后是跟随全局策略组被处理的一个或者多个设备或者v服务器特定策略组。在一些实施例中,策略体可以具有响应于策略体执行的功能的默认排序。例如,SSL策略的策略体可以首先应用到输入业务量,并且随后一组安全策略可以应用到解密的业务量,之后是内容转换策略的体。
现在参考图11B,示出用在处理分组流的网络装置200中的策略组上的流量控制的方法的实施例。总的来说,设备识别第一策略组以应用到所接收的分组流(步骤1101)。设备处理第一策略组的第一策略,其中第一策略识别(i)指定第一表达式610的规则605和(ii)识别第二策略组的信息(步骤1103)。设备估计规则605(步骤1105)。响应于规则605的估计,设备处理所识别的第二策略组(步骤1107)。处理第二策略组之后,设备处理第一策略组的第二策略600(步骤1109)。
仍旧参考图11B,更详细地,设备可以以任一方式识别第一策略组来应用到所接收的分组流(步骤1101)。分组流可以从任一资源接收并且可以包括任意一个或者多个协议。
在一些实施例中,第一策略可以包括面向对象的表达式。在其他实施例中,第一策略可以包括包含至少一个表达式和/或面向对象表达式的规则。在一些实施例中,第一策略600指定基于规则605的估计所采取的动作615。
识别第二策略组的信息可以包括任一形式的识别信息。在一个实施例中,第二策略组可以包括策略体,并且识别信息可以包括策略体的名称。在一些实施例中,识别第二策略体的信息可以包括调用动作1110。
设备可以以任一方式处理第一策略600(步骤1103)。设备可以估计在处理策略中的一个或者多个面向对象表达式。
设备200可以以任一方式估计规则605(步骤1105)。在一些实施例中,设备可以估计面向对象表达式610。在一些实施例中,设备可以确定对应于规则的布尔值。
响应于规则605的估计,设备处理所识别的第二策略组(步骤1107)。在一些实施例中,如果规则估计为真,则设备可以仅处理第二策略组。在其他实施例中,如果规则估计为非零值,则设备可以仅处理第二策略组。设备可以以任一方式处理第二组。在一些实施例中,设备可以从由调用动作1110识别的特定策略起处理第二策略体。
在一些实施例中,处理第二策略组之后,设备可以处理第一策略组的第二策略。例如,在图11A中,设备可以估计策略体1000b中的行11的策略。如果规则为真,则设备可以采取调用动作1110,并且设备可以处理策略体1000c。在完成处理策略体P3之后,设备可以返回策略体1000b并且处理下一个指令,其是行12。在一些实施例中,如果第二策略体导致软停止,诸如其中策略体的最后一个指令指向NEXT指令,如在策略体1000c的行30中,则设备可以仅恢复处理第一策略体。在其他实施例中,甚至在指示硬停时,诸如策略体1000c的行11,设备可以恢复处理第一策略体。
在一些实施例中,第二策略组还可以包括一个或者多个调用动作。在这些实施例中,策略体估计可以以任一方式链锁(chained)。在一些实施例中,设备200可以处理第三策略组,其中第三策略组通过第二策略组中的策略600识别。在其他实施例中,第一策略体可以具有多个调用动作1110。在这些实施例中,设备可以处理第三策略组,其中第三策略组由第一策略组的第二策略600识别。在又一些实施例中,在处理第二策略组之后,第一策略体600指定识别要处理的第一策略组的第二策略600。例如,包括调用动作1110的策略还可以包括在处理从第二策略组返回之后指定要处理的第一策略组的策略的流量指令。G、用于配置和使用应用安全配置文件的系统和方法
现在参考图12,示出用于配置应用安全配置文件的多个配置屏幕1200、1210、1260、1240。总的来说,配置文件建立屏幕1200允许用户输入名称和一般性质用于新的应用安全配置文件。配置文件配置屏幕1210允许用户选择包含在配置文件中的一个或者多个检验。两个检验配置屏幕1240、1260可以随后允许用户修改单个检验的设置。
仍旧参考图12,更详细地,建立屏幕1200允许用户输入涉及配置文件的配置文件名称和附加的信息。配置文件可以以任一方式命名。在一些实施例中,配置文件名称可以反应配置文件的一个或者多个功能。可以与配置文件一起来指定附加的信息。在一个实施例中,配置文件可以指定与配置文件所应用的网络业务量的类型相关的信息。例如,配置文件可以应用到HTTP或者HTML业务量。或者配置文件可以应用到web服务业务量。
配置文件配置屏幕1210可以允许用户指定一个或者多个检验以与配置文件使用。检验可以包括涉及通用安全功能的任一组的策略或者动作。例如,cookie检验可以包括一组策略、设置或者动作来阻止cookie窜改。或者信用卡检验可以包括一组策略、设置或者动作来阻止机密信用卡信息经由装置发送。在所示实施例中,为用户提供选择来阻断、警告或者记录关于给定的检验。如果选择“阻断”,则配置文件可以阻断不符合检验的所有业务量。如果选择“警告”,则管理员或者用户在分组流不符合检验时可以接收警告。如果选择“记录”,则每当分组流通过不符合检验的装置发送时,可以建立记录项。配置文件配置屏幕可以提供选项来修改任一这些检验和规则。在一些实施例中,对检验的任一修改可以转变为用来配置网络装置的基本的策略表达式。
检验配置屏幕1240、1260可以包括用于修改检验的任一输入方式。在一个实施例中,用户可以指定一个或者多个策略包含在检验中。在另一个实施例中,用户可以修改检验的一个或者多个设置。检验的设置可以包括在确定业务量流是否满足检验中检验所使用的任一信息。例如,关于验证开始URL的检验,设置可以包括一个或者多个允许的开始URL。或者例如,对于表格字段格式检验,设置可以包括格式检验应该被应用的一个或者多个地址。在一些实施例中,设置可以对应于基本策略的一个或者多个元素。例如,允许的开始URL可以合并为具有允许业务量传递的动作的策略的规则中的表达式。
现在参考图13A,示出用于配置对于装置的一个或者多个应用安全配置文件的方法的流程图,其中每一个应用安全配置文件指定多个检验来执行涉及应用的安全功能。总的来说,该方法包括提供用于配置应用安全配置文件的配置接口(步骤1301)。该方法包括经由配置接口接收第一设置,其对应于应用安全配置文件的第一检验(步骤1303)。方法还包括经由配置接口接收第二设置,其对应于应用安全配置文件的第二检验(步骤1305)。该方法还包括识别指定包括第一表达式600的规则605的策略600(步骤1307)。该方法还可以包括接收基于规则605的估计来识别要处理的应用安全配置文件的信息(步骤1309)。
仍旧参考图13A,更详细地,提供用于配置应用安全配置文件的配置接口(步骤1301)。配置接口可以包括任一配置接口、部件和此处描述的方法。在一些实施例中,配置接口包括一个或者多个拖放接口、列表选择接口或者语法突出显示接口。在其他实施例中,配置接口可以包括表达式配置屏幕600。在又一些实施例中,配置接口可以包括任一数量个配置文件建立屏幕1300、检验配置屏幕1310、和/或设置配置屏幕1340、1360。在又一些实施例中,配置接口700是命令行接口。配置接口可以在任一装置上执行。在一些实施例中,方法包括在与网络装置200通信的装置上执行配置接口700。在其他实施例中,该方法包括在网络装置200上执行配置接口700。在一个实施例中,该方法给用户提供用于建立多个应用配置文件的配置文件接口1300。
装置可以经由配置接口接收指定应用安全配置文件的对应的第一检验的第一设置(步骤1303)。在一些实施例中,装置从配置接口700接收第一检验所使用的URL。在其他实施例中,装置从配置接口700接收指定第一检验所使用的一个或者多个URL的表达式610。在又一些实施例中,装置从配置接口700接收指定第一检验所使用的一个或者多个URL的面向对象的表达式600。在一些实施例中,设置可以包括检验是否应该阻断、记录或者产生关于干扰检验的分组流的警告的指示。在其他实施例中,设置可以包括包含在检验中的一个或者多个策略的元素。
装置还经由配置接口700接收第二设置,该第二设置指定应用安全配置文件的对应的第二检验(步骤1305)。该设置可以以任一方式接收,包括第一设置被接收的任一方式。
装置可以经由配置接口700识别指定包括第一表达式610的规则605的策略600(步骤1307)。在一些实施例中,策略可以包括面向对象的表达式。策略可以以任一方式识别。在一些实施例中,策略可以从列表中挑选。在其他实施例中,策略可以经由拖放接口挑选。在又一些实施例中,策略可以关于给定的配置文件自动挑选。在一个实施例中,策略可以由用户直接输入。
装置可以经由接口700接收基于规则605的估计来识别要处理的应用安全配置文件的信息(步骤1309)。在一个实施例中,应用安全配置文件可以表示为策略体,并且调用动作可以增加到识别策略体的策略。在一些实施例中,方法包括保存应用安全配置文件。在其他实施例中,方法包括将应用安全配置文件发送到网络装置200。
在一些实施例中,应用安全配置文件可以被指定为动作用于多个策略。例如,可以存在多个条件,在这些条件下应该应用包括表格字段一致性的应用安全配置文件和缓冲器溢出检验。多个策略,其中指定若干条件中一个的每一个策略可以调用应用安全配置文件作为动作。
现在参考图13B,示出用于对于装置执行一个或者多个应用安全配置文件的方法的实施例,每一个应用安全配置文件指定执行涉及应用的安全功能的多个策略组。总的来说,该方法包括识别第一策略的设备以应用到所接收的分组流,其中第一策略600指定包括第一表达式610的规则605并且识别应用安全配置文件(步骤1321)。设备200估计规则605(步骤1323)。响应于规则605的估计,设备处理应用安全配置文件识别的第一检验(步骤1325)。响应于规则605的确定,设备还处理应用安全配置文件指定的第二检验(步骤1327)。
仍旧参考图13B,更详细地,该方法包括识别第一策略的设备以应用到所接收的分组流,其中第一策略600指定包括第一表达式610的规则605并且识别应用安全配置文件(步骤1321)。在一些实施例中,设备200包括VPN代理装置。在一些其他实施例中,设备200识别第一策略600以应用到所接收的TCP分组流。分组流可以以任一方式从任一资源接收。分组流可以包括任意一个或者多个协议。
设备200估计策略的规则(步骤1323)。设备可以根据任一技术来估计规则。在一些实施例中,规则可以包括面向对象的表达式。在其他实施例中,规则可以包括多个面向对象的表达式。在一些实施例中,设备可以确定布尔值作为估计表达式的结果。
响应于规则605的估计,设备200处理应用安全配置文件识别的第一检验(步骤1325)。在一些实施例中,设备可以响应于确定规则为真来处理第一检验。
设备可以以任一方式处理第一检验。在一些实施例中,设备估计第一检验的至少一个设置来确定是否应用第一检验。在一些其他实施例中,设备确定包含在分组流中的URL匹配第一检验的至少一个设置,并且响应于该确定来应用第一检验。在又一些实施例中,设备可以确定包含在分组流中的URL匹配第一检验的一个设置的表达式610,并且响应于该确定来应用第一检验。在其他实施例中,设备可以确定包含在分组流中的URL匹配第一检验的一个设置的面向对象的表达式610。设备可以响应于该确定来应用第一检验。
响应于规则605的确定,设备200还可以处理应用安全配置文件指定的第二检验(步骤1327)。在一些实施例中,设备可以响应于确定规则为真来处理第二检验。在一些实施例中,该方法使用第一检验和第二检验的至少一个用来执行以下的其中一个:SQL注入检测、无效开始URL检测、cookie窜改检测、表格字段一致性检测、缓冲器溢出检测、交叉站点脚本检测、信用卡号码检测、和无效URL检测。在一些其他实施例中,该方法使用第一检验和第二检验的至少一个来执行以下的其中一个:SQL注入阻断、无效开始URL阻断、cookie窜改阻断、非一致性表格字段阻断、缓冲器溢出阻断、交叉站点脚本阻断、信用卡号码阻断、和无效URL阻断。
虽然本发明已经参考特定优选实施例详细地示出和描述,但是本领域内的普通技术人员应该理解在不脱离由所附权利要求限定的本发明的精神和保护范围的情况下可以在形式上和细节上做出多种改变。

Claims (59)

1.一种使用面向对象的表达式来配置网络装置的策略以指定网络装置所接收的分组流的有效载荷中的结构的方法,其中所述面向对象的表达式包括显式的类型转换,所述方法包括:
(a)提供用于配置网络装置的策略的配置接口;
(b)经由所述配置接口接收对于策略的表达式,所述表达式识别(i)应用到分组流的有效载荷的部分的对象类;和(ii)对象类的成员;和
(c)经由所述配置接口接收识别对于所述策略的动作的信息,基于该表达式的估计而采取所述动作。
2.根据权利要求1的方法,其中,步骤(a)包括向用户提供命令行配置接口。
3.根据权利要求1的方法,其中,步骤(a)包括向用户提供配置接口,所述配置接口包括拖放接口、列表选择接口或者语法突出显示接口的一个或者多个。
4.根据权利要求1的方法,其中,步骤(a)包括在连接到网络装置的装置上执行配置接口。
5.根据权利要求1的方法,其中,步骤(a)包括在网络装置上执行配置接口。
6.根据权利要求1的方法,还包括从用户接收识别协议的信息。
7.根据权利要求6的方法,其中,步骤(b)包括接收对象类以应用到分组流的有效载荷的部分,所述对象类对应于所识别的协议。
8.根据权利要求1的方法,还包括从用户接收识别在解释分组流的有效载荷中使用的协议的信息。
9.根据权利要求1的方法,其中,所述对象类的成员包括一个字段。
10.根据权利要求1的方法,其中,所述对象类的成员包括对应于第二对象类的一个字段。
11.根据权利要求1的方法,其中,所述对象类的成员包括一个方法。 
12.根据权利要求1的方法,其中,所述对象类的成员从所述对象类的父类继承。
13.根据权利要求1的方法,其中,所述对象类对应于HTTP请求。
14.根据权利要求1的方法,其中,所述对象类对应于HTTP请求,并且所述对象类的成员包括URL。
15.根据权利要求1的方法,其中,所述对象类对应于HTTP请求,并且所述对象类的成员包括cookie。
16.根据权利要求1的方法,其中,所述对象类对应于HTTP响应。
17.根据权利要求1的方法,其中,所述对象类对应于HTTP响应体,并且所述对象类的成员对应于URL。
18.根据权利要求1的方法,其中,步骤(b)包括经由配置接口接收对于策略的表达式,所述表达式识别(i)应用到分组流的有效载荷的部分的对象类,(ii)所述对象类的字段,所述字段对应于第二对象类和(iii)字段的显式类型转换。
19.根据权利要求1的方法,其中,步骤(b)包括经由配置接口接收对于策略的表达式,所述表达式识别(i)应用到分组流的有效载荷的部分的对象类,(ii)所述对象类的方法,所述方法返回对应于第二对象类的对象和(iii)所返回对象的显式类型转换。
20.根据权利要求1的方法,其中,步骤(c)包括识别策略的动作的信息,基于包含所述表达式的规则的估计来采取所述动作。
21.根据权利要求1的方法,其中,所述动作指定涉及以下至少一个的功能:负载平衡、内容转换、应用安全、应用递送、网络加速和应用加速。
22.根据权利要求1的方法,其中,所述动作包括重写HTTP响应的体中的URL。
23.根据权利要求1的方法,其中,所述动作包括面向对象的表达式。
24.一种在设备中在策略中应用面向对象的表达式来指定所述设备接收的分组流的有效载荷中的结构的方法,其中所述面向对象的表达式包括显式的类型转换,所述方法包括: 
(a)由设备识别策略来估计关于所接收的分组流的有效载荷,该策略指定(i)对象类以应用到分组流的有效载荷的部分;(ii)对象类的成员和(iii)动作;
(b)由设备选择该对象类识别的有效载荷的部分;
(c)由设备确定对于该对象类的成员的值;并且
(d)响应所确定的值来采取动作。
25.根据权利要求24的方法,其中,所述策略识别协议。
26.根据权利要求25的方法,还包括根据所识别的协议来解析有效载荷的部分。
27.根据权利要求25的方法,其中,所述协议是HTTP。
28.根据权利要求24的方法,其中,所述对象类的成员包括一个字段。
29.根据权利要求24的方法,其中,所述对象类的成员包括对应于第二对象类的一个字段。
30.根据权利要求24的方法,其中,所述对象类的成员包括一个方法。
31.根据权利要求24的方法,其中,所述对象类的成员从所述对象类的父类继承。
32.根据权利要求24的方法,其中,所述对象类对应于HTTP请求。
33.根据权利要求24的方法,其中,所述对象类对应于HTTP请求,并且所述对象类的成员包括URL。
34.根据权利要求24的方法,其中,所述对象类对应于HTTP请求,并且所述对象类的成员包括cookie。
35.根据权利要求24的方法,其中,所述对象类对应于HTTP响应。
36.根据权利要求24的方法,其中,所述对象类对应于HTTP响应体,并且所述对象类的成员对应于URL。
37.根据权利要求24的方法,其中,步骤(c)包括由所述设备确定对于所述对象类的成员的值;并且执行所确定的值的显式类型转换。
38.根据权利要求24的方法,其中,步骤(d)包括:基于确定的值估计所述表达式;在确定的值上执行操作来产生结果,并且响应于所 产生的结果来采取动作。
39.根据权利要求38的方法,其中,所述操作包括AND、OR、GREATER THAN、LESS THAN、EQUALS和NOT EQUALS的其中一个。
40.根据权利要求24的方法,其中,步骤(d)包括执行涉及以下至少一个的动作:负载平衡、内容转换、应用安全、应用递送、网络加速和应用加速。
41.根据权利要求24的方法,其中,步骤(d)包括重写包含在所述分组流中的HTTP响应的体中的URL。
42.一种设备,用于在策略中应用面向对象的表达式来指定所述设备接收的分组流的有效载荷中的结构,其中所述面向对象的表达式包括显式的类型转换,所述设备包括:
接收分组流的分组处理器;和
策略引擎,识别策略来估计关于所接收的分组流的有效载荷,该策略指定(i)对象类以应用到分组流的有效载荷的部分;(ii)对象类的成员和(iii)动作;选择该对象类识别的有效载荷的部分;确定对于该对象类的成员的值;并且响应所确定的值来采取动作。
43.根据权利要求42的设备,其中,所述策略识别协议。
44.根据权利要求43的设备,其中,所述策略引擎根据所识别的协议来解析有效载荷的部分。
45.根据权利要求43的设备,其中,所述协议是HTTP。
46.根据权利要求42的设备,其中,所述对象类的成员包括一个字段。
47.根据权利要求42的设备,其中,所述对象类的成员包括对应于第二对象类的一个字段。
48.根据权利要求42的设备,其中,所述对象类的成员包括一个方法。
49.根据权利要求42的设备,其中,所述对象类的成员从所述对象类的父类继承。
50.根据权利要求42的设备,其中,所述对象类对应于HTTP请求。
51.根据权利要求42的设备,其中,所述对象类对应于HTTP请求, 并且所述对象类的成员包括URL。
52.根据权利要求42的设备,其中,所述对象类对应于HTTP请求,并且所述对象类的成员包括cookie。
53.根据权利要求42的设备,其中,所述对象类对应于HTTP响应。
54.根据权利要求42的设备,其中,所述对象类对应于HTTP响应体,并且所述对象类的成员对应于URL。
55.根据权利要求42的设备,其中,所述策略引擎确定对于所述对象类的成员的值;并且执行所确定的值的显式类型转换。
56.根据权利要求42的设备,其中,所述策略引擎基于确定的值来估计所述表达式;在确定的值上执行操作来产生结果,并且响应于所产生的结果来采取动作。
57.根据权利要求56的设备,其中,所述操作包括AND、OR、GREATER THAN、LESS THAN、EQUALS和NOT EQUALS的其中一个。
58.根据权利要求42的设备,其中,所述策略引擎执行涉及以下至少一个的动作:负载平衡、内容转换、应用安全、应用递送、网络加速和应用加速。
59.根据权利要求42的设备,其中,所述策略动作重写包含在所述分组流中的HTTP响应的体中的URL。 
CN2008800158624A 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法 Active CN101682526B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310491676.0A CN103560905B (zh) 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US11/685,147 US7865589B2 (en) 2007-03-12 2007-03-12 Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US11/685,180 2007-03-12
US11/685,177 2007-03-12
US11/685,180 US8631147B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring policy bank invocations
US11/685,167 2007-03-12
US11/685,167 US7870277B2 (en) 2007-03-12 2007-03-12 Systems and methods for using object oriented expressions to configure application security policies
US11/685,177 US8490148B2 (en) 2007-03-12 2007-03-12 Systems and methods for managing application security profiles
US11/685,147 2007-03-12
US11/685,175 2007-03-12
US11/685,171 US7853678B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring flow control of policy expressions
US11/685,175 US7853679B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring handling of undefined policy events
US11/685,171 2007-03-12
PCT/US2008/056671 WO2008112769A2 (en) 2007-03-12 2008-03-12 Systems and methods for configuring, applying and managing object-oriented policy expressions for a network device

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310491676.0A Division CN103560905B (zh) 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法

Publications (2)

Publication Number Publication Date
CN101682526A CN101682526A (zh) 2010-03-24
CN101682526B true CN101682526B (zh) 2013-11-20

Family

ID=39731722

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310491676.0A Active CN103560905B (zh) 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法
CN2008800158624A Active CN101682526B (zh) 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310491676.0A Active CN103560905B (zh) 2007-03-12 2008-03-12 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法

Country Status (8)

Country Link
EP (2) EP2135385B1 (zh)
CN (2) CN103560905B (zh)
AU (1) AU2008225150A1 (zh)
BR (1) BRPI0808859A2 (zh)
CA (1) CA2679499A1 (zh)
HK (2) HK1139534A1 (zh)
IL (1) IL200736A0 (zh)
WO (1) WO2008112769A2 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
EP2351333B1 (en) 2008-11-25 2019-09-18 Citrix Systems, Inc. Systems and methods for applying transformations to ip addresses obtained by domain name service (dns)
US8887227B2 (en) 2010-03-23 2014-11-11 Citrix Systems, Inc. Network policy implementation for a multi-virtual machine appliance within a virtualization environtment
US20120158819A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Policy-based application delivery
GB2501031B (en) * 2010-12-26 2017-11-15 Lg Electronics Inc Method for transmitting broadcast service, method for receiving the broadcasting service, and apparatus for receiving the broadcasting service
WO2013003532A1 (en) * 2011-06-29 2013-01-03 Verisign, Inc. Data plane packet processing tool chain
CN107332805B (zh) * 2016-04-29 2021-02-26 阿里巴巴集团控股有限公司 检测漏洞的方法、装置和系统
WO2020037607A1 (zh) * 2018-08-23 2020-02-27 华为技术有限公司 一种传输数据的方法和装置
CN111800444B (zh) * 2019-04-09 2023-01-31 杭州萤石软件有限公司 一种可动态调整的控制系统和控制方法
CN111818175B (zh) * 2020-07-24 2023-06-30 南方电网数字电网研究院有限公司 企业服务总线配置文件生成方法、装置、设备和存储介质
CN112055032B (zh) * 2020-09-21 2022-05-17 迈普通信技术股份有限公司 一种报文处理方法、装置、电子设备及存储介质
US11374838B1 (en) * 2021-03-29 2022-06-28 Mellanox Technologies, Ltd. Using a data processing unit (DPU) as a pre-processor for graphics processing unit (GPU) based machine learning
CN114845312B (zh) * 2022-04-02 2023-05-16 四川安迪科技实业有限公司 一种基于tdma卫星网管自动搭建组网环境的方法
EP4332812A1 (de) 2022-08-29 2024-03-06 Siemens Aktiengesellschaft Verfahren zum rechnergestützten verwalten von sicherheitsprofilen für eine anzahl von applikationen in einem datennetz

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007024647A2 (en) * 2005-08-19 2007-03-01 Cpacket Networks, Inc. Apparatus and method for facilitating network security

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246370B2 (en) 2000-01-07 2007-07-17 Security, Inc. PDstudio design system and method
US20030115204A1 (en) * 2001-12-14 2003-06-19 Arkivio, Inc. Structure of policy information for storage, network and data management applications
US7587517B2 (en) 2002-07-08 2009-09-08 Precache Inc. Packet routing via payload inspection for quality of service management
US7246156B2 (en) * 2003-06-09 2007-07-17 Industrial Defender, Inc. Method and computer program product for monitoring an industrial network
JP4336858B2 (ja) * 2003-07-02 2009-09-30 日本電気株式会社 ポリシ処理システム、ポリシ処理方法及びポリシ処理プログラム
KR100502068B1 (ko) * 2003-09-29 2005-07-25 한국전자통신연구원 네트워크 노드의 보안 엔진 관리 장치 및 방법
US20060294219A1 (en) * 2003-10-03 2006-12-28 Kazuki Ogawa Network system based on policy rule
US20060026680A1 (en) * 2004-07-29 2006-02-02 Zakas Phillip H System and method of characterizing and managing electronic traffic
US7499412B2 (en) * 2005-07-01 2009-03-03 Net Optics, Inc. Active packet content analyzer for communications network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007024647A2 (en) * 2005-08-19 2007-03-01 Cpacket Networks, Inc. Apparatus and method for facilitating network security

Also Published As

Publication number Publication date
WO2008112769A2 (en) 2008-09-18
CA2679499A1 (en) 2008-09-18
AU2008225150A1 (en) 2008-09-18
EP2135385B1 (en) 2013-11-13
HK1139534A1 (en) 2010-09-17
BRPI0808859A2 (pt) 2014-09-09
EP2456125B1 (en) 2014-11-12
EP2135385A2 (en) 2009-12-23
EP2456125A1 (en) 2012-05-23
HK1171292A1 (zh) 2013-03-22
IL200736A0 (en) 2010-05-17
CN103560905A (zh) 2014-02-05
WO2008112769A3 (en) 2009-03-12
CN101682526A (zh) 2010-03-24
CN103560905B (zh) 2017-03-01

Similar Documents

Publication Publication Date Title
CN101682526B (zh) 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法
CN101984778B (zh) 用于细粒度策略驱动的cookie代理的系统和方法
US9450837B2 (en) Systems and methods for configuring policy bank invocations
CN101981887B (zh) 用于配置和细粒度策略驱动web内容检测和重写的系统和方法
US9160768B2 (en) Systems and methods for managing application security profiles
CN102292961B (zh) 用于对由域名服务(dns)获得的ip地址进行转换的系统和方法
US7853679B2 (en) Systems and methods for configuring handling of undefined policy events
US7853678B2 (en) Systems and methods for configuring flow control of policy expressions
US7865589B2 (en) Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7870277B2 (en) Systems and methods for using object oriented expressions to configure application security policies
CN101682619B (zh) 用于基于用户选择的规格进行负载平衡的系统和方法
CN102292955B (zh) 用于负载平衡实时流传输协议的系统和方法
CN101632067B (zh) 用于终端用户体验监控的系统和方法
CN102763368B (zh) 用于跨站点伪造保护的方法和系统
CN101981888B (zh) 用于ssl vpn免客户机访问的策略驱动的细粒度url编码机制
CN103119907A (zh) 提供用于访问控制的智能组的系统和方法
CN102292708A (zh) 用于策略的http调出的系统和方法
CN103403707A (zh) 用于数据库代理请求交换的系统和方法
CN103392321A (zh) 用于基于策略集成横向部署的wan优化设备的系统和方法

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