IP Library Granted Patent US 11,876,852
Granted Patent B2
US 11,876,852 · App. 17/886,268 · Granted Jan 16, 2024

Method to determine optimal number of HTTP2.0 streams and connections for better QoE

Inventor: Praveen Raja Dhanabalan (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L65/80H04L43/0835H04L43/0882H04L43/16H04L47/2475H04L65/1069H04L65/1089H04L65/4015H04L67/02H04L69/14H04L69/321
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 11,876,852
App. No.
17/886,268
Filed
Aug 11, 2022
Granted
Jan 16, 2024
Kind
B2
Art Unit
2441
USPC
709/219
Abstract

Described embodiments provide for dynamically optimizing the number of application layer streams that may be multiplexed into a single transport layer connection, providing the advantages of application layer multiplexing without incurring unnecessary congestion-based network delays. A device may monitor net bandwidth and packet loss rates for a connection, and may dynamically increase and decrease a number of concurrent application layer streams to balance throughput and congestion avoidance. As congestion increases, the device may reduce concurrent stream limits in order to spawn additional transport layer connections, allowing faster congestion recovery and reduced performance impairment.

Claims (30)

1. A method comprising:

communicating, by a first computing device, a packet to a second computing device to cause setting of a limit of a number of concurrent application layer streams allowed between the first computing device and the second computing device;

comparing, by the first computing device, a bandwidth between the first computing device and the second computing device with a threshold; and

communicating, by a first computing device responsive to the comparison, another packet to the second computing device to change the setting of the number of concurrent application layer streams allowed between the first computing device and the second computing device, the changed setting causing the second computing device to change a number of connections established with the first computing device.

2. The method of claim 1 , further comprising determining, by the first computing device responsive to comparing, that the bandwidth is greater than the threshold.

3. The method of claim 2 , wherein the setting is changed to decrease the number of concurrent application layer streams between the first computing device and second computing device.

4. The method of claim 1 , further comprising determining, by the first computing device responsive to comparing, that the bandwidth is less than the threshold.

5. The method of claim 4 , wherein the setting is changed to increase the number of concurrent application layer streams between the first computing device and second computing device.

6. The method of claim 1 , further comprising determining, by the first computing device, a rate of packet losses between the first computing device and the second computing device is greater than a second threshold.

7. The method of claim 6 , wherein the setting is changed to set the number of concurrent application layer streams proportional to a number of previous packet losses between the first computing device and the second computing device.

8. A first computing device comprising:

one or more processors, coupled to memory and configured to:

communicate a packet to a second computing device to cause setting of a limit of a number of concurrent application layer streams allowed between the first computing device and the second computing device;

compare a bandwidth between the first computing device and the second computing device with a threshold; and

communicate, responsive to the comparison, another packet to the second computing device to change the setting of the number of concurrent application layer streams allowed between the first computing device and the second computing device, the changed setting causing the second computing device to change a number of connections established with the first computing device.

9. The first computing device of claim 8 , wherein the one or more processors are further configured to determine, responsive to comparing, that the bandwidth is greater than the threshold.

10. The first computing device of claim 9 , wherein the setting is changed to decrease the number of concurrent application layer streams between the first computing device and second computing device.

11. The first computing device of claim 8 , wherein the one or more processors are further configured to determine, responsive to comparing, that the bandwidth is less than the threshold.

12. The first computing device of claim 11 , wherein the setting is changed to increase the number of concurrent application layer streams between the first computing device and second computing device.

13. The first computing device of claim 8 , wherein the one or more processors are further configured to determine a rate of packet loss between the first computing device and the second computing device is greater than a second threshold.

14. The device of claim 13 , wherein the setting is changed to set the number of concurrent application layer streams proportional to a number of previous packet loss between the first computing device and the second computing device.

15. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a first computing device, cause the one or more processors to:

communicate a packet to a second computing device to cause setting of a limit of a number of concurrent application layer streams allowed between the first computing device and the second computing device;

compare a bandwidth between the first computing device and the second computing device with a threshold; and

communicate, responsive to the comparison, another packet to the second computing device to change the setting of the number of concurrent application layer streams allowed between the first computing device and the second computing device, the changed setting causing the second computing device to change a number of connections established with the first computing device.

16. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to determine, responsive to comparing, that the bandwidth is greater than the threshold.

17. The non-transitory computer-readable medium of claim 16 , wherein the setting is changed to decrease the number of concurrent application layer streams between the first computing device and second computing device.

18. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to determine, responsive to comparing, that the bandwidth is less than the threshold.

19. The non-transitory computer-readable medium of claim 18 , wherein the setting is changed to increase the number of concurrent application layer streams between the first computing device and second computing device.

20. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are further configured to determine a rate of packet loss between the first computing device and the second computing device is greater than a second threshold and change the setting of the number of concurrent application layer streams to be proportional to a number of previous packet loss between the first computing device and the second computing device.