METHODS AND SERVERS FOR ESTABLISHING A CONNECTION BETWEEN A CLIENT SYSTEM AND A VIRTUAL MACHINE EXECUTING IN A TERMINAL SERVICES SESSION AND HOSTING A REQUESTED COMPUTING ENVIRONMENT

Information

  • Patent Application
  • 20070198656
  • Publication Number
    20070198656
  • Date Filed
    October 25, 2006
    18 years ago
  • Date Published
    August 23, 2007
    17 years ago
Abstract
A method for providing access to a computing environment includes the step of receiving a request from a client system for an enumeration of available computing environments. Collected data regarding available computing environments are accessed. Accessed data are transmitted to a client system, the accessed data indicating to the client system each computing environment available to a user of the client system. A request is received from the client system to access one of the computing environments. A connection is established between the client system and a virtual machine hosting the requested computing environment via a terminal services session, the virtual machine executed by a hypervisor executing in the terminal services session provided by an operating system executing on one of a plurality of execution machines.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:



FIG. 1 is a block diagram of one embodiment of an environment in which a client machine accesses a computing resource provided by a remote machine;



FIGS. 1A and 1B are block diagrams depicting embodiments of typical computers useful in embodiments with remote machines or client machines;



FIG. 2A is a block diagram of a system for providing access to a resource;



FIG. 2B is a block diagram of one embodiment of a system in which a client machine can initiate execution of an application program for determining the resource neighborhood of that client machine;



FIG. 2C is a block diagram of an embodiment in which a client machine uses a web browser application to determine its resource neighborhood;



FIGS. 3A, 3B, and 3C are block diagrams of embodiments of systems of communication among a client machine and multiple remote machines;



FIG. 3D is a block diagram of one embodiment of a system in which a client machine can access a resource from a resource neighborhood web page displayed at that client machine;



FIG. 3E is a block diagram of one embodiment of a system in which a remote machine acts as an intermediary for a machine farm;



FIG. 4 is a block diagram of one embodiment of a resource neighborhood application in which a client machine is in communication with one of the remote machines;



FIG. 5 is a block diagram of a computing embodiment in which a client machine is in communication with a remote machine having an installed resource neighborhood application program of the invention;



FIG. 6A is a screen shot of an embodiment of a display of a client machine after a resource neighborhood application program is executed;



FIG. 6B is a screen shot of another embodiment of a display screen of a client machine after the resource neighborhood application program is executed;



FIG. 7A is a block diagram of an embodiment of a network providing policy-based access to application programs for a machine;



FIG. 7B is a block diagram depicting a more detailed embodiment of a policy engine;



FIG. 8 is a flowchart depicting one embodiment of a process for providing access to a resource;



FIG. 9 is a flow diagram depicting one embodiment of a process for electing a management node;



FIG. 10 is a flow diagram depicting one embodiment of a process to update information collected by the management node;



FIG. 11 is a block diagram depicting an embodiment of a machine farm including first and second network management processes;



FIG. 12 is a block diagram depicting one embodiment of a virtual machine management component;



FIG. 13 is a block diagram depicting one embodiment of a session management component;



FIG. 14 is a block diagram depicting one embodiment of a system in which a drive associated with the client machine 10 is made available to a computing environment;



FIG. 15A is a block diagram depicting one embodiment of a client machine supporting multiple client machine display devices;



FIG. 15B is a block diagram depicting one embodiment of a system for supporting multiple client machine display devices



FIG. 15C is a block diagram depicting one embodiment of a session login mechanism providing support for multiple client machine display devices;



FIG. 16A is a flow diagram depicting one embodiment of the steps to be taken to provide a desired display layout to a client machine having multiple display devices;



FIG. 16B is a flow diagram depicting one embodiment of a process to modify a window message;



FIG. 16C is a flow diagram depicting one embodiment of the steps taken to associate a display layout with a client machine;



FIG. 16D is a flow diagram depicting one embodiment of the steps taken to change a desired display layout for a client machine;



FIG. 17 is a block diagram depicting one embodiment of a system in which a remote machine authenticates the user of a client machine;



FIG. 18 is a flow diagram depicting one embodiment of the steps taken to access a plurality of files comprising an application program;



FIG. 19 is a block diagram depicting one embodiment of a client machine 10 including an application streaming client, a streaming service and an isolation environment;



FIG. 20 is a flow diagram depicting one embodiment of steps taken by a client machine to execute an application;



FIG. 21 is a block diagram depicts one embodiment of a plurality of application files;



FIG. 22A is a flow diagram depicting one embodiment of the steps taken to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;



