用于远程呈现会话的高效连接和路由的技术的制作方法

文档序号:7702535阅读:195来源:国知局
专利名称:用于远程呈现会话的高效连接和路由的技术的制作方法
技术领域
本发明涉及计算机交互,尤其涉及远程呈现会话部署。
背景技术
虽然计算机曾经一度是孤立的并且与其他计算机具有最小的或很少的交互,但是现在计算机通过局域网(LAN)、广域网(WAN)、拨号连接等等与各种各样的其他计算机进行交互。随着因特网 计算机网络的广泛增长,计算机之间的连接已经变得更加重要并且已经开发了许多新的应用和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。联网的一种日益增加的流行形式一般被称为远程呈现,其能使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)、以及其他协议等协议与远程客户机共享桌面和其他应用。这样的计算系统通常将来自客户机的键盘按压和鼠标点击或选择传送到服务器,通过网络连接(例如,因特网 )将屏幕更新转播回其他方向。由此,当实际上仅仅向客户机设备发送如在服务器侧上出现的应用的屏幕截图时,用户具有好像他们的机器正在本地执行应用的体验。在要并发地提供许多远程呈现会话的环境中,诸如对于大型公司,这些远程呈现会话可由通常被称为服务器场或部署的编组在一起的多个服务器或者一个物理服务器上的多个虚拟机(VM)来提供。该部署的各服务器可以扮演不同的角色或角色服务(角色被配置成为网络中的多个用户或其他计算机执行特定功能)。例如,一个服务器可以担当将传入的远程呈现会话请求分配给提供远程呈现会话的其他服务器的连接中介。远程呈现会话部署(如,虚拟化桌面基础结构,即VDI部署)可能需要这些角色中的多个角色才能使该部署发挥作用。在VDI上下文中,例如,可存在(1)被配置成虚拟机重定向器的远程桌面服务主机(RDSH)角色,它接受来自客户机的传入的远程呈现会话连接; (2)确定多个远程呈现服务器(以及可能服务器中的多个VM)中的与该客户机进行该远程呈现会话的服务器的远程桌面连接中介(RDCB);以及(3)向该客户机扮演远程呈现服务器的远程桌面虚拟化主机(RDVH)。从客户机传入的建立远程呈现会话的连接在RDSH角色处被接收,并随后被路由到RDBC。在RDCB处,建立过程被分解成若干阶段——仲裁、负载平衡、以及布置。RDCB随后将呼叫重新路由到RDVH,以通过使VM在线并确保该VM准备好接受远程呈现会话连接来完成配合的最终阶段。这样的部署的复杂性是由功能跨多个角色分布而引起的,这使得部署这种基础结构非常困难。使这一复杂性更甚的是,诊断具有跨若干机器边界(虚拟机边界或物理机边界)的多跳的给定连接的难度使得难以监视并诊断连接故障。

发明内容
因此,修改远程呈现会话部署以将这样的部署的各个角色组合在一个机器中(执行“合并角色”的功能的那一个机器)将是一个改进。用于部署的这一连接和路由模型的合并和简化可以基于执行合并角色的服务器上可用的信息的聚集,该信息的聚集是因为该服务器还主存提供远程呈现会话的VM而引起的。连接和路由模型的这一合并不仅简化了该系统(如通过消除对连接中介的需求),而且还使该系统能够执行先前不能执行的功能。例如,该经合并的系统可以通过从客户机到系统的单个连接来起作用,其中合并角色担当客户机与主存同该客户机的远程呈现会话的VM之间的代理或路由器。在一实施例中,服务器包括合并角色。客户机连接到合并角色以建立远程呈现会话。合并角色在可提供远程呈现会话的服务器上的多个VM之间确定一 VM。合并角色通过执行该合并角色的服务器上可用的信息的聚集来确定这一点。这一信息可以由于该服务器还主存提供远程呈现会话的VM而被聚集。合并角色向客户机发送将提供该客户机的远程呈现会话的VM的指示,并且该客户机联系该VM以建立远程呈现会话。在另一实施例中,合并角色担当客户机和VM之间的远程呈现会话中的通信的路由器或代理。在从客户机接收到连接建立消息并确定了提供该客户机的远程呈现会话的VM 之后,合并角色在该合并角色与该VM之间构造完整的远程呈现会话连接,并且担当该客户机与该VM之间的远程呈现会话通信的路由器或代理。在这样做时,客户机不必分开建立与 VM的远程呈现会话连接。在一实施例中,合并角色通过使用共享资源来对客户机与VM之间的通信进行路由。远程呈现会话协议栈在合并角色与VM之间划分。合并角色随后通过沿所划分的远程呈现会话协议栈“向上”发送信息到VM或接收从VM沿所划分的远程呈现会话协议栈“向下” 发送的信息来与VM进行通信。在一实施例中,部署包括包含合并角色的多个服务器。客户机连接到合并角色之一以建立远程呈现会话。这一合并角色可以定位其服务器上的用于提供远程呈现会话的 VM,或在没有VM可用的情况下与中介进行通信以寻找另一服务器上的VM。该中介与多个服务器进行通信并且将向合并角色发送将向客户机提供远程呈现会话的第二服务器的身份。 合并角色接收这一信息并将其发送给客户机。客户机随后联系这一第二服务器来进行远程呈现会话。如此处所描述的,除非在讨论特定机器时清楚地指明,否则机器可以是物理机或虚拟机。本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。


