MULTILEVEL REDIRECTION IN A VIRTUAL DESKTOP INFRASTRUCTURE ENVIRONMENT
20170318112 · 2017-11-02
Inventors
- Jenin Johnsimon (Bangalore, IN)
- Anil Maryala (Bangalore, IN)
- Shinoj Sebastian (Bangalore, IN)
- Sanmati Tukol (Bangalore, IN)
- Mohammed Sarfraz (Bangalore, IN)
Cpc classification
H04L67/59
ELECTRICITY
H04L67/04
ELECTRICITY
International classification
Abstract
Multilevel redirection can be performed in a VDI environment. When a user establishes a second remote session within a first remote session, various redirection techniques can be configured to span both remote sessions so that redirection will be available within the second remote session in the same manner that redirection was available in the first remote session. Therefore, from the user perspective, redirection will occur regardless of whether the user has established a single tier remote session or multitier remote session.
Claims
1. A method, performed by a multilevel redirector that executes on a first server in a virtual desktop infrastructure (VDI) environment, for performing multilevel redirection, the method comprising: receiving redirection data over a first remote session that is established with the first server; determining whether the redirection data should be routed to an agent on the first server or over a second remote session; and upon determining that the redirection data should be routed over the second remote session, sending the redirection data over the second remote session.
2. The method of claim 1, wherein the first remote session is established between a client and the first server such that the redirection data is received from the client.
3. The method of claim 2, wherein the redirection data is one of USB redirection data or time zone redirection data.
4. The method of claim 2, wherein determining whether the redirection data should be routed to an agent on the first server or over a second remote session comprises determining that a second remote session between the first server and a second server has been established within the first remote session.
5. The method of claim 4, wherein determining whether the redirection data should be routed to an agent on the first server or over a second remote session comprises evaluating input from a user of the client identifying whether the redirection data should be routed to the second server.
6. The method of claim 5, wherein the input from the user is received in conjunction with establishing the second remote session.
7. The method of claim 4, wherein determining whether the redirection data should be routed to an agent on the first server or over a second remote session comprises evaluating one or more policies governing the routing of the redirection data.
8. The method of claim 1, wherein the first remote session is established between the first server and a second server such that the redirection data is received from the second server.
9. The method of claim 8, wherein the redirection data is one of multimedia redirection data or URL redirection data.
10. The method of claim 8, wherein determining whether the redirection data should be routed to an agent on the first server or over a second remote session comprises determining whether the first remote session was established within a second remote session.
11. The method of claim 10, further comprising: detecting that the second remote session has been terminated; and routing additional redirection data received over the first remote session to the agent on the first server.
12. One or more computer storage media storing computer executable instructions which when executed in a VDI environment implement the following components: a proxy configured to execute on a client to establish remote sessions with a first server, the proxy being further configured to implement redirection over the remote sessions; an agent configured to execute on the first server to establish the remote sessions with the proxy and to establish remote sessions with an agent on a second server; and a multilevel redirector configured to execute on the first server, the multilevel redirector being configured to intercept redirection data received over remote sessions established either between the agent on the first server and the proxy or between the agent on the first server and the agent on the second server, the multilevel redirector being further configured to selectively route redirection data received over a first remote session to either the agent on the first server or over a second remote session.
13. The computer storage media of claim 12, wherein the multilevel redirector is configured to route the redirection data received over the first remote session over a second remote session upon determining that the second remote session has been established.
14. The computer storage media of claim 13, wherein the first remote session is established between a client and the first server.
15. The computer storage media of claim 13, wherein the first remote session is established between the first server and the second server.
16. The computer storage media of claim 13, wherein the redirection data received over the first remote session is USB redirection data, and wherein the multilevel redirector is configured to route the USB redirection data over the second remote session in response to user input received in conjunction with establishing the second remote session.
17. A method, performed by a multilevel redirector that executes on a first server in a virtual desktop infrastructure (VDI) environment, for performing multilevel redirection, the method comprising: receiving first redirection data over a first remote session that is established between a client and the first server; detecting that a second remote session has been established between the first server and a second server within the first remote session; and routing the first redirection data over the second remote session to the second server.
18. The method of claim 17, further comprising: receiving second redirection data over the second remote session; and routing the second redirection data over the first remote session to the client.
19. The method of claim 18, wherein the first redirection data is one of: USB redirection data pertaining to a USB device connected to the client such that the USB device is redirected over the first and second remote sessions to the second server; or time zone redirection data such that a time zone of the client is redirected to the second server for use within the second remote session.
20. The method of claim 18, wherein the second redirection data is one of: multimedia redirection data including unrendered multimedia content such that the unrendered multimedia content is redirected over the first and second remote sessions for rendering on the client; or URL redirection data including a streaming URL such that the streaming URL is redirected over the first and second remote sessions to allow the client to employ the streaming URL to stream content directly from a streaming server.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
DETAILED DESCRIPTION
[0024] In this specification and the claims, a client can refer to any type of computing device that is capable of establishing a remote session with a server. Similarly, a server can be any type of computing device or environment (such as a virtual machine) which is capable of establishing remote sessions. A remote session can be established using any available remoting protocol including, for example, Microsoft's Remote Desktop Protocol (RDP), Citrix's Independent Computing Architecture (ICA), VMWare's PC-over-IP (PCoIP), Dell's vWorkspace (EOP), etc. The term “redirection data” will be used to generally refer to any communication sent over a remote session that pertains to redirection. The term “nested remote session” will refer to a remote session that has been established within a remote session including within another nested remote session. In other words, the present invention can implement multilevel redirection over two or more remote sessions.
[0025]
[0026] As shown, each of client 201, server 202, and server 203 includes VDI components 201a, 202a, and 203a respectively. These VDI components can generally represent the various components that are tasked with establishing remote sessions and implementing the various redirection techniques including USB redirection, time zone redirection, multimedia redirection, and URL redirection. For purposes of this disclosure, multimedia redirection encompasses redirecting any type of multimedia content including Flash and HTML5 content. Specific examples of these VDI components will be provided in subsequent figures.
[0027] In addition to these VDI components, client 201 can include a proxy 201b, and servers 202 and 203 can include agents 202b and 203b respectively. Proxy 201b and agents 202b and 203b are configured to intercommunicate over a remote session to allow redirection to be implemented. Servers 202 and 203 can also include multilevel redirectors 202c and 203c respectively. Multilevel redirectors 202c and 203c are tasked with determining whether to bypass an intermediate server when redirection is being performed. For example, assuming client 201 has established a first remote session with server 202 and then established a second remote session with server 203 within the first remote session, multilevel redirector 202c can determine that any redirection should be implemented between client 201 and server 203 rather than between client 201 and server 202 or between server 203 and server 202 as will be further described below.
[0028]
[0029] In contrast,
[0030] It is noted that multilevel redirector 203c can function in the same manner as multilevel redirector 202c. In particular, upon receiving redirection data over remote session 311, multilevel redirector 203c can determine whether an additional remote session has been established within remote session 311 to determine whether USB device 301 should be redirected to server 203 or to another server (i.e., a third server). This allows multilevel redirection to occur regardless of how many nested remote sessions are established. In the illustrated case, there is no remote session established within remote session 311, and therefore, multilevel redirector 203c routes the redirection data to agent 203b to cause virtual USB device 301b to appear on server 203 for use within remote session 311. Once remote session 311 is terminated, and assuming remote session 310 remains established, multilevel redirector 202c can take appropriate action to cause USB device 301 to be redirected to server 202 (e.g., by sending a notification to agent 202b that USB device 301 has been connected). Therefore, the multilevel redirector can constantly monitor the status of remote sessions and can selectively route redirection data accordingly.
[0031] Although not shown in these figures, once a virtual USB device is loaded on server 202 or server 203, applications on these servers can access USB device 301. Such attempts to access USB device 301 and any responses will generate redirection data that the multilevel redirector can also selectively route. For example, with reference to
[0032] To summarize, the multilevel redirector is configured as an intermediary between a client proxy and a server agent or between the agents on two servers. As an intermediary, the multilevel redirector will receive any redirection data and can determine how to route the redirection data based on whether a nested remote session has been established. It is noted, however, that the determination of whether to route redirection data over a nested remote session can also be based on user input and/or one or more configuration settings. For example, with reference to
[0033] Regarding configuration settings, and again with reference to
[0034]
[0035] In contrast,
[0036] It is also noted, in contrast to the redirection of a USB device which would typically only occur to a single server, time zone redirection can be performed simultaneously to each server within which the client has either directly or indirectly established a remote session. For example, as shown in
[0037] In the case of multimedia and URL redirection, the initial flow of redirection data is generally opposite of that in USB and time zone redirection. However, the multilevel redirector still functions as an intermediary to perform proper routing of the redirection data.
[0038] In contrast, in
[0039] The multilevel redirector can be configured to determine whether the remote session over which multimedia redirection data is received (e.g., remote session 511) is a nested remote session. If so, the multimedia redirector can route the multimedia redirection data over the remote session within which the nested remote session is established (e.g., over remote session 510). As described above, this determination can also be based on user input that specifies whether multilevel redirection should be performed. As with the other types of redirection, if there are multiple nested remote sessions, this rerouting of multimedia redirection data can be performed multiple times. For example, if there were a third server between client 201 and server 202 (such that remote session 510 was also a nested remote session), the multilevel redirector on this third server could similarly determine that the unrendered multimedia content should be routed to proxy 201b rather than to the agent on the third server.
[0040]
[0041] In contrast,
[0042] As mentioned above, this routing of the URL can be performed over more than two remote sessions if the client has established more than one nested remote session. In each case, when the multilevel redirector receives a URL over a remote session, it can determine whether the remote session is a nested remote session. If so, the multilevel redirector can route the URL over the next remote session rather than to the agent on the same server. To better illustrate this, it is noted that there may be cases where a “non-nested” remote session is established between server 202 and server 203 (e.g., when remote session 611 but not remote session 610 are established). In such cases, the URL (or other redirection data) should properly be routed to agent 202b rather than over another remote session. Accordingly, the multilevel redirector must be configured to evaluate the environment of the remote session used to transfer redirection data to properly determine how to further route the redirection data.
[0043]
[0044] In contrast,
[0045]
[0046] The multilevel redirector can employ any suitable mechanism to determine whether a remote session has been created in a remote session over which redirection data has been received, or to determine whether a remote session over which redirection data has been received is a nested remote session. For example, because the multilevel redirector is an intermediary, it can detect whenever a remote session is established or terminated and can therefore maintain an appropriate record to facilitate the determination of how to route redirection data. As a specific example, when a nested remote session is created, the nested remote session will be associated with a session ID of the remote session within which the nested remote session is established. This multilevel redirector can employ this session ID to maintain a mapping between a remote session and its nested remote session. Redirection data transferred over a remote session will also be associated with a session ID. Therefore, the multilevel redirector can employ the associated session ID in conjunction with the mappings to determine how to route the redirection data.
[0047] With regards to multilevel USB redirection, in some embodiments of the invention, when a USB device is redirected to a server, session level restrictions can be applied to prevent the USB device from being accessed from within any unauthorized session. For example, with reference to
[0048]
[0049] Method 900 includes an act 901 of receiving redirection data over a first remote session that is established with the first server. For example, multilevel redirector 202c could receive redirection data over any of remote sessions 310, 311, 410, 411, 510, 511, 610, or 611.
[0050] Method 900 includes an act 902 of determining whether the redirection data should be routed to an agent on the first server or over a second remote session. For example, multilevel redirector 202c could determine whether to route the redirection data to agent 202b or over any of remote sessions 310, 311, 410, 411, 510, 511, 610, or 611 based on a number of different factors.
[0051] Method 900 includes an act 903 of, upon determining that the redirection data should be routed over the second remote session, sending the redirection data over the second remote session. For example, multilevel redirector 202c could route the redirection data over any of remote sessions 310, 311, 410, 411, 510, 511, 610, or 611.
[0052] Embodiments of the present invention may comprise or utilize special purpose or general-purpose computers including computer hardware, such as, for example, one or more processors and system memory. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system.
[0053] Computer-readable media is categorized into two disjoint categories: computer storage media and transmission media. Computer storage media (devices) include RAM, ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM), Flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other similarly storage medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Transmission media include signals and carrier waves.
[0054] Computer-executable instructions comprise, for example, instructions and data which, when executed by a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language or P-Code, or even source code.
[0055] Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, and the like.
[0056] The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices. An example of a distributed system environment is a cloud of networked servers or server resources. Accordingly, the present invention can be hosted in a cloud environment.
[0057] The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description.