多链路远程协议的制作方法

文档序号:7576888阅读:138来源:国知局
专利名称:多链路远程协议的制作方法
技术领域
本发明涉及远程计算系统,尤其涉及远程数据访问。
背景技术
远程计算系统可使用户能够远程地访问托管资源。远程计算系统上的服务器可执 行程序并将指示用户界面的信号发送到可通过经由网络发送符合诸如TCP/IP协议等通信 协议的信号来连接的客户机。可向每个连接客户机提供远程呈现会话,即,包括一组资源的 执行环境。每个客户机可向服务器发送指示用户输入的信号并且服务器可将该用户输入应 用于合适的会话。客户机可使用诸如远程桌面协议(RDP)等远程呈现协议来连接到服务器 资源。在远程桌面情形中,位于主计算机(例如,服务器)上的用户桌面的图形内容通常 被流传送到另一计算机(例如,客户机)。服务器和客户机将以定义良好的协议或格式来交 换桌面图形数据。在某些情况下,图形数据可以在宿主虚拟机上生成,并且当客户机端点在 客虚拟机分区上时,客虚拟机可能必须通过诸如虚拟总线等通信信道通信来从主机接收图 形数据,该图形数据进而被发送到客户机。这一设置可能引入会影响远程客户机的用户体 验的等待时间。由此,本领域中需要解决上述问题的其他技术。

发明内容
在各实施例中,公开了允许客户机从主机直接接收数据且因此消除了一部分等待 时间的方法和系统。在某些实施例中,允许远程客户机访问位于除了主要远程呈现服务器之外的替换 源上的连接服务的至少一部分。在某些实施例中,可出于允许更好的流控制的目的来将远 程呈现虚拟信道拆分成多个连接。对于要通过数据信道传输的数据位于宿主虚拟机分区中 而远程端点位于客虚拟机分区上的情况,某些实施例可在虚拟机环境中实现。除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面 本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文 所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的 硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定 所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提 及的任何或所有缺点的实现。


