IP Library Granted Patent US 10,892,990
Granted Patent B1
US 10,892,990 · App. 16/186,527 · Granted Jan 12, 2021

Systems and methods for transmitting data to a remote storage device

Inventors: Sumit Dighe (Pune, IN); Shailesh Marathe (Pune, IN); Hasib Shaikh (Pune, IN)
Assignee: Veritas Technologies LLC
H04L45/7453H04L5/0055H04L47/32
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,892,990
App. No.
16/186,527
Granted
Jan 12, 2021
Kind
B1
Abstract

The disclosed computer-implemented method for transmitting data to a remote storage device may include (i) selecting, by a computing device, a bucket of a hash table for a data packet, (ii) adding a generation number to the data packet, (iii) transmitting the data packet to a remote storage device, (iv) adding the data packet to a send-list of the bucket, (v) receiving an acknowledgement packet for the data packet, (vi) determining that the acknowledgement packet corresponds to the generation number of the data packet, and (vii) removing the data packet from the send-list of the bucket. Various other methods, systems, and computer-readable media are also disclosed.

Claims (88)

1. A computer-implemented method for transmitting data to a remote storage device, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

selecting, by a computing device, a bucket of a hash table for a data packet, wherein the data packet includes a sequence number that indicates an order of the data packet in a set of data packets and is unique in the bucket of the hash table;

periodically incrementing, by the computing device, a current generation number maintained by the computing device to indicate an interval of time for transmission of data packets;

adding, by the computing device, a generation number to the data packet to indicate the interval of time during which the data packet is transmitted, wherein the generation number corresponds to the current generation number and is shared by at least one other data packet in the bucket of the hash table to indicate that the other data packet is also transmitted during the interval of time;

transmitting, by the computing device, the data packet to a remote storage device during the interval of time;

adding, by the computing device, the data packet to a send-list of the bucket;

receiving, by the computing device from the remote storage device, an acknowledgement packet for the data packet;

determining that another generation number of the acknowledgement packet corresponds to the generation number of the data packet in the send-list; and

removing the data packet from the send-list of the bucket in response to the determining.

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

determining that the data packet is not acknowledged within a predetermined time period;

updating the generation number of the data packet to a new generation number; and

re-transmitting the data packet comprising the new generation number.

3. The computer-implemented method of claim 2 , further comprising:

receiving the acknowledgement packet for the data packet that corresponds to the generation number;

verifying that the data packet comprising the new generation number has been transmitted; and

discarding the acknowledgement packet for the data packet that correspond to the generation number.

4. The computer-implemented method of claim 2 , wherein the predetermined time period is at least a round trip time of data packets multiplied by 3.

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

receiving, by the remote storage device, the data packet, wherein the data packet comprises a sequence number for the bucket of the hash table; and

comparing the sequence number with a last acknowledged sequence number (LASN), wherein the LASN is maintained by the remote storage device.

6. The computer-implemented method of claim 5 , further comprising:

determining that the sequence number for the bucket of the hash table is less than the LASN; and

discarding the data packet.

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

determining that the sequence number is greater than the LASN;

determining that the sequence number exists in a sparse list of a remoter server bucket of a remote storage device hash table; and

discarding the data packet.

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

determining that the sequence number is greater than the LASN;

determining that the sequence number does not exist in a sparse list of a remoter server bucket of a remote storage device hash table;

inserting the data packet into the sparse list;

determining that the sequence number is a value that is a next consecutive position to the LASN; and

updating the LASN by a number of consecutive positions in the sparse list.

9. A system for transmitting data to a remote storage device, the system comprising:

a computing device comprising at least one physical processor; and

physical memory comprising computer-executable instructions that, when executed by the at least one physical processor, cause the computing device to:

select a bucket of a hash table for a data packet, wherein the data packet includes a sequence number that indicates an order of the data packet in a set of data packets and is unique in the bucket of the hash table;

periodically increment, by the computing device, a current generation number maintained by the computing device to indicate an interval of time for transmission of data packets;