FIG. 22B is a flow diagram depicting one embodiment of the steps taken by a remote machine to enable transparent distributed program execution on a remote machine through the selection of graphical indicia representative of a data file located on the client machine;



FIG. 23 is a flow diagram depicting another embodiment of the steps taken to enable transparent distributed program execution on a client machine through the selection of graphical indicia representative of a data file located on a remote machine;



FIG. 24 is a flow diagram depicting one embodiment of the steps taken to negotiate the protocol for a connection between a client machine and a remote machine;



FIG. 25 is a block diagram depicting an embodiment of a remote machine and a client machine establishing a protocol stack for communication;



FIG. 26 is a block diagram depicting one embodiment of a client machine architecture;



FIG. 27 is a block diagram depicting one embodiment of communication between a client machine and a machine farm;



FIG. 28 is a block diagram depicting one embodiment of a client machine architecture;



FIG. 29 is a flow diagram depicting one embodiment of the steps taken to display application output in a web page;



FIG. 30 is a flow diagram depicting one embodiment of the steps taken link to a virtual machine identified by a hyperlink configuration file;



FIG. 31 is a block diagram depicting an embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;



FIG. 32 is a block diagram depicting another embodiment of a system architecture in which a multiplexer is used to transmit data to more than one client machine;



FIG. 33 is a block diagram depicting one embodiment of an architecture for displaying application output in a web page;



FIG. 34 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 35 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 36 is a block diagram depicting another embodiment of an architecture for displaying application output in a web page;



FIG. 37 is a block diagram depicting one embodiment of a client machine receiving window attribute data via a virtual channel;



FIG. 38 is a block diagram depicting a client machine connected to more than one remote machine;



FIG. 39 is a flow diagram depicting one embodiment of the steps taken to detect and transmit server-initiated display changes;



FIG. 40 is a flow diagram depicting one embodiment of the steps taken to detect and transmit client-initiated display changes;



FIG. 41 is a flow diagram depicting one embodiment for enabling transmission of seamless windows between a client machine and a remote machine;



FIG. 42 is a block diagram depicting one embodiment of an agent;



FIG. 43 is a block diagram depicting one embodiment of a system for enabling seamless windowing mode between a client machine and remote computing environments;



FIG. 44 is a flow diagram depicting one embodiment of the steps taken in a method of receiving window attribute data and graphical data associated with remote windows from virtualized operating systems and from native operating systems;



FIG. 45 is a block diagram of a system for providing a client with a reliable connection to a host service according to an embodiment of the invention;



FIG. 46 is a block diagram of a system for providing a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 47 depicts communications occurring over a network according to an embodiment of the invention;



FIG. 48 depicts communications occurring over a network according to another embodiment of the invention;



FIG. 49 depicts a process for encapsulating a plurality of secondary protocols within a first protocol for communication over a network according to an embodiment of the invention;



FIG. 50 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with the invention;



FIG. 51 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 5 to maintain authentication credentials during a first communication session in accordance with the invention;



FIG. 52 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 50 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53A in accordance with the invention;



FIG. 53 is a block diagram of an embodiment of a computer system to maintain authentication credentials in accordance with another embodiment of the invention;



FIG. 54 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a first communication session in accordance with the invention;



FIG. 55 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of the first communication session of FIG. 53 in accordance with the invention;



FIG. 56 is a flow diagram of the steps followed in an embodiment of the computer system of FIG. 53 to maintain authentication credentials during a second communication session following the termination of a second communication channel of the first communication session of FIG. 53 in accordance with the invention;



FIG. 57 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to an embodiment of the invention;



FIG. 58 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 59 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 60 is a block diagram of a system to maintain authentication credentials and provide a client with a reliable connection to a host service according to another embodiment of the invention;



FIG. 61 is a block diagram of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service according to an embodiment of the invention;



FIG. 62 is a block diagram of an embodiment of a system for providing a client with a reliable connection to a host service and further including components for reconnecting the client to a host service;



FIG. 63 is a block diagram of an embodiment of FIG. 61 further including components for initially connecting the client to a host service;



FIG. 64 is a block diagram of the system of FIG. 62 further including components for initially connecting the client to a host service and to maintain authentication credential according to an embodiment of the invention;



FIG. 65 is a flow diagram of a method for network communications according to an embodiment of the invention;



FIG. 66 is a flow diagram of a method for reconnecting the client to the host services;



FIGS. 67-69 are flow diagrams of a method for connecting a client to a plurality of host services according to an embodiment of the invention;



FIG. 70 is a flow diagram of a method for providing a client with a reliable connection to host services and for reconnecting the client to the host services according to an embodiment of the invention;



