专利名称:用于为对应于虚通道的网络连接分配服务等级的系统和方法
用于为对应于虚通道的网络连接分配服务等级的系统和方
相关申请
本申请要求2010年5月9日提交的、名称为“Allocation of Classes of Service to Network Connections Corresponding to Virtual Channels” 的美国临时专利申请 No. 61/332803的优先权和权益,其内容通过引用被全部包含于此。技术领域
本文描述的方法和系统一般涉及通过一个或多个虚通道传输远程显示协议数据, 该方法和系统尤其涉及通过虚通道经由具有不同服务等级的相应的传输层连接来传输数据。
背景技术:
获取并且在客户机器上远程显示应用数据的系统往往通过使用虚通道的网络连接来传输大量信息。在很多情况下,这样的数据可能包括图像数据、音频数据、视频数据、配置数据和其他类型的数据。一般来说,远程显示客户机和服务器之间的单个传输层连接可用于所有通信。独立计算架构(ICA)客户机是一种远程显示客户机。在ICA协议中,可使用多个“虚拟流(virtual stream)或通道”并且为其分配优先级,该优先级依赖于每一虚拟流或通道内数据的通信延迟需求。可以由单个传输层连接来承载(carry)多个虚通道, 并且可以根据虚通道所分配到的优先级对其进行多路复用或一起排队。例如,可能希望为 GUI交互保持低延迟从而改善人类所感知的响应能力。要做到这一点,可将GUI交互事件在高优先级虚通道中发送,而同时可将批量数据传送(例如文件复制)在低优先级通道中发送。可以通过各种算法实现多路复用和排队,包括支持高优先级虚通道比低优先级虚通道具有更大权重的加权轮循、支持对较低优先级虚通道数据进行缓冲的用于突发式高优先级虚通道数据的立即传输规则、混合的先进/先出和先进/后出排队,或者任何其他类型和形式的加权。
对于虚通道数据的这种优先级划分在通过传输层连接传输该数据之前进行。因此,在相同的传输层通信中,尽管相对于低优先级虚通道而言高优先级虚通道可以具有优先权,但是整个传输层连接可能只有单个优先级,因此,不可能在远程会话之外分配优先等级或重要等级。例如,网络管理员不能为网络上的特定虚通道分配优先等级。相反,管理员只能为整个远程会话分配优先等级。
此外,尽管存在网络产品可以基于远程协议的分组标签(tag)动态改变整个远程会话的优先级,但这些解决方案通常需要网络产品检查应用、会话或传输层分组的表示层数据有效载荷。大部分网络设备(如路由器和交换机)不能做到这点并且不能动态改变TCP 或UDP会话的优先级。实际上,该优先级必须是固定的。
因此,具有传输高优先级语音数据、中优先级CTI数据和低优先级打印机数据的多个虚通道的远程会话,可经由具有单个优先级的单个传输层连接被传输。如果该优先级较高,则满足高优先级数据的延迟需要,但低优先级数据也同样以高优先级被传输,其不利地影响了具有真实高优先级数据的其他会话。类似地,如果以低优先级传输该传输层连接, 有效地用于低优先级电子邮件的带宽可能不足以用于语音通信,这导致延迟和负面的用户体验。为由一个远程会话产生的所有网络流量分配相同优先级的缺陷从而包括将诸如视频和音频的高优先级数据与打印机数据以相同的优先等级进行传输。例如,用户可能请求访问远程IP语音(VoIP)应用,然而因为由远程会话和非远程会话流量产生的网络拥塞,该用户可能由于延迟的数据分组而体验到很差的音质。尽管在一些情况下管理员可以提高整个远程会话的优先等级,但是为减轻VoIP应用的网络延迟影响所需的优先等级很可能导致非远程会话和其他远程会话的网络流量受到影响。因此,需要用于为远程会话中的各个虚通道分配不同优先等级或服务质量等级的方法和系统来改善终端用户的体验。发明内容
本文描述了用于建立多个传输层连接以承载由远程应用会话生成的流量的方法和系统。每个传输层连接可具有不同的服务质量、服务等级或优先等级,并且每个传输层连接可承载通过特定虚通道传输的网络流量。因而,远程应用会话中的每个虚通道可与不同服务等级相关联并且可通过对应的传输层连接传送。在一些实施例中,网络管理员可使用服务等级和端口号对每个传输层连接划分优先级以便使得每个传输层连接具有与其他传输层连接不同的优先等级。例如,第一传输层连接可具有最高优先等级并且可以传输诸如音频和视频会议信息之类的实时信息。另一个传输层连接可具有较低优先等级并且可以传输图像数据和图像命令,而同时另一 TCP或UDP连接可具有更低的优先等级并且可传输扫描数据和驱动器映射信息。还有另一 TCP连接可具有最低优先等级并且可以传输打印命令。
本文描述的一个方面提供了用于为多个网络连接中的每个网络连接分配不同服务等级的方法和系统,其中每个网络连接对应于一个或多个虚通道。所述系统的多个虚通道将第一计算机连接到第二计算机,其中每个虚通道服务于使用表示层协议或远程显示协议所生成的至少部分网络流量。所述系统包括多个网络连接,其中每个网络连接对应于至少一个虚通道。每个网络连接可具有被分配的端口号和对应于传输优先等级的被分配的服务等级。分配给一个网络连接的服务等级可与分配给其他网络连接的服务等级不同。
在一个方面,本申请针对用于为多个网络连接中的每个网络连接分配不同服务等级的系统,其中每个网络连接对应一个或多个虚通道。所述系统包括第一计算装置和第二计算装置。所述第二计算装置经由远程显示协议会话与第一计算装置通信。所述远程显示协议会话包括多个虚通道,每个虚通道服务于远程显示协议会话的至少部分网络流量。第二计算装置也经由多个传输层网络连接与第一计算装置通信,所述多个传输层网络连接包括第一计算装置和第二计算装置之间的网络连接,第一传输层网络连接承载第一虚通道且被分配第一服务等级,并且第二传输层网络连接承载第二虚通道并被分配第二服务等级, 所述第二服务等级不同于所述第一服务等级。远程显示协议会话因而由多个传输层网络连接承载、经由多个传输层网络连接传输或者由多个传输层网络连接进行封装。
在一个实施例中,为第一传输层网络连接分配第一端口号且为第二传输层网络连接分配第二端口号,所述第二端口号不同于第一端口号。在进一步的实施例中,第一端口号基于通过由第一传输层网络连接承载的第一虚通道通信的数据的类型,并且其中第二端口号基于通过由第二传输层网络连接承载的第二虚通道传输的数据的类型。
在一些实施例中,第一服务等级对应于由第一传输层网络连接承载的第一虚通道的第一传输优先级,并且第二服务等级对应于由第二传输层网络连接承载的第二虚通道的第二传输优先级。在进一步的实施例中,第一传输优先级不同于第二传输优先级。在另一个进一步的实施例中,第一传输优先级基于通过由第一传输层网络连接承载的第一虚通道传输的数据的类型,且其中第二传输优先级基于通过由第二传输层网络连接承载的第二虚通道传输的数据的类型。
在另一个方面,本申请针对用于为多个网络连接中的每个网络连接分配不同服务等级的方法,其中每个网络连接对应于一个或多个虚通道。所述方法包括由第一计算装置经由第一传输层网络连接向第二计算装置传输远程显示协议会话的第一虚通道的远程显示协议数据。第一传输层网络连接被分配第一服务等级。所述方法还包括由第一计算装置经由第二传输层网络连接向第二计算装置传输远程显示协议会话的第二虚通道的远程显示协议数据。第二传输层连接被分配不同于第一服务等级的第二服务等级。
在一些实施例中,第一传输层网络连接被分配第一端口号,并且第二传输层网络连接被分配不同于第一端口号的第二端口号。在其他实施例中,第一服务等级基于第一虚通道的远程显示协议数据的类型,且第二服务等级基于第二虚通道的远程显示协议数据的类型。
在一个实施例中,第一服务等级基于第一虚通道的第一传输优先级,并且第二服务等级基于不同于第一传输优先级的第二虚通道的第二传输优先级。在进一步的实施例中,所述方法包括通过中间计算装置经由第一传输层网络连接向第二计算装置传输远程显示协议会话的第一虚通道的远程显示协议数据,所述中间计算装置基于第一服务等级执行流量优先级划分。所述方法还包括通过所述中间计算装置经由第二传输层网络连接向第二计算装置传输远程显示协议会话的第二虚通道的远程显示协议数据,所述中间计算装置基于第二服务等级执行流量优先级划分。在进一步的实施例中,中间计算装置可在其中一个传输层连接或者全部传输层连接上执行流量优先级划分,不考虑由传输层连接承载的远程显示协议数据。
在一些实施例中,所述方法包括响应于内容类型、应用类型或数据用户的其中之一以及第一服务等级,确定经由第一传输层网络连接来传输远程显示协议会话的第一虚通道的远程显示协议数据。在一些实施例中,服务等级可由内容类型、应用类型或数据用户来确定。
在另一个方面,本申请针对用于为多个网络连接中的每个网络连接分配不同服务等级的方法,其中每个网络连接对应于一个或多个虚通道。所述方法包括由第一计算装置经由第一传输层连接建立与第二计算装置的远程显示协议会话。为第一传输层连接分配第一服务等级,并且所述远程显示协议会话包括多个虚通道。所述方法还包括由第一计算装置建立与第二计算装置的第二传输层连接。为第二传输层连接分配不同于第一服务等级的第二服务等级。所述方法还包括由第一计算装置响应于对应于第一服务等级的第一虚通道的优先级,经由第一传输层连接来传输远程显示协议会话的第一虚通道的远程显示协议数据。所述方法还包括由第一计算装置响应于对应于第二服务等级的第二虚通道的优先级,经由第二传输层连接来传输远程显示协议会话的第二虚通道的远程显示协议数据。
在一些实施例中,所述方法包括第一计算装置向第二计算装置传输建立远程显示协议会话的请求。在其他实施例中,所述方法包括第一计算装置响应于从第二计算装置接收建立远程显示协议会话的请求来建立远程显示协议会话。在一个实施例中,所述方法包括第一计算装置向第二计算装置传输建立第二传输层连接的请求。在另一个实施例中,所述方法包括第一计算装置响应于从第二计算装置接收建立第二传输层连接的请求来建立第二传输层请求。
在一些实施例中,所述方法包括响应于第二虚通道的优先级不同于第一虚通道的优先级,建立第二传输层连接。在其他实施例中,所述方法包括通过基于第一服务等级执行流量优先级划分的中间计算装置来传输远程显示协议数据,并且通过基于第二服务等级执行流量优先级划分的所述中间计算装置来传输远程显示协议数据。在进一步的实施例中, 中间计算装置可在其中一个传输层连接或者全部传输层连接上执行流量优先级划分,不考虑虚通道的远程显示协议数据。
在一些实施例中,响应于第一虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一来分配第一虚通道的优先级,并且响应于第二虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一来分配第二虚通道的优先级。
在附图和下面的描述中将详细阐述本发明的各种实施例的细节。
通过参考下述结合附图的描述,本发明的前述和其它目的、方面、特征和优点将会更加明显并更易于理解,其中
图IA是描述具有与服务器通信的客户机器的远程访问、网络化环境的实施例的框图IB是客户机经由一个或多个网络优化设备访问服务器的网络环境的实施例的框图IC是客户机经由一个或多个网络优化设备连同其他网络设备访问服务器的网络环境的另一个实施例的框图ID是客户机经由一个或多个网络优化设备、路由器或者单独部署或与其他网络设备一起部署的其他中间计算装置访问服务器的网络环境的多个实施例的框图IE和IF是计算装置的实施例的框图2是用于处理客户机和服务器之间的通信的中间计算装置的实施例的框图3是部署了设备的网络优化特征的客户机和/或服务器的另一个实施例的框图4A是描述用于为虚通道分配服务等级值的系统的实施例的框图4B是描述对于多流远程显示协议建立多个传输层连接的方法的实施例的消息序列图4C是描述对于多流远程显示协议从第一传输层连接向第二传输层连接转移虚通道的方法的实施例的消息序列图4D是网络堆栈的框图,其描述表示层数据流穿过该堆栈用于经由传输层连接进行传送;
图4E是其中经由单个传输层连接承载多个虚通道的系统的实施例的框图4F是其中利用多个传输层连接来承载会话的多个虚通道的系统的实施例的框图5是包括中间装置和安全票授权或认证服务器的系统的实施例的框图,其中利用多个传输层连接来承载会话的多个虚通道。
图6是用于为虚通道分配服务等级值的方法的实施例的流程图7是用于为多个网络连接中的每个网络连接分配不同服务等级的方法的实施例的流程图,其中每个网络连接对应于一个或多个虚通道;以及
图8是用于为多个网络连接中的每个网络连接分配不同服务等级的方法的另一个实施例的流程图,其中每个网络连接对应于一个或多个虚通道。
从下面结合附图所阐述的详细描述,本发明的特征和优点将更明显,其中,同样的参考标记在全文中标识相应的元素。在附图中,同样的附图标记通常表示相同的、功能上相似的和/或结构上相似的元素。
具体实施方式
为了阅读本发明下述各种具体实施例的描述,下述对于说明书的部分以及它们各自内容的描述是有用的
- A部分描述有益于实施本发明的实施例的网络环境和计算环境;
- B部分描述用于向远程用户加速传送计算环境的系统和设备架构的实施例;以及
— C部分描述用于为多个网络连接中的每个网络连接分配不同服务等级的系统和方法的实施例,其中每个网络连接对应一个或多个虚通道。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可在其中部署这些实施例的网络和计算环境是有帮助的。
图IA描述了计算环境101的一个实施例,该计算环境包括与一个或多个服务器 106A - 106N (本文总的称为“服务器106”)通信的一个或多个客户机器102A — 102N (本文总的称为“客户机器102”)。网络被安装在客户机器102与服务器106之间。网络可包括一个或多个网段以及一个或多个中间计算装置,该中间计算装置包括路由器、交换机、加速器、防火墙、设备或其他装置。在一个实施例中,计算环境101可包括安装在服务器106和客户机器102之间的设备。这个设备可管理客户机/服务器连接,并且在一些情况下可以在多个后端服务器之间负载平衡客户机连接。在其他实施例中,计算环境101可包括安装在服务器106和客户机器102之间的路由器。该路由器可被配置为执行网络服务质量(QoS) 机制,该机制包括将在下文中详细描述的流量调整、优先级划分、缓冲、调度、拥塞避免和其他技术。
在一些实施例中,客户机器102可以被称为单个客户机器102或单组客户机器 102,而服务器106可以被称为单个服务器106或单组服务器106。在一个实施例中,单个客户机器102与不只一个服务器106通信,而在又一个实施例中,单个服务器106与不只一个客户机器102通信。在又一个实施例中,单个客户机器102与单个服务器106通信。
在一些实施例中,客户机器102可以通过下列术语的任何一个而被引用客户机器102、客户机、客户计算机、客户装置、客户计算装置、本地机器、远程机器、客户机节点、端点、端节点或第二机器。在一些实施例中,服务器106可以通过下列术语的任何一个而被引用服务器、本地机器、远程机器、服务器群、主机计算装置或第一机器。
在一个实施例中,客户机器102可以是虚拟机102C。尽管在一些实施例中该虚拟机102C可以是由Xen Solutions、Citrix Systems、IBM、VMware公司开发的管理程序或任何其他管理程序管理的任一虚拟机,但该虚拟机102C可以是任何虚拟机。在其他实施例中,虚拟机102C可以被任何管理程序管理,而仍在其他实施例中,虚拟机102C可以被在服务器106上执行的管理程序或在客户机102上执行的管理程序管理。
在一些实施例中,客户机器102可以执行、操作或者以其它方式提供应用,所述应用可为下列的任何一个软件、程序、可执行指令,虚拟机、管理程序、web浏览器、基于web 的客户端、客户端一服务器应用、瘦客户端计算客户机、ActiveX控件、Java小应用、与例如软IP电话的互联网协议电话(VoIP)通信相关的软件,用于流式传输视频和/或音频的应用、用于促进实时数据通信的应用、HTTP客户端、FTP客户端、Oscar客户端、Telnet客户端或任何其他可执行指令集。其他实施例包括显示由在服务器106或其他位于远程的机器上远程地执行的应用产生的应用输出的客户装置102。在这些实施例中,客户装置102可在应用窗口、浏览器或其他输出窗口中显不应用输出。在一个实施例中,该应用是桌面,而在其他实施例中,该应用是产生桌面的应用。在其他实施例中,该应用可包括诸如Microsoft Word的字处理应用,或者诸如Out look的电子邮件应用,这两种应用均由位于美国华盛顿州Redmond的微软公司出品。
在一些实施例中,服务器106执行远程表示客户端或其他客户端或程序,所述远程表示客户端或其他客户端或程序使用瘦客户端或远程显示协议来捕获由在服务器106 上执行的应用产生的显示输出并且将该应用显示输出传输到远程客户机102。瘦客户端或远程显示协议可以是下列协议的任何一个由位于美国佛罗里达州Ft. Lauderdale的 Citrix Systems有限公司出品的独立计算架构(ICA)协议;由位于美国华盛顿州Redmond 的微软公司出品的远程桌面协议(RDP);或者PCoIP协议。
计算环境可以包括不只一个服务器106A-106N,使得服务器106A-106N被一起逻辑分组到服务器群106中。服务器群106可包括地理上分散但逻辑上被一起分组到服务器群106中的服务器106,或者互相位置接近且逻辑上被一起分组到服务器群106中的服务器。在一些实施例中,在服务器群106中地理上分散的服务器106A-106N使用WAN、MAN或 LAN通信,其中不同的地理区域可以被表征为不同的大陆、大陆的不同区域、不同的国家、 不同的州、不同的城市、不同的校园、不同的房间、或前述地理位置的任何组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其他实施例中,服务器群106可包括多个服务器群106。
在一些实施例中,服务器群106可包括执行大体上相似类型的操作系统平台(例如任何类型的服务器操作系统)的服务器106。在其他实施例中,服务器群106可包括执行第一类型的操作系统平台的第一组服务器106,和执行第二类型的操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型的操作系统平台的服务器106。
在一些实施例中,服务器106可以是任何服务器类型。在其他实施例中,服务器 106可以是任何下列服务器类型文件服务器、应用服务器、web服务器、代理服务器、设备、 网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器或者作为主应用服务器、执行活动目录的服务器106、或执行提供防火墙功能、应用功能,或负载平衡功能的应用加速程序的服务器106。在一些实施例中, 服务器106可以是包括远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由任何一个下列制造商制造的设备Citrix应用网络组、 Silver Peak Systems 有限公司、Riverbed Technology 有限公司、F5Networks 有限公司或 Juniper Networks有限公司。一些实施例包括第一服务器106A,其接收来自客户机器102 的请求,将该请求转发到第二服务器106B,并且用来自第二服务器106B的响应对由客户机器102产生的请求进行响应。第一服务器106A可以获取对客户机器102可用的应用的列举以及与寄载该应用列举中识别的应用的应用服务器106关联的地址信息。第一服务器106A 接着可以使用web接口来呈现对该客户机的请求的响应,并且可以直接与客户机102通信以向客户机102提供对所识别的应用的访问。
在一些实施例中,服务器106可以执行下列应用的任何一个使用瘦客户端协议传输应用显示数据到客户机的瘦客户端应用、远程显示表示应用、Citrix Systems有限公司的部分应用服务器产品(例如METAFRAME或CITRIX PRESENTATION SERVER或XenApp或 XenDesktop),由微软公司出品的MICROSOFT WINDOWS终端服务、或由Citrix Systems有限公司开发的ICA客户端。又一个实施例包括为应用服务器的服务器106,例如提供诸如由微软公司制造的MICROSOFT EXCHANGE的电子邮件服务的邮件服务器、web或Internet服务器、桌面共享服务器、协同服务器或任何其他类型的应用服务器。其他实施例包括执行任何一种下列类型的所寄载的服务器应用的服务器106 :由Citrix Online Division有限公司提供的G0T0MEETING,由位于美国加利福尼亚州Santa Clara的WebEx有限公司提供的 WEBEX,或者由微软公司提供的 Microsoft Office LIVE MEETING。
在一些实施例中,客户机器102可以是寻求访问由服务器106所提供资源的客户机节点。在其他实施例中,服务器106可向客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器106充当主节点,从而它与一个或多个客户机102或服务器106通信。在一些实施例中,该主节点可以识别并向一个或多个客户机102或服务器106 提供与寄载所请求的应用的服务器106关联的地址信息。在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群或设备。
一个或多个客户机102和/或一个或多个服务器106可以通过在计算环境101中的机器和设备之间安装的网络104传输数据。网络104可以包括一个或多个子网,并且可以被安装在计算环境101中所包含的客户机102、服务器106、计算机器和设备的任何组合之间。在一些实施例中,网络104可以是局域网(LAN)、城域网(MAN)、广域网(WAN)、由位于客户机器102和服务器106之间的多个子网104构成的专用网104、具有专用子网104的主公网104、具有公共子网104的主专用网104或者具有专用子网104的主专用网104。另外的实施例包括可以为任何下列网络类型的网络104:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM (异步传输模式)网络、SONET (同步光纤网络)网络、SDH (同步数字体系)网络、无线网络、有线网络或者包括无线链路的网络104 (其中无线链路可以是红外信道或者卫星频带)。网络104的网络拓扑在不同的实施例中存在差异,可能的网络拓扑包括总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑或者分层-星型网络拓扑。其他实施例可包括由移动电话网络组成的网络104,所述移动电话网络使用协议在移动装置间通信,这些协议可以是下列的任何一个AMPS、TDMA, CDMA、GSM、GPRS UMTS或能够在移动装置之间传输数据的任何其他协议。
现参考图1B,描述了网络环境的另一个实施例。概括来说,网络环境包括经由一个或多个网络104、104’、104”与一个或多个服务器106a — 106η (同样总的称为服务器106, 或远程机器106)通信的一个或多个客户机102a - 102η (同样总的称为本地机器102,或客户机102)。在一些实施例中,客户机102经由一个或多个网络优化设备200、200’(总的称为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计为、配置为或适于优化广域网(WAN)网络流量。在一些实施例中,第一设备200与第二设备200’结合或协同工作来优化网络流量。例如,第一设备200可位于分支机构和WAN连接之间而第二设备200’位于WAN和公司局域网(LAN)之间。设备200和200’可一起工作以优化在分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络流量。
尽管图IB示出了在客户机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以及网络拓扑可以是本领域普通技术人员所知的能够支持本文描述的操作的任何这样的网络或网络拓扑。
在一些实施例中,网络上的一个或多个计算装置可执行网络流量工程或服务质量 (QoS)机制。计算装置可包括作为中间装置或其他中间计算装置部署的路由器。在一些实施例中,可以由安装在客户机102或服务器104上的客户机代理或服务器代理来执行QoS。 QoS机制可用于为不同的应用、用户、数据流量或数据流提供不同的服务优先级,或者用于保证所需的比特率、最小延迟、抖动、丢包率、误码率或其他执行标准。例如,视频数据可能需要高带宽的连接,语音通信可能需要低延迟或低抖动的连接,或者图形用户界面交互可能需要低延迟的连接,而电子邮件数据、打印机假脱机信息或软件更新可能没有如此严格的执行需求。
在一些实施例中,QoS机制可包括流量调整或者分组调整、调度或缓冲,拥塞避免技术,或者用于改善任何一个或多个网络连接的性能、运行或服务质量的其他逻辑、业务规则、功能或操作。在一些实施例中,执行QoS的装置可以为通信、连接、数据流量、分组或数据流分配优先级。该优先级可基于连接(例如经由源或目的IP或端口)或基于对应于连接的分组头中的信息、基于生成通信或导致通信生成的用户(如访客用户、根用户或管理员)、 基于生成数据的应用(如视频服务器或打印机服务器)、基于请求数据的应用(如web浏览器或软件更新服务)、基于数据的一个或多个度量(如有效载荷大小、优先级头、在OSI模型的一层或多层的协议类型、分组间的延迟、MTU大小),或者任何其他类型的信息。在一些实施例中,可由服务类型(ToS)字段或者区分服务代码点(DSCP或DiffServ)字段包含的信息为分组分配优先级或将该分组标识为具有特定优先级。在其他实施例中,数据流量可具有通过资源预留协议(RSVP)消息或其他预定系统所预留的优先级资源。
在一些实施例中,无论到达装置的时间如何,或者通过一个或多个调度算法,分配了高优先级的数据可以在分配了低优先级的数据之前被传输,所述调度算法例如是加权公平排队、基于类的加权公平排队、加权轮询或者对较高优先级数据授予系统资源的更大访问权限的任何其他类型的调度机制。在其他实施例中,分配了低优先级的数据其速率可能受到限制,或者具有被调整以降低传输速率的窗口大小,从而为较高优先级的数据空出网络带宽。在其他实施例中,装置可执行拥塞避免技术,包括显示拥塞指示或TCP缓冲。
如图IB所示,第一网络优化设备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公司出品的被称为Branch Repeater的产品实施例中的任何一种。在其它实施例中,设备200包括由位于华盛顿州Seattle的F5Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任何一种。在又一个实施例中,设备200包括由位于加利福尼亚州Sunnyvale的Juniper Netfforks公司出品的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广域网应用服务软件和网络模块以及广域网弓I擎设备。
在一些实施例中,设备200为分支机构或远程办公室提供应用和数据加速服务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在又一个实施例中,设备200 加速文件的传送,例如经由通用互联网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储装置中提供高速缓存来加速应用和数据的传送。在一个实施例中,设备 205在任何级别的网络堆栈或在任何的协议或网络层中提供网络流量的压缩。在又一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN 连接上的应用和数据的传送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任何会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下文的B部分中讨论设备200的优化技术、操作和架构的进一步的细节。
仍参考图1B,网络环境可包括多个逻辑分组的服务器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上所识别的应用而产生的诸如显示数据的应用输出数据。
与其他设备一起部署
现参考图1C,描述了网络环境的又一个实施例,在其中,网络优化设备200和诸如网关、防火墙或加速设备的一个或多个其他设备205、205’(总的称为设备205或第二设备 205)部署在一起。例如,在一个实施例中,设备205是防火墙或安全设备,而设备205’是 LAN加速设备。在一些实施例中,客户机102可通过一个或多个第一设备200和一个或多个第二设备205与服务器106通信。
一个或多个设备200和205可以位于在客户机102和服务器106之间的网络或网络通信路径中的任一点处。在一些实施例中,第二设备205可与第一设备200位于同一网络104上。在其他实施例中,第二设备205可位于与第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在同一网络上,例如网络104,而第一设备 200’和第二设备205’在同一网络上,例如网络104”。
在一个实施例中,第二设备205包括任何类型和形式的传输控制协议或传输后终止装置,例如网关或防火墙装置。在一个实施例中,设备205通过与客户机建立第一传输控制协议连接并且与第二设备或服务器建立第二传输控制协议连接来终止传输控制协议。在又一个实施例中,设备205通过改变、管理或控制在客户机和服务器或第二设备之间的传输控制协议连接的行为来终止传输控制协议。例如,设备205可以改变、排队、转发或传输网络分组以有效地终止传输控制协议连接或者起到终止该连接的作用或模拟为终止该连接。
在一些实施例中,第二设备205是性能增强代理。在一个实施例中,设备205提供虚拟专用网(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN (SSL VPN)连接。在其他实施例中,设备205提供基于Ipsec (互联网协议安全)的VPN连接。在一些实施例中,设备205提供任何一个或多个下列功能网络QoS、压缩、加速、负载平衡、交换/路由、缓存和传输控制协议(TCP)加速。
在一个实施例中,设备205是由位于佛罗里达州Ft. Lauderdale的Citrix Systems公司出品的被称为访问网关、应用防火墙、应用网关或NetScaler的产品实施例中的任何一种。这样,在一些实施例中,设备205包括执行诸如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的内部网互联网协议或者Intranet IP地址。客户机102具有本地网络标识符,诸如第一网络104上的互联网协议(IP)地址和/或主机名称。当经由设备205连接到第二网络104’时,设备205在第二网络104’上为客户机102建立、分配或者以其它方式提供Intranet IP (内部网IP), 其是诸如IP地址和/或主机名称的网络标识符。使用客户机的所建立的Intranet IP,设备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)高速缓存,和7)网络QoS。在一个实施例中,设备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)只读和隐藏字段强制(enf0rcement),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的一部分。
现在参考图1D,描述了用于部署设备、路由器或其他中间计算装置的网络环境的其他实施例。在如图ID的上部所描述的一个实施例中,可在客户机102和服务器106之间部署一个或多个路由器201和201’。尽管示出了经由单个网络104连接,在很多实施例中,可以在客户机102和服务器106之间使用多个网络104和104’以及额外的设备或中间计算装置。在如图ID的中部所描述的另一个实施例中,设备200可以部署为网络104上单个设备或单个代理。例如,设备200可以被设计、构建或调整来执行此处所讨论的WAN优化技术,而不需要第二协同设备200’。在如图ID的下部所描述的其他实施例中,可以将单个设备200与一个或多个第二设备205部署在一起。例如,诸如Citrix WANScaler设备的WAN 加速第一设备200可以与LAN加速或应用防火墙第二设备205 (例如Citrix NetScaler) 部署在一起。
计算装置
客户机102、服务器106和设备200和205可以被部署为和/或执行在任何类型和形式的计算装置上,诸如能够在任何类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或者设备。图IE和IF描述了可用于实施客户机102、服务器106或设备 200的实施例的计算装置100的框图。如图IE和IF所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图IE所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的指示装置127。每个计算装置100也可包括其它可选元件,例如一个或多个输入/输出装置130a — 130b (总的使用附图标记130表不),以及与中央处理单元101通信的高速缓存存储器140。
中央处理单元101是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如由加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元; 由纽约州 White Plains 的 International Business Machines 公司制造的 RS/6000 处理器;或者由加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任何一种,或者能够按照这里所说明的那样运行的任何其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器101直接访问任何存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM (BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、 扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、突发式扩展数据输出DRAM (BED0 DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率 SDRAM (DDR SDRAM)、增强型 SRAM (ESDRAM)、同步链路 DRAM (SLDRAM)、直接 Rambus DRAM (DRDRAM)或铁电RAM (FRAM)0主存储器122可以基于上述存储芯片的任何一种,或者能够像这里所说明的那样运行的任何其它可用存储芯片。在图IE中所示的实施例中,处理器101通过系统总线150 (在下面进行更详细的描述)与主存储器122进行通信。图IE 描述了在其中处理器通过存储器端口 103直接与主存储器122通信的计算装置100的实施例。例如,在图IF中,主存储器122可以是DRDRAM。
图IF描述了在其中主处理器101通过第二总线与高速缓存存储器140直接通信的实施例,第二总线有时也称为背侧总线。其他实施例中,主处理器101使用系统总线150 和高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IC中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。可以使用各种不同的总线将中央处理单元101连接到任何I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)与显示器124通信。图ID 说明了主处理器101通过超传输(HyperTransport)、快速I/O或者Inf iniBand直接与I/O 装置130通信的计算机100的一个实施例。图ID还描述了在其中混合本地总线和直接通信的实施例处理器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。此外,操作系统和软件可从例如可引导⑶的可引导介质运行,诸如KNOPPiXR ■—种用于GNU/Linux的可引导CD,该可引导CD可自knoppix. net作为GNU/Linux分发获得。
此外,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或互联网的网络接口 118,所述多种连接包括但不限于标准电话线路、LAN或WAN链路(例如 802. ll,Tl,T3、56kb、X. 25)、宽带连接(如ISDN、帧中继、ATM)、无线连接、或上述任何或所有连接的一些组合。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100 接口到能够通信并执行这里所说明的操作的任何类型的网络的任何其它设备。计算装置 100中可以包括各种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、麦克风和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。 如图IC所示,I/O装置130可以由I/O控制器123控制。I/O控制器可以控制一个或多个 I/O装置,例如键盘126和指示装置127 (如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。在其它实施例中,计算装置100可以提供 USB连接以接收手持USB存储装置,例如由位于加利福尼亚州Los Alamitos,的Twintech Industry公司生产的设备的USB闪存驱动器线。
在一些实施例中,计算装置100可以包括多个显示装置124a_124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任何一种I/O装置130a-130n 和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如, 计算装置100可以包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n接口、通信、连接或以其他方式使用显示装置。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n接口。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a_124n中的一个或多个可以由一个或多个其它计算装置提供,诸如例如通过网络与计算装置100连接的计算装置IOOa和100b。 这些实施例可以包括被设计和构造为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任一类型的软件。本领域的普通技术人员会认识和理解可以将计算装置100配置成具有多个显示装置124a-124n的各种方法和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、 FireWire总线、Fireffire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线。
图IE和IF中描述的那类计算装置100通常在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任何操作系统,如IV_nciOsot'r:fe Windows操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任何版本的MAC 0S(l任何嵌入式操作系统,任何实时操作系统,任何开源操作系统,任何专有操作系统,任何用于移动计算装置的操作系统,或者任何其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括WIND0WS3. x、WIND0WS95、WIND0WS98、 WIND0WS2000, WINDOWS NT3. 51, WINDOWS NT4. 0、WINDOWS CE, WINDOWS XP, WINDOWS VISTA 和WIND0WS7,所有这些均由位于华盛顿州Redmond的微软公司出品;由位于加利福尼亚州 Cupertino的苹果计算机出品的MacOS ;由位于纽约州Armonk的国际商业机器公司出品的 OS/2 ;各种平板电脑或智能手机操作系统,例如由苹果计算机出品的iOS,由微软公司出品的 Windows Mobile 和 Windows Phone,由位于加利福尼亚州 Mountain View 的 Google 有限公司出品的Android,由位于加拿大Ontario的RIM有限公司出品的黑莓操作系统,或由位于加利福尼亚州Palo Alto的惠普公司出品的webOS ;以及由位于犹他州Salt Lake City 的Caldera公司发布的可免费使用的Linux操作系统或者任何类型和/或形式的Unix操作系统,以及其它。
在其它实施例中,计算装置100可以有符合该装置的不同的处理器、操作系统和输入设备。例如,在一个实施例中,计算机100是由苹果计算机出品的iPad或iPad2平板电脑。在该实施例中,iPad平板电脑在iOS操作系统的控制下操作,包括由苹果计算机出品的A4或A5处理器,并且包括多点触控电容式触摸屏。此外,计算装置100可以是任何工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任何其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信装置。
B.系统和设备架构
现在参考图2,描述了用于传送和/或操作客户机上的计算环境的设备、路由器或其他中间计算装置的系统环境和架构的实施例。在一些实施例中,服务器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,且不同的服务器106η可存储或提供应用和数据文件。在一些实施例中,应用传送系统290、应用和数据文件中的每一个可驻留或位于不同的服务器。在又一个实施例中,应用传送系统290的任何部分可驻留、执行、或被存储于或分发到设备200或多个设备。
客户机102可包括用于执行使用或处理数据文件的应用的计算环境215。客户机 102可通过网络104、104’和设备200请求来自服务器106的应用和数据文件。在一个实施例中,设备200可以将来自客户机102的请求转发到服务器106。例如,客户机102可能不具有本地存储或者本地可访问的应用和数据文件。响应于请求,应用传送系统290和/或服务器106可以传送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以把应用作为应用流来传输,以在客户机102上的计算环境215中操作。
在一些实施例中,应用传送系统290包括Citrix Systems公司的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微软公司开发的Microsoft 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 Delivery Center程序组的任一部分(例如XenApp或XenServer),和/或微软公司开发的Microsoft 远程桌面服务中的任何一个。在一个实施例中,该应用是位于佛罗里达州Fort Lauderdale的Citrix Systems Inc. 开发的ICA客户端。在其它实施例中,该应用包括由位于华盛顿州Redmond的Microsoft 公司开发的远程桌面(RDP)客户机。另外,服务器106可以运行一个应用,例如,其可以是提供电子邮件服务的应用服务器,例如由位于华盛顿州Redmond的Microsoft公司制造的 Microsoft Exchange, web或Internet服务器,或者桌面共享服务器,或者协作服务器。在一些实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于加利福尼亚州 Santa Barbara 的 Citrix Online Division 提供的 GoToMeeting ,位于加利福尼亚州 Santa Clara的WebEx Inc.提供的WebEx ,或者位于华盛顿州Redmond的Microsoft公司提供的 Microsoft Office Live Meeting。
示例设备架构
图2还示出设备200的示例实施例。仅通过示例来提供图2的设备200的架构并且不意于以任一方式受限。设备200可包括任何类型和形式的计算装置100,例如上文结合图IE和IF所讨论的任何元件或部分。概括来讲,设备200具有用于经由网络104接收和 /或传输通信的一个或多个网络端口 266A-266N和一个或多个网络堆栈267A-267N。设备 200还具有用于优化、加速或以其他方式改善经过设备200的任何网络流量或通信的性能、操作或质量的网络优化引擎250。
设备200包括操作系统或在操作系统的控制之下。设备200的操作系统可以是任何类型和/或形式的Unix操作系统,尽管本发明并未这样限制。这样,设备200可以运行任何操作系统,如任何版本的Microsoft Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任何版本的MaC OS 、任何的嵌入式操作系统、任何的网络操作系统、任何的实时操作系统、任何的开放源操作系统、任何的专用操作系统、用于移动计算装置或网络装置的任何操作系统、或者能够运行在设备200上并执行此处所描述的操作的任何其它操作系统。
设备200的操作系统分配、管理或以其他方式将可用的系统存储器分离到被称为内核或系统空间和用户或应用空间中。通常保留内核空间用于运行内核,所述内核包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200 的实施例,内核空间也包括与网络优化引擎250或其任何部分协同工作的多个网络服务或进程。另外,内核的实施例将依赖于通过设备200安装、配置或以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或以其他方式运行于用户模式的程序所使用的操作系统的存储区域或部分。用户模式应用不能直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或应用空间来执行或运行应用以及供应用户级程序、服务、进程和/或任务。
设备200具有一个或多个网络端口 266,用于通过网络104传输和接收数据。网络端口 266提供在计算装置和网络104或另一个装置100之间的物理和/或逻辑接口,用于传输和接收网络通信。网络端口 266的类型和形式取决于网络的类型和形式以及用于连接到网络的介质的类型。而且,网络端口 266和网络堆栈267的、为其供应的或者其使用的任何软件可运行在内核空间或用户空间。
在一个实施例中,设备200具有一个网络堆栈267,例如基于TCP/IP的堆栈,用于在网络105上与客户机102和/或服务器106通信。在一个实施例中,网络堆栈267用于与诸如网络104第一网络以及还与第二网络104’通信。在又一个实施例中,设备200可具有两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A 可与第一网络端口 266A联合使用以在第一网络104上通信。第二网络堆栈可与第二网络端口 266N联合使用以在第二网络104’上通信。在一个实施例中,网络堆栈267包括用于为由设备200产生的一个或多个网络分组进行排队的一个或多个缓冲器。
网络堆栈267可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈267包括用于网络协议组的软件实现。网络堆栈267可具有一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任何网络层。这样,网络堆栈267可包括用于下列OSI模型的任何一层的任何类型和形式的协议1)物理链路层;2)数据链路层;3)网络层;4)传输层;5)会话层);6)表示层,以及7)应用层。在一个实施例中,网络堆栈267可包括在互联网协议(IP) 的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在以太网协议上承载TCP/IP协议,所述以太网协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802. 3覆盖的这些协议。在一些实施例中,网络堆栈267包括任何类型和形式的无线协议,例如IEEE802. 11和/或移动互联网协议。
考虑到基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI) (email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用互联网文件系统(CIFS)协议(文件传输)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议 (WAP)、移动IP协议,以及IP语音(VoIP)协议。在又一个实施例中,网络堆栈267包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP (TCP-SACK),带有大窗口的TCP (TCP-LW),例如TCP-Vegas协议的拥塞预测协议,以及TCP欺骗协议。在其他实施例中,网络堆栈267可使用诸如IP上UDP的任何类型和形式的用户数据报协议(UDP),例如用于语音通信或实时数据通信。
另外,网络堆栈267可包括支持一个或多个层的一个或多个网络驱动器,例如TCP 驱动器或网络层驱动器。网络层驱动器可作为计算装置100的操作系统的一部分或者作为计算装置100的任何网络接口卡或其它网络访问组件的一部分被包括。在一些实施例中, 网络堆栈267的任何网络驱动器可被定制、修改或调整以提供支持此处描述的任何技术网络堆栈267的定制或修改部分。
在一个实施例中,设备200使用单个网络堆栈267来提供或维持在客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或控制在客户机和服务器之间的传输控制协议连接的行为来有效地终止传输层连接。在这些实施例中, 设备200可使用单个网络堆栈267。在其他实施例中,设备200终止第一传输层连接,例如客户机102的TCP连接,并建立客户机102使用的或代表客户机102的到服务器106的第二传输层连接,例如,终止在设备200和服务器106的第二传输层连接。可通过单个网络堆栈267建立第一和第二传输层连接。在其他实施例中,设备200可使用多个网络堆栈,例如 267A和267N。在这些实施例中,在第一网络堆栈267A可建立或终止第一传输层连接,且在第二网络堆栈267N可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络分组,并且另一个网络堆栈可用于在第二网络上接收和传输网络分组。
如图2所示,网络优化引擎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 或 Ims0
在操作期间,分组引擎240可与诸如LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295’的网络优化引擎250的任一部分接口、集成或通信。因此,可响应于分组处理定时器和/或分组引擎240来执行LAN/WAN检测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎 238、高速缓存管理器232和策略引擎295’的任何逻辑、功能或操作。在一些实施例中,在由分组处理定时器提供的时间间隔粒度(例如,少于或等于IOms的时间间隔),可执行加密引擎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’可提供用于缓存哪些数据、何时缓存该数据、为谁缓存该数据、何时终止高速缓存中的对象或刷新高速缓存的策略。在其他实施例中,除了对安全、网络流量、网络访问、网络QoS、压缩或由设备 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、MSP、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/ffAN 检测器
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 ’ 的存在或在场。例如,根据图IA的操作中的自动发现机制起到以下作用将设备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分组加 T 己 O
设备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可在传输层实现多个数据流控制技术,包括但不限于I)预确认,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会话中。参考图IA和 IB的任何一个环境,建立例如客户机102 (为讨论方便,现称为源节点102)的源节点与例如服务器106 (为讨论方便,现称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP头选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
尽管具有例如16k字节的小缓冲区大小的端节点,但设备200经由流控制模块220 提供窗口(或缓冲区)来允许提高会话内的数据缓冲能力。然而,RFC1323要求对大于64k字节的任何缓冲区大小进行窗口缩放(window scaling),其必须在会话初始化(SYN、SYN-ACK 信号)时设置。此外,窗口缩放对应于数据路径中的最小公分母,经常是具有小的缓冲区大小的端节点。该窗口比例通常是O或I的比例,其对应于高达64k或者128k字节的缓冲区大小。注意到,由于窗口大小被限定为每一分组中的、随窗口比例改变的窗口字段,窗口比例建立缓冲区的上限,但并不保证该缓冲区实际上就那么大。每个分组在窗口字段中指示接收器处当前可用的缓冲区空间。
在使用窗口虚拟化技术进行缩放的一个实施例中,在连接建立(即,会话初始化) 期间,当第一流控制模块220从源节点102接收SYN信号(或者分组)时,流控制模块220源节点102 (其是之前的节点)的窗口比例或者如果之前的节点的比例丢失则为窗口比例存储 O。第一流控制模块220还在SYN-FCM信号中修改该比例,例如将该比例从O或者I增加到4。当第二流控制模块220接收SYN信号时,其存储来自第一流控制信号的增加的比例并且将该SYN信号中的比例重置为源节点103的比例值以用于到目标节点106的传输。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其存储来自目标节点106的比例(例如,O或I)的比例并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗口比例并且将被发回源节点102的窗口比例修订为降回到初始比例(例如O或者I)。基于上面在连接建立期间的窗口变换对话,会话的每个后续分组(例如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个并行连接一样。该方法的优点在于对于经过多个网络节点而言就如同单个连接一样。因此重新拥塞算法不影响这些节点的Q0S、安全性和其他监控方法。在又一个实施例中,并行束中的单独的连接是真实存在的, 即独立的。为束中的并行连接的每一个建立TCP连接。不必修改用于每个TCP连接的拥塞避免算法。
重传
在一些实施例中,流控制器220可以使用本地重传技术。实施预确认的一个原因是为经过高损的链路(例如无线)作准备。在这些实施例中,预确认设备200或者流控制模块220最好位于无线链路“之前”。这使得要进行的重传更接近于高损链路,免去了网络的剩余部分的重传负担。设备200可提供本地重传,在这种情形中,由于链路错误而丢弃的分组由设备200直接重传。由于这消除了在端节点(诸如服务器106)和任一网络104的基础设施上的重传负担,所以这是有益的。利用设备200提供本地重传,丢弃的分组可以被重传通过高损链路而不必由端节点重传且不会引起端节点的数据传输率的对应下降。
实施预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,即使是成功接收传输中的较大百分比的分组,但仍存在多种情况导致RT0。使用标准TCP算法,在一个 RTT窗口中丢弃不只一个分组有可能会导致超时。此外,如果重传的分组被丢弃,则大部分 TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组丢失率也会导致频繁的重传超时(RT0)。在一个实施例中,设备200使用重传和超时算法来避免过早的RT0。 设备200或者流控制器220基于每一分组来维持重传的计数。每传输一个分组,将计数加一,然后设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传预定的次数后才宣告RT0。
波前检测和消除二义件
在一些实施例中,设备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值且将最高有效位设置为O。当接收器响应时,IP ID值被设置为相同的IP ID值,且最高有效位被设为I。
在另一个实施例中,与非模糊性确认相关联的传输号码被用来消除模糊确认的二义性。该技术基于这样的原理由于两个分组在时间上更接近地传输,则对于这两个分组的确认将倾向于时间上更接近地接收。由于对于未被重传的分组所接收的确认可容易地与传输号码相关联,所以这样的分组不会导致模糊性。因此,可以将这些已知的传输号码与所接收的在时间上接近于已知确认的模糊确认的可能的传输号码相比较。发送器将模糊确认的传输号码与最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到对数据分组I的确认并且最后所接收的确认是针对数据分组 5,那么发送器通过假设数据分组I的第三个实例导致了该确认来解决该模糊性。
诜择件确认
设备200或者流控制器220的另一项技术是实现传输控制协议选择性确认或TCP SACK的实施例以确定已经收到哪些分组或没有收到哪些分组。该技术允许发送器明确地确定已经由接收器收到的分组的列表以及没有收到的分组的精确的列表。可以通过修改发送器和/或接收器或者通过将发送器侧和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图IA或者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机制极端粗略,例如在所有情况中要求最小I秒的值,在这些情况下可以看到差的应用行为。
在一个实施例中,数据的发送器或耦合到发送器的流控制模块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
仍参考图2,在一些实施例中,流控制器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的任何系统和方法。
现参考图3,描述部署在一个或多个端节点的网络优化引擎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.用于为多个网络连接中的每个网络连接分配不同服务等级的系统和方法
在使用远程显示协议(例如ICA或远程桌面)的多个实施例中,来自应用的、包括图形数据的数据,在通过传输层协议进行封装前,可以通过远程显示协议进行封装。尽管远程显示协议可以将该应用数据划分为一个或多个虚通道,但仅能够解释传输层协议头的中间装置可能无法检测到这些虚通道。而且,如果远程显示协议包括加密,则甚至连能够解释未加密的较高层信息的中间装置可能也无法检测到该虚通道或者应用层有效载荷数据。因此,远程显示协议可以隐藏应用网络流量。
由于隐藏了应用网络流量,传统的网络调整机制则可能不起作用。例如,对于检测 IP语音通信或视频有效载荷并且以高优先级加速这些通信,而同时以低优先级将电子邮件流量进行排队的调整机制来说,如果它们不能确定在封装的和/或加密的远程显示会话中的数据哪个是哪个,这些机制可能不起作用。
本文所详述的一种解决方案是将远程显示会话的多个虚通道划分到多个传输层连接,可为所述多个传输层连接中的每一个分别划分优先级。例如,视频数据可被发送到高优先级虚通道并且经由第一传输层连接以高优先级进行传输,而电子邮件数据可被发送到低优先级或基本(background)优先级虚通道,并且经由第二传输层连接以低优先级进行传输。在一些实施例中,可使用差异化服务、ToS或其他机制来划分传输层会话的优先级。 在另一个实施例中,可经由低延迟UDP传输层连接来发送视频或音频通信而可经由可靠的 TCP传输层连接来发送诸如鼠标和键盘数据之类的GUI交互。这允许利用由中间装置应用的所有各种延迟和带宽管理方案,而同时仍然隐藏在远程显示会话内的应用层数据。
因此,本文所描述的系统和方法可用于提供内容式的优先级划分和流量调整(例如打印、语音、视频、音频、文件传输等)、应用式的优先级划分和流量调整(例如浏览、生产效率(productivity)、关键任务),和/或基于用户的优先级划分和流量调整(例如,为根用户或管理员提供较高优先级)。
图4A示出用于为虚通道分配服务等级的系统的一个实施例。在一些实施例中,该系统可包括通过网络104通信的客户计算机102和服务器106。在一些实施例中,网络104 上的中间计算装置450可促成服务器106和客户机102之间的通信。远程显示协议客户端 425可以在客户机上执行,该远程显示协议客户端425还执行多通道服务420。服务器可执行一个或多个应用440A-440N (总的称为应用440),并且还可以执行远程显示协议服务器 435,该远程显示协议服务器435还执行多通道服务415。
继续参考图4A,且具体而言,在一个实施例中,系统可包括客户计算机102和服务器106。所述客户计算机102可以是本文所描述的任何计算装置100并且可以是本文所描述的任何客户机102。类似地,所述服务器106可以是本文所描述的任何计算装置100并且可以是本文所描述的任何服务器106。在一些实施例中,服务器106可以是包括一个或多个服务器106的服务器群。客户机102和服务器106可通过网络104 (例如本文所描述的任何网络104)进行通信。
在一些实施例中,在客户机102上执行的远程显示协议客户端425可以是能够从在服务器106上执行的远程显示协议服务器435接收应用输出的应用、客户端或程序。客户机102的远程显示协议客户端425可接收应用输出并且将该应用输出在客户机102上的应用窗口中显示。在一些实施例中,远程显示协议客户端425可以促成客户机102和服务器106之间的虚通道的创建,并且可以促成客户机102的远程显示协议系统与服务器106 的远程显示协议系统之间的通信。客户计算机102的远程显示协议客户端425能够与服务器106的远程显示协议服务器435通信,并且可以发送和接收文件访问请求。在一些实施例中,远程显示协议客户端425可以是由CITRIX SYSTEMS出品的ICA客户端。
服务器106的远程显示协议服务器435可以在服务器106上执行并且可以与在服务器106上执行的应用440相接口。在一些实施例中,远程显示协议服务器435可拦截、检索或接收由应用440生成的图形应用输出,并且可以将该应用输出和任何相关的图像数据一起转发到客户机102的远程显示协议客户端425,所述图形应用输出例如是由应用440发出的绘制命令。客户计算机102的远程显示协议客户端425可使用该应用输出和图像数据以重新绘制该应用,如同其将被显示在服务器106的显示屏幕上。在一些实施例中,远程显示协议服务器435可以是由CITRIX SYSTEMS出品的ICA服务器机。客户机102的远程显示协议客户端425能够通过虚通道与远程显示协议服务器435进行通信。
在一些实施例中,客户机102的远程显示协议客户端425以及服务器106的远程显示协议服务器435执行多通道服务420、415。该服务420可在任一机器上执行并且可以为诸如TCP连接之类的传输层连接分配一个或多个虚通道。在一些实施例中,多通道服务420 还可以为可用的传输层连接分配优先级和/或分配与每个传输层连接关联的服务等级。例如,在服务器106上执行的多通道服务415可以为具有最高服务等级的传输层连接分配用于承载实时视频和音频的虚通道。在一些实施例中,传输层连接可以具有与该连接关联的服务等级、服务质量或者优先等级(总的称为服务等级)。该关联的服务等级可表明比起通过具有较低服务等级的不同的传输层连接传输的网络流量,通过该特定传输层连接传输的网络流量应被给予更高的优先级。正如服务器106的多通道服务415可以为具有特定服务等级的特定传输层连接分配虚通道一样,客户机102的多通道服务420也可以为具有特定服务等级的特定传输层连接分配虚通道。
应用440可以是任何应用。在一些实施例中,应用440可包括本文所描述的任何应用或者任何其他应用。应用440可通过向远程显示协议服务器435传输应用输出来与该远程显示协议服务器435相接口。
可由网络104上的中间计算装置450来促成客户机102和服务器106之间的通信。在一些实施例中,中间计算装置450可以是能够根据与每个网络分组关联的服务质量以及根据与目的端口或源端口、或者目的地址或源地址,或者地址或端口的任何组合关联的服务质量来接收和发送网络流量的网路路由器。中间计算装置450可经由WAN、LAN、MAN 或者一种或多种网络的任何组合与客户机102和服务器106通信。在其他实施例中,中间计算装置450可以是由CITRIX SYSTEMS出品的分支中继器(branch r印eater)。在一些实施例中,该分支中继器可根据与每个网络分组关联的服务质量来接收和发送网络流量。在一些实施例中,中间计算装置450可促成通过一个或多个虚通道传输数据,其中每个虚通道可具有不同的关联服务等级。在一些实施例中,可由在服务器106上执行的服务、在客户机106上执行的服务或网络上的中间计算装置450来分配服务等级。例如,在一些实施例中,该服务可以是多通道服务420或415。在其他实施例中,诸如路由器或分支中继器之类的中间计算装置450可以分配服务等级。在其他实施例中,在服务器106上执行的应用可以为传输层会话分配一个或多个虚通道,并且设备450可基于传输层会话的端口号和/或地址来为传输层会话分配服务等级。
在一些实施例中,客户机和服务器可经由远程显示协议进行通信,该远程显示协议包含一个或多个虚通道并且由传输层通信的有效载荷承载或被封装成传输层通信的有效载荷。在一些实施例中,该远程显示协议可以是用于建立如下连接的协议多流ICA (MSI)连接;或者连接,其中单个ICA会话的多个虚通道被分配给多个传输层连接,而不是由单个传输层数据流承载。ICA或独立计算架构连接可包括在客户机和服务器之间建立的用于从服务器向客户机传输应用输出的一个或多个虚通道。可以使用由CITRIX SYSTEMS 开发的ICA协议在ICA会话期间建立ICA连接。在一些实施例中,当ICA客户端应用支持 MSI时,或者当存在支持MSI的Citrix分支中继器或支持TCP或UDP服务质量的第三方路由器或者支持MSI的任何其他相似类型和形式的产品时,可使用多流ICA (MSI)或类似的多流远程显示协议。因而在很多实施例中,客户机、服务器和/或中间装置可在会话建立期间确定一个或多个实体是否能够建立多流远程显示协议并且经由该协议进行通信。这可以通过在TCP握手期间交换选项标记、交换的配置参数或文件或者通过任何其他手段法来实现。
在一些实施例中,可使用单个传输层连接来建立ICA会话。这可以在第一预定端口上完成,如端口 1494。在ICA会话被连接和初始化之后,在一些实施例中,ICA堆栈、服务器代理或客户机代理可确定MSI是否被启用。如果MSI被启用,那么在一些实施例中,可将一个或多个传输层连接加入该ICA会话,例如三个额外的TCP连接。对于MSI ICA会话来说,最初的ICA TCP连接(如前述的在端口 1494上的连接)可被认为是首要连接且其他TCP 连接可被认为是次要连接。
现参考图4B,示出了为多流远程显示协议建立多个传输层连接的实施例的消息序列图。在一些实施例中,所不消息可包括一个和或多个额外事务。例如,消息2描述建立 TCP连接。在很多实施例中,这可以包含作为三次握手的部分的三个单独的事务。因此,图 4B中示出的序列图应该被认为是多个消息的序列抽象而不是表示在计算装置之间传输的仅有的消息。
在图4B所示的序列之前,主机和客户机可建立第一或首要连接,并且可经由该首要连接建立诸如ICA会话之类的远程显示协议会话。这可以包括创建用于首要连接的ICA 堆栈。在一些实施例中,主机可为一个或多个次要连接创建ICA堆栈。用于次要连接的一个或多个ICA堆栈可以与首要连接的ICA堆栈相同,并且可以仅初始化需要被初始化的协议驱动程序。在一些实施例中,消息I可包含多流协议初始化消息,如多流ICA (MSI)消息。 在一个实施例中,可响应于多流协议被启用而发送消息I。一旦已在首要连接上初始化了 ICA会话或其他协议会话,如果多流被启用,则开始多流建立。在建立多流会话的同时,远程显示协议会话可继续工作仿佛多流不被支持一样。初始化消息可包括服务器会话Cookie、 TCP端口号和QoS等级(例如,实时、交互、批量和基本,以优先级的降序排列),以及将用到该QoS连接的虚通道列表。
响应于消息1,在消息2客户机和主机可建立次要TCP连接。可使用首要连接的IP 地址和在初始化消息中发送的TCP端口来建立次要TCP连接。如上所述,建立该连接可包括多个握手消息的序列。在一些实施例中,在发送消息I之后服务器可设置超时定时器(其被设定到预定值)。如果超时定时器在消息9 (下文中会详细描述)到来之前到时,那么在一些实施例中,主机可假定建立次要流失败并回退到单流模式。在其中对于多个次要流(也称为第二、第三等)重复序列4B的进一步的实施例中,在建立任何次要连接期间,超时定时器的到时可导致主机关闭任何先前建立的与客户机的次要连接并且回退到单流模式。例如, 如果在建立第三次要流时主机定时器到时,则主机可关闭第一和第二次要流并且回退到仅有首要流。
由于可能无法区分次要TCP连接与来自第二客户机的首要连接,在这个阶段,主机可将次要TCP连接当做新的远程显示协议连接。因此,在消息3,主机可检测在消息2建立的客户机连接并且经由该次要连接向客户机发送ICA检测字符串或请求消息。主机可等待客户机发送ICA检测字符串作为响应。在消息4,一旦客户机接收到ICA检测字符串,客户机可将ICA检测字符串发送给主机。
在消息5,主机可创建packet_init_request (分组初始化请求)消息并将其发送给客户机。该初始化请求可包括一个或多个字段或块(下面将详细讨论)以标识表明服务器能够使用多流协议的能力块、服务器协议版本、用于标识主机是否能够支持单端口和/ 或多端口多流连接的一个或多个服务器标志。
该初始化请求可包括表明主机能够使用多流远程显示协议的能力块或数据字段或标记。在一个实施例中,可将能力块初始化为预定值来指示这个能力,如O。在一些实施例中,该请求可进一步识别主机的多流协议能力的协议版本,以及用于指示主机是否支持单端口或多端口多流会话的一个或多个标记。
在其中消息穿过在主机和客户机之间的一个或多个中间装置(未示出)的一些实施例中,初始化请求可进一步包括一个或多个数据块或字符串以标识该中间装置是否支持多流远程显示协议,以及单端口或多端口能力。在一个实施例中,如果中间装置不支持多流协议,那么该中间装置可能不识别先前由服务器初始化的能力块,因为它可能无法解释该能力块。如果中间装置支持多流协议,那么该中间装置可以通过向能力块分配该中间装置最近支持的协议版本来修改该块,并且可以修改一个或多个服务器标志来反映中间装置的能力。
消息6可包括对初始化请求消息的响应。客户机可将从服务器接收的能力块和/ 或由中间装置之一修改的能力块包括为初始化响应的能力块。客户机还可以包括用于指示其协议版本的标志或标识符,并且在一些实施例中可设置多流启用标志。
消息7可包括连接初始化消息。主机可将从客户机接收的初始化响应的能力块复制到初始化消息的能力块中。在其中所有装置(主机、客户机,以及一个或多个中间装置)支持多流远程显示协议的一些实施例中,主机可设置用于启用多流通信的第一标志,和用于响应于从服务器侧中间装置接收的相应的标志(如果有)来选择单端口或多端口通信的第二标记。如果在客户机和主机之间没有中间装置或没有能够支持多流的中间装置(例如不能解释远程显示协议或标签的交换机或路由器),那么主机可启用多流通信并且设置选择多端口通信的标志。
消息8可包括连接响应。该连接响应可包括对连接初始化消息的确认。
在消息9,客户机可发送对消息I的响应,或经由次要流发送客户连接请求多流 ICA消息。客户机连接请求可包括作为消息I的部分发送的服务器会话cookie和/或QoS 等级,并且还可以包括客户机cookie或由客户机生成以标识和认证次要流的全球唯一标识符(⑶ID),这将结合图4C在下文中进行讨论。一旦收到这个消息,在一些实施例中,主机可使用服务器会话cookie来查找次要连接将要关联的ICA会话或其他远程显示协议会话。 如果没找到会话,那么可由主机关闭该次要连接。如果找到会话,在进一步的实施例中,主机可经由首要连接发送同步消息。
尽管仅示出了一个次要连接,但在很多实施例中,可建立多个次要连接,其可对应于远程显示协议传输和/或虚通道的不同优先级。在一些实施例中,可独立于其他次要连接来建立每个次要连接。在一些实施例中,次要连接可以被并行建立。在一些实施例中,可在第一次要连接被完全建立前建立另外的次要连接(或第三连接)。因此,对于每个QoS等级可在另外的传输层连接上重复消息1-9。在一个实施例中,首要连接可对应于最高优先级的QoS等级。这样做使得任何次要连接上的连接故障不会结束远程显示协议会话,而仅是使其不能使用特定的QoS连接。在很多实施例中,主机可尝试重建超时的任何次要连接。 在其他实施例中,如上所述,任何次要连接上的超时可导致主机丢弃或关闭会话的所有已建立的次要连接并且回退到单流操作。
在进一步的实施例中,经由每个传输层连接的通信可用粒度QoS优先级标记来进行标记。在一些实施例中,该优先级标记可置于远程显示协议消息的头中。能够读取该头的中间装置可接着应用更高级别的QoS优先级粒度,而无需进一步检验封装的和/或加密的会话数据。
现参考图4C,示出了对于多流远程显示协议从第一传输层连接向第二传输层连接转移虚通道的方法的实施例的消息序列图。如上文结合图4B所讨论的,所示消息应被认为是抽象,且因而可表示一个或多个实际通信。
在消息1,主机可经由首要连接发送虚通道转移命令(XferVCs)。在一些实施例中,主机可设置关于消息传输的超时,并且如果该超时到时,主机可断开会话的次要通道和 /或首要通道。XferVCs命令可包括目的连接值,如次要流或首要流的连接标识符。在一些实施例中,XferVCs命令还可以包括要转移的虚通道总数的标识符,以及要被转移的每个虚通道的标识号或通道ID的列表。
在一个实施例中,XferVCs命令可包括上文讨论的服务器会话cookie和客户机 cookie。一旦收到,客户机可比较XferVCs命令中的客户机cookie和连接建立期间发送的客户机cookie (图4B,消息9)。如果cookie不同,客户机可断开ICA会话。可以这样做是因为该次要流可能不是由该客户机发起的。
在消息2,客户机可以在首要流上使用确认(XferVCsAck)分组进行回复。该确认可包括来自转移命令消息的服务器会话cookie。在一些实施例中,一旦发送该回复,客户机可阻塞在正被转移的虚通道上的写操作。这样做可以清空(flush)通道。在进一步的实施例中,客户机可设置超时定时器。如果在客户机接收到EndData命令(消息3)前该定时器到时,客户机可断开ICA会话。
在消息3,主机可以在由要被转移的虚通道当前使用的连接上(例如,、最初的首要流,或者在虚通道已被转移之后的其他流)向客户机发送终止数据(end data)消息 (XferVCsEndData)。终止数据消息可包括服务器会话cookie、要被转移的虚通道总数的标识符,和要被转移的每个虚通道的标识号或通道ID的列表。在一些实施例中,主机可在发送消息3之前阻塞在正被转移的虚通道上的写操作。这可以清空通道,并且消息3可向客户机指示对于要被转移的虚通道不会再有数据到达。在一个实施例中,主机可在发送消息I 之后阻塞写操作。在一些实施例中,主机可对于消息3的传输设置超时定时器。如果在主机接收到确认之前该定时器到时,则主机可断开ICA会话。
在消息4,客户机可以在该客户机接收到了终止数据消息的流上回复确认消息 (XferVCsEndDataAck)。该确认可包括服务器会话cookie、要被转移的虚通道总数的标识符,和要被转移的每个虚通道的标识号或通道ID的列表。该确认可向主机指示对于要被转移的虚通道不会再有数据到达(即,该终止数据消息和确认消息是经由该虚通道传送的最后消息)。在进一步的实施例中,客户机可设置超时定时器。如果在客户机接收到启动命令 (消息5)前该定时器到时,客户机可断开ICA会话。
在消息5,主机可发送启动命令(StartXferedVCs)。可以在虚通道正要被转移到的ICA流或TCP连接上发送启动命令。该消息可向客户机指示主机已准备好在被转移的虚通道上接收和发送数据。在一些实施例中,启动命令可包括服务器会话cookie,转移的虚通道总数的标识符,和每个被转移的虚通道的标识号或通道ID的列表。在一些实施例中,主机可对于消息5的传输设置超时定时器。如果在主机接收到确认之前该定时器到时,主机可断开ICA会话。
在消息6,客户机可在虚通道已经被转移到的ICA流或TCP连接上回复确认 (StartXferedVCsAck)。该确认可包括服务器会话cookie,被转移的虚通道的总数的标识符,和每个被转移的虚通道的标识号或通道ID的列表。该确认可向主机指示客户机已准备好在被转移的虚通道上接收和发送数据。在发送消息6之后,客户机可在通道上开启写,并且开始在被转移的虚通道上发送虚通道数据。一旦主机接收该确认,主机可类似地开启写并且开始在被转移的虚通道上发送数据。在一些实施例中,可以为虚通道要被转移到的每个另外的流重复图4C的消息序列。
在讨论粒度优先级标记的细节前,首先介绍远程显示协议(如ICA协议)的不同层以及该协议与传输层协议(如TCP)如何交互以通过以太网发送ICA数据可能很有用处。在该数据传输过程中,确定和设置用于优先级标记的优先级位。
简要参考图4D,其描述了网络堆栈的框图,该框图示出远程显示协议数据流过堆栈以用于经由传输层连接进行传送。当在目的地(客户机或服务器)接收到数据时,该数据以相反的方向穿过同一协议层。
每个虚通道470可包括其自己的虚通道驱动器,该虚通道驱动器向WinStation驱动器474发送虚通道数据。WinStation驱动器474可包括驱动程序、服务、守护进程、例程或用于从多个虚通道驱动器接收虚通道数据并打包该数据以用于由较低网络层接收的其他可执行代码。WinStation驱动器474可在OSI网络模型的应用、表示和会话层运行。在一些实施例中,WinStation驱动器474可以在客户机和服务器之间建立远程显示协议会话, 并且维护会话信息,例如是否启用压缩和加密以及是否要使用优先级分组标记。在其他实施例中,WinStation驱动474可对远程显示协议命令信息进行编码并且将输入虚通道数据转换为放置于WinStation驱动器的输入缓冲区的远程显示协议分组,如ICA分组。如图所示,ICA分组可包括命令字节,该命令字节之后是可选的命令数据。在一些实施例中,当启用压缩时,WinStation驱动器474可压缩分组。多个ICA分组可在输出缓冲区中被连接或合并。WinStation驱动器474可确定每个输出缓冲区中包含的数据量以使得当离开组帧协议驱动器478时,数据长度不会超过预定值。在一些实施例中,当启用压缩时,WinStation 驱动器474可在输出缓冲区的起始部分添加压缩头。
WinStation驱动器474可基于该数据所来自的虚通道进一步确定多个输出缓冲区的每个输出缓冲区的优先级并且可将这个信息传递到组帧协议驱动器478。当多个ICA 分组被合并到一个输出缓冲区时,WinStation驱动器474可基于所包括的最高优先级的 ICA分组来确定该输出缓冲区的优先级。例如,如果输出缓冲区包含细线(thinwire )(优先级O) ICA分组和打印(优先级3) ICA分组,则基于所包括的细线数据给予输出缓冲区优先级O。在一些实施例中,当启用加密时,WinStation驱动器474可将输出缓冲区转发到加密协议驱动器476。
如果启用加密,则加密协议驱动器476可以向从WinStation驱动器输出缓冲区 474传递来输出缓冲区数据加入加密头。可以使用任何类型和形式的加密方法对加密头后面的数据进行加密。这可以包括加密压缩头(如果包含的话)。
组帧协议驱动器478可计算输出缓冲区的字节数并且添加帧头。除了字节数, 中贞头可包括由WinStation驱动器474确定的2比特(位)的优先级值。例如,如果输出缓冲区的总字节数是1320字节并且该分组有高的优先级,则帧头的二进制值可包括 0000010100101000。前两位00可指示优先级或O。接着的6位可包括字节数或1320,其被分为高位字节数(如000101或1280)和低位字节数(如00101000或40)。在一些实施例中,低位和高位字节可被颠倒以用于网络传送,使得帧头等于低位字节数,并且后面跟着两个优先级位和高位字节数。
优先级位可用于提供基于被传输的虚通道数据来划分ICA会话的优先级的能力。 这可以通过将每个虚通道与两位的优先级进行关联来实现,如上所述,该两位的优先级作为每个ICA帧头的部分被包括在每个ICA帧头中。这两位指示四种可能的优先级高、中、 低和基本(background)。在一些实施例中,可以为每个虚通道分配这些优先级值的其中之一。例如,在一个实施例中,可以为远程窗口屏幕更新数据或无缝窗口屏幕更新数据提供高优先级。在另一个实施例中,可以为剪贴板数据、客户机音频映射数据、许可证管理数据、视频服务器视频数据或程序邻近(program neighborhood)数据提供中优先级。而在另一个实施例中,可为客户机COM端口映射或客户机驱动映射数据提供低优先级。在另一个实施例中,可以为诸如自动客户机更新之类的客户机管理数据、用于非假脱机或假脱机客户机的打印机映射或其他数据提供基本优先级。
可使用各种服务质量(QoS)解决方案来区分远程显示协议流量与网络上所有其他流量的优先级。这些解决方案能够基于传输层端口或通过识别建立新会话时发生的远程显示协议初始化握手而将网络流量识别为远程显示协议流量。一些QoS解决方案还可以基于其他信息(如发布的应用或源IP地址)来识别远程显示协议流量。这种识别允许在整个网络上区分远程显示协议会话彼此之间的优先级。例如,可以为其中用户运行诸如Peoplesoft 之类的企业关键应用的所有远程显示协议会话提供比执行不是企业关键功能的会话更高的优先级。
远程显示协议优先级分组标记为QoS解决方案提供机会以识别远程显示协议会话中的虚通道优先级,从而使得传输更高优先级数据的远程显示协议会话首先被传送。QoS 解决方案可采用这样一种方式来实现远程显示协议优先级分组标记根据正被传输的远程显示协议数据的优先级位来动态地改变每个传输层流的传送速度,而不是尝试延迟流中的各个数据片段。
图4E示出了其中经由单个传输层连接承载多个虚通道的系统的实施例的框图。 如图所示,一个或多个应用440可产生数据,如图形数据442A、音频数据442B和打印机数据 442C (总的称为应用数据442)。可产生其他数据,包括系统配置数据、⑶I或CLI交互、文件和剪贴板传送、电子邮件、视频、web浏览交互或者任何其他类型和形式的应用、服务或操作系统生成的数据。该数据可被提供给应用传送服务器435的多通道服务415。第一种数据(如图形数据442A)被传递到第一虚通道490A (以实线展示)。第二种数据(如音频数据 442B)被传递到第二虚通道490B (以虚线展示)。第三种数据(如打印机数据442C)被传递到第三虚通道490C (以点线展示)。在一些实施例中,可使用额外的虚通道和应用。在很多实施例中,虚通道不具有与应用的一到一的对应,而是可以承载来自多个应用的数据。尽管以流向每个虚通道的单一类型的数据来描述,但在很多实施例中,通道可以承载多种类型的数据。在其他实施例中,同一类型的数据可去往不同的通道。例如,相比于用于后台窗口或缩略窗口( clipped window)的图形更新数据,用于前台窗口的图形更新数据可被发送到具有更高优先级的虚通道。如上文所述,每个虚通道可具有优先级,并且因而每个虚通道可包括要以指定的或分配的优先级传输的、来自一个或多个应用的数据。
然而,如上文所述,在其中多个虚通道490A-490C由单个传输层连接492A传输或承载的实施例中,无法检测该传输层流中的多个虚通道的中间装置可能无法对高优先级数据(如图形数据442A)应用相对于低优先级数据(如打印机数据442C)的不同的优先级。现参考图4F,示出了其中利用多个传输层连接来承载会话的多个虚通道的系统的实施例的框图。如图所示,虚通道490A-490C可被划分到不同的传输层连接429A-429C。通过对每个传输层连接429A-429C设置服务等级、ToS或DiffServ标志,无法解析虚通道数据流的中间装置仍然可以设置高优先级传输层连接1492A (以及对应的虚通道1490A)的优先级高于低优先级传输层连接3492C (以及对应的虚通道3490C)。在其他实施例中,中间装置可基于源IP地址、源端口、目的IP地址、目的端口、有效载荷大小、窗口大小、分组之间的时间间隔或流的突发性,或者任何其他类型和形式的连接信息来划分传输层连接的优先级。
在其中部署了诸如由Citrix SYSTEMS出品的的分支中继器或WANscaler之类的中间装置以加速客户机和主机之间的通信的类似实施例中,这些通信可由分支中继器或 WANscaler进行压缩。因此,未被压缩的分组的有效载荷中的优先级标记对于在执行压缩的中间装置之间的额外中间装置(如路由器)可能不可用。因而,通过根据优先级将虚通道划分到多个TCP流,可设置每个TCP流的DSCP位以允许路由器指派QoS设置,而不需要检查每个分组的有效载荷或者在由于压缩或加密而不能解析有效载荷的情况下导致采取默认设置。
图5示出的是包括中间装置200和安全票(ticket)授权或认证服务器106’的系统的实施例的框图,其中使用多个传输层连接来承载客户机102和主机106之间的会话的多个虚通道。在一些实施例中,中间装置可用于路由从客户机102到服务器106的通信,并且因而可包括用于访问企业网或其他保护区的网关。在多个实施例中,该网关可包括认证服务。在一些实施例中,该网关可包括由Citrix SYSTEMS出品的接入网关(Access Gateway)。
在很多实施例中,中间装置200可支持远程显示协议会话。一旦会话被认证,来自单个流或者TCP连接的数据可由主机和客户机之间的中间装置来代理。中间装置还可以被配置为支持同一会话中的多个远程显示协议流。如上所述,客户机可将来自当前流的虚通道转移到会话中的不同流。中间装置可支持同一会话的多个流,验证该流并且代理去往对应于该多个流的输出连接的数据和消息。
简单的说,单流公共网关协议(CGP)连接经由作为代理的中间装置被建立。首先, 可建立到中间装置的SSL连接。客户机可以通过发送客户机签名和绑定请求来启动握手过程(步骤I)。该绑定请求和/或签名可包括描述客户机参数和能力的客户机能力列表。该请求还可以包括安全票授权(STA)票,其中,响应于由客户机进行的应用列举和选择从STA 服务器获得该STA票。中间装置200可提取该票并且用STA服务器验证该票(步骤2),并且一旦经过验证,STA服务器可使用将用于远程显示协议会话的主机的IP和端口来进行回复(步骤3)。在步骤4,中间装置可向STA服务器发送第二请求以及接收到的IP和端口以获得重新连接票,该重新连接票在步骤5返回。
在步骤6,中间装置将请求转发到主机106,并且主机使用主机签名和绑定响应命令来进行回复(步骤7)。该主机签名和/或响应可包括服务器能力列表,其描述关于特定连接的服务器参数和能力。服务器参数和能力可以是主机能力的子集(该子集匹配从客户机接收的能力),且因而可以基于客户机能力、服务器能力和关于会话的设置而被创建。该响应被转发到客户机(步骤8)并且可以包括从STA服务器获得的重新连接票。在单流会话中,该重新连接票可在中断情况下被用于重新生效会话。票可以仅被使用或验证一次。每当出现新的中断时,相对于先前的重新连接票执行新的STA验证且新的重新连接票被发出并送回给客户机。因而,如上所述,步骤9-13可遵循如步骤1-8的相同序列。
相同的序列可用于多流远程显示协议会话。不同于在中断时请求重新连接并获得新的票,可以不用丢弃先前的流按顺序建立每个额外的流。伴随每一新流的建立,获得新的票,并且该新的票用于验证下一个流(步骤14)。客户机使用在BIND_RESP0NSE中得到的重新连接票,通过发送另一个BIND_REQUEST立即建立第二连接。因而,多流会话中的重新连接票最初不是用于容错,而是被过载(overload)从而为CGP会话依次建立随后的TCP连接 (流)。在最后流的建立期间获得的票是不用的,并且可被保留以在中断情况下的重新建立连接。因而,客户机重复和使用来自先前的BIND_RESP0NSE消息的重新连接票来建立下一个次要连接直到所有的次要连接都已建立。在ICA客户端中只存在一个有效的、未被使用的CGP票。
在最后的BIND_RESP0NSE消息中接收的最终的重新连接票用于重新建立中断的连接。任何连接(首要或次要)都可能被中断,但相同的重新连接票被用于使用新的BIND_ REQUEST来重新建立中断的连接。重新连接过程产生新的重新连接票,该新的重新连接票接着被传回给客户机。当连接面临中断时客户机可以再次使用这个新的票。如果不能建立任何中断的连接,那么CGP会话可以被断开,属于那个会话的所有连接将被关闭,并且用户可能需要再次登录(如上文在图4B和4C中关于超时到时的讨论)。
在一些实施例中,对于次要连接,在STA服务器响应中指定的额外端口号(步骤3, 对于每个次要连接重复)可以被忽略。反之,在步骤7期间,当为多流会话建立次要连接时, 主机可包括要使用的端口的指示器。中间装置可使用这个端口来用于新的次要连接。
图6中示出了用于为具有服务等级的网络连接分配虚通道的方法的实施例。该方法包括建立多个虚通道(步骤602),建立多个网络连接,其中每个网络连接具有服务等级(步骤604),并且将虚通道与网络连接进行关联使得虚通道具有关联的服务等级(步骤 606)。
继续参考图6且具体而言,在一个实施例中,作为远程应用或桌面会话的结果,建立一个或多个虚通道(步骤602 )。在一个实施例中,远程应用会话是其中用户可访问可用的远程应用并且能与那些应用交互的会话。通过将应用输出(例如,由应用生成的图形数据)传输到客户机102并且在应用窗口中显示该应用输出使其看上去好像远程应用在本地客户机102上执行,来促成用户和远程应用之间的交互。
在远程应用会话期间可传输不同类型的数据,并且在一些实施例中,应用传送客户端可将不同的虚通道指定给不同类型的数据。例如,可指定一个虚通道用于传送实时数据,如视频会议信息和音频。可指定另一虚通道用于传输图像数据、而同时可指定另一通道用于传输与远程可访问装置(例如,USB、扫描仪、即插即用装置)相关的信息。还可以指定另一个虚通道用于传送打印机数据。在一些实施例中,虚通道可连接客户机102和服务器 106。在其他实施例中,网络104上的设备450可促成通过客户102与服务器106之间的虚通道的传输。
在一个实施例中,多通道服务415、420可导致建立一个或多个网络连接,其中每个连接都具有服务等级(步骤604)。在一些实施例中,网络连接可以是传输层连接,其中每个连接可具有不同的关联的IP端口号和IP地址。管理员可将每个网络连接配置为具有不同的服务等级。在一些实施例中,服务等级可代表优先等级,使得通过具有高服务等级的网络连接传输的流量将在通过具有低服务等级的网络连接传输的流量之前被传输。在一些实施例中,每个网络连接可具有唯一的服务等级使得没有两个网络连接能具有相同的服务等级。
多通道服务415、420可将每个虚通道与一网络连接进行关联,使得通过该虚通道传输的数据以对应于网络连接的同一优先级被传输(步骤606)。例如,第一网络连接可具有比第二网络连接更高的优先级。因而,与第一网络连接关联的第一虚通道可以具有比与第二网络连接关联的第二虚通道更高的优先级。因此,通过第一虚通道传输的数据比起通过第二虚通道传输的数据,将以更高的优先等级被传输。将虚通道与网络连接进行关联可包括配置虚通道以将数据传输到与该虚通道的网络连接关联的目的端口。当设备450确定数据分组的终止端口(end port)与具有特定服务等级的特定网络连接关联时,设备450可为该数据分组提供与该网络连接的服务等级相应的优先等级。
在一些实施例中,本文示出的方法和系统以及示出的系统可描述远程应用会话, 该远程应用会话包括远程桌面会话和/或远程应用会话。远程桌面会话,很像远程应用会话,可向端用户提供远程桌面。
现参考图7,示出了用于为多个网络连接的每个网络连接分配不同服务等级的方法,其中每个网络连接对应于一个或多个虚通道。在一些实施例中,在步骤702,第一计算装置可经由第一传输层网络连接向第二计算装置传输远程显示协议会话的第一虚通道的远程显示协议数据。在一些实施例中,第一计算装置可包括客户机,而在其他实施例中,第一计算装置可包括服务器。远程显示协议会话可包括ICA会话、RDP会话或其他远程桌面协议会话,或者包含多个虚通道的任何其他类型和形式的远程显示协议会话。在一些实施例中, 第一计算装置可响应于网络连接的服务等级以及内容类型、应用类型或数据用户的其中之一,确定是否经由第一虚通道或第二虚通道,或者经由第一传输层网络连接或第二传输层网络连接来传输远程显示协议数据。在一些实施例中,在步骤704,第一计算装置可经由第二传输层网络连接向第二计算装置传输远程显示协议会话的第二虚通道的远程显示协议数据。
可为第一传输层网络连接分配第一服务等级,并且为第二传输层网络连接分配第二服务等级。第一服务等级和第二服务等级可以不同。在其他实施例中,第一服务等级和第二服务等级可以相同。在一些实施例中,第一计算装置可经由一个或多个另外的传输层网络连接传输另外的虚通道的另外远程显示协议数据。可为每个传输层网络连接分配不同的服务等级。因此,在一些实施例中,第一计算装置可为单个远程显示协议会话建立四个传输层网络连接、六个连接或八个连接,其中每个连接具有不同的服务等级值。
在一些实施例中,可为第一传输层网络连接分配第一端口号,并且可为第二传输层网络连接分配不同于第一端口号的第二端口号。在其他实施例中,第一和第二传输层网路连接可具有相同的端口号,但指向不同的目的IP地址,该不同的目的IP地址可包括由第二计算装置维护的多个虚拟IP地址。
在一个实施例中,第一服务等级可基于第一虚通道的远程显示协议数据类型,且第二服务等级可基于第二虚通道的远程显示协议数据类型。例如,第一虚通道可承载细线数据或应用图形输出数据,并且第一服务等级可以是高优先级服务等级,例如优良结果或关键应用优先级。第二虚通道可承载打印机数据,并且第二服务等级可以是低或者基本优先等级。
在一些实施例中,第一服务等级可基于第一虚通道的第一传输优先级,并且第二服务等级可基于第二虚通道的不同于第一传输优先级的第二传输优先级。例如,如上文所述,每个虚通道可与传输优先级相关联。在这些实施例中,服务等级可对应于传输优先级。 例如,可为基本服务等级分配基本传输优先级。在进一步的实施例中,第一计算装置可经由一个或多个中间计算装置向第二计算装置传输远程显示协议数据,该中间计算装置例如是路由器、网关、交换机、防火墙、流量调整器(traffic shaper)或其他装置。中间计算装置可基于第一服务等级对第一传输层网络连接执行各种划分流量优先级的技术并且不考虑第一虚通道中的远程显示协议数据,并且基于第二服务等级对第二传输层网络连接执行各种划分流量优先级的技术并且不考虑第二虚通道中的远程显示协议数据。在一些实施例中, 中间计算装置可为一个或多个传输层网络连接分配传输优先级。例如,中间计算装置可根据对源IP、目的IP、源端口、目的端口、可选字段或其他头字段中的数据串、有效载荷大小或者任何其他信息中的一个或多个所应用的策略来分配传输优先级。因而,即使中间装置无法解析或解释虚通道或远程显示协议的传输优先级标签,或者不能检测由每个虚通道所承载的数据类型,该中间装置可仍然执行网络优先级划分和流量调整以提供增强的QoS。
现参考图8,示出了用于为多个网络连接中的每个网络连接分配不同服务等级的方法的另一个实施例的流程图,其中每个网络连接对应于一个或多个虚通道。在步骤802, 第一计算装置可经由第一传输层连接建立与第二计算装置的远程显示协议会话。可以为第一传输层连接分配第一服务等级,并且该远程显示协议会话可包括多个虚通道。在一些实施例中,建立远程显示协议会话可包括在第一传输层连接上执行握手过程,例如TCP的三次握手。在其他实施例中,如上文所述,建立远程显示协议会话可包括交换一个或多个配置或同步消息。在一些实施例中,建立远程显示协议会话可包括向第二装置传输建立远程显示协议会话的请求。在其他实施例中,建立远程显示协议会话可包括响应于从第二计算装置接收建立远程显示协议会话的请求而建立远程显示协议会话。
在步骤804,第一计算装置可建立与第二计算装置的第二传输层连接,为该第二传输层连接分配可以与第一服务等级不同的第二服务等级。如上文所述,建立第二传输层连接可包括在传输层执行各种握手和同步过程,以及上文所述的多流握手和同步过程。建立第二传输层连接可包括交换客户机cookie和服务器cookie,以将第二传输层连接标识为与该远程显示协议会话相关联。在一些实施例中,建立第二传输层连接可包括向第二装置传输建立第二传输层连接的请求。在其他实施例中,建立第二传输层连接可包括响应于从第二计算装置接收建立第二传输层连接的请求而建立第二传输层连接。因此,在一些实施例中,同一装置可建立第一传输层连接和第二传输层连接,而在其他实施例中,这些任务可在第一和第二计算装置之间划分。
在步骤806,在一些实施例中,第一计算装置可响应于对应于第一服务等级的第一虚通道的优先级,经由第一传输层连接来传输远程显示协议会话的第一虚通道的远程显示协议数据。例如,在其中第一服务等级是高优先级服务等级并且第一虚通道具有相应的高优先级标记的实施例中,第一计算装置可经由第一传输层连接来传输第一虚通道的远程显示协议数据。
在步骤808,在一些实施例中,第一计算装置可响应于对应于第二服务等级的第二虚通道的优先级,经由第二传输层连接来传输远程显示协议会话的第二虚通道的远程显示协议数据。
在一些实施例中,可响应于第一虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一,来分配第一虚通道的优先级。在其他实施例中,可响应于第二虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一,来分配第二虚通道的优先级。在一些实施例中,第一和第二虚通道的远程显示协议数据可经由中间计算装置被传输,该中间计算装置被配置为基于第一服务等级和第二服务等级来执行流量优先级划分,并且不考虑第一虚通道和第二虚通道的远程显示协议数据。因而,即使中间装置无法解析或解释虚通道或远程显示协议的传输优先级标记,或者不能检测由每个虚通道承载的数据的类型, 该中间装置可仍然执行网络优先级划分和流量调整以提供增强的QoS。
尽管已经描述方法和系统的各种实施例,但是这些实施例是示例性的并且不以任何方式限制所述方法和系统的范围。相关领域中的技术人员在不脱离所描述方法和系统的最宽范围的情况下可以对所描述的方法和系统的形式和细节进行修改。因此,本文描述的方法和系统的范围不应该通过这些示例性实施例来限定,而是应该根据所附权利要求书和其等价范围来限定。
权利要求
1.一种用于为多个网络连接中的每个网络连接分配不同服务等级的系统,其中每个网络连接对应于一个或多个虚通道,所述系统包括 第一计算装置;和 第二计算装置,其经由远程显示协议会话与所述第一计算装置通信,所述远程显示协议会话包括多个虚通道,其中每个虚通道服务于所述远程显示协议会话的至少部分网络流量,以及 多个传输层网络连接,其包括所述第一计算装置和所述第二计算装置之间的网络连接,其中第一传输层网络连接承载第一虚通道且被分配第一服务等级并且第二传输层网络连接承载第二虚通道且被分配第二服务等级,所述第二服务等级不同于所述第一服务等级。
2.根据权利要求I所述的系统,其中所述第一传输层网络连接被分配第一端口号且所述第二传输层网络连接被分配第二端ロ号,所述第二端口号不同于所述第一端ロ号。
3.根据权利要求2所述的系统,其中所述第一端口号基于通过由所述第一传输层网络连接承载的所述第一虚通道传输的数据的类型,并且其中所述第二端口号基于通过由所述第二传输层网络连接承载的所述第二虚通道传输的数据的类型。
4.根据权利要求I所述的系统,其中所述第一服务等级对应于由所述第一传输层网络连接承载的所述第一虚通道的第一传输优先级,并且其中所述第二服务等级对应于由所述第二传输层网络连接承载的所述第二虚通道的第二传输优先级。
5.根据权利要求4所述的系统,其中所述第一传输优先级不同于所述第二传输优先级。
6.根据权利要求4所述的系统,其中所述第一传输优先级基于通过由所述第一传输层网络连接承载的所述第一虚通道传输的数据的类型,并且其中所述第二传输优先级基于通过由所述第二传输层网络连接承载的所述第二虚通道传输的数据的类型。
7.ー种用于为多个网络连接中的每个网络连接分配不同服务等级的方法,其中每个网络连接对应于一个或多个虚通道,所述方法包括 由第一计算装置经由第一传输层网络连接向第二计算装置传输远程显示协议会话的第一虚通道的远程显示协议数据,所述第一传输层网络连接被分配第一服务等级;以及 由所述第一计算装置经由第二传输层网络连接向所述第二计算装置传输所述远程显示协议会话的第二虚通道的远程显示协议数据,所述第二传输层网络连接被分配不同于所述第一服务等级的第二服务等级。
8.根据权利要求7所述的方法,其中所述第一传输层网络连接被分配第一端口号且所述第二传输层网络连接被分配不同于所述第一端ロ号的第二端ロ号。
9.根据权利要求7所述的方法,其中所述第一服务等级基于所述第一虚通道的远程显示协议数据的类型,且所述第二服务等级基于所述第二虚通道的远程显示协议数据的类型。
10.根据权利要求7所述的方法,其中所述第一服务等级基于所述第一虚通道的第一传输优先级,并且所述第二服务等级基于所述第二虚通道的第二传输优先级,所述第二传输优先级不同于所述第一传输优先级。
11.根据权利要求10所述的方法,还包括通过中间计算装置经由所述第一传输层网络连接向所述第二计算装置传输所述远程显示协议会话的所述第一虚通道的远程显示协议数据,所述中间计算装置基于所述第一服务等级执行流量优先级划分并且不考虑所述远程显示协议数据;以及 通过所述中间计算装置经由所述第二传输层网络连接向所述第二计算装置传输所述远程显示协议会话的所述第二虚通道的远程显示协议数据,所述中间计算装置基于所述第ニ服务等级执行流量优先级划分并且不考虑所述远程显示协议数据。
12.根据权利要求7所述的方法,还包括响应于内容类型、应用类型或数据用户的其中之ー以及所述第一服务等级,确定经由所述第一传输层网络连接来传输所述远程显示协议会话的所述第一虚通道的远程显示协议数据。
13.一种用于为多个网络连接中的每个网络连接分配不同服务等级的方法,其中每个网络连接对应于一个或多个虚通道,所述方法包括 由第一计算装置经由第一传输层连接建立与第二计算装置的远程显示协议会话,所述第一传输层连接被分配第一服务等级并且所述远程显示协议会话包括多个虚通道; 由所述第一计算装置建立与所述第二计算装置的第二传输层连接,所述第二传输层连接被分配与所述第一服务等级不同的第二服务等级; 由所述第一计算装置响应于对应于所述第一服务等级的第一虚通道的优先级,经由所述第一传输层连接传输所述远程显示协议会话的所述第一虚通道的远程显示协议数据;以及 由所述第一计算装置响应于对应于所述第二服务等级的第二虚通道的优先级,经由所述第二传输层连接传输所述远程显示协议会话的所述第二虚通道的远程显示协议数据。
14.根据权利要求13所述的方法,其中建立远程显示协议会话包括向所述第二计算装置传输建立远程显示协议会话的请求。
15.根据权利要求13所述的方法,其中建立远程显示协议会话包括响应于从所述第ニ计算装置接收建立远程显示协议会话的请求,建立远程显示协议会话。
16.根据权利要求13所述的方法,其中建立所述第二传输层连接包括向所述第二计算装置传输建立所述第二传输层连接的请求。
17.根据权利要求13所述的方法,其中建立所述第二传输层连接包括响应于从所述第二计算装置接收建立第二传输层连接的请求,建立第二传输层请求。
18.根据权利要求13所述的方法,其中建立所述第二传输层连接还包括响应于所述第二虚通道的优先级不同于所述第一虚通道的优先级,建立第二传输层连接。
19.根据权利要求13所述的方法,其中传输所述第一虚通道的远程显示协议数据包括通过中间计算装置传输所述远程显示协议数据,所述中间计算装置基于所述第一服务等级执行流量优先级划分并且不考虑所述第一虚通道的远程显示协议数据,并且其中传输所述第二虚通道的远程显示协议数据包括通过所述中间计算装置传输所述远程显示协议数据,所述中间计算装置基于所述第二服务等级执行流量优先级划分并且不考虑所述第二虚通道的远程显示协议数据。
20.根据权利要求13所述的方法,其中响应于所述第一虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一为所述第一虚通道分配优先级,并且响应于所述第二虚通道的内容类型、应用类型或远程显示协议数据用户的其中之一为所述第二虚通道分配优先级。
全文摘要
一种用于为多个网络连接中的每个网络连接分配不同服务等级的系统,其中每个网络连接对应于一个或多个虚通道。所述系统可包括连接第一计算机和第二计算机的多个虚通道。每个虚通道可服务于使用远程显示协议所生成的至少部分网络流量。所述系统还可以包括多个网络连接,其中每个网络连接对应于至少一个虚通道。所述系统的每个网络连接可具有所分配的端口号和对应于传输优先等级的所分配的服务等级。分配给每个网络连接的服务等级可与分配给其他网络连接的服务等级不同。
文档编号H04L29/06GK102986189SQ201180033501
公开日2013年3月20日 申请日期2011年5月9日 优先权日2010年5月9日
发明者B·佩德森 申请人:思杰系统有限公司