远程内容分类以及使用多个传输信道的传输的制作方法

文档序号:7610233阅读:144来源:国知局
专利名称:远程内容分类以及使用多个传输信道的传输的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及远程内容分类以及使用多个传输信道的传输。
背景技术
远程计算系统可使用户能够远程地访问托管资源。远程计算系统上的服务器可执行程序并将指示用户界面的信号发送到可通过经由符合诸如TCP/IP协议等通信协议的网络发送信号来连接的客户机。可向每个连接客户机提供远程呈现会话,即,包括一组资源的执行环境。每个客户机可向服务器发送指示用户输入的信号并且服务器可将该用户输入应用于合适的会话。客户机可使用诸如远程桌面协议(RDP)等远程呈现协议来连接到服务器资源。在远程呈现会话期间,单个传输信道通常被用于发送所有数据元素。此单个信道进而通常仅针对一种类别或类型的数据递送来最优化。结果,如果特定数据元素不是信道为之进行最优化的类别或类型,则可能不满足该数据元素的一些递送约束,由此导致负面的用户体验。

发明内容
在各个实施例中,公开了用于在客户机与服务器之间实现多个传输信道的方法和系统。信道中的每一个可适于高效通信特定数据类型的数据,且由此尤其很好地适合于其数据元素特性以及检测到的客户机与服务器之间的链路特性。在一个实施例中,远程显示和体验数据可被分成具有类似传输递送需求的元素集合,且独立传输信道可被用于其递送。在一些实施例中,数据元素特性和测得的传输特性可用于选择信道类型以及进一步最优化信道以满足递送需求。在另一实施例中,可基于每个信道的需求在多个信道之间分配资源。此外,可基于变化的网络条件和数据元素需求来连续地调节每个信道的特性。在一些实施例中,可提供用于在客户机与服务器之间存在多条信道的情况下确定可靠链路特性的能力。


