CN102948131A - 用于经由wan设备分离代理ssl的系统和方法 - Google Patents
用于经由wan设备分离代理ssl的系统和方法 Download PDFInfo
- Publication number
- CN102948131A CN102948131A CN2011800304938A CN201180030493A CN102948131A CN 102948131 A CN102948131 A CN 102948131A CN 2011800304938 A CN2011800304938 A CN 2011800304938A CN 201180030493 A CN201180030493 A CN 201180030493A CN 102948131 A CN102948131 A CN 102948131A
- Authority
- CN
- China
- Prior art keywords
- middle device
- ssl
- server
- network
- equipment
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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/0464—Network 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 using hop-by-hop encryption, i.e. wherein an intermediate entity decrypts the information and re-encrypts it before forwarding it
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/166—Implementing security features at a particular protocol layer at the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及用于跨越在客户机和服务器之间部署的中间装置分离代理安全套接字层(SSL)通信的系统和方法。该方法包括由服务器侧中间装置与服务器建立SSL会话。客户机侧中间装置可以使用从服务器侧中间装置接收的SSL配置信息与客户机建立第二SSL会话。这两个中间装置可以经由第三SSL会话进行通信。服务器侧中间装置可以使用第一SSL会话的会话密钥对从服务器接收的数据进行解密。服务器侧中间装置可以经由第三SSL会话向客户机侧中间装置传输使用第三SSL会话的会话密钥加密的数据。客户机侧中间装置可以使用第三SSL会话的会话密钥对该加密的数据对进行解密。客户机侧中间装置可以向客户机传输使用第二SSL会话的会话密钥加密的数据。
Description
相关申请
本申请要求2010年4月21日提交的、名称为“SYSTEMS ANDMETHODS FOR SPLIT PROXYING OF SSL VIA WAN APPLIANCES”的美国专利申请No.12/764633的优先权,通过引用将该美国专利申请全部包含于此。
技术领域
本申请总的涉及数据通信网络。本申请尤其涉及用于经由广域网(wan)设备对SSL进行分离代理的系统和方法。
背景技术
可以通过跨越一个或多个网络的一个或多个中间装置对在诸如客户机和服务器的两个网络端点之间的通信进行中转。这些中间装置的示例包括网关、路由器、交换机和其他网络设备。可以通过安全连接,例如SSL会话连接,来提供客户机和服务器之间的端到端通信。客户机和服务器之间的中间装置可便于SSL会话连接的建立,以及例如经由虚拟专用网(VPN)为客户机或服务器提供屏蔽保护。在一些情况下,在两个端点之间的多个中间装置可跨越一个或多个网络提供数据加速和其他服务。每个中间装置还可以充当服务器或客户机的代理,代表该服务器或客户机中转或处理数据。
发明内容
本申请涉及用于跨越客户机和服务器之间部署的多个中间装置或广域网(WAN)设备分离代理SSL通信的方法和系统。中间装置可以与服务器建立安全连接,例如SSL连接。另一个中间装置可以与客户机建立安全连接,例如SSL连接。这两个中间装置可以用这两个中间装置之间的又一个安全连接来桥接该客户机侧和服务器侧的连接。可以使用一个或多个加密密钥来保证这三个连接安全。当从服务器向客户机传输数据时,本系统可以给每个安全连接分配密钥并且隔离每个密钥在所分配的安全连接中的使用,而不是跨越中间装置共享和/或传递加密密钥信息。相应地,使用对应的加密密钥来加密经由每个安全连接发送的数据,并且可以在该安全连接的接收端使用相同的加密密钥来对所述数据进行解密(例如从服务器发送的且由中间装置A接收的数据)。在经由又一个安全连接重新传输之前,可以使用又一个加密密钥来对所接收的数据进行加密并且相应地在接收端使用后一个密钥来对所述数据进行解密(例如,从中间装置A发送的且在又一个中间装置B处接收的数据)。因此,可以使用本文所述的方法和系统经由代理(即中间装置)在两个端点(例如,客户机和/或服务器)之间实现多个安全连接。相应地,每个连接可以是安全的并且是隔离的,而没有沿该数据传输路径跨越代理不当地暴露对应的加密密钥。
在一个方面,本发明涉及用于跨越客户机和服务器之间部署的中间装置分离代理安全套接字层(SSL)通信的方法。该方法包括由与服务器通信的第一中间装置与服务器建立第一SSL会话。与一个或多个客户机通信的第二中间装置可以使用从第一中间装置接收的SSL配置信息与客户机建立第二SSL会话。第二中间装置和第一中间装置可以经由第三SSL会话进行通信。第一中间装置可以使用第一SSL会话的第一会话密钥对从所述服务器接收的加密的数据进行解密。第一中间装置可以经由第三SSL会话向第二中间装置传输使用第三SSL会话的第三会话密钥加密的所述数据。第二中间装置可以使用该第三会话密钥对经由第三SSL会话加密的所述数据进行解密。第二中间装置可以向所述客户机传输使用第二SSL会话的第二会话密钥加密的所述数据。
在一些实施例中,第二中间装置向第一中间装置传输来自客户机的与服务器建立传输层连接的请求。第一中间装置可以修改该请求以指示第二中间装置执行安全套接字层(SSL)加速。第一中间装置可以向第二中间装置传输识别用于客户机侧SSL代理的SSL配置的消息。第二中间装置可以使用从第一中间装置接收的该SSL配置向客户机传输服务器问候、服务器证书和服务器问候结束消息。第一中间装置可以向第二中间装置传输执行分离SSL代理的请求。
在一些实施例中,第二中间装置向第一中间装置传输对加密操作的请求。第一中间装置可以代表第二中间装置执行所请求的加密操作,并且向第二中间装置传送对所述请求的响应。第一中间装置可以使用在第一中间装置上存储的压缩历史对所接收的数据进行压缩。第二中间装置可以使用在第二中间装置上存储的所述压缩历史对所接收的数据进行解压缩。第一中间装置和第二中间装置可以从由第一中间装置和第二中间装置中的每一个维护的预先建立的SSL会话池识别第三SSL会话。
在又一个方面,本发明涉及用于跨越客户机和服务器之间部署的中间装置分离代理安全套接字层(SSL)通信的系统。该系统可以包括用于由与服务器通信的第一中间装置与服务器建立第一安全套接字层(SSL)会话的装置。该系统可以包括用于由与一个或多个客户机通信的第二中间装置使用从第一中间装置接收的SSL配置信息与客户机建立第二安全套接字层(SSL)会话的装置。第二中间装置和第一中间装置可以经由第三SSL会话进行通信。该系统可以包括用于由第一中间装置使用第一SSL会话的第一会话密钥对从所述服务器接收的加密的数据进行解密的装置。该系统可以包括用于由第一中间装置经由第三SSL会话向第二中间装置传输使用第三SSL会话的第三会话密钥加密的所述数据的装置。该系统可以包括用于由第二中间装置使用所述第三会话密钥对经由第三SSL会话加密的数据进行解密的装置。在一个实施例中,该系统包括用于由第二中间装置向所述客户机传输使用第二SSL会话的第二会话密钥加密的所述数据的装置。
在一些实施例中,该系统包括用于由第二中间装置向第一中间装置传输来自客户机的、与服务器建立传输层连接的请求的装置。第一中间装置可以修改该请求以指示第二中间装置执行安全套接字层(SSL)加速。该系统可以包括用于由第一中间装置向第二中间装置传输识别用于客户机侧SSL代理的SSL配置的消息的装置。在一个实施例中,该系统包括用于由第二中间装置使用从第一中间装置接收的所述SLL配置向客户机传输服务器问候、服务器证书以及服务器问候结束消息的装置。该系统可以包括用于由第一中间装置向第二中间装置传输执行分离SSL代理的请求的装置。
在一些实施例中,该系统包括用于由第二中间装置向第一中间装置传输对加密操作请求的装置。该系统可以包括用于由第一中间装置代表第二中间装置执行所请求的加密操作,并且向第二中间装置传送对所述请求的响应的装置。该系统可以包括用于由第一中间装置使用在第一中间装置上存储的压缩历史对所接收的数据进行压缩的装置。在一个实施例中,该系统包括用于由第二中间装置使用在第二中间装置上存储的所述压缩历史对所接收的数据进行解压缩的装置。该系统可以包括用于由第一中间装置和第二中间装置从由第一中间装置和第二中间装置中的每一个维护的预先建立的SSL会话池识别第三SSL会话的装置。
在附图和下文的描述中详细阐述本发明的各种实施例的细节。
附图说明
通过参考下面结合附图的描述,本发明的前述和其它目的、方面、特征和优点,将会更加明显并更易于理解,其中:
图1A是客户机通过一个或多个网络优化设备访问服务器的网络环境的实施例的框图;
图1B是客户机通过一个或多个网络优化设备连同其他网络设备访问服务器的网络环境的又一个实施例的框图;
图1C是客户机通过单独部署的或者与其他网络设备一起部署的单个网络优化设备访问服务器的网络环境的又一个实施例的框图;
图1D和1E是计算装置的实施例的框图;
图2A是用于处理客户机与服务器之间的通信的设备的实施例的框图;
图2B是部署设备的网络优化特征的客户机和/或服务器的又一个实施例的框图;
图3是使用网络优化特征与服务器通信的客户机的实施例的框图;
图4A是使用来自中间装置之间共享的SSL会话池的安全套接字层(SSL)会话的系统的实施例的框图。
图4B是用于中间装置的专用池的状态机的实施例的框图;
图4C显示对于SSL状态机标识符的状态机的实施例;
图4D是使用来自中间装置之间共享的SSL会话池的安全套接字层(SSL)会话的方法的实施例的流程图;
图5A和5B是用于跨越中间装置分离代理安全套接字层(SSL)通信的系统的实施例的框图;
图5C是用于提供加密操作功能的系统的实施例的框图;
图5D是用于跨越中间装置分离代理安全套接字层(SSL)通信的方法的实施例的流程图;
图5E、5F和5G是用于跨越中间装置分离代理安全套接字层(SSL)通信的方法的又一个实施例的流程图。
从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常指示相同的、功能上相似的和/或结构上相似的元素。
具体实施方式
为了阅读下述对本发明的各种实施例的描述,下面对于说明书的部分以及它们各自内容的描述是有用的:
-A部分描述有益于实施本发明的实施例的网络环境和计算环境;
-B部分描述用于向远程用户加速传送计算环境的系统和设备架构的实施例;
-C部分描述用于加速客户机和服务器之间的通信的客户机代理的实施例;
-D部分描述用于使用来自中间装置之间共享的SSL会话池的SSL会话的系统和方法的实施例;以及
-E部分描述用于经由WAN设备对SSL进行分离代理的系统和方法的实施例。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这样的实施例的网络和计算环境是有帮助的。现在参见图1A,描述了网络环境的实施例。概括来讲,网络环境包括经由一个或多个网络104、104’、104”与一个或多个服务器106a-106n(同样总的称为服务器106,或远程机器106)通信的一个或多个客户机102a-102n(同样总的称为本地机器102,或客户机102)。在一些实施例中,客户机102经由一个或多个网络优化设备200、200’(总的称为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计为、配置为或适合于优化广域网(WAN)网络流量。在一些实施例中,第一设备200与第二设备200’结合或协同工作来优化网络流量。例如,第一设备200可位于分支机构和WAN连接之间而第二设备200’位于WAN和公司局域网(LAN)之间。设备200、200’可一起工作以优化在分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络流量。
虽然图1A示出了在客户机102和服务器106之间的网络104、网络104’和网络104”(总的称为网络104),但客户机102和服务器106可以位于同一个的网络104上。网络104、104’、104”可以是相同类型的网络或不同类型的网络。网络104可为局域网(LAN)(例如公司内网),城域网(MAN),或者广域网(WAN)(例如互联网或万维网)。网络104、104’、104”可为专用网络或公网。在一个实施例中,网络104’和网络104”可为专用网而网络104可为公网。在一些实施例中,网络104可为专用网而网络104’和/或网络104”可为公网。在又一个实施例中,网络104、104’、104”可都为专用网。在一些实施例中,客户机102可位于公司企业的分支机构中,经由网络104上的WAN连接与位于公司数据中心中的公司LAN上的服务器106进行通信。
网络104可以是任何类型和/或形式的网络,并且可包括任何下列任何一种网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或者卫星频带的无线链路。网络104的拓扑可为总线型、星型或环型网络拓扑。网络104以及网络拓扑可以是本领域普通技术人员所知的能够支持此处描述的操作的任何这样的网络或网络拓扑。
如图1A所示,第一网络优化设备200被显示在网络104和104’之间,并且第二网络优化设备200’也在网络104’和104”之间。在一些实施例中,设备200可位于网络104上。例如,公司企业可在分支机构中部署设备200。在其它实施例中,设备200可以位于网络104’上。在一些实施例中,设备200可以位于网络104’或网络104”上。例如,设备200可位于公司的数据中心。在一个实施例中,设备200和200’在同一网络上,在又一个实施例中,设备200和200’在不同的网络上。
在一个实施例中,设备200是用于加速、优化或者以其他方式改善任何类型和形式的网络流量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能增强代理。在其它实施例中,设备200是任何类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州Seattle的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper NetWorks公司出品的WX和WXC WAN加速装置平台中的任何一种。在一些实施例中,设备200包括由加利福尼亚州San Francisco的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任何一种。在其它实施例中,设备200包括由位于新泽西州Roseland的Expand Networks公司出品的WAN相关装置中的任何一种。在一个实施例中,设备200包括由位于加利福尼亚州Cupertino的Packeteer公司出品的任何一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于加利福尼亚州San Jose的Cisco Systems公司出品的任何WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
在一些实施例中,设备200为分支机构或远程办公室提供应用和数据加速服务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在又一个实施例中,设备200加速文件的传送,例如经由通用互联网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储装置中提供高速缓存来加速应用和数据的传送。在一个实施例中,设备200在任何级别的网络堆栈或在任何的协议或网络层中提供网络流量的压缩。在又一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的传送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任何会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下文的B部分中讨论设备200的架构、操作和优化技术的进一步的细节。
仍参考图1A,网络环境可包括多个逻辑分组的服务器106。在这些实施例中,服务器的逻辑分组可以被称为服务器群38。在这些实施例的一些中,服务器106可为地理上分散的。在一些情况中,群38可以作为单个实体被管理。在其它实施例中,服务器群38包括多个服务器群38。在一个实施例中,服务器群代表一个或多个客户机102执行一个或多个应用程序。
在每个群38中的服务器106可为不同种类。一个或多个服务器106可根据一种类型的操作系统平台(例如,由华盛顿州Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。每个群38的服务器106不需要与同一群38内的另一个服务器106物理上接近。因此,被逻辑分组为群38的服务器106组可使用广域网(WAN)连接或城域网(MAN)连接互联。例如,群38可包括物理上位于不同大陆或大陆的不同区域、国家、州、城市、校园或房间的服务器106。如果使用局域网(LAN)连接或一些直连形式来连接服务器106,则可增加群38中的服务器106间的数据传送速度。
服务器106可指文件服务器、应用服务器、web服务器、代理服务器或者网关服务器。在一些实施例中,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。在一个实施例中,服务器106可包括活动目录。客户端102也可称为客户端节点或端点。在一些实施例中,客户机102可以有作为客户机节点寻求访问服务器上的应用的能力,也可以有作为应用服务器为其它客户机102a-102n提供对寄载的应用的访问的能力。
在一些实施例中,客户端102与服务器106通信。在一个实施例中,客户端102可与群38中的服务器106的其中一个直接通信。在又一个实施例中,客户端102执行程序邻近应用(program neighborhood application)以与群38内的服务器106通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户端102通过网络104与群38中的服务器106通信。通过网络104,客户机102例如可以请求执行由群38中的服务器106a-106n寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供识别和提供与寄载所请求的应用的服务器106’相关的地址信息所需的功能。
在一个实施例中,服务器106提供web服务器的功能。在又一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自服务器106b对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与由该应用的列举所识别的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户端102直接与服务器106通信以访问所识别的应用。在又一个实施例中,客户机102接收由执行服务器106上所识别的应用而产生的诸如显示数据的应用输出数据。
与其他设备一起部署
现在参考图1B,描述了网络环境的又一个实施例,在其中,网络优化设备200和诸如网关、防火墙或加速设备的一个或多个其他设备205、205’(总的称为设备205或第二设备205)部署在一起。例如,在一个实施例中,设备205是防火墙或安全设备,而设备205’是LAN加速设备。在一些实施例中,客户机102可通过一个或多个第一设备200和一个或多个第二设备205与服务器106通信。
一个或多个设备200和205可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,第二设备205可与第一设备200位于同一网络104上。在其他实施例中,第二设备205可位于与第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在同一网络上,例如网络104,而第一设备200’和第二设备205’在同一网络上,例如网络104’。
在一个实施例中,第二设备205包括任何类型和形式的传输控制协议或传输后终止装置,例如网关或防火墙装置。在一个实施例中,设备205通过与客户机建立第一传输控制协议连接并且与第二设备或服务器建立第二传输控制协议连接来终止传输控制协议。在又一个实施例中,设备205通过改变、管理或控制在客户机和服务器或第二设备之间的传输控制协议连接的行为来终止传输控制协议。例如,设备205可以改变、排队、转发或传输网络分组以有效地终止传输控制协议连接或者起到终止该连接的作用或模拟为终止该连接。
在一些实施例中,第二设备205是性能增强代理。在一个实施例中,设备205提供虚拟专用网(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN(SSLVPN)连接。在其他实施例中,设备205提供基于Ipsec(互联网协议安全)的VPN连接。在一些实施例中,设备205提供任何一个或多个下列功能:压缩、加速、负载平衡、交换/路由、缓存和传输控制协议(TCP)加速。
在一个实施例中,设备205是由位于佛罗里达州Ft.Lauderdale的CitrixSystems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备200包括执行诸如SSL VPN连通、SSL卸载、交换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或功能的任何逻辑、功能、规则或操作。
在一些实施例中,设备205提供在客户机102和服务器106之间的SSLVPN连接。例如,第一网络104上的客户端102请求建立到第二网络104’上的服务器106的连接。在一些实施例中,第二网络104”是不能从第一网络104路由的。在其它实施例中,客户端102位于公用网络104上,而服务器106位于专用网络104’上,例如公司网。在一个实施例中,客户机代理拦截第一网络104上的客户机102的通信,加密该通信,并且经第一传输层连接发送该通信到设备205。设备205将第一网络104上的第一传输层连接与到第二网络104上的服务器106的第二传输层连接相关联。设备205接收来自客户端代理的被拦截的通信,解密该通信,并且经第二传输层连接发送该通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。在一个实施例中,设备205为在两个网络104和104’之间的客户机102提供端到端安全传输层连接。
在一个实施例中,设备205寄载虚拟专用网络104上的客户机102的内部网互联网协议或者IntranetIP地址。客户机102具有本地网络标识符,诸如第一网络104上的互联网协议(IP)地址和/或主机名称。当经由设备205连接到第二网络104’时,设备205在第二网络104’上为客户机102建立、分配或者以其它方式提供IntranetIP(内部网IP),其是诸如IP地址和/或主机名称的网络标识符。使用客户机的所建立的IntranetIP,设备205在第二或专用网104’上监听并接收指向该客户机102的任何通信。在一个实施例中,设备205在第二专用网络104上用作或者代表客户机102。
在一些实施例中,设备205具有加密引擎,所述加密引擎提供用于操控诸如SSL或TLS的任何安全相关协议或其中涉及的任何功能的处理的逻辑、商业规则、功能或操作。例如,加密引擎加密并解密通过设备205传输的网络分组,或其任何部分。加密引擎也可代表客户机102a-102n、服务器106a-106n或设备200、205来设置或建立SSL或TLS连接。因此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧道协议来提供在客户机102a-102n和服务器106a-106n间的虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其它实施例中,加密引擎包括运行在加密处理器260上的可执行指令。
在一些实施例中,设备205为在客户机102和服务器106之间的通信提供下列一个或多个加速技术:1)压缩、2)解压缩、3)传输控制协议池、4)传输控制协议多路复用、5)传输控制协议缓冲、以及6)高速缓存。在一个实施例中,设备200通过打开与每一服务器106的一个或者多个传输层连接并且维持这些连接以允许由客户机经由互联网的重复数据访问,来为服务器106缓解由重复打开和关闭到客户机102的传输层连接所造成的大量处理负载。该技术此处称为“连接池”。
在一些实施例中,为了经由池化的传输层连接无缝拼接从客户机102到服务器106的通信,设备205通过在传输层协议级修改序列号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在到来的分组(即,自客户机102接收的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改为目的服务器的网络地址。在发出的分组(即,自服务器106接收的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。分组的序列号和确认号也被转换为到客户机102的设备205的传输层连接上的由客户机102所期待的序列号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。
在又一个实施例中,设备205为客户机102和服务器106之间的通信提供交换或负载平衡功能。在一些实施例中,设备205根据层4有效载荷或应用层请求数据来分配流量并将客户机请求定向到服务器106。在一个实施例中,尽管网络分组的网络层或者层2标识了目的服务器106,但设备205利用承载为传输层分组的有效载荷的数据和应用信息来确定服务器106以便分发网络分组。在一个实施例中,设备205的健康监控程序监控服务器的健康来确定分发客户机请求到哪个服务器106。在一些实施例中,如果设备205检测到某个服务器106不可用或者具有超过预定阈值的负载,设备205可以将客户机请求定向或者分发到另一个服务器106。
在一些实施例中,设备205用作域名服务(DNS)解析器或以其他方式提供对来自客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备205以设备205的IP地址或其所寄载的IP地址来响应客户机的DNS请求。在此实施例中,客户机102把用于该域名的网络通信发送到设备200。在又一个实施例中,设备200以第二设备200’的或其所寄载的IP地址来响应客户机的DNS请求。在一些实施例中,设备205使用由设备200确定的服务器106的IP地址来响应客户机的DNS请求。
在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295’提供用于检测和阻断非法请求的规则。在一些实施例中,应用防火墙防御拒绝服务(DoS)攻击。在其它实施例中,设备检查所拦截的请求的内容,以识别和阻断基于应用的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或互联网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲区泄出,2)CGI-BIN参数操纵,3)表单/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)被破坏的访问控制列表(ACLs)或弱密码,7)跨站脚本处理(XSS),8)命令注入,9)SQL注入,10)错误触发敏感信息泄露,11)对加密的不安全使用,12)服务器错误配置,13)后门和调试选项,14)网站涂改,15)平台或操作系统弱点,和16)零天攻击。在一个实施例中,对下列情况的一种或多种,设备的防火墙以检查或分析网络通信的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookie不被修改。在其它实施例中,设备205通过执行合法的URL来防御强制浏览。
在其他实施例中,应用防火墙设备205保护在网络通信中包含的任何机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任一网络通信以识别在网络分组的任一字段中的任一机密信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。基于这些出现,在一个实施例中,应用防火墙可以对网络通信采取策略行动,诸如阻止发送网络通信。在又一个实施例中,应用防火墙可以重写、移动或者以其它方式掩盖该所识别的出现或者机密信息。
尽管总的称为网络优化或第一设备200和第二设备205,但第一设备200和第二设备205可以是相同类型和形式的设备。在一个实施例中,第二设备205可执行与第一设备200相同的功能,或部分相同的功能,反之亦然。例如,第一设备200和第二设备205都可以提供加速技术。在一个实施例中,第一设备200可执行LAN加速而第二设备205执行WAN加速,或者反之亦然。在又一个实施例中,第一设备200也可以与第二设备205一样是传输控制协议终止装置。而且,尽管设备200和205被显示为在网络上单独的装置,但设备200和/或设备205可以是客户机102或服务器106的一部分。
现参考图1C,描述了用于部署设备200的网络环境的其他实施例。在如图1C的上部所描述的又一个实施例中,设备200可以部署为网络104上单个设备或单个代理。例如,设备200可以被设计、构建或调整来执行此处所讨论的WAN优化技术,而不需要第二协同设备200’。在如图1C的下部所描述的其他实施例中,可以将单个设备200与一个或多个第二设备205部署在一起。例如,诸如Citrix WANScaler设备的WAN加速第一设备200可以与LAN加速或应用防火墙第二设备205(例如Citrix NetScaler设备)部署在一起。
计算装置
客户机102、服务器106和设备200和205可以被部署为和/或执行在任何类型和形式的计算装置上,诸如能够在任何类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图1D和1E描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1D和1E所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1D所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a-130b(总的使用附图标记130表示),以及与中央处理单元101通信的高速缓存存储器140。
中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州SantaClara的Transmeta公司制造的微处理器单元;由纽约州White Plains的International Business Machines公司制造的RS/6000处理器;或者由加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器101直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDRSDRAM)、增强型SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1E中,主存储器122可以是DRDRAM。
图1E描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为后端总线。其他实施例中,主处理器101使用系统总线150和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1F中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何I/O装置130,所述总线包括VESAVL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器124通信。图1E说明了主处理器101通过超传输(HyperTransport)、快速I/O或者InfiniBand直接与I/O装置130通信的计算机100的一个实施例。图1E还描述了在其中混合本地总线和直接通信的实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。
计算装置100可以支持任何适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任何客户机代理120或其部分的软件和程序的任何其它装置。计算装置100还可以包括存储装置128,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任何程序的应用软件程序。或者,可以使用安装装置116的任何一种作为存储装置128。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口118,所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25)、宽带连接(如ISDN、帧中继、ATM)、无线连接、或上述任何或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100接口到能够通信并执行本文所述的操作的任何类型的网络的任何其它设备。
计算装置100中可以包括各种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1C所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接以接纳手持USB存储装置,例如由位于加利福尼亚州LosAlamitos的Twintech Industry公司制造的USB闪存驱动系列装置。
在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任何一种I/O装置130a-130n和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n接口、通信、连接或以其他方式使用显示装置。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n接口。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如例如通过网络与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置124a-124n的各种方法和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。
图1D和1E中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE和WINDOWS XP,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州Cupertino的苹果计算机出品的MacOS;由位于纽约州Armonk的国际商业机器公司出品的OS/2;以及由位于犹他州Salt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。
在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。此外,计算装置100可以是任何工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。
B.系统和设备架构
现参考图2A,描述了用于传送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于向一个或多个客户机102传送计算环境或应用和/或数据文件的应用传送系统290。总的来说,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可驻留在公司的远程办公室里,例如分支机构,而服务器106可驻留在公司数据中心。客户机102包括客户机代理120以及计算环境215。计算环境215可执行或操作用于访问、处理或使用数据文件的应用。可经由设备200和/或服务器106传送计算环境215、应用和/或数据文件。
在一些实施例中,设备200向客户机102加速传送计算环境215或者其任何部分。在一个实施例中,设备200通过应用传送系统290加速计算环境15的传送。例如,可使用此处描述的实施例来加速从公司中央数据中心到远程用户位置(例如公司的分支机构)的流应用(streaming application)及该应用可处理的数据文件的传送。在又一个实施例中,设备200加速客户机102和服务器106之间的传输层流量。在又一个实施例中,设备200控制、管理、或调整传输层协议以便加速计算环境的传送。在一些实施例中,设备200使用缓存和/或压缩技术来加速计算环境的传输。
在一些实施例中,基于多个执行方法并且基于通过策略引擎295所应用的任一验证和授权策略,应用传送管理系统290提供将计算环境传送到远程的或者其它的用户的桌面的应用传送技术。使用这些技术,远程用户可以从任何网络连接装置100获取计算环境并且访问存储应用和数据文件的服务器。在一个实施例中,应用传送系统290可驻留在服务器106上或在其上执行。在又一个实施例中,应用传送系统290可驻留在多个服务器106a-106n上或在其上执行。在一些实施例中,应用传送系统290可在服务器群38内执行。在一个实施例中,执行应用传送系统290的服务器106也可存储或提供应用和数据文件。在又一个实施例中,一个或多个服务器106的第一组可执行应用传送系统290,而不同的服务器106n可存储或提供应用和数据文件。在一些实施例中,应用传送系统290、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统290的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。
客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可通过网络104、104’和设备200请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。
在一些实施例中,应用传送系统290包括Citrix Systems公司的CitrixAccess SuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的Windows终端服务中的任何一个。在一个实施例中,应用传送系统290可以通过远程显示协议或者以其它方式通过基于远程计算或者基于服务器计算来传送一个或者多个应用到客户机102或者用户。在又一个实施例中,应用传送系统290可以通过应用流来传送一个或者多个应用到客户机或者用户。
在一个实施例中,应用传送系统290包括策略引擎295,其用于控制和管理对应用的访问、应用执行方法的选择以及应用的传送。在一些实施例中,策略引擎295确定用户或者客户机102可以访问的一个或者多个应用。在又一个实施例中,策略引擎295确定应用应该如何被传送到用户或者客户机102,例如执行的方法。在一些实施例中,应用传送系统290提供多个传送技术,从中选择应用执行的方法,例如基于服务器的计算、本地流式传输或传送应用给客户机120以用于本地执行。
在一个实施例中,客户机102请求应用程序的执行而包括服务器106的应用传送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在又一个实施例中,服务器106从客户机102接收对于可用应用的列举的请求。在一个实施例中,响应该请求或者证书的接收,应用传送系统290列举对于客户机102可用的多个应用程序。应用传送系统290接收执行所列举的应用的请求。应用传送系统290选择预定数量的方法之一来执行所列举的应用,例如响应策略引擎的策略。应用传送系统290可以选择执行应用的方法,使得客户机102接收通过执行服务器106上的应用程序所产生的应用输出数据。应用传送系统290可以选择执行应用的方法,使得本地机器102在检索包括应用的多个应用文件之后本地执行应用程序。在又一个实施例中,应用传送系统290可以选择执行应用的方法,以通过网络104流式传输应用到客户机102。
客户机102可以执行、操作或者以其它方式提供应用,所述应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任何其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任何瘦-客户端或远程显示协议来显示输出到客户机102,所述瘦-客户端或远程显示协议例如由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于华盛顿州Redmond的微软公司出品的远程桌面协议(RDP)。应用可使用任何类型的协议,并且它可为,例如,HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。
在一些实施例中,服务器106或服务器群38可运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群38作为一个应用来执行Citrix Systems Inc.的Citrix AccessSuiteTM的任一部分(例如MetaFrame或Citrix Presentation ServerTM),和/或微软公司开发的Windows终端服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州Fort Lauderdale的Citrix Systems Inc.开发的ICA客户机。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft公司开发的远程桌面(RDP)客户机。另外,服务器106可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州Redmond的Microsoft公司制造的Microsoft Exchange,web或Internet服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于加利福尼亚州SantaBarbara的Citrix Online Division提供的GoToMeetingTM,位于加利福尼亚州Santa Clara的WebEx Inc.提供的WebExTM,或者位于华盛顿州Redmond的Microsoft公司提供的Microsoft Office Live Meeting。
示例设备架构
图2A也示出设备200的示例实施例。仅通过示例来提供图2A的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图1D和1E所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和/或传输通信的一个或多个网络堆栈267A-267N和一个或多个网络端口266A-266N。设备200还具有用于优化、加速或以其他方式改善经过设备200的任何网络流量或通信的质量、操作或性能。
设备200包括操作系统或在操作系统的控制之下。设备200的操作系统可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、或者能够运行在设备200上并执行此处所描述的操作的任何其它操作系统。
设备200的操作系统分配、管理或以其他方式将可用的系统存储器分离到被称为内核或系统空间和用户或应用空间中。通常保留内核空间用于运行内核,所述内核包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间也包括与网络优化引擎250或其任何部分协同工作的多个网络服务或进程。另外,内核的实施例将依赖于通过设备200安装、配置或以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或以其他方式运行于用户模式的程序所使用的操作系统的存储区域或部分。用户模式应用不能直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或应用空间来执行或运行应用以及供应用户级程序、服务、进程和/或任务。
设备200具有一个或多个网络端口266,用于通过网络104传输和接收数据。网络端口266提供在计算装置和网络104或另一个装置100之间的物理和/或逻辑接口,用于传输和接收网络通信。网络端口266的类型和形式取决于网络的类型和形式以及用于连接到网络的介质的类型。而且,网络端口266和网络堆栈267的、为其供应的或者其使用的任何软件可运行在内核空间或用户空间。
在一个实施例中,设备200具有一个网络堆栈267,例如基于TCP/IP的堆栈,用于在网络105上与客户机102和/或服务器106通信。在一个实施例中,网络堆栈267用于与诸如网络104第一网络以及第二网络104’通信。在又一个实施例中,设备200可具有两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A可与第一网络端口266A联合使用以在第一网络104上通信。第二网络堆栈可与第二网络端口266N联合使用以在第二网络104’上通信。在一个实施例中,网络堆栈267包括用于为由设备200产生的一个或多个网络分组进行排队的一个或多个缓冲器。
网络堆栈267可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈267包括用于网络协议组的软件实现。网络堆栈267可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任何网络层。这样,网络堆栈267可包括用于下列OSI模型的任何一层的任何类型和形式的协议:1)物理链路层;2)数据链路层;3)网络层;4)传输层;5)会话层);6)表示层,以及7)应用层。在一个实施例中,网络堆栈267可包括在互联网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在以太网协议上承载TCP/IP协议,所述以太网协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802.3覆盖的这些协议。在一些实施例中,网络堆栈267包括任何类型和形式的无线协议,例如IEEE 802.11和/或移动互联网协议。
考虑到基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在又一个实施例中,网络堆栈267包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP(TCP-SACK),带有大窗口的TCP(TCP-LW),例如TCP-Vegas协议的拥塞预测协议,以及TCP欺骗协议。在其他实施例中,网络堆栈267可使用诸如IP上UDP的任何类型和形式的用户数据报协议(UDP),例如用于语音通信或实时数据通信。
另外,网络堆栈267可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络层驱动器可作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分被包括。在一些实施例中,网络堆栈267的任何网络驱动器可被定制、修改或调整以提供支持此处描述的任何技术网络堆栈267的定制或修改部分。
在一个实施例中,设备200使用单个网络堆栈267来提供或维持在客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或控制在客户机和服务器之间的传输控制协议连接的行为来有效地终止传输层连接。在这些实施例中,设备200可使用单个网络堆栈267。在其他实施例中,设备200终止第一传输层连接,例如客户机102的TCP连接,并建立客户机102使用的或代表客户机102的到服务器106的第二传输层连接,例如,终止在设备200和服务器106的第二传输层连接。可通过单个网络堆栈267建立第一和第二传输层连接。在其他实施例中,设备200可使用多个网络堆栈,例如267A和267N。在这些实施例中,在第一网络堆栈267A可建立或终止第一传输层连接,且在第二网络堆栈267N可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络分组,并且另一个网络堆栈可用于在第二网络上接收和传输网络分组。
如图2A所示,网络优化引擎250包括一个或多个下列元件、组件或模块:网络分组处理引擎250、LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’。网络优化引擎250或其任何部分可包括软件、硬件或软件和硬件的任何组合。而且网络引擎250的、为其供应的或由其使用的任何软件可运行在内核空间或用户空间。例如,在一个实施例中,网络优化引擎250可运行在内核空间。在又一个实施例中,网络优化引擎250可运行在用户空间。在又一个实施例中,网络优化引擎250的第一部分可运行在内核空间而网络优化引擎250的第二部分可运行在用户空间。
网络分组处理引擎
网络分组引擎240,通常也称为分组处理引擎,或分组引擎,负责控制和管理对由设备200通过网络端口266和网络堆栈267接收和传输的分组的处理。网络分组引擎240可操作在网络堆栈267的任一层。在一个实施例中,网络分组引擎240操作在网络堆栈267的层2和层3.在一些实施例中,分组引擎240在网络层(例如,TCP/IP实施例中的IP层)拦截或以其他方式接收分组。在又一个实施例中,分组引擎240操作在网络堆栈267的层4。例如,在一些实施例中,分组引擎240在传输层拦截或以其他方式接收分组,例如在TCP/IP实施例中的TCP层拦截分组。在其他实施例中,分组引擎240操作在层4之上的任何会话或应用层。例如,在一个实施例中,分组引擎240在传输层协议层之上拦截或以其他方式接收的网络分组,例如在TCP实施例中的TCP分组的有效载荷。
分组引擎240可包括用于在例如接收网络分组或者传输网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,分组引擎240与一个或多个网络堆栈267通信以通过网络端口266发送和接收网络分组。分组引擎240包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入的(即,接收的)或输出的(即,传输的)网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。分组处理定时器向分组引擎240提供任何类型和形式的信号以通知、触发或传输时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以毫秒级操作,例如100ms、50ms、25ms、10ms、5ms或1ms。
在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于10ms的时间间隔),可执行加密引擎234、高速缓存管理器232、策略引擎236以及多协议压缩引擎238的任何逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可响应于集成分组引擎240和/或分组处理定时器242来执行任何高速缓存的对象的终止。在又一个实施例中,高速缓存的对象的终止或无效时间被设定为与分组处理定时器的时间间隔相同的粒度级,例如每10ms。
高速缓存管理器
高速缓存管理器232可包括软件、硬件或软件和硬件的任何组合,以将数据、信息和对象存储到在存储器或存储中的高速缓存、提供高速缓存访问以及控制和管理高速缓存。由高速缓存管理器232处理和存储的数据、对象或内容可包括任何格式(例如标记语言)的数据,或者通过任何协议的通信的任何类型的数据。在一些实施例中,高速缓存管理器232复制存储在其他地方的原始数据或先前计算、生成或传输的数据,其中相对于读高速缓存存储器或存储元件,需要更长的访问时间以取得、计算或以其他方式得到原始数据。一旦数据被存储在高速缓存中,通过访问高速缓存的副本而不是重新获得或重新计算原始数据即可进行后续操作,因此而减少了访问时间。在一些实施例中,高速缓存可以包括设备200的存储器中的数据对象。在又一个实施例中,高速缓存可以包括设备200的任一类型和形式的存储元件,诸如硬盘的一部分。在一些实施例中,装置的处理单元可提供由高速缓存管理器232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器232可使用存储器、存储区或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。
另外,高速缓存管理器232包括用于执行设备200的任何高速缓存技术的任何逻辑、功能、规则或操作。在一些实施例中,高速缓存管理器232可作为应用、库、程序、服务、进程、线程或任务而操作。在一些实施例中,高速缓存管理器232可包括任何类型的通用处理器(GPP),或者任何其他类型的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑设备(PLD),或者专用集成电路(ASIC)。
策略引擎
策略引擎295’包括用于提供和应用一个或多个策略或规则到设备200的任一部分的功能、操作或配置的任何逻辑、功能或操作。策略引擎295’可包括例如智能统计引擎或其它可编程应用。在一个实施例中,策略引擎295’提供配置机制以允许用户识别、指定、定义或配置用于网络优化引擎250或其任何部分的策略。例如,策略引擎295’可提供用于缓存哪些数据、何时缓存该数据、为谁缓存该数据、何时终止高速缓存中的对象或刷新高速缓存的策略。在其他实施例中,除了对安全、网络流量、网络访问、压缩或由设备200执行的任何其它功能或操作的访问、控制和管理之外,策略引擎236可包括任何逻辑、规则、功能或操作以确定和提供对设备200所高速缓存的对象、数据、或内容的访问、控制和管理。
在一些实施例中,策略引擎295’可基于下列的任何一个或多个来提供和应用一个或多个策略:用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或网络流量的内容。在一个实施例中,策略引擎295’基于网络分组的任何协议层的字段或首部来提供和应用策略。在又一个实施例中,策略引擎295’基于网络分组的任一有效载荷来提供和应用策略。例如,在一个实施例中,策略引擎295’基于对被承载为传输层分组的有效载荷的应用层协议内容的特定部分的识别来应用策略。在又一个实施例中,策略引擎295’基于由客户机、服务器或用户证书识别的任何信息来应用策略。在又一个实施例中,策略引擎295’基于例如通过任何类型和形式的端点检测(参见下面所描述的客户机代理的收集代理示例)所获得的关于客户机102的任何属性或特征来应用策略。
在一个实施例中,策略引擎295’和应用传送系统290的策略引擎295联合或协同工作。在一些实施例中,策略引擎295’是应用传送系统290的策略引擎295的一个分布式的部分。在又一个实施例中,应用传送系统290的策略引擎295被部署于或执行在设备200上。在一些实施例中,策略引擎295、295’都操作在设备200上。在又一个实施例中,设备200的策略引擎295’或其一部分操作在服务器106上。
多协议和多层压缩引擎
压缩引擎238包括用于压缩一个或多个协议的网络分组(例如由设备200的网络堆栈267使用的任何协议)的任何逻辑、商业规则、功能或操作。压缩引擎238也可被称为多协议压缩引擎238,这是由于其可以被设计、构建为或能够压缩多个协议。在一个实施例中,压缩引擎238使用对上下文不敏感的压缩,其可在不了解数据类型的情况下对数据进行压缩。在又一个实施例中,压缩引擎238使用对上下文敏感的压缩。在该实施例中,压缩引擎238利用数据类型的知识来从一系列合适的算法中选择特定的压缩算法。在一些实施例中,使用特定协议的知识来执行上下文敏感的压缩。在一个实施例中,设备200或压缩引擎238可使用端口号(例如,公知端口),以及来自连接本身的数据来确定要使用的合适的压缩算法。一些协议仅使用一种类型的数据,仅要求当连接建立时可被选择的单个压缩算法。其他协议在不同的时间包含不同类型的数据。例如,POP、IMSP、SMTP和HTTP都移动夹杂其他协议数据的任意类型的文件。
在一个实施例中,压缩引擎238使用增量型压缩算法。在又一个实施例中,压缩引擎238使用首地点压缩以及搜索在高速缓存、存储器或盘中存储的数据间的重复模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎238使用有损压缩算法。在一些情况下,数据类型的知识和有时来自用户的许可被要求使用有损压缩算法。压缩不限于协议的有效载荷。协议本身的控制字段也可以被压缩。在一些实施例中,压缩引擎238使用与用于有效载荷的算法不同的算法。
在一些实施例中,压缩引擎238在网络堆栈267的一个或多个层进行压缩。在一个实施例中,压缩引擎238在传输层协议处进行压缩。在又一个实施例中,压缩引擎238在应用层协议处进行压缩。在一些实施例中,压缩引擎238在层2-4协议处进行压缩。在其他实施例中,压缩引擎238在层5-7协议处进行压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。
在一些实施例中,压缩引擎238使用基于存储器的压缩、基于高速缓存的压缩或基于盘的压缩或上述的任一组合。这样,压缩引擎238也可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用在存储器(例如RAM)中存储的数据历史。在又一个实施例中,压缩引擎238使用在高速缓存(例如处理器的L2高速缓存)中存储的数据历史。在其他实施例中,压缩引擎238使用存储到盘或存储单元的数据历史。在一些实施例中,压缩引擎238使用基于高速缓存的、基于存储器的和基于盘的数据历史的分层结构。压缩引擎238可首先使用基于高速缓存的数据来确定用于压缩的一个或多个数据匹配,然后可检查基于存储器的数据以确定用于压缩的一个或多个数据匹配。在另一种情况下,压缩引擎238可在检查基于高速缓存的和/或基于存储器的数据历史之后检查盘存储来找出用于压缩的数据匹配。
在一个实施例中,多协议压缩引擎238双向压缩在客户机102a-102n和服务器106a-106n间任一基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议以及IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中,提供任何标记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎238提供任何高性能协议的压缩,例如设计用于设备200到设备200通信的任何协议。在又一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任何通信的任何载荷或任何通信,例如事务TCP(T/TCP)、带有选择确认的TCP(TCP-SACK)、带有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预报协议以及TCP欺骗协议(TCP spoofing protocol)。
同样的,多协议压缩引擎238为用户加速经由桌面客户机以及甚至移动客户机访问应用的性能。所述桌面客户机例如Micosoft Outlook和非web瘦客户机,例如由像Oracle、SAP和Siebel的通用企业应用所启动的任何客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240集成,多协议压缩引擎能够压缩由传输层协议携带的任何协议,例如任何应用层协议。
LAN/WAN检测器
LAN/WAN检测器238包括用于自动检测慢速侧连接(例如,诸如内部网的广域网(WAN)连接)和关联端口267,以及快速侧连接(例如,局域网(LAN)连接)和关联端口267的任何逻辑、商业规则、功能或操作。在一些实施例中,LAN/WAN检测器238监控设备200的网络端口267上的网络流量以便检测同步分组(有时被称为“加标记的”网络分组)。同步分组识别网络流量的类型或速度。在一个实施例中,同步分组识别WAN的速度或WAN类型的连接。LAN/WAN检测器238也识别对加标记的同步分组的确认分组的接收以及其在哪个端口上被接收。接着,设备200将自身配置为操作所识别的、加标记的同步分组到达的端口以使得该端口上的速度被设置为与连接到该端口的网络相关联的速度。那么,另一个端口被设置为与连接到该端口的网络相关联的速度。
为了本文讨论的方便,“快速”侧可参考关于与广域网(WAN)(例如,互联网)的连接,并且以该WAN的网络速度操作。类似地,“慢速”侧可参考关于与局域网(LAN)的连接并且以LAN的网络速度操作。然而,应指出网络的“快速”和“慢速”侧可以在每连接的基础上改变并且是对于网络连接的速度或者网络拓扑类型的相关术语。这样的配置可以用在复杂的网络拓扑中,其中网络仅在与相邻网络比较时是“快速”或“慢速”,而不是绝对的“快速”或“慢速”。
在一个实施例中,LAN/WAN检测器238可用于使设备200自动发现其所连接的网络。在又一个实施例中,LAN/WAN检测器238可用于检测在网络104中部署的第二设备200’的存在或在场。例如,根据图1A的操作中的自动发现机制起到以下作用:将设备200和200’置于与链接客户机102和服务器106的连接在一条线上。设备200和200’处于连接两个LAN的低速链路(例如,互联网)的端点处。在一个示例实施例中,设备200和200’各自包括两个端口,一个端口与“较低”速度的链路连接而另一个端口与“较高”速度的链路(例如,LAN)连接。到达一个端口的任一分组被复制到另一个端口。因此,设备200和200’各自被配置为充当两个网络104之间的桥。
当诸如客户机102的端节点打开与诸如服务器106的另一个端节点的新的TCP连接时,客户机102向服务器106发送具有同步(SYN)首部位组的TCP分组或SYN分组。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组穿过设备200时,设备200给该分组插入、附加或以其他方式提供特有的TCP首部选项,以宣告其存在。如果该分组穿过第二设备(在该示例中设备200’),第二设备记录该SYN分组中的首部选项。服务器106用同步确认(SYN-ACK)分组来响应该SYN分组。当SYN-ACK分组穿过设备200’时,TCP首部选项被标记(例如,附加、插入或添加)到该SYN-ACK分组以便向设备200宣告设备200’的存在。当设备200收到该分组时,设备200,200’此时互相察觉并且该连接可以被适当地加速。
关于LAN/WAN检测器238的操作,描述了使用SYN分组来检测网络的“快速”侧和“慢速”侧的方法或过程。在客户机102和服务器106之间建立传输层连接的期间,设备200通过LAN/WAN检测器238确定SYN分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前ACK标记从该分组删除。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。设备200接着给该SYN分组加上ACK标记并将该分组复制到另一个端口。
在又一个实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快速侧和慢速侧。设备200通过LAN/WAN检测器238确定SYN-ACK分组是否被加了确认(ACK)标记。如果其被加了标记,设备200将接收加标记的SYN分组(SYN-ACK)的端口标识或配置为“慢速”侧。在一个实施例中,设备200可选择在将该分组复制到另一个端口之前从该分组删除ACK标记。如果LAN/WAN检测器238确定该分组未加标记,那么设备200将接收未加标记的分组的端口标识或配置为“快速”侧。LAN/WAN检测器238确定SYN分组是否被加了标记。如果该SYN分组没有被加标记,那么设备200将该分组复制到另一个端口。如果该SYN分组被加了标记,那么该设备在将该分组拷贝到另一个端口之前给SYN-ACK分组加标记。
设备200、200’可以添加、插入、修改、附加或以其他方式提供TCP选项首部中的任何信息或数据,以提供关于网络连接、网络流量或者设备200的配置或操作的任何信息、数据或特征。在这种方式中,设备200不仅向另一个设备200’宣告其存在或者标记较高或较低速度的连接,该设备200还通过TCP选项首部提供关于该设备或该连接的其他信息和数据。TCP选项首部信息可能是对设备有用的或由设备用于控制、管理、优化、加速或改善经过设备200的网络流量,或者以其他方式配置其自身或网络端口的操作。
尽管通常LAN/WAN检测器238被结合检测网络连接的速度或设备的存在来描述,但LAN/WAN检测器238可被用于将设备200的任何类型的功能、逻辑或操作应用到网络流量的端口、连接或流。更具体地,每当设备在不同的端口执行不同的功能时都可以自动分配端口,其中给任务分配端口可以在该单元操作期间,和/或每个端口的网络段的性质可被设备200发现。
流控制
流控制器220包括用于优化、加速或以其他方式改善网络分组的传输层通信的性能、操作或服务质量或者在传输层的分组的发送的任何逻辑、商业规则、功能或操作。流控制器(有时也被称为流控制模块)调节、管理和控制数据传输速率。在一些实施例中,流控制器220被部署在或连接在网络104中的带宽瓶颈处。在一个实施例中,流控制器220有效地调节、管理和控制带宽的使用或利用。在其他实施例中,流控制模块也可以被部署在延迟转换(从低延迟到高延迟)的网络上的位置和具有介质损失的链路(例如无线或卫星链路)上的位置。
在一些实施例中,流控制器220可包括用于控制网络传输的接收速率的接收器侧流控制模块和用于控制网络分组的传输速率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220被部署在第一设备200上并且第二流控制器220’被部署在第二设备200’上。同样,在一些实施例中,第一设备200控制接收器侧上的数据流而第二设备200′控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于经过设备200的网络通信的接收器侧和发送器侧的流控制。
在一个实施例中,配置流控制模块220以使瓶颈处的带宽被更充分地利用,以及在一些实施例中,配置流控制模块220以使瓶颈处的带宽不被过度利用。在一些实施例中,流控制模块220透明地缓冲(或者重新缓冲例如发送器已经缓冲的数据)经过具有相关联的流控制模块220的节点间的网络会话。当会话经过两个或多个流控制模块220时,一个或多个流控制模块控制会话的速率。
在一个实施例中,用有关瓶颈带宽的预定数据来配置流控制模块200。在又一个实施例中,流控制模块220可被配置为检测瓶颈带宽或与其关联的数据。与诸如TCP的传统网络协议不同,接收器侧流控制模块220控制数据传输速率。接收器侧流控制模块220通过将传输速率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块(例如,220)的数据传输速率。在一个实施例中,接收器侧流控制模块220在由接收器(例如服务器106)向发送器(例如客户机102)发送的确认(ACK)分组(或信号)上捎带这些传输速率限制。接收器侧流控制模块220响应于由发送器侧流控制模块220′发送的速率控制请求来执行这一工作。可以在由发送器106发送的数据分组上捎带来自发送器侧流控制模块220’的请求。
在一些实施例中,流控制器220操纵、调整、模拟、改变、改进或以其他方式修改传输层协议的行为以便提供传输层的传送、数据速率和/或带宽利用的改善的性能或操作。流控制器220可在传输层实现多个数据流控制技术,包括但不限于1)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传技术,4)波前检测和消除二义性,5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分组。
尽管此处通常将发送器描述为客户机102,将接收器描述为服务器106,但发送器可以是诸如网络104上任一计算装置100或者服务器106的任一端点。同样地,接收器可以是客户机102或者网络104上的任何其他计算装置。
预确认
概括来讲预确认流控制技术,在一些实施例中,流控制器220处理确认并为发送器重传确认,有效地终止发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的,设备200在网络架构中的一个可能的部署。在该示例实施例中,发送计算机或者客户机102在网络104上例如经由交换机传输数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据穿过设备200,使得设备200可以将任一必要的算法应用到该数据。
进一步在该示例中,客户机102传输由设备200接收的分组。当设备200接收从客户机102向接收者传输的经过VPN设备205的分组时,设备200保留分组的副本并且将该分组向下游转发到VPN设备205。设备200接着生成确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK(即预确认)使发送器102相信分组已经被成功传输、释放发送器的资源用于后续的处理。在要求重传分组的事件中,设备200保留该分组的副本,使得发送器102不必处理数据的重传。提前生成确认可以被称为“提前确认(preack)”。
如果要求重传分组,设备200将分组重传到发送器。设备200可以确定当发送器处于传统系统中时是否需要重传,例如,在预定时间段之后对于该分组如果没有接收到确认则确定分组丢失。为此,设备200监控由例如服务器106(或者任何其他下游网络实体)的接收端点生成的确认,以便其可以确定是否已经成功传送分组或者需要重传分组。如果设备200确定分组已经被成功传送,则设备200能够自由地丢弃所保存的分组数据。设备200还可以禁止转发对已经由发送端点接收的分组的确认。
在上述实施例中,设备200经由流控制器220通过预确认(也称为“提取确认”)的传送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于给发送端点提供溢出控制的机制。如果没有溢出机制,设备200将耗尽存储器,因为设备200存储已经向发送端点提取确认的但还没有被确认为由接收端点接收的分组。因此,在发送器102传输分组到设备200快于设备200向下游转发分组的情况下,设备200中可用于存储未被确认的分组数据的存储器将迅速填满。用于溢出控制的机制允许设备200控制来自发送器的分组的传输以避免该问题。
在一个实施例中,设备200或者流控制器220包括固有的“自同步(self-clocking)”溢出控制机制。该自同步归因于这样的顺序,其中设备200可以被设计为向下游传输分组并向发送器102或者106发送ACK。在一些实施例中,设备200直到其向下游传输分组后为才提前确认分组。以此方式,发送器102将以设备200能够传输分组的速率而不是以设备200从发送器100接收分组的速率来接收ACK。这有助于调节来自发送器102的分组的传输。
窗口虚拟化
设备200可以实现的另一个溢出控制机制是使用TCP窗口大小参数,其告知发送器接收器允许该发送器填满多少缓冲区。预确认中的非零窗口大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续向设备传输数据,而零窗口大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲区变满时通过适当地设置每一预确认中的TCP窗口大小来调节来自发送器的分组的流量。
另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据传送到较慢侧时,设备299中的溢出控制机制可以在向发送器发送非零窗口通告之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗口分组(例如,四个分组的窗口大小)之前进行等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间为止。由于对于四个数据分组的每个组仅发送两个ACK分组,而不是对于四个数据分组要发送八个ACK分组,因此这将开销降低到大约原来的四分之一。
设备200或流控制器220可用于溢出控制的另一技术是TCP延迟ACK机制,其跳过ACK来降低网络流量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或直到发生固定的超时为止。该机制单独导致开销减半,而且,通过将分组的数量增加到两个以上,降低了附加的开销。但是仅延迟ACK本身不足以控制溢出,并且设备200还可以使用在ACK上的通告窗口机制来控制发送器。当这样做时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。
在一个实施例中,流控制器220不对一组分组的最后一个分组进行提取确认。通过不提取确认最后一个分组或者该组中分组的至少一个,设备避免对一组分组的错误确认。例如,如果设备将发送对最后一个分组的预确认而该分组随后丢失,那么发送器在分组没有被传送时已经欺骗认为其被传送。考虑到分组已被传送,发送器将丢弃该数据。如果设备也丢失该分组,那么不能将该分组重传到接收者。通过不对一组分组的最后一个分组进行提前确认,发送器直到该分组被传送时才将其丢弃。
在又一个实施例中,流控制器220可以使用窗口虚拟化技术来控制网络连接的带宽利用或者流速。虽然根据检查诸如RFC1323的传统文献其可能不是直接明显的,但是用于诸如TCP的传输层协议的发送窗口是有效的。由于发送窗口消耗缓冲区空间(尽管在发送器上),所以发送窗口类似于接收窗口。发送器的发送窗口包括还没有被接收器确认的、由应用发送的所有数据。在要求重传的情况下,必须在存储器中保留该数据。由于存储器是共享资源,所以一些TCP堆栈的实现限制了该数据的大小。当发送窗口满时,应用程序尝试发送更多的数据导致阻塞应用程序直到空间可用为止。随后接收的确认将释放发送窗口存储器并且不再阻塞应用程序。在一些实施例中,该窗口大小就是一些TCP实现中的套接字缓冲区大小。
在一个实施例中,流控制模块220被配置为提供对增加的窗口(或缓冲区)大小的访问。该配置还可以被称为窗口虚拟化。在作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗口比例(window scale)的位串。在一个实施例中,“窗口”可以在发送、接收或二者的上下文中提及。
窗口虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图1A和1B的任何一个环境,建立例如客户机102(为讨论方便,现称为源节点102)的源节点与例如服务器106(为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于64k字节的任何缓冲区大小进行窗口缩放(windowscaling),其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是0或1的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。
在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(即,会话初始化)期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220源节点102(其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储0。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从0或者1增加到4。当第二流控制模块220接收SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106的比例(例如,0或1)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如0或者1)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如TCP分组)的中的窗口字段必须随窗口变换对话而改变。
如上所述,窗口比例表示出大于64k的缓冲区大小,并且可以不需要窗口虚拟化。因此,窗口比例的变换可以用于表示在每个流控制模块220中的增加的缓冲区容量。该缓冲区容量的增加可作为窗口(或缓冲区)虚拟化而被提及。该缓冲区大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲区大小典型地以字节表示,但是为了讨论的方便,由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。
通过举例描述由流控制器220执行的窗口(或缓存区)虚拟化。在该示例中,源节点102和目标节点106被配置为与具有16k字节的有限的缓存区容量的传统端节点相似,其大约等于10个数据分组。通常,端节点102、106在能够传输下一组分组之前必须进行等待,直到该分组被传输并且收到确认为止。在一个实施例中,使用在流控制模块220中的增加的缓冲区容量,当源节点103传输其数据分组时,第一流控制模块220接收该分组,将该分组存储在其较大容量的缓存区(例如512个分组容量)中,并且立即将指示分组接收的确认信号(“REC-ACK”)发送回到源节点102。源节点102接着可以“刷新”其当前缓冲区,将10个新的数据分组载入到缓存区,并且将这些传输到第一流控制模块220上。再次,第一流控制模块220将REC-ACK信号发送回到源节点102,并且源节点102刷新其缓冲区并且对其载入10个更新的分组用于传输。
当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲区中。当其准备好时,第一流控制模块220可以开始将数据分组传输到第二流控制模块230,其也具有增加的缓存区大小,例如以便接收512个分组。第二流控制模块220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的、来自目标节点106的每个REC-ACK致使又有10个分组被传输到目标节点106,直到所有的数据分组被传送为止。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲区来增加在源节点(发送器)102和目标节点(接收器)106之间的数据传输吞吐量。
注意到通过之前描述的“预确认”数据的传输,发送器(或源节点102)被允许传输比没有预确认时可能传输的数据更多的数据,因此造成更大的窗口大小。例如,在一个实施例中,流控制模块220、220’处于缺乏大窗口的节点(例如,源节点102或者目标节点106)附近时,该技术是有效的。
重新拥塞
流控制器220的另一个技术或者算法被称为重新拥塞。众所周知标准的TCP拥塞避免算法在面对特定网络条件(包括:大的RTT(往返时间)、高分组丢失率,以及其它)时性能低下。当设备200检测到诸如长的往返时间或者高的分组丢失的拥塞条件时,设备200插入、代入更适合该特定网络调节的替代的拥塞避免算法。在一个实施例中,重新拥塞算法使用预确认来有效地终止发送器和接收器之间的连接。设备200接着使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特征。设备200监控每个TCP连接,在不同的维度将其特征化,选择适合用于当前特征的重新拥塞算法。
在一个实施例中,当检测到由往返时间(RTT)限制的TCP连接时,应用表现为多个TCP连接的重新拥塞算法。每个TCP连接操作在其自身性能限度内,但是聚合带宽获得了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N值过大则连接束获得超过其合理份额的带宽。N值过小则连接束获得低于其合理份额的带宽。建立“N”的一个方法依赖于设备200监控实际连接的分组大小、RTT和分组丢失率。将这些数字插入TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算出的上限性能基本相同的性能,则应用额外的并行连接。如果当前束正获得低于上限的性能,则减少并行连接的数量。依次方式,由于单独的连接束包含的并行性不比消除协议自身所强加的限制所需的并行性更多,所以维持了系统的整体公平性。进一步,每个单独的连接保留TCP兼容性。
建立“N”的另一个方法是使用并行流控制算法,例如TCP“Vegas”算法或者其改进版本“稳定的Vegas”。在该方法中,与连接束中的连接相关联的网络信息(例如,RTT、丢失率、平均分组大小等等)被聚集并且被应用到替代的流控制算法。该算法的结果进而被分布到控制其数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。
在又一个实施例中,并行束中的单独的连接被虚拟化,即不建立实际的单独的TCP连接。事实上拥塞避免算法被修改为表现得就好像存在N个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的QOS、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的,即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。
重传
在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。
实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RTO。使用标准TCP算法,在一个RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RTO)。在一个实施例中,设备200使用重传和超时算法来避免过早的RTO。设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RTO。
波前检测和消除二义性
在一些实施例中,设备200或者流控制器220在管理和控制网络流量中使用波前检测和消除二义性技术。在该技术中,流控制器220使用传输标识符或者号码来确定是否需要重传特定数据分组。举例来说,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例与一个传输号码相关联。可以理解,分组的传输号码与分组的序列号不相同,因为序列号标记分组中的数据,而传输号码标记该数据的传输的实例。传输号码可以是对于该目的可用的任意信息,包括与分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。因为数据段可以被重传,所以不同的传输号码可以与特定的序列号相关联。
由于发送器传输数据分组,所以发送器保持被确认的数据分组传输的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码标记。通过保持对于每个分组的传输号码,发送器保留数据分组的传输顺序。当发送器接收到ACK或者SACK时,发送器确定与接收器(在所接收的确认中)指示的已经接收的分组相关联的最高的传输号码。具有较低传输号码的任何未完成的未经确认的分组被假设为已丢失。
在一些实施例中,当到达分组已经被重传时,发送器呈现出模糊的情形:标准的ACK/SACK没有包含足够的信息来使发送器确定该到达分组的哪个传输触发了该确认。从而,在接收到模糊确认之后,发送器消除该确认二义性以将其与传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该模糊性。
在一个实施例中,发送器在所传输的数据分组中包含标识符,然后,接收器在确认中返回该标识符或者该标识符的函数。该标识符可以是时间戳(例如在RFC1323中描述的TCP时间戳)、序列号、可以被用来在分组传输的两个或多个实例之间进行解析的任何其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,使用高达32位唯一的信息来标记每个分组。接收到数据分组时,接收器通过确认将该唯一信息回送到发送器。发送器确保最初发送的分组和其重传的一个或者多个版本包含对于时间戳选项的不同值,这允许其明确地消除ACK的模糊性。发送器可以将该唯一信息保持在例如用来保存所发送的数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此很少或不会遇到互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可能要求十个字节的TCP首部空间,这降低了网络上有效吞吐率并且减少了可用于其他TCP选项的空间。
在又一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项相似的方式来消除二义性。发送器安排该分组的最初和重传版本的ID字段值,以使在IP首部中具有不同的ID字段。在接收器或其代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发该ACK的分组的ID字段的函数。由于该方法不需要发送额外的数据,保持了网络和TCP首部空间的效率,所以该方法是有益的。所选择的函数应有极大可能消除二义性。在优先实施例中,发送器选择IP ID值且将最高有效位设置为0。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为1。
在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理:由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组1的确认并且最后所接收的确认是针对数据分组5,那么发送器通过假设数据分组1的第三个实例导致了该确认来解决该模糊性。
选择性确认
设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCP SACK的实施例以确定已经收到哪些分组或没有收到哪些分组。该技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图1A或者1B,发送器(例如客户机102)被配置为通过网络104向接收器(例如服务器106)传输数据分组。作为响应,接收器将被称为SACK分组的TCP选择性确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持包含接收器实际已收到的数据分组的序列号的一组范围的列表或者其他适合的数据结构。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃的(left-off)指针,其包括对列表的引用并且指示从之前生成的SACK分组的放弃点。
当接收到数据分组时,接收器生成SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保留序列号的范围来指示一组已接收的数据分组。接收器用包括触发SACK分组的正在到达(landing)分组的序列号的范围来填充该SACK分组的第一字段。剩余可用的SACK字段用已收到的分组的列表的序列号的范围来填充。当该列表中的范围超过可以被载入SACK分组的范围时,接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从有序的列表连续插入SACK范围,从指针引用的范围开始并且沿列表持续向下,直到消耗完SACK分组的TCP首部中的可用的SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或三个附加的SACK范围可以被添加到SACK范围信息。
一旦接收器生成SACK分组,接收器将确认发送会发送器。然后,接收器在列表中将放弃的指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃的指针到达列表的末端,则指针被重置为列表的开始,从而有效地环绕已知所接收范围的列表,环绕该列表使得系统甚至能在SACK分组大量丢失的情况下良好地运行,这是由于一旦列表被环绕,则由于丢失的SACK分组导致的未被通信的SACK信息将最终被通信。
因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。首先,SACK分组指示在SACK分组生成时接收器刚刚收到该SACK信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指示接收器已经收到这些范围中的数据分组。SACK信息还暗示接收器在SACK分组生成时没有接收落入SACK信息的第二和随后的字段之间的任何一个数据分组。本质上,SACK信息中的第二和随后的字段之间的范围是所接收的数据中的“孔”,其中的数据是已知的未被传送的数据。因此,使用该方法,当SACK分组具有足够空间来包括多余两个的SACK范围时,接收器可以向发送器指示还没有被接收器接收的数据分组的范围。
在另一个实施例中,发送器使用上述的SACK分组结合上述重传技术来假定哪些数据分组已经被传送到接收器。例如,当重传算法(使用传输号码)宣告分组丢失时,发送器认为该分组仅是条件性丢失,因为有可能是识别该分组的接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组添加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,将来自SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据分组被宣告实际丢失并被随后重传。以此方式,组合这两个方案来将更好的关于已丢失且需要重传哪些分组的信息给予发送器。
事务边界检测
在一些实施例中,设备200或流控制器220使用被称为事务边界检测的技术。在一个实施例中,该技术适合于乒乓(ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器(发送器)发送数据然后等待来自另一个通信器(接收器)的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传超时来从与事务相关的最后的一个分组或多个的丢弃进行恢复。由于在一些实施例中,TCP RTO机制极端粗略,例如在所有情况中要求最小1秒的值,在这些情况下可以看到差的应用行为。
在一个实施例中,数据的发送器或耦合到发送器的流控制模块220检测所发送的数据中的事务边界。在检测到事务边界时,发送器或者流控制器220发送额外的分组,额外的分组的接收从接收器生成额外的ACK或者SACK响应。额外的分组的插入优选地限于改善的应用响应时间和网络能力利用之间的平衡。所插入的额外的分组的数量可以根据与该连接相关联的当前丢失率来进行选择,对于较高的丢失率的连接选择更多的分组。
检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并停止,则在一段时间之后发送器或流控制模块220宣告事务边界。这可以和其他技术相结合。例如,由发送器在TCP首部中设置PSH(TCP推送)位可以指示事务边界。因此,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中,如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。
响应于检测事务边界,发送器或流控制模块220向接收器传输额外的数据分组以便从接收器引发确认。因此,额外的数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或SACK。在一个实施例中,简单地重传事务的最后一个或多个分组。相比于仅发送虚拟的数据分组,如果最后一个或多个分组已经被丢弃,这就具有重传所需数据的增加的益处。在又一个实施例中,发送最后一个或多个分组的片段,允许发送器来消除来自于其最初分组的这些分组到来的二义性。这使接收器避免错误的混淆任意重新排序自适应算法。在又一个实施例中,任意数量的公知的前向纠错技术可被用来为所插入的分组生成额外的数据,这允许重新构造接收器处丢失的或以其他方式错过的数据。
在一些实施例中,当对事务中的最后的数据分组的确认被丢弃时,此处描述的边界检测技术有助于避免超时。当发送器或流控制模块220接收对于这些额外的数据分组的确认时,发送器可以从这些额外的确认来确定最后的数据分组是否已经被接收或这需要被重传,从而避免超时。在一个实施例中,如果最后的分组已经被接收但是它们的确认被丢弃,则流控制模块220生成对该数据分组的确认,并且将该确认发送到发送器,从而告知发送器该数据分组已经被传送。在又一个实施例中,如果没有收到最后的分组,则流控制模块220向发送器发送一个分组来使发送器重传丢弃的数据分组。
重新分组
在又一个实施例中,设备200或流控制器220使用重新分组技术来改善传输层网络流量。在一些实施例中,TCP性能和分组大小成比例。因此增加分组大小能改进性能,除非其引起大大增加的分组丢失率或其他非线性效应,例如IP分片。通常,有线介质(诸如铜缆或光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前,最大化分组大小是有益的(通过底层传输介质的协议来限制最大化的分组大小)。但是对于具有较高丢失率的传输介质(例如,诸如WiFi等的无线技术,或者诸如电力线网络等高损环境),增加分组大小可能导致较低的传输率,因为介质引发的错误导致整个分组被丢弃(即,介质引发的错误超过对于该介质的标准纠错码的能力),从而增加了分组丢失率。分组丢失率中的显著大的增加实际上否定了增加的分组大小的任何性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小可以根据每个链路的性质在传输路径时发生变化。
通过将设备200或流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或流控制器220将具有连续数据的分组重新分组为少量的较大分组。在又一个实施例中,设备200或流控制器220通过将一系列大分组分为大量的较小的分组来对分组进行重新分组。在其他实施例中,设备200或流控制器220监控链路特征并且通过重新组合来调整分组大小以提高吞吐量。
QoS
仍参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,(也被称为QoS控制器)。在又一个实施例中,例如,设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行改善任何网络连接的性能、操作或服务质量的一个或多个服务质量(QoS)技术的任何逻辑、商业规则、功能或操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或连接提供不同优先级的网络流量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或连接控制、维持或确保特定部分的带宽或网络容量。在一些实施例中,QoS引擎236监控对应于用户、应用、数据流或连接的性能或服务质量的所达到的水平,例如数据速率和延迟。响应于监控,QoS引擎236动态地控制或调整网络分组的调度优先级来获得期望水平的性能或服务质量。
在一些实施例中,QoS引擎236根据一个或多个类别或等级的服务来优先排序、调度和传输网络分组。在一些实施例中,服务类别或等级可以包括:1)尽最大努力,2)控制的负载,3)有保证的或者4)定性的。对于尽最大努力类的服务,设备200作出合理的努力来传送分组(标准服务水平)。对于控制的负载类的服务,设备200或QoS引擎236近似传输介质的标准的分组错误丢失或者近似轻度负载网络条件下的尽最大努力服务的行为。对于有保证类的服务,设备200或QoS引擎236保证来在连接期间以确定的速率传输数据的能力。对于定性类的服务,设备200或QoS引擎236将定性类服务用于要求或期望优先排序的流量的应用、用户、数据流或者连接,但不能对资源需求或服务水平进行定量。在这些情况中,设备200或QoS引擎236基于QoS引擎236的任意逻辑或配置或者基于商业规则或策略来确定服务类别或优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、295’指定的一个或多个策略来优先排序、调度和传输网络分组。
协议加速
协议加速器234包括用于优化、加速或以其他方式改善一个或多个协议的性能、操作或服务质量的任何逻辑、商业规则、功能或操作。在一个实施例中,协议加速器234在网络堆栈的层5-7的加速任何应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或层3的协议。在一些实施例中,协议加速器234被配置、构建或设计来根据数据类型、协议的特征和/或行为来优化或加速一个或多个协议的每一个。在又一个实施例中,协议加速器234被配置、构建或设计来改善用户体验、响应时间、网络或者计算机负载,和/或关于协议的网络或带宽利用。
在一个实施例中,协议加速器234被配置、构建或设计来最小化文件系统访问上的WAN延迟的影响。在一些实施例中,协议加速器234优化或加速CIFS(通用互联网文件系统)协议的使用来改善文件系统访问时间或对数据和文件的访问时间。在一些实施例中,协议加速器234优化或加速NFS(网络文件系统)协议的使用。在又一个实施例中,协议加速器234优化或加速文件传输协议(FTP)的使用。
在一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载为有效载荷的或使用任何类型和形式的标记语言的协议。在其他实施例中,协议加速器234被配置、构建或设计来优化或加速超文本传输协议(HTTP)。在又一个实施例中,协议加速器234被配置、构建或设计来优化或加速承载有效载荷或以其他方式使用XML(可扩展标记语言)的协议。
透明并且多点部署配置
在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任何数据流是透明的。在一个实施例中,设备200和/或网络优化引擎250以这样的方式操作:通过WAN的数据流是由任何网络监控、QoS管理或网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不创建用于传输可以隐藏、遮掩或以其他方式使网络流量不透明的数据的任何隧道或流。在其他实施例中,设备200透明地操作,因为设备不改变网络分组的任何源和/或目标地址信息或端口信息,诸如互联网协议地址或端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或其他设备或计算装置透明地操作或运转。也就是在一些实施例中,设备是透明的,因为不必修改网络上的任何装置或设备的网络相关配置来支持设备200。
可以下面的部署配置的任何一个来部署设备200:1)串行流量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以与以下的一个或多个串行部署:路由器、客户机、服务器或者另一个网络装置或设备。在其他实施例中,设备200可以与以下的一个或多个并行部署:路由器、客户机、服务器或者另一个网络装置或设备。在并行部署中,路由器、客户机、服务器或者其他网络设备可以被配置为转发、转换或通过网络至设备200或者经由设备200转发、转换或通过网络。
在串行的实施例中,设备200与路由器的WAN串行部署。以此方式,来自WAN的所有流量在到达LAN的目的地之前穿过该设备。
在代理模式的实施例中,设备200被部署为客户机和服务器之间的代理装置。在一些实施例中,设备200使客户机与网络上的资源间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到该资源、不同的资源、或者通过从高速缓存供应该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处所讨论的任何优化技术。在其他实施例中,设备200通过透明地拦截并转发到客户机和/或服务器的请求和响应来作为透明代理运行。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或网络。在一些实施例中,设备200可以在穿过该设备的任何网络流量上执行任何类型和形式的网络地址转换(被称为NAT)。
在一些实施例中,设备200以虚拟串行模式配置来部署。在该实施例中,具有路由或转换功能的路由器或网络装置被配置为转发、路由或以其他方式提供发往网络或设备200的网络分组。设备200接着在该网络分组上执行任一期望的处理,诸如此处讨论的任一WAN优化技术。当完成处理时,设备200将经处理的网络分组转发到路由器以传输到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但仍如同设备200串行一样操作。该部署模式还提供透明性,因为当分组被处理并经由设备通过网络传输时,保留了源和目标地址以及端口信息。
端节点部署
尽管在上文网络优化引擎250总是结合设备200来描述,但是网络优化引擎250或其任何部分可以被部署、分布或以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或服务器可以提供此处所描述的结合一个或多个设备200或者不结合设备200的网络优化引擎250的任何系统和方法。
现参考图2B,描述部署在一个或多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎250”。客户机102和服务器106可以建立传输层连接并且交换穿过或不穿过设备200的通信。
在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或以其他方式改善在客户机102与服务器106之间通信的网络流量的性能、操作或服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或以其他方式改善与客户机102通信的网络流量的性能、操作或服务质量。在又一个实施例中,服务器106的网络优化引擎250”结合设备200执行此处描述的技术来优化、加速或以其他方式改善与服务器106通信的网络流量的性能、操作或服务质量。
C.客户机代理
现参考图3,描述客户机代理120的实施例。客户机102包括客户机代理120,用于经由网络104与设备200、设备205和/或服务器106来建立、交换、管理和控制通信。在一些实施例中,客户机120(其也可以被称为WAN客户机)加速WAN网络通信和/或用于通过网络设备200通信。总的来说,客户机102在计算装置100上操作,该计算装置100拥有带有内核模式302以及用户模式303的操作系统,以及带有一个或多个层310a-310b的网络堆栈267。客户机102可以已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可通过网络堆栈267与网络104通信。所述应用之一,诸如web浏览器,也可包括第一程序322。例如,可在一些实施例中使用第一程序322来安装和/或执行客户机代理120,或其中任何部分。客户机代理120包括拦截机制或者拦截器350,用于从网络堆栈267拦截来自一个或者多个应用的网络通信。
与设备200一样,客户机102具有网络堆栈267,其包括任何类型和形式的软件、或硬件或其组合,用于提供与网络104的连接和通信。客户机102的网络堆栈267包括上文结合设备200所描述的任何一个网络堆栈实施例。在一些实施例中,客户机代理120或其任何部分被设计和构建为与由客户机102的操作系统安装或以其他方式提供的网络堆栈267一起操作或联合工作。
在进一步的细节中,客户机102或设备200(205)的网络堆栈267可包括任何类型和形式的接口,用于接收、获得、提供或以其它方式访问与客户机102的网络通信相关的任何信息和数据。在一个实施例中,与网络堆栈267的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制,事件或回调机制、或任何类型的接口技术。网络堆栈267通过接口可接收或提供与网络堆栈267的功能或操作相关的任何类型和形式的数据结构,例如对象。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、引用或识别在网络堆栈267的协议层处理的网络分组的一部分,例如传输层的网络分组。在一些实施例中,数据结构325包括内核级别数据结构,而在其他实施例中,数据结构325包括用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分、或者运行在内核模式302中的网络驱动程序或其它软件相关的数据结构、或者由运行或操作在操作系统的内核模式的服务、进程、任务、线程或其它可执行指令获得或收到的任何数据结构。
此外,网络堆栈267的一些部分可在内核模式302执行或操作,例如,数据链路或网络层,而其他部分在用户模式303执行或操作,例如网络堆栈267的应用层。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可包括网络堆栈267的一个或多个更上层,例如层5-7的任何层。在其它实施例中,网络堆栈267的第二部分310b包括一个或多个较低的层,例如层1-4的任何层。网络堆栈267的第一部分310a和第二部分310b的每一个可包括网络堆栈267的任何部分,位于任何一个或多个网络层,处于用户模式203、内核模式202,或其组合,或在网络层的任何部分或者到网络层的接口点,或用户模式203和内核模式202的任何部分或到用户模式203和内核模式202的接口点。
拦截器350可以包括软件、硬件、或者软件和硬件的任何组合。在一个实施例中,拦截器350在网络堆栈267的任一点拦截或以其他方式接收网络通信,并且重定向或者传输网络通信到由拦截器350或者客户机代理120所期望的、管理的或者控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并且传输该网络通信到设备200,用于在第二网络104上传输。在一些实施例中,拦截器350包括驱动器或是驱动器,例如被构建和设计来与网络堆栈267对接并一同工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350操作在网络堆栈267的一个或者多个层,诸如在传输层。在一个实施例中,拦截器350包括过滤器驱动器、钩子机制、或者连接到网络堆栈的传输层的任一形式和类型的合适网络驱动器接口,诸如通过传输驱动器接口(TDI)。在一些实施例中,拦截器350连接到诸如传输层的第一协议层和诸如传输协议层之上的任何层的另一个协议层,例如,应用协议层。在一个实施例中,拦截器350可以包括遵守网络驱动器接口规范(NDIS)的驱动器,或者NDIS驱动器。在又一个实施例中,拦截器350可以包括微型过滤器或者微端口驱动器。在一个实施例中,拦截器350或其部分在内核模式202中操作。在又一个实施例中,拦截器350或其部分在用户模式203中操作。在一些实施例中,拦截器350的一部分在内核模式202中操作,而拦截器350的另一部分在用户模式203中操作。在其它实施例中,客户机代理120在用户模式203操作,但通过拦截器350连接到内核模式驱动器、进程、服务、任务或者操作系统的部分,诸如以获取内核级数据结构225。在其它实施例中,拦截器350为用户模式应用或者程序,诸如应用。
在一个实施例中,拦截器350拦截或接收任何的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以设置目的地信息,诸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350把该连接的目的地信息设置为客户机代理120监听的客户机102的本地IP地址和端口。例如,客户机代理120可以包括为重定向的传输层通信监听本地IP地址和端口的代理服务。在一些实施例中,客户机代理120随后将重定向的传输层通信传送到设备200。
在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在又一个实施例中,拦截器发送所拦截的DNS请求到设备200以进行DNS解析。在一个实施例中,设备200解析DNS请求并且将DNS响应传送到客户机代理120。在一些实施例中,设备200经另一个设备200’或者DNS服务器106来解析DNS请求。
在又一个实施例中,客户机代理120可以包括两个代理120和120’。在一个实施例中,第一代理120可以包括在网络堆栈267的网络层操作的拦截器350。在一些实施例中,第一代理120拦截网络层请求,诸如互联网控制消息协议(ICMP)请求(例如,查验和跟踪路由)。在其它实施例中,第二代理120’可以在传输层操作并且拦截传输层通信。在一些实施例中,第一代理120在网络堆栈210的一层拦截通信并且与第二代理120’对接或者将所拦截的通信传送到第二代理120’。
客户机代理120和/或拦截器350可以以对网络堆栈267的任何其它协议层透明的方式在协议层操作或与之对接。例如,在一个实施例中,拦截器350可以以对诸如网络层的传输层之下的任何协议层和诸如会话、表示或应用层协议的传输层之上的任何协议层透明的方式在网络堆栈267的传输层操作或与之对接。这允许网络堆栈267的其它协议层如所期望的进行操作并无需修改以使用拦截器350。这样,客户机代理120和/或拦截器350可以与传输层对接以安全、优化、加速、路由或者负载平衡经由传输层承载的任一协议提供的任一通信,诸如TCP/IP上的任一应用层协议。
此外,客户机代理120和/或拦截器可以以对任何应用、客户机102的用户、客户机102和/或与客户机102通信的诸如服务器或设备200、206的任何其它计算装置100透明的方式在网络堆栈267上操作或与之对接。客户机代理120和/或拦截器350可以以无需修改应用的方式被安装和/或执行在客户机102上。在一个实施例中,客户机代理120或其任何部分被以对客户机102、设备200、205或服务器106的任何网络配置透明的方式被安装和/或执行。在一些实施例中,客户机代理120或其任何部分被以无需修改客户机102、设备200、205或服务器106的任何网络配置的方式被安装和/或执行。在一个实施例中,客户机102的用户或者与客户机102通信的计算装置未意识到客户机代理120或其任何部分的存在、执行或者操作。同样,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或设备200、205的另一个计算装置、或者在由拦截器350连接的协议层之上和/或之下的任何协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/或加速程序302。在一个实施例中,客户机代理120包括由佛罗里达州Fort Lauderdale的Citrix Systems公司开发的独立计算架构(ICA)客户机或其任一部分,并且也被称为ICA客户机。在一些实施例中,客户机代理120包括应用流客户机306,用于从服务器106流式传输应用到客户机102。在又一个实施例中,客户机代理120包括收集代理304,用于执行端点检测/扫描并且用于为设备200和/或服务器106收集端点信息。在一些实施例中,客户机代理120具有一个或多个网络加速或优化程序或代理,例如网络优化引擎250和加速程序302。在一个实施例中,加速程序302加速客户机102和服务器106之间的经过设备205’的通信。在一些实施例中,网络优化引擎250提供此处所讨论的WAN优化技术。
流客户机306是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于接收和执行从服务器106所流式传输的应用。服务器106可以流式传输一个或者多个应用数据文件到流客户机306,用于播放、执行或者以其它方式引起客户机102上的应用被执行。在一些实施例中,服务器106发送一组压缩或者打包的应用数据文件到流客户机306。在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它档案文件。在一个实施例中,服务器106解压缩、解包或者解档应用文件并且将该文件发送到客户机102。在又一个实施例中,客户机102解压缩、解包或者解档应用文件。流客户机306动态安装应用或其部分,并且执行该应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以能够启动另一个可执行程序。
收集代理304是用于识别、获取和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或者可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或者客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送在客户机102上收集的信息到设备200。在一个实施例中,设备200的策略引擎236使用所收集的信息来确定和提供客户机到网络104的连接的访问、验证和授权控制。
在一个实施例中,收集代理304包括端点检测和扫描机制,其识别并且确定客户机的一个或者多个属性或者特征。例如,收集代理304可以识别和确定任何一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别并确定客户机上任何一个或多个以下软件的存在或版本:1)防病毒软件;2)个人防火墙软件;3)防垃圾邮件软件,和4)互联网安全软件。策略引擎236可以具有基于客户机或客户机侧属性的任何一个或多个属性或特性的一个或多个策略。
SSL VPN代理308是应用、程序、进程、服务、任务或者可执行指令集,所述应用、程序、进程、服务、任务或者可执行指令集用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网(VPN)连接,或从客户机102到服务器106的SSL VPN连接。在一个实施例中,SSLVPN代理308建立从公共网104到专用网104’或104”的SSL VPN连接。在一些实施例中,SSL VPN代理308和设备205联合工作以提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在又一个实施例中,SSL VPN代理308建立与客户机上应用的第一传输层连接,以及与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200联合工作以提供SSL VPN连通。
在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)通过高速缓存管理器的高速缓存。另外,加速程序302可执行由客户机102接收和/或发送的任何通信的加密和/或解密。在一些实施例中,加速程序302以集成的方式或者格式执行一个或者多个加速技术。另外,加速程序302可以对作为传输层协议的网络分组的有效载荷所承载的任一协议或者多协议执行压缩。
在一个实施例中,加速程序302被设计、构建或配置为与设备205一起工作以提供LAN侧加速或者提供通过设备205提供的加速技术。例如,在由Citrix System公司出品的NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302在例如分支机构中的远程装置中提供独立的NetScaler加速技术。在其他实施例中,加速程序302和一个或多个NetScaler设备205联合工作。在一个实施例中,加速程序302提供网络流量的LAN侧或基于LAN的加速或优化。
在一些实施例中,网络优化引擎250可以被设计、构建或配置为与WAN优化设备200一起工作。在其他实施例中,网络优化引擎250可以被设计、构建或配置为用或不用设备200提供设备200的WAN优化技术。例如,在由Citrix System公司出品的WANScaler设备200的一个实施例中,网络优化引擎250包括WANScaler客户机。在一些实施例中,网络优化引擎250在例如分支机构的远程位置中提供独立的WANScaler加速技术。在其他实施例中,网络优化引擎250和一个或多个WANScaler设备200联合工作。
在又一个实施例中,网络优化引擎250包括加速程序302、或加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250或网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250作为从加速程序302分开的程序或可执行指令集而被提供或安装。在其他实施例中,网络优化引擎250和加速程序302可被包括在同一程序或同一可执行指令集中。
在一些实施例中,仍参见图3,第一程序322可以用于自动地、静默地、透明地或者以其它方式安装和/或执行客户机代理120或其任何部分。在一个实施例中,第一程序322包括插件组件,例如ActiveX控件或Java控件或脚本,其加载到应用并由应用执行。例如,第一程序包括由web浏览器应用加载和运行的ActiveX控件,例如在存储器空间或应用的上下文中。在又一个实施例中,第一程序322包括被例如浏览器的应用载入并执行的可执行指令集。在一个实施例中,第一程序322是被设计和构造为安装客户机代理120的程序。在一些实施例中,第一程序322通过网络从另一个计算装置获得、下载、或接收客户机代理120。在又一个实施例中,第一程序322是安装程序或即插即用管理器,用于在客户机102的操作系统上安装诸如网络驱动和客户机代理120或其任何部分的程序。
在一些实施例中,客户机代理120的每一或任一部分(流客户机360、收集代理304、SSL VPN代理308和拦截代理350)可作为单独的应用、程序、进程、服务、任务或可执行指令集而被安装、执行、配置或操作。在其他实施例中,客户机代理120的每一或任一部分可以一起作为单个客户机代理120而被安装、执行、配置或操作。
D.使用来自在中间装置之间共享的SSL会话池的SSL会话的系统和方法
可以通过SSL会话连接来提供客户机102和服务器106之间的端到端安全通信。可以跨越一个或多个中间装置来建立该连接,所述中间装置例如联网系统中的客户机102和服务器106之间的网络设备200。在一些实施例中,多个中间装置可以被配置成在服务器106和客户机102之间提供数据加速和/或其他服务。提供在一对中间装置之间的数据加速的该对中间装置可以使用在该对中间装置之间的信令隧道来建立用于通信的安全信道。
现参考图4A,示出了用于使用来自在中间装置200之间共享的SSL会话池477的SSL会话的系统400的一个实施例。总的来说,该系统示出了处理对于到服务器106的安全连接的客户机请求405的第一中间装置200a和第二中间装置200b。这些中间装置200可以是上文结合图1A-C、2A和3所述的设备200的任一实施例或者包括来自上文结合图1A-C、2A和3所述的设备200的任一实施例的特征。第一中间装置200a可以与一个或多个客户机102通信,而第二中间装置200b可以与一个或多个服务器106通信。在一些实施例中,客户机102可以与服务器106建立传输层连接,用于进行通信。在这些实施例的一些中,客户机102可以与第一中间装置200a建立SSL会话。第一中间装置200a有时被称为客户机侧中间装置200a。在一些其他实施例中,第一中间装置200a可以例如响应于来自客户机102的请求405,与客户机102建立SSL会话。
在一些实施例中,服务器106可以与第二中间装置200b建立SSL会话。第二中间装置200b有时被称为服务器侧中间装置200b。在一些实施例中,第二中间装置200b可以例如响应于来自客户机102、服务器106和/或第一中间装置200a的请求,与服务器106建立SSL会话。在又一个实施例中,可以响应于信令隧道450的建立与服务器106建立一个或多个SSL会话。
可以并发地或在不同时间建立客户机侧和服务器侧SSL会话。可以各自建立客户机侧和服务器侧SSL会话。在一些实施例中,可以基于一些触发器、配置或需求,例如响应于对等列表468,来建立一对客户机侧和服务器侧SSL会话。在一些实施例中,可以响应于同一事件来建立客户机侧和服务器侧SSL会话。例如且在一个实施例中,当客户机在系统(例如第一中间装置200a)注册时,建立客户机侧和服务器侧SSL会话。在又一个实施例中,当第一和第二中间装置200被初始化或者以其他方式被添加到网络104时,建立客户机侧和服务器侧SSL会话。在又一个实施例中,当客户机102和/或服务器106被添加到网络104时,建立客户机侧和服务器侧SSL会话。在又一个实施例中,当第一和第二中间装置被识别为处理与客户机102和/或服务器106相关的通信时,建立客户机侧和服务器侧SSL会话。例如以及在一个实施例中,当在对等列表468中识别第一和第二中间装置时,建立客户机侧和服务器侧SSL会话,所述对等列表468对用于通信的多个中间装置进行配对或分组。
在一些实施例中,在对客户机102和服务器102之间的通信的预期下,建立客户机侧和服务器侧SSL会话的其中一个或者两个都建立。在端到端SSL会话的其他部分之前或与其并行地建立客户机侧和服务器侧SSL会话的其中一个或两个,可以降低建立该端到端SSL会话的延迟和/或复杂度。客户机侧和服务器侧SSL会话可以共享一个或多个配置、设置、属性、标识符和/或其他信息。这些配置、设置、属性、标识符和/或其他信息可以通过下列的一个或多个来确定、维护、存储和/或管理:客户机102、服务器106、第一中间装置200a、第二中间装置200b和存储装置。在一些实施例中,SSL会话池管理器466确定、维护、存储和/或管理这些配置、设置、属性、标识符和/或其他信息。
第一中间装置200a和/或客户机102可以在第一中间装置200a和客户机102之间建立多个客户机侧SSL会话。下文中有时将与一个或多个客户机102相关的多个客户机侧SSL会话称为客户机侧SSL会话池。第二中间装置200b和/或服务器106可以在第二中间装置200b和服务器106之间建立多个服务器侧SSL会话。下文中有时将与一个或多个服务器106相关的多个服务器侧SSL会话称为服务器侧SSL会话池。
客户机102可以产生并传输去往服务器106的请求405以发起通信。在一些实施例中,请求405可以是对与服务器106的安全通信的请求。请求405可以包括任何形式或类型的消息、分组或通信,并且可以被加密和/或压缩。可以以任一类型或形式的通信协议,包括定制的、专用的和/或标准的协议,来实现请求405。在一些实施例中,请求405可以是例如发起与服务器106的安全通信的不安全通信。在又一个实施例中,可以经由安全通信信道,例如在客户机102和第一中间装置200a之间建立的SSL会话中,发送请求405。
在一些实施例中,请求405包括信令问候(Signaling Hello)协议消息。请求405可以识别期望的应用协议。而且,请求405可以包括能力细节,例如,关于客户机102的能力细节。请求405也可以是握手协议的部分,例如同步(SYN)信号或消息。请求405也可以包括发起沿例如第一和第二中间装置200之间的客户机-服务器网络路径的数据加速的请求。
请求405可以发起传输层(例如TCP)连接和/或SSl会话的建立。在一些实施例中,请求405被第一中间装置200a拦截或接收并且可以被路由到服务器106。在这些实施例的一个中,将请求405定向到第二中间装置200a。可以通过对等列表468a将第二中间装置200b识别为与第一中间装置200a成对或者以其他方式与第一中间装置200a相关。在一些实施例中,可以经由信令隧道450将请求405转发到第二中间装置200b。在其他实施例中,请求405发起在第一和第二中间装置之间的一个或多个信令隧道450的建立。该请求可以发起SSL会话的建立。该请求可以发起客户机102和服务器106之间的传输层连接的建立。响应于该传输层连接的建立,可以建立安全会话(例如,SSL会话)。
在一些实施例中,请求405包括对与建立到服务器106的连接相关的信息的请求。例如以及在一个实施例中,所请求的信息可以与在第二中间装置200b和服务器106之间建立的池的一个或多个SSL会话有关。可以通过一个或多个池管理器466来处理或管理这个请求405。
在一些实施例中,响应于请求405,第一中间装置200a确定在第一中间装置200a和第二中间装置200b之间信令隧道450是否可用。信令隧道450可以是任一类型或形式的通信隧道、信道、连接、会话或链接,并且可以以一个或多个通信协议,包括定制的、专用的和/或标准的协议,来实现信令隧道450。在一些实施例中,信令隧道450是用于但不限于控制消息、管理消息、握手消息和/或初始化消息的控制信道。信令隧道450可以支持或传输不同速率的数据传送,包括间断和连续的数据传送。在一些实施例中,信令隧道450不同于传统的通信信道,例如用于传送非控制消息的那些通信信道。信令隧道450可以是临时的隧道,或者在建立SSL会话之后可以是持续的。
信令隧道450可以被用于设置在第一中间装置200a和第二中间装置200b之间的数据加速,例如SSL加速。信令隧道450可以提供安全隧道,包括加密和/或其他安全措施。在一些实施例中,在对等列表468中识别的对等中间装置之间设置一个或多个信令隧道450。可以在一个或多个中间装置200上配置对等列表468。响应于在中间装置200上的该配置,中间装置200可以尝试与该中间装置的对等方中的一个或多个建立信令隧道450。可以通过任何方法来配置对等列表468,例如通过管理员或管理网络流量的某些方面的对等列表管理模块或进程。可以直接在中间装置200上配置对等列表468,或者可以例如经由请求(例如,请求405)将对等列表468传送到中间装置。可以从另一个中间装置200b、200c传送用于第一中间装置200a的对等列表468,并且可以经由现有的或已建立的信令隧道450来进行传送。
对等列表468有时被称为对等中间装置的配置列表。在一些实施例中,对等列表指示多对或多组可信的对等方或中间装置200。对等中间装置200可以使用对等证书或SSL证书来建立对等中间装置200之间的信任。可以使用任一形式或类型的标识符(例如,IP地址)来列出或指定对等列表468中的中间装置200。也可以通过域名来标识中间装置200,所述域名例如是完全限定域名(Fully Qualified Domain Name)。可以通过域名系统(DNS)来解析中间装置200的域名。如果SSL会话建立请求是由第一中间装置200a接收的,且该第一中间装置200a还没有被配置为在对等列表中具有第二中间装置200b或者其不能访问对等列表468,则中间装置200a可以负责对第二中间装置200b进行认证。第一中间装置200a还可以负责与第二中间装置200b建立信令隧道450。第一中间装置200a和第二中间装置200b可以例如响应于认证来开始更新对等列表468。该更新可以被应用于其中一个或两个中间装置200的对等列表468。
在一些实施例中,信令隧道450使一对中间装置能够互相进行认证。此外,信令隧道450可以允许一对中间装置200传送SSL特定信息。信令隧道450可以使该对中间装置200a、200b能设置一组SSL状态机对,以用于在客户机102和服务器106之间建立一个或多个SSL会话。在一些实施例中,信令隧道450被用于传送带外消息,例如SSL会话重新协商消息和SSL关闭消息。中间装置200还可以使用信令隧道450来传送关于信令代理的信息,例如代理的标识符、信令隧道互联网协议(IP)以及SSL加速规范。这些信息还可包括识别一对中间装置的操作配置或模式的信息,例如用于欺骗或分离代理模式的配置。
信令隧道450本身可以是在该对中间装置200之间的SSL连接。在一些实施例中,信令隧道450的建立可以要求在该对中间装置200上配置SSL配置信息。信令隧道450可以使用由在认证机构(CA)和中间装置200之间建立的隧道提供的现有架构的任何部分。信令隧道450可以支持用于在中间装置200之间或者在中间装置200和CA之间的内部协议通信的应用到应用协议功能。
可以使用多种方法来建立信令隧道450。在一个实施例中,在例如对等对的一个或两个中间装置200初始化时建立信令隧道450。在又一个实施例中,响应于例如由客户机请求450发起的新的SSL连接请求来建立信令隧道450。在建立了信令隧道450之后,该对中间装置200可以建立SSL上下文池。SSL上下文可以包括任何下列内容:用于建立SSL会话和/或连接的架构、配置、设置、状态机、握手操作和协议。在一些实施例中,SSL上下文池的建立允许在一对中间装置200之间快速分配新的SSL连接。与该SSL上下文池关联的一个或多个中间装置200可以管理这个池。对上下文池的管理可以包括但不限于分配、清除、维护SSL状态机和密钥。在一些实施例中,将SSL上下文池称为SSL会话池477。
在一些实施例中,在对等列表468中所识别的每个中间装置200可以创建多个SSL状态机。在其他实施例中,不论对等列表468如何,中间装置200可以例如响应于SSL会话建立请求405来创建多个SSL状态机。中间装置200可以创建与在该中间装置200和一个或多个客户机102和/或服务器106之间建立的多个SSL会话对应的多个SSL状态机。可以将多个SSL状态机到多个SSL会话的映射描述为一对一或者一对多的关系。第一中间装置200a可以创建第一多个SSL状态机,第一多个SSL状态机与由第二中间装置200b创建的第二多个SSL状态机相对应(例如根据对等列表468)。可以将第一多个SSL状态机到第二多个SSL状态机的映射描述为一对一或者一对多的关系。
响应于建立SSL会话的请求405,可以从第一多个和第二多个状态机中选择一对SSL状态机。在OpenSSL术语中,可以将SSL状态机称为SSL对象。在一些实施例中,每个状态机可以使用信令隧道450作为传输机构。在第一和第二中间装置200之间,这些中间装置200a的其中一个中间装置上的状态机可以运行于“接受”模式。在另一个中间装置200b上的状态机可以运行在“连接”模式下。在一些实施例中,“连接”模式状态机可以连接到唯一的“接受”状态机。
可以在信令隧道450上进行一对状态机之间的SSL握手。在第一中间装置200a处的第一状态机和在第二中间装置200b处的第二状态机可以使用OpenSSL应用编程接口(API)来加密/解密经由信令隧道450传送的数据。第一和第二状态机可以使用在信令隧道建立过程期间预先协商的密码对经由该信令隧道450传送的数据进行加密/解密。在一些实施例中,当完成SSL握手时,用于数据传送的传输机构从信令隧道450切换到传输层(例如,TCP)连接。然后,第一和第二状态机可使用传输层连接来作为传输机构以发送加密的流量。
可以将信令隧道450用于在一对中间装置200或SSL状态机之间传送任何其他类似或形式的信息。在一些实施例中,响应于请求405来传输信息444。在其他实施例中,响应于信令隧道450的建立来传输或交换信息444。信息444可以包括一个或多个信令IP地址。信令IP地址可以是用于识别下列之一的IP地址:中间装置200、状态机、客户机102和服务器106。信息444还可以包括与一个或两个SSL状态机池和/或中间装置200关联的信息,例如:
1.密码列表-中间装置200所支持的密码的列表。
2.池大小-该池的大小(例如,在初始化时)。
3.空闲池阈值-用于在空闲池容量低于这个阈值的情况下开始增长池的阈值。
4.低的池使用率阈值-用于在(例如,在预定量的时间内)池使用率低于这个阈值的情况下开始减小池的阈值。
在一些实施例中,信息444可以包括SSL代理参数,例如,用于初始化和/或建立SSL会话,其可以包括:
1.SSL服务类-用于数据传送的服务类的指示,例如,包括指示启用/禁用SSL加速的一个或多个位。
2.可信的CA-可信的认证机构的列表。
3.私钥存储表格-用于不同服务器106、客户机102和/或中间装置100的私钥的列表。
4.SSL服务类表格-包含IP地址和端口元组信息的表格或容器。在一些实施例中,对于每个元组,该表格包括引用代理配置表格的代理配置名和/或关键字的列表。
5.代理配置表格-具有多个条目的表格或容器,所述条目包括:
a.代理配置名-主关键字
b.虚拟服务器名称-当由客户机在请求405中(例如,经由客户机问候消息)发送服务器名称时可使用的所关联的虚拟服务器的标识符。
c.代理类型-识别SSL代理类型是分离类型或欺骗类型。
d.客户机和服务器侧配置数据-配置数据结构包括:
·私钥名-从私钥存储表格所引用的密钥名
·服务器证书-服务器106或虚拟服务器的证书。
·认证机构
·证书链-用于公钥密码学的RSA(Rivest、Shamir和Adelman)
/DSA(数字签名算法)格式。
·SSL协议版本
·密码列表-由中间装置200可用和/或协商的密码。
在一些实施例中,第一中间装置200a可以配置有用于加密和解密与第二中间装置200b的流量的密码列表,或反之亦然。一对中间装置200(例如,对等中间装置)可以在信令隧道建立期间协商用于加密的密码。可以由例如信令问候消息的请求405来发起该协商。当完成协商时,这对中间装置200可以将所协商的密码用于在这对中间装置200之间的加密/解密,其可以被限制为或可以不限于在信令隧道450中使用。在一些实施例中,可以为下列的任何两个之间的每个连接段协商和/或配置一个或多个密码:客户机102、第一中间装置200a、第二中间装置200b和服务器106。
除了通过密码提供的安全性之外,每个中间装置200可以在存储装置中加密、存储和/或保留部分数据。该存储装置可以是上文结合图1D和1E所述的存储单元128、122、140的任一实施例,或者包括其特征。在一些实施例中,该存储装置是数据库计算机(DBC)。该存储装置还可以存储与中间装置200关联的网络数据历史。该存储装置可以是由任一网络装置提供的并且可以驻留在一个或多个网络装置中,包括但不限于中间装置200、客户机102和/或服务器106。所存储的数据可以是基于每文件加密的。在一些实施例中,该系统可以加密与数据关联的整个盘、分区、逻辑卷和文件。例如,在一个实施例中,在Windows平台中,中间装置200可以使用文件来存储数据。在又一个实施例中,中间装置200可以将数据存储在Linux平台下的逻辑卷中。例如,在Linux中可以使用dm-crypt来加密数据。此外,交换文件可以包含被分页到盘的数据,其可以用于支持比从该存储装置物理可用的存储器更大的存储器。为了安全,可以对这个交换文件进行加密。
尽管在本公开中转移(passage)通常指状态机,但应理解每个状态机表示由硬件和软件的组合所实现的行为模型,并且同样地,可以由对应的硬件中间装置200的模块、组件和/或装置来执行本文所述的状态机的任何动作。此外,状态机或状态机对的选择可以等价于从SSL会话池477中选择对应的或相关的SSL会话。例如,且在一个实施例中,从第一和第二中间装置200的各自状态机池中选择一对状态机表示从第二中间装置200b的服务器侧SSL会话池477中选择SSL会话。而且,可以通过一个或多个池管理器466来维护和/或管理状态机池和/或SSL会话池。
在图4A的进一步的细节中,可以至少部分地通过第一中间装置200a、第二中间装置200b和/或其他网络组件来提供池管理器466。多个池管理器466可以驻留在一个或多个网络组件中,并且可以互相通信地操作。例如,且在一个实施例中,第一中间装置200a中的第一池管理器466可以与第二中间装置200b中的第二池管理器466’共同操作。通过举例说明而不旨在限制的方式,我们有时会将一个或多个池管理器466称为单个池管理器466。
可以以硬件或硬件和软件的组合来实现池管理器466。池管理器466可以被构建和配置为用于支持或提供SSL安全特征。池管理器466可以包括在一个或多个中间装置200上执行的任何模块、脚本、程序、代理、组件或可执行指令集。池管理器466可以具有在网络堆栈的一层或多层(例如传输层)操作的组件。池管理器466可以发起和/或建立SSL会话和SSL会话中的连接。可以响应于请求405、对等列表、信令隧道450的建立或通过其他方式来启动池管理器466或以其他方式使其变成活动的。此外,池管理器466可以创建、配置、维护或以其他方式管理多个SSL状态机。池管理器466还可以创建、维护和管理在一对中间装置200a、200b之间的SSL会话密钥和/或哈希消息认证码(HMAC)密钥的池。在一些实施例中,例如在从密钥池选择SSL会话密钥期间,池管理器466可以经由信令隧道450来协调或管理通信。此外,池管理器466可以协调或管理关于状态机、会话标识符和/或密码选择与匹配的通信。
在一些实施例中,池管理器466可以为(例如一对对等中间装置的)每个中间装置200维护多个状态机池。第一多个状态机池可以被称为专用池。专用池是中间装置200所拥有的池,其可以从该池分配用于SSL连接的状态机。图4B示出用于专用池443的状态机的一个实施例。第二多个状态机池可以被称为监控池445。监控池445是由对等中间装置200b拥有的池,但是它可以被中间装置200a用来监控该对等中间装置的状态机分配。图4C示出对于专用池443和监控池445的SSL状态机标识符的状态机的实施例。
在一些实施例中,每个专用池和监控池可以维护多个列表。在一个实施例中,该多个列表包括但不限于:
1.空闲列表:可用于分配的SSL状态机的列表;
2.分配列表:分配给连接的SSL状态机的列表;以及
3.要销毁列表:例如从对等中间装置确认后要销毁的SSL状态机的列表。
经由池管理器,每个中间装置200a可以创建和维护该中间装置的专用池和/或可以将该中间装置的监控池445与对等中间装置200b的专用池443进行同步。中间装置200a可以在用于同步监控池445的控制或协议消息中使用对等中间装置200b经由信令隧道传输的信息。如果中间装置200检测到对等方之间的信令隧道450已经结束,则状态机的专用池可以接收来自池管理器466的销毁事件。响应于该销毁事件,可以解除该专用池443。
池创建和池增长
为建立第一状态机池,第一中间装置200a可以确定初始池大小(比如说‘N’)并创建N个SSL状态机。在一些实施例中,初始池大小可以基于平台大小,例如,较小的初始池大小对应于较小的平台。在其他实施例中,每当从状态机池中识别SSL状态机对供使用时,系统可以维护并更新计数器值。当中间装置200a被初始化或重置时,中间装置200a可以访问所更新的计数器值并且以所更新的计数器值的可配置百分比开始。在这些实施例的一个中,可以使用大于预定的最小数的计数器值来确定初始池大小。例如,且在一个实施例中,如果所保存的计数器值为75、最小池大小为10并且可配置百分比为40%,则初始池大小可以被确定为30。这可以被设置为初始的计数器值,或者被保存为所更新的计数器值,直到达到更高的计数器值(开始于0)。
在一些实施例中,第一中间装置200a可以部分地基于下列的一个或多个来确定初始池大小:可用的资源(包括带宽和会话计数限制)、关于客户机102和/或服务器106的信息,以及来自请求405和/或中间装置200的配置或用户设置的信息。可以通过唯一标识符来标识每个SSL状态机。池管理器可以将这些状态机的每一个连接到信令隧道用于分组传输。然后,第一SSL状态机池可以移到“接受”状态。池管理器466可以生成并向第二中间装置200b发送池更新消息。池更新消息可以包括但不限于下列信息:
1.设置为“创建请求”的请求标识符;
2.理想的池大小N;以及
3.SSL状态机标识符的列表。
在一些实施例中,第二中间装置200b(例如,对等中间装置)通过信令隧道450接收池更新消息。第二中间装置200b可以创建所需数量的SSL状态机以形成第二状态机池。例如,且在一个实施例中,第二中间装置200b响应于池更新消息创建N个SSL状态机。第二中间装置200b还可以生成并给第二池中的每个状态机分配唯一标识符。池管理器466可以将来自第二池的状态机与来自第一池的状态机相关联。在一些实施例中,池管理器466可以通过根据每个状态机对的标识符生成该状态机对的标识符来将第一和第二状态机池的标识符进行配对。例如,来自第一池的第一状态机的标识符与来自第二池的第二状态机的标识符的组合可以生成标识包括第一和第二状态机的SSL状态机对的唯一标识符。例如,如果第一状态机标识符为‘1234’并且第二状态机标识符为‘5678’,则基于对状态机标识符进行连接,可以由标识符‘12345678’来标识SSL状态机对。
第二中间装置200b可以发送池更新响应,在一个实施例中包括但不限于:
1.设置为“创建完成”的请求标识符;
2.与第一池关联的SSL状态机标识符的列表;以及
3.与第二池关联的SSL状态机标识符的列表。
响应于接收池更新响应,第一中间装置200a可以将SSL状态机标识符进行配对和存储。第一中间装置200a还可以更新它的空闲池列表471。池管理器466可以代表第二中间装置200b来将第二池的SSL状态机连接到信令隧道450,以用于通过信令隧道450来发送分组。此外,池管理器466可以将第二池的状态机移到“连接”状态。在一些实施例中,将第二池的状态机移到“连接”状态完成了SSL状态机对之间的SSL握手。对于大小为N的状态机池来说,可以在信令隧道450上完成N次SSL握手。池更新消息的发送者(例如,第一中间装置200a)可以将SSL状态机对标识符的集合添加到该发送者的专用池443。对等中间装置(例如,第二中间装置200b)可以相应地将这些标识符添加到该对等中间装置的监控池445。因此,上文所讨论的使用池更新消息和池更新响应的机制使得能够在状态机池中进行增长。
在一些实施例中,该系统包括可配置参数,该可配置参数确定用于管理或维护池大小的空闲池阈值。如果空闲池容量低于该空闲池阈值,则池管理器466可以将池容量增加到最大份额。例如,且在一个实施例中,可以通过只要该池容量低于该最大份额和空闲池阈值就连续地将池容量增加一倍,来进行这种增加。例如,且在又一个实施例中,如果我们将最大份额设置为25,空闲池阈值设置为100并且初始池大小设置为10,则该池可以逐步增长为20(加倍的)、40(加倍的)、65(增加最大份额)、90(增加最大份额;低于空闲池阈值)。在一些实施例,可以将状态机对的池视为具有两个所有者(第一中间装置200a和第二中间装置200b)。在这些实施例中,池管理器466可以致力于当一个所有者的池缩小时维护或增长该池的大小。在一些实施例中,池管理器466可以在确定用于增长池的增长因子期间记录该池减小的速率。
可以在SSL会话池的创建和增长期间将来自客户机侧池和服务器侧池的SSL状态机进行配对。在一些实施例中,具有处于“连接”状态的SSL状态机的中间装置200可以将中间装置200的SSL会话标识符设置为信令隧道450的SSL会话标识符。在这些实施例的一些中,将中间装置200的SSL会话标识符设置为信令隧道450的SSL会话标识符导致密钥交换过程被跳过。在一些实施例中,跳过该密钥交换过程可以加速SSL会话的建立。
在一些实施例中,每个中间装置200可以创建对应于N个SSL状态机的N个存储器基本输入/输出(BIO)的集合。然后,每个SSL状态机可以连接到一个存储器BIO。在一些实施例中,将要通过TCP连接发送的数据写入存储器BIO的写缓冲器(wbio)。可以从存储器BIO的读缓冲器(rbio)读取该TCP连接上的输入数据。对于从第一中间装置200a到第二中间装置的数据传送(例如,通过WAN),第一中间装置200a可以通过分离分组的有效载荷和头部来处理该分组。第一中间装置200a可以确定状态机对标识符来识别SSL状态机,以从其进行传输。第一中间装置200a可以将有效载荷放在连接到所识别的SSL状态机的存储器BIO中。第一中间装置可以加密该有效载荷并且重新附加头部以形成用于传输的新的分组。在一些实施例中,该头部是明文的(即未被加密)。
对于输入的分组,接收中间装置(例如,第二中间装置200b)可以处理该分组以确定状态机对标识符。基于该状态机对标识符,接收中间装置可以识别用于接收该分组的SSL状态机。所识别的状态机可以分离头部和加密的有效载荷,并且将该有效载荷存储在连接到所识别的SSL状态机的存储器BIO中。所识别的状态机可以解密该有效载荷并且重新将头部附加到解密的有效载荷以形成新的所接收的分组。
在图4B和4C的进一步的细节中,且在一个实施例中,为了建立SSL会话,第二中间装置200b可以根据第二中间装置的专用池443上的空闲列表471分配SSL状态机对。第二中间装置200b可以将第二中间装置的专用池443上的状态机对从空闲列表471移到分配列表472。第二中间装置200b可以将包括这个SSL状态机对的标识符的消息(例如,SYN-ACK消息)传输到第一中间装置200a。第一中间装置200a可以从该消息中提取该标识符,并且将监控池445上对应的状态机对从空闲列表471移到分配列表472。图4C中,这表示从“空闲ID”到“分配的ID”的状态机转换。
池减小
池管理器466可以设置SSL会话池的有效使用率阈值,并且周期性地跟踪实际的使用率。如果有效使用率没有超过该阈值,则池管理器466可以将池大小减小某一预定百分比或动态地确定的百分比。池管理器可以维护使用率统计数据,例如每个SSL会话或中间装置200的最大使用率,每个时间段的使用率、跨越与中间装置200关联的一个或多个SSL会话所聚集的池的存储器使用率。在一些实施例中,到期的或要销毁的状态机的数量可能较小,例如与状态机的增长相比较小。
为了减小或缩小专用池,中间装置200a可以从空闲列表471识别要移除的多个SSL状态机对。可以从空闲列表471的末端(或任何部分)移除这些SSL状态机对。池管理器466可以代表中间装置200a向对等中间装置200b发送池更新消息。该池更新消息可以包括被识别为移除的状态机对的对应标识符。该池更新消息的请求标识符可以被设置为“销毁请求”,指示该状态机对要被移除对。然后,中间装置200a可以将所识别的SSL状态机对移到该中间装置的专用池443上的要销毁列表473。对等中间装置200b可以通过信令隧道450接收该池更新消息。响应于该池更新消息,对等中间装置200b的池管理器466可以将所识别的SSL状态机从空闲列表471移到监控池445上的要销毁列表473。池管理器466可以发送回包括被识别为要移除的状态机对的标识符的池更新响应。该池更新响应的请求标识符可以被设置为“销毁完成”以确认在对等中间装置200b处已经同步了该移除更新(如监控池445中所反映的)。在一些实施例中,响应于接收池更新响应,中间管理装置200a的池管理器466可以刷新要销毁列表473。
SSL会话到期
在一些实施例中,在将SSL会话密钥分配给TCP连接之前,完成SSL状态机之间的SSL握手。在一些实施例中,对于多个TCP连接重复使用同一SSL会话密钥。为了实现SSL会话密钥的重新协商,对等中间装置200可以交换用于SSL会话密钥的使用期参数。可以在信令隧道450的建立期间进行该交换。每个对等中间装置的使用期参数可以在值上存在差异。在一个实施例中,可以计算两个使用期参数值中的最小值,并且将其用于确定SSL会话的使用期。在其他实施例中,可以使用所述使用期参数值的最大、平均或其他函数。可以用基于所计算的值的到期时间来给每个SSL状态机对加标签。每个SSL状态机对可以周期性地检查SSL会话密钥的到期。
中间装置200可以将到期的状态机(即SSL会话)从空闲列表471或分配列表472移到要销毁列表473并且向对等中间装置200b发送池更新消息。响应于该池更新消息,对等中间装置200b可以从该对等中间装置的监控池444上的空闲列表中删除对应的SSL状态机,并且发送确认响应。响应于该确认响应,中间装置200a可以刷新或清空它的要销毁列表473。
在一些实施例中,如果中间装置200a在其分配列表472上发现到期的SSL状态机,则该中间装置200a的池管理器466可以进行等待直到现有的SSL会话或连接被关闭为止,使得这些状态机被返回到空闲列表471。为了避免重新分配最近到期的状态机,该系统可以在将状态机分配给SSL会话之前检查该SSL状态机是否到期。
现参考图4D,流程图描述了使用来自中间装置200之间共享的SSL会话池的安全套接字层(SSL)会话的方法480中所采取的步骤的实施例。该方法包括由第一中间装置接收包括第二中间装置的对等列表468(401)。第一中间装置200a与一个或多个客户机通信,并且第二中间装置200b与一个或多个服务器通信。第一中间装置与第二中间装置建立信令隧道(403)。第二中间装置的池管理器维护关于由第二中间装置与服务器建立的池中的一个或多个SSL会话的信息(405)。第一中间装置接收关于由第二中间装置与服务器建立的池中的一个或多个SSL会话的信息(407)。第一中间装置接收来自客户机的、与服务器建立SSL会话的请求(409)。客户机来自与第一中间装置通信的一个或多个客户机。第一中间装置从SSL会话池识别SSL会话(411)。第一中间装置响应于所述请求与客户机建立该SSL会话(413)。
现参考图4D,更具体地,该方法包括由第一中间装置接收包括第二中间装置的对等列表468(401)。第一中间装置200a与一个或多个客户机102通信,且第二中间装置200b与一个或多个服务器106通信。第一中间装置200a可以从下列的一个或多个接收对等列表468:系统400的管理员、第二中间装置200b、第三中间装置200c、客户机102、服务器106、存储装置或其他网络组件。在一些实施例中,管理员可以将对等列表468配置到第一中间装置200a中。在一些实施例中,第一中间装置200a响应于事件(例如接收请求405)来请求对等列表468。在其他实施例中,第一中间装置200a响应于诸如接收请求405(例如SYN消息)的事件来创建对等列表468。在这些实施例的一些中,第一中间装置200a基于在请求405中包含的信息来创建对等列表468。在又一个实施例中,中间装置200a接收在请求405中的对等列表468。
在一些实施例中,第一中间装置200a可以基于对等列表468来识别第二中间装置200b。第一中间装置200a可以将第二中间装置200b识别为对等中间装置200b,例如,可信的中间装置200b。第一中间装置200a可以从多个中间装置200中识别第二中间装置200b,例如由对等列表468所识别的中间装置。第一中间装置200a可以基于来自客户机102的请求405来识别第二中间装置200b,例如由该请求405中信令IP地址所识别的中间装置。例如,并且在一个实施例中,第一中间装置200a可以基于第二中间装置与该响应405中识别的服务器106的关联来识别第二中间装置200b。第一中间装置200a可以确定是否存在到第二中间装置200b的信令隧道450。如果不存在任何信令隧道450,则第一中间装置200a可以向客户机102发送对SYN请求405的响应(例如,SYN-ACK),该响应不附加SSL选项。在一些实施例中,这发起与第二中间装置200b的连接,而无需SSL加速。
在一些实施例中,第一中间装置与第二中间装置建立信令隧道450(403)。第一中间装置200a可以响应于对等列表468和请求405中的一个或两个来建立信令隧道450。在一些实施例中,在接收来自客户机102的请求405之前建立信令隧道450。第一和/或第二中间装置200的池管理器466或其他组件可以代表第一和/或第二中间装置200,或者基于第一和/或第二中间装置200的指示,来建立信令隧道450。第一中间装置200a可以建立信令隧道450作为与第二中间装置200b的安全连接。第一中间装置200a可以建立信令隧道450以用于与第二中间装置200b交换控制消息。第一中间装置200a可以建立信令隧道450以设置与第二中间装置200b的SSL会话连接。
第一中间装置200a可以发起对第二中间装置200a的认证。第一中间装置200a可以与第二中间装置200b协商密码或加密方法。第一中间装置200a和第二中间装置200b可以从在这两个中间装置200中的一个或两个中配置的密码或加密密钥池中进行选择。一个或两个中间装置200可以使用通过信令隧道450协商的密码来加密在中间装置200之间交换的一些或全部数据。
第一中间装置200a可以例如响应于信令隧道450和/或对等列表468的建立来与一个或多个客户机102建立一个或多个SSL会话。第二中间装置200b可以例如响应于信令隧道450和/或对等列表468的建立来与一个或多个服务器106建立一个或多个SSL会话。在一个实施例中,第二中间装置200b对于一个或多个SSL会话池与多个服务器106的每一个建立一个或多个SSL会话。第一中间装置200a可以对于一个或多个SSL会话池477与多个客户机102的每一个建立一个或多个SSL会话。响应于信令隧道450的建立,第一中间装置200a和第二中间装置200b的其中一个或两个可以创建一个或多个SSL状态机。第一中间装置200a的池管理器466可以将第一(或客户机侧)SSL状态机池与在客户机102和第一中间装置200a之间建立的一个或多个SSL会话相关联。第二中间装置200b的池管理器466可以将第二(或服务器侧)SSL状态机池与在服务器106和第二中间装置200b之间建立的一个或多个SSL会话相关联。
在一些实施例中,第二中间装置200b的池管理器维护关于由第二中间装置200b与服务器建立的池477中的一个或多个SSL会话的信息(405)。第一中间装置200a的池管理器466可以维护关于由第一中间装置200a与客户机102建立的池477中的一个或多个SSL会话的信息。一个或多个池管理器466可以维护关于第一和/或第二状态机池477的信息。一个或多个池管理器466可以维护关于在一个或两个中间装置200上配置的密码或加密密钥池的信息。此外,一个或多个池管理器466可以在上文结合图4A所述的一个或多个存储装置上维护任何这些信息。
池管理器466可以维护对在中间装置之间的当前的和过去的SSL会话的统计,包括每个SSL会话的使用率统计。池管理器466可以维护每个SSL会话池477的池阈值、池大小计数器、池大小的变化速率和增长量。池管理器466可以维护、更新和记录每个中间装置200的专用池443和/或监控池445。池管理器466可以维护、更新和记录中间装置200的空闲池471、分配池472和要销毁池473。池管理器466可以维护和记录SSL会话的状态机对标识符,无论SSL会话是活动还是到期的。
在图4D的进一步的细节中,第一中间装置200a经由信令隧道450从池管理器466接收关于一个或多个SSL会话的信息444(407)。第一中间装置200a的池管理器466a可以从第二中间装置200b的池管理器466b接收该信息444。第一中间装置200a可以从第二中间装置200b查询关于池477的一个或多个SSL会话的信息。第二中间装置200b可以向第一中间装置200a转发关于池477的一个或多个SSL会话的信息。第一中间装置200a可以与(例如,由第二中间装置200b维护的)存储装置通信以访问关于一个或多个SSL会话477的信息。
第一中间装置200a可以接收对于池477的一个或多个SSL会话的会话特定数据。例如,且在一个实施例中,池管理器466可以通过收集和/或传输会话特定数据来识别服务器侧的多个SSL会话和/或状态机的其中一个。可以随机地或基于历史记录和/或来自客户机102的请求450来识别多个SSL会话和/或状态机的其中一个。
在一些实施例中,所接收的信息444可以包括上文结合图4A-4C所述的任何信息444。可以在接受来自客户机102的请求450之前传输和/或交换信息444。在一些实施例中,响应于对等列表来传输和/或交换信息444。也可以响应于信令隧道450的建立来传输和/或交换信息444。第二中间装置200b可以在向第一中间装置200a进行传输之前对信息444的一些或全部进行加密。第二中间装置200b可以使用与中间装置200a协商的密码或加密密钥来对信息444的一些或全部进行加密。接收信息444的第一中间装置200a可以例如使用与中间装置200a协商的密码或加密密钥来对信息444进行解密。
第二中间装置200b还可以在向第一中间装置200a进行传输之前对信息444进行压缩或其他处理。第二中间装置200b可以经由信令隧道450通过一个或多个消息来发送信息444。第二中间装置200b可以发送包括SSL状态机对标识符的信息444。第二中间装置200b可以响应于来自第一中间装置200a的SSL池更新消息来发送信息444。第二中间装置200b可以以在对SSL池更新消息的SSL池更新响应中发送信息444。
在一些实施例中,第一中间装置接收来自客户机的、与服务器建立SSL会话的请求(409)。第一中间装置200a可以接收与服务器106建立SSL会话的请求405。当来自客户机103的请求405去往服务器106,第一中间装置200a可以拦截该请求。第一中间装置200a可以响应于在客户机102和第一中间装置200a之间的SSL会话的建立来接收请求405。第一中间装置200a可以接收与第二服务器106b建立第二SSL会话的请求405。第一中间装置200a可以在已经建立了信令隧道450之后接收请求405。第一中间装置200a可以在已经将一些信息444传输到第一中间装置200a之后接收请求405。
第一中间装置200a可以接收作为客户机问候消息和/或SYN消息的部分的请求405。第一中间装置200a可以接收作为发起和/或建立SSL会话的握手过程的部分的请求405。第一中间装置200a可以接收具有SSL相关选项的请求405。第一中间装置200a可以接收包括例如标识一个或多个服务器106的一个或多个信令IP地址的请求405。第一中间装置200a可以接收包括对数据加速、压缩和/或加密的请求的请求405。第一中间装置200a可以接收包括对关于第一装置200a的对等列表的至少一部分的请求405。
响应于请求405,第一中间装置200a可以识别用于建立连接的第二中间装置200b。如果第二中间装置200a不在第一中间装置200b的对等列表468a中,则第一或第二中间装置可以发起对它们的对等列表中的一个或两个的更新。如果在第一和第二中间装置之间还不存在信令隧道450,那么第一中间装置200a可以根据上文结合步骤403所述的处理步骤来开始建立信令隧道450。可选地,该操作之后可以是在上文结合步骤405和/或407描述的处理步骤的任一实施例。
响应于请求405,第二中间装置200a可以向第一中间装置200a和/或池管理器466发送额外的信息。该信息发送可以补充较早发送的信息444。该信息可以包括SSL代理设置信息。例如,且在一个实施例中,可以将该信息作为确定要建立的代理类型(即分离或欺骗)的SSL代理握手的部分来进行交换。而且,该信息可以包括上文结合图4A所述的信息444的任何实施例。此外,可以在第一和第二中间装置之间交换例如SSL会话密钥、IP地址-端口元组、虚拟服务器名称或其他客户机和/或服务器侧配置细节的信息。在一个实施例中,对于欺骗代理的配置信息包括引用SSL密钥存储表格的服务器私钥。在又一个实施例中,对于分离代理的配置信息包括在SSL密钥存储表格中配置的服务器证书、证书链和其他数据。
在步骤411的进一步的细节中,第一中间装置200a从SSL会话池477中识别SSL会话。第一中间装置200a可以从一个或多个服务器侧SSL会话的池中请求可用的SSL会话。第一中间装置200a可以从服务器侧SSL状态机池477请求可用的SSL状态机。第一中间装置200a可以请求第二中间装置的专用池443的空闲列表471中的SSL状态机。在一些实施例中,池管理器466从SSL会话池477中识别SSL会话。池管理器466可以从服务器侧SSL会话中识别SSL会话。池管理器466可以从服务器侧SSL状态机池识别SSL状态机。池管理器466还可以从客户机侧SSL状态机池中识别SSL状态机。
池管理器466可以从服务器侧和客户机侧SSL状态机池中识别一对SSL状态机。池管理器466可以使用SSL状态机器对标识符来标识这对SSL状态机。池管理器466、第一中间装置200a和/或第二中间装置200b可以基于下列中的一个或多个来从多个服务器侧SSL会话中确定SSL会话:所识别的服务器106、从服务器侧和客户机侧SSL状态机池所识别的SSL状态机、请求405、信息444和所交换的其他信息。第一中间装置200a的池管理器466可以向第二中间装置200a识别对来自一个或多个SSL会话池的SSL会话的使用。可以将该识别作为用于SSL会话建立的握手通信的部分传送到第二中间装置200b。
在一些实施例中,进行握手过程以将客户机侧状态机和服务器侧状态机进行配对用于SSL会话建立。第二中间装置200a可以从第二中间装置的专用池443的空闲列表471中选择SSL状态机。第二中间装置200a可以使用在信令隧道450的建立期间协商的HMAC密钥来计算所选择的状态机的标识符的哈希消息认证码(HMAC)。第二中间装置200a可以将该HMAC和标识符附加于到第一中间装置200a的消息(例如被附加为SYN-ACK消息中的TCP选项)。可以将该消息与上文所述的其他SSL相关选项和信息一起进行传输。
第一中间装置200a可以接收具有该标识符的消息。第一中间装置200a可以使用预先协商的HMAC密钥来计算该标识符的HMAC。第一中间装置200a可以对比在该消息中所接收的HMAC来验证该HMAC。如果对比该消息中接收的HMAC证实该HMAC有效,则第一中间装置200a可以根据所选择的SSL状态机来更新第一中间装置的监控池445。在一些实施例中,如果HMAC不匹配该消息中的HMAC,则第一中间装置200a可以不向客户机102转发该消息。服务器最后可能超时并且重新发送带有相同的标识符或又一个标识符的又一个消息。可以重复该过程直到接收到有效的HMAC,或者直到服务器106重置该连接。池管理器466可以根据该有效的标识符来确定状态机对标识符。池管理器466可以基于该状态机对标识符来识别客户机侧状态机。
在一些实施例中,第一中间装置响应于所述请求来与客户机建立SSL会话(413)。池管理器466可以经由所识别的SSL状态机对代表第一中间装置200a与第二中间装置200b建立SSL会话。可以响应于有效的状态机对来建立SSL会话。池管理器466可以将所识别的SSL状态机对移到中间装置的专用池443的相应的分配列表472中。第二中间装置200b可以配置中间装置之间的SSL会话以具有与服务器106的所识别的SSL会话的相同的SSL会话标识符。第二中间装置200b可以配置中间装置之间的SSL会话以具有与服务器106的所识别的SSL会话的相同SSL会话密钥。第一中间装置200a可以配置客户机侧SSL会话以具有与服务器106的所识别的SSL会话的相同SSL会话标识符。第一中间装置200a可以配置客户机侧SSL会话以具有与服务器106的所识别的SSL会话的相同SSL会话密钥。第一和/或第二中间装置200可以通过经由客户机侧、服务器侧和中间装置SSL连接段建立的单个SSL会话来连接客户机102和服务器106。
第一和第二中间装置可以确定是否跨越中间装置200加速数据传送。第一和第二中间装置可以基于在第一和第二中间装置200之间交换的信息来确定是否加速数据传送。在一些实施例中,如果中间装置200中的一个或两个能够支持数据加速,则池管理器466将客户机侧和服务器侧状态机配对。在其他实施例中,池管理器466将用于SSL会话建立的客户机侧和服务器侧状态机配对,而无论中间装置200中的一个或两个是否能够支持数据加速。
E.经由中间装置对SSL进行分离代理
可以跨越在两个端点(例如,客户机和服务器)之间部署的多个中间装置来实现对SSL通信的分离代理。可以经由一个或多个网络104连接客户机102,服务器106和中间装置200,在图1A-1C和4A中描述了一些实施例。中间装置200b(下文有时也称为“服务器侧中间装置”)可以与服务器106建立安全连接(下文有时称为“服务器侧”连接)例如,SSL连接。另一个中间装置200a(下文有时也称为“客户机侧中间装置”)可以与客户机102建立安全连接(下文有时称为“客户机侧”连接)例如,SSL连接。这两个中间装置200a、200b可以用这两个中间装置之间的又一个安全连接来桥接该客户机侧和服务器侧连接。
可以使用一个或多个加密密钥来使这三个连接安全。当从服务器106向客户机102传输数据时,例如,本文所公开的系统和方法可以给每个安全连接分配密钥并且隔离每个密钥在所分配的安全连接中的使用,而不是跨越中间装置传递加密密钥信息。相应地,使用相应的加密密钥来加密经由每个安全连接发送的数据,并且可以在该安全连接的接收端使用相同的加密密钥来对所述数据进行解密(例如从服务器106发送的且由服务器侧中间装置200b接收的数据)。在经由又一个安全连接重新传输之前,可以使用又一个加密密钥来对所接收的数据进行加密并且相应地在接收端对所述数据进行解密(例如,从服务器侧中间装置200b发送的且在客户机侧中间装置200a处接收的数据)。
在一些实施例中,可以将加密密钥分配给两个或更多个安全连接。举例来说,且在一个实施例中,客户机侧连接和这两个中间装置之间的连接可以共享相同的加密密钥,而同时可以给服务器侧连接分配另一个加密密钥。因此,可以在该网络路径的相应部分中使用并且隔离每个密钥。因此,可以使用本文所述的方法和系统经由代理(即中间装置)在两个网络端点(例如,客户机和/或服务器)之间配置多个安全连接和密钥分配。相应地,可以保护和隔离用于保护数据传送的加密密钥(例如,服务器侧私有网络密钥),而不会产生沿数据传输网络路径跨越代理的过度暴露。
现参考图5A,示出了用于跨越中间装置分离代理SSL通信的系统的一个实施例。总的来说,该系统示出了处理客户机102和服务器106之间的连接请求的客户机侧(例如,第一)中间装置200a和服务器侧(例如,第二)中间装置200b。这些中间装置200可以包含来自上文结合图1A-C、2A、3和4A所述的设备200的任一实施例的特征。
尽管将客户机和服务器描述为网络端点,但这个实施例仅是示例而非旨在进行限制。例如,可以将任何网络节点或中间装置称为端点。此外,出于示例说明的目的,仅参考了客户机侧中间装置200a和服务器侧中间装置200b,尽管在两个网络端点之间可以驻留任何数量的中间装置(并不限于两个中间装置),并且取决于如何限定网络端点和/或中间装置200相对于“客户机”端点、“服务器”端点和/其他中间装置200’的相对位置,可以将这些中间装置的任何一个识别为“客户机侧”或“服务器侧”。相应地,本文所述的方法和系统可以应用于两个网络端点之间的任何数量的中间装置和连接会话。
举例来说,且在一个实施例中,图5B示出了驻留在服务器106和服务器侧中间装置200b之间的另外的中间装置200c。中间装置200a可以被识别为相对于中间装置200b的客户机侧中间装置。然而,中间装置200b可以被识别为相对于中间装置200c的客户机侧中间装置。在一些实施例中,中间装置200b和200c可以被引用为单个节点或单元,例如相对于客户机侧中间装置200a的服务器侧中间装置200bc。中间装置200b和200c可以作为一个单元进行互操作,或者以其他方式相对于服务器106和/或中间装置200a将它们本身表现为单个中间装置200bc。
重新参考图5A,中间装置200a、200b可以经由任何类型或形式的通信链路、连接或会话(下文有时总的称为“连接”或“会话”)进行通信。同样地,每个网络端点可以经由任何类型或形式的连接与相邻的中间装置200进行通信。在一些实施例中,这些连接可以包括相同类型或不同类型的连接。例如,且在一个实施例中,一些连接可以是安全连接。例如使用一种或多种类型的安全密钥加密。一些连接可以是不安全的连接或提供有限的安全性。一些连接可以包含某一类型或形式的SSL加密、防火墙和/或虚拟专用网络保护。一些连接可以应用数据压缩、加速、缓存和/或任一其他类型或形式的数据处理。一些连接可以支持一种或多种通信协议,包括标准的、定制的和/或专有的协议。
对于使用加密密钥的连接,可以在不同的实施例中使用私钥、公钥或其他类型或形式的密钥(包括协商的或生成的密钥)的其中一个或多个。作为连接的端点的一对通信的网络节点(例如、客户机、服务器和/或中间装置)可以将密码用于使用加密密钥在网络节点之间的数据加密/解密。对于每个连接可以协商和/或配置例如来自密码和/或加密密钥池的一个或多个密码和加密密钥。所述加密密钥和密码可以包含如上文结合图4A-4D所述的加密密钥和密码的实施例的特征。密码和/或加密密钥可以支持一种或多种类型或形式的加密标准、算法和/或协议,例如数据加密标准(DES)、RSA(Rivest、Shamir和Adelman)算法、Diffie-Hellman(D-H)密钥交换协议和高级加密标准(AES)。
除了加密之外,密钥相关的加密方法可以被用于实现数字签名方案。出于验证的目的,可以将数字签名与所传输的数据相关联。加密密钥(有时也被称为秘密密钥),可以被用于签名算法(即处理所传输的数据)中。另一个算法可以使用密钥在接收端检查签名和所传输的数据的有效性。使用加密密钥进行加密、解密、签名和验证可以被总的称为加密操作或crypto op。
举例来说,图5C描述了使用加密密钥在两个装置(例如,客户机和服务器)之间的SSL握手过程的一个实施例。在该实施例中,SSL握手包括协商或生成加密或秘密密钥以建立安全的连接或会话。如图5C中所示的,该握手过程可以包括多个步骤,包括在装置之间的各种交换。这样的交换可以包括加密操作和/或交换诸如在装置之间的公钥信息的加密信息。在一些实施例中,例如,可以使用私钥加密客户机和/或服务器证书并且使用对应的公钥对其进行验证。例如,且在一个实施例中,证书机构(CA)可以在该握手之前或在该握手期间发出用于客户机的客户机证书,以用于验证该连接请求或过程。可以使用客户机的私钥加密该客户机证书并且在服务器处使用该客户机的公钥来对该客户机证书进行验证。在服务器侧的证书验证可以包括对该客户机证书中客户机的数字签名的验证。在一些实施例中,可以在服务器106处使用客户机的公钥对该加密的客户机证书进行解密。当验证相应的证书时,可以协商、计算或以其他方式确定用于SSL会话的秘密密钥。在所建立的会话中,可以将这个秘密密钥用于加密装置之间的数据传送。其他方案,不限于SSL,可以包含一些和/或类似的特征来保护连接或会话。
在一些实施例中,可以协商和/或配置相同的密码和/或加密密钥用于在一个或多个连接间共享。与共享单组密码和/或加密密钥相比,使用不同组的密码和/或加密密钥可以改善跨越一个或多个连接的安全性。由于使用分配给通信路径的不同连接的不同组的密码和/或加密密钥,能够利用对于端到端通信的额外的安全性级别。使用被隔离在特定连接内的密码和/或加密密钥组可以在例如反黑客攻击保持整体端到端通信的完整性中对加密信息的暴露进行限制。在一些实施例中,用于连接或会话的加密或秘密密钥可以总的被称为会话密钥。
再次参考图5A,中间装置200可以被配置为对另一个装置的代理。例如,客户机侧中间装置200a可以被配置为与服务器106通信或请求与服务器106通信的客户机102的代理。代理可以代表对应的装置进行操作,例如,定向流量(例如,为去往服务器106的分组做出路由决策)、作出某些响应(例如,对服务器的ICMP请求进行响应)以及提供特定功能(例如,SSL加密、防火墙和加速服务)。代理具有收发器和/或I/O接口130,用于发送和接收所有形式或类型的消息、分组、控制信号和数据。上文结合图1B-1C、2A、3和4A描述了代理的特征的其他实施例。
当跨越在客户机102和服务器106之间的一个或多个网络建立通信信道时,中间装置200或代理可以通过任一类型或形式的握手过程互相交互和/或与端点交互,所述握手过程例如传输控制协议(TCP)握手、SSL代理握手和SSL会话握手过程。将结合图5E-5G更详细地描述这些过程。在建立通信信道的握手过程期间或之后,可以发起与形成该信道的一个或多个连接关联的涉及加密密钥的任意次数的加密操作567。
通信装置的每一个,例如中间装置200、客户机102和服务器106,可以包括私钥存储556。以举例说明而非限制的方式,私钥存储556可以驻留在中间装置200或任何其他网络装置中。在一些实施例中,如图5D所描述的,私钥存储556是用于在中间装置200上配置的私钥的安全容器。该密钥存储556可以是独立的进程(“服务器进程”)。过滤器进程545(有时称为轨道(Orbital)服务器进程)使用操作系统(OS)套接字533与服务器进程通信。一个或多个用户接口(UI)/管理进程578可以在OS套接字之上使用扩展标记语言远程过程调用(XML RPC)来与服务器进程556通信。
在一些实施例中,私钥存储556被实现为与过滤器进程545分开的进程,尽管在其他实施例中,它们可以是同一进程的部分。私钥存储556可以打开套接字533,例如普通套接字,并且在本地端口上侦听来自过滤器进程545的输入连接。密钥存储进程556可以提供下列接口中的一个或多个:
1.加密接口。这个接口可以支持下列服务或加密操作类型中的一个或多个:
a.解密
b.RSA(Rivest、Shamir和Adleman)签名
c.数字签名算法(DSA)签名
在一些实施例中,这些加密类型被称为树加密操作类型。
2.过滤器接口。在一些实施例中,过滤器接口可以被称为域接口。
过滤器进程545可以使用这个接口来与私钥存储556通信。
3.扩展标记语言远程过程调用(XML RPC)接口532。这个接口可以在端口(该端口可以不同于用于过滤进程545的XML RPC侦听器端口)上创建XML RPC侦听器。用户接口578(UI)可以使用这个端口独立地与私钥存储556通信,例如不必经过过滤器进程545。
私钥存储可以是在中间装置200上执行或操作的任何类型或形式的进程。在一些实施例中,该私钥存储是多线程进程。可以在中间装置200和/或私钥存储556的初始化期间创建线程池。可以将来自该池的空闲线程分配给触发或请求加密操作567的SSL连接。UI 578可以提供机制来以任何格式(例如,以增强保密性邮件(PEM)格式)将私钥添加到该密钥存储。
该密钥存储中每个密钥可以具有任意类型或形式的名称或标识符。在一个实施例中,密钥名或标识符可以是任何任意ASCII字符串和/或1到32字节长。密钥可以是任何类型或形式。在一个实施例中,密钥是RSA类型或DSA类型。在一些实施例中,使用Open SSL的实现提供对RSA和DSA密钥类型的支持。在限于支持RSA和DSA密钥类型的实施例中,单个密钥名可以最多引用2个不同密钥(即RSA密钥和DSA密钥)。可以将密钥名和密钥类型的配对一起用于唯一地标识私钥。在各个实施例中,密钥存储进程中的每个密钥保持在密钥存储进程中。密钥存储进程中的密钥可以不离开该密钥存储进程,例如,为了安全。密钥存储进程可以代表另一个进程或网络组件来执行加密操作。例如,且在一个实施例中,中间装置或其他实体可以请求管理密钥的密钥存储进程代表中间装置或其他实体执行加密操作,而不是从该密钥存储进程获取该密钥。
可以将一个或多个密钥存储在盘上的文件577中。可以使用任何类型或形式的加密方法来对每个密钥进行加密。在一些实施例中,可以使用任何密钥大小(例如,256位)的高级加密标准(AES)来对密钥进行加密。UI/管理578可以指定用于打开密钥存储556的加密密码,例如,以从该文件加载一个或多个密钥到存储器中或者以便更新该文件577,例如添加或移除密钥。这些密钥可以被应用于一个或多个加密操作,例如用于建立SSL连接或隧道。例如,重新参考图5A-5B,且在一些实施例中,客户机侧中间装置200a可以发送包括数据的消息和要服务器侧中间装置200b解密或签名该数据的请求(即加密操作类型的指示)。响应于该消息,服务器侧中间装置200b可以使用来自它的私钥存储556的密钥来生成并返回对该请求的响应。该响应可以包括如所请求的加密操作的状态,和/或如所签名的或解密的数据。中间装置200a、200b中的一个或两个包括用于处理各种加密操作的硬件安全模块(HSM)。在请求端的HSM 520a可以执行下列中的一个或多个:(i)识别用于给定数据或数据集的加密操作类型,(ii)生成对该加密操作的请求,(iii)发送该请求到目的地,(iv)监控对该请求的响应,(v)接收并识别所请求的加密操作的状态,和(vi)验证签名的数据的数字签名。在接收端的HSM 520b可以执行下列中的一个或多个:(i)接收加密操作请求,(ii)从该请求识别该加密操作类型和数据,(iii)从密钥存储加载合适的密钥来执行所请求的加密操作,(iv)生成包括该加密操作的状态和/或签名的或解密的数据的响应。HSM还可以使用协商的密钥和/或来自密钥存储556的私钥来加密数据。
可以以硬件或硬件与软件的组合来实现HSM 520。可以将HSM 520构建和配置为用于提供任何类型或形式的加密操作,以及用于管理数字密钥(例如,安全地存储和/或备份密钥)、加速加密过程并提供对密钥的保护(例如,对访问密钥进行认证)。在一些实施例中,HSM是能直接附接到设备200(例如,中间装置)、服务器106或计算装置102的物理装置(例如,插件卡或外部TCP/IP安全装置)。HSM 520可以被设计、构建和/或配置为用于提供一个或多个密钥的物理安全。HSM 520可以提供对密钥和/或其他敏感数据的逻辑和/或物理保护。HSM 520可以为访问加密密钥提供安全保障(例如,强认证)。在一些实施例中,HSM 520可以被用于保护、存储和/或管理一个或多个高价值密钥。在某些实施例中,HSM 520可以优于用于保护、存储和/或管理一个或多个密钥的一些其他系统(例如软件解决方案)。
HSM 520可以包括在HSM 520的硬件部分和/或主机中间装置200上执行的任何模块、脚本、程序、代理、组件或可执行指令集。HSM 520可以具有在网络堆栈的一层或多层(例如传输层)操作的组件。在一些实施例中,HSM 520可以包括一个或多个密码或包含密码的特征。在这些实施例的一些中,HSM 520可以(例如,从密码池)识别密码以使用和/或执行密码算法。在其他实施例中,HSM 520可以是对密码和/或其他类型的加密程序进行替代或补充的硬件。HSM 520可以被用于加速两个网络节点之间的数据传送(例如,加密的数据)。
如结合图4A所述的,可以在两个端点之间以任何顺序建立并由任何类型的事件触发一个或多个安全连接(例如,SSL连接)。在一些实施例中,可以在建立客户机侧中间装置200a和服务器侧中间装置200b之间的安全连接之前,建立服务器侧安全连接和/或客户机侧安全连接。在其他实施例中,在建立服务器侧和/或客户机侧安全连接之前,在客户机侧中间装置200a和服务器侧中间装置200b之间建立安全连接(例如,SSL连接)。可以使用上文结合图4A-4D所述的任何方法和系统来建立这些安全连接中的一个或多个。在一个或多个中间装置200经由SSL提供安全代理信道的一些实施例中,代理类型可以被实现为分离代理或欺骗代理。可以在SSL代理握手期间来确定和/或协商代理类型。可以根据在客户机侧和服务器侧中间装置200中的一个或两个中可用的配置信息566来确定和/或协商代理类型。该配置信息可以包括上文结合图4A所述的信息444的任何部分和/或变形。
在一些实施例中,服务器侧中间装置200b包括具有配置名的列表的代理配置表格。在该代理配置表格中的每个条目可以包括下列中的一个或多个:配置名(例如,标识主键(PK))、IP地址-端口元组、虚拟服务器名称(当客户机在客户机问候消息中发送服务器名称指示时,可以使用它)、代理类型(例如、分离、欺骗或混合的)以及可基于代理类型的其他客户机侧和服务器侧配置细节(例如,包括一个或多个从私钥存储表格引用的私钥名、服务器证书、证书机构(CA)信息、证书链(RSA/DSA格式)、SSL协议版本和密码列表)。对于欺骗代理来说,可以将引用SSL密钥存储表格的配置信息566传输到客户机侧中间装置200a。对于分离代理来说,可以将包括服务器证书、证书链和在代理配置表格中配置的其他数据的配置信息566传输到客户机侧中间装置200a。配置信息566也可以包括Open SSL选项、x509证书和证书验证选项。可以用于配置SSL代理的其他配置信息566或参数包括:
a.SSL服务类。在一个实施例中,这个参数是用于启用/禁用SSL加速的单个位),
b.可信的CA。在一个实施例中,这是可信的认证机构的列表。
c.私钥存储表格。在一个实施例中,这是中间装置、客户机和/或服务器的所有私钥的列表。在各种实施例中,在密钥存储进程中存储和/或保护私钥。
d.SSL服务类表格。在一个实施例中,这包括IP地址-端口元组信息。此外,SSL服务类表格的表格条目可以包括或引用代理配置名的列表,该列表引用代理配置表格和其他信息。在一些实施例中,SSL服务类表格与SSL代理配置表格具有一对多的关系。由此,单个IP地址-端口元组可以具有所配置的多个配置名,例如仅欺骗配置和混合配置。由服务器侧中间装置根据这些配置执行的匹配操作可以确定代理类型。
在一些实施例中,客户机侧和/或服务器侧中间装置200使用配置信息566来启动SSL代理设置。在这些实施例的一些中,服务器侧中间装置200a被配置为具有、确定或以其他方式提供配置信息566。服务器侧中间装置200a可以将配置信息566提供给客户机侧中间装置200a以用于启动客户机SSL代理设置。服务器侧中间装置200a可以经由任何方式且响应于各种事件来提供该配置信息,例如经由上文结合图4A-4D所述的方式和/或事件。
现参考图5D,流程图描述了用于跨越中间装置200代理SSL通信的方法400中所采取的步骤的实施例。该方法包括由客户机发起握手过程以经由客户机侧中间装置200a和服务器侧中间装置200b与服务器106建立通信(501)。服务器侧中间装置200b与该服务器建立服务器侧安全套接字层(SSL)会话(503)。与一个或多个客户机通信的客户机侧中间装置200a使用从服务器侧中间装置200b接收的SSL配置信息与客户机102建立客户机侧SSL会话(505)。客户机侧中间装置200a和服务器侧中间装置200b经由第三SSL会话进行通信。服务器侧中间装置200b使用客户机侧SSL会话的会话密钥对从服务器106接收的加密的数据进行解密(507)。服务器侧中间装置200b经由第三SSL会话向客户机侧中间装置200a传输使用第三SSL会话的会话密钥加密的数据(509)。客户机侧中间装置200a使用第三SSL会话的会话密钥对经由第三SSL会话加密的数据进行解密(511)。客户机侧中间装置200a向客户机102传输使用服务器侧SSL会话的会话密钥加密的数据(513)。
现参考图5D,且更具体地,该方法包括由客户机102发起握手过程以经由客户机侧中间装置和服务器侧中间装置与服务器106建立通信(501)。在一些实施例中,客户机102、服务器106、其中一个中间装置或任何其他网络节点可以发起握手过程以在服务器106和客户机102之间建立通信。该握手过程可以是由特定事件发起的,例如,通过根据对等列表468自动发现客户机-服务器对或中间装置200。可以经由上文结合图4A-4D所述的各种事件来发起该握手过程。在一些实施例中,发起传输控制协议(TCP)握手,或其他类型的通信协议握手。可以发起任何类型或形式的安全握手,例如用于建立加密的信令或数据传送连接。在某些实施例中,例如,在建立传输层或TCP连接时,发起SSL代理握手。
该系统可以跨越客户机102、服务器106和中间装置200建立一个或多个连接。一个或多个握手过程可以跨越客户机102、服务器106和中间装置200建立一个或多个连接。在建立客户机102、服务器106和/或中间装置200之间的一些或全部连接期间,握手过程可以并发地或顺序地进行。在建立客户机102、服务器106和/或中间装置200之间的一些或全部连接期间,握手过程可以独立地或以协同方式进行。所建立的连接可以包括安全的、部分安全的和/或不安全的连接。一个或多个握手过程可以与建立客户机102、服务器106和/或中间装置200之间的特定连接相关联。所建立的连接可以包括传输层连接和/或在其他协议层的连接。所建立的连接可以包括加密的连接。在一些实施例中,所建立的连接可包括一个或多个SSL连接。握手过程还可以确定所建立的连接中的一个或多个是否将支持数据加速、数据高速缓存、压缩和/或其他数据传送操作。
在某些实施例中,握手过程包括TCP握手过程以跨越客户机102、服务器106和/或中间装置200建立一个或多个TCP或传输层连接。TCP握手过程可以在端点(例如,客户机102和服务器106)之间建立单个或多个TCP连接。在一些实施例中,如下发起TCP握手:其中一个中间装置200可以检测或接收输入的SSL连接或连接请求。在某些实施例中,客户机102发送去往服务器106的SYN消息,该消息被客户机侧中间装置200a接收。该SYN消息可以表示输入的SSL连接或连接请求。客户机侧中间装置200a可以将该输入连接确定或分类为SSL连接。客户机侧中间装置200a可以修改该SYN消息,例如给该SYN消息添加一个或多个选项,以指示下列中的一个或多个:客户机侧中间装置自己的信令IP、SSL支持以及启动SSL加速的指示。当修改该SYN消息之后,客户机侧中间装置200a可以向服务器侧中间装置200b传输该SYN消息。服务器侧中间装置200b可以在向服务器发送经处理的SYN消息之前处理选项(例如剥去选项)。
服务器106可以例如使用SYN-ACK消息来对该经处理的SYN消息进行响应。服务器侧中间装置200b可以接收该SYN-ACK消息。服务器侧中间装置200b可以检查是否存在到客户机侧中间装置200a的信令隧道。如果不存在信令隧道,则服务器侧中间装置200b可以经由客户机侧中间装置200a向客户机发送没有附加SSL选项的SYN-ACK,例如以指示当建立该SSL连接时将不执行SSL加速。在一些实施中,可以应用流控制加速而不是数据加速。服务器侧中间装置200b也可以尝试使用在SYN消息中接收到的信令IP来与客户机侧中间装置200a建立信令隧道。客户机102可以经由客户机侧中间装置200a和服务器侧中间装置200b用ACK消息对服务器106进行确认,从而完成TCP连接的建立。
在一些实施例中,服务器侧中间装置200b确定已经建立了信令隧道。服务器侧中间装置200b可以给去往客户机102的SYN-ACK消息附加SSL支持TCP选项。服务器侧中间装置200b还可以从SSL状态机池477中选择SSL状态机对并且将对应的SSL状态机对标识符作为TCP选项添加到SYN-ACK消息中。在一些实施例中,服务器侧中间装置200b附加该标识符的基于哈希消息认证码(HMAC)以防止篡改。客户机102可以通过用ACK消息经由客户机侧中间装置200a和服务器侧中间装置200b对服务器106进行响应来确认该SYN-ACK消息,用于建立TCP连接。使用通过信令隧道预先协商的密码和/或密钥,通过所选择的SSL状态机对来加密在这两个中间装置之间传送的数据。
可以使用上文结合图4A-4D所述的方法和系统的任一实施例来建立信令隧道。中间装置200可以将该信令隧道建立为任何类型或形式的连接、安全的或其他的,例如SSL连接。在一些实施例中,中间装置200可以在信令隧道上建立SSL连接,或者除了建立信令隧道之外还建立SSL连接。中间装置200可以使用上文结合图4A-4D所述的方法和系统的任一实施例来建立这个SSL连接。例如,客户侧中间装置和/或服务器侧中间装置可以从由客户机侧中间装置200a和服务器侧中间装置200a的每一个维护的预先建立的SSL会话池或SSL状态机池中识别该SSL会话。
在一些实施例中,例如,紧接着TCP握手,发起SSL代理握手。响应于TCP握手的完成或启动,可以由客户机102、服务器106和/或中间装置200中的任何一个来发起SSL代理握手。可以响应于在客户机102、服务器106和/或中间装置200之间的TCP连接的建立来发起SSL代理握手。可以启动该SSL握手过程以确定要建立的代理的类型,即分离或欺骗。例如,如上文结合图4A-4B所述的,可以由一个或两个中间装置200来检索、协商、确定和/或提供用于确定代理类型的配置信息566。
在一些实施例中,作为SSL代理握手和/或确定配置信息566的部分,客户机102发送客户机问候消息到客户机侧中间装置200a。客户机问候消息可以带有可选的服务器名称指示字段。客户机侧中间装置200a可以接收并本地缓冲该客户机问候消息。客户机侧中间装置200a可以在该客户机问候消息前附加代理问候消息,并将其发送到服务器侧中间装置200b。在一些实施例中,服务器侧中间装置200b可以被设置或配置为仅接收代理问候消息。例如,且在一个实施例中,如果服务器侧中间装置200b接收到不是代理问候消息的消息,则服务器侧中间装置200b可以重置或解除早先建立的TCP连接。服务器侧中间装置200b可以解析该代理问候消息。服务器侧中间装置200b可以检查IP地址-端口元组和对应的代理配置名。服务器侧中间装置200b还可以在SSI的SSL代理配置表格中查找对于这些配置的每一个的代理类型。
如果服务器侧中间装置200b从SSL代理配置表格确定例如所有配置的代理类型为欺骗代理,则服务器侧中间装置200b可以将该客户机问候消息转发到服务器。如果服务器侧中间装置200b从SSL代理配置表格确定例如所有匹配配置的代理类型为欺骗代理,则服务器侧中间装置200b可以将该客户机问候消息转发到服务器。服务器侧中间装置200b可以向客户机发送代理问候消息。服务器侧中间装置200b可以向客户机102发送客户机侧配置数据(即配置信息566)以用于客户机代理设置。如果服务器侧中间装置200b例如从SSL代理配置表格确定所有配置或匹配配置的代理类型为分离代理,则服务器侧中间装置200b可以将客户机问候消息转发到服务器。服务器侧中间装置200b可以向客户机102发送代理问候消息。服务器侧中间装置200b可以向客户机102发送客户机侧配置数据(即配置信息566)以用于客户机代理设置。
在一些实施例中,服务器侧中间装置200b可以确定对于该IP-端口元组的配置具有混合的代理类型,即一些被配置为分离而一些被配置为欺骗。服务器侧中间装置200b可以基于在客户机问候消息中的可选的服务器名称指示字段中的服务器名称来识别用于该通信的代理类型。服务器侧中间装置200b可以继续用该可选的服务器名称指示字段解析该客户机问候消息。如果在该客户机问候消息中没有收到服务器名称指示字段,则服务器侧中间装置200b可以在从代理配置表格所引用的配置名的列表中选择第一匹配配置。如果在该客户机问候消息中包含服务器名称指示字段,则服务器侧中间装置200b可以将该服务器名称与在代理配置表格中所标识的虚拟服务器名称进行匹配。如果虚拟服务器名称匹配,则服务器侧中间装置200b可以选择对应的代理配置。如果客户机问候消息中的服务器名称与对应于该IP地址-端口元组的代理配置中的任何虚拟服务器名称都不匹配,则服务器侧中间装置200b可以选择在该列表中的第一配置。
如果所选择的SSL代理配置的代理类型为欺骗,则服务器侧中间装置200b可以将所缓冲的客户机问候消息转发到服务器。如果所选择的SSL代理配置的代理类型为分离,则服务器侧中间装置200b可以向服务器106发送新的客户机问候消息。服务器侧中间装置200b还可以向客户机102发送代理问候消息,以及客户机侧配置数据(即配置信息566),以用于客户机代理设置。
在(503)的进一步细节中,服务器侧中间装置与服务器建立服务器侧SSL会话。服务器侧中间装置可以通过发起与服务器106的SSL握手来建立服务器侧SSL会话。在一些实施例中,响应于SSL代理握手的完成,发起SSL握手。在一些实施例中,响应于确定代理类型来发起SSL握手。可以在确定代理类型之前发起SSL握手并且在确定代理类型之后建立SSL连接。在一些实施例中,可以在确定代理类型之后发起SSL握手。在服务器侧的SSL握手和/或SSL会话的建立可以包括根据所确定的代理类型的服务器代理设置。在某些实施例中,服务器代理设置是由服务器中间装置200b启动的、相对于SSL握手和/或SSL会话建立独立的步骤或过程。
在一些实施例中,可以在确定代理类型之前发起SSL握手。可以经由上文结合图4A-4D和5C所述的方法和系统的任一实施例来发起和/或处理在服务器侧的SSL握手和/或SSL会话建立。例如,且在一个实施例中,客户机侧中间装置200a向服务器侧中间装置200b传输来自客户机102的、与服务器106建立传输层连接的请求。客户机侧中间装置可以修改该请求以指示服务器侧中间装置200b执行安全套接字层(SSL)建立和/或加速。响应于接收所修改的请求,服务器侧中间装置200b可以启动服务器侧SSL握手和/或SSL会话建立。如上文结合图1A-1C、2A、3和4A-4D所述的,可以通过中间装置(例如分组引擎)、客户机(例如客户机代理)和/或服务器106(例如应用传送系统)的一个或多个组件来启动SSL握手、代理设置和/或SSL会话的建立。
服务器侧中间装置200b可以响应于确定代理类型来启动服务器106的SSL代理设置。服务器侧中间装置200b可以相对于客户机102的SSL代理设置独立地或异步地启动服务器106的SSL代理设置。在一些实施例中,服务器侧中间装置200b可以相对于客户机102的SSL代理设置以协同的方式来启动服务器106的SSL代理设置。服务器侧中间装置200b可以响应于检索、识别、协商或确定代理类型来启动服务器106的SSL代理设置。服务器侧中间装置200b可以响应于来自代理配置表格的指示(例如,根据对配置的匹配操作)来启动服务器106的SSL代理设置。服务器侧中间装置200b可以根据代理类型(即分离或欺骗)来启动服务器106的SSL代理设置。如果代理类型被识别为分离代理,则服务器侧中间装置200b可以在服务器侧建立SSL会话或连接。如果代理类型被识别为欺骗代理,则服务器侧中间装置200b可以建立与客户机侧共享的SSL会话或连接。如果代理类型被识别为欺骗代理,则服务器侧中间装置200b和/或客户机侧中间装置200a可以在客户机102和服务器106之间建立单个SSL会话或连接。SSL会话可以包括或表示一个或多个SSL连接。
SSL握手、会话建立和/或代理设置过程可以包括交换和/或验证证书和加密(例如,密钥和密码)信息。在结合图5C、5E、5F和5G描述的示例过程中描述了这些操作的各种实施例。例如,在服务器侧中间装置200b和服务器106之间可以改变或更新密码规范。
在服务器侧的SSL会话或连接可以独立于任何客户机侧会话或连接而存在。服务器侧中间装置200b可以在服务器侧建立与相对于客户机侧SSL会话不同组的加密密钥和/或密码关联的SSL会话。例如,如结合图5A-5C所述的,服务器侧中间装置200b可以与服务器106协商和/或共享用于在服务器侧SSL会话中使用的一组加密密钥和/或密码。在一些实施例中,服务器侧中间装置200b可以与另一个SSL会话,例如在中间装置200a、200b之间的SSL会话,来共享该组加密密钥和/或密码。服务器侧中间装置200b可以响应于例如经由管理员干预的对分离代理设置的修改来与另一个SSL会话共享该组加密密钥和/或密码。在一些实施例中,服务器侧中间装置200b可以在服务器侧建立包含一个或多个中间装置200的SSL会话。例如,且在一个实施例中,服务器侧中间装置200b可以跨越如图5B所示的服务器106和中间装置200c、200b来建立与单组加密密钥和/或密码关联的SSL会话。
在(505)的进一步细节中,客户机侧中间装置200a使用从服务器侧中间装置接收的SSL配置信息与客户机102建立客户机侧SSL会话。客户机侧中间装置200a可以与一个或多个客户机通信。客户机侧中间装置200a和服务器侧中间装置200b可以经由另一个(例如,第三)SSL会话进行通信。客户机侧中间装置200a可以根据适用于客户机侧的、如上文结合(503)所述的服务器侧方法的实施例来在客户机侧发起SSL握手和或建立SSL会话。在一些实施例中,客户机侧SSL握手和/或会话建立可以与服务器侧SSL握手和/或会话建立并行地进行。可以响应于服务器侧SSL握手和/或会话建立来进行客户机侧SSL握手和/或会话建立。可以在服务器侧SSL握手和/或会话建立之前或之后来进行客户机侧SSL握手和/或会话建立。在一些实施例中,例如,因为服务器侧中间装置200b在客户机侧中间装置200a之前知道了SSL配置(例如,代理类型),所以服务器侧SSL握手和/或会话建立可以较早地进行。
服务器侧中间装置200b可以向CSI发送或传输配置信息566。在一些实施例中,客户机侧中间装置200a可有限地访问或无法访问用于SSL代理设置的配置信息566。客户机侧中间装置200a可以要求服务器侧中间装置200b提供配置信息566中的一些或全部。客户机侧中间装置200a可以请求服务器侧中间装置200b提供配置信息566中的一些或全部。服务器侧中间装置200b可以响应于来自客户机的SSL客户机问候消息经由CSI发送配置信息566。服务器侧中间装置200b可以响应于识别、协商和/或确定该配置信息566来发送该配置信息566。服务器侧中间装置200b可以经由任何方法并使用任何协议来向客户机侧中间装置200a发送配置信息566。例如,服务器侧中间装置200b可以经由在服务器侧中间装置200b和客户机侧中间装置200a之间所建立的信令隧道和/或SSL会话来发送配置信息566。服务器侧中间装置200b可以经由一个或多个分组来发送配置信息566,例如,经由结合图5F-5G所述的代理问候消息。例如,且在一个实施例中,服务器侧中间装置200b向客户机侧中间装置200a传输识别用于客户机侧SSL代理的SSL配置的消息。在某些实施例中,服务器侧中间装置200b可以向客户机侧中间装置200a发送配置(例如,代理类型)的标识符和/或命令以便本地检索配置信息566。
举例来说,且在一些实施例中,SSL代理握手确定将要设置分离代理。作为响应,服务器侧中间装置200b可以向客户机侧中间装置200a传输执行分离SSL代理的请求。服务器侧中间装置200b可以在代理问候消息中向客户机侧中间装置200a发送分离代理指示。服务器侧中间装置还可以在代理问候消息中传输对应于服务器的SSL配置信息566,以用于将客户机侧中间装置200a配置为充当分离代理。在一些实施例中,中间装置200a、200b可以在代理问候消息中交换代理实例标识符。这些代理实例标识符对于中间装置200a和200b可以是唯一的,并且可以用于通过信令隧道的通信以识别信令消息(例如代理问候消息)应用的SSL连接(例如,客户机侧SSL会话)。
在一些实施例中,服务器侧中间装置200b可以向服务器106发送新的客户机问候消息。客户机侧中间装置200a可以使用从服务器侧中间装置200b接收的配置数据566向客户机102发送服务器问候、服务器证书和/或服务器问候结束消息。在一些实施例中,响应于对客户机102的服务器问候、服务器证书和/或服务器问候结束消息,可以进行客户机102和客户机侧中间装置200a之间的SSL握手。在一些实施例中,响应于对客户机的服务器问候、服务器证书和/或服务器问候结束消息,可以进行服务器侧中间装置200b和服务器106之间的SSL握手。在各个实施例中,客户机102和客户机侧中间装置200a之间的SSL握手,与在服务器侧中间装置200b和服务器106之间的SSL握手可以顺序地或并行地进行。客户机102和客户机侧中间装置200a之间的SSL握手,与在服务器侧中间装置200b和服务器之间的SSl握手可以异步地或根据某些预定事件和/或条件来进行。
在一些实施例中,客户机侧中间装置200a可以向服务器侧中间装置200b传输对加密操作的请求。例如,在图5F-5G中描述了这样的请求。客户机侧中间装置200a可以传输使用例如在服务器侧中间装置200b与客户机侧中间装置100a之间协商的共享加密密钥加密的请求。可以将该共享密钥分配给处理在中间装置200a、200b之间的通信的SSL状态机对。客户机侧中间装置200a可以经由在服务器侧中间装置200b和CSI之间的信令隧道和/或SSL会话来传输该请求。加密操作可以是任何类型,例如,如上文结合图5A-5C所述的类型。服务器侧中间装置200b可以接收和识别所请求的加密操作。服务器侧中间装置200b可以代表客户机侧中间装置200a执行所请求的加密操作(例如,RSA签名)。服务器侧中间装置200b可以向客户机侧中间装置200a传输对该请求的响应。
在一些实施例中,加密服务的一些或全部仅在服务器侧中间装置200b上可用。因为加密服务仅在服务器侧中间装置200b上可用,所以客户机侧中间装置200a可以向服务器侧中间装置200b传输对加密操作的请求。客户机侧中间装置200a可以发送对任何加密操作(例如计算主秘密密钥)的请求。如果第三SSL会话是新建立的SSL会话,则客户机侧中间装置200a可以如上所述向服务器侧中间装置200b发送加密操作请求。服务器侧中间装置200b可以用加密结果消息来进行响应。如果第三SSL会话是经由会话重用而建立的,则客户机侧中间装置200a可以向服务器侧中间装置200b发送空加密操作请求消息以指示完成了(例如,用于建立第三SSL会话和/或协商主秘密密钥或加密密钥的)握手过程。在一些实施例中,响应于该空请求,服务器侧中间装置200b将不发送加密结果消息。
在(507)的进一步细节中,服务器侧中间装置使用客户机侧SSL会话的会话密钥对从所述服务器接收的加密的数据进行解密。服务器侧中间装置200b和/或服务器106可以执行与客户机侧SSL会话的会话密钥关联的任何类型的加密操作。在使用分离代理设置的实施例中,这个会话密钥独立于服务器侧SSL会话(即不与服务器侧SSL会话共享)。服务器106可以使用服务器侧SSL会话的会话密钥来加密或签名用于向服务器侧中间装置200b传输的数据。服务器侧中间装置200b可以接收该加密的数据,并且使用服务器侧SSL会话的会话密钥来解密或验证该数据。对于去往服务器的数据,服务器侧中间装置200b可以使用服务器侧SSL会话的会话密钥加密或签名用于向服务器106传输的数据。服务器106可以接收该加密的数据,并且使用服务器侧SSL会话的会话密钥来解密或验证该数据。
在使用欺骗代理设置的实施例中,可以跨越客户机和服务器建立单个SSL会话并且对于客户机侧和服务器侧通信共享一个会话密钥。服务器106可以使用该SSL会话的会话密钥来加密或签名用于向服务器侧中间装置200b传输的数据。服务器侧中间装置200b可以接收该加密的数据,并且使用该SSL会话的会话密钥来解密或验证该数据。对于去往服务器106的数据,服务器侧中间装置200b可以使用该SSL会话的会话密钥加密或签名用于向服务器106传输的数据。服务器106可以接收该加密的数据,并且使用该SSL会话的会话密钥来解密或验证该数据。
在一些实施例中,可以在中间装置200a、200b之间协商一个或多个操作,例如数据加速、数据缓存和/或数据压缩。在TCP握手期间,或者在TCP和/或SSL连接建立之后,可以协商一个或多个操作。除了加密操作之外,可以将这些操作应用于数据分组。例如,且在一个实施例中,服务器侧中间装置200b可以在解密之后压缩所接收的数据。服务器侧中间装置200b可以使用在SSI上存储的压缩历史来压缩所接收的数据。在一些实施例中,服务器侧中间装置200b可以使用压缩历史来实现数据缓存传送。例如,如果压缩历史包括在服务器侧中间装置200b和客户机侧中间装置200a两处缓存的相同的数据,则服务器侧中间装置200b可以传输该数据的标识符以用于在客户机侧中间装置200a处进行本地检索,而不是发送压缩的数据。在某些实施例中,压缩历史可以记录先前遇到的数据是如何被压缩的(例如,压缩技术),其可以被应用于重复遇到的相同数据。
在(509)的进一步细节中,服务器侧中间装置经由第三SSL会话向客户机侧中间装置传输使用第三SSL会话的会话密钥加密的数据。该第三SSL会话被识别为在中间装置200a、200b之间建立的SSL会话,并且相对于客户机侧和服务器侧SSL会话没有预期的时间上的关系。服务器侧中间装置200b可以在如上文结合(507)所述的解密和/或压缩操作之后,或响应于如上文结合(507)所述的解密和/或压缩操作,来加密该数据。服务器侧中间装置200b可以在向客户机侧中间装置200a传输之前加密该数据。服务器侧中间装置200b可以在向客户机侧中间装置200a传输之前压缩该加密的数据。服务器侧中间装置200b可以使用第三SSL会话的会话密钥加密该数据。服务器侧中间装置200b可以使用在中间装置200a、200b之间协商的加密密钥来加密该数据。服务器侧中间装置200b可以使用被分配给处理在中间装置200a、200b之间的通信的SSL状态机对的加密密钥来加密该数据。在使用欺骗代理设置的实施例中,该加密密钥可以不同于跨越客户机102和服务器106建立的SSL会话的会话密钥。
在(511)的进一步细节中,客户机侧中间装置使用该第三SSL会话的会话密钥对经由第三SSL会话加密的数据进行解密。客户机侧中间装置可以使用在中间装置200a、200b之间协商的加密密钥来解密该数据。客户机侧中间装置200a可以使用被分配给处理在中间装置200a、200b之间的通信的SSL状态机对的加密密钥来解密该数据。除了加密/解密之外,中间装置200a、200b可以使用特定的会话或加密密钥例如经由它们的HSM 520和/或密码对在中间装置200a、200b之间交换的数据执行其他加密操作(例如,签名和/或验证签名)。在一些实施例中,可以执行其他操作,例如数据加速、数据缓存和/或数据压缩操作。例如,且在一个实施例中,客户机侧中间装置200a可以使用在CSI上存储的压缩历史对所接收的数据进行解压缩。
在使用数据缓存的一些实施例中,服务器侧中间装置200b可以对包含数据的标识符的消息进行加密。服务器侧中间装置200b可以使用第三SSL会话的会话或加密密钥来加密该消息。响应于接收所加密的消息,客户机侧中间装置200a可以使用第三SSL会话的会话或加密密钥来解密该消息。客户机侧中间装置200a可以使用由该消息传送的标识符从本地高速缓存存储器检索该数据。在一些实施例中,可以使用上文所述的压缩和/或数据缓存技术来(例如,通过网络优化引擎250)实现中间装置200a、200b之间的数据加速。
在(513)的进一步细节中,客户机侧中间装置向客户机传输使用服务器侧SSL会话的会话密钥加密的数据。客户机侧中间装置200a可以加密和传输服务器侧SSL会话内的数据,包含适用于服务器侧SSL会话的、结合(509)所述的方法的实施例。例如,客户机侧中间装置200a可以在使用第三SSL会话的会话/加密密钥解密从服务器侧中间装置200b接收的数据之后,使用客户机侧SSL会话的会话密钥对其进行加密。客户机侧中间装置200a可以在向客户机102进行传输之前加密该数据。在使用欺骗代理设置的实施例中,客户机侧中间装置200a可以使用跨越客户机102和服务器106建立的SSL会话的会话密钥来加密该数据。
尽管(507)-(513)总的描述了从服务器106到客户机102的数据传输,但例如,如图5F-5G所示的,可以将相同的方法和技术应用于从客户机到服务器的数据传输。此外,在(507)-(513)中描述的特定操作举例说明了沿通信路径的每个安全连接使用不同的会话或加密密钥,并且因此可以将其他类型的加密操作应用于某些实施例中。同样地,如早前所讨论的,本文描述的方法和系统可以被应用于任何数量的中间装置、中间的会话或连接,以及包括分离和欺骗代理的组合的任何设置。
应该理解,上述的系统可提供多个组件或每个组件并且这些组件可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。此外,上述系统和方法可作为一件或多件产品上所体现的或在其中的一个或多个计算机可读程序而被提供。所述产品可以是软盘、硬盘、CD-ROM,闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中
虽然已经参考特定实施例详细地示出和描述了本发明,但是本领域的普通技术人员应该理解在不脱离如所附权利要求限定的本发明的精神和保护范围的情况下可以在形式上和细节上做出多种改变。
Claims (20)
1.一种用于跨越在客户机和服务器之间部署的中间装置分离代理安全套接字层(SSL)通信的方法,所述方法包括:
a)由与服务器通信的第一中间装置与服务器建立第一安全套接字层(SSL)会话;
b)由与一个或多个客户机通信的第二中间装置使用从所述第一中间装置接收的SSL配置信息与客户机建立第二安全套接字层(SSL)会话,所述第二中间装置和所述第一中间装置经由第三SSL会话进行通信;
c)由所述第一中间装置使用所述第一SSL会话的第一会话密钥对从所述服务器接收的加密的数据进行解密;
d)由所述第一中间装置经由所述第三SSL会话向所述第二中间装置传输使用所述第三SSL会话的第三会话密钥加密的所述数据;
e)由所述第二中间装置使用所述第三会话密钥对经由所述第三SSL会话加密的所述数据进行解密;以及
f)由所述第二中间装置向所述客户机传输使用所述第二SSL会话的第二会话密钥加密的所述数据。
2.根据权利要求1所述的方法,其中步骤(a)还包括由所述第二中间装置向所述第一中间装置传输来自所述客户机的与所述服务器建立传输层连接的请求,所述第一中间装置修改所述请求以向所述第二中间装置指示执行安全套接字层(SSL)加速。
3.根据权利要求1所述的方法,其中步骤(b)还包括由所述第一中间装置向所述第二中间装置传输识别用于客户机侧SSL代理的SSL配置的消息。
4.根据权利要求3所述的方法,其中步骤(b)还包括由所述第二中间装置使用从所述第一中间装置接收的所述SLL配置向所述客户机传输服务器问候、服务器证书以及服务器问候结束消息。
5.根据权利要求3所述的方法,其中步骤(b)还包括由所述第一中间装置向所述第二中间装置传输执行分离SSL代理的请求。
6.根据权利要求1所述的方法,还包括由所述第二中间装置向所述第一中间装置传输对加密操作的请求。
7.根据权利要求6所述的方法,还包括由所述第一中间装置代表所述第二中间装置执行所请求的加密操作,并且向所述第二中间装置传送对所述请求的响应。
8.根据权利要求1所述的方法,其中步骤(c)还包括由所述第一中间装置使用在所述第一中间装置上存储的压缩历史对所接收的数据进行压缩。
9.根据权利要求1所述的方法,其中步骤(e)还包括由所述第二中间装置使用在所述第二中间装置上存储的所述压缩历史来对所接收的数据进行解压缩。
10.根据权利要求1所述的方法,还包括由所述第一中间装置和所述第二中间装置从由所述第一中间装置和所述第二中间装置中的每一个所维护的预先建立的SSL会话池中识别所述第三SSL会话。
11.一种用于跨越在客户机和服务器之间部署的中间装置分离代理安全套接字层(SSL)通信的系统,所述系统包括:
用于由与服务器通信的第一中间装置与服务器建立第一安全套接字层(SSL)会话的装置;
用于由与一个或多个客户机通信的第二中间装置使用从所述第一中间装置接收的SSL配置信息与客户机建立第二安全套接字层(SSL)会话的装置,所述第二中间装置和所述第一中间装置经由第三SSL会话进行通信;
用于由所述第一中间装置使用所述第一SSL会话的第一会话密钥对从所述服务器接收的加密的数据进行解密的装置;
用于由所述第一中间装置经由所述第三SSL会话向所述第二中间装置传输使用所述第三SSL会话的第三会话密钥加密的所述数据的装置;
用于由所述第二中间装置使用所述第三会话密钥对经由所述第三SSL会话加密的所述数据进行解密的装置;以及
用于由所述第二中间装置向所述客户机传输使用所述第二SSL会话的第二会话密钥加密的所述数据的装置。
12.根据权利要求11所述的系统,还包括用于由所述第二中间装置向所述第一中间装置传输来自所述客户机的、与所述服务器建立传输层连接的请求的装置,所述第一中间装置修改所述请求以向第二中间装置指示执行安全套接字层(SSL)加速。
13.根据权利要求11所述的系统,还包括用于由所述第一中间装置向所述第二中间装置传输识别用于客户机侧SSL代理的SSL配置的消息的装置。
14.根据权利要求13所述的系统,还包括用于由所述第二中间装置使用从所述第一中间装置接收的所述SSL配置向客户机传输服务器问候、服务器证书以及服务器问候结束消息的装置。
15.根据权利要求13所述的系统,还包括用于由所述第一中间装置向所述第二中间装置传输执行分离SSL代理的请求的装置。
16.根据权利要求11所述的系统,还包括用于由所述第二中间装置向所述第一中间装置传输对加密操作的请求的装置。
17.根据权利要求16所述的系统,还包括用于由所述第一中间装置代表所述第二中间装置执行所请求的加密操作,并且向所述第二中间装置传送对所述请求的响应的装置。
18.根据权利要求11所述的系统,还包括用于由所述第一中间装置使用在所述第一中间装置上存储的压缩历史对所接收的数据进行压缩的装置。
19.根据权利要求11所述的系统,还包括用于由所述第二中间装置使用在所述第二中间装置上存储的所述压缩历史对所接收的数据进行解压缩的装置。
20.根据权利要求11所述的系统,还包括用于由所述第一中间装置和所述第二中间装置从由所述第一中间装置和所述第二中间装置中的每一个所维护的预先建立的SSL会话池中识别所述第三SSL会话的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/764633 | 2010-04-21 | ||
US12/764,633 | 2010-04-21 | ||
US12/764,633 US8543805B2 (en) | 2010-04-21 | 2010-04-21 | Systems and methods for split proxying of SSL via WAN appliances |
PCT/US2011/032690 WO2011133422A2 (en) | 2010-04-21 | 2011-04-15 | Systems and methods for split proxying of ssl via wan appliances |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102948131A true CN102948131A (zh) | 2013-02-27 |
CN102948131B CN102948131B (zh) | 2015-07-15 |
Family
ID=44816784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180030493.8A Active CN102948131B (zh) | 2010-04-21 | 2011-04-15 | 用于经由wan设备分离代理ssl的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8543805B2 (zh) |
EP (1) | EP2561639B1 (zh) |
CN (1) | CN102948131B (zh) |
WO (1) | WO2011133422A2 (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202121A (zh) * | 2015-05-07 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
WO2017079980A1 (zh) * | 2015-11-13 | 2017-05-18 | 华为技术有限公司 | 一种计费欺诈的检测方法及装置 |
CN106941401A (zh) * | 2017-03-23 | 2017-07-11 | 深信服科技股份有限公司 | 加速设备以及基于加速设备获取会话秘钥的方法 |
WO2017124837A1 (zh) * | 2016-01-19 | 2017-07-27 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
WO2018076183A1 (zh) * | 2016-10-25 | 2018-05-03 | 华为技术有限公司 | 一种传输数据的方法、装置和系统 |
CN108200104A (zh) * | 2018-03-23 | 2018-06-22 | 网宿科技股份有限公司 | 一种进行ssl握手的方法和系统 |
CN108351930A (zh) * | 2015-11-19 | 2018-07-31 | 罗伯特·博世有限公司 | 通过联网计算机对嵌入式设备进行安全访问控制 |
CN109861813A (zh) * | 2019-01-11 | 2019-06-07 | 如般量子科技有限公司 | 基于非对称密钥池的抗量子计算https通信方法和系统 |
CN109906595A (zh) * | 2016-10-10 | 2019-06-18 | 思杰系统有限公司 | 用于跨不同类型的处理硬件执行密码操作的系统和方法 |
CN109919611A (zh) * | 2019-01-15 | 2019-06-21 | 如般量子科技有限公司 | 基于对称密钥池服务器的抗量子计算区块链交易方法和系统 |
CN111447144A (zh) * | 2020-04-01 | 2020-07-24 | 中核武汉核电运行技术股份有限公司 | 一种基于透明代理的应用路由方法 |
CN111711598A (zh) * | 2020-04-23 | 2020-09-25 | 中国电子科技网络信息安全有限公司 | 一种面向大规模ssl/tls加密会话流的敏感数据检测系统 |
CN113383528A (zh) * | 2018-12-04 | 2021-09-10 | 思杰系统有限公司 | 用于经由tls终止节点的智能内联路径发现的针对https流量的增强的qos、引导和策略实施的系统和设备 |
CN113486388A (zh) * | 2021-09-06 | 2021-10-08 | 江苏翔晟信息技术股份有限公司 | 基于分离式秘钥存储的电子签章签署系统及方法 |
CN113676482A (zh) * | 2021-08-26 | 2021-11-19 | 北京天空卫士网络安全技术有限公司 | 数据传输系统和方法与基于双层ssl的数据传输系统和方法 |
US20230061245A1 (en) * | 2017-07-21 | 2023-03-02 | Infrared5, Inc. | System and Method for Using a Proxy to Communicate Between Secure and Unsecure Devices |
CN117834253A (zh) * | 2023-12-29 | 2024-04-05 | 北京天融信网络安全技术有限公司 | 用于解析tls流量的方法、装置及tls通讯流量解析系统 |
US11956151B2 (en) | 2021-12-22 | 2024-04-09 | Industrial Technology Research Institute | Transmission control protocol flow control method and device for performing the method |
CN118540159A (zh) * | 2024-07-24 | 2024-08-23 | 之江实验室 | 一种基于ipsec的多会话设计系统及操作方法 |
Families Citing this family (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084566A1 (en) * | 2010-10-04 | 2012-04-05 | Edward Chin | Methods and systems for providing and controlling cryptographic secure communications across unsecured networks |
US11841770B2 (en) | 2005-09-30 | 2023-12-12 | Pure Storage, Inc. | Storage unit connection security in a storage network and methods for use therewith |
US9027080B2 (en) | 2008-03-31 | 2015-05-05 | Cleversafe, Inc. | Proxy access to a dispersed storage network |
US8107921B2 (en) | 2008-01-11 | 2012-01-31 | Seven Networks, Inc. | Mobile virtual network operator |
US9980146B2 (en) * | 2009-01-28 | 2018-05-22 | Headwater Research Llc | Communications device with secure data path processing agents |
US9572019B2 (en) | 2009-01-28 | 2017-02-14 | Headwater Partners LLC | Service selection set published to device agent with on-device service selection |
US10783581B2 (en) * | 2009-01-28 | 2020-09-22 | Headwater Research Llc | Wireless end-user device providing ambient or sponsored services |
US11985155B2 (en) | 2009-01-28 | 2024-05-14 | Headwater Research Llc | Communications device with secure data path processing agents |
US9954975B2 (en) | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Enhanced curfew and protection associated with a device group |
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9634993B2 (en) | 2010-04-01 | 2017-04-25 | Cloudflare, Inc. | Internet-based proxy service to modify internet responses |
US9049247B2 (en) | 2010-04-01 | 2015-06-02 | Cloudfare, Inc. | Internet-based proxy service for responding to server offline errors |
CA2806548C (en) * | 2010-07-26 | 2015-03-31 | Seven Networks, Inc. | Distributed implementation of dynamic wireless traffic policy |
US8543554B1 (en) | 2010-08-10 | 2013-09-24 | ScalArc Inc. | Method and system for transparent database query caching |
US9032017B1 (en) | 2010-08-10 | 2015-05-12 | Scalarc Inc | Method and system for transparent read-write query routing when load balancing databases |
US8484242B1 (en) * | 2010-08-24 | 2013-07-09 | ScalArc, Inc. | Method and system for transparent database connection pooling and query queuing |
US8763091B1 (en) * | 2010-08-24 | 2014-06-24 | ScalArc Inc. | Method and system for user authentication offload in a transparent database load balancer |
US20120078995A1 (en) * | 2010-09-29 | 2012-03-29 | Riverbed Technology, Inc. | System and method for warming an optimization device |
US11030305B2 (en) | 2010-10-04 | 2021-06-08 | Unisys Corporation | Virtual relay device for providing a secure connection to a remote device |
DE102010038094A1 (de) * | 2010-10-11 | 2012-04-12 | Francotyp-Postalia Gmbh | Verfahren und Anordnung zum rechtsverbindlichen Senden und Empfangen von vertraulichen elektronischen Mitteilungen |
US8819245B2 (en) * | 2010-11-22 | 2014-08-26 | Ixia | Processor allocation for multi-core architectures |
CA2873773A1 (en) * | 2011-03-06 | 2012-09-06 | PCN Technology, Inc. | Systems and methods of data transmission and management |
US10075823B2 (en) | 2011-04-02 | 2018-09-11 | Open Invention Network, Llc | System and method for dynamically configuring a handshake protocol |
US8743885B2 (en) | 2011-05-03 | 2014-06-03 | Cisco Technology, Inc. | Mobile service routing in a network environment |
US8285808B1 (en) * | 2011-05-20 | 2012-10-09 | Cloudflare, Inc. | Loading of web resources |
EP2737742A4 (en) | 2011-07-27 | 2015-01-28 | Seven Networks Inc | AUTOMATIC PRODUCTION AND DISTRIBUTION OF GUIDELINES INFORMATION ON MOBILE MOBILE TRANSPORT IN A WIRELESS NETWORK |
US9015469B2 (en) | 2011-07-28 | 2015-04-21 | Cloudflare, Inc. | Supporting secure sessions in a cloud-based proxy service |
US8862660B1 (en) | 2011-08-04 | 2014-10-14 | Wyse Technology L.L.C. | System and method for facilitating processing of communication |
IL216057A (en) * | 2011-10-31 | 2017-04-30 | Verint Systems Ltd | System and method for intercepting IP traffic by image processing |
US8813189B2 (en) * | 2011-11-18 | 2014-08-19 | Blue Coat Systems, Inc. | System and method for capturing network traffic |
US9647835B2 (en) * | 2011-12-16 | 2017-05-09 | Akamai Technologies, Inc. | Terminating SSL connections without locally-accessible private keys |
US9531685B2 (en) | 2011-12-16 | 2016-12-27 | Akamai Technologies, Inc. | Providing forward secrecy in a terminating SSL/TLS connection proxy using Ephemeral Diffie-Hellman key exchange |
WO2013153233A1 (en) * | 2012-04-13 | 2013-10-17 | Anyfi Networks Ab | End-to-end security in an ieee 802.11 communication system |
US9237168B2 (en) * | 2012-05-17 | 2016-01-12 | Cisco Technology, Inc. | Transport layer security traffic control using service name identification |
US9344405B1 (en) * | 2012-06-15 | 2016-05-17 | Massachusetts Institute Of Technology | Optimized transport layer security |
US8966247B2 (en) | 2012-07-03 | 2015-02-24 | International Business Machines Corporation | Managing security certificates of storage devices |
US9565180B2 (en) * | 2012-09-28 | 2017-02-07 | Symantec Corporation | Exchange of digital certificates in a client-proxy-server network configuration |
CN103795632B (zh) * | 2012-10-31 | 2017-02-22 | 华为技术有限公司 | 一种数据报文传输方法及相关设备、系统 |
CN104813306B (zh) * | 2012-11-21 | 2017-07-04 | 相干逻辑公司 | 具有散布处理器dma‑fifo的处理系统 |
US9154468B2 (en) * | 2013-01-09 | 2015-10-06 | Netronome Systems, Inc. | Efficient forwarding of encrypted TCP retransmissions |
WO2014130620A1 (en) | 2013-02-20 | 2014-08-28 | Fastly Inc. | Enhanced thread handling in security handshaking |
US10382401B1 (en) * | 2013-02-26 | 2019-08-13 | Zentera Systems, Inc. | Cloud over IP for enterprise hybrid cloud network and security |
US10348767B1 (en) | 2013-02-26 | 2019-07-09 | Zentera Systems, Inc. | Cloud over IP session layer network |
US9699034B2 (en) | 2013-02-26 | 2017-07-04 | Zentera Systems, Inc. | Secure cloud fabric to connect subnets in different network domains |
US10484334B1 (en) | 2013-02-26 | 2019-11-19 | Zentera Systems, Inc. | Distributed firewall security system that extends across different cloud computing networks |
US8782774B1 (en) | 2013-03-07 | 2014-07-15 | Cloudflare, Inc. | Secure session capability using public-key cryptography without access to the private key |
US9374344B1 (en) | 2013-03-29 | 2016-06-21 | Secturion Systems, Inc. | Secure end-to-end communication system |
US9355279B1 (en) | 2013-03-29 | 2016-05-31 | Secturion Systems, Inc. | Multi-tenancy architecture |
US9317718B1 (en) | 2013-03-29 | 2016-04-19 | Secturion Systems, Inc. | Security device with programmable systolic-matrix cryptographic module and programmable input/output interface |
US9524399B1 (en) * | 2013-04-01 | 2016-12-20 | Secturion Systems, Inc. | Multi-level independent security architecture |
US9497281B2 (en) * | 2013-04-06 | 2016-11-15 | Citrix Systems, Inc. | Systems and methods to cache packet steering decisions for a cluster of load balancers |
US9596077B2 (en) * | 2013-04-22 | 2017-03-14 | Unisys Corporation | Community of interest-based secured communications over IPsec |
US9530009B2 (en) | 2013-06-27 | 2016-12-27 | Visa International Service Association | Secure execution and update of application module code |
US9009461B2 (en) * | 2013-08-14 | 2015-04-14 | Iboss, Inc. | Selectively performing man in the middle decryption |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US9602498B2 (en) * | 2013-10-17 | 2017-03-21 | Fortinet, Inc. | Inline inspection of security protocols |
US9253200B2 (en) * | 2013-10-28 | 2016-02-02 | GM Global Technology Operations LLC | Programming vehicle modules from remote devices and related methods and systems |
US9374355B2 (en) * | 2013-10-28 | 2016-06-21 | GM Global Technology Operations LLC | Programming vehicle modules from remote devices and related methods and systems |
CN103595714A (zh) * | 2013-11-08 | 2014-02-19 | 福建省视通光电网络有限公司 | 一种通过web服务通道实现数据传输的方法 |
FR3013541B1 (fr) * | 2013-11-19 | 2021-02-19 | Oberthur Technologies | Procede et dispositif pour la connexion a un service distant |
CN104144202B (zh) * | 2013-12-11 | 2016-05-04 | 腾讯科技(深圳)有限公司 | Hadoop分布式文件系统的访问方法、系统和装置 |
US8984635B1 (en) | 2014-01-06 | 2015-03-17 | Cloudflare, Inc. | Authenticating the identity of initiators of TCP connections |
US8806011B1 (en) * | 2014-01-06 | 2014-08-12 | Cloudflare, Inc. | Transparent bridging of transmission control protocol (TCP) connections |
US9426176B2 (en) | 2014-03-21 | 2016-08-23 | Cisco Technology, Inc. | Method, system, and logic for in-band exchange of meta-information |
US8996873B1 (en) | 2014-04-08 | 2015-03-31 | Cloudflare, Inc. | Secure session capability using public-key cryptography without access to the private key |
US8966267B1 (en) | 2014-04-08 | 2015-02-24 | Cloudflare, Inc. | Secure session capability using public-key cryptography without access to the private key |
US9479443B2 (en) | 2014-05-16 | 2016-10-25 | Cisco Technology, Inc. | System and method for transporting information to services in a network environment |
US9379931B2 (en) | 2014-05-16 | 2016-06-28 | Cisco Technology, Inc. | System and method for transporting information to services in a network environment |
US9584492B2 (en) * | 2014-06-23 | 2017-02-28 | Vmware, Inc. | Cryptographic proxy service |
US10616185B2 (en) * | 2014-07-04 | 2020-04-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and first, second and network nodes for managing traffic characteristics |
WO2016009106A1 (en) * | 2014-07-18 | 2016-01-21 | Nokia Technologies Oy | Access to a node |
US9667605B2 (en) * | 2014-07-21 | 2017-05-30 | Gerard Lin | Electronic communication system and method for communication of the same in an open environment |
CN105450406B (zh) * | 2014-07-25 | 2018-10-02 | 华为技术有限公司 | 数据处理的方法和装置 |
US9864864B2 (en) * | 2014-09-23 | 2018-01-09 | Accenture Global Services Limited | Industrial security agent platform |
US10425446B2 (en) * | 2014-09-29 | 2019-09-24 | Akamai Technologies, Inc. | HTTPS request enrichment |
US9509661B2 (en) * | 2014-10-29 | 2016-11-29 | Aruba Networks, Inc. | Method and apparatus for displaying HTTPS block page without SSL inspection |
US9774631B2 (en) * | 2014-10-29 | 2017-09-26 | International Business Machines Corporation | TLS connection abandoning |
US10417025B2 (en) | 2014-11-18 | 2019-09-17 | Cisco Technology, Inc. | System and method to chain distributed applications in a network environment |
US9553721B2 (en) | 2015-01-30 | 2017-01-24 | Qualcomm Incorporated | Secure execution environment communication |
CN106161366B (zh) * | 2015-04-03 | 2020-02-14 | 阿里云计算有限公司 | 一种减少ssl占用空间的方法及系统 |
US10129277B1 (en) | 2015-05-05 | 2018-11-13 | F5 Networks, Inc. | Methods for detecting malicious network traffic and devices thereof |
US10122740B1 (en) | 2015-05-05 | 2018-11-06 | F5 Networks, Inc. | Methods for establishing anomaly detection configurations and identifying anomalous network traffic and devices thereof |
US10142306B1 (en) | 2015-05-05 | 2018-11-27 | F5 Networks, Inc. | Methods for providing a secure network channel and devices thereof |
US11616806B1 (en) | 2015-05-08 | 2023-03-28 | F5, Inc. | Methods for protecting web based resources from D/DoS attacks and devices thereof |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US9762402B2 (en) | 2015-05-20 | 2017-09-12 | Cisco Technology, Inc. | System and method to facilitate the assignment of service functions for service chains in a network environment |
US10021018B2 (en) * | 2015-09-07 | 2018-07-10 | Citrix Systems, Inc. | Systems and methods for associating multiple transport layer hops between clients and servers |
US11283774B2 (en) | 2015-09-17 | 2022-03-22 | Secturion Systems, Inc. | Cloud storage using encryption gateway with certificate authority identification |
US10708236B2 (en) | 2015-10-26 | 2020-07-07 | Secturion Systems, Inc. | Multi-independent level secure (MILS) storage encryption |
US10581902B1 (en) | 2015-11-30 | 2020-03-03 | F5 Networks, Inc. | Methods for mitigating distributed denial of service attacks and devices thereof |
US10469594B2 (en) * | 2015-12-08 | 2019-11-05 | A10 Networks, Inc. | Implementation of secure socket layer intercept |
US10505984B2 (en) * | 2015-12-08 | 2019-12-10 | A10 Networks, Inc. | Exchange of control information between secure socket layer gateways |
US20170171045A1 (en) * | 2015-12-11 | 2017-06-15 | Riverbed Technology, Inc. | Optimizing network traffic by transparently intercepting a transport layer connection after connection establishment |
US10834110B1 (en) | 2015-12-18 | 2020-11-10 | F5 Networks, Inc. | Methods for preventing DDoS attack based on adaptive self learning of session and transport layers and devices thereof |
US10783544B1 (en) * | 2015-12-21 | 2020-09-22 | Target Brands, Inc. | Secure loyalty programs |
US11044203B2 (en) | 2016-01-19 | 2021-06-22 | Cisco Technology, Inc. | System and method for hosting mobile packet core and value-added services using a software defined network and service chains |
US10397250B1 (en) | 2016-01-21 | 2019-08-27 | F5 Networks, Inc. | Methods for detecting remote access trojan malware and devices thereof |
US10270792B1 (en) | 2016-01-21 | 2019-04-23 | F5 Networks, Inc. | Methods for detecting malicious smart bots to improve network security and devices thereof |
US10447658B2 (en) * | 2016-01-22 | 2019-10-15 | Citrix Systems, Inc. | System and method for providing improved optimization for secure session connections |
US9900755B2 (en) * | 2016-01-26 | 2018-02-20 | Pearson Education, Inc. | End to end data signal consistency evaluation |
US9680801B1 (en) | 2016-05-03 | 2017-06-13 | Iboss, Inc. | Selectively altering references within encrypted pages using man in the middle |
US10257167B1 (en) * | 2016-06-21 | 2019-04-09 | Amazon Technologies, Inc. | Intelligent virtual private network (VPN) client configured to manage common VPN sessions with distributed VPN service |
US10601779B1 (en) | 2016-06-21 | 2020-03-24 | Amazon Technologies, Inc. | Virtual private network (VPN) service backed by eventually consistent regional database |
US10326730B2 (en) | 2016-06-27 | 2019-06-18 | Cisco Technology, Inc. | Verification of server name in a proxy device for connection requests made using domain names |
US20180039985A1 (en) * | 2016-08-03 | 2018-02-08 | Ciphertronics, Inc. | Apparatus and related method for device communication management for transmission of sensitive data |
US10361969B2 (en) | 2016-08-30 | 2019-07-23 | Cisco Technology, Inc. | System and method for managing chained services in a network environment |
US10432652B1 (en) | 2016-09-20 | 2019-10-01 | F5 Networks, Inc. | Methods for detecting and mitigating malicious network behavior and devices thereof |
US10666458B2 (en) * | 2016-09-30 | 2020-05-26 | Huawei Technologies Co., Ltd | Method and apparatus for data transmission involving tunneling in wireless communication networks |
US10819524B2 (en) * | 2016-10-19 | 2020-10-27 | Qualcomm Incorporated | Methods for header extension preservation, security, authentication, and protocol translation for RTP over MPRTP |
US20180124025A1 (en) * | 2016-10-31 | 2018-05-03 | Riverbed Technology, Inc. | Providing visibility into encrypted traffic without requiring access to the private key |
US10469452B2 (en) * | 2017-01-06 | 2019-11-05 | Klas Technologies Limited | Secure communication system |
US10601788B2 (en) * | 2017-03-29 | 2020-03-24 | A10 Networks, Inc. | Interception of secure shell communication sessions |
US10484352B2 (en) * | 2017-03-31 | 2019-11-19 | Microsoft Technology Licensing, Llc | Data operations using a proxy encryption key |
US11038869B1 (en) | 2017-05-12 | 2021-06-15 | F5 Networks, Inc. | Methods for managing a federated identity environment based on application availability and devices thereof |
US11048660B2 (en) * | 2017-06-20 | 2021-06-29 | Netflix, Inc. | Acceleration system for facilitating processing of API calls |
LT3472717T (lt) | 2017-08-28 | 2021-01-11 | Luminati Networks Ltd. | Būdas pagerinti turinio parsisiuntimą, pasirenkant tunelinius įrenginius |
US10931691B1 (en) | 2017-10-09 | 2021-02-23 | F5 Networks, Inc. | Methods for detecting and mitigating brute force credential stuffing attacks and devices thereof |
US10476800B2 (en) * | 2017-10-16 | 2019-11-12 | Verizon Digital Media Services Inc. | Systems and methods for load balancing virtual connection traffic |
US11539740B1 (en) | 2018-02-02 | 2022-12-27 | F5, Inc. | Methods for protecting CPU during DDoS attack and devices thereof |
CN110149354A (zh) * | 2018-02-12 | 2019-08-20 | 北京京东尚科信息技术有限公司 | 一种基于https协议的加密认证方法和装置 |
RU2706894C1 (ru) * | 2018-06-29 | 2019-11-21 | Акционерное общество "Лаборатория Касперского" | Система и способ анализа содержимого зашифрованного сетевого трафика |
US10834138B2 (en) | 2018-08-13 | 2020-11-10 | Akamai Technologies, Inc. | Device discovery for cloud-based network security gateways |
US11991273B2 (en) * | 2018-09-04 | 2024-05-21 | International Business Machines Corporation | Storage device key management for encrypted host data |
US11054999B2 (en) * | 2018-09-14 | 2021-07-06 | SeaPort, Inc. | Methods and systems for encoding and decoding communications |
US10951589B2 (en) * | 2018-12-06 | 2021-03-16 | Akamai Technologies, Inc. | Proxy auto-configuration for directing client traffic to a cloud proxy |
EP4220442A1 (en) | 2019-02-25 | 2023-08-02 | Bright Data Ltd. | System and method for url fetching retry mechanism |
JP7204534B2 (ja) * | 2019-03-04 | 2023-01-16 | 株式会社東芝 | 通信システム |
EP4383686A1 (en) | 2019-04-02 | 2024-06-12 | Bright Data Ltd. | System and method for managing non-direct url fetching service |
CN110071933B (zh) * | 2019-04-28 | 2021-11-12 | 深圳前海微众银行股份有限公司 | 安全套接层加速方法、装置、设备及可读存储介质 |
GB2583736B (en) * | 2019-05-07 | 2021-12-22 | F Secure Corp | Method for inspection and filtering of TCP streams in gateway router |
CN110519225B (zh) * | 2019-07-16 | 2021-08-31 | 如般量子科技有限公司 | 基于非对称密钥池和证书密码学的抗量子计算https通信方法和系统 |
CN110519226B (zh) * | 2019-07-16 | 2021-12-07 | 如般量子科技有限公司 | 基于非对称密钥池和隐式证书的量子通信服务端保密通信方法和系统 |
US20210075777A1 (en) | 2019-09-06 | 2021-03-11 | Winston Privacy | Method and system for asynchronous side channel cipher renegotiation |
CN110704852B (zh) * | 2019-09-26 | 2021-06-08 | 江苏方天电力技术有限公司 | 一种rtos系统程序镜像文件的加密系统 |
US11349981B1 (en) | 2019-10-30 | 2022-05-31 | F5, Inc. | Methods for optimizing multimedia communication and devices thereof |
US11757839B2 (en) * | 2020-02-28 | 2023-09-12 | Jonathan Cobb | Virtual private network application platform |
US10903990B1 (en) | 2020-03-11 | 2021-01-26 | Cloudflare, Inc. | Establishing a cryptographic tunnel between a first tunnel endpoint and a second tunnel endpoint where a private key used during the tunnel establishment is remotely located from the second tunnel endpoint |
CN113541924B (zh) | 2020-04-13 | 2023-09-29 | 华为技术有限公司 | 报文检测的方法、设备以及系统 |
US11831634B2 (en) * | 2020-10-30 | 2023-11-28 | EMC IP Holding Company LLC | Managing trusted communications between server and clients |
US11907347B2 (en) | 2021-06-21 | 2024-02-20 | Bank Of America Corporation | System for secure verification of authentication data using quantum computing and a distributed server network |
EP4195590A1 (en) * | 2021-12-13 | 2023-06-14 | Giesecke+Devrient Mobile Security GmbH | Secure data transmission |
GB202205485D0 (en) * | 2022-04-13 | 2022-05-25 | Enclave Networks Ltd | Computer-implemented methods and systems |
GB2622227A (en) * | 2022-09-06 | 2024-03-13 | Arqit Ltd | A method and system for secure communication |
US20240187227A1 (en) * | 2022-12-06 | 2024-06-06 | VMware LLC | Wan optimization for encrypted data traffic using fully homomorphic encryption |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206573A (ja) * | 2002-12-26 | 2004-07-22 | Toshiba Corp | データ転送装置、サーバー装置、情報提供システム、データ転送方法及びプログラム |
CN101112041A (zh) * | 2005-02-28 | 2008-01-23 | 日本电气株式会社 | 通信系统、通信装置、通信方法以及程序 |
US20080307219A1 (en) * | 2007-06-05 | 2008-12-11 | Shrikrishna Karandikar | System and method for distributed ssl processing between co-operating nodes |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081900A (en) * | 1999-03-16 | 2000-06-27 | Novell, Inc. | Secure intranet access |
US7149892B2 (en) | 2001-07-06 | 2006-12-12 | Juniper Networks, Inc. | Secure sockets layer proxy architecture |
US7111162B1 (en) * | 2001-09-10 | 2006-09-19 | Cisco Technology, Inc. | Load balancing approach for scaling secure sockets layer performance |
US7337226B2 (en) * | 2002-05-10 | 2008-02-26 | Oracle International Corporation | Method and mechanism for implementing dynamic sizing of session pools |
WO2005001660A2 (en) * | 2003-06-25 | 2005-01-06 | Anonymizer, Inc. | Secure network privacy system using proxy server |
US8613071B2 (en) * | 2005-08-10 | 2013-12-17 | Riverbed Technology, Inc. | Split termination for secure communication protocols |
US20090083537A1 (en) * | 2005-08-10 | 2009-03-26 | Riverbed Technology, Inc. | Server configuration selection for ssl interception |
US8478986B2 (en) * | 2005-08-10 | 2013-07-02 | Riverbed Technology, Inc. | Reducing latency of split-terminated secure communication protocol sessions |
US20070074282A1 (en) | 2005-08-19 | 2007-03-29 | Black Jeffrey T | Distributed SSL processing |
US20070214251A1 (en) * | 2006-03-07 | 2007-09-13 | Zhong Li | Naming and accessing remote servers through security split reverse proxy |
US7865585B2 (en) * | 2007-03-12 | 2011-01-04 | Citrix Systems, Inc. | Systems and methods for providing dynamic ad hoc proxy-cache hierarchies |
US8549157B2 (en) * | 2007-04-23 | 2013-10-01 | Mcafee, Inc. | Transparent secure socket layer |
US8307203B2 (en) * | 2008-07-14 | 2012-11-06 | Riverbed Technology, Inc. | Methods and systems for secure communications using a local certification authority |
US8190879B2 (en) * | 2009-12-17 | 2012-05-29 | Cisco Technology, Inc. | Graceful conversion of a security to a non-security transparent proxy |
-
2010
- 2010-04-21 US US12/764,633 patent/US8543805B2/en active Active
-
2011
- 2011-04-15 EP EP11772477.3A patent/EP2561639B1/en active Active
- 2011-04-15 CN CN201180030493.8A patent/CN102948131B/zh active Active
- 2011-04-15 WO PCT/US2011/032690 patent/WO2011133422A2/en active Application Filing
-
2013
- 2013-09-16 US US14/028,133 patent/US8949591B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206573A (ja) * | 2002-12-26 | 2004-07-22 | Toshiba Corp | データ転送装置、サーバー装置、情報提供システム、データ転送方法及びプログラム |
CN101112041A (zh) * | 2005-02-28 | 2008-01-23 | 日本电气株式会社 | 通信系统、通信装置、通信方法以及程序 |
US20080307219A1 (en) * | 2007-06-05 | 2008-12-11 | Shrikrishna Karandikar | System and method for distributed ssl processing between co-operating nodes |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202121A (zh) * | 2015-05-07 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
CN106202121B (zh) * | 2015-05-07 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
WO2017079980A1 (zh) * | 2015-11-13 | 2017-05-18 | 华为技术有限公司 | 一种计费欺诈的检测方法及装置 |
CN108351930A (zh) * | 2015-11-19 | 2018-07-31 | 罗伯特·博世有限公司 | 通过联网计算机对嵌入式设备进行安全访问控制 |
CN108351930B (zh) * | 2015-11-19 | 2021-10-01 | 罗伯特·博世有限公司 | 通过联网计算机对嵌入式设备进行的安全访问控制方法 |
WO2017124837A1 (zh) * | 2016-01-19 | 2017-07-27 | 深圳前海达闼云端智能科技有限公司 | 一种sslvpn的代理方法、服务器以及客户端及其处理方法 |
CN109906595A (zh) * | 2016-10-10 | 2019-06-18 | 思杰系统有限公司 | 用于跨不同类型的处理硬件执行密码操作的系统和方法 |
CN109906595B (zh) * | 2016-10-10 | 2021-09-03 | 思杰系统有限公司 | 用于跨不同类型的处理硬件执行密码操作的系统和方法 |
WO2018076183A1 (zh) * | 2016-10-25 | 2018-05-03 | 华为技术有限公司 | 一种传输数据的方法、装置和系统 |
CN106941401B (zh) * | 2017-03-23 | 2021-06-04 | 深信服科技股份有限公司 | 加速设备以及基于加速设备获取会话秘钥的方法 |
CN106941401A (zh) * | 2017-03-23 | 2017-07-11 | 深信服科技股份有限公司 | 加速设备以及基于加速设备获取会话秘钥的方法 |
US20230061245A1 (en) * | 2017-07-21 | 2023-03-02 | Infrared5, Inc. | System and Method for Using a Proxy to Communicate Between Secure and Unsecure Devices |
CN108200104A (zh) * | 2018-03-23 | 2018-06-22 | 网宿科技股份有限公司 | 一种进行ssl握手的方法和系统 |
US11303431B2 (en) | 2018-03-23 | 2022-04-12 | Wangsu Science & Technology Co., Ltd. | Method and system for performing SSL handshake |
US11716314B2 (en) | 2018-12-04 | 2023-08-01 | Citrix Systems, Inc. | System and apparatus for enhanced QOS, steering and policy enforcement for HTTPS traffic via intelligent inline path discovery of TLS terminating node |
CN113383528A (zh) * | 2018-12-04 | 2021-09-10 | 思杰系统有限公司 | 用于经由tls终止节点的智能内联路径发现的针对https流量的增强的qos、引导和策略实施的系统和设备 |
CN109861813B (zh) * | 2019-01-11 | 2021-08-10 | 如般量子科技有限公司 | 基于非对称密钥池的抗量子计算https通信方法和系统 |
CN109861813A (zh) * | 2019-01-11 | 2019-06-07 | 如般量子科技有限公司 | 基于非对称密钥池的抗量子计算https通信方法和系统 |
CN109919611B (zh) * | 2019-01-15 | 2021-11-16 | 如般量子科技有限公司 | 基于对称密钥池服务器的抗量子计算区块链交易方法和系统 |
CN109919611A (zh) * | 2019-01-15 | 2019-06-21 | 如般量子科技有限公司 | 基于对称密钥池服务器的抗量子计算区块链交易方法和系统 |
CN111447144A (zh) * | 2020-04-01 | 2020-07-24 | 中核武汉核电运行技术股份有限公司 | 一种基于透明代理的应用路由方法 |
CN111711598A (zh) * | 2020-04-23 | 2020-09-25 | 中国电子科技网络信息安全有限公司 | 一种面向大规模ssl/tls加密会话流的敏感数据检测系统 |
CN113676482A (zh) * | 2021-08-26 | 2021-11-19 | 北京天空卫士网络安全技术有限公司 | 数据传输系统和方法与基于双层ssl的数据传输系统和方法 |
CN113486388A (zh) * | 2021-09-06 | 2021-10-08 | 江苏翔晟信息技术股份有限公司 | 基于分离式秘钥存储的电子签章签署系统及方法 |
CN113486388B (zh) * | 2021-09-06 | 2021-11-26 | 江苏翔晟信息技术股份有限公司 | 基于分离式秘钥存储的电子签章签署系统及方法 |
US11956151B2 (en) | 2021-12-22 | 2024-04-09 | Industrial Technology Research Institute | Transmission control protocol flow control method and device for performing the method |
CN117834253A (zh) * | 2023-12-29 | 2024-04-05 | 北京天融信网络安全技术有限公司 | 用于解析tls流量的方法、装置及tls通讯流量解析系统 |
CN117834253B (zh) * | 2023-12-29 | 2024-09-17 | 北京天融信网络安全技术有限公司 | 用于解析tls流量的方法、装置、tls通讯流量解析系统及机器可读存储介质 |
CN118540159A (zh) * | 2024-07-24 | 2024-08-23 | 之江实验室 | 一种基于ipsec的多会话设计系统及操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140122865A1 (en) | 2014-05-01 |
EP2561639A2 (en) | 2013-02-27 |
US8949591B2 (en) | 2015-02-03 |
WO2011133422A2 (en) | 2011-10-27 |
CN102948131B (zh) | 2015-07-15 |
EP2561639A4 (en) | 2016-06-22 |
EP2561639B1 (en) | 2019-09-04 |
WO2011133422A3 (en) | 2012-01-12 |
US20110264905A1 (en) | 2011-10-27 |
US8543805B2 (en) | 2013-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102948131B (zh) | 用于经由wan设备分离代理ssl的系统和方法 | |
CN103229460B (zh) | 用于经由流控制隧道提供服务质量的系统和方法 | |
CN102405631B (zh) | 用于中间设备压缩通过远程显示协议传递的数据的系统和方法 | |
CN102986189B (zh) | 用于为对应于虚通道的网络连接分配服务等级的系统和方法 | |
CN103518358B (zh) | 为单个流ICA提供QoS的系统和方法 | |
CN103354989B (zh) | 用于中间装置中的多级服务质量分类的系统和方法 | |
CN103384991B (zh) | 用于加密网络流量的服务质量的系统和方法 | |
US9479480B2 (en) | Systems and methods of using SSL pools for WAN acceleration | |
CN103152279B (zh) | 用于在tcp拥塞控制中提供服务质量优先的系统和方法 | |
CN101690079B (zh) | 用于使用压缩历史来改进网络性能的系统和方法 | |
US9210081B2 (en) | Systems and methods for bridging a WAN accelerator with a security gateway | |
US9602577B2 (en) | Systems and methods for quality of service of ICA published applications | |
US8831041B2 (en) | Prioritizing highly compressed traffic to provide a predetermined quality of service | |
CN101523865B (zh) | 用于使用http-察觉的客户端代理的系统和方法 | |
US8331223B2 (en) | Method and system for controlling network traffic within the same connection with different packet tags by varying the policies applied to a connection | |
CN101682565B (zh) | 用于通过代理进行动态带宽控制的系统和方法 | |
CN103988483A (zh) | 用于网络加速器的动态适应的系统和方法 | |
CN103560905B (zh) | 用于配置、应用和管理网络装置的面向对象策略表达式的系统和方法 | |
CN102577302A (zh) | 用于在具有流量管理的连接中使用端点审计的系统和方法 | |
CN101682566A (zh) | 用于提供基于代理的服务质量的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |