示例的软件架构200中,操作系统可为任何类型和/或形式的Unix操作 系统,虽然本发明并未如此限制。同样的,设备200可运行任何操作系统,例如任何版本的 Microsoft?Windows操作系统,不同版本的Unix和Linux操作系统,用于Macintosh计算 机的任何版本的MacOS?,任何嵌入式操作系统,任何网络操作系统,任何实时操作系统, 任何开源操作系统,任何专有操作系统,用于移动计算装置或网络装置的任何操作系统,或 者可以在设备200上运行并执行此处所述操作的任何其它操作系统。
[0057] 内核空间204被保留用于运行内核230,包括任一设备驱动器、内核扩展或其它内 核相关软件。就像本领域技术人员所知的,内核230是操作系统的核心,并提供对应用104 硬件相关元件和资源的访问、控制和管理。根据设备200的实施例,内核空间204也包括与 高速缓存管理器232协同工作的多个网络服务或进程。有时也称为集成的高速缓存,其益 处此处将进一步详细描述。另外,内核230的实施例将依赖于通过设备200安装、配置或使 用的操作系统的实施例。
[0058] 在一个实施例中,设备200包括一个网络堆栈267,例如基于TCP/IP的堆栈,用于 与客户端102和/或服务器106通信。在一个实施例中,使用网络堆栈267与诸如网络108 的第一网络以及第二网络110通信。在一些实施例中,设备200终止第一传输层连接,例如 客户端102的TCP连接,并建立到服务器106的第二传输层连接,用于由客户端102使用,例 如,在设备200和服务器106处终止第二传输层连接。可通过单一的网络堆栈267建立第 一和第二传输层连接。在其它实施例中,设备200可包括多个网络堆栈,例如267或267', 并且可在一个网络堆栈267建立或终止第一传输层连接,在第二网络堆栈267'上建立或者 终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和发送网络包,并且另 一个网络堆栈用于在第二网络上接收和发送网络包。在一个实施例中,网络堆栈267包括 用于排队一个或多个网络包的缓冲器243,其中网络包由设备200发送。
[0059] 如图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中可被更有效地 执行。
[0060] 在一些实施例中,组件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 在用户模式中运行。在一些实施例中,内核级数据结构可被拷贝或传输给第二内核级数据 结构,或任何期望的用户级数据结构。
[0061] 高速缓存管理器232可包括软件、硬件或软件和硬件的任意组合,以提供对任何 类型和形式的内容的高速缓存访问、控制和管理,例如对象或由源服务器106服务的动态 产生的对象。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式的数 据,例如标记语言,或通过任何协议通信。在一些实施例中,高速缓存管理器232复制存储 在其它地方的原始数据或先前被计算、产生或发送的数据,其中相对于读高速缓存存储元 件,原始数据可能需要更长的访问时间以便取得、计算或获得。一旦数据被存储在高速缓 存存储元件中,将来的使用可通过访问高速缓存的副本而非再取回或再计算原始数据而实 现,因而减少了访问时间。在一些实施例中,高速缓存存储元件nat包括设备200的存储器 264中的数据对象。在其它实施例中,高速缓存存储元件可包括具有比存储器264更快的存 取时间的存储器。在另一个实施例中,高速缓存存储元件可以包括设备200的任何类型和 形式的存储元件,诸如硬盘的部分。在一些实施例中,处理单元262可提供被高速缓存管理 器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存 储设备或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。
[0062] 另外,高速缓存管理器232包括用于执行此处描述的设备200的技术的任一实施 例的任何逻辑、功能、规则或操作。例如,高速缓存管理器232包括基于无效时间周期的终 止,或者从客户端102或服务器106接收无效命令,无效对象的逻辑或功能。在一些实施例 中,高速缓存管理器232可作为在内核空间204中执行的程序、服务、进程或任务来操作,并 且在其它实施例中在用户空间202中执行。在一个实施例中,高速缓存管理器232的第一 部分在用户空间202内执行,而第二部分在内核空间204内执行。在一些实施例中,高速缓 存管理器232可包括任何类型的通用处理器(GPP),或者任何其它类型的集成电路,例如现 场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或者专用集成电路(ASIC)。
[0063] 策略引擎236可包括,例如,智能统计引擎或其它可编程应用。在一个实施例中, 策略引擎236提供配置机制以允许用户识别、指定、定义或配置高速缓存策略。在一些实施 例中,策略引擎236也访问存储器以支持数据结构,例如查找表或哈希(hash)表,以启用 用户选择的高速缓存策略决定。在其它实施例中,策略引擎236可包括任何逻辑、规则、功 能或操作以决定和提供除了对安全、网络业务、网络访问、压缩或其它任何由设备200执行 的功能或操作的访问、控制和管理之外的对设备200所高速缓存的对象、数据、或内容的访 问、控制和管理。特定高速缓存策略的其它实施例在此处进一步进行了描述。
[0064] 加密引擎234包括用于控制任何安全相关协议处理,例如SSL或TLS,或其相关的 任何功能的任何逻辑、商业规则、功能或操作。例如,加密引擎234加密并解密通过设备200 通信的网络包,或其任何部分。加密引擎234也可代表客户端102a-102n、服务器106a-106n 或设备200来安装或建立SSL或TLS连接。同样的,加密引擎234提供SSL处理的卸载和 加速。在一个实施例中,加密引擎234使用隧道协议来提供在客户端102a-102n和服务器 106a-106n间的虚拟专用网络。在一些实施例中,加密引擎234与加密处理器260通信。在 其它实施例中,加密引擎234包括运行在加密处理器260上的可执行指令。
[0065] 多协议压缩引擎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电子欺骗协议)来压缩任何通信或其任何有效载荷。
[0066] 同样的,多协议压缩引擎238通过桌面客户端,例如MicosoftOutlook和非web 瘦客户端,诸如由通用企业应用像〇racle、SAP和Siebel启动的任何客户端,甚至移动客户 端,例如便携式个人计算机,来加速用户访问应用的执行。在一些实施例中,多协议压缩引 擎238通过在内核模式204内部执行并与访问网络堆栈267的包处理引擎240集成,可以 压缩TCP/IP协议承载的任何协议,例如任何应用层协议。
[0067] 集成高速层2-7的包引擎240,通常也称为包处理引擎,或包引擎,通过网络端口 266负责设备200接收和发送的包的内核级处理的管理。集成高速层2-7的包引擎240可 包括在处理期间用于排队一个或多个网络包的缓冲器,例如用于网络包的接收或者网络包 的发送。另外,集成高速层2-7的包引擎240通过网络端口 266与一个或多个网络堆栈267 通信以发出和接收网络包。集成高速层2-7的包引擎240与加密引擎234、高速缓存管理器 232、策略引擎236和多协议压缩逻辑238协同工作。更具体地,配置加密引擎234以执行 包的SSL处理,配置策略引擎236以执行涉及业务管理的功能,例如请求级内容切换以及请 求级高速缓存重定向,并配置多协议压缩逻辑238以执行涉及数据压缩和解压缩的功能。
[0068] 集成高速层2-7的包引擎240包括包处理定时器242。在一个实施例中,包处理 定时器242提供一个或多个时间间隔以触发输入的(即接收的,或者输出的(即发送的)) 网络包的处理。在一些实施例中,集成高速层2-7的包引擎240响应定时器242处理网络 包。包处理定时器242向包引擎240提供任一类型和形式的信号以通知、触发或传送时间 相关的事件、间隔或发生。在许多实施例中,包处理定时器242以毫秒级运行,例如100ms、 50ms、或25ms。例如,在一些实施例中,包处理定时器242提供时间间隔或者使由集成高速 层2-7的包引擎240以10ms时间间隔处理网络包,而在其它实施例中,以5ms时间间隔,并 且在又进一步的实施例中,短到3、2或lms时间间隔。集成高速层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〇
[0069] 与内核空间204形成对比,用户空间202是操作系统的存储区域或部分,被用户模 式应用或在用户模式中以其它方式运行的程序所使用。用户模式应用不能直接访问内核空 间204并且为了访问内核服务而使用服务调用。如图2所示,设备200的用户空间202包 括图形用户界面(⑶1)210、命令行接口(CLI)212、壳服务(shellserVice)214、健康监控 程序216以及守护(daemon)服务218。⑶I210和CLI212提供一种方法,通过该方法系 统管理员或其它用户可与设备200的操作相互作用并控制该设备200的操作,例如通过设 备200的操作系统,并且或者是用户空间202或者内核空间204。⑶I210可为任何类型和 形式的图形用户界面,并且可通过文本、图形或其它任一类型的程序或应用来呈现,例如浏 览器。CLI212可为任何类型和形式的命令行或基于文本的接口,例如通过操作系统提供 的命令行。例如,CLI212可包括壳(shell),该壳是使得用户能够与操作系统交互的工具。 在一些实施例中,可通过bash、csh、tcsh或者ksh类型的壳提供CLI212。壳服务214包 括程序、服务、任务、进程或可执行指令以支持由用户通过GUI210和/或CLI212与设备 200或者操作系统的交互作用。
[0070] 使用健康监控程序216来监控、检查、报告并确保网络系统正常地运行以及用户 通过网络接收所请求的内容。健康监控程序216包括一个或多个程序、服务、任务、进程或 可执行指令,为监控设备200的任何行为而提供逻辑、规则、功能或操作。在一些实施例中, 健康监控程序216拦截并检查通过设备200传递的任何网络业务。在其它实施例中,健康 监控程序216通过任何合适的方法和/或机制与一个或多个下述设备对接:加密引擎234、 高速缓存管理器232、策略引擎236、多协议压缩逻辑238、包引擎240、守护服务218以及壳 服务214。同样的,健康监控程序216可调用任何应用编程接口(API)以确定设备200的任 何部分的状态、情况或健康。例如,健康监控程序216可基于周期性地查验或发送状态查询 以检查程序、进程、服务或任务是否被激活并当前正在运行。在另一个示例中,健康监控程 序216可检查由任何程序、进程、服务或任务提供的任何状态、错误或历史日志以确定设备 200任何部分的任何条件、情况或错误。
[0071] 守护服务218是连续地或在后台中运行的程序,并且处理由设备200接收的周期 性服务请求。在一些实施例中,守护服务向其它程序或进程转发请求,例如向合适的另一个 守护服务218。如本领域技术人员所公知,守护服务218可无人监护的运行,以执行连续的 或周期性的系统范围功能,例如网络控制,或者执行任何期望的任务。在一些实施例中,一 个或多个守护服务218运行在用户空间202中,而在其它实施例中,一个或多个守护服务 218运行在内核空间。
[0072] 现在参见图2B,该框图描述设备200的另一个实施例。总的来说,设备200提供 以下服务、功能性或者操作的一个或者多个:用于一个或者多个客户端102和一个或者多 个服务器106之间的通信的SSLVPN连接280、转换/负载平衡284、域名服务解析286、加 速288和应用防火墙290。在一个实施例中,设备200包括由Florida,Ft.Lauderdale的 CitrixSystemsInc.制造的任意网络装置,称为CitrixNetScaler装置。服务器106的 每一个可以提供一个或者多个网络相关服务270a-270n(称为服务270)。例如,服务器106 可以提供http服务270。设备200包括一个或者多个虚拟服务器或者虚拟互联网协议服务 器,称为vServer、VIP服务器或者仅是VIP275a_275n(此处也称为vServer275)ovServer 275根据设备200的配置和操作来接收、拦截或者以其它方式处理客户端102和服务器106 之间的通信。
[0073] vServer275可以包括软件、硬件或者软件和硬件的任意组合。vServer275可包 括在设备200中的用户模式202、内核模式204或者其任意组合中运行的任意类型和形式的 程序、服务、任务、进程或者可执行指令。vServer275包括任意逻辑、功能、规则或者操作, 以执行此处所述技术的任意实施例,诸如SSLVPN280、转换/负载平衡284、域名服务解析 286、加速288和应用防火墙290。在一些实施例中,vServer275建立到服务器106的服 务270的连接。服务275可以包括能够连接到设备200、