参考附图来进一步描述用于高效的远程呈现会话连接和路由的系统、方法和计算机可读介质,在附图中图1示出了可在其中体现了在此描述的技术的示例性通用计算环境。图2描绘其中可实现本公开的各方面的示例远程呈现会话服务器。
图3描绘客户机和包括多个角色的部署之间的示例远程呈现会话连接建立,其中每一角色在单独的机器上运作。图4描绘根据本发明的技术的被合并在一个机器上的多个角色。图5描绘客户机和包括合并角色的服务器之间的示例远程呈现会话连接建立。图6描绘客户机和包括合并角色的服务器之间的替换示例远程呈现会话连接建立。图7A描绘根据图6的远程呈现会话服务器的、合并角色与VM之间的使用TCP/IP 连接的远程呈现会话通信。图7B描绘根据图6的远程呈现会话服务器的、合并角色与VM之间的使用共享资源连接的远程呈现会话通信。图8描绘客户机和各自包括合并角色的多个服务器之间的示例远程呈现会话连
接建立。
具体实施例方式图1是在其中可实现在此描述的技术的通用计算设备的框图。图1及以下讨论旨在提供可在其中实现本发明的合适计算环境的简要概括描述。贯穿本发明使用的术语“电路”可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,这些指令将可用于执行从例如RAM(在此称为“系统存储器”)、ROM、固件和/或大容量存储等存储器加载的功能的逻辑具体化。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器 102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联, 系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM) 104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118 (例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、 闪存卡、数字视频盘和柏努利盒式磁带。
计算机可读存储介质110可以为计算机100提供对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储,实现管理器250的可执行指令在以下附图中描述。基本输入/输出系统(BIOS) 120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118 上,并且可由逻辑处理器102来执行。命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由接口来连接到系统总线,所述接口是诸如视频适配器等可以是具有对于视频存储器的访问的图形处理器(GPU) 112的一部分或可连接到该图形处理器112。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡(NIC)114 连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中, 相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。现在参照图2,其一般描绘其中可实现本公开的各方面的示例环境。本领域技术人员可理解,示出图2所描绘的示例元素是为了提供用于描述本公开的操作框架。因此,在一些实施例中,每个环境的物理布局可取决于不同的实现方案而有所不同。因此,该示例操作框架将仅被视为说明性的且不以任何方式限制权利要求的范围。本领域技术人员还可明白以下讨论是介绍性的。一般地,图2描绘了可被配置成包括本公开的各方面的服务器环境的高级概览。 参照该图,描绘了服务器204,其可包括配置成实现远程呈现会话服务器的电路,或者在其他实施例中,服务器204可包括配置成支持远程桌面连接的电路。在所描绘的示例中,服务器204可被配置成生成用于连接客户机的一个或多个会话,诸如会话1到N(其中N是大于 2的整数)。简言之,在本公开的示例实施例中,会话一般可包括由配置成与服务器204的内核214交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。会话可由服务器204在逐个用户的基础上生成,例如在服务器204通过网络连接接收来自客户机201的连接请求时由服务器204生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。在一些实施例中,传输逻辑210可包括网络适配器、可被配置成接收连接消息并将其转发给引擎212的固件和软件。如图2所示,在一些实施例中,传输逻辑210可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户界面输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心对4。继续图2的一般性描述,在本发明的一些示例实施例中,引擎212可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎212可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,一些示例实施例中,该电路在可包括存储器以及配置成执行实现引擎212的代码的处理器。如图2所描绘地,在一些情况下,引擎212可接收连接请求并确定例如许可证可用,并且可为该请求生成会话。在服务器204是包括远程桌面能力的远程计算机的情形中,引擎212可被配置成响应于连接请求生成会话而不检查许可证。如图2所示,会话管理器216可被配置成接收来自引擎212的消息,并且响应于该消息,会话管理器216可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程的实例。如图2所示,会话管理器216可实例化诸如运行时子系统240之类的环境子系统, 该子系统可包括诸如会话核心244之类的内核模式部分。例如,在一实施例中,环境子系统被配置成将一些服务子集展示给应用程序并向操作系统214的内核提供接入点。在示例实施例中,运行时子系统240可控制进程和线程的执行,并且会话核心244可向内核214的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心244 可包括图形显示界面246 (⑶I)、安全子系统250和输入子系统252。在这些实施例中,输入子系统252可被配置成经由与该会话相关联的协议栈实例接收来自客户机201的用户输入并将该输入传送给合适会话的会话核心对4。在一些实施例中,用户输入可包括指示绝对和 /或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心244接收,并且输入子系统252可被配置成确定图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。除了接收来自客户机201的输入之外,可从应用和/或桌面接收绘制命令并由GDI 246来处理。⑶I 246—般可包括能生成图形对象绘制命令的进程。在该示例实施例中,⑶I 246可被配置成将其输出传递给远程显示子系统254,在那里,针对附连到该会话的显示驱动器,命令被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到服务器204, 例如在远程桌面情形中。在这些示例实施例中,远程显示子系统2M可被配置成对由远程计算机系统的显示驱动器呈现的绘制命令制作镜像,并经由与该会话相关联的栈实例将镜像信息传送给客户机201。在服务器204是远程呈现会话服务器的另一示例实施例中,远程显示子系统2M可被配置成包括可不与物理上附连到服务器204的显示器相关联的虚拟显示驱动器,例如服务器204可无头地(headless)运行。在该实施例中,远程显示子系统 254可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机201。在本公开的实施例中,远程显示子系统邪4可被配置成确定每个显示驱动器的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动器的显示分辨率或与物理显示器相关联的显示驱动器的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机201。
在一些示例实施例中,会话管理器216可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登录进程的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机201,在那里,客户机 201的用户可向登录屏幕输入帐户标识符(例如用户名/ 口令组合)、智能卡标识符、和/ 或生物测定信息。该信息可被传送给服务器204并被路由至引擎212以及会话核心244的安全子系统250。例如,在某些示例实施例中,引擎212可被配置成确定用户帐户是否与许可证相关联;并且安全子系统250可被配置成生成该会话的安全令牌。图3描绘客户机和包括多个角色的部署之间的示例远程呈现会话连接设置,其中每一角色在单独的机器上运作。在此讨论的每一机器可包括例如图1的计算设备141或在图1的计算设备141上执行的VM。部署302包括重定向器304、连接中介306、以及服务器308。重定向器接收来自诸如客户机312等客户机的请求,并处理像认证该客户机并向该客户机发放用于与部署302 进行远程呈现会话的许可证等操作。连接中介306确定用于向客户机提供远程呈现会话的服务器或服务器上的VM。这样的VM可包括例如图2的虚拟化服务器204。服务器308通过主存一个或多个VM (在此被描绘成VM-I 310a到VM-N 310η)来提供远程呈现会话。部署302可包括未被描绘(以使被描绘的角色清楚)的其他角色。这些角色可包括诸如远程呈现web访问角色(它使用web界面向客户机发布虚拟桌面以进行远程呈现会话)和域服务角色(它存储客户机用户向个人虚拟桌面的分配)等角色。客户机312与部署302进行通信314以建立远程呈现会话。例如,客户机312可包括TsClient (终端服务器客户机)且部署302可包括VDI部署。这一通信314由部署302 在重定向器304处接收。在VDI部署中,重定向器304可包括提供对客户机进行重定向的功能的RDSH角色。重定向器304基于一个或多个凭证来授权客户机或客户机的用户,并且对连接中介306进行查询316以确定要将客户机312重定向到的客户机312可与之进行远程呈现会话的VM。连接中介306与一个或多个服务器(在此描绘成服务器308)进行通信 318以确定关于主存在该服务器上的VM 310a、310n的信息,如VM是否能够接受新连接(例如,与在“耗尽连接随后休眠”状态形成对比)。基于从一个或多个服务器接收到的信息,连接中介306选择客户机312将与之进行远程呈现会话的VM。连接中介306将这一所选VM传达316给重定向器304。重定向器 304将这一所选VM传达320给客户机312并向客户机312发放用于进行远程呈现会话的许可证(注意,该许可证可在各种时间发送给客户机,并且这只示出了一个这样的实施例)。 客户机312随后与所选VM(在此被示为VM-N 310η)进行通信322以建立并随后进行远程呈现会话。图4描绘根据本发明的技术的被合并在一个机器上的多个角色。这一合并角色 424可以向部署提供组织支持426、仲裁支持428、许可证发放430、授权432、以及连接管理 434中的每一个。这些元素是出于逻辑清楚的目的才如此显示的,并且可以明白,它们可被编组在一起或以也能实现合并角色的技术的其他方式来细分。配合支持4 被配置成对合并角色424的其他部分之间的信息交换进行协调,并使在执行合并角色似4的服务器上的VM可用于远程呈现会话中(通过在该VM处于离线状态或保存状态的情况下使它在线并确保该VM准备好接受远程呈现会话连接)。仲裁支持4 被配置成在机器上所主存的多个VM之间确定客户机将与之进行远程呈现会话的VM。许可证发放430被配置成向客户机发放许可该客户机与合并角色似4是其一部分的部署进行远程呈现会话的许可证(或确认该客户机已经拥有的许可证)。授权432被配置成确定客户机被授权与合并角色4M是其一部分的部署进行远程呈现会话。例如,这可包括检查客户机的凭证(如登录和口令)对该部署而言是有效的。连接管理434被配置成与客户机进行通信,并且还与机器上的一个或多个VM进行通信,如在提供远程呈现会话中的“路由器” 或“代理”的角色时,如以下参考图6所描述的。这一合并角色可包括单个计算机进程。通过经由单个进程实现所有上述角色功能,这消除了对网络通信的需求以及各组件之间的认证需求。图5描绘客户机和包括合并角色的服务器之间的示例远程呈现会话连接建立。在一实施例中,合并角色包括在服务器的一部分内执行的单个进程。这一单个进程实现降低了复杂度,因为各单独的组件或合并角色的各进程之间不需要认证,并降低了实现远程通信会话所需的网络通信或进程间通信的量。客户机312向服务器536的合并角色似4发送远程呈现会话连接建立消息538。 合并角色4 用授权432来对客户机进行授权。连接管理434选择多个VM (在此被描绘为VM-I 310a和VM-N 310η)中的将与客户机312进行远程通信会话的VM。例如,这可由维护与主存在服务器536上的VM相对应的信息的数据库(或其他数据存储)的连接管理434来实现。连接管理434还可通过查询 VM中的一个或多个来寻找关于它们向客户机312提供远程呈现会话的能力或适当性的信息(如向客户机312提供远程呈现会话的VM,该远程呈现会话处于可被重新连接的断开连接状态)。例如,对一个或多个VM的这一查询可以在确定要将客户机312分配给一 VM时完成。在选择VM之后(在此被描绘为VM-N 310η),合并角色似4将所选VM传达540给客户机312。客户机312随后与所选VM(VM-N 310η)进行通信Μ2以建立并随后进行远程呈现会话。 在一实施例中,在合并角色4Μ在服务器536的一分区内执行的情况下,合并角色 424在主操作系统内执行或在服务器536的VM的客操作系统内执行。图6描绘客户机和包括合并角色的服务器之间的替换示例远程呈现会话连接建立。然而,如图5所示,客户机312作出与VM-N 310的单独通信以建立并进行远程呈现会话,如图6所示,合并角色似4在客户机312与VM-N 310a之间提供用于建立并进行远程呈现会话的路由器或代理功能。这可以通过在一个服务器上主存合并角色和被配置成提供远程呈现会话的多个VM来实现。客户机312与合并角色4M进行通信644,这执行与图5中描述的相类似的功能——合并角色似4执行客户机授权和许可证发放,并在服务器536上的已知VM的数据库中进行查找以确定是否有某一 VM具备作为客户机312的远程呈现会话的适当目标的资格。并非如图5所示向客户机312发送与之通信的所选VM的指示,在此,合并角色4M 的连接管理434向客户机312与所选VM(在此被描绘为VM-N 310η)之间的远程呈现会话提供路由器或代理功能。合并角色似4构造合并角色似4与VM-N 310η之间的完整远程呈现会话连接646,并向客户机312传达644远程呈现会话已经建立。以此方式,客户机312不“知道”它正在与所选VM进行远程呈现会话,并且客户机312不必作出与所选VM的单独通信就能建立远程呈现会话。相反,客户机312通过与提供路由器或代理功能的合并角色 424进行通信644来与VM-N 310η进行远程呈现会话,并将从客户机312接收到的信息传达 646给VM-N 310η,并且将从VM-N 310η接收到的信息传达给客户机312。从客户机312发送到合并角色424的这些通信可被称为“客户机远程呈现会话通信”,并且从VM-N 310η发送到合并角色4Μ的这些通信可被称为“服务器远程呈现会话通信”。合并角色似4与VM-N 310η之间的通信646可以用各种方式来实现。例如,通信 646可以通过在合并角色似4与VM-N 310η之间建立TCP/IP (传输控制协议/网际协议) 连接来实现。远程呈现会话连接随后可以经由这一 TCP/IP连接来构建。作为另一示例,通信646可以通过在合并角色424与VM-N 310η之间使用共享资源来实现。例如,这些共享资源可包括在合并角色和VM-N 310η之间拆分的远程呈现会话协议栈——该栈的一些功能在合并角色424中实现,并且该栈的其他功能在VM-N 310η中实现。从合并角色似4到VM-N 310η的通信可以通过将数据沿该栈“向上”发送来实现,并且从VM-N 310η到合并角色424的通信可以通过将数据沿该栈“向下”发送来实现。在合并角色424与VM-N 310η之间拆分的远程呈现会话协议栈在图7Β中更详细地描绘。图7Α描绘根据图6的远程呈现会话服务器的、合并角色与VM之间的使用TCP/IP 连接的远程呈现会话通信。如图所示,合并角色似4包括远程呈现会话微栈748 (远程呈现会话微栈748进而包括连接管理434和授权436)、仲裁支持428、以及连接重定向器750。合并角色似4与远程呈现会话主机753 (它管理在服务器536上执行的VM) —起在分区752内执行。分区752 可包括服务器536的主分区或客分区。客VM 310包括远程呈现栈754、终端服务器756、以及登录UI 758(在客户机尝试登录到VM 310的会话时呈现给客户机的登录用户界面)。对于合并角色似4与RDP栈7M进行通信时的远程呈现会话通信,这一通信经由 TCP/IP连接760来完成。在客户机312与服务器536进行通信以建立远程呈现会话时,在连接管理434处接收这一通信。在认证436对客户机312进行了认证之后,连接重定向器750与远程呈现栈乃4建立远程呈现会话。连接重定向器750经由TCP/IP通信760建立这一会话。连接重定向器750以同客户机312相同的方式来与远程呈现栈7M进行交互,以使得从远程呈现栈754的观点看,它“想”它正与客户机进行交互。TCP/IP连接760可以例如由Kerberos网络认证协议或由作为向分区752提供与认证436向客户机312提供的功能相类似的功能的远程呈现栈7M的一部分的认证机制来保护。当在分区752与客VM 310之间建立了这一远程呈现会话之后,连接管理434与客户机312进行通信以告知客户机312已经在分区752与客户机312之间建立了远程呈现会话。这可包括将从客VM 310接收到的远程呈现会话通信传送到客户机312。以此方式,客户机312 “想”它正在与远程呈现会话服务器直接进行交互,因为合并角色424以同远程呈现会话服务器相同的方式来与客户机312进行交互,从而实现远程呈现会话。在合并角色似4接收到来自客户机312的远程呈现会话通信时,它经由连接重定向器750将这些通信传递到远程呈现栈754,从而在必要时修改它们(如指示它们源自分区752而非客户机312,或根据远程呈现会话协议对它们进行重新编码)。同样,在合并角色4M接收到来自VM 310的远程呈现会话通信时,它将这些通信传递到客户机312,从而在必要时修改它们(如指示它们源自分区752,或根据远程呈现会话协议对它们进行重新编码)。以此方式,合并角色似4用作在客户机312与VM 310之间进行的远程呈现会话的代理或路由器。图7B描绘根据图6的远程呈现会话服务器的、合并角色与VM之间的使用共享资源连接的远程呈现会话通信。远程呈现会话栈可被拆分成角色部分(在此由合并角色424 来描绘)和VM部分(在此由远程呈现微拆分栈762来描绘)。在此,共享资源764包括共享存储器区域或共享缓冲区,如HYPER-V 。远程呈现微拆分栈762与图7A的远程呈现栈754的不同之处在于缺少该远程呈现栈754的各特征中的一些特征方面。如图所示,远程呈现拆分栈缺少TCP监听程序、授权436、以及对数据进行加密的能力,这些特征通常在诸如远程呈现栈7M等远程呈现栈中找到。可以明白,尽管远程呈现微拆分栈762在此被描绘为在授权层被拆分(因为授权 436被发现处于远程呈现微栈748中而非处于远程呈现微拆分栈762中),但该栈可以在远程呈现栈结构内的不同层处拆分。例如,拆分可以在栈中推得“更高”,如在加密或远程呈现会话编码层处。其中实现了这些教导的系统的细节可以确定在不同点处拆分该栈的好处。连接建立和远程呈现会话操作在此与图7A所描述的大体相同。当分区752具有要发送到VM 310的通信时,远程呈现微栈748将该通信置于共享资源760中,VM 310可以在那里获取它。同样,当VM 310具有要发送到分区752的通信时,远程呈现微拆分栈762 将该通信置于共享资源760中,VM 310可以在那里获取它。存在着其中如图7A所示的合并角色4M与VM-N 310之间的TCP/IP连接可能是有好处的场景,如在VM-N是传统VM并且对它进行修改不合乎需要的情况下。还存在着其中图 7B中描绘的拆分栈实现是优选方案的场景,如在可完成这一实现以使得它使用更少处理资源来在合并角色4 与VM-N 310之间发送数据的情况。这两种类型的连接——TCP/IP和拆分栈——可以用在一部署中。即,合并角色似4可经由TCP/IP连接与一个或多个VM 310 进行通信,并经由拆分栈与一个或多个其他VM 310进行通信。图8描绘客户机和每一个都包括合并角色的多个服务器之间的示例远程呈现会话连接建立。远程呈现会话部署包括多个服务器536和中介866。部署可包括多个服务器, 例如,在部署要提供比单个服务器所具有的处理资源能够处理的更多数量的远程呈现会话的情况下。 在该附图中描绘了两个服务器——服务器536a和服务器536b。每一服务器被描绘为包括合并角色(分别是42 和424b)和N个虚拟机(310aa到310rm和310na到 310nn ;注意,尽管每一服务器被描绘为主存了 N个虚拟机,每一服务器所主存的虚拟机的数量可以与该部署的其他服务器所主存的虚拟机的数量不同)。 客户机312与该部署的一服务器进行通信868 (在此被描绘为与服务器536a进行通信)以建立远程呈现会话。来自客户机的这些初始通信可以分布在部署的各服务器之间,如通过利用DNS(域名系统)的循环特征。客户机可以使用该部署的全称域名(FQDN) (例如,remot印resentationsession. com ;注意这不是提交时的注册域名。将来可在该全
12称域名处获得的任何主题不一定与本发明相关)来连接。通过DNS,这一主机名被转换成 IP地址(即,范围从0-255(包括0和255)的形式为Χ. Χ. Χ. X的四个数字,其中使用IPv4 地址)并被提供给请求者。请求者随后连接到具有这一 IP地址的计算机。通过在DNS中将该部署的主机名与该部署的要处理来自客户机的连接建立通信的每一服务器的IP地址进行关联,DNS向客户机提供多个IP地址之一,并可以向不同的客户机提供不同的IP地址,使得初始通信分布在这些服务器之间。如在此描绘的,客户机312最初与服务器536a的合并角色42 进行通信来进行远程呈现会话连接建立。合并角色42 可以确定在服务器536a上主存的VM是否要与客户机312进行远程呈现会话。例如,它可以通过使用以上参考图5描述的类似技术来确定这一点。在合并角色42 确定服务器536a上没有VM要进行远程呈现会话(例如,⑴服务器536a上没有VM具有可用的处理资源或处于能接受新远程呈现会话连接的状态,或(2) 服务器536a上存在这样的VM但出于诸如服务器之间的负载平衡(基于服务器的可用负载)等其他原因,远程呈现会话将由不同服务器的VM来进行)的情况下,合并角色42 向中介866传递查询870以确定不同服务器上的要与客户机312进行远程呈现会话的VM。中介866与该部署的多个服务器进行通信,以从这些服务器中确定它们以及在它们上执行的 VM是否能够以及能够在什么程度上提供远程呈现会话。合并角色42 从中介866接收与客户机312要连接到的其他服务器(如在此描绘的,该其他服务器是服务器536b)有关的通信870。合并角色42 将这一点传达827给客户机312。客户机312使用这一信息来与服务器536b的合并角色424b进行通信874。在通信中,客户机312和合并角色424b可以使用图5或6中描述的技术来在客户机312和服务器536b的VM之间建立远程呈现会话连接。图8描绘其中客户机312最初与第一服务器进行通信但最终与主存在第二服务器上的VM进行远程呈现会话的场景。可以明白,在多服务器部署中,其中客户机最初连接到主存该客户机与之进行远程呈现会话的VM的同一服务器的场景可与图5和6中描绘的单服务器场景相类似地操作。即,870,872,以及874的通信不必发生。合并角色42 可以基于服务器536a中包含的信息来确定服务器536a的VM将提供远程呈现会话。在作出这一判定后,服务器536a 所主存的远程呈现会话可以使用参考图5或6描述的技术来建立。结论尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其他相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此, 本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其他方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。
权利要求
1.一种方法,包括在服务器(204)处接收来自客户机O01)的远程呈现会话连接请求; 基于所述请求来选择由所述服务器主存的多个虚拟机(VM)中的所选VM(310); 建立与所选VM的连接;在所述服务器处接收来自所述客户机的客户机远程呈现会话通信(644); 通过所述连接(646)将所述客户机远程呈现会话通信传送到所选VM; 通过所述连接(646)接收来自所选VM的服务器远程呈现会话通信;以及将所述服务器远程呈现会话通信从所述服务器传送到所述客户机(644)。
2.如权利要求1所述的方法,其特征在于,建立与所选VM的连接包括 建立与所选VM的传输控制协议/网际协议(TCP/IP)连接。
3.如权利要求2所述的方法,其特征在于,建立与所选VM的TCP/IP连接包括 经由所述TCP/IP连接来构造与所选VM的远程呈现会话连接。
4.如权利要求1所述的方法,其特征在于,建立与所选VM的连接包括 建立与所选VM的共享资源连接。
5.如权利要求3所述的方法,其特征在于,所述共享资源包括拆分远程呈现会话拆分栈,所述远程呈现会话拆分栈包括角色部分和VM部分,所述角色部分在合并角色中执行并且所述VM部分在所述VM中执行。
6.如权利要求5所述的方法,其特征在于,所述角色部分和所述VM部分经由共享存储器区域来进行通信。
7.如权利要求4所述的方法,其特征在于,所述角色部分对所述客户机进行认证,并且通过所述连接将所述客户机远程呈现会话通信传送到所选VM包括将所述客户机远程呈现会话通信存储在所述共享资源中,使得所述VM部分接收所述客户机远程呈现会话通信,并且所述VM部分在不对所述客户机进行认证的情况下处理所述客户机远程呈现会话通信。
8.如权利要求1所述的方法,其特征在于,建立与所选VM的连接包括响应于确定不能建立与所选VM的共享资源连接来建立与所选VM的传输控制协议/网际协议(TCP/IP)连接。
9.如权利要求1所述的方法,其特征在于,选择所选VM包括 基于所述多个VM之间的负载平衡来选择所选VM。
10.如权利要求1所述的方法,其特征在于,选择所选VM包括基于所选VM具有用于与所述客户机进行远程呈现会话的可用负载来选择所选VM。
11.一种承载计算机可读指令的计算机可读存储介质,当所述计算机可读指令在远程呈现会话部署的服务器(536a)上执行时,使得所述服务器执行以下操作,包括由在所述服务器的一分区内执行的合并角色GMa)从客户机(31 接收远程呈现会话连接请求,所述远程呈现会话请求是在所述远程呈现会话请求没有由所述远程呈现会话部署的连接中介处理的情况下接收的;由所述合并角色确定所述服务器所主存的多个虚拟机(VM)中没有VM 310将向所述客户机提供所述远程呈现会话;由所述合并角色对中介进行查询以寻找第二服务器(536b),所述第二服务器主存将向所述客户机提供所述远程呈现会话的VM ;由所述合并角色基于所述查询来接收所述第二服务器的身份;以及向所述客户机发送与所述第二服务器进行所述远程呈现会话的指示,使得所述客户机联系所述第二服务器并与所述第二服务器的VM建立远程呈现会话。
12.如权利要求11所述的计算机可读存储介质,其特征在于,所述部署包括多个服务器,并且所述中介被配置成与所述多个服务器中的每一服务器进行通信以确定服务器是否可进行远程呈现会话。
13.如权利要求11所述的计算机可读存储介质,其特征在于,所述中介维护包括所述第二服务器具有主存与所述客户机的远程呈现会话的能力的指示的数据库;以及响应于所述合并角色对所述中介进行的寻找所述第二服务器的查询,所述中介基于所述数据库来确定所述第二服务器主存将提供所述远程呈现会话的VM。
14.如权利要求11所述的计算机可读存储介质,其特征在于,响应于所述合并角色对所述中介进行的寻找所述第二服务器的查询,所述中介通过查询所述第二服务器以确定所述第二服务器能够提供所述远程呈现会话来确定所述第二服务器主存将提供所述远程呈现的VM。
15.如权利要求11所述的计算机可读存储介质,其特征在于,所述服务器和所述第二服务器具有相同的全称域名(FQDN);以及作为客户机查询域名系统(DNS)以寻找所述部署的网际协议(IP)地址的结果,由在所述服务器的一分区内执行的合并角色接收来自所述客户机的远程呈现会话连接请求,并且作为响应来基于所述DNS的循环特征接收所述服务器的IP地址。
全文摘要
公开了用于高效的远程呈现会话连接和路由的技术。在一实施例中,接收来自客户机的连接以及确定用于提供客户机的远程呈现会话的虚拟机(VM)中涉及的远程呈现会话部署的各角色被合并在主存这些VM的部署的一个或多个服务器上。在这一合并角色从客户机接收连接建立通信时,它使用它本地和它服务器本地的信息来确定用于提供远程呈现会话的VM。在该部署包括多个这样的服务器的情况下,合并角色可以与服务器间连接中介进行通信以确定将进行远程呈现会话的不同的服务器。
文档编号H04L29/06GK102333109SQ20111017071
公开日2012年1月25日 申请日期2011年6月14日 优先权日2010年6月15日
发明者A·伯纳迪, I·本-沙哈尔, M·K·阿拉迪, W·R·舒米德尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1