IP Library Granted Patent US 8,442,052
Granted Patent B1
US 8,442,052 · App. 12/070,796 · Granted May 14, 2013

Forward packet recovery

Inventor: David Anthony Hughes (Los Altos, CA)
Assignee: Silver Peak Systems, Inc.
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 8,442,052
App. No.
12/070,796
Granted
May 14, 2013
Kind
B1
Abstract

A method for providing ordered data packets to a processor is provided. The method comprises receiving a plurality of data packets, each comprising an order identifier. At least one out-of-order data packet of the plurality of data packets is placed in a priority queue. One or more correction packets are received. One or more missing data packets or corrupted data packets of the plurality of data packets are detected based on the one or more correction packets. The one or more missing data packets or corrupted data packets of the plurality of data packets are corrected based on the one or more correction packets. The one or more corrected data packets are provided to the processor. The at least one out-of-order data packet in the priority queue is provided to the processor.

Claims (43)

1. A method for providing ordered data packets to a processor, the method comprising:

receiving a plurality of data packets, each comprising an order identifier;

placing at least one out-of-order data packet of the plurality of data packets in one of a plurality of priority queues, the priority queue being selected based on the order identifier of the received out-of-order data packet, the priority queues having a capability to receive data packets in non-sequential order;

receiving one or more correction packets corresponding to two or more of the plurality of data packets;

detecting one or more missing data packets or corrupted data packets of the plurality of data packets;

correcting the one or more missing data packets or corrupted data packets of the plurality of data packets;

providing the one or more corrected data packets to the processor;

determining if a time-out period has elapsed, the time-out period based in part on an interval length based on previously received sequential packets; and

providing the at least one out-of-order data packet in the priority queue to the processor if the time-out period has elapsed, the queued data packets to be accessed by the processor in order from the plurality of priority queues according to the order identifiers of the data packets.

2. The method of claim 1 , further comprising:

calculating an interval length between receiving one of the plurality of data packets and providing the one or more corrected data packets.

3. The method of claim 1 , wherein the time-out period is a moving average of at least one differential delay.

4. The method of claim 1 , wherein the time-out period is based on a distribution of at least one differential delay.

5. The method of claim 1 , wherein more than one data correction packets are received per frame.

6. The method of claim 1 , further comprising:

calculating a differential delay based on the time between data packets provided to the network device; and

updating an interval length based on the differential delay.

7. A system for providing ordered data packets to a processor, the system comprising:

a receiving module configured to receive a plurality of data packets and one or more correction packets, each data packet comprising an order identifier and each correction packet corresponding to two or more of the plurality of data packets;

a data correction module configured to detect one or more missing data packets or corrupted data packets of the plurality of data packets based on the one or more correction packets and correct the one or more missing data packets or corrupted data packets of the plurality of data packets based on the one or more correction packets; and

an ordering module configured to place at least one out-of-order data packet of the plurality of data packets in one of a plurality of priority queues, the priority queue being selected based on the order identifier of the received out-of-order data packet, the priority queues having a capability to receive data packets in non-sequential order provide the one or more corrected data packets to the processor, determine if a time-out period has elapsed, the time-out period based in part on an interval length based on previously received sequential packets, and provide the at least one out-of-order data packet in the priority queue to the processor if the time-out period has elapsed, the queued data packets to be accessed by the processor in order from the plurality of priority queues according to the order identifiers of the data packets.

8. The system of claim 7 , wherein the ordering module is further configured to calculate an interval length between receiving one of the plurality of data packets and providing the one or more corrected data packets.

9. The system of claim 7 , wherein the time-out period is a moving average of at least one differential delay.

10. The system of claim 7 , wherein the time-out period is based on a distribution of at least one differential delay.

11. The system of claim 7 , wherein more than one data correction packets are received per frame.

12. The system of claim 7 , wherein the ordering module is further configured to calculate a differential delay based on the time between data packets provided to the network device, and update an interval length based on the differential delay.

13. A non-transitory computer readable medium having embodied thereon instructions executable by a processor for performing a method for providing ordered data packets to a processor, the method comprising:

receiving a plurality of data packets, each comprising an order identifier;

placing at least one out-of-order data packet of the plurality of data packets in one of a plurality of priority queues, the priority queue being selected based on the order identifier of the received out-of-order data packet, the priority queues having a capability to receive data packets in non-sequential order;

receiving one or more correction packets corresponding to two or more of the plurality of data packets;

detecting one or more missing data packets or corrupted data packets of the plurality of data packets based on the one or more correction packets;

correcting the one or more missing data packets or corrupted data packets of the plurality of data packets based on the one or more correction packets;

providing the one or more corrected data packets to the processor;

determining if a time-out period has elapsed, the time-out period based in part on an interval length based on previously received sequential packets; and

providing the at least one out-of-order data packet in the priority queue to the processor if the time-out period has elapsed, the queued data packets to be accessed by the processor in order from the plurality of priority queues according to the order identifiers of the data packets.

14. The computer readable medium of claim 13 , wherein the method further comprises:

calculating an interval length between receiving one of the plurality of data packets and providing the one or more corrected data packets.

15. The computer readable medium of claim 13 , wherein the time-out period is a moving average of at least one differential delay.

16. The computer readable medium of claim 13 , wherein the time-out period is based on a distribution of at least one differential delay.

17. The computer readable medium of claim 13 , wherein more than one data correction packets are received per frame.

18. The computer readable medium of claim 13 , wherein the method further comprises:

calculating a differential delay based on the time between data packets provided to the network device; and

updating an interval length based on the differential delay.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2022
From: SILVER PEAK SYSTEMS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 059670/0543 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2022
From: SILVER PEAK SYSTEMS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 058943/0729 →
RELEASE OF SECURITY INTEREST Recorded Sep 22, 2020
From: GOLUB CAPITAL LLC
To: SILVER PEAK SYSTEMS, INC.
Reel/Frame 053852/0231 →
SECURITY INTEREST Recorded Apr 16, 2019
From: SILVER PEAK SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS AGENT
Reel/Frame 048921/0455 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2008
From: HUGHES, DAVID ANTHONY
To: SILVER PEAK SYSTEMS, INC.
Reel/Frame 020598/0807 →