FIGS. 71-72 are flow diagrams of a method for reconnecting a client to host services according to an embodiment of the invention;



FIG. 73 is a conceptual block diagram of an embodiment of client software and server software;



FIG. 74 is a flow chart of an embodiment of a method for monitoring network performance;



FIG. 75 is a flow chart of an embodiment of a method of operation of the server software;



FIG. 76 is a flow chart of an embodiment of a method of generating sub-metrics by the client;



FIG. 77 is a flow chart of an embodiment of a method of generating sub-metrics by the client;



FIG. 78 is a flow chart of an embodiment of a method of generating sub-metrics by the server;



FIG. 79 is a schematic diagram depicting a networked client-server computing system;



FIG. 80 is a flow chart depicting a method for connecting a client machine to disconnected application sessions;



FIG. 81 is a flow chart depicting on embodiment a method for connecting the client machine to active application sessions;



FIG. 82 is a schematic diagram depicting one embodiment of a client machine in communication with several remote machines;



FIG. 83 is a flow diagram depicting one embodiment of steps taken in a method to connect a user of a client machine to a computing environment;



FIG. 84 is a flow diagram depicting an embodiment of steps taken in a method to connect a user of a client machine to a computing environment in response to selection of a graphical user interface element;



FIG. 85 is a block diagram depicting one embodiment of a remote machine able to connect the client machine to an application session;



FIG. 86 is a block diagram of an embodiment of a system for connecting a client machine to an application session responsive to application of a policy;



FIG. 87 is a flow diagram depicting the steps taken in one method to connect a client machine to an application session responsive to application of a policy;



FIG. 88 is a block diagram depicting one embodiment of a system for providing, by a virtual machine, access to a computing environment;



FIG. 89A is a block diagram depicting one embodiment of a storage device and a computing device;



FIG. 89B is a flow diagram depicting one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a storage device;



FIG. 90A is a block diagram depicting one embodiment of a mobile computing device;



FIG. 90B is a flow diagram depicting one embodiment of the steps taken in a method for providing a portable computing environment by a mobile computing device;



FIG. 91A is a block diagram of one embodiment of a mobile computing device and a computing device;



FIG. 91B is a flow diagram depicting depicts one embodiment of the steps taken in a method for providing access to a computing environment on a computing device via a mobile computing device;



FIG. 92A is a block diagram depicting one embodiment of a mobile computing device and a computing device comprising a computing environment selector;



FIG. 92B is a flow diagram depicting an embodiment of the steps taken in a method for establishing a computing environment on a computing device via a mobile computing device;



FIG. 93A is a block diagram depicting one embodiment of a mobile computing device connecting to a docking station;



FIG. 93B is a block diagram depicting one embodiment of a docking station connecting a mobile computing device and a computing device;



FIG. 93C is a block diagram depicting one embodiment of a mobile computing device and computing device having a docking mechanism;



FIG. 93D is a flow diagram depicting one embodiment of the steps taken in a method of providing to a mobile computing device one or more hardware resources;



FIG. 94A is a block diagram depicting one embodiment of a mobile computing device having a plurality of processors;



FIG. 94B is a flow diagram depicting one embodiment of the steps taken in a method for switching, by a mobile computing device, between use of multiple processors;



FIG. 95 is a block diagram depicting one embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine;



FIG. 96 is a block diagram depicting an embodiment of a system for providing to a first client agent, via a second client agent on a first remote machine, output data generated by a resource executing in a virtual machine provided by a second remote machine; and



FIG. 97 is a block diagram depicting one embodiment of a system for identifying, by a coordinator machine, a worker machine providing, via a virtual machine, access to a computing environment.


