中欧体育M·拉加; R·康达姆鲁; J·苏甘蒂; S·维朱诺夫; S·卡马斯; A·谢蒂
在本发明所涉及的用于使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的方法和设备中,监控器确定一个或者多个网络服务的每一个的响应时间。该监控器基于一个或者多个网络服务的每一个的所确定的响应时间来建立平均响应时间。该监控器将一个或者多个网络服务的响应时间可以偏离平均响应时间的预定阈值与所建立的平均响应时间相关联,该一个或者多个网络服务的响应时间可以维持向应度的指示。该监控器监控一个或者多个网络服务对一个或者多个请求的响应时间。该监控器确定一个或者多个网络服务的响应时间偏离平均响应时间预定阈值。该监控器指示一个或者多个网络服务不可用。
1、一种用于使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的方法,所述方法包括如下步骤:
(b)由所述监控器基于所述一个或者多个网络服务的每一个的所确定的响应时间来建立平均响应时间;
(c)由所述监控器将所述一个或者多个网络服务的响应时间可以偏离所述平均响应时间的预定阈值与所建立的平均响应时间相关联,该一个或者多个网络服务的响应时间可以维持响应度的指示;
(d)由所述监控器监控所述一个或者多个网络服务对一个或者多个请求的所述响应时间;
(e)由所述监控器确定所述一个或者多个网络服务的所述响应时间偏离所述平均响应时间预定阈值;
2、权利要求1的方法,其中,步骤(a)还包括由所述监控器执行探测器来确定所述一个或者多个网络服务的所述响应时间。
4、权利要求1的方法,其中,步骤(a)还包括确定包括所述一个或者多个网络服务和所述监控器之间的往返时间的响应时间。
5、权利要求1的方法,其中,步骤(a)还包括由所述监控器在预定时间间隔更新所述一个或者多个网络服务响应请求的所述响应时间。
6、权利要求1的方法,其中,步骤(a)还包括由所述监控器确定所述一个或者多个网络服务响应来自用户定制的探测器的请求的所述响应时间。
7、权利要求1的方法,其中,步骤(a)还包括由所述监控器确定所述一个或者多个网络服务响应以下类型的其中之一的请求的响应时间:查验、传输控制协议(tcp)、tcp扩展内容验证(TCPECV)、使用加密套接字协议层(SSL)的安全模式中的TCPECV、超文本传输协议(http)、http扩展内容验证、使用SSL的安全模式中的超文本传输协议(https)、https扩展内容验证、用户数据报协议、域名服务和文件传输协议。
8、权利要求1的方法,其中,步骤(d)还包括由所述监控器确定所述一个或者多个网络服务响应以下类型的其中之一的请求的响应时间:查验、传输控制协议(tcp)、tcp扩展内容验证、超文本传输协议(http)、http扩展内容验证、超文本传输协议安全(https)、https扩展内容验证、用户数据报协议、域名服务和文件传输协议。
9、权利要求1的方法,其中,步骤(b)还包括由所述监控器在预定时间间隔更新所述所建立的平均响应时间。
10、权利要求9的方法,还包括由所述监控器将不可用网络服务的响应时间排除在所更新的平均响应时间之外。
11、权利要求1的方法,其中,步骤(c)还包括由所述监控器的用户指定所述预定阈值。
12、权利要求1的方法,其中,步骤(c)还包括由所述监控器根据监控所述一个或者多个网络服务的响应时间确定所述预定阈值。
13、权利要求1的方法,其中,步骤(e)还包括由所述监控器确定所述一个或者多个网络服务的所述响应时间与所建立的平均响应时间的偏离落入所述预定阈值中。
14、权利要求13的方法,其中,步骤(f)包括由所述监控器指示一个或者多个网络服务可用。
15、权利要求1的方法,包括由所述一个或者多个网络服务提供第一网络上的客户端和第二网络上的服务器之间的虚拟专用网络连接。
16、权利要求1的方法,其中,步骤(f)还包括发送所述一个或者多个网络服务不可用的指示。
17、权利要求1的方法,其中,步骤(f)还包括给驻留在网络设备上的虚拟服务器发送所述一个或者多个网络服务不可用的指示。
18、一种使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的设备,所述设备包括:
一个或者多个探测器,与一个或者多个网络服务相关联,并且对于所述一个或者多个网络服务的每一个确定所述一个或者多个网络服务对于请求的响应时间;和
i、基于由所述一个或者多个探测器所确定的所述一个或者多个网络服务的每一个的响应时间来建立平均响应时间的装置;
ii、将所述一个或者多个网络服务的所述响应时间可以偏离平均响应时间的预定阈值与所建立的平均响应时间相关联的装置,该一个或者多个网络服务的响应时间可以维持响应度的指示;
iii、监控所述一个或者多个网络服务对一个或者多个请求的所述响应时间的装置;
iv、确定所述一个或者多个网络服务的所述响应时间偏离所述平均响应时间预定阈值的装置;和
19、权利要求18的设备,其中,所述一个或者多个探测器确定由所述一个或者多个网络服务响应以下类型的其中之一的请求的响应时间:查验、传输控制协议(tcp)、tcp扩展内容验证(TCPECV)、使用加密套接字协议层(SSL)的安全模式中的TCPECV、超文本传输协议(http)、http扩展内容验证、使用SSL的安全模式中的超文本传输协议(https)、https扩展内容验证、用户数据报协议、域名服务和文件传输协议。
21、权利要求18的设备,其中,所述监控器还包括与驻留在所述设备上的虚拟服务器相通信的发送器。
22、权利要求18的设备,其中,所述监控器还包括发送器,用于给所述虚拟服务器发送所述一个或者多个网络服务不可用的指示。
【0001】本发明主要涉及数据通信网络。更具体地,本发明涉及用于使用动态响应时间来确定一个或者多个网络服务的响应度的方法和设备。
【0002】传统的系统提供确定服务器对网络请求的响应度的功能。典型地,由管理员定义静态响应时间。如果服务器不能在指定的响应时间内响应请求,服务器可以被识别为不可用服务器。由于增加的负载或请求类型,这样的系统典型地不能满足响应时间的变化。
【0003】当响应不同服务器或者不同服务器上的网络服务的请求时,这样的系统典型地不能具有支持所需的不同响应时间的灵活性。例如,在提供多个服务器上的多个网络服务的系统中,当网络服务要求改变对于不同类型的请求的响应时间的总量时,该系统仅可以支持一个、静态的响应时间。一些服务器或者服务器上的网络服务是可用的,但是除了由预定分配的静态响应时间之外还要求附加的时间。尽管这些服务器或者网络服务可用,但可以被识别为不可用的。
【0004】于是期望一种支持可变响应时间并且提供具有变化的平均响应时间的多个网络服务或者服务器其中之一的可用性的精确识别的系统。
【0005】在本发明的一个方面中,一种用于使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的方法包括由监控器确定一个或者多个网络服务的每一个响应请求的响应时间的步骤。该监控器基于一个或者多个网络服务的每一个的所确定的响应时间来建立平均响应时间。该监控器将一个或者多个网络服务的响应时间可以偏离平均响应时间的预定阈值与所建立的平均响应时间相关联,该一个或者多个网络服务的响应时间可以维持响应度的指示。该监控器监控一个或者多个网络服务对一个或者多个请求的响应时间。该监控器确定一个或者多个网络服务的响应时间偏离平均响应时间预定阈值。该监控器指示一个或者多个网络服务不可用。
【0006】在一个实施例中,该监控器执行探测器来确定该一个或者多个网络服务的响应时间。在另一个实施例中,该监控器基于网络服务的类型来选辑探测器用于执行。在又另一个实施例中,该监控器确定包括一个或者多个网络服务和监控器之间的往返时间的响应时间。在又另一个实施例中,该监控器在预定时间间隔更新一个或者多个网络服务的响应时间。
【0007】在一个实施例中,用户指定一个或者多个探测器所关联的网络服务的类型。在另一个实施例中,用户定制探测器。在又另一个实施例中,该监控器确定由一个或者多个网络服务响应以下类型的其中之一的请求所需的时间:查验(ping)、传输控制协议(tcp)、tcp扩展内容验证(TCPECV)、使用加密套接字协议层(SSL)的安全模式中的TCPECV、超文本传输协议(http)、http扩展内容验证、使用SSL的安全模式中的超文本传输协议(https)、https扩展内容验证、用户数据报协议、域名服务和文件传输协议以及其它自定义和通用用户可编程脚本。在又另一个实施例中,监控器确定一个或者多个网络服务的响应时间与所建立的平均响应时间的偏离落入预定阈值中。在进一步的实施例中,该监控器指示一个或者多个网络服务可用。
【0008】在本发明的另一个方面中,设备使用动态响应时间来确定服务器上一个或者多个网络服务的响应度。该设备包括监控器和与一个或者多个网络服务相关联的一个或者多个探测器。对于一个或者多个网络服务的每一个,该一个或者多个探测器确定该一个或者多个网络服务对于请求的响应时间。驻留在设备上的该监控器和一个或者多个探测器相关联。该监控器包括基于由一个或者多个探测器所确定的一个或者多个网络服务的每一个的响应时间来建立平均响应时间的装置。该监控器包括将一个或者多个网络服务的响应时间可以偏离平均响应时间的预定阈值与所建立的平均响应时间相关联的装置,该一个或者多个网络服务的响应时间可以维持响应度的指示。该监控器附加地包括监控一个或者多个网络服务对一个或者多个请求的响应时间的装置。该监控器还包括确定一个或者多个网络服务的响应时间偏离平均响应时间预定阈值的装置。该监控器包括用于指示一个或者多个网络服务不可用的装置。
【0009】在一个实施例中,用户指定一个或者多个探测器所关联的网络服务的类型。在另一个实施例中,用户定制探测器。在又另一个实施例中,该一个或者多个探测器确定由一个或者多个网络服务响应以下类型的其中之一的请求的响应时间:查验、传输控制协议(tcp)、tcp扩展内容验证(TCPECV)、使用加密套接字协议层(SSL)的安全模式中的TCPECV、超文本传输协议(http)、http扩展内容验证、使用SSL的安全模式中的超文本传输协议(https)、https扩展内容验证、用户数据报协议、域名服务和文件传输协议,以及其它自定义和通用的用户可编程脚本。
【0010】在一个实施例中,该监控器包括内核模式进程。在另一个实施例中,该监控器与驻留在设备上的虚拟服务器通信。在又另一个实施例中,该监控器给虚拟服务器发送一个或者多个网络服务不可用的指示。
【0012】该发明的前述和其它目的、方面、特征和优点,通过参见下述结合附图的细节描述将会更加明显并更易于理解,其中:
图2B是用于优化、加速、负载平衡和路由客户端和服务器之间的通信的设备的另一个实施例的框图;
图4是描述使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的设备的一个实施例的框图;和
图5是描述使用动态响应时间来确定服务器上一个或者多个网络服务的响应度的方法所采用步骤的一个实施例的流程图。
【0013】从下面结合附图所提出的详细描述,本发明的特征和优点将更明显,其中,相同的参考标记在全文中表示相应的元件。附图中,相同的附图标记通常表示相同的、功能类似、和/或结构类似的元件。
【0014】在包括服务器群组的一些实施例中,该服务器群组包括服务器,一个或者多个服务器共享公共资源。在这些实施例的一个中,公共资源为物理装置,诸如由多个服务器访问来为一个或者多个客户端提供功能性的后端数据库。在这些实施例的另一个中,诸如管理员的共享资源的用户确定一个或者多个服务器和共享资源的一个或者多个服务器的静态响应超时。在这些实施例的另一个中,共享资源响应请求,但是要求响应时间大于用户设定的静态确定的响应时间以响应服务器的请求。在这些实施例的又另一个中,要求来自共享资源的响应以响应客户端请求的服务器也要求响应时间大于静态确定的响应时间。在这些实施例的一些实施例中,由于所要求的增加的响应时间,共享资源的监控器将识别共享资源和服务器为不可用。
【0015】在替代实施例中,诸如以下结合图4和图5所描写和描述的,动态响应时间通过监控响应时间和确定平均响应时间来配置。在这些实施例的一个中,服务响应时间被确定为平均响应时间的函数和与平均响应时间的偏离值的函数。在这些实施例的另一个中,识别出平均响应时间和预定阈值。在这些实施例的又另一个中,当服务超过平均响应时间预定阈值时,该服务被识别为不可用。在这些实施例的又另一个中,预定阈值和平均响应时间的使用提高了服务不可用的识别的精确度并且提升了监控器识别不可用服务的功能。
【0016】在讨论设备和/或客户端的系统和方法的实施例的细节之前,讨论这些实施例所布署的网络和计算环境是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括通过一个或多个网络104、104’(一般称为网络104)与一个或多个服务器106a-106n(同样一般称为服务器106,或远程机器106)通信的一个或多个客户端102a-102n(同样一般称为本地机器102,或客户端102)。在一些实施例中,客户端102通过设备200与服务器106通信。
【0017】虽然图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通信。
【0018】网络104和/或104’是任何类型和/或形式的网络,并且可包括任意下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104和/或104’的拓扑可为总线型、星型或环型网络拓扑中欧体育。网络104和/或104’以及网络拓扑可以是本领域普通技术人员所熟知的、可以支持此处描述的操作的任意这样的网络或网络拓扑。
【0019】如图1A所示,设备200被示在网络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之间的网络或网络通信路径中的任一点。
【0020】在一个实施例中,系统可包括多个逻辑分组服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群组38。在其中一些实施例中,服务器106可为地理上分散的。在一些情况中,群组38可以作为单个实体被管理。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组执行代表一个或者多个客户端102的一个或者多个应用。
【0021】在每个群组38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如,由Washington,Redmond的Microsoft公司制造的WINDOWSNT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群组38的服务器106不需要与相同群组38内的另一个服务器106物理上接近。因此,逻辑分组作为群组38的服务器106的组可使用广域网(WAN)连接或中等区域网(MAN)连接来互相连接。例如,群组38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106使用局域网(LAN)连接或一些直接连接的形式进行连接,则在群组38中的服务器106间的数据发送速度可增加。
【0022】服务器106可指文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户端102有能力作为在服务器上搜索对应用的访问的客户端节点工作,也有能力作为提供对用于其它客户端102a-102n所寄载的应用的访问的应用服务器工作。
【0023】在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群组38中的服务器106之一直接通信。在另一个实施例中,客户端102执行程序邻近应用以与群组38内的服务器106通信。在又另一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群组38中的服务器106通信。通过网络104,客户端102例如可以请求执行在群组38中的服务器106a-106n寄载的各种应用,并接收应用执行结果的输出用于显示。在一些实施例中,只有主节点提供要求识别和提供地址信息的功能,其中的地址信息与寄载所请求的应用的服务器106’相关。
【0024】在一个实施例中,服务器106提供网络(Web)服务器的功能。在另一个实施例中,服务器106a接收来自客户端102的请求,将该请求转发到第二服务器106b并以来自服务器106b对该请求的响应通过客户端102响应该请求。在又另一个实施例中,服务器106获得客户端102可用的应用的列举以及地址信息,该地址信息与服务器106相关,该服务器106寄载由该应用的列举所识别的应用。在又一个实施例中,服务器106使用web接口呈现对客户端102的请求的响应。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在另一个实施例中,客户端102接收诸如显示数据的应用输出数据,该应用输出数据通过对在服务器106上所识别的应用的执行而产生。
【0025】现在看图1B,示出了在客户端102上用于传送和/或操作计算环境的网络环境。在一些实施例中,服务器106包括用于向一个或多个客户端102传送计算环境或应用和/或数据文件的应用传送系统190。总的来说,客户端10通过网络104、104’和设备200与服务器106通信。例如,客户端102可驻留在公司的远程办公室里,例如分支机构,并且服务器106可驻留在公司数据中心。客户端102包括客户端代理120以及计算环境15。计算环境15可执行或操作访问、处理或使用数据文件的应用。计算环境15、应用和/或数据文件可通过设备200和/或服务器106传送。
【0026】在一些实施例中,设备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’的安全虚拟专用网络连接,诸如SSLVPN连接。在又一些实施例中,设备200提供客户端102和服务器106之间的连接和通信的应用防火墙安全、控制和管理。
【0027】在一些实施例中,基于多个执行方法并且基于通过策略引擎195所应用的任一验证和授权策略,应用传送管理系统190提供应用传送技术来传送计算环境到用户的桌面(远程的或者其它的)。使用这些技术,远程用户可以从任意网络连接装置100获取计算环境并且访问服务器所存储的应用和数据文件。在一个实施例中,应用传送系统190可驻留在服务器106上或在其上执行。在另一个实施例中,应用传送系统190可驻留在多个服务器106a-106n上或在其上执行。在一些实施例中,应用传送系统190可在服务器群组38内执行。在一个实施例中,执行应用传送系统190的服务器106也可存储或提供应用和数据文件。在另一个实施例中,一个或多个服务器106的第一组可执行应用传送系统190,并且不同的服务器106n可存储或提供应用和数据文件。在一些实施例中,应用传送系统190中欧体育、应用和数据文件中的每个可驻留或位于不同的服务器上。在又一个实施例中,应用传送系统190的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。
【0028】客户端102可以包括计算环境15,用于执行使用或者处理数据文件的应用。客户端102通过网络104、104’和设备200可以请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以转发来自客户端102的请求到服务器106。例如,客户端102可以不具有本地存储或者本地可访问的应用和数据文件。响应请求,应用传送系统190和/或服务器106可以传送应用和数据文件到客户端102。例如,在一个实施例中,服务器106可以按照应用流来发送应用以在客户端102上的计算环境15中操作。
【0029】在一些实施例中,应用传送系统190包括CitrixSystems,Inc.的CitrixAccessSuiteTM的任何部分,诸如MetaFrame或者CitrixPresentationServerTM和/或Microsoft公司制造的任一的Microsoftsrc=。在一个实施例中,应用传送系统190可以通过远程显示协议或者通过基于远程或者基于服务器计算的其它方式来传送一个或者多个应用到客户端102或者用户。在另一个实施例中,应用传送系统190可以通过应用流来传送一个或者多个应用到客户端或者用户。
【0030】在一个实施例中,应用传送系统190包括策略引擎195,用于控制和管理对应用执行方法和应用的传送的访问、选择。在一些实施例中,策略引擎195确定用户或者客户端102可以访问的一个或者多个应用。在另一个实施例中,策略引擎195确定应用应该如何被传送到用户或者客户端102,例如执行方法。在一些实施例中,应用传送系统190提供多个传送技术,从中来选择应用执行的方法,诸如基于服务器的计算、本地流式传输或者传送应用到客户端120用于本地执行。
【0031】在一个实施例中,客户端102请求应用程序的执行并且包括服务器106的应用传送系统190选择执行应用程序的方法。在一些实施例中,服务器106从客户端102接收证书。在另一个实施例中,服务器106从客户端102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统190列举对于客户端102可用的多个应用程序。应用传送系统190接收请求来执行所列举的应用。应用传送系统190例如响应策略引擎的策略,选择预定数量的方法之一来执行所列举的应用。应用传送系统190可以选择执行应用的方法,使得客户端102接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统190可以选择执行应用的方法,使得本地机器10在检索包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用传送系统190可以选择执行应用的方法,以通过网络104流式传输应用到客户端102。
【0032】客户端102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户端、ActiveX控件、或者Java程序、或者可以在客户端102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户端102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任意瘦客户端或者远程显示协议来显示输出到客户端102,诸如由Florida,derdale的CitrixSystemsInc.制造的独立计算架构(ICA)协议,或者由Washington,Redmond的Microsoft公司制造的远程桌面协议(RDP)。应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,应用包括涉及到VoIP通信的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任何应用,例如用于流式传输视频和/或音频的应用。
【0034】客户端102、服务器106和设备200可以布署为和/或执行在任意类型和形式的计算装置上,诸如能够在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图1C和1D描述用于实现客户端102、服务器106或者设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装置100包括中央处理单元121,以及主存储单元122。如图1C所示,计算装置100可以包括虚拟显示装置124、键盘126和/或诸如鼠标的定点设备127。每个计算装置100也可包括其它可选择的部件,例如一个或多个输入/输出装置130a-130b(总的使用标号130表示),以及与中央处理单元121通信的高速缓存存储器140。
【0037】图1D描述的实施例中,主处理器121通过次级总线,有时称为“背端”总线,直接与高速缓存存储器140通信。在其它实施例中,主处理器121使用系统总线更快的响应时间,并通常通过SRAM、BSRAM、或EDRAM来提供。在图1C所示的实施例中,处理器121通过本地系统总线通信。各种总线可以被用于连接中央处理单元121到任意I/O装置130,包括VESAVL总线、ISA总线、EISA总线、微通道结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线、或者NuBus。对于这样的实施例,其中I/O装置是视频显示器124,处理器121可使用高级图形端口(AGP)与显示器124通信。图1D描述了计算机100的实施例,其中主处理器121通过HyperTransport,RapidI/O或者InfiniBand与I/O装置130b直接通信。图1D也描述了一个实施例,其中本地总线和直接通信是混合的:处理器121使用本地互联总线a通信,而与I/O设备130b直接通信。
【0038】计算装置100可以支持任何适合的安装装置116,例如用于接收诸如3.5英寸、5.25英寸软盘或ZIP盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器、或者适用于安装软件、程序(例如任一客户端代理120或其中一部分)的任意其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘的随机阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户端代理120的任意程序的应用软件程序。可选地,任意安装装置116也可以被用作存储装置128。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如KNOPPIXsrc=,一种用于GNU/Linux的可引导CD,该可引导CD可自为GNU/Linux分发获得。
【0039】此外,计算装置100可以包括通过多个连接来对接到局域网(LAN)、广域网(WAN)或者因特网的网络接口118,该多个连接包括但不限于标准电话线、LAN或WAN链路(如802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或它们的任意或者全部的一些组合。网络接口118可以包含内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合将计算装置100对接到能够通信并执行此处所描述的操作的任一类型网络的任一其它装置。在计算装置100中可提供多个种类的I/O装置1106a-1106n。输入装置包括键盘、鼠标、轨迹板、轨迹球、麦克风、以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机、及染料升华(dye-sublimation)打印机。如图1C所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制诸如键盘126和定点设备127(例如鼠标或者光学笔)的一个或者多个I/O装置。此外,I/O装置也可为计算装置100提供存储器128和/或安装介质116。在另其它实施例中,计算装置100可以提供USB连接用来接收手持USB存储装置,例如由California,LosAlamitos的TwintechIndustryInc.制造的USB闪烁驱动器系列装置。
【0040】在一些实施例中,计算装置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的各种方式和实施例。
【0043】在其它实施例中,计算装置100可以具有与该装置相容的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是palmInc.制造的Treol80、270、1060、600或者650的智能电话。在此实施例中,Treo智能电话在PalmOS操作系统的控制下运行并且包括触针输入装置以及五向导向装置。此外,计算装置100可以是任意工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。
【0044】图2A是示出设备200的一个实施例的框图。图2A中的设备200的架构只是通过示意的方式提供,并不意于要限制本发明。如图2所示的,设备200包括硬件层206和分为用户空间202和内核空间204的软件层。
【0045】硬件层206提供硬件元件,在内核空间204和用户空间202内的程序和服务在该硬件元件上被执行。硬件层206也提供结构和元件,使得内核空间204和用户空间202内的程序和服务对于设备200既在内又向外进行数据通信。如图2所示,硬件层206包括用于执行软件程序和服务的处理单元262、用于存储软件和数据的存储器264、用于在网络上发送和接收数据的网络端口266以及用于执行涉及在网络上被发送和接收的数据的加密套接字协议层处理的功能的加密处理器260。在一些实施例中,中央处理单元262可在单一的处理器中执行加密处理器260的功能。另外,硬件层206可包括用于每个处理单元262和加密处理器260的多个处理器。处理器262可以包括以上结合图1C和1D所述的任意处理器121。在一些实施例中,中央处理单元262可在单一的处理器中执行加密处理器260的功能。另外,硬件层206可包括用于每个处理单元262和加密处理器260的多处理器。例如,在一个实施例中,设备200包括第一处理器262和第二处理器262’。在其它实施例中,处理器262或者262’包括多核处理器。
【0046】虽然设备200的硬件层206通常示出带有加密处理器260,但是处理器260可为执行涉及任何加密协议的功能的处理器,例如加密套接字协议层(SSL)或者传输层安全(TLS)协议。在一些实施例中,处理器260可为通用处理器(GPP),并且在进一步的实施例中,可为具有用于执行任何安全相关协议的处理的可执行指令。
【0047】虽然在图2中设备200的硬件层206示出具有一些元件,但是设备200的硬件部分或部件可包括计算装置的任何类型和形式的元件、硬件或软件,例如此处结合图1C和1D示出和讨论的计算装置100。在一些实施例中,设备200可包括服务器、网关、路由器、交换机、桥接器或其它类型的计算或网络装置,并且具有与此相关的任何硬件和/或软件元件。
【0048】设备200的操作系统分配、管理或另外分离可用的系统存储器到内核空间204和用户空间204。在示例的软件架构200中,操作系统可为任何类型和/或形式的Unix操作系统,虽然本发明并未如此限制。同样的,设备200可运行任何操作系统,例如任何版本的Microsoftsrc=操作系统,不同版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MacOSsrc=,任何嵌入式操作系统,任何网络操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,用于移动计算装置或网络装置的任何操作系统,或者可以在设备200上运行并执行此处所述操作的任何其它操作系统。
【0049】内核空间204被保留用于运行内核230,包括任一设备驱动器、内核扩展或其它内核相关软件。就像本领域技术人员所知的,内核230是操作系统的核心,并提供对设备200的资源和硬件相关元件的访问、控制和管理。根据设备200的实施例,内核空间204也包括与高速缓存管理器232协同工作的多个网络服务或进程,有时也称为集成的高速缓存,其益处此处将进一步详细描述。另外,内核230的实施例将依赖于通过设备200安装、配置或其它使用的操作系统的实施例。
【0050】在一个实施例中,设备200包括一个网络堆栈267,例如基于TCP/IP的堆栈,用于与客户端102和/或服务器106通信。在一个实施例中,使用网络堆栈267与诸如网络104的第一网络以及第二网络104’通信。在一些实施例中,设备200终止第一传输层连接,例如客户端102的TCP连接,并建立到服务器106的第二传输层连接,用于由客户端102使用,例如,在设备200和服务器106处终止第二传输层连接。可通过单一的网络堆栈267建立第一和第二传输层连接。在其它实施例中,设备200可包括多个网络堆栈,例如267或267’,并且可在一个网络堆栈267建立或终止第一传输层连接,在第二网络堆栈267’可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和发送网络包,并且另一个网络堆栈用于在第二网络上接收和发送网络包。在一个实施例中,网络堆栈267包括用于排队一个或多个网络包的缓冲器243,其中网络包由设备200发送。
【0051】如图2所示,内核空间204包括高速缓存管理器232、高速层2-7集成包引擎240、加密引擎234、策略引擎236以及多协议压缩逻辑238。在内核空间204或内核模式而不是用户空间202中运行这些组件或进程232、240、234、236和238提高这些组件中的每个的单独的和结合的性能。内核操作意味着这些组件或进程232、240、234中欧体育、236和238在设备200的操作系统的核地址空间中运行。例如,在内核模式中运行加密引擎234通过移动加密和解密操作到内核来提高加密性能,从而减少在在内核模式中的存储空间或内核线程与在用户模式中的存储空间或线程之间的转换的数量。例如,在内核模式中获得的数据可以不需要传输或拷贝到运行在用户模式的进程或线程,例如从内核级数据结构到用户级数据结构。在另一个方面,也可减少内核模式和用户模式之间的上下文切换的数量。另外,任何组件或进程232、240、234、236和238的同步和其之间的通信在内核空间204中可被更有效地执行。
【0052】在一些实施例中,组件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在用户模式中运行。在一些实施例中,内核级数据结构可被拷贝或传输给第二内核级数据结构,或任何期望的用户级数据结构。
【0053】高速缓存管理器232可包括软件、硬件或软件和硬件的任意组合,以提供对任何类型和形式的内容的高速缓存访问、控制和管理,例如对象或由源服务器106服务的动态产生的对象。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式的数据,例如标记语言,或通过任何协议通信。在一些实施例中,高速缓存管理器232复制存储在其它地方的原始数据或先前被计算、产生或发送的数据,其中相对于读高速缓存存储元件,原始数据可能需要更长的访问时间以便取得、计算或获得。一旦数据被存储在高速缓存存储元件中,将来的使用可通过访问高速缓存的副本而非再取回或再计算原始数据而实现,因而减少了访问时间。在一些实施例中,高速缓存存储元件nat包括设备200的存储器264中的数据对象。在其它实施例中,高速缓存存储元件可包括具有比存储器264更快的存取时间的存储器。在另一个实施例中,高速缓存存储元件可以包括设备200的任何类型和形式的存储元件,诸如硬盘的部分。在一些实施例中,处理单元262可提供被高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储设备或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。
【0054】另外,高速缓存管理器232包括用于执行此处描述的设备200的技术的任一实施例的任何逻辑、功能、规则或操作。例如,高速缓存管理器232包括基于无效时间周期的终止,或者从客户端102或服务器106接收无效命令,无效对象的逻辑或功能。在一些实施例中,高速缓存管理器232可作为在内核空间204中执行的程序、服务、进程或任务来操作,并且在其它实施例中在用户空间202中执行。在一个实施例中,高速缓存管理器232的第一部分在用户空间202内执行,而第二部分在内核空间204内执行。在一些实施例中,高速缓存管理器232可包括任何类型的通用处理器(GPP),或者任何其它类型的集成电路,例如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或者专用集成电路(ASIC)。
【0055】策略引擎236可包括,例如,智能统计引擎或其它可编程应用。在一个实施例中,策略引擎236提供配置机制以允许用户识别、指定、定义或配置高速缓存策略。在一些实施例中,策略引擎236也访问存储器以支持数据结构,例如查找表或哈希(hash)表,以启用用户选择的高速缓存策略决定。在其它实施例中,策略引擎236可包括任何逻辑、规则、功能或操作以决定和提供除了对安全、网络业务、网络访问、压缩或其它任何由设备200执行的功能或操作的访问、控制和管理之外的对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。特定高速缓存策略的其它实施例在此处进一步进行了描述。
【0056】加密引擎234包括用于控制任何安全相关协议处理,例如SSL或TLS,或其相关的任何功能的任何逻辑、商业规则、功能或操作。例如,加密引擎234加密并解密通过设备200通信的网络包,或其任何部分。加密引擎234也可代表客户端102a-102n、服务器106a-106n或设备200来安装或建立SSL或TLS连接。同样的,加密引擎234提供SSL处理的卸载和加速。在一个实施例中,加密引擎234使用隧道协议来提供在客户端102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施例中,加密引擎234与加密处理器260通信。在其它实施例中,加密引擎234包括运行在加密处理器260上的可执行指令。
【0057】多协议压缩引擎238包括用于压缩一个或多个网络包协议(例如被设备200的网络堆栈267使用的任何协议)的任何逻辑、商业规则、功能或操作。在一个实施例中,多协议压缩引擎238双向压缩在客户端102a-102n和服务器106a-106n间任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件email)、文件传输协议(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电子欺骗协议)来压缩任何通信或其任何有效载荷。
【0058】同样的,多协议压缩引擎238通过桌面客户端,例如MicosoftOutlook和非web瘦客户端,诸如由通用企业应用像Oracle、SAP和Siebel启动的任何客户端,甚至移动客户端,例如便携式个人计算机,来加速用户访问应用的执行。在一些实施例中,多协议压缩引擎238通过在内核模式204内部执行并与访问网络堆栈267的包处理引擎240集成,可以压缩TCP/IP协议承载的任何协议,例如任何应用层协议。
【0059】集成高速层2-7的包引擎240,通常也称为包处理引擎,或包引擎,通过网络端口266负责设备200接收和发送的包的内核级处理的管理。集成高速层2-7的包引擎240可包括在处理期间用于排队一个或多个网络包的缓冲器,例如用于网络包的接收或者网络包的发送。另外,集成高速层2-7的包引擎240通过网络端口266与一个或多个网络堆栈267通信以发出和接收网络包。集成高速层2-7的包引擎240与加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238协同工作。更具体地,配置加密引擎234以执行包的SSL处理,配置策略引擎236以执行涉及业务管理的功能,例如请求级内容切换以及请求级高速缓存重定向,并配置多切议压缩逻辑238以执行涉及数据压缩和解压缩的功能。
【0060】集成高速层2-7的包引擎240包括包处理定时器242。在一个实施例中中欧体育,包处理定时器242提供一个或多个时间间隔以触发输入的(即接收的,或者输出的(即发送的))网络包的处理。在一些实施例中,集成高速层2-7的包引擎240响应于定时器242处理网络包。包处理定时器242向包引擎240提供任一类型和形式的信号以通知、触发或发送时间相关的事件、间隔或发生。在许多实施例中,包处理定时器242以毫秒级运行,例如100ms、50ms、或25ms。例如,在一些实施例中,包处理定时器242提供时间间隔或者使由集成高速层2-7的包引擎240以10ms时间间隔处理网络包,而在其它实施例中,以5ms时间间隔,并且在又进一步的实施例中,短到3、2或1ms时间间隔。集成高速层2-7的包引擎240在操作期间可与加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238对接、集成或通信。同样的,响应于包处理定时器242和/或包引擎240,可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩逻辑238的任何逻辑、功能或操作。因此,可在由包处理定时器242提供时间间隔的粒度(例如小于或等于10ms的时间间隔)可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩逻辑238的任何逻辑、功能或操作。例如,在一个实施例中,响应于集成高速层2-7的包引擎240和/或包处理定时器242,高速缓存管理器232可执行任何高速缓存对象的无效。在另一个实施例中,高速缓存对象的终止或无效时间被设定为与包处理定时器242的时间间隔相同的粒度级,例如每10ms。
【0061】与内核空间204形成对比,用户空间202是操作系统的存储区域或部分,被用户模式应用或在用户模式中以其它方式运行的程序所使用。用户模式应用不能直接访问内核空间204并且为了访问内核服务而使用服务调用。如图2所示,设备200的用户空间202包括图形用户界面(GUI)210、命令行接口(CLI)212、壳服服务(shellservice)214、健康监控程序216以及守护(daemon)服务218。GUI210和CLI212提供一种方法,通过该方法系统管理员或其它用户可与设备200的操作相互作用并控制该设备200的操作,例如通过设备200的操作系统,并且或者是用户空间202或者内核空间204。GUI210可为任何类型和形式的图形用户界面,并且可通过文本、图形或其它任一类型的程序或应用来呈现,例如浏览器。CLI212可为任何类型和形式的命令行或基于文本的接口,例如通过操作系统提供的命令行。例如,CLI212可包括壳(shell),该壳是使得用户能够与操作系统交互的工具。在一些实施例中,可通过bash、csh、tcsh或者ksh类型的壳提供CLI212。壳服务214包括程序、服务、任务、进程或可执行指令以支持由用户通过GUI210和/或CLI212的与设备200或者操作系统的交互作用。
【0062】使用健康监控程序216来监控、检查、报告并确保网络系统正常地运行以及用户通过网络接收所请求的内容。健康监控程序216包括一个或多个程序、服务、任务、进程或可执行指令,为监控设备200的任何行为而提供逻辑、规则、功能或操作。在一些实施例中,健康监控程序216拦截并检查通过设备200传递的任何网络业务。在其它实施例中,健康监控程序216通过任何合适的方法和/或机制与一个或多个下述设备对接:加密引擎234、高速缓存管理器232、策略引擎236、多协议压缩逻辑238、包引擎240、守护服务218以及壳服务214。同样的,健康监控程序216可调用任何应用编程接口(API)以确定设备200的任何部分的状态、情况或健康。例如,健康监控程序216可基于周期性地查验或发送状态查询以检查程序、进程、服务或任务是否被激活并当前正在运行。在另一个示例中,健康监控程序216可检查由任何程序、进程、服务或任务提供的任何状态、错误或历史日志以确定设备200任何部分的任何条件、情况或错误。
【0063】守护服务218是连续地或在后台中运行的程序,并且处理由设备200接收的周期性服务请求。在一些实施例中,守护服务向其它程序或进程转发请求,例如向合适的另一个守护服务218。如本领域技术人员所公知,守护服务218可无人监护的运行,以执行连续的或周期性的系统范围功能,例如网络控制,或者执行任何期望的任务。在一些实施例中,一个或多个守护服务218运行在用户空间202中,而在其它实施例中,一个或多个守护服务218运行在内核空间。
【0064】现在参见图2B,该框图描述设备200的另一个实施例。总的来说,设备200提供以下服务、功能性或者操作的一个或者多个:用于一个或者多个客户端102和一个或者多个服务器106之间的通信的SSL-VPN连接性280、转换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一个实施例中,设备200包括由Florida,Ft.Lauderdale的CitrixSystemsInc.制造的任意网络装置,称为CitrixNetScaler装置。服务器106的每一个可以提供一个或者多个网络相关服务270a-270n(称为服务270)。例如,服务器106可以提供http服务270。设备200包括一个或者多个虚拟服务器或者虚拟互联网协议服务器,称为vServer、VIP服务器或者仅是VIP275a-275n(此处也称为vServer275)。vServer275根据设备200的配置和操作来接收、拦截或者以其它方式处理客户端102和服务器106之间的通信。
【0065】vServer275可以包括软件、硬件或者软件和硬件的任意组合。vServer275可包括在设备200中的用户模式202、内核模式204或者其任意组合中运行的任意类型和形式的程序、服务、任务、进程或者可执行指令。vServer275包括任意逻辑、功能、规则或者操作,以执行此处所述技术的任意实施例,诸如SSLVPN280、转换/负载平衡284、域名服务解析286、加速288和应用防火墙290。在一些实施例中,vServer275建立到服务器106的服务270的连接。服务275可以包括能够连接到设备200、客户端102或者vServer275并与之通信的任意程序、应用、进程、任务或者可执行指令集。例如,服务270可以包括web服务器、http服务器、ftp、电子邮件或者数据库服务器。在一些实施例中,服务270是守护进程或者网络驱动器,用于监听、接收和/或发送用于应用的通信,诸如电子邮件、数据库或者企业应用。在一些实施例中,服务270可以在特定的IP地址、或者IP地址和端口上通信。
【0066】在一些实施例中,vServer275应用策略引擎236的一个或者多个策略到客户端102和服务器106之间的网络通信。在一个实施例中,该策略与vServer275相关。在另一个实施例中,该策略基于用户或者用户组。在又一个实施例中,策略为通用的并且应用到一个或者多个vServer275a-275n和通过设备100通信的任意用户或者用户组。在一些实施例中,策略引擎的策略具有基于通信的任意内容应用该策略的条件,通信的内容诸如互联网协议地址、端口、协议类型、包中的首部或者域、或者通信的上下文,诸如用户、用户组、vServer275、传输层连接、和/或客户端102或者服务器106的标识或者属性。
【0067】在其它实施例中,设备200和策略引擎236通信或者对接,以确定远程用户或者远程客户端102访问计算环境15、应用、和/或来自服务器106的数据文件的验证和/或授权。在另一个实施例中,设备200和策略引擎236通信或者对接,以确定远程用户或者远程客户端102的验证和/或授权来使得应用传送系统190传送一个或者多个计算环境15、应用、和/或数据文件。在又一个实施例中,设备200基于对远程用户或者远程客户端102的策略引擎236的验证和/或授权来建立VPN或者SSLVPN连接。在一个实施例中,设备200基于策略引擎236的策略来控制网络业务和通信会线、应用或者数据文件的访问。
【0068】在一些实施例中,vServer275与客户端102经客户端代理120建立传输层连接,诸如TCP或者UDP连接。在一个实施例中,vServer275监听和接收来自客户端102的通信。在其它实施例中,vServer275与服务器106建立传输层连接,诸如TCP或者UDP连接。在一个实施例中,vServer275建立到运行在服务器106上的服务器270的互联网协议地址和端口的传输层连接。在另一个实施例中,vServer275将到客户端102的第一传输层连接与到服务器106的第二传输层连接相关联。在一些实施例中,vServer275建立到服务器106的传输层连接池并且经由池化的传输层连接多路复用客户端请求。
【0069】在一些实施例中,设备200提供客户端102和服务器106之间的SSLVPN连接280。例如,第一网络104上的客户端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的端到端安全传输层连接。
【0070】在一个实施例中,设备200寄载虚拟专用网络104上的客户端102的内部网内部网协议或者intranetIP282地址。客户端102具有本地网络识别符,诸如互联网协议(IP)地址和/或第一网络104上的主机名称。当经设备200连接到第二网络104’,对于第二网络104’上的客户端102,设备200建立、分配或者以其它方式提供IntranetIP,其是网络识别符,诸如IP地址和/或主机名称。设备200在第二或者专用网络104’上监听和接收使用客户端建立的IntranetIP282的指向客户端102的任意通信。在一个实施例中,设备200用作或者代表第二专用网络104上的客户端102。例如,在另一个实施例中,vServer275监听和响应到客户端102的IntranetIP282的通信。在一些实施例中,如果第二网络104’上的计算装置100发送请求,设备200如同客户端102一样来处理该请求。例如,设备200可以响应对客户端IntranetIP282的查验。在另一个实施例中,设备可以与请求和客户端IntranetIP282连接的第二网络104上的计算装置100建立连接,诸如TCP或者UDP连接。
【0071】在一些实施例中,设备200提供一个或者多个以下加速技术288以在客户端102和服务器106之间通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;和6)高速缓存。在一个实施例中,设备200通过开启与每一服务器106的一个或者多个传输层连接并且维持这些连接以允许由客户端经因特网的重复数据访问,来为服务器106缓解由重复开启和关闭到客户端102的传输层连接所带来的许多处理负载。该技术在此处被称为“连接池”。
【0072】在一些实施例中,为了无缝拼接从客户端102经池化的传输层连接到服务器106的通信,设备200通过在传输层协议级修改序列号和确认号来翻译或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议交互作用。例如,在入站包(即,从客户端102接收的包)的例子中,包的源网络地址被改变到设备200的输出端口的地址,并且目的网络地址被改变到指定的服务器的地址。在出站包(即,从服务器106接收的包)的例子中,源网络地址从服务器106的地址被改变为设备200的输出端口的地址,并且目的地址从设备200的地址被改变到请求客户端102的地址。包的序列号和确认号也被翻译为到客户端102的设备200的传输层连接上的客户端102所期待的序列号和确认。在一些实施例中,传输层协议的包校验和被重新计算以计及这些翻译。
【0073】在另一个实施例中,设备200提供转换或者负载平衡功能性284用于客户端102和服务器106之间的通信。在一些实施例中,基于层4或者应用层请求数据,设备200分发业务并且将客户端请求指向服务器106。在一个实施例中,尽管网络层或者网络包的层2识别目的服务器106,但设备200确定服务器106利用传输层包的有效载荷所承载的应用信息和数据来分发网络包。在一个实施例中,设备200的健康监控程序216监控服务器的健康来确定分发客户端请求用于哪个服务器106。在一些实施例中,如果设备200探测到服务器106不可用或者具有超过预定阈值的负载,设备200可以将客户端请求指向或者分发到另一个服务器106。
【0074】在一些实施例中,设备200用作域名服务(DNS)解析器或者以其它方式提供来自客户端102的DNS请求的解析。在一些实施例中,设备拦截由客户端102发送的DNS请求。在一个实施例中,设备200以设备200所寄载的或其IP地址来响应客户端的DNS请求。在此实施例中,客户端102发送用于域名的网络通信到设备200。在另一个实施例中,设备200以第二设备200’所寄载的或其IP地址来响应客户端的DNS请求。在一些实施例中,设备200使用由设备200确定的服务器106的IP地址来响应客户端的DNS请求。
【0076】在又一个实施例中,设备200提供用于客户端102和服务器106之间通信的应用防火墙功能性290。在一个实施例中,策略引擎236提供用于探测和阻断非法请求的规则。在一些实施例中,应用防火墙290防御拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎236包括一个或者多个应用防火墙或者安全控制策略,用于提供保护各种类别和类型的基于web或者因特网的漏洞,诸如以下一个或者多个:1)缓冲溢出,2)CGI-BIN参数操纵,3)表格/隐藏域操纵,4)强迫浏览,5)cookie或者会线)中断的访问控制列表(ACL)或者弱的口令,7)跨站脚本攻击(XSS),8)命令注入,9)SQL注入,10)错误触发敏感信息漏,11)密码学的不安全使用,12)服务器误配置,13)后门和调试选项,14)web站点毁损,15)平台或者操作系统漏洞,和16)零天攻击。在实施例中,应用防火墙290为以下一个或者多个以检查或者分析网络通信的形式来提供HTML格式域保护:1)返回所需要的域,2)不允许增加的域,3)只读和隐藏域施行,4)下拉列表和单选按钮域一致,5)表域最大长度施行。在一些实施例中,应用防火墙290确保没有修改cookie。在其它实施例中,应用防火墙290通过执行合法的URL来防御强迫浏览。
【0076】在又另一些实施例中,应用防火墙290保护包括在网络通信中的任意机密信息。应用防火墙290可以根据引擎236的规则或者策略来检查或者分析任意网络通信,以识别网络包的任一域中的任一机密信息。在一些实施例中,应用防火墙290识别网络通信中的信用卡号、口令、社会安全号码、名称、患者号码、接触信息和年龄的一个或者多个的出现。网络通信的编码部分可以包括这些出现或者机密信息。基于这些出现,在一个实施例中,应用防火墙290可以采取作用于网络通信上的策略,诸如阻止网络通信的发送。在另一个实施例中,应用防火墙290可以重写、移动或者以其它方式掩蔽该所识别的出现或者机密信息。
【0077】现在看图3,描述客户端代理120的实施例。客户端102包括客户端代理120,用于经网络104与设备200和/或服务器106来建立和交换通信。总的来说,客户端102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303的操作系统,以及带有一个或多个层310a-310b的网络堆栈310。客户端102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈310与网络104通信。诸如web浏览器的应用之一也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户端代理120,或其中任意部分。客户端代理120包括拦截机制或者350,用于拦截经由网络堆栈310来自一个或者多个应用的网络通信。
【0078】客户端102的网络堆栈310可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈310包括用于网络协议组的软件实现。网络堆栈310可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任何网络层。同样的,网络堆栈310可包括任意类型和形式的协议,这些协议用于OSI模型的任何以下层:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会线)应用层。在一个实施例中,网络堆栈310可包括在互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在Ethernet协议上承载TCP/IP协议,Ethernet协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802.3覆盖的那些协议。在一些实施例中,网络堆栈310包括任何类型和形式的无线和/或移动互联网协议。
【0079】考虑基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用因特网文件系统(CIFS)协议(文件传输)、独立计算框架(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在另一个实施例中,网络堆栈310包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP(TCP-SACK),带有大窗口的TCP(TCP-LW),拥塞预测协议,例如TCP-Vegas协议,以及TCP电子欺骗协议。在其它实施例中,任何类型和形式的用户数据报协议(UDP),例如IP上UDP,可被网络堆栈310使用,诸如用于语音通信或实时数据通信。
【0080】另外,网络堆栈310可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络驱动器可被包括作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分。在一些实施例中,网络堆栈310的任何网络驱动器可被定制、修改或调整以提供网络堆栈310的定制或修改部分,用来支持此处描述的任何技术。在其它实施例中,设计并构建加速程序120以与网络堆栈310协同操作或工作,上述网络堆栈310由客户端102的操作系统安装或以其它方式提供。
【0081】网络堆栈310包括任何类型和形式的接口,用于接收、获得、提供或以其它方式访问涉及客户端102的网络通信的任何信息和数据。在一个实施例中,网络堆栈310的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制、事件或回调机制、或任何类型的接口技术。网络堆栈310通过接口可接收或提供与网络堆栈310的功能或操作相关的任何类型和形式的数据结构,例如对象。例如,数据结构可包括涉及到网络包的信息和数据,或一个或多个网络包。在一些实施例中,数据结构包括在网络堆栈310的协议层处理的网络包的一部分,例如传输层的网络包。在一些实施例中,数据结构325包括内核级数据结构,而在其它实施例中,数据结构325包括用户模式数据结构。内核级数据结构可包括在内核模式302中操作的网络堆栈310的部分获得的或涉及的数据结构,或者运行在内核模式302中的网络驱动器或其它软件,或者通过在操作系统的内核模式中运行或操作的服务、进程、任务、线程或其它可执行指令获得或接收的任何数据结构。
【0082】此外,网络堆栈310的一些部分可在内核模式302中执行或操作,例如,数据链路或网络层,而其它部分在用户模式303中执行或操作,例如网络堆栈310的应用层。例如,网络堆栈的第一部分310a可为应用提供对网络堆栈310的用户模式的访问,而网络堆栈310的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈310的一个或多个更上层,例如层5-7的任意层。在其它实施例中,网络堆栈310的第二部分310b包括一个或多个较低的层,例如层1-4的任意层。网络堆栈310的每个第一部分310a和第二部分310b可包括网络堆栈310的任何部分,在任意一个或多个网络层,在用户模式203、内核模式202,或其组合,或在网络层的任何部分或者指向网络层的接口点,或用户模式303和内核模式302的任何部分或指向用户模式303和内核模式302的接口点。
【0083】350可以包括软件、硬件、或者软件和硬件的任意组合。在一个实施例中,350在网络堆栈310的任意点拦截网络通信,并且重定向或者发送网络通信到由350或者客户端代理120所期望的、管理的或者控制的目的地。例如,350可以拦截第一网络的网络堆栈310的网络通信并且发送该网络通信到设备200,用于在第二网络104上发送。在一些实施例中,350包括含有诸如被构建和设计来与网络堆栈310对接并一同工作的网络驱动器的驱动器的任意类型的350。在一些实施例中,客户端代理120和/或350操作在网络堆栈310的一个或者多个层,诸如在传输层。在一个实施例中,350包括过滤器驱动器、钩子机制、或者对接到网络堆栈的传输层的任意形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,350对接到诸如传输层的第一协议层和诸如传输协议层之上的任意层的另一个协议层,例如,应用协议层。在一个实施例中,350可以包括遵守网络驱动器接口规范(NDIS)的驱动器,或者NDIS驱动器。在另一个实施例中,350可以包括微型过滤器或者迷你端口驱动器。在一个实施例中,350或其部分在内核模式202中操作。在另一个实施例中,350或其部分在用户模式203中操作。在一些实施例中,350的一部分在内核模式202中操作,而350的另一部分在用户模式203中操作。在其它实施例中,客户端代理120在用户模式203中操作,但通过350对接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构225。在其它实施例中,350为用户模式应用或者程序,诸如应用。
【0084】在一个实施例中,350拦截任意的传输层连接请求。在这些实施例中,350执行传输层应用编程接口(API)调用以设置目的信息,诸如到期望位置的目的IP地址和/或端口用于定位。在此方式中,350拦截并且重定向传输层连接到由350或者客户端代理120控制或者管理的IP地址和端口。在一个实施例中,350设置用于到客户端102的本地IP地址和端口的连接的目的信息,其中客户端代理120正在监听该客户端102的本地IP地址和端口。例如,客户端代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。在一些实施例中,客户端代理120随后将重定向的传输层通信传送到设备200。
【0085】在一些实施例中,350拦截域名服务(DNS)请求。在一个实施例中,客户端代理120和/或350解析DNS请求。在另一个实施例中,发送所拦截的DNS请求到设备200用于DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应通信到客户端代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器106来解析DNS请求。
【0086】在又一个实施例中,客户端代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈310的网络层操作的350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈210的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传送到第二代理120’。
【0087】客户端代理120和/或350可以以对网络堆栈310的任意其它协议层透明的方式在协议层操作或与之对接。例如,在一个实施例中,350可以以对诸如网络层的传输层之下的任意协议层和诸如会话、表示或应用层协议的传输层之上的任意协议层透明的方式在网络堆栈310的传输层操作或与之对接。这允许网络堆栈310的其它协议层如所期望的进行操作并无需修改以使用350。同样的,客户端代理120和/或350可以与传输层对接以安全、优化、加速、路由或者负载平衡通过由传输层承载的任一协议所提供的任一通信,诸如TCP/IP上的任一应用层协议。
【0088】此。