参考附图来进一步描述根据本说明书的用于在虚拟环境内更改视图观点的系统、 方法和计算机可读介质,附图中
图1和2描绘了其中可实现本发明的各方面的示例计算机系统。图3描绘了用于实践本发明的各方面的操作环境。图4描绘了用于实践本发明的各方面的操作环境。图5示出了包括用于实现远程桌面服务的电路的计算机系统。图6示出了包括用于实现远程服务的电路的计算机系统。图7示出了此处公开的过程中的某一些的概览。图8示出了客户机屏幕捕捉的一个示例。图9示出了包含此处所公开的方法的各方面的示例框架结构。图10示出了图解此处所公开的方法的各方面的示例体系结构。图11示出了包含此处所公开的方法的各方面的示例体系结构。图12示出了用于处理要传输到客户计算机的图形数据的操作过程的示例。图13示出了用于处理要传输到客户计算机的图形数据的操作过程的示例。图14示出了包含此处所公开的方法的各方面的示例体系结构。图15示出了用于处理要传输到客户计算机的图形数据的操作过程的示例。图16示出了用于处理要传输到客户计算机的图形数据的示例系统。图17示出了承载参考图1-16讨论的计算机可执行指令的计算机可读介质。
具体实施例方式概括的计算环境在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面 理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必 要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无 需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中 参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实 现,且步骤以及步骤序列不应被认为是实现本发明所必需的。各实施例可在一个或多个计算机上执行。图1和2以及下面的讨论旨在提供其中 可实现本发明的合适计算环境的简要概括描述。本领域的技术人员可以理解,计算机系统 200,300可具有相对于图1和2的计算机100描述的组件中的一部分或全部。贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配 器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固 件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微 处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。本示例中的 逻辑处理器可由软件指令来配置,软件指令具体化可用于执行从例如RAM、R0M、固件和/或 虚拟存储器等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施 例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行 的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/ 软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选 择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结 构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现是微不足道的且留给了实现者。图1描绘了以本发明的各方面来配置的计算系统的示例。计算系统可以包括计算 机20或类似物,计算机20包括处理单元21、系统存储器22和将包括系统存储器在内的各 种系统组件耦合至处理单元21的系统总线23。系统总线23可以是几种类型的总线结构 中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的 任一种的局部总线。系统存储器包括只读存储器(ROM) M和随机存取存储器(RAM) 25。基 本输入/输出系统^(BIOS)存储在ROM 24中,其包含了诸如在启动期间帮助在计算机20 内的元件之间传输信息的基本例程。计算机20还可包括用于对硬盘(未示出)进行读写 的硬盘驱动器27,用于对可移动磁盘四进行读写的磁盘驱动器28,以及用于对可移动光盘 31,如CD ROM或其它光介质进行读写的光盘驱动器30。在一些示例实施例中,实施本发明 的各方面的计算机可执行指令可存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘四、光 盘31和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28和光盘驱动器30 分别通过硬盘驱动器接口 32、磁盘驱动器接口 33和光盘驱动器接口 34来连接到系统总线 23。驱动器及其相关联的计算机可读介质为计算机20提供了计算机可读指令、数据结构、 程序模块和其它数据的非易失性存储。虽然这里描述的环境采用硬盘、可移动磁盘四和 可移动光盘31,本领域技术人员应理解,在该操作环境中也能使用可存储能由计算机访问 的数据的其它类型计算机可读介质,如盒式磁带、闪存卡、数字视频盘、柏努利(Bernoulli) 盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。可在硬盘、磁盘四、光盘31、ROM 24或RAM 25上存储多个程序模块,包括操作系 统35、一个或多个应用程序36、其它程序模块37和程序数据38。用户可以通过诸如键盘 40和指示设备42之类的输入设备向计算机20中输入命令和信息。其它输入设备(未示 出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备常通过 耦合到系统总线的串行端口接口 46连接到处理单元21,但也可通过其它接口连接,如并行 端口、游戏端口或通用串行总线(USB)。显示器47或其他类型的显示设备也可经由诸如视 频适配器48等接口连接至系统总线23。除显示器47以外,计算机通常包括如扬声器和打 印机等其它外围输出设备(未示出)。图1的系统还包括主适配器55、小型计算机系统接 口 (SCSI)总线56和连接到SCSI总线56的外部存储设备62。计算机20可使用至一个或多个远程计算机,如远程计算机49的逻辑连接在网络 化环境中操作。远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或 其他常见的网络节点、虚拟机,并通常包括上文相对于计算机20所描述的许多或全部元 件,但是在图1中只示出了存储器存储设备50。图1所描绘的逻辑连接可以包括局域网 (LAN)51和广域网(WAN)52。这样的网络环境常见于办公室、企业范围计算机网络、内联网 和因特网。当在LAN联网环境中使用时,计算机20可通过网络接口或适配器53连接至LAN 51。当在WAN联网环境中使用时,计算机20通常可包括调制解调器M或用于通过诸如因 特网等广域网52建立通信的其它手段。或为内置或为外置的调制解调器M可经由串行端 口接口 46连接到系统总线23。在网络化环境中,关于计算机20所描述的程序模块或其部 分可被储存在远程存储器存储设备中。应该理解,所示网络连接是示例,并且可以使用在计 算机之间建立通信链路的其它手段。此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本发明限于这些实施例的公开。现在参考图2,描绘了示例性计算系统100的另一实施例。计算机系统100可包 括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机 系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多 个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系 统总线互联,系统总线将各种系统总线耦合到逻辑处理器102。系统总线可以是几种类型 的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体 系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如 随机存取存储器(RAM) 104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件 108 (例如闪存或ROM)、以及可移动存储设备118 (例如⑶-ROM、软盘、DVD、闪速驱动器、外 部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如 磁带盒、闪存卡、数字视频盘和柏努利盒式磁带。计算机可读存储介质为计算机100提供了对处理器可执行指令122、数据结构、程 序模块和其他数据的非易失性存储。基本输入/输出系统(BIOS) 120可被存储在固件108 中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。 包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/ 或可移动存储设备118上,并且可由逻辑处理器102来执行。命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于 键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其 它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其 它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备 也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器112的 接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出), 如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI)总线 和连接到SCSI总线的外部存储设备。计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网 络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它 常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接 至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相 对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以 理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。 虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将 本发明限于那些实施例。远程桌面系统是维护可由客户计算机系统远程地访问的应用的计算机系统。输入 是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T. 120 协议家族等协议,如远程桌面协议(RDP))传送到终端服务器上的应用。该应用如同该输入 是在终端服务器处送入的那样来处理该输入。该应用响应于所接收到的输入生成输出,并 且该输出通过网络传送到客户计算机系统。客户计算机系统呈现输出数据。由此,在客户
7计算机系统处接收输入并呈现输出,而处理实际上是在终端服务器处发生的。会话可包括 诸如桌面之类的外壳和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点 击转换成实现程序实例的命令的子系统等等。在另一示例实施例中,会话可包括应用。在 该示例中,当呈现应用时,桌面环境仍可被生成并对用户隐藏。应当理解,前述讨论是示例 性的,且当前公开的主题可以在各种客户机/服务器环境中实现且不限于特定终端服务产
品 O即使不是全部,也是在大多数远程桌面环境中,输入数据(在客户计算机系统处 送入)通常包括表示对应用的命令的鼠标和键盘数据,且输出数据(由终端服务器处的应 用生成)通常包括用于在视频输出设备上显示的视频数据。许多远程桌面环境也包括扩展 到传输其他类型的数据的功能。可使用通信信道来通过允许插件经由RDP连接传输数据来扩展RDP协议。存在许 多这样的扩展。诸如打印机重定向、剪贴板重定向、端口重定向等特征使用通信信道技术。 由此,除了输入和输出数据之外,可以有许多需要来传输数据的通信信道。因此,可能有传 输输出数据的偶然请求和传输其他数据的一个或多个信道请求争用可用的网络带宽。现在参考图3和4,所描绘的是被配置成实现虚拟机的计算机系统的高级框 图。如图所示,计算机系统100可包括图1和2中所描述的元件,以及可用于实现虚拟 机的组件。一个这样的组件是在本领域中也可被称为虚拟机监控程序的系统管理程序 (hypervisor)202o所描绘的实施例中的系统管理程序202可被配置成控制并仲裁对计算 机系统100的硬件的访问。广泛而言,系统管理程序202可以生成称为分区的执行环境, 如子分区1到子分区N(其中N是大于或等于1的整数)。在各实施例中,子分区可被认为 是系统管理程序202所支持的基本隔离单元,即,每一子分区可被映射到在系统管理程序 202的控制下的一组硬件资源,例如存储器、设备、逻辑处理器周期等,和/或父分区和系统 管理程序202可以隔离一个分区无法访问另一分区的资源。在各实施例中,系统管理程序 202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其 组合。在以上示例中,计算机系统100包括父分区204,父分区在开源社区中也可被认为 是域0。父分区204可被配置成通过使用虚拟化服务提供者228 (VSP)来向在子分区I-N中 执行的客操作系统提供资源,虚拟化服务提供者在开源社区中也被称为后端驱动程序。在 该示例体系结构中,父分区204可以门控(gate)对底层硬件的访问。VSP 2 可用于通过虚 拟化服务客户端(VCQ来复用到硬件资源的接口,虚拟化服务客户端在开源社区中也被称 为前端驱动程序。每一子分区可包括客操作系统220到222可管理并调度线程在其上执行 的一个或多个虚拟处理器,如虚拟处理器230到232。一般而言,虚拟处理器230到232是提 供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚 拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC 处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟 处理器的指令将受到逻辑处理器的支持。由此,在这些示例实施例中,多个虚拟处理器可同 时执行,同时例如另一逻辑处理器正在执行系统管理程序指令。一般而言,且如图所示,分 区中的虚拟处理器、各种VCS以及存储器的组合可被认为是虚拟机,如虚拟机240或M2。一般而言,客操作系统220到222可包括任何操作系统,如来自微软 、苹果⑥、开源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、 存储器管理器等的内核。内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至 少特权处理器指令的访问。每一客操作系统220到222可具有相关联的文件系统,该文件 系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统 本身。客操作系统220-222可调度线程来在虚拟处理器230-232上执行,并且可实现此类 应用的实例。现在参考图4,所示是可用于实现虚拟机的替换体系结构。图4描绘了类似于图3 的组件,但在该示例实施例中,系统管理程序202可包括虚拟化服务提供者2 和设备驱动 程序224,并且父分区204可包含配置实用程序236。在该体系结构中,系统管理程序202 可执行与图2的系统管理程序202相同或相似的功能。图4的系统管理程序202可以是独 立的软件产品、操作系统的一部分、嵌入在主板的固件内、或者系统管理程序202的一部分 可以由专用集成电路来实现。在该示例中,父分区204可具有可用于配置系统管理程序202 的指令,然而,硬件访问请求可由系统管理程序202来处理而非传递到父分区204。现在参考图5,计算机100可包括被配置成向连接的客户机提供远程桌面服务的 电路。在一示例实施例中,所描绘的操作系统400可直接在硬件上执行,或者客操作系统 220或222可以由诸如VM 216或VM 218等虚拟机来实现。底层硬件208、210、234、212和 214在所示类型的虚线中指示以标识该硬件可被虚拟化。远程服务可被提供给诸如客户机401等至少一个客户机(尽管描绘了一个客户 机,但远程服务可被提供给更多客户机)。示例客户机401可包括由被配置成将用户输入定 向到远程服务器会话并显示该会话生成的用户界面信息的硬件来实现的计算机终端。在另 一实施例中,客户机401可以由包括与图Ib的计算机100相似的元件的计算机来实现。在 该实施例中,客户机401可包括被配置成实现操作系统的电路以及被配置成模拟终端的功 能(例如,可由一个或多个逻辑处理器102执行的远程桌面客户端应用)的电路。本领域 技术人员可理解,被配置成实现操作系统的电路也可包括被配置成模拟终端的电路。每一连接的客户机可具有允许该客户机访问存储在计算机100上的数据和应用 的会话(如会话404)。一般而言,应用和某些操作系统组件可被加载到分配给会话的存储 器区域中。由此,在某些情况下,某些OS组件可被派生N次(其中N表示当前会话数)。这 些各种OS组件可向操作系统内核418请求服务,操作系统内核例如能够管理存储器;方便 盘读/写;以及配置来自每一会话的线程来在逻辑处理器102上执行。可被加载到会话空 间的某些示例子系统可包括生成桌面环境的子系统、跟踪桌面内的鼠标移动的子系统、将 图标上的鼠标点击转换成实现程序实例的命令的子系统等等。实现这些服务,例如跟踪鼠 标移动的进程用与该会话相关联的标识符来标记,并且被加载到分配给该会话的存储器区 域中。会话可以由例如进程等会话管理器416来生成。例如,会话管理器416可以通过 为会话空间生成会话标识符;向会话空间分配存储器;以及在分配给会话空间的存储器中 生成系统环境变量和子系统进程的实例,来初始化并管理每一远程会话。会话管理器416 可在操作系统400接收到对远程桌面会话的请求时被调用。连接请求首先可由例如远程桌面协议(RDP)栈等传输栈410来处理。传输栈410 指令可配置逻辑处理器102来监听特定端口上的连接消息,并将这些消息转发到会话管理
9器416。当生成会话时,传输栈410可为每一会话实例化一远程桌面协议栈实例。栈实例 414是可为会话404生成的示例栈实例。一般而言,每一远程桌面协议栈实例可被配置成 将输出路由到相关联的客户机,并将客户机输入路由到用于适当的远程会话的环境子系统 444。如图所示,在一实施例中,应用448 (尽管示出了 一个,但其他也可执行)可执行并 生成位数组。数组可由图形接口 446来处理,图形接口进而可渲染可被存储在存储器中的 位图,如像素值数组。如图所示,可实例化远程显示子系统420,该子系统可捕捉渲染调用, 并通过网络经由用于会话的栈实例414来将该调用发送给客户机401。除了遥控图形和音频之外,也可实例化即插即用重定向器458以便遥控诸如打印 机、mp3播放器、客户机文件系统、CD ROM驱动器等不同设备。即插即用重定向器458可从 客户机侧组件接收信息,该信息标识了耦合到客户机401的外围设备。即插即用重定向器 458然后可配置操作系统400来加载用于客户机401的外围设备的重定向设备驱动程序。 重定向设备驱动程序可接收来自操作系统400的访问外围设备的调用,并通过网络将调用 发送到客户机401。如上所讨论的,客户机可使用诸如远程桌面协议(RDP)等用于控制远程呈现服务 的协议来连接到使用终端服务的资源。当远程桌面客户机经由终端服务器网关连接到终端 服务器时,该网关可打开与终端服务器的套接字连接,并将客户机通信重定向到远程呈现 端口或专用于远程访问服务的端口。网关还可使用通过HTTPS传送的终端服务器网关协议 来执行与客户机的特定的网关专用交换。转向图6,所描绘的是包括用于实现远程服务并用于合并本发明的各方面的电路 的计算机系统100。如图所示,在一实施例中,计算机系统100可包括类似于图2和图5中 所描绘的那些组件,并可实现远程呈现会话。在本发明的一个实施例中,远程呈现会话可包 括控制台会话的各方面,例如使用计算机系统为用户派生的会话以及远程会话。类似于上 述内容,会话管理器416可通过启用/禁用各组件以实现远程呈现会话来初始化并管理远 程呈现会话。可被加载到远程呈现会话中的一组组件是启用高保真遥控的控制台组件,即利用 了 3D硬件所渲染的3D图形和2D图形的组件。3D硬件所渲染的3D/2D图形可使用驱动程序模型来访问,该驱动程序模型包括用 户模式驱动程序522、API 520、图形内核524以及内核模式驱动程序530。应用448 (或诸 如用户界面等生成3D图形的任何其他进程)可生成API构造并将其发送到诸如来自微软 的Direct3D等应用编程接口 520 (API)。API 520进而可与用户模式驱动程序522通信,用 户模式驱动程序522可生成在被表示为顶点和常量的计算机图形中使用的例如基本几何 形状等图元,这些图元然后被用作用于其他形状的构件块,并将这些图元存储在例如存储 器页等缓存中。在一个实施例中,应用448可以声明它将如何使用该缓存,例如它将在缓存 中存储什么类型的数据。诸如视频游戏等应用可使用动态缓存来存储用于化身的图元,并 可使用静态缓存来存储诸如表示建筑物或森林等将不常改变的数据。继续驱动程序模型的描述,应用可用图元填充缓存并发出执行命令。当应用发出 执行命令时,缓存可由内核模式驱动程序530追加到运行列表,并由图形内核调度器5 来 调度。例如应用或用户界面等每一图形源可具有一上下文及其自己的运行列表。图形内核5M可被配置成调度各个上下文来在图形处理单元112上执行。GPU调度器5 可由逻 辑处理器102执行,并且调度器5 可向内核模式驱动器530发出命令来渲染缓存的内容。 栈实例414可被配置成接收命令并通过网络将缓存的内容发送到客户机401,在客户机401 处,缓存可由客户机的GPU来处理。现在所示的是结合调用远程呈现服务的应用使用的虚拟化GPU的操作的示例。参 考图6,在一实施例中,虚拟机会话可由计算机100生成。例如,会话管理器416可由逻辑处 理器102执行并且可初始化包括特定远程组件的远程会话。在该示例中,所派生的会话可 包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。用 户模式驱动程序522可生成可被存储在存储器中的图元。例如,API 520可包括可被展示 给诸如用户界面等用于操作系统400或应用448的进程的接口。进程可向API 420发送高 级API命令,如点列表(Point List)、线列表(Line List)、线带(Line Strip)、三角形列表 (Triangle List)、三角形带(Triangle Strip)、或三角形扇(Triangle Fan)。API 520 可 接收这些命令,并将其转换成用于用户模式驱动程序522的命令,用户模式驱动程序522然 后可生成顶点并将其存储在一个或多个缓存中。GPU调度器5 可运行并确定渲染缓存的 内容。在该示例中,可捕捉对服务器的图形处理单元112的命令,并且可将缓存的内容(图 元)经由网络接口卡114发送到客户机401。在一个实施例中,API可由各组件能与其接口 的会话管理器416来展示,以确定虚拟GPU是否可用。在一实施例中,诸如图3或图4的虚拟机240等虚拟机可被实例化,并且虚拟机可 但当用于操作系统400的执行的平台。在本例中,客操作系统220可具体化操作系统400。 虚拟机可在通过网络接收到连接请求时被实例化。例如,父分区204可包括传输栈410的 实例,并且可被配置成接收连接请求。父分区204可响应于连接请求连同包括实现远程会 话的能力的客操作系统一起初始化虚拟机。连接请求然后可被传递给客操作系统220的传 输栈410。在本例中,每一远程会话可在由其自己的虚拟机执行的操作系统上实例化。在一个实施例中,可实例化虚拟机,并且可执行具体化操作系统400的客操作系 统220。类似于上述内容,虚拟机可在通过网络接收到连接请求时被实例化。远程会话可由 操作系统生成。会话管理器416可被配置成确定该请求是针对支持3D图形渲染的会话的, 并且会话管理器416可加载控制台会话。除了加载控制台会话之外,会话管理器416可为 该会话加载栈实例414’并将系统配置成捕捉由用户模式显示驱动程序522生成的图元。用户模式驱动程序522可生成可被捕捉并存储在传输栈410可访问的缓存中的图 元。内核模式驱动程序530可将缓存追加到应用的运行列表,并且GPU调度器5 可运行 并确定何时对缓存发出渲染命令。当调度器5 发出渲染命令时,该命令可由例如内核模 式驱动程序530捕捉并经由栈实例414’发送到客户机401。GPU调度器5 可执行并确定发出渲染缓存的内容的指令。在本例中,与渲染指令 相关联的图元可经由网络接口卡114发送到客户机401。在一实施例中,至少一个内核模式进程可由至少一个逻辑处理器112执行,且至 少一个逻辑处理器112可同步渲染存储在不同缓存中的顶点。例如,可类似于操作系统调 度器来操作的图形处理调度器5 可调度GPU操作。GPU调度器5 可将单独的顶点缓存 合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序 来执行命令。
诸如视频游戏等进程的一个或多个线程可映射多个缓存且每一线程可发出绘制 命令。关于顶点的标识信息,例如为每一缓存、每一顶点或缓存中的每一批顶点生成的信 息,可被发送到GPU调度器5 。信息可与关联于来自相同的或其他进程并用于同步各个缓 存的渲染的顶点的标识信息一起存储在表中。诸如文字处理程序等应用可执行并声明例如两个缓存——一个用于存储用于生 成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。应用可映射缓存, 并发出绘制命令。GPU调度器5 可确定执行两个缓存的次序,使得菜单与字母一起以看上 去令人满意的方式来渲染。例如,其他进程可以在相同或基本相似的时间发出绘制命令,并 且如果顶点不是同步的,则来自不同进程的不同线程的顶点可能在客户机401上异步地渲 染,从而使得所显示的最终图像看上去是混乱或混杂的。可使用批量压缩器450在将数据流发送到客户机401之前压缩图元。在一实施例 中,批量压缩器450可以是栈实例414的用户模式(未示出)或内核模式组件,并且可被配 置成在被发送到客户机401的数据流中查找相似的模式。在该实施例中,由于批量压缩器 450从多个应用接收顶点流而不是接收多个API构造,因此批量压缩器450具有较大的顶点 数据集来筛选,以便找到压缩机会。即,由于用于多个进程的顶点而非不同的API调用被遥 控,因此存在批量压缩器450能在给定流中找到相似模式的更大机会。在一实施例中,图形处理单元112可被配置成对存储器使用虚拟寻址而不是物理 地址。由此,被用作缓存的存储器页可从视频存储器分页到系统RAM或盘。栈实例414’可 被配置成获得缓存的虚拟地址,并在捕捉到来自图形内核528的渲染命令时发送来自该虚 拟地址的内容。可配置操作系统400,例如可加载各种子系统和驱动程序来捕捉原语并将其发送 到诸如客户机401等远程计算机。类似于上述内容,会话管理器416可由逻辑处理器102执 行并且包括特定远程组件的会话可被初始化。在该示例中,所派生的会话可包括内核418、 图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。图形内核可调度GPU操作。GPU调度器5 可将单独的顶点缓存合并成正确的执 行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。用于实现以上提到的分区的所有这些变体仅仅是示例性实现,并且此处没有一样 应被解释为将本发明限于任何特定虚拟化方面。多链路远程协议此处所涉及的压缩、编码和解码图形数据的过程一般使用在共同转让的题 为"System And Method For Effectively Encoding And Decoding Electronic Information^用于高效地编码和解码电子信息的系统和方法)的美国专利7,460,725号 中所描述的一个或多个方法和系统,该专利通过整体引用合并于此。在此处所公开的各方法和系统中,可实现对远程呈现图形数据向客户计算机的传 输的改进来提供更及时且丰富的用户体验,尤其是当在虚拟机环境中向客户计算机提供远 程呈现会话的情况下。此处所公开的用于编码并传送图形数据的实施例可使用硬件和软件 进程的各种组合来实现。在某些实施例中,各功能可完全用硬件来执行。在其他实施例中, 各功能可完全用软件来执行。在还有一些实施例中,各功能可使用硬件和软件进程的组合 来实现。这些进程还可使用一个或多个CPU和/或诸如图形处理单元(GPU)或其他专用图形渲染设备等一个或多个专用处理器来实现。在远程桌面情形中,位于主计算机(例如,服务器)上的用户桌面的图形内容通常 被流传送到另一计算机(例如,客户机)。服务器和客户机将以定义良好的协议或格式来交 换桌面图形数据。微软""的远程桌面协议(RDP)是这一协议的一个示例。RDP协议是面向 流的协议,该协议可使用诸如传输控制协议(TCP)等基于流的传输来与客户机交换数据。 诸如TCP协议等协议通常展示出高等待时间,尤其是在底层传输是广域网(WAN)连接的时 候。如果对RDP通信使用这一链路,则此类等待时间可导致负面用户体验,因为桌面图形数 据可能以时间延迟的方式来递送给客户机。因此,当使用诸如RDP等协议来向客户计算机提供远程呈现会话时,在某些情形 中,可能期望通过有损传输来执行该协议。例如,当某一链路经历高损失率时,对诸如TCP 等某些基于流的协议的使用可导致显著的延迟。在这些协议中,当未正确地接收或丢失了 数据分组时,丢失的数据分组必须在可在所接收数据的处理中作出进展之前被重新发送。 由此,在这些情况下,使用有损数据报传输机制而非流无损传输机制可能是有利的。有损协 议可以是一般可被表征为具有有损语义的协议的任何类型的协议。这些协议可能不提供 递送验证、丢失数据重传、以及数据分组的隐式或显式排序。这些协议也可被称为数据报协 议。通过能够在有损数据报协议上传送数据,可避免用于丢失分组的恢复机制所引起的大 多数延迟。在此处所公开的各实施例中,描述了通过提供容损图形交换协议且因此允许使 用诸如用户数据报协议(UDP)等非基于流的协议来解决上述问题的方法。还期望能够恢复丢失数据分组而非忽略丢失分组且不在客户机侧渲染丢失数据。 如果期望这种数据恢复,则可能必须采用用于从链路损失中恢复的机制。因此期望开发一 种能够提供有损流类型的链路来支持诸如RDP等协议的机制,并且还提供如在无损信道中 一样恢复丢失数据分组的机制。在某些实施例中,可用使数据能通过传输但没有保证的分组递送的传送方式来修 改某些RDP专用编码技术。在一个实施例中,桌面图形数据可在各个帧中编码,每一帧包括 适合在少量用户数据报协议(UDP)协议数据单元(PDU)中的自包含图形元素。PDU然后可 在单独的UDP链路而非TCP链路上发送到客户机。在客户机侧,客户机可以检测帧内的哪 些图形元素因丢弃的UDP分组而被“丢失”,并且通过无损信道(即,TCP链路)向服务器请 求刷新。诸如TCP等无损协议需要更多开销来提供有保证的递送和数据分组排序。这些协 议要求传输或较低层提供确认数据的接收且在必要时重传数据的机制。这些开销导致数据 传输等待时间。然而,如果使用不需要此类开销的有损链路,则渲染系统可继续以丢失数据 可在稍后时间被恢复的假设来继续渲染所接收的数据。通过使用远程呈现应用层之下的协 议的组合,可支持远程呈现应用的目标,同时可采用数据恢复机制来实现更针对所传输的 数据类型的有效的视频数据传输。例如,如果正在渲染客户机屏幕并且该屏幕的部分尚未 接收到,则采用各协议的组合可允许诸如通知服务器未接收到某些数据等决策。此外,服务 器可确定遗漏数据已被重传且不需要发送更多数据。通过使用这一机制,可使用具有较低的传输开销的有损协议并使用第二信道上的 用于扩展信息来允许数据恢复的无损协议来高效地流传送图形数据。例如,在一个实施例 中,可建立混合模式,其中使用诸如TCP等无损传输来作为控制信道。通过使用TCP来作为控制信道,可简化对这一链路的要求,同时维持使用无损流协议的现有协议的互操作性优
点ο在一个实施例中,可提供辅助UDP连接来用于传送图形数据。图7描绘了远程呈 现服务器710和远程客户机700之间的连接。在典型的远程呈现配置中,客户机和服务器 通过无损链路720交换信息。这一信息可包括控制和图形数据两者。在一实施例中,有损 链路730被添加到客户机和服务器之间的连接。有损链路730可用于交换图形数据。无损 链路720可用于控制类型的数据,如加密密钥列表或位图高速缓存确认。在一个实施例中,可以与客户计算机建立第一连接,该第一连接是使用由有保证 的分组递送和分组次序表征的无损协议来建立的。然后可以与客户计算机建立连接能力来 确定客户计算机和/或图形源是否能支持第二连接。该第二连接可使用由无保证的分组递 送和分组排序表征的有损协议。如果两个端点都能支持第二连接,则可建立第二连接。一 旦建立,则可使用第一连接来管理向客户计算机的图形数据传送,并且可使用第二连接来 将远程呈现图形数据传送到客户计算机。由此,在某些实施例中,可建立使用诸如TCP等无 损协议的第一连接,并且任选地,端点可协商来建立使用例如UDP的第二有损链路来更高 效地传送图形数据。另外地或任选地,可终止第二连接,并且可使用第一连接来传送远程呈 现图形数据作为退路传送方法。例如,如果网络改变从而无法容忍对第二连接的使用,或者 如果因为例如有损链路无法穿越防火墙而引发连接性问题,则远程呈现会话可被降级到仅 使用第一连接来作为退路。在某些实施例中,该退路机制可自动发生。在无损链路上维持控制信道而通过有损信道传送数据以便交换关于有损链路的 状态的信息是有利的。例如,使用该控制信道,端点可交换关于连接是否已被关闭的信息, 以及以其他方式管理连接,如管理连接的生存期。在某些实施例中,客户机可向服务器发送 关于任何预期数据是否未被接收到的反馈。在一个实施例中,服务器或图形源可使用第一 连接从客户计算机接收描述未接收到的远程呈现图形数据的反馈。响应于该反馈,服务器 或图形源可通过第二(有损)连接来传送未接收到的远程呈现图形数据。由此,在某些实 施例中,在数据损失问题的情况下,服务器或图形源可以只发送客户机所指示的任何未接 收的分组,而非重传该数据的大部分。在某些实施例中,服务器或图形源可以等待预定时间 段来获得对接收到的数据的确认。如果没有确认,则服务器或图形源可以假定未确认的数 据分组丢失且需要重传。在各实施例中,要传送的数据类型可被分成两个类别。一个类别可包括不应使用 有损链路的数据,如安全握手或能力协商。第二个类别可包括可使用有损链路的数据,如视 频数据。第一类别还可包括用于管理有损数据的数据,如指示未接收到客户机屏幕的特定 片断的数据。第一类别可以使用一般可被表征为保证数据递送并提供数据分组次序的指示的 无损链路的主链路。无损协议可以是一般可被表征为具有无损语义的协议的任何类型的协 议。这些协议可提供以下功能中的一个或多个递送验证、丢失数据重传、以及数据分组的 隐式或显式排序。用于远程桌面呈现的较高级协议包括此处出于说明目的而使用的远程桌 面协议(RDP)。然而,所公开的概念和方法可结合其他远程呈现协议来使用。在一个实施例中,图形更新可被划分成帧。帧可包含表示在例如虚拟机会话期间 用于远程呈现的客户机屏幕的信息。在某些实施例中,客户机可假定帧的任何未接收到的部分是在丢失分组中编码的且因此未被接收到。尽管在本发明中帧内所使用的图形元素被 假定为位图,但也可使用其他类型的图形元素。图8描绘了被分成矩形平铺块的用户桌面的示例用户屏幕800。桌面可按相等大 小的位图来“平铺”,这些位图然后可被表示为帧。在该示例中,加深的平铺块810和820表 示已改变且要被发送到客户机的平铺块。由此,在这一情况下,要发送到客户机的帧将包含 两种类型的图形元素。未改变的平铺块可被表示为空矩形。已改变的平铺块可实际作为已 编码位图来发送。在标准RDP编码中,位图或图形元素通常在不考虑传输MTU的大小的情况下被编 码。MTU是最大传输单元,且通常以字节来表示最大协议数据单元的大小。在本发明的某 些实施例中,图形元素可被包含在一个或有限的一组底层传输分组中。如果图形元素被包 含在一个分组中,则分组可以是独立的,且客户机将能够从每一接收的分组中提取有用的 信息。由此,在一个实施例中,实际图形元素的大小可被约束到一个MTU。例如,如果MTU 大小是如WAN中典型的那样的1480字节,则服务器将能够在一个MTU中编码3h32像素的 未压缩单色位图。服务器还将能够编码用将位图大小削减到大约三分之一的算法来压缩的 32x32 的 32bpp 位图。如上所述,在某些实施例中,所公开的协议可以对全帧操作。例如,服务器可以将 屏幕内容编码为全帧,且客户机可以将该内容重构为全帧。帧的任何“遗漏”区域可被认为 是丢失的PDU的结果。由此,在一个实施例中,包含在PDU中的图形元素可包含足够的信息, 使得客户机能够确定图形元素所属的帧以及该帧内该元素所占据的位置。图9例示了帧元素的两个示例编码。在由数据分组900示出的一个实施例中,PDU 可包括帧序号。该帧序号可由客户机用于确定包含在PDU中的图形元素所属的帧。帧序号 的改变还可指示新帧的开始。尽管帧序号不需要是绝对值,但该号码应足够大以便在全部 帧丢失的情况下标识帧过渡。在由数据分组910所示的另一实施例中,在帧中编码的元素可包含几何信息。例 如,如果图形元素是大小相等的位图,则该位图在屏幕上的放置可由该位图在网格内的位 置来标识。如果元素可以是任意的几何结构,则可通过矩形坐标来指定图形元素位置。在某些实施例中,可提供描述在PDU中编码了什么类型的图元的元素类型。例如, 对于未改变的区域,可使用“空矩形”元素类型。图形类型的另一示例是不透明矩形或位图 (即,图形元素不是透明的,且因此不需要新屏幕区域所覆盖的先前屏幕区域的位图)。当通过有损协议传送数据时,可能需要解决多个问题来支持远程呈现协议。例如, 通常在传送之前向远程呈现数据应用批量压缩。批量压缩器通常通过根据早先的数据来编 码数据来操作。然而,如上所述,将图形元素编码到一个MTU中是合乎需要的,且因此在有 损传输的情况下,解压所必需的数据应被自包含在PDU内。因此,批量压缩历史可能必须在 压缩/解压每一 PDU之前被重置。如果使用多PDU传输技术,则压缩历史只能在压缩了更新中的所有PDU之后被重 置。批量压缩是基于历史的压缩技术,且因此如果流中的分组之一丢失,则状态会变得不一 致且可能会丢失同步。在一个实施例中,压缩上下文可在传送了每一分组之后重置,由此允 许独立地解压每一分组。在另一个实施例中,要包括在解压中的分组的数量可被动态地确 定。例如,压缩历史可在每四个分组之后重置。如果数据分组之一丢失,则服务器或图形源
15可能需要重发所有四个分组。如果数据分组丢失率太高,从而引起分组组的重复重传,则可 基于网络条件或其他因素来平衡压缩历史重置点,这些其他因素如丢失分组的概率以及在 重置上下文之前发送更多数据分组的效率。在一个实施例中,压缩历史中的分组数量可从 1到N来调整。当通过有损协议来传送数据时,还可能需要解决与数据加密有关的问题。通常期 望加密图形元素或帧。加密方案的示例包括通常用于为通过网络的通信提供安全性的安全 套接字层(SSL)。在各个所公开的实施例中,可能需要在PDU的上下文中完成加密。为了在 这一上下文中提供安全性,服务器可能必须更频繁地生成新的加密密钥并将这些密钥传递 给客户机。由于丢失数据分组的可能性,在使用有损链路时,用于加密方案的上下文也应该 被确定。服务器可将新的加密密钥以及应对其使用新加密密钥的分组传递给客户机。在一 个实施例中,可为每一分组提供非加密序号。加密密钥可通过可靠TCP链路连同密钥可应 用到的分组号的范围一起发送。尽管上下文可在一个分组处设置,但加密密钥可用于数据块。例如,可提供序列ID 来为一个或多个分组标识要使用哪一加密上下文。在一个实施例中,用于解密加密的远程 呈现图形数据的加密密钥可连同对其应使用该加密密钥的数据分组的范围的指示一起传 送给客户机。可协商加密密钥,使得可向客户机发送要用于将从给定时期接收的分组的一 组新的密钥。另外,每一分组可以与一唯一序号以及一唯一帧号相关联来进一步将密钥与适用 的数据分组相关联。在一个实施例中,可以使用无损连接将预定数量的加密密钥发送给客 户机,并且然后可将标识要用于解密远程呈现图形数据的密钥之一的选择传送给客户计算 机。在另一实施例中,可以提供服务器发送多个密钥的方案。可以通过向分组序号应用模 函数来选择特定密钥。当通过有损链路发送远程呈现图形数据时,在某些情况下,可能期望最大化插入 到MTU中的图形数据的量直到MTU限制。使用更多MTU容量可提供更大的效率,因为每一 分组将携带更多图形数据同时诸如首部或底层的每分组延迟等协议开销保持固定。更高的 效率可提供批量协议吞吐量的改进。此外,当分组丢失时,最小化需要重传的分组数量可能 是有利的,且因此减小分组之间的相互依赖性可能是有利的。由此,在某些实施例中,将数 据打包成分组使得每一分组尽可能独立地可处理且可解码可能是有利的。然而,在某些情况下,图形元素可被适合到一个以上MTU或少量MTU中。MTU的数 量可基于预期的或在链路上已检测到的损失水平来自适应。数据分组的大小可增大,但如 果分组丢失,则会丢失更多数据。另一方面,从批量压缩的观点来看,较小的分组也不压缩, 且因此可考虑上述因素来确定要放置在分组上的数据的量。在某些情况下,将图形元素的大小约束到MTU大小在可编码什么种类的图形元素 方面可能是限制的。例如,非压缩32x32位图可要求四倍WAN MTU的大小。如果期望编码 更大的图形元素,则在某些实施例中,可应用一算法,使得客户机可从多个MTU大小的分组 中重新组装这些元素。在这些情形中,如果包含图形数据的分组丢失,则重新组装原始图形 元素可能是不可行的,且包含专用于该元素的信息的任何其他分组可能必须被丢弃。如前所述,在某些实施例中,所公开的协议基于客户机将预期完全描述的帧的概 念。因此,客户机可跟踪对一帧接收到的区域。一旦客户机检测到开始了新帧,则客户机可初始化对应于整个屏幕的区域对象,且该区域对象可用于跟踪如所接收到的已编码数据所 表示的所接收的区域。当接收到更新时,客户机可从跟踪区域中减去更新所占据的区域。如 果接收到帧中的所有更新,则跟踪区域在本质上将是空的。如果区域不是空的,则客户机可 确定并没有接收到所有图形更新。在这一情况下,客户机可通过TCP控制信道向服务器请 求对该特定区域的刷新。帧内的某些屏幕元素,如未改变的矩形,可能很小且可被编码在单个PDU中。然 而,这一 PDU的丢失可能会导致客户机向服务器请求空矩形所描述的整个区域的更新。由 于涉及的多个屏幕区域,提供这一更新可能是高代价的。为避免此类分组丢失的后果,可能 期望为诸如描述未改变矩形的数据等元素发送重复的PDU。此处所公开的方法不限于诸如位图等特定类型的图形数据。所公开的方法可应用 于任何类型的图形对象。例如,该图形数据可包括要绘制的实体的描述。一般而言,无损信 道可用于向客户机通知将传送的数据的类型和性质以及渲染之后的预期结果。然后可在有 损信道上将实际图形数据传送到客户机,且客户机可将实际接收到的内容与渲染动作的结 果进行比较来确定是否遗漏了任何数据或在预期在接收到的数据中的内容或作为对数据 执行预期动作的结果之间是否存在不一致。在一个实施例中,客户机可记录任何未接收的 事务或未更新的屏幕区域,并向服务器通知该不一致。在其他实施例中,客户机作出某些智 能决策,如确定只有一小部分屏幕遗漏并确定等待更长时间来获得遗漏数据或确定不需要 该数据。上述技术可应用于多监视器场景。服务器上的组件可例如从服务器维护的视频呈 现网络信息中确定视频呈现路径的数量。每一视频呈现源可如上所述被提供一组视频数 据。如上所述,远程客户机可打开远程呈现会话。该会话可以与一虚拟机分区相关联, 其中某些服务由宿主分区来提供。在某些情况下,虚拟机可经由GPU被渲染到虚拟设备中。 用于远程客户机的虚拟机会话的渲染可通过使用另一虚拟机(父或宿主虚拟机)中的或许 多客虚拟机共享的远程机器(担当图形服务器)上的一个或多个GPU(真实或虚拟)加速 渲染来实现。父或宿主虚拟机上的图像捕捉组件可检索客户机屏幕图像的快照。所捕捉的 图像在传送到客户机之前可被任选地压缩和编码。压缩和编码可在宿主(父)虚拟机或子 或客虚拟机上发生。如上所述,可使用诸如远程桌面协议(RDP)等远程呈现协议来从远程 客户机连接到虚拟机并用于传送桌面图像。以此方式,远程用户可经由远程登录来体验远 程工作会话。在某些情况下,图形数据可在宿主虚拟机上生成,并且当客户机连接到客虚拟机 时,客虚拟机可能必须通过虚拟总线、映射的存储器或其他机制进行通信来从主机接收图 形数据,该图形数据进而被传送到客户机。这一设置可能引入会影响远程客户机的用户体 验的过度CPU/总线使用。由此,在各实施例中,进一步公开了允许客户机从主机直接接收 数据且因此消除了一部分等待时间的方法和系统。当在客户机和客虚拟机分区之间建立多个数据信道时,可能期望提供拆分传输链 路的机制。例如,参考图10,在典型的远程呈现协议中,服务器1000和客户机1010可通过 服务器-客户机连接1020来交换数据。在某些实施例中,该连接可以是TCP连接。然而, 在某些情况下,发送到客户机1010的至少一部分数据可实际起源于第三虚拟机1030上。在这一情况下,服务器1000可通过经由另一连接1050接收数据并将该数据从第三虚拟机 1030转发到虚拟机1010来担当隧道。通过以此方式来以隧道传送数据,到客户机1010的 数据流可能比在虚拟机1030将数据直接发送给客户机1010的情况下更低效。在一实施例 中,公开了客户机1010能建立到虚拟机1030的连接并通过虚拟机1030和客户机1010之 间的直接连接1040来直接接收数据的方法和系统。在另一实施例中,为了允许数据信道之间的更好的流控制,虚拟信道通信可在多 个连接上分开。在一实施例中,多个连接可包括TCP或UDP连接。诸如RDP协议等某些远 程呈现协议可提供一些机制,可通过这些机制经由UDP信道而非主TCP连接来发送远程呈 现数据(例如,音频数据)。由此,公开了允许远程客户机访问位于除了主远程呈现服务器之外的替换源上的 连接服务的至少一部分的各实施例。通常,远程呈现协议使用从一个客户机到一个服务器 的连接。使用此处所公开的机制,远程呈现连接可被认为是到一组服务器的一组连接,其中 一个服务器管理“主/标准”远程连接。所公开的机制可在各种场景中实现。例如,媒体流 可以由主存或流传送应被发送到客户机的多个监视视频的服务器直接发送到客户机。在某 些实施例中,可出于允许更好的流控制的目的来将远程呈现虚拟信道拆分成多个连接。对 于要通过数据信道传输的数据位于宿主虚拟机分区中而远程端点位于客虚拟机分区上的 情况,某些实施例可在虚拟机环境中实现。参考图11,远程客户机1100必须访问宿主虚拟机的主机分区1110上可用的图形 数据。然而,实际连接1120在远程呈现服务器1140内的客操作系统1130中终止。通常在 这一情况下,位于客OS 1130中的远程呈现服务器1140将必须实际担当主操作系统图形 编码器1150和客户机1100之间的代理。这一安排可能引入性能问题,因为代理数据需要 主-客虚拟机总线1160上的额外的往返。在各实施例中,该往返可通过指示客户机直接连 接到位于主操作系统中的远程呈现组件来消除。在一个实施例中,如图12所示,可执行以下步骤来使得图形编码器能够建立到客 户机的连接。以下步骤假定已经在客户机和服务器之间建立了使用TCP的远程呈现连接。首先,图形编码器可以向信道管理器发送建立到客户机的连接的请求1200。信道 管理器然后可收集主操作系统侧IP/端口信息1210并将该IP/端口 1220发送到客虚拟机 分区中的远程呈现服务器。客分区中的远程呈现服务器然后可将主操作系统IP/端口信息1230发送到客户 机,并指示客户机打开到主机1240的TCP连接。客户机可使用所接收的IP/端口信息来连 接1250到主操作系统中的信道管理器。现在参考图13,如果客户机-主机连接是成功的1300,则可执行以下动作客户机可向信道管理器1310发送指示TCP连接应用于什么虚拟信道的分组。客 户机然后可告知1320远程呈现服务器,打开了到主操作系统端点的直接TCP连接。连接信 息可通过客户机-客机连接(client-to-guest connection)来发送。在一实施例中,客户 机可发送提供该信息的控制分组。远程呈现服务器可将连接已建立的指示1330转发到主分区上的信道管理器。在 一个实施例中,该指示可以是“信道打开”消息。信道管理器可告知主分区上的图形编码器 1340,信道已打开。
18
如果客户机-主机连接失败,则可执行以下动作客户机可告知远程呈现服务器1350,直接连接已失败。远程呈现服务器然后可将 连接失败事件1360转发到主分区侧信道管理器。主分区侧信道管理器可告知图形编码器 1370,虚拟信道已打开。连接信息可通过客户机-客机连接来发送。主分区侧可任选地向图形编码器1380告知虚拟信道未直接连接到客户机的事 实。图形编码器因此可被告知,虚拟信道可能经历某一额外的等待时间。任选地,主分区 可显式地向图形编码器告知等待时间问题。图形编码器也可选择应用可通过以更高速率 (通过更多CPU周期或更高损失水平)来压缩发送到主机的图形数据来补偿主/客编排 (marshaling)的算法。主分区信道管理器然后可将任何虚拟信道数据1390转发到远程呈现服务器,使 得服务器可通过预先建立的远程呈现连接来代理到客户机的虚拟信道数据。在一实施例中,可提供对于信道管理器的客组件和主组件。连接成功信息可通过 客组件在初始的主-客连接上接收的分组或通过主机上的实际TCP连接来传播到主机侧。在某些实施例中,所描述的机制可以在客户机、服务器和图形编码器位于互连的 物理机器上的配置中实现。这些机制也可在多个数据编码器/生产者使用一个或多个TCP 链路来与客户机直接交换数据的配置中实现。参考图14,所示是虚拟信道通信被拆分在多个TCP连接1400、1410、1420上的示例 体系结构。虚拟信道通信可被拆分来改进例如音频信道1420和图形信道1410之间的流控 制。流控制因音频数据分组通常要小于图形分组且如果它们被拆分在分开的TCP信道上则 音频数据可能在没有延迟的情况下到达客户机的事实而产生。如果没有这一拆分,则音频 分组可能必须等待直到发送了较大的分组,这导致难以给予音频数据优先级。此外,较大的 分组往往会遇到更多丢失,从而对于包含图形分组的TCP链路的等待时间将更高。以上描 述的方法可在增加将实际虚拟信道连接到与主远程呈现连接相同的虚拟机的情况下应用。 在这一情况下,可能期望信道管理器与标准远程呈现服务器共享端口 /IP。当信道管理器与标准远程呈现服务器共享端口 /IP时,可能必须在标准传入远程 呈现连接和虚拟信道端点连接之间进行区分。在一实施例中,这可通过使用标准远程呈现 预连接协议来将连接标识为虚拟信道连接来实现。将TCP传入连接与虚拟信道配对所必需 的信息也可在预连接期间使用例如客户机在为标准RDP连接发送的第一分组中传递的标 志来交换。图15描绘了用于将远程呈现数据传送到客户计算机的示例性操作过程,包括操 作1500、1502、1504和1506。参考图15,操作1500开始该操作过程,并且操作1502示出了 建立与客户计算机的第一连接,该第一连接是使用由有保证的分组递送和分组次序来表征 的无损协议来建立的。操作1504示出确定远程呈现数据包括第二数据源提供的数据。操作 1506示出与客户计算机协商连接能力来确定客户计算机能支持第二连接,以及建立与数据 源的第二连接,其中该第二连接是使用由有保证的分组递送和分组次序表征的无损协议和 由无保证的分组递送和分组排序表征的有损协议之一来建立的。操作1508示出指示客户 计算机使用第二连接接收由数据源提供的所述数据。图16描绘了用于向客户计算机传送远程呈现数据的示例性系统。参考图16,系 统1600包括处理器1610和存储器1620。存储器1620还包括被配置成向客户计算机传送
19远程呈现图形数据的计算机指令。框1622示出了在第一数据源和客户计算机之间建立第 一连接,该第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的。框 1624示出与客户计算机协商连接能力来确定客户计算机能支持第二连接,以及建立与第二 数据源的第二连接,其中该第二连接是使用由有保证的分组递送和分组次序表征的无损协 议和由无保证的分组递送和分组排序表征的有损协议之一来建立的。框16 示出使用第 一和第二连接来管理客户计算机用于接收远程呈现数据的数据信道之间的数据流控制。上述各方面的任一个可以用方法、系统、计算机可读介质或任何类型的制造来实 现。例如,按照图17,计算机可读介质可存储用于使用第一和第二连接来管理客户计算机用 于接收远程呈现数据的数据信道之间的数据流控制的计算机可执行指令。这些媒体可包括 用于建立与客户计算机的第一连接的第一指令子集,该第一连接是使用由有保证的分组递 送和分组次序来表征的无损协议来建立的1710 ;用于与客户计算机协商连接能力来确定 客户计算机能支持第二连接并建立第二连接的第二指令子集,其中该第二连接是使用由有 保证的分组递送和分组次序表征的无损协议或由无保证的分组递送和分组排序表征的有 损协议之一来建立的1717 ;以及用于使用第一和第二连接来向客户计算机发送远程呈现 数据的第三指令子集。本领域的技术人员可以理解,可使用其他指令集来捕捉此处公开的 各种其他方面,并且目前所公开的三个指令子集的细节可以按照本公开内容来变化。上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这 些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图 或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合 来单独地和/或共同地实现。应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组 合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、 CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的 形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本 发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处 理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设 备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实 现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言 来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。 在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以 理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范 围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地 规定了限于单数。
权利要求
1.在包括处理器和存储器的计算系统中,一种用于向客户计算机传送远程呈现数据的 方法,所述方法包括在第一数据源和所述客户计算机之间建立第一连接,所述第一连接是使用无损协议来 建立的;确定所述远程呈现数据包括第二数据源提供的数据;与所述客户计算机协商连接能力来确定所述客户计算机能支持第二连接,与所述第二 数据源建立所述第二连接,其中所述第二连接是使用无损协议或有损协议之一来建立的; 以及指示所述客户计算机使用所述第二连接来接收由所述第二数据源提供的所述数据。
2.如权利要求1所述的方法,其特征在于,所述无损协议是TCP,所述有损协议是UDP。
3.如权利要求1所述的方法,其特征在于,还包括终止所述第二连接,使用所述第一连 接来传送所述远程呈现数据来作为退路传送方法。
4.如权利要求1所述的方法,其特征在于,所述第二数据源提供的所述数据包括图形 数据。
5.如权利要求1所述的方法,其特征在于,所述建立第二连接包括接收关于所述第二 数据源的连接信息并将所述连接信息发送到所述第一数据源。
6.如权利要求5所述的方法,其特征在于,所述建立第二连接还包括将所述连接信息 发送到所述客户计算机,并指示所述客户计算机使用所述连接信息来建立所述第二连接。
7.如权利要求6所述的方法,其特征在于,所述建立第二连接还包括从所述客户计算 机接收要与所述第二连接相关联的数据信道的指示。
8.如权利要求1所述的方法,其特征在于,所述建立第二连接是由信道管理器来管理的。
9.如权利要求8所述的方法,其特征在于,所述信道管理器位于所述第一数据源上。
10.如权利要求8所述的方法,其特征在于,所述信道管理器位于所述第二数据源上。
11.一种被配置成向客户计算机传送远程呈现数据的系统,包括至少一个处理器;以及通信耦合到所述至少一个处理器的至少一个存储器,所述存储器中存储有计算机可执 行指令,所述计算机可执行指令用于在第一数据源和所述客户计算机之间建立第一连接,所述第一连接是使用由有保证的 分组递送和分组次序表征的无损协议来建立的;与所述客户计算机协商连接能力来确定所述客户计算机能支持第二连接,与第二数据 源建立所述第二连接,其中所述第二连接是使用由有保证的分组递送和分组次序表征的无 损协议或由无保证的分组递送和分组排序表征的有损协议之一来建立的;以及使用所述第一和第二连接来管理所述客户计算机用于接收所述远程呈现数据的虚拟 信道之间的数据流控制。
12.如权利要求11所述的系统,其特征在于,所述远程呈现数据包括由第二数据源提 供的数据。
13.如权利要求11所述的系统,其特征在于,所述虚拟信道之一包括音频信道。
14.如权利要求11所述的系统,其特征在于,所述虚拟信道之一包括视频信道。
15.如权利要求12所述的系统,其特征在于,还包括与所述客户计算机协商连接能力来确定所述客户计算机能支持第三连接,建立所述第 三连接,其中所述第三连接是使用由有保证的分组递送和分组次序表征的无损协议或由无 保证的分组递送和分组排序表征的有损协议之一来建立的;以及使用所述第一、第二和第三连接来将数据流定向到所述客户计算机。
16.一种存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用 于在客户计算机上接收远程呈现数据,所述指令用于建立与所述客户计算机的第一连接,所述第一连接是使用由有保证的分组递送和分组 次序表征的无损协议来建立的;与所述客户计算机协商连接能力来确定所述客户计算机能支持第二连接,建立所述第 二连接,其中所述第二连接是使用由有保证的分组递送和分组次序表征的无损协议或由无 保证的分组递送和分组排序表征的有损协议之一来建立的;以及使用所述第一和第二连接来向所述客户计算机发送所述远程呈现数据。
17.如权利要求16所述的计算机可读存储介质,其特征在于,还包括使用所述第一和 第二连接来管理所述客户计算机用于接收所述远程呈现数据的数据信道之间的数据流控 制。
18.如权利要求17所述的计算机可读存储介质,其特征在于,所述建立第二连接包括 接收关于另一数据源的端口信息,并将所述端口信息发送到一数据源。
19.如权利要求18所述的计算机可读存储,其特征在于,所述建立第二连接还包括将 所述端口信息发送到所述客户计算机,并指示所述客户计算机建立所述第二连接。
20.如权利要求17所述的计算机可读存储介质,其特征在于,所述建立第二连接还包 括从所述客户计算机接收要与所述第二连接相关联的虚拟信道的第一指示以及已建立所 述第二连接的第二指示。
全文摘要
本发明提供了一种多链路远程协议。在各实施例中,允许远程客户机访问位于除了主远程呈现服务器之外的替换源上的连接服务的至少一部分。在某些实施例中,可出于允许更好的流控制的目的来将远程呈现虚拟信道拆分成多个连接。对于要通过数据信道传输的数据位于主虚拟机分区中而远程端点位于客虚拟机分区上的情况,某些实施例可在虚拟机环境中实现。
文档编号H04L29/06GK102137151SQ20111003121
公开日2011年7月27日 申请日期2011年1月21日 优先权日2010年1月22日
发明者N·K·斯里尼瓦斯, N·Y·阿布多, V·K·斯托亚诺夫, W·R·舒米德尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1