add a generation number to the data packet to indicate the interval of time during which the data packet is transmitted, wherein the generation number corresponds to the current generation number and is shared by at least one other data packet in the bucket of the hash table to indicate that the other data packet is also transmitted during the interval of time;

transmit the data packet to a remote storage device during the interval of time;

add the data packet to a send-list of the bucket;

receive, from the remote storage device, an acknowledgement packet for the data packet;

make a determination that another generation number of the acknowledgement packet corresponds to the generation number of the data packet; and

remove the data packet from the send-list of the bucket in response to the determination.

10. The system of claim 9 , wherein the computer-executable instructions further cause the computing device to:

determine that the data packet is not acknowledged within a predetermined time period;

update the generation number of the data packet to a new generation number; and

re-transmit the data packet comprising the new generation number.

11. The system of claim 10 , wherein the computer-executable instructions further cause the computing device to:

receive the acknowledgement packet for the data packet that corresponds to the generation number;

verify that the data packet comprising the new generation number has been transmitted; and

discard the acknowledgement packet for the data packet that correspond to the generation number.

12. The system of claim 10 , wherein the predetermined time period is at least a round trip time of data packets multiplied by 3.

13. The system of claim 9 , wherein the computer-executable instructions further cause the computing device to:

receive, by the remote storage device, the data packet, wherein the data packet comprises a sequence number for the bucket of the hash table; and

compare the sequence number with a last acknowledged sequence number (LASN), wherein the LASN is maintained by the remote storage device.

14. The system of claim 13 , wherein the computer-executable instructions further cause the computing device to:

determine that the sequence number for the bucket of the hash table is less than the LASN; and

discard the data packet.

15. The system of claim 13 , wherein the computer-executable instructions further cause the computing device to:

determine that the sequence number is greater than the LASN;

determine that the sequence number exists in a sparse list of a remoter server bucket of a remote storage device hash table; and

discard the data packet.

16. The system of claim 13 , wherein the computer-executable instructions further cause the computing device to:

determine that the sequence number is greater than the LASN;

determine that the sequence number does not exist in a sparse list of a remoter server bucket of a remote storage device hash table;

insert the data packet into the sparse list;

determine that the sequence number is a value that is a next consecutive position to the LASN; and

update the LASN by a number of consecutive positions in the sparse list.

17. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

select a bucket of a hash table for a data packet, wherein the data packet includes a sequence number that indicates an order of the data packet in a set of data packets and is unique in the bucket of the hash table;

periodically increment a current generation number maintained by the computing device to indicate an interval of time for transmission of data packets;

add a generation number to the data packet to indicate the interval of time during which the data packet is transmitted, wherein the generation number corresponds to the current generation number and is shared by at least one other data packet in the bucket of the hash table to indicate that the other data packet is also transmitted during the interval of time;

transmit the data packet to a remote storage device during the interval of time;

add the data packet to a send-list of the bucket;

receive, from the remote storage device, an acknowledgement packet for the data packet;

make a determination that another generation number of the acknowledgement packet corresponds to the generation number of the data packet in the send-list; and

remove the data packet from the send-list of the bucket in response to the determination.

18. The non-transitory computer-readable medium of claim 17 , wherein the computer-executable instructions further cause the computing device to:

determine that the data packet is not acknowledged within a predetermined time period;

update the generation number of the data packet to a new generation number; and

re-transmit the data packet comprising the new generation number.

19. The non-transitory computer-readable medium of claim 18 , wherein the computer-executable instructions further cause the computing device to:

receive the acknowledgement packet for the data packet that corresponds to the generation number;

verify that the data packet comprising the new generation number has been transmitted; and

discard the acknowledgement packet for the data packet that correspond to the generation number.

20. The non-transitory computer-readable medium of claim 18 , wherein the predetermined time period is at least a round trip time of data packets multiplied by 3.

Assignments (14)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069697/0238 →
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 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
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 INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Mar 18, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052189/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2018
From: DIGHE, SUMIT; MARATHE, SHAILESH; SHAIKH, HASIB
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 047467/0858 →
Cited By (2)
US 12,591,526 US 12,665,856