CN102148824A - 用于遥控桌面图形的容损协议 - Google Patents
用于遥控桌面图形的容损协议 Download PDFInfo
- Publication number
- CN102148824A CN102148824A CN2011100298799A CN201110029879A CN102148824A CN 102148824 A CN102148824 A CN 102148824A CN 2011100298799 A CN2011100298799 A CN 2011100298799A CN 201110029879 A CN201110029879 A CN 201110029879A CN 102148824 A CN102148824 A CN 102148824A
- Authority
- CN
- China
- Prior art keywords
- presents
- long
- graph data
- range
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/24—Negotiation of communication capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/166—Implementing security features at a particular protocol layer at the transport layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种用于遥控桌面图形的容损协议。在各实施例中,可用使数据能通过传输来传送而无需保证的分组递送的方式来修改远程呈现编码技术。在一个实施例中,桌面图形数据可在各个帧中编码,每一帧包括适合在少量用户数据报协议(UDP)协议数据单元(PDU)中的自包含图形元素。PDU然后可在单独的有损链路而非无损链路上发送到客户机。在客户机侧,客户机可以检测帧内的哪些图形元素因丢弃的UDP分组而被“丢失”,并且通过无损信道向服务器请求刷新。
Description
技术领域
本发明涉及远程计算***,尤其涉及远程数据传输。
背景技术
远程计算***可使用户能够远程地访问托管资源。远程计算***上的服务器可执行程序并将指示用户界面的信号发送到可通过经由网络发送符合诸如TCP/IP协议等通信协议的信号来连接的客户机。可向每个连接客户机提供远程呈现会话,即,包括一组资源的执行环境。每个客户机可向服务器发送指示用户输入的信号并且服务器可将该用户输入应用于合适的会话。客户机可使用诸如远程桌面协议(RDP)等远程呈现协议来连接到服务器资源。
在远程桌面情形中,位于主计算机(例如,服务器)上的用户桌面的图形内容通常被流传送到另一计算机(例如,客户机)。服务器和客户机将以定义良好的协议或格式来交换桌面图形数据。某些远程桌面呈现协议是面向流的协议,这些协议可使用诸如传输控制协议(TCP)等基于流的传输来与客户机交换数据。诸如TCP协议等协议通常展示出高等待时间,尤其是在底层传输是广域网(WAN)连接的时候。如果对远程呈现数据通信使用这一链路,则此类等待时间可导致负面用户体验,因为桌面图形数据可能以时间延迟的方式来递送给客户机。由此,本领域中需要解决上述问题的其他技术。
发明内容
在各实施例中,公开了通过提供容损图形交换协议且因此允许使用诸如用户数据报协议(UDP)等非基于流的协议来解决上述问题的方法和***。
在某些实施例中,可用使数据能通过传输来传送而没有保证的分组递送的方式来修改某些RDP专用编码技术。在一个实施例中,桌面图形数据可在各个帧中编码,每一帧包括适合在少量用户数据报协议(UDP)协议数据单元(PDU)中的自包含图形元素。PDU然后可在单独的UDP链路而非TCP链路上发送到客户机。在客户机侧,客户机可以检测帧内的哪些图形元素因丢弃的UDP分组而被“丢失”,并且通过无损信道(即,TCP链路)向服务器请求刷新。
除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面。本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于***设计者的设计选择。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现。
附图说明
参考附图来进一步描述根据本说明书的用于在虚拟环境内更改视图观点的***、方法和计算机可读介质,附图中:
图1和2描绘了其中可实现本发明的各方面的示例计算机***。
图3描绘了用于实践本发明的各方面的操作环境。
图4描绘了用于实践本发明的各方面的操作环境。
图5示出了包括用于实现远程桌面服务的电路的计算机***。
图6示出了包括用于实现远程服务的电路的计算机***。
图7示出了此处公开的过程中的某一些的概览。
图8示出了包含此处所公开的方法的各方面的示例体系结构。
图9示出了包含此处所公开的方法的各方面的示例体系结构。
图10示出了用于处理要传输到客户计算机的图形数据的操作过程的示例。
图11示出了用于处理要传输到客户计算机的图形数据的示例***。
图12示出了承载参考图1-11讨论的计算机可执行指令的计算机可读介质。
具体实施方式
概括的计算环境
在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。
各实施例可在一个或多个计算机上执行。图1和2以及下面的讨论旨在提供其中可实现本发明的合适计算环境的简要概括描述。本领域的技术人员可以理解,计算机***200、300可具有相对于图1和2的计算机100描述的组件中的一部分或全部。
贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。本示例中的逻辑处理器可由软件指令来配置,软件指令具体化可用于执行从例如RAM、ROM、固件和/或虚拟存储器等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现是微不足道的且留给了实现者。
图1描绘了以本发明的各方面来配置的计算***的示例。计算***可以包括计算机20或类似物,计算机20包括处理单元21、***存储器22和将包括***存储器在内的各种***组件耦合至处理单元21的***总线23。***总线23可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、***总线、以及使用各种总线体系结构中的任一种的局部总线。***存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出***26(BIOS)存储在ROM 24中,其包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20还可包括用于对硬盘(未示出)进行读写的硬盘驱动器27,用于对可移动磁盘29进行读写的磁盘驱动器28,以及用于对可移动光盘31,如CD ROM或其它光介质进行读写的光盘驱动器30。在一些示例实施例中,实施本发明的各方面的计算机可执行指令可存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘29、光盘31和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34来连接到***总线23。驱动器及其相关联的计算机可读介质为计算机20提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。虽然这里描述的环境采用硬盘、可移动磁盘29和可移动光盘31,本领域技术人员应理解,在该操作环境中也能使用可存储能由计算机访问的数据的其它类型计算机可读介质,如盒式磁带、闪存卡、数字视频盘、柏努利(Bernoulli)盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。
可在硬盘、磁盘29、光盘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通常可包括调制解调器54或用于通过诸如因特网等广域网52建立通信的其它手段。或为内置或为外置的调制解调器54可经由串行端口接口46连接到***总线23。在网络化环境中,关于计算机20所描述的程序模块或其部分可被储存在远程存储器存储设备中。应该理解,所示网络连接是示例,并且可以使用在计算机之间建立通信链路的其它手段。此外,虽然可构想本发明的许多实施例尤其适用于计算机***,然而在本文中不意味着将本发明限于这些实施例的公开。
现在参考图2,描绘了示例性计算***100的另一实施例。计算机***100可包括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机***100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个***总线互联,***总线将各种***总线耦合到逻辑处理器102。***总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、***总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪存或ROM)、以及可移动存储设备118(例如CD-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)202。所描绘的实施例中的***管理程序202可被配置成控制并仲裁对计算机***100的硬件的访问。广泛而言,***管理程序202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于或等于1的整数)。在各实施例中,子分区可被认为是***管理程序202所支持的基本隔离单元,即,每一子分区可被映射到在***管理程序202的控制下的一组硬件资源,例如存储器、设备、逻辑处理器周期等,和/或父分区和***管理程序202可以隔离一个分区无法访问另一分区的资源。在各实施例中,***管理程序202可以是独立的软件产品、操作***的一部分、嵌入在主板的固件中、专用集成电路、或其组合。
在以上示例中,计算机***100包括父分区204,父分区在开源社区中也可被认为是域0。父分区204可被配置成通过使用虚拟化服务提供者228(VSP)来向在子分区1-N中执行的客操作***提供资源,虚拟化服务提供者在开源社区中也被称为后端驱动程序。在该示例体系结构中,父分区204可以门控(gate)对底层硬件的访问。VSP 228可用于通过虚拟化服务客户端(VCS)来复用到硬件资源的接口,虚拟化服务客户端在开源社区中也被称为前端驱动程序。每一子分区可包括客操作***220到222可管理并调度线程在其上执行的一个或多个虚拟处理器,如虚拟处理器230到232。一般而言,虚拟处理器230到232是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机***的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在这些示例实施例中,多个虚拟处理器可同时执行,同时例如另一逻辑处理器正在执行***管理程序指令。一般而言,且如图所示,分区中的虚拟处理器、各种VCS以及存储器的组合可被认为是虚拟机,如虚拟机240或242。
一般而言,客操作***220到222可包括任何操作***,如来自微软苹果开源社区等的操作***。客操作***可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。每一客操作***220到222可具有相关联的文件***,该文件***上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作***本身。客操作***220-222可调度线程来在虚拟处理器230-232上执行,并且可实现此类应用的实例。
现在参考图4,所示是可用于实现虚拟机的替换体系结构。图4描绘了类似于图3的组件,但在该示例实施例中,***管理程序202可包括虚拟化服务提供者228和设备驱动程序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可以由包括与图1b的计算机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追加到运行列表,并由图形内核调度器528来调度。例如应用或用户界面等每一图形源可具有一上下文及其自己的运行列表。图形内核524可被配置成调度各个上下文来在图形处理单元112上执行。GPU调度器528可由逻辑处理器102执行,并且调度器528可向内核模式驱动器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调度器528可运行并确定渲染缓存的内容。在该示例中,可捕捉对服务器的图形处理单元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调度器528可运行并确定何时对缓存发出渲染命令。当调度器528发出渲染命令时,该命令可由例如内核模式驱动程序530捕捉并经由栈实例414’发送到客户机401。
GPU调度器528可执行并确定发出渲染缓存的内容的指令。在本例中,与渲染指令相关联的图元可经由网络接口卡114发送到客户机401。
在一实施例中,至少一个内核模式进程可由至少一个逻辑处理器112执行,且至少一个逻辑处理器112可同步渲染存储在不同缓存中的顶点。例如,可类似于操作***调度器来操作的图形处理调度器528可调度GPU操作。GPU调度器528可将单独的顶点缓存合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
诸如视频游戏等进程的一个或多个线程可映射多个缓存且每一线程可发出绘制命令。关于顶点的标识信息,例如为每一缓存、每一顶点或缓存中的每一批顶点生成的信息,可被发送到GPU调度器528。信息可与关联于来自相同的或其他进程并用于同步各个缓存的渲染的顶点的标识信息一起存储在表中。
诸如文字处理程序等应用可执行并声明例如两个缓存——一个用于存储用于生成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。应用可映射缓存,并发出绘制命令。GPU调度器528可确定执行两个缓存的次序,使得菜单与字母一起以看上去令人满意的方式来渲染。例如,其他进程可以在相同或基本相似的时间发出绘制命令,并且如果顶点不是同步的,则来自不同进程的不同线程的顶点可能在客户机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调度器528可将单独的顶点缓存合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
用于实现以上提到的分区的所有这些变体仅仅是示例性实现,并且此处没有一样应被解释为将本发明限于任何特定虚拟化方面。
容损协议
此处所涉及的压缩、编码和解码图形数据的过程一般使用在共同转让的题为“System And Method For Effectively Encoding And Decoding Electronic Information”(用于高效地编码和解码电子信息的***和方法)的美国专利7,460,725号中所描述的一个或多个方法和***,该专利通过整体引用合并于此。
在此处所公开的各方法和***中,可实现对向客户计算机进行的远程呈现图形数据的传送的改进,来提供更及时且丰富的用户体验。此处所公开的用于编码并传送图形数据的实施例可使用硬件和软件进程的各种组合来实现。在某些实施例中,各功能可完全用硬件来执行。在其他实施例中,各功能可完全用软件来执行。在还有一些实施例中,各功能可使用硬件和软件进程的组合来实现。这些进程还可使用一个或多个CPU和/或诸如图形处理单元(GPU)或其他专用图形渲染设备等一个或多个专用处理器来实现。
在远程桌面情形中,位于主计算机(例如,服务器)上的用户桌面的图形内容通常被流传送到另一计算机(例如,客户机)。服务器和客户机将以定义良好的协议或格式来交换桌面图形数据。微软TM的远程桌面协议(RDP)是这一协议的一个示例。RDP协议是面向流的协议,该协议可使用诸如传输控制协议(TCP)等基于流的传输来与客户机交换数据。诸如TCP协议等协议通常展示出高等待时间,尤其是在底层传输是广域网(WAN)连接的时候。如果对RDP通信使用这一链路,则此类等待时间可导致负面用户体验,因为桌面图形数据可能以时间延迟的方式来递送给客户机。
因此,当使用诸如RDP等协议来向客户计算机提供远程呈现会话时,在某些情形中,可能期望通过有损传输来执行该协议。例如,当某一链路经历高损失率时,对诸如TCP等某些基于流的协议的使用可导致显著的延迟。在这些协议中,当未正确地接收或丢失了数据分组时,丢失的数据分组必须在可在所接收数据的处理中作出进展之前被重新发送。由此,在这些情况下,使用有损数据报传输机制而非流无损传输机制可能是有利的。有损协议可以是一般可被表征为具有有损语义的协议的任何类型的协议。这些协议可能不提供递送验证、丢失数据重传、以及数据分组的隐式或显式排序。这些协议也可被称为数据报协议。通过能够在有损数据报协议上传送数据,可避免用于丢失分组的恢复机制所引起的大多数延迟。在此处所公开的各实施例中,描述了通过提供容损图形交换协议且因此允许使用诸如用户数据报协议(UDP)等非基于流的协议来解决上述问题的方法。
还期望能够恢复丢失数据分组而非忽略丢失分组且不在客户机侧渲染丢失数据。如果期望这种数据恢复,则可能必须采用用于从链路损失中恢复的机制。因此期望开发一种能够提供有损流类型的链路来支持诸如RDP等协议的机制,并且还提供如在无损信道中一样恢复丢失数据分组的机制。
在某些实施例中,可用使数据能通过传输来传送而没有保证的分组递送的方式来修改某些RDP专用编码技术。在一个实施例中,桌面图形数据可在各个帧中编码,每一帧包括适合在少量用户数据报协议(UDP)协议数据单元(PDU)中的自包含图形元素。PDU然后可在单独的UDP链路而非TCP链路上发送到客户机。在客户机侧,客户机可以检测帧内的哪些图形元素因丢弃的UDP分组而被“丢失”,并且通过无损信道(即,TCP链路)向服务器请求刷新。
在各实施例中,公开了用于以下动作的方法:(1)将客户机屏幕更新组织成帧并确定哪些分组属于一个帧以及某一帧中的哪些分组丢失,(2)提供用于通过向服务器请求屏幕更新来纠正数据丢失的混合RDP/TCP链路(或类似链路),(3)使用该混合链路来交换加密密钥并使用PDU的序号来选择加密密钥,以及(4)对单个UDP分组或分组组的净荷应用批量压缩算法并在每一组之后重置压缩历史。
诸如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中编码32x32像素的未压缩单色位图。服务器还将能够编码用将位图大小削减到大约三分之一的算法来压缩的32x32的32bpp位图。
如上所述,在某些实施例中,所公开的协议可以对全帧操作。例如,服务器可以将屏幕内容编码为全帧,且客户机可以将该内容重构为全帧。帧的任何“遗漏”区域可被认为是丢失的PDU的结果。由此,在一个实施例中,包含在PDU中的图形元素可包含足够的信息,使得客户机能够确定图形元素所属的帧以及该帧内该元素所占据的位置。
图9例示了帧元素的两个示例编码。在由数据分组900示出的一个实施例中,PDU可包括帧序号。该帧序号可由客户机用于确定包含在PDU中的图形元素所属的帧。帧序号的改变还可指示新帧的开始。尽管帧序号不需要是绝对值,但该号码应足够大以便在全部帧丢失的情况下标识帧过渡。
在由数据分组910所示的另一实施例中,在帧中编码的元素可包含几何信息。例如,如果图形元素是大小相等的位图,则该位图在屏幕上的放置可由该位图在网格内的位置来标识。如果元素可以是任意的几何结构,则可通过矩形坐标来指定图形元素位置。
在某些实施例中,可提供描述在PDU中编码了什么类型的图元的元素类型。例如,对于未改变的区域,可使用“空矩形”元素类型。图形类型的另一示例是不透明矩形或位图(即,图形元素不是透明的,且因此不需要新屏幕区域所覆盖的先前屏幕区域的位图)。
当通过有损协议传送数据时,可能需要解决多个问题来支持远程呈现协议。例如,通常在传送之前向远程呈现数据应用批量压缩。批量压缩器通常通过根据早先的数据来编码数据来操作。然而,如上所述,将图形元素编码到一个MTU中是合乎需要的,且因此在有损传输的情况下,解压所必需的数据应被自包含在PDU内。因此,批量压缩历史可能必须在压缩/解压每一PDU之前被重置。
如果使用多PDU传输技术,则压缩历史只能在压缩了更新中的所有PDU之后被重置。批量压缩是基于历史的压缩技术,且因此如果流中的分组之一丢失,则状态会变得不一致且可能会丢失同步。在一个实施例中,压缩上下文可在传送了每一分组之后重置,由此允许独立地解压每一分组。在另一个实施例中,要包括在解压中的分组的数量可被动态地确定。例如,压缩历史可在每四个分组之后重置。如果数据分组之一丢失,则服务器或图形源可能需要重发所有四个分组。如果数据分组丢失率太高,从而引起分组组的重复重传,则可基于网络条件或其他因素来平衡压缩历史重置点,这些其他因素如丢失分组的概率以及在重置上下文之前发送更多数据分组的效率。在一个实施例中,压缩历史中的分组数量可从1到N来调整。
当通过有损协议来传送数据时,还可能需要解决与数据加密有关的问题。通常期望加密图形元素或帧。加密方案的示例包括通常用于为通过网络的通信提供安全性的安全套接字层(SSL)。在各个所公开的实施例中,可能需要在PDU的上下文中完成加密。为了在这一上下文中提供安全性,服务器可能必须更频繁地生成新的加密密钥并将这些密钥传递给客户机。由于丢失数据分组的可能性,在使用有损链路时,用于加密方案的上下文也应该被确定。服务器可将新的加密密钥以及应对其使用新加密密钥的分组传递给客户机。在一个实施例中,可为每一分组提供非加密序号。加密密钥可通过可靠TCP链路连同密钥可应用到的分组号的范围一起发送。
尽管上下文可在一个分组处设置,但加密密钥可用于数据块。例如,可提供序列ID来为一个或多个分组标识要使用哪一加密上下文。在一个实施例中,用于解密加密的远程呈现图形数据的加密密钥可连同对其应使用该加密密钥的数据分组的范围的指示一起传送给客户机。可协商加密密钥,使得可向客户机发送要用于将从给定时期接收的分组的一组新的密钥。
另外,每一分组可以与一唯一序号以及一唯一帧号相关联来进一步将密钥与适用的数据分组相关联。在一个实施例中,可以使用无损连接将预定数量的加密密钥发送给客户机,并且然后可将标识要用于解密远程呈现图形数据的密钥之一的选择传送给客户计算机。在另一实施例中,可以提供服务器发送多个密钥的方案。可以通过向分组序号应用模函数来选择特定密钥。
当通过有损链路发送远程呈现图形数据时,在某些情况下,可能期望最大化***到MTU中的图形数据的量直到MTU限制。使用更多MTU容量可提供更大的效率,因为每一分组将携带更多图形数据同时诸如首部或底层的每分组延迟等协议开销保持固定。更高的效率可提供批量协议吞吐量的改进。此外,当分组丢失时,最小化需要重传的分组数量可能是有利的,且因此减小分组之间的相互依赖性可能是有利的。由此,在某些实施例中,将数据打包成分组使得每一分组尽可能独立地可处理且可解码可能是有利的。
然而,在某些情况下,图形元素可被适合到一个以上MTU或少量MTU中。MTU的数量可基于预期的或在链路上已检测到的损失水平来自适应。数据分组的大小可增大,但如果分组丢失,则会丢失更多数据。另一方面,从批量压缩的观点来看,较小的分组也不压缩,且因此可考虑上述因素来确定要放置在分组上的数据的量。
在某些情况下,将图形元素的大小约束到MTU大小在可编码什么种类的图形元素方面可能是限制的。例如,非压缩32x32位图可要求四倍WAN MTU的大小。如果期望编码更大的图形元素,则在某些实施例中,可应用一算法,使得客户机可从多个MTU大小的分组中重新组装这些元素。在这些情形中,如果包含图形数据的分组丢失,则重新组装原始图形元素可能是不可行的,且包含专用于该元素的信息的任何其他分组可能必须被丢弃。
如前所述,在某些实施例中,所公开的协议基于客户机将预期完全描述的帧的概念。因此,客户机可跟踪对一帧接收到的区域。一旦客户机检测到开始了新帧,则客户机可初始化对应于整个屏幕的区域对象,且该区域对象可用于跟踪如所接收到的已编码数据所表示的所接收的区域。当接收到更新时,客户机可从跟踪区域中减去更新所占据的区域。如果接收到帧中的所有更新,则跟踪区域在本质上将是空的。如果区域不是空的,则客户机可确定并没有接收到所有图形更新。在这一情况下,客户机可通过TCP控制信道向服务器请求对该特定区域的刷新。
帧内的某些屏幕元素,如未改变的矩形,可能很小且可被编码在单个PDU中。然而,这一PDU的丢失可能会导致客户机向服务器请求空矩形所描述的整个区域的更新。由于涉及的多个屏幕区域,提供这一更新可能是高代价的。为避免此类分组丢失的后果,可能期望为诸如描述未改变矩形的数据等元素发送重复的PDU。
此处所公开的方法不限于诸如位图等特定类型的图形数据。所公开的方法可应用于任何类型的图形对象。例如,该图形数据可包括要绘制的实体的描述。一般而言,无损信道可用于向客户机通知将传送的数据的类型和性质以及渲染之后的预期结果。然后可在有损信道上将实际图形数据传送到客户机,且客户机可将实际接收到的内容与渲染动作的结果进行比较来确定是否遗漏了任何数据或在预期在接收到的数据中的内容或作为对数据执行预期动作的结果之间是否存在不一致。在一个实施例中,客户机可记录任何未接收的事务或未更新的屏幕区域,并向服务器通知该不一致。在其他实施例中,客户机作出某些智能决策,如确定只有一小部分屏幕遗漏并确定等待更长时间来获得遗漏数据或确定不需要该数据。
上述技术可应用于多监视器场景。服务器上的组件可例如从服务器维护的视频呈现网络信息中确定视频呈现路径的数量。每一视频呈现源可如上所述被提供一组视频数据。
图10描绘了用于将远程呈现图形数据传送到客户计算机的示例性操作过程,包括操作1000、1002、1004和1006。参考图10,操作1000开始该操作过程,并且操作1002示出了建立与客户计算机的第一连接,该第一连接是使用由有保证的分组递送和分组次序来表征的无损协议来建立的。操作1004示出与客户计算机协商连接能力来确定该客户计算机能支持第二连接,以及建立第二连接,该第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的。操作1006示出使用第一连接来管理向客户计算机的图形数据传送,且操作1008示出使用第二连接来向客户计算机传送远程呈现图形数据。
图11描绘了用于处理如上所述传送到多个客户计算机的图形数据的示例性***。参考图11,***1100包括处理器1110和存储器1120。存储器1120还包括被配置成向客户计算机传送远程呈现图形数据的计算机指令。框1122示出建立与客户计算机的第一连接,该第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的。框1124示出与客户计算机协商连接能力来确定该客户计算机能支持第二连接,以及建立第二连接,该第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的。框1126示出将远程呈现图形数据编码成表示帧的数据,每一帧包括用于表示客户机屏幕的信息,其中该编码包括将客户机屏幕划分成自包含图形元素。框1128示出使用第一连接来管理向客户计算机的图形数据传送,并使用第二连接来向客户计算机传送编码的远程呈现图形数据。
上述各方面的任一个可以用方法、***、计算机可读介质或任何类型的制造来实现。例如,按照图12,计算机可读介质可在其上存储用于在客户计算机上接收远程呈现图形数据的计算机可执行指令。这些介质可包括用于建立与远程呈现图形源的第一连接的第一指令子集,该第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的1210;用于与远程呈现图形源协商连接能力来确定客户计算机能支持第二连接,以及建立第二连接的第二指令子集,该第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的1212;用于接收远程呈现图形数据的第三指令子集,其中该远程呈现图形数据表示包括用于表示客户机屏幕的信息的帧,且其中远程呈现图形数据包括子包含图形元素1214;以及用于使用第一连接来管理图形数据接收并使用第二连接来接收远程呈现图形数据的第四指令子集1216。本领域的技术人员可以理解,可使用其他指令集来捕捉此处公开的各种其他方面,并且目前所公开的三个指令子集的细节可以按照本公开内容来变化。
上述详细描述通过示例和/或操作图阐明了***和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机***通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。
Claims (20)
1.在包括处理器和存储器的计算***中,一种用于向客户计算机传送远程呈现图形数据的方法,所述方法包括:
建立与所述客户计算机的第一连接,所述第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的;
与所述客户计算机协商连接能力来确定所述客户计算机能支持第二连接,以及建立所述第二连接,所述第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的;以及
使用所述第一连接来管理向所述客户计算机的图形数据传送,并使用所述第二连接来向所述客户计算机传送所述远程呈现图形数据。
2.如权利要求1所述的方法,其特征在于,还包括终止所述第二连接并使用所述第一连接来传送所述远程呈现图形数据,来作为退路传送方法。
3.如权利要求1所述的方法,其特征在于,还包括使用所述第一连接从所述客户计算机接收描述未接收的远程呈现图形数据的反馈,并响应于所述反馈,通过所述第二连接传送所述未接收的远程呈现图形数据。
4.如权利要求1所述的方法,其特征在于,所述无损协议是TCP,且所述有损协议是UDP。
5.如权利要求1所述的方法,其特征在于,还包括在传送所述远程呈现图形数据之前压缩所述远程呈现图形数据,其中用于压缩的远程呈现图形数据的压缩历史的数据分组数量根据网络条件来确定。
6.如权利要求1所述的方法,其特征在于,还包括:
在传送所述远程呈现图形数据之前加密所述远程呈现图形数据;以及
使用所述第一连接,向所述客户机传送用于解密加密的远程呈现图形数据的加密密钥和应使用所述加密密钥的数据分组的范围的指示。
7.如权利要求1所述的方法,其特征在于,还包括:
在传送所述远程呈现图形数据之前加密所述远程呈现图形数据,其中所述加密是使用预定数量的加密密钥之一来完成的;
使用所述第一连接将所述预定数量的加密密钥传送到所述客户机;以及
向所述客户计算机传送标识所述加密密钥中要用于解密所述远程呈现图形数据的一个加密密钥的选择。
8.如权利要求1所述的方法,其特征在于,所述远程呈现图形数据在数据分组中传送,且每一数据分组包括唯一帧号和标识在帧内的次序的唯一序号。
9.如权利要求1所述的方法,其特征在于,所述第二连接上的数据是在最大传输单元(MTU)中传送的,且在一个MTU中编码的分组数量基于链接损失率来确定。
10.如权利要求1所述的方法,其特征在于,所述远程呈现图形数据包括标识对应于所述远程呈现图形数据的帧位置的几何信息。
11.如权利要求1所述的方法,其特征在于,所述远程呈现图形数据包括所述远程呈现图形数据中包括的图元的类型。
12.如权利要求1所述的方法,其特征在于,还包括对于所述远程呈现图形数据中满足预定准则的一部分发送重复数据。
13.一种被配置成向客户计算机传送远程呈现图形数据的***,包括:
至少一个处理器;以及
通信耦合到所述至少一个处理器的至少一个存储器,所述存储器中存储有计算机可执行指令,所述计算机可执行指令用于:
建立与所述客户计算机的第一连接,所述第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的;
与所述客户计算机协商连接能力来确定所述客户计算机能支持第二连接,以及建立所述第二连接,所述第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的;
将所述远程呈现图形数据编码成表示帧的数据,每一帧包括用于表示客户机屏幕的信息,其中所述编码包括将所述客户机屏幕划分成自包含图形元素;以及
使用所述第一连接来管理向所述客户计算机的图形数据传送,并使用所述第二连接来向所述客户计算机传送所编码的远程呈现图形数据。
14.如权利要求13所述的***,其特征在于,所述自包含图形元素是数据平铺块。
15.一种存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用于在客户计算机上接收远程呈现图形数据,所述指令用于:
建立与远程呈现图形源的第一连接,所述第一连接是使用由有保证的分组递送和分组次序表征的无损协议来建立的;
与所述远程呈现图形源协商连接能力来确定所述客户计算机能支持第二连接,以及建立所述第二连接,所述第二连接是使用由无保证的分组递送和分组排序表征的有损协议来建立的;
接收所述远程呈现图形数据,其中所述远程呈现图形数据表示包括用于表示客户机屏幕的信息的帧,且其中所述远程呈现图形数据包括自包含图形元素;以及
使用所述第一连接来管理图形数据接收并使用所述第二连接来接收所述远程呈现图形数据。
16.如权利要求15所述的计算机可读存储介质,其特征在于,还包括确定所述远程呈现图形数据的一部分未被接收,并使用所述第一连接来传送未接收的数据部分的指示。
17.如权利要求16所述的计算机可读存储介质,其特征在于,所述确定包括在接收到所述远程呈现图形数据的其他部分之后等待预定时间段。
18.如权利要求17所述的计算机可读存储介质,其特征在于,还包括在接收所述数据部分之前渲染所接收的远程呈现图形数据。
19.如权利要求16所述的计算机可读存储介质,其特征在于,所述确定包括:
对每一帧,实例化跟踪对应于所述帧的客户机屏幕的区域的存储器对象;
在接收到所述远程呈现图形数据时,标识由接收到的远程呈现图形数据表示的所述客户机屏幕的区域;以及
基于所跟踪的区域确定所述客户机屏幕的至少一部分未被接收到。
20.如权利要求15所述的计算机可读存储介质,其特征在于,还包括终止所述第二连接并使用所述第一连接来接收所述远程呈现图形数据,以作为退路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610231111.2A CN105704161B (zh) | 2010-01-22 | 2011-01-21 | 用于传送和接收远程呈现图形数据的方法和*** |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/691,979 US8463918B2 (en) | 2010-01-22 | 2010-01-22 | Loss tolerant protocol for remoting desktop graphics |
US12/691,979 | 2010-01-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610231111.2A Division CN105704161B (zh) | 2010-01-22 | 2011-01-21 | 用于传送和接收远程呈现图形数据的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102148824A true CN102148824A (zh) | 2011-08-10 |
CN102148824B CN102148824B (zh) | 2016-05-25 |
Family
ID=44309814
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110029879.9A Active CN102148824B (zh) | 2010-01-22 | 2011-01-21 | 用于传送和接收远程呈现图形数据的方法和*** |
CN201610231111.2A Active CN105704161B (zh) | 2010-01-22 | 2011-01-21 | 用于传送和接收远程呈现图形数据的方法和*** |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610231111.2A Active CN105704161B (zh) | 2010-01-22 | 2011-01-21 | 用于传送和接收远程呈现图形数据的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (2) | US8463918B2 (zh) |
CN (2) | CN102148824B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104054068A (zh) * | 2011-11-29 | 2014-09-17 | 韦斯技术有限公司 | 用于远程桌面协议的改进的带宽优化 |
CN104837017A (zh) * | 2014-02-10 | 2015-08-12 | 深圳富泰宏精密工业有限公司 | 智能分块图像传输***及方法 |
CN105141626A (zh) * | 2015-09-17 | 2015-12-09 | 上海赛为信息技术有限公司 | 优化的spice wan的***及方法 |
WO2015196409A1 (en) * | 2014-06-26 | 2015-12-30 | Intel Corporation | Intelligent gpu scheduling in a virtualization environment |
US10970129B2 (en) | 2015-09-22 | 2021-04-06 | Intel Corporation | Intelligent GPU scheduling in a virtualization environment |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9137338B2 (en) | 2010-01-22 | 2015-09-15 | Microsoft Technology Licensing, Llc | Multi-link remote protocol |
US8463918B2 (en) | 2010-01-22 | 2013-06-11 | Microsoft Corporation | Loss tolerant protocol for remoting desktop graphics |
US8806190B1 (en) | 2010-04-19 | 2014-08-12 | Amaani Munshi | Method of transmission of encrypted documents from an email application |
US10567457B1 (en) * | 2014-09-29 | 2020-02-18 | Amazon Technologies, Inc. | Dynamic rotation of streaming protocols |
EP3269105B1 (en) * | 2015-03-09 | 2019-06-05 | Telefonaktiebolaget LM Ericsson (publ) | Transmission encryption in a proxy |
EP3664358A1 (en) * | 2018-12-03 | 2020-06-10 | Nagravision S.A. | Methods and devices for remote integrity verification |
TWI731287B (zh) * | 2018-12-22 | 2021-06-21 | 威聯通科技股份有限公司 | 網路應用程式產品及處理應用層協定的方法 |
US12020378B2 (en) * | 2020-08-18 | 2024-06-25 | Qualcomm Incorporated | Compressed geometry rendering and streaming |
CN112073750B (zh) * | 2020-09-14 | 2023-02-28 | 浙江源创智控技术有限公司 | 一种远程桌面控制方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758286A (zh) * | 2005-11-16 | 2006-04-12 | 华中科技大学 | 基于图像的三维远程可视化方法 |
CN1996919A (zh) * | 2006-11-29 | 2007-07-11 | 上海电力学院 | 利用手机实现可视化家电智能控制的***和方法 |
US20090183085A1 (en) * | 2008-01-15 | 2009-07-16 | International Business Machines Corporation | Method and system for optimizing bandwidth usage in remote visualization |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182127B1 (en) | 1997-02-12 | 2001-01-30 | Digital Paper, Llc | Network image view server using efficent client-server tilting and caching architecture |
US6061714A (en) | 1997-05-07 | 2000-05-09 | International Business Machines Corporation | Persistent cache synchronization and start up system |
GB9925101D0 (en) | 1999-10-22 | 1999-12-22 | Virtual Access Ireland Limited | Multi channel communication control system and method |
DE60017356T2 (de) | 2000-03-02 | 2005-06-02 | Matsushita Electric Industrial Co., Ltd., Kadoma | Datenübertragung über ein unzuverlässiges Netz |
US6708218B1 (en) | 2000-06-05 | 2004-03-16 | International Business Machines Corporation | IpSec performance enhancement using a hardware-based parallel process |
US7274368B1 (en) | 2000-07-31 | 2007-09-25 | Silicon Graphics, Inc. | System method and computer program product for remote graphics processing |
US7587520B1 (en) | 2001-01-24 | 2009-09-08 | 3Dlabs Inc. Ltd. | Image display system with visual server |
US7327676B2 (en) * | 2001-10-11 | 2008-02-05 | Nippon Telegraph And Telephone Corporation | Data transmission control method, program therefor and data transmission unit using the same |
US6989836B2 (en) | 2002-04-05 | 2006-01-24 | Sun Microsystems, Inc. | Acceleration of graphics for remote display using redirection of rendering and compression |
US7346652B2 (en) | 2002-05-13 | 2008-03-18 | First Data Corporation | Asynchronous data validation |
DE10242919A1 (de) | 2002-09-16 | 2004-03-25 | Siemens Ag | System zur virtuellen Prozessanbindung über Remote Desktop Protocol (RDP) |
US7441267B1 (en) | 2003-03-19 | 2008-10-21 | Bbn Technologies Corp. | Method and apparatus for controlling the flow of data across a network interface |
US7720906B2 (en) * | 2003-11-24 | 2010-05-18 | Microsoft Corporation | Web service for remote application discovery |
US20060168526A1 (en) * | 2005-01-12 | 2006-07-27 | Nokia Corporation | Platform-specific application user interface remoting |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7548547B2 (en) | 2006-03-31 | 2009-06-16 | Microsoft Corporation | Controlling the transfer of terminal server data |
US7460725B2 (en) | 2006-11-09 | 2008-12-02 | Calista Technologies, Inc. | System and method for effectively encoding and decoding electronic information |
US7684364B2 (en) | 2006-11-14 | 2010-03-23 | Cisco Technology, Inc. | System and method for providing a virtual line channel in a packet based communication network |
US8140610B2 (en) | 2007-05-31 | 2012-03-20 | Microsoft Corporation | Bitmap-based display remoting |
US20080313545A1 (en) | 2007-06-13 | 2008-12-18 | Microsoft Corporation | Systems and methods for providing desktop or application remoting to a web browser |
US8924512B2 (en) | 2007-06-15 | 2014-12-30 | Microsoft Corporation | Extensible remote display infrastructure with dynamic virtual channels |
US20090027495A1 (en) | 2007-07-25 | 2009-01-29 | Stas Oskin | Internet visual surveillance and management technology for telecommunications, Internet, cellular and other communications companies |
US8046695B2 (en) | 2007-10-19 | 2011-10-25 | Citrix Systems, Inc. | Methods and systems for incorporating at least one window from a first desktop environment having a first themed graphical display into a second desktop environment having a second themed graphical display |
US7769806B2 (en) * | 2007-10-24 | 2010-08-03 | Social Communications Company | Automated real-time data stream switching in a shared virtual area communication environment |
US9444894B2 (en) * | 2009-04-15 | 2016-09-13 | Wyse Technology Llc | System and method for communicating events at a server to a remote device |
US8463918B2 (en) | 2010-01-22 | 2013-06-11 | Microsoft Corporation | Loss tolerant protocol for remoting desktop graphics |
US9137338B2 (en) | 2010-01-22 | 2015-09-15 | Microsoft Technology Licensing, Llc | Multi-link remote protocol |
-
2010
- 2010-01-22 US US12/691,979 patent/US8463918B2/en active Active
-
2011
- 2011-01-21 CN CN201110029879.9A patent/CN102148824B/zh active Active
- 2011-01-21 CN CN201610231111.2A patent/CN105704161B/zh active Active
-
2013
- 2013-05-31 US US13/906,962 patent/US9225784B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758286A (zh) * | 2005-11-16 | 2006-04-12 | 华中科技大学 | 基于图像的三维远程可视化方法 |
CN1996919A (zh) * | 2006-11-29 | 2007-07-11 | 上海电力学院 | 利用手机实现可视化家电智能控制的***和方法 |
US20090183085A1 (en) * | 2008-01-15 | 2009-07-16 | International Business Machines Corporation | Method and system for optimizing bandwidth usage in remote visualization |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104054068A (zh) * | 2011-11-29 | 2014-09-17 | 韦斯技术有限公司 | 用于远程桌面协议的改进的带宽优化 |
CN104054068B (zh) * | 2011-11-29 | 2018-01-16 | 韦斯技术有限公司 | 用于远程桌面协议的改进的带宽优化 |
CN104837017A (zh) * | 2014-02-10 | 2015-08-12 | 深圳富泰宏精密工业有限公司 | 智能分块图像传输***及方法 |
CN104837017B (zh) * | 2014-02-10 | 2019-11-22 | 深圳富泰宏精密工业有限公司 | 智能分块图像传输***及方法 |
WO2015196409A1 (en) * | 2014-06-26 | 2015-12-30 | Intel Corporation | Intelligent gpu scheduling in a virtualization environment |
US10133597B2 (en) | 2014-06-26 | 2018-11-20 | Intel Corporation | Intelligent GPU scheduling in a virtualization environment |
CN105141626A (zh) * | 2015-09-17 | 2015-12-09 | 上海赛为信息技术有限公司 | 优化的spice wan的***及方法 |
US10970129B2 (en) | 2015-09-22 | 2021-04-06 | Intel Corporation | Intelligent GPU scheduling in a virtualization environment |
Also Published As
Publication number | Publication date |
---|---|
CN102148824B (zh) | 2016-05-25 |
CN105704161A (zh) | 2016-06-22 |
US20110185071A1 (en) | 2011-07-28 |
CN105704161B (zh) | 2019-05-28 |
US9225784B2 (en) | 2015-12-29 |
US8463918B2 (en) | 2013-06-11 |
US20130268685A1 (en) | 2013-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102148824B (zh) | 用于传送和接收远程呈现图形数据的方法和*** | |
CN102137151A (zh) | 多链路远程协议 | |
CN102195752B (zh) | 使用基于数据报的传输协议来传送远程呈现数据的方法 | |
CN102196033A (zh) | 远程内容分类以及使用多个传输信道的传输 | |
US9146884B2 (en) | Push pull adaptive capture | |
US7206811B2 (en) | System and method for facilitating real-time collaborating by collapsing a queue for a slow client | |
CN102447901B (zh) | 用于处理要传送到远程计算设备的图形数据的方法和*** | |
US8165155B2 (en) | Method and system for a thin client and blade architecture | |
CN102932324B (zh) | 支持降低的网络带宽使用的跨帧渐进损坏 | |
CN102239483B (zh) | 命令遥控 | |
CN102523443A (zh) | 用于图像压缩的熵编码器 | |
US20040181796A1 (en) | Real-time collaboration client | |
US20070185959A1 (en) | Control unit operations in a real-time collaboration server | |
US8307103B2 (en) | Tear-free remote desktop protocol (RDP) display | |
US20090210482A1 (en) | Framework for Rendering Plug-ins in Remote Access Services | |
CN102378976B (zh) | 使用多个处理器的图像压缩加速 | |
CN113034629B (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
CN115292020B (zh) | 一种数据处理方法、装置、设备以及介质 | |
US20090328037A1 (en) | 3d graphics acceleration in remote multi-user environment | |
US20050120351A1 (en) | System and method for a synchronized shared buffer architecture for multimedia players | |
CN118283295A (zh) | 一种图像处理方法、装置、电子设备及存储介质 | |
WO2005045628A2 (en) | System and method for a synchronized shared buffer architecture for multimedia players | |
CN102158474A (zh) | 虚拟用户接口 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150803 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150803 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |