IP Library Granted Patent US 9,998,394
Granted Patent B2
US 9,998,394 · App. 14/833,590 · Granted Jun 12, 2018

Systems and methods for scalable network buffer management

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 9,998,394
App. No.
14/833,590
Granted
Jun 12, 2018
Kind
B2
Abstract

The disclosed computer-implemented method for scalable network buffer management may include (1) receiving, via a connection to a client, data to be transmitted to a cloud service, (2) buffering the data in at least one data buffer, (3) determining that the data will not be transmitted to the cloud service within a timeout period for the client connection, (4) delaying reception of additional data from the client connection for a portion of the timeout period, and (5) before the timeout period has elapsed, buffering data from the client connection in at least one secondary data buffer, wherein the secondary data buffer is smaller in size than the data buffer. Various other methods, systems, and computer-readable media are also disclosed.

Claims (44)

1. A computer-implemented method for scalable network buffer management, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising: receiving, via a client connection to a client, data to be transmitted to a cloud storage service as part of a backup process; buffering the data in at least one data buffer; determining that the data will not be transmitted to the cloud storage service within a timeout period for the client connection; delaying reception of additional data from the client connection for a portion of the timeout period; before the timeout period has elapsed, buffering data from the client connection in at least one secondary data buffer; maintaining an additional cloud service connection to the cloud storage service; determining that the additional data will not be received via the client connection within a cloud service connection timeout period for the cloud service connection; transmitting at least a portion of the data to the cloud storage service using the cloud service connection to the cloud storage service before the cloud service connection timeout period for the cloud service connection has elapsed, wherein: the at least one secondary data buffer is smaller in allocated memory size than the allocated memory size of the at least one data buffer; the at least one secondary data buffer amounts to 5-10 percent of total buffer memory.

2. The computer-implemented method of claim 1 , wherein delaying reception of additional data from the client connection comprises delaying notification of the client that the data has been received.

3. The computer-implemented method of claim 1 :

further comprising determining that no data buffer of the at least one data buffer is available to buffer the data received via the client connection;

wherein delaying reception of additional data from the client connection comprises:

buffering the data from the client connection in the at least one secondary data buffer;

delaying reception of additional data from the client connection for a portion of the timeout period.

4. The computer-implemented method of claim 1 , further comprising:

determining that the data will be transmitted to the cloud storage service within the timeout period for the client connection;

delaying reception of additional data from the client connection until an acknowledgement has been received that the cloud storage service has received the data.

5. The computer-implemented method of claim 1 , further comprising: receiving, via the additional cloud service connection to the cloud storage service, data to be transmitted to the client; buffering the data in at least one data buffer; determining that the data will not be transmitted to the client within a the cloud service connection timeout period for the cloud service connection; delaying reception of additional data from the cloud service connection for a portion of the cloud service connection timeout period; before the cloud service connection timeout period has elapsed, buffering data from the cloud service connection in at least one secondary data buffer.

6. The computer-implemented method of claim 1 , claim 1 , further comprising determining a number of additional connections to the cloud storage service to maintain based at least in part on a ratio of the timeout period for the cloud service connection to a time to receive, from the client, data to fill the data buffer.

7. The computer-implemented method of claim 1 , further comprising:

determining a total bandwidth utilization of a plurality of connections to the cloud storage service;

determining that the total bandwidth utilization is below a threshold;

incrementally increasing a rate at which at least one connection transmits data to the cloud storage service.

8. The computer-implemented method of claim 7 , further comprising:

determining that the total bandwidth utilization is above the threshold;

delaying transmission of data on at least one connection to the cloud storage service for a time interval.

9. The computer-implemented method of claim 8 , further comprising:

reallocating at least one data buffer as at least one smaller secondary data buffer;

delaying reception of additional data from the client connection for a time interval.

10. The computer-implemented method of claim 1 , further comprising:

receiving a retry notification from the cloud storage service for a data transmission indicating that a rate of data transmission to the cloud storage service should be decreased;

determining that a number of secondary data buffers in use is above a threshold;

