IP Library › Granted Patent US 10,824,450
Granted Patent B2
US 10,824,450 · App. 16/403,071 · Granted Nov 3, 2020

Systems and methods for remote computing sessions with variable forward error correction (FEC)

Inventor: Georgy Momchilov (Parkland, FL)
Assignee: CITRIX SYSTEMS, INC.
G06F9/452G06F3/0488G06F9/3877G06F9/45558G06F9/544H04L1/004H04L1/0057H04L47/27H04L47/624H04L65/80H04L67/08H04L67/14H04L67/38H04L67/42G06F3/0484G06F2009/45595
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,824,450
App. No.
16/403,071
Filed
May 3, 2019
Granted
Nov 3, 2020
Kind
B2
Art Unit
2612
USPC
345/520
Abstract

A server may include a memory and a processor cooperating with the memory to host virtual computing sessions to be remotely displayed at a client device via a frame buffer, where the client device is configured to render the virtual computing sessions via a graphical user interface (GUI). The processor may further generate forward error correction (FEC) data for graphical content within the frame buffer based upon a ratio of graphical content bandwidth to FEC bandwidth, and determine a Quality of Service (QoS) parameter associated with the at least one virtual channel. The processor may further adjust the ratio of graphical content bandwidth to FEC bandwidth based upon changes in the QoS parameter, and send the graphical content and associated FEC data to the client device over at least one virtual channel for display within the GUI.

Claims (37)

1. A computing device comprising:

a memory and a processor cooperating with the memory to

host virtual computing sessions to be remotely displayed at a client device via a frame buffer, the client device configured to render the virtual computing sessions via a graphical user interface (GUI),

generate forward error correction (FEC) data for graphical content within the frame buffer based upon a ratio of graphical content bandwidth to FEC bandwidth,

determine a Quality of Service (QoS) parameter associated with at least one virtual channel,

adjust the ratio of graphical content bandwidth to FEC bandwidth based upon changes in the QoS parameter, and

send the graphical content and the adjusted FEC data to the client device over the at least one virtual channel for display within the GUI.

2. The computing device of claim 1 wherein the graphical content sent to the client device is divided into packets, and the QoS parameter comprises a packet loss rate; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as the packet loss rate increases.

3. The computing device of claim 1 wherein the processor adjusts the ratio of graphical content bandwidth to FEC bandwidth without changing an overall bandwidth of the at least one virtual channel.

4. The computing device of claim 1 wherein the at least one virtual channel comprises a reliable channel and a lossy channel; and wherein a ratio of graphical content bandwidth to FEC bandwidth on the reliable channel is higher than a ratio of graphical content bandwidth to FEC bandwidth on the lossy channel.

5. The computing device of claim 1 wherein the QoS parameter comprises network latency; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as network latency increases.

6. The computing device of claim 1 wherein the QoS parameter comprises an estimated bandwidth for the at least one virtual channel.

7. The computing device of claim 1 wherein the QoS parameter comprises an expected bitrate associated with the at least one virtual channel; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as the expected bitrate decreases.

8. The computing device of claim 1 wherein the QoS parameter comprises a load associated with the server.

9. The computing device of claim 1 wherein the processor is further configured to selectively change the ratio of graphical content bandwidth to FEC bandwidth based upon a priority of the graphical content data within the frame buffer.

10. The computing device of claim 1 wherein the processor is further configured to selectively change the ratio of graphical content bandwidth to FEC bandwidth based upon a size of the graphical content data within the frame buffer.

11. A method comprising:

for virtual computing sessions hosted at a server to be remotely displayed at a client device via a frame buffer, with the client device being configured to render the virtual computing sessions via a graphical user interface (GUI), generating forward error correction (FEC) data for graphical content within the frame buffer at the server based upon a ratio of graphical content bandwidth to FEC bandwidth;

determining a Quality of Service (QoS) parameter associated with at least one virtual channel;

adjusting the ratio of graphical content bandwidth to FEC bandwidth at the server based upon changes in the QoS parameter; and

sending the graphical content and associated FEC data from the server to the client device over the at least one virtual channel for rendering within the GUI.

12. The method of claim 11 wherein the graphical content sent to the client device is divided into packets, and the QoS parameter comprises a packet loss rate; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as the packet loss rate increases.

13. The method of claim 11 wherein selectively changing comprises adjusting the ratio of graphical content bandwidth to FEC bandwidth without changing an overall bandwidth of the at least one virtual channel.

14. The method of claim 11 wherein the at least one virtual channel comprises a reliable channel and a lossy channel; and wherein a ratio of graphical content bandwidth to FEC bandwidth on the reliable channel is higher than a ratio of graphical content bandwidth to FEC bandwidth on the lossy channel.

15. The method of claim 11 wherein the QoS parameter comprises network latency; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as network latency increases.

16. A computing system comprising:

a server configured to host virtual computing sessions to be remotely displayed via a frame buffer; and

a client device configured to remotely access the virtual computing sessions from the server and render the virtual computing session via a graphical user interface (GUI);

wherein the server is further configured to

generate forward error correction (FEC) data for graphical content within the frame buffer based upon a ratio of graphical content bandwidth to FEC bandwidth,

determine a Quality of Service (QoS) parameter associated with at least one virtual channel,

adjust the ratio of graphical content bandwidth to FEC bandwidth based upon changes in the QoS parameter, and

send the graphical content and the adjusted FEC data to the client device over the at least one virtual channel for display within the GUI.

17. The computing system of claim 16 wherein the graphical content sent to the client device is divided into packets, and the QoS parameter comprises a packet loss rate; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as the packet loss rate increases.

18. The computing system of claim 16 wherein the server adjusts the ratio of graphical content bandwidth to FEC bandwidth without changing an overall bandwidth of the at least one virtual channel.

19. The computing system of claim 16 wherein the at least one virtual channel comprises a reliable channel and a lossy channel; and wherein a ratio of graphical content bandwidth to FEC bandwidth on the reliable channel is higher than a ratio of graphical content bandwidth to FEC bandwidth on the lossy channel.

20. The computing system of claim 16 wherein the QoS parameter comprises network latency; and wherein the ratio of graphical content bandwidth to FEC bandwidth decreases as network latency increases.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2019
From: MOMCHILOV, GEORGY
To: CITRIX SYSTEMS, INC.
Reel/Frame 049091/0229 →
Continuity (2)
Provisional Application 62667072 · May 4, 2018
Related Publication 20190339998A1 · Nov 7, 2019