Claims
  • 1. A method for providing access to a computing environment by a virtual machine launched by a hypervisor executing in a terminal services session, the method comprising the steps of: a) receiving a request from a client system for an enumeration of available computing environments;b) accessing collected data regarding available computing environments;c) transmitting accessed data to a client system that indicates to the client system each computing environment available to a user of the client system,d) receiving, from the client system, a request to access one of the computing environments; ande) establishing a connection between the client system and a virtual machine hosting the requested computing environment via a terminal services session, the virtual machine executed by a hypervisor executing in the terminal services session provided by an operating system executing on one of a plurality of execution machines.
  • 2. The method of claim 1 further comprising determining, for each stored computing environment, whether that computing environment is available to a user of the client system.
  • 3. The method of claim 2 wherein step (c) comprises transmitting the accessed data to a client system, the transmitted data displayable at the client system as icons in a graphical user interface window representing computing environments available to a user of the client system.
  • 4. The method of claim 2 wherein step (c) comprises transmitting the accessed data to a client system, the transmitted data displayable at the client system as icons in a graphical user interface window representing computing environments unavailable to a user of the client system.
  • 5. The method of claim 1 wherein step (d) comprises receiving, from the client system, a request to execute an application, the requested application requiring one of the available computing environments.
  • 6. The method of claim 1 wherein step (e) comprises establishing a connection between the client system and the virtual machine, via the terminal services session, using a presentation layer protocol.
  • 7. The method of claim 1 wherein step (e) comprises establishing a connection between the client system and the virtual machine, via the terminal services session, using the X11 protocol.
  • 8. The method of claim 1 wherein step (e) comprises establishing a connection between the client system and the virtual machine, via the terminal services session, using the Remote Desktop Presentation (RDP) protocol.
  • 9. The method of claim 1 wherein step (e) comprises establishing a connection between the client system and the virtual machine, via the terminal services session, using the Independent Computing Architecture (ICA) protocol.
  • 10. The method of claim 1 further comprising receiving user credentials from the client system.
  • 11. The method of claim 10 wherein step (c) comprises transmitting the accessed data to a client system responsive to receiving the user credentials, the transmitted data displayable at the client system as icons in a graphical user interface window representing computing environments available to the client system.
  • 12. The method of claim 10 wherein step (c) comprises transmitting the accessed data to a client system responsive to receiving the user credentials, the transmitted data displayable at the client system as icons in a graphical user interface window representing computing environments unavailable to the client system.
  • 13. The method of claim 10 further comprising authenticating the user of the client system based on the received user credentials and providing access to a selected one of the available computing environment images without requiring further input of user credentials by a user of the client system.
  • 14. The method of claim 1 further comprising gathering information about the client system and generating a data set from the gathered information.
  • 15. The method of claim 14 wherein step (c) comprises transmitting the accessed data to a client system indicating to the client system, responsive to the generated data set, each computing environment available to the client system.
  • 16. The method of claim 14 wherein step (c) comprises transmitting the accessed data to a client system indicating to the client system, responsive to the application of a policy to the generated data set, each computing environment available to the client system.
  • 17. The method of claim 1 wherein step (a) comprises receiving, by a web server, a request from a client system for an enumeration of available computing environments.
  • 18. The method of claim 17 wherein step (b) further comprises (i) retrieving from a persistent storage a page template, (ii) creating, at the web server, a page describing a display of computing environment images available to the client system responsive to the accessed data and the retrieved page template, and (iii) transmitting the created page to a client system indicating to the client system each computing environment available to the client system.
  • 19. The method of claim 1 further comprising creating an output display indicating each computing environment available to the client system and transmitting the created output display to the client system.
  • 20. The method of claim 1 further comprising creating an output display comprising a page constructed in a markup language, the output display indicating each computing environment available to the client system and transmitting the created output display to the client system.
  • 21. In a network including a client system and a plurality of servers storing computing environments, a server comprising: a broker module accessing collected data regarding computing environments and determining, for each computing environment, whether that computing environment image is available to a client system;a transmitter transmitting accessed data to the client system indicating to the client system each computing environment determined to be available to the client system;a receiver receiving a request to access one of the available computing environments; anda transceiver providing a connection between the client system and a virtual machine providing the requested computing environment, the virtual machine executed by a hypervisor executing in a terminal services session provided by an operating system executing on one of a plurality of execution machines.
  • 22. The server of claim 21 wherein the receiver receives user credentials from the client system.
  • 23. The server of claim 22 further comprising a database storing the collected data, wherein the broker module determines for each computing environment whether that computing environment image is available to a client system based on the user credentials and the collected data.
  • 24. The server of claim 21 further comprising a database storing the collected data.
  • 25. The server of claim 21 further comprising an output display creation engine creating output displays indicating each computing environment available to the client system.
  • 26. The server of claim 25 wherein the output display creation engine creates a web page describing a display of the computing environments available to a client system, the web page created responsive to the collected information and a web page template.
  • 27. The server of claim 21 wherein the transceiver provides a connection between the client system and a virtual machine providing the requested computing environment, the transceiver establishing a presentation-layer protocol connection.
  • 28. The server of claim 21 wherein the transceiver provides a connection between the client system and a virtual machine providing the requested computing environment, the transceiver establishing an X11 connection.
  • 29. The server of claim 21 wherein the transceiver provides a connection between the client system and a virtual machine providing the requested computing environment, the transceiver establishing an ICA connection.
  • 30. The server of claim 21 wherein the transceiver provides a connection between the client system and a virtual machine providing the requested computing environment, the transceiver establishing an RDP connection.
Provisional Applications (1)
Number Date Country
60761674 Jan 2006 US