Client bandwidth emulation in hosted services

US9294549B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9294549-B2
Application numberUS-201213372705-A
CountryUS
Kind codeB2
Filing dateFeb 14, 2012
Priority dateFeb 14, 2012
Publication dateMar 22, 2016
Grant dateMar 22, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Bandwidth on the Internet and intranets is highly variable and unreliable, two properties that can make streaming digital media content difficult. In a virtualization system (e.g., virtual desktop, remote desktop, remote application, and the like), this is especially so based on different bandwidths available to the session host and the session client. Methods and systems for emulating a bandwidth of a client device in a virtualization system are described. When the session host is executing an application (e.g., a digital media application), the session host may emulate the bandwidth of the session client by hooking into and throttling data over one or more APIs associated with the digital media application, thereby tricking the application into making a bandwidth determination based on the emulated bandwidth of the session client, rather than based on the bandwidth of the session host.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: hooking an application programming interface (API) on a session host in a virtualization system; determining a client bandwidth of a session client connected to the session host; when the API is called by a first application executing on the session host: intercepting the API call based on the hook; throttling a bandwidth of the API based on the determined client bandwidth and maintaining a bandwidth of another API associated with a different application on the session host; and returning data to the first application based on the throttled bandwidth of the API; and determining, by the first application, an available bandwidth based on analyzing the data returned by the API. 2. The method of claim 1 , further comprising: determining the API by querying a database for a process name associated with the first application. 3. The method of claim 2 , further comprising: hooking the API within the process associated with the first application; and when the API is called by a second application executing on the session host, executing the API without interception by the hook. 4. The method of claim 1 , further comprising the first application selecting a video stream based on the data returned via the API. 5. The method of claim 1 , wherein determining the client bandwidth is based on a data rate of communications between the session client and the session host. 6. The method of claim 1 , wherein determining the client bandwidth is based on an estimated client bandwidth maintained by the session host. 7. The method of claim 1 , wherein determining the client bandwidth is based on communications between the session client and a bandwidth estimation web site accessible by the session client over the Internet. 8. One or more non-transitory computer readable media comprising computer readable instructions that, when executed, emulate a client bandwidth in a virtual desktop session by: determining an application programming interface (API) associated with a first application executing on a session host of the virtual desktop session; hooking (the API) by the session host; in response to a call to the API by a first application executing on the session host: intercepting the API call based on the hook; throttling, via the hook, a bandwidth of the API based on a determined client bandwidth of a session client connected to the session host; and returning data by the API based on the throttled bandwidth of the API; and determining, by the first application, an available bandwidth based on the data returned by the API. 9. The computer readable media of claim 8 , wherein determining the API associated with the first application comprises: determining the API by querying a database for a process name associated with the first application. 10. The computer readable media of claim 9 , said emulating the client bandwidth further comprising: hooking the API within the process associated with the first application; and when the API is called by a second application executing on the session host, executing the API without interception by the hook. 11. The computer readable media of claim 8 , said emulating the client bandwidth further comprising: determining the client bandwidth of the session client, wherein the client bandwidth is a current bandwidth between the session host and the session client. 12. The computer readable media of claim 8 , said emulating the client bandwidth further comprising the first application selecting a video stream based on the data returned via the API. 13. A session host apparatus comprising: a processor; and memory storing computer readable instructions that, when executed by the processor, cause the session host apparatus to emulate a client bandwidth within a virtual desktop session associated with a session client to: hook an application programming interface (API) associated with a first application executing within the virtual desktop session; when the API is called by the first application; intercept the API call based on the hook; determine a client bandwidth of the session client connected to the virtual desktop; and return data via the API based on the determined client bandwidth; and determine, via the first application, an available bandwidth based on an analysis of the data returned via the API. 14. The session host apparatus of claim 13 , said emulating the client bandwidth further comprising: determining the API by querying a database stored in the memory for a process name associated with the first application, wherein the API is called by the first application. 15. The session host apparatus of claim 14 , said emulating the client bandwidth further comprising: hooking the API within the process associated with the first application; and when the API is called by a second application executing within the virtual desktop, executing the API without interception by the hook. 16. The session host apparatus of claim 13 , wherein returning data to the API based on the bandwidth of the session client comprises throttling a data bandwidth of the API based on the bandwidth of the session client. 17. The session host apparatus of claim 13 , said emulating the client bandwidth further comprising: the first application performing a first action based on the analysis of the data returned via the API. 18. The session host apparatus of claim 13 , said emulating the client bandwidth further comprising the first application selecting a video stream based on the data returned via the API. 19. A method comprising: at a host device, establishing a virtual desktop session between a client device and the host device; hooking an application programming interface (API) associated with an application executing in the virtual desktop session; receiving, by the application, a request from the client device for a first video stream; calling, by the application, the application programming interface (API); in response to the call to the API; determining a client bandwidth of the client device based on communications between the host device and the client device; and returning data to the application based on the determined client bandwidth; determining, by the application, an available bandwidth based on the data returned from the API; and retrieving, by the application, the first video stream at a bitrate selected based on the determined available bandwidth. 20. The method of claim 19 , wherein determining the client bandwidth comprises determining a current bandwidth between the host device and the client device.

Assignees

Inventors

Classifications

  • Negotiating bandwidth · CPC title

  • H04L67/08Primary

    specially adapted for terminal emulation, e.g. Telnet · CPC title

  • Electricity · mapped topic

  • Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities (flow or congestion control using dynamic resource allocation, e.g. in-call renegotiation, H04L47/76) · CPC title

  • Virtual private networks · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9294549B2 cover?
Bandwidth on the Internet and intranets is highly variable and unreliable, two properties that can make streaming digital media content difficult. In a virtualization system (e.g., virtual desktop, remote desktop, remote application, and the like), this is especially so based on different bandwidths available to the session host and the session client. Methods and systems for emulating a bandwi…
Who is the assignee on this patent?
Jakubowski Robert, Citrix Systems Inc
What technology area does this patent fall under?
Primary CPC classification H04L67/08. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Mar 22 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).