参考附图来进一步描述根据本说明书的用于在虚拟环境内更改视图观点的系统、 方法和计算机可读介质,在附图中图1和2描绘其中可实现本发明的各方面的示例计算机系统。图3描绘了用于实践本发明的各方面的操作环境。图4描绘了用于实践本发明的各方面的操作环境。图5示出了包括用于实现远程桌面服务的电路的计算机系统。图6示出了包括用于实现远程服务的电路的计算机系统。图7示出了包含此处所公开的方法的各方面的示例体系结构。
图8示出划分所捕捉的帧的示例。图9示出了包含此处所公开的方法的各方面的示例体系结构。图10示出了包含此处所公开的方法的各方面的示例体系结构。图11示出了用于处理要传输到客户计算机的图形数据的操作过程的示例。图12示出了用于结合本发明的各方面的示例系统。图13示出了承载参考图1-12讨论的计算机可执行指令的计算机可读介质。
具体实施例方式概括的计算环境在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。各实施例可在一个或多个计算机上执行。图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、磁盘驱动器洲和光盘驱动器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))传送到远程桌面服务器上的应用。该应用如同该输入是在远程桌面服务器处送入的那样来处理该输入。该应用响应于所接收到的输入生成输出,并且该输出通过网络传送到客户计算机系统。客户计算机系统呈现输出数据。由此, 在客户计算机系统处接收输入并呈现输出,而处理实际上是在远程桌面服务器处发生的。 会话可包括诸如桌面之类的外壳和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。在另一示例实施例中,会话可包括应用。在该示例中,当呈现应用时,桌面环境仍可被生成并对用户隐藏。应当理解,前述讨论是示例性的,且当前公开的主题可以在各种客户机/服务器环境中实现且不限于特定远程桌面服务产品。即使不是全部,也是在大多数远程桌面环境中,输入数据(在客户计算机系统处输入)通常包括表示给应用的命令的鼠标和键盘数据,且输出数据(由远程桌面服务器处的应用生成)通常包括用于在视频输出设备上显示的视频数据。许多远程桌面环境还包括扩展成传输诸如音频、打印命令、剪贴板等其他数据类型的功能。
可使用通信信道来通过允许插件经由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或 242。一般而言,客操作系统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来监听特定端口上的连接消息,并将这些消息转发到会话管理器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)等非基于流的协议来解决上述问题的方法。在一个实施例中,可提供辅助UDP连接来用于传送图形数据。图7描绘了远程桌面服务器710和远程客户机700之间的连接。在典型的远程呈现配置中,客户机和服务器通过无损链路720交换信息。这一信息可包括控制和图形数据两者。在一实施例中,有损链路730被添加到客户机和服务器之间的连接。有损链路730可用于交换图形数据。无损链路720可用于控制类型的数据,如加密密钥列表或位图高速缓存确认。在一个实施例中,可以与客户计算机建立第一连接,该第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的。然后可以与客户计算机确立连接能力来确定客户计算机和/或图形源是否能支持第二连接。该第二连接可使用由无保证的分组递送和分组排序表征的有损协议。如果两个端点都能支持第二连接,则可建立第二连接。一旦建立,则可使用第一连接来管理向客户计算机的图形数据传送,并且可使用第二连接来将远程呈现图形数据传送到客户计算机。由此,在某些实施例中,可建立使用诸如TCP等无损协议的第一连接,并且任选地,端点可协商来建立使用例如UDP的第二有损链路来更高效地传送图形数据。另外地或任选地,可终止第二连接,并且可使用第一连接来传送远程呈现图形数据作为退路传送方法。例如,如果网络改变从而无法容忍对第二连接的使用,或者如果因为例如有损链路无法穿越防火墙而引发连接性问题,则远程呈现会话可被降级到仅使用第一连接来作为退路。在某些实施例中,该退路机制可自动发生。在无损链路上维持控制信道而通过有损信道传送数据以便交换关于有损链路的状态的信息是有利的。例如,使用该控制信道,端点可交换关于连接是否已被关闭的信息, 以及以其他方式管理连接,如管理连接的生存期。在某些实施例中,客户机可向服务器发送关于任何预期数据是否未被接收到的反馈。在一个实施例中,服务器或图形源可使用第一连接从客户计算机接收描述未接收到的远程呈现图形数据的反馈。响应于该反馈,服务器或图形源可通过第二(有损)连接来传送未接收到的远程呈现图形数据。由此,在某些实施例中,在数据损失问题的情况下,服务器或图形源可以只发送客户机所指示的任何未接收的分组,而非重传该数据的大部分。在某些实施例中,服务器或图形源可以等待预定时间段来获得对接收到的数据的确认。如果没有确认,则服务器或图形源可以假定未确认的数据分组丢失且需要重传。在各实施例中,要传送的数据类型可被分成两个类别。一个类别可包括不应使用有损链路的数据,如安全握手或能力协商。第二个类别可包括可使用有损链路的数据,如视频数据。第一类别还可包括用于管理有损数据的数据,如指示未接收到客户机屏幕的特定片断的数据。第一类别可以使用一般可被表征为保证数据递送并提供数据分组次序的指示的无损链路的主链路。无损协议可以是一般可被表征为具有无损语义的协议的任何类型的协议。这些协议可提供以下功能中的一个或多个递送验证、丢失数据重传、以及数据分组的隐式或显式排序。用于远程桌面呈现的较高级协议包括此处出于说明目的而使用的远程桌面协议(RDP)。然而,所公开的概念和方法可结合其他远程呈现协议来使用。图8描绘了被分成矩形瓦片(tile)的用户桌面的示例用户屏幕800。桌面可按相等大小的位图来“瓦片化”,这些位图然后可被表示为帧。在该示例中,加深的瓦片810和 820表示已改变且要被发送到客户机的瓦片。由此,在这一情况下,要发送到客户机的帧将包含两种类型的图形元素。未改变的瓦片可被表示为空矩形。已改变的瓦片可实际作为已编码位图来发送。此处所公开的方法不限于诸如位图等特定类型的图形数据。所公开的方法可应用于任何类型的图形对象。例如,该图形数据可包括要绘制的实体的描述。一般而言,无损信道可用于向客户机通知将传送的数据的类型和性质以及渲染之后的预期结果。然后可在有损信道上将实际图形数据传送到客户机,且客户机可将实际接收到的内容与渲染动作的结果进行比较来确定是否遗漏了任何数据或在预期在接收到的数据中的内容或作为对数据执行预期动作的结果之间是否存在不一致。在一个实施例中,客户机可记录任何未接收的事务或未更新的屏幕区域,并向服务器通知该不一致。在其他实施例中,客户机作出某些智能决策,如确定只有屏幕的一小部分遗漏并确定为遗漏数据等待更长时间或确定不需要该数据。上述技术可应用于多监视器场景。服务器上的组件可例如从服务器维护的视频呈现网络信息中确定视频呈现路径的数量。每一视频呈现源可如上所述被提供一组视频数据。如先前所提及的,在远程/虚拟桌面环境中,图形数据通常在主分区上呈现,并且在对数据应用了某一形式的压缩之后使用诸如RDP等远程呈现协议来将其传输到客户机。 图形数据通常由对数据损失或传输延迟有不同容限的各个元素构成。另外,整体远程桌面体验可包括其他元素,这些其他元素对递送可靠性和传输延迟的需求有差异。图9示出了此显示和体验元素的一些示例。客户计算机处的远程桌面900可通过诸如远程桌面服务器等主机经由通信会话910来建立。多个显示和体验元素920可包括 远程协议控制数据,其需要可靠和按顺序递送。远程协议控制数据需要被快速递送,但是数据可不具有实时约束。 用户输入数据(例如,键盘/鼠标),其需要可靠和按顺序递送。用户输入数据也需要被快速递送以维护响应性。 视频回放,其需要快速递送和一致吞吐量,但是可容忍损失和失序递送。 音频回放,其需要快速/实时递送,但是可容忍损失和失序递送。 打印机数据,其需要可靠和按顺序递送。然而,打印机数据在递送期间可容忍较高延迟。在远程呈现会话期间,单个传输信道通常被用于发送所有数据元素。此单个信道进而通常仅针对一种类别或类型的数据递送来最优化。结果,如果特定数据元素不是信道为之进行最优化的类别或类型,则可能不满足该数据元素的一些递送约束,由此导致负面的用户体验。例如,如果所有数据元素被迫使用保证可靠和按顺序递送的基于TCP的传输信道,则来自IP语音(VOIP)呼叫的音频数据可能不被实时递送,从而导致远程用户的对话延迟。在各个实施例中,公开了用于取决于正被传送的数据元素在客户机与服务器之间实现附加传输信道的方法和系统。例如,参看图10,可与远程桌面客户机1010建立传输信道1000。附加信道1000中的每一个可适于高效地传达特定数据类型的数据,由此尤其很好地适用于其数据元素特性(例如,正被传送的视频的比特率)以及客户机与服务器之间的所检测的链路特性(例如,带宽、等待时间、损失、中间代理的存在性)。在一个实施例中,远程显示和体验数据可被分成具有类似传输递送需求的元素集合,且独立传输信道可被用于其递送。在一些实施例中,数据元素特性和测得传输特性可被用于选择信道类型(例如,TCP对UDP),并且可用于进一步最优化信道以满足递送需求(例如,将一些纠错形式添加到UDP)。在另一实施例中,可基于每个信道的需求在多个信道之间分配资源(诸如可用带宽)。此外,可基于变化的网络条件和数据元素需求来连续地调节每个信道的特性。在一些实施例中,可提供用于在客户机与服务器之间存在多个信道的情况下确定可靠链路特性的能力。因而,在各个实施例中,公开了标识数据元素、确定其传输特性、按需为数据元素创建新数据信道、以及最优化所创建的信道的系统。再次参看图10,在示例实现中,数据元素分类器1020可以是远程数据处理程序1030的一部分,该远程数据处理程序处理所述显示和其他体验数据以便在服务器与客户机之间传输。数据元素分类器1020可检查来自应用1040的远程数据,并根据数据的特性和传输需求将远程数据划分成数个集合。这种分类的示例在下表中示出。集合1 视频流
权利要求
1.一种用于从计算设备(710)向客户机计算设备(700)传送远程呈现数据的方法,所述方法包括使用第一和第二连接来与所述客户机计算设备建立(110 远程呈现会话(900),其中所述第一和第二连接是使用不同的数据递送特性来建立的(1000);确定(1104)所述第一和第二连接的链路特性,以及对要发送给所述客户机计算设备的所选信息的内容进行分类;基于所述分类(1020)以及所述链路特性来选择(1106)所述第一和第二连接中的一条;以及使用所选连接来将所选信息传送(1108)给客户机计算设备。
2.如权利要求1所述的方法,其特征在于,还包括终止所述第二连接,以及使用所述第一连接来传送所述远程呈现数据来作为退路传输方法。
3.如权利要求1所述的方法,其特征在于,还包括建立与所述计算设备的附加连接,其中所述附加连接中的每一条是使用不同的数据递送特性来建立的。
4.如权利要求1所述的方法,其特征在于,还包括监视所述第一和第二连接,以及基于所述连接的链路特性来调节所述选择。
5.如权利要求1所述的方法,其特征在于,还包括根据至少一种数据类型来适应所述第一和第二连接中的每一条。
6.如权利要求1所述的方法,其特征在于,所述链路特性包括比特率。
7.如权利要求1所述的方法,其特征在于,所述链路特性包括宽带、等待时间、损失、以及中间代理的存在性。
8.如权利要求1所述的方法,其特征在于,还包括将远程呈现数据分成具有相似传输递送需求的数据集合。
9.一种配置成向客户计算机传送远程呈现数据(920)的系统(1200),包括至少一个处理器(1210);以及当所述系统运行时通信地耦合到所述至少一个处理器的至少一个存储器(1220),所述存储器具有存储于其中的计算机可执行指令,所述计算机可执行指令在由所述处理器执行时,使得使用多条连接与客户计算机建立远程呈现会话(1222),其中建立的所述多条连接各自提供不同的数据递送特性(1000);基于所选信息的内容的数据递送特性来对要发送给客户计算机的所述内容进行分类 (1224);基于所述分类以及所述多条连接的链路特性来选择所述多条连接中的一条(1226);以及使用所选连接来将所选信息传送给所述客户机计算设备(1228)。
10.一种其上存储有计算机可执行指令的计算机可读存储介质(1300),所述计算机可执行指令用于在客户计算机上接收远程呈现数据,所述指令用于使用多条连接与远程呈现图形源建立远程呈现会话(1310),其中所述多条连接是各自使用不同的数据递送特性来建立的(1000);接收对所述多条连接中的一条的选择,其中所述选择是基于要在所述客户计算机处接收的所选信息的内容以及所述多条连接的链路特性(131 ;以及使用所选连接接收所选信息(1314)。
全文摘要
本文描述了远程内容分类以及使用多个传输信道的传输。在各个实施例中,公开了用于在客户机与服务器之间实现多个传输信道的方法和系统。信道中的每一个可适于高效通信特定数据类型的数据,且由此尤其很好地适合于其数据元素特性以及检测到的客户机与服务器之间的链路特性。
文档编号H04L29/08GK102196033SQ201110063270
公开日2011年9月21日 申请日期2011年3月7日 优先权日2010年3月8日
发明者G·E·法格, G·斯瓦米纳桑, N·Y·阿布多, R·马哈简 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1