delaying retrying the data transmission for a time interval.

11. A system for scalable network buffer management, the system comprising: a communication module, stored in memory, that receives, via a client connection to a client, data to be transmitted to a cloud storage service as part of a backup process; a buffering module, stored in memory, that buffers the data in at least one data buffer; a traffic module, stored in memory, that determines that the data will not be transmitted to the cloud storage service within a timeout period for the client connection; a metering module, stored in memory, that delays reception of additional data from the client connection for a portion of the timeout period; a secondary buffering module, stored in memory, that, before the timeout period has elapsed, buffers data from the client connection in at least one secondary data buffer; at least one physical processor configured to execute the communication module, the buffering module, the traffic module, the metering module, and the secondary module, module, wherein: the communication module further maintains an additional cloud service connection to the cloud storage service: the traffic module further determines that the additional data will not be received via the client connection within a cloud service connection timeout period for the cloud service connection: the metering module further transmits at least a portion of the data to the cloud storage service using the cloud service connection to the cloud storage service before the cloud service connection timeout period for the cloud service connection has elapsed: the at least one secondary data buffer is smaller in allocated memory size than the allocated memory size of the at least one data buffer: the at least one secondary data buffer amounts to 5-10 percent of total buffer memory.

12. The system of claim 11 , wherein the metering module delays reception of additional data from the client connection by delaying notification of the client that the data has been received.

13. The system of claim 11 , wherein:

the traffic module determines that no data buffer of the at least one data buffer is available to buffer the data received via the client connection;

the metering module delays reception of additional data from the client connection by:

buffering the data from the client connection in the at least one secondary data buffer;

delaying reception of additional data from the client connection for a portion of the timeout period.

14. The system of claim 11 , wherein:

the traffic module determines that the data will be transmitted to the cloud storage service within the timeout period for the client connection;

the metering module delays reception of additional data from the client connection until an acknowledgement has been received that the cloud storage service has received the data.

15. The system of claim 11 , wherein: the communication module receives, via a the additional cloud service connection to the cloud storage service, data to be transmitted to the client; the buffering module buffers the data in at least one data buffer; the traffic module determines that the data will not be transmitted to the client within a the cloud service connection timeout period for the cloud service connection; the metering module delays reception of additional data from the cloud service connection for a portion of the cloud service connection timeout period; the secondary buffering module, before the cloud service connection timeout period has elapsed, buffers data from the cloud service connection in at least one secondary data buffer.

16. The system of claim 11 , wherein the traffic module determines a number of additional connections to the cloud storage service to maintain based at least in part on a ratio of the timeout period for the cloud service connection to a time to receive, from the client, data to fill the data buffer.

17. The system of claim 11 , wherein:

the traffic module:

determines a total bandwidth utilization of a plurality of connections to the cloud storage service;

determines that the total bandwidth utilization is below a threshold;

the metering module incrementally increases a rate at which at least one connection transmits data to the cloud storage service.

18. A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to: receive, via a client connection to a client, data to be transmitted to a cloud storage service as part of a backup process; buffer the data in at least one data buffer; determine that the data will not be transmitted to the cloud storage service within a timeout period for the client connection; delay reception of additional data from the client connection for a portion of the timeout period; before the timeout period has elapsed, buffer data from the client connection in at least one secondary data buffer; maintain an additional cloud service connection to the cloud storage service; determine that the additional data will not be received via the client connection within a cloud service connection timeout period for the cloud service connection; transmit at least a portion of the data to the cloud storage service using the cloud service connection to the cloud storage service before the cloud service connection timeout period for the cloud service connection has elapsed, wherein: the at least one secondary data buffer is smaller in allocated memory size than the allocated memory size of the at least one data buffer; the at least one secondary data buffer amounts to 5-10 percent of total buffer memory.

Assignments (13)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2015
From: AGRAWAL, MUKUND; DRAVID, SACHIN; PATIL, DEEPAK
To: SYMANTEC CORPORATION
Reel/Frame 036402/0382 →