IP Library Granted Patent US 10,694,003
Granted Patent B2
US 10,694,003 · App. 15/676,483 · Granted Jun 23, 2020

Systems and methods for dynamic receive buffering

Inventors: Varun Taneja (Bangalore, IN); Mahesh Mylarappa (Santa Clara, CA); Saravana Annamalaisami (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L69/16H04L69/326H04L47/27
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,694,003
App. No.
15/676,483
Granted
Jun 23, 2020
Kind
B2
Abstract

The present disclosure relates to methods and systems for dynamically changing an advertised window for a transport layer connection. A device can receive data from a server destined for an application. The device identifies the size of the application buffer corresponding to the application and advertises the application buffer size as a window size to the server. The device stores the data in the device memory. The device then determines the memory usage by comparing the memory usage to one or more predetermined thresholds. If the device determines that the memory usage is below a first predetermined threshold, the device can implement an aggressive dynamic receive buffering policy in which the device increases the advertised window size by a first increment. If the device determines that the memory usage is above the first threshold and below a second threshold, the device executes a more conservative dynamic receive buffering policy.

Claims (32)

1. A system comprising:

a device comprising one or more processors, coupled to memory, and intermediary to a client and a server and configured to establish a transport layer connection having a maximum segment size with the server responsive to a request from the client advertising a first window size for the transport layer connection, wherein the device is configured to advertise to the server a second window size that is set to the first window size;

a buffer allocated from the memory to store data received from the server via the transport layer connection;

wherein the device is configured to:

determine memory usage of the device is above a first predetermined threshold and below a second predetermined threshold;

increase, responsive to the determination, the second window size advertised to the server by a predetermined increment of the maximum segment size; and

increase, responsive to receiving additional data from the server, an amount of memory allocated to the buffer by a predetermined amount.

2. The system of claim 1 , wherein the device is further configured to establish a second transport layer connection with the client and linking the second transport layer connection with the transport layer connection to the server.

3. The system of claim 1 , wherein the device is further configured to determine that usage of the memory is below the first predetermined threshold.

4. The system of claim 3 , wherein the device is further configured to increase the second window size advertised to the server by a second predetermined increment of the maximum segment size responsive to determining that usage of the memory is below the first predetermined threshold.

5. The system of claim 4 , wherein the second predetermined increment comprises a multiple of the maximum segment size.

6. The system of claim 1 , wherein one of the first predetermined threshold or the second predetermined threshold comprises a percentage of memory.

7. The system of claim 1 , wherein the device is further configured to compare usage of the memory for the transport layer connection to one of the first predetermined threshold or the second predetermined threshold.

8. The system of claim 1 , wherein the device is further configured to increment the second window size on packets with a non-zero payload length.

9. The system of claim 1 , wherein, further comprising determining, by the device, that usage of the memory is above the second predetermined threshold and decrementing the second window size advertised to the server by a predetermined decrement.

10. The system of claim 1 , wherein the second window size is set responsive to a policy for the transport layer connection.

11. A system comprising:

a device comprising one or more processors, coupled to memory, and intermediary to a client and a server and configured to establish a transport layer connection having a maximum segment size with the server responsive to a request from the client advertising a first window size for the transport layer connection, wherein the device is configured to advertise to the server a second window size that is set to the first window size;

a buffer allocated from the memory to store data received from the server via the transport layer connection;

wherein the device is configured to:

determine that a packet has been dropped via the transport layer connection;

increase, responsive to the determination, the second window size advertised to the server by a predetermined increment of the maximum segment size; and

increase, responsive to receiving additional data from the server, an amount of memory allocated to the buffer by a predetermined amount.

12. The system of claim 11 , wherein the device is further configured to establish a second transport layer connection with the client and linking the second transport layer connection with the transport layer connection to the server.

13. The system of claim 11 , wherein the device is further configured to receive the first window size comprising a buffer size requested by an application of the client.

14. The system of claim 13 , wherein the device is further configured to increase the second window size responsive to receiving an acknowledgement from the application of receipt of data forwarded by the device to the application.

15. The system of claim 11 , wherein the device is further configured to determine that the packet has been dropped and that usage of the memory is below the predetermined threshold.

16. The system of claim 11 , wherein the device is further configured to determine that usage of the memory usage is above a second predetermined threshold comprising a percentage of memory.

17. The system of claim 16 , wherein the device is further configured to increment the second window size by the predetermined increment of a multiple of the maximum segment size.

18. The system of claim 11 , wherein the device is further configured to calculate a bandwidth delay product for the transport layer connection.

19. The system of claim 11 , wherein the device is further configured to increment the second window size advertised to the server if the bandwidth delay product is less than a predetermined factor of the bandwidth delay product.

20. The system of claim 11 , wherein the device is further configured to set the second window size to a buffer size requested by the client responsive to determining that usage of the memory usage exceeds a second predetermined threshold greater than the first predetermined threshold.

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 →
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 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 →
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 →
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 →
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 Aug 15, 2017
From: TANEJA, VARUN; MYLARAPPA, MAHESH; ANNAMALAISAMI, SARAVANA
To: CITRIX SYSTEMS, INC.
Reel/Frame 043292/0372 →
Continuity (2)
Continuation 13858002 · Apr 6, 2013
Related Publication 20180027098A1 · Jan 25, 2018
Cited By (2)
US 12,474,950 US 12,511,216