Patent Publication Number: US-10791103-B2

Title: Adapting remote display protocols to remote applications

Description:
BACKGROUND 
     In virtual desktop infrastructures (VDIs), virtual applications hosted on virtual machines (VMs) running on centralized servers are delivered to end users over a network. Such centralized and automated management of the virtualized operating system, applications, and user data provides increased control and cost savings. The remote virtual applications can be accessed by means of a client, for example a native application on an operating system, or from a web client within a browser. 
     The remote applications can be delivered to the client using one of a number of different remote display protocols that encode, encrypt and transport display information from server to client according to a set of data transfer rules. Such protocols include PCoIP, Blast, as well as many others. Traditionally, the choice of protocol for a particular application was left to the user. However, as different protocols are better at handling different types of applications, this can lead to an inefficient use of computing resources. Moreover, the user may not be familiar with the protocols and may not know which one to choose. Furthermore, remote display protocols are configurable with further options that can affect the remote application. Accordingly, there is a need for a method of automatically selecting and configuring an appropriate remote display protocol for a particular remote application. 
     SUMMARY 
     One embodiment disclosed herein provides a computer-implemented method of connecting to a remote virtual application. The method includes the steps carried out at a remote desktop client. The steps include transmitting a request for virtual application connection information, receiving, in response to the request, a path to an executable file, a name or identifier of a remote display protocol, and an indication of a protocol configuration associated with a first virtual application, and causing the executable file for the first virtual application to be launched in a virtual computing instance (e.g., a virtual machine or a container) and accessing the first virtual application using the remote display protocol and the protocol configuration. 
     Further embodiments of the present invention include computer systems configured to carry out the above methods, and non-transitory computer-readable storage media comprising instructions that cause the computer system to carry out the above methods. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a computing system in which one or more embodiments of the present disclosure may be utilized. 
         FIG. 2  illustrates a method of connecting to a remote application, according to an embodiment. 
         FIG. 3  illustrates a user interface screen according to an embodiment. 
         FIG. 4  illustrates a method of connecting a remote desktop client to a remote application, according to an embodiment. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates components of a computing system  100  in which one or more embodiments may be implemented. Remote desktop client  102  is a software component or module that runs on an operating system of a local computing device. Client  102  can be configured as a native application or else configured to nm as a web client. Client  102  provides an interface for a user to access remote applications App 1 -App 3 , which are running in one of virtual machines  120   1-N  instantiated on a server that is remote from the user location. Through client  102 , the user can access the remote applications from any location, using, e.g., a general purpose computer running a commodity operating system. An example of client  102  is VMware Horizon® View HTML Access, available commercially from VMware Inc., of Palo Alto, Calif. 
     Computing system  100  includes a connection server  108  that manages connections between client  102  and a particular one of virtual machines  120   1-N  running within a remote server  104 . In some embodiments, connection server  108  is configured to authenticate the access to the VM by client  102 . Connection server  108  is further coupled to connection server storage  140 , which has a protocol table  150  stored therein. Protocol table  150  comprises one or more entries corresponding to each application available to the client  102  from remote server  104 . Each entry in protocol table comprises the name or identifier of an application, the path to the executable of the application, the name or identifier of the recommended protocol for the application, and an indication of the recommended protocol configuration for the application. 
     Remote server  104  can be constructed on a hardware platform  106 , for example an x86 server platform. As shown, hardware platform  106  of remote server  104  includes conventional components of a computing device, such as one or more processors (CPUs)  108 , random access memory (RAM)  110 , a network interface controller (NIC)  112 , and storage  114 . Storage  114  represents local storage devices (e.g., one or more hard disks, flash memory modules, solid state disks, and optical disks) and/or a storage interface that enables remote server  104  to communicate with one or more network data storage systems. Examples of a storage interface are a host bus adapter (HBA) that couples remote server  104  to one or more storage arrays, such as a storage area network (SAN) or a network-attached storage (NAS), as well as other network data storage systems. 
     Remote server  104  includes a virtualization software layer, e.g, hypervisor  116 , that abstracts processor, memory, storage, and networking resources of hardware platform  106  to support execution of virtual machines  120   1  to  120   N  (collectively referred to as VMs  120 ) that run concurrently on the same remote servers. Hypervisor  116  enables sharing of the hardware resources of remote server  104  by VMs  120 . Hypervisor  116  may run on top of the operating system of remote server  104  or directly on hardware components of remote server  104  (i.e. a bare-metal hypervisor). 
     When client  102  is accessing a remote application using a remote desktop protocol, the graphical user interface (GUI) of the remote application is generated by the VM running on remote server  104  to which client  102  is connected (hereinafter referred to as “the remote VM”). The GUI image data is then encoded and transmitted to client  102 , where it is decoded and displayed to the user. Similarly, any user input information, such as keyboard and mouse events, is transmitted from the client  102  to the remote VM, where it may in turn cause various updates to the GUI of the remote desktop. In this manner, the user is able to view the GUI of the remote application and interact with it as if the application was actually running on the host device of client  102  even though the application is actually executing remotely. 
     Client  102  can access applications running in the remote VM using one of the many available remote display protocols. A remote display protocol is a set of rules that govern the encoding and data transfer between a client and a server. Remote display protocols include Blast™, PCoIP™, RemoteFX®, Remote Desktop Protocol (RDP), Remote Frame Buffer Protocol (RFB), HDX (a remote display protocol from Citrix Systems, Inc.), and others. Because of the network bandwidth and latency limitations, the choice of protocol for a given remote application can present a number of challenges that impact the end user experience. For example, certain protocols such as Blast™ are more suited to high-bandwidth applications such as streaming video applications, whereas protocols such as PCoIP™ are better suited to low-bandwidth applications such as word processing applications. 
       FIG. 2  illustrates a method  200  of accessing a remote application, according to an embodiment. As shown, method  200  begins at step  202  where client  102  is launched by a user. At step  203 , client  102  gathers credentials from the user and sends them to the connection server  108  in order to log into remote VM  120 . At step  204 , client  102  then sends a request to connection server  108  for a list of available applications, and their file paths and protocol information. 
     At step  206 , client  102  receives the requested information from the connection server  108 . The protocol information includes a name or identifier of a protocol and an indication of a protocol configuration. The protocol is the remote display protocol that is recommended for the particular application by the system administrator and the protocol configuration comprises one or more configuration settings for a particular protocol. For example, the Blast™ protocol can be configured with a “low bandwidth” setting or a “high-bandwidth” setting, and the PCoIP™ protocol can be configured with a “maximum FPS (frames per second)” setting. In one embodiment, for each application in the list, only the name or identifier of the recommended protocol and the indication of the recommended protocol configuration are returned to client  102 . In another embodiment, different protocols and protocol configurations are presented in a drop-down menu for selection by the user, as shown in  FIG. 3 . The recommended protocol and the protocol configuration are presented as default choices that may be modified by the user, for example by using the drop-down menu. At step  208 , in response to a selection of an application by a user, the remote application is configured for use with the protocol and the protocol configuration as selected by the user. In some embodiments, at optional step  209 , the user selections of protocol and protocol configuration are transmitted to connection server  108  and stored in protocol table  150  so that, upon a subsequent launch of any of the applications in the list by the user, client  102  will access the application using the stored protocol and protocol configuration. At step  210  the remote application is accessed by client  102 . 
       FIG. 4  illustrates a method  400  carried out by connection server  108  in response to a user launching client  102  on a client device. Connection server  108  is a component or server that manages connection from a client  102  to a remote server  104 . Connection server  108  is configured to authenticate requests from client  102  and determine what applications are available to client  102  on a particular VM  120 , as well as the recommended protocol and protocol configuration for each of the applications. 
     Method  400  begins at step  402 , where connection server  108  receives a request from a client  102  for a list of installed applications, and their file paths and protocol information. At step  404 , connection server  108  accesses protocol table  150  located on connection server storage  140  to determine a list of installed applications of client  102 . At step  406 , for each application in the list of installed applications, connection server  108  determines the file path, the protocol, and the protocol configuration. At step  408 , connection server  108  transmits to client  102  the list of applications, and for each application, the executable path, the name or identifier of the protocol, and the indication of the protocol configuration to the requesting client  102 . 
     Protocol table  150  is updated each time a new application is installed at client  102  and other clients whose connections to remote desktops are managed by connection server  108 . For each application, the entry for that application in protocol table  150  is populated with the name or identifier of default protocol and the indication of the protocol configurations for that application. In addition, if the user selects a different protocol or protocol configuration for a virtual application that is different from the default one, protocol table  150  is updated in accordance with the user&#39;s selection. This update is shown as an optional step  410  in  FIG. 4 . 
     The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities usually, though not necessarily, these quantities may take the form of electrical or magnetic signals where they, or representations of them, are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments of the invention may be useful machine operations. In addition, one or more embodiments of the invention also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. 
     The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. 
     One or more embodiments of the present invention may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more computer readable media. The term computer readable medium refers to any data storage device that can store data which can thereafter be input to a computer system computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs), CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion. 
     Although one or more embodiments of the present invention have been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be made within the scope of the claims. Accordingly, the described embodiments are to be considered as illustrative and not restrictive, and the scope of the claims is not to be limited to details given herein, but may be modified within the scope and equivalents of the claims. In the claims, elements and/or steps do not imply any particular order of operation, unless explicitly stated in the claims. 
     In addition, while described virtualization methods have generally assumed that virtual machines present interfaces consistent with a particular hardware system, persons of ordinary skill in the art will recognize that the methods described may be used in conjunction with virtualizations that do not correspond directly to any particular hardware system. Virtualization systems in accordance with the various embodiments, implemented as hosted embodiments, non-hosted embodiments, or as embodiments that tend to blur distinctions between the two, are all envisioned. Furthermore, various virtualization operations may be wholly or partially implemented in hardware. For example, a hardware implementation may employ a look-up table for modification of storage access requests to secure non-disk data. 
     Certain embodiments as described above involve a hardware abstraction layer on top of a host computer. The hardware abstraction layer allows multiple contexts or virtual computing instances to share the hardware resource. In one embodiment, these virtual computing instances are isolated from each other, each having at least a user application running therein. The hardware abstraction layer thus provides benefits of resource isolation and allocation among the virtual computing instances. In the foregoing embodiments, virtual machines are used as an example for the virtual computing instances and hypervisors as an example for the hardware abstraction layer. As described above, each virtual machine includes a guest operating system in which at least one application runs. It should be noted that these embodiments may also apply to other examples of virtual computing instances, such as containers not including a guest operation system, referred to herein as “OS-less containers” (see, e.g., www.docker.com). OS-less containers implement operating system-level virtualization, wherein an abstraction layer is provided on top of the kernel of an operating system on a host computer. The abstraction layer supports multiple OS-less containers each including an application and its dependencies. Each OS-less container runs as an isolated process in userspace on the host operating system and shares the kernel with other containers. The OS-less container relies on the kernel&#39;s functionality to make use of resource isolation (CPU, memory, block I/O, network, etc.) and separate namespaces and to completely isolate the application&#39;s view of the operating environments. By using OS-less containers, resources can be isolated, services restricted, and processes provisioned to have a private view of the operating system with their own process ID space, file system structure, and network interfaces. Multiple containers can share the same kernel, but each container can be constrained to only use a defined amount of resources such as CPU, memory and I/O. 
     Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the appended claims(s).