IP Library Granted Patent US 9,130,772
Granted Patent B1
US 9,130,772 · App. 10/438,709 · Granted Sep 8, 2015

Methods, systems, and computer program products for adaptive inverse packet multiplexing in which traffic allocation is dynamically adjustable on individual links

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,130,772
App. No.
10/438,709
Granted
Sep 8, 2015
Kind
B1
Abstract

A packet is communicated between a first node and a second node by assigning a plurality of packet fragments to a plurality of communication links connecting the first node and the second node, respectively, such that respective sizes of the plurality of packet fragments are based on respective bandwidths of the plurality of communication links. The plurality of packet fragments is transmitted on the plurality of communication links from the first node to the second node. The plurality of packet fragments is then reassembled at the second node upon receipt.

Claims (74)

1. A method of processing a packet, comprising:

segmenting a block of data into variable length fragments for transmission over multiple links;

assigning a fragment header that comprises a sequence number and a end-of-packet demarcation flag that indicates the end of the packet for each respective fragment;

ordering the fragments based on the sequence numbers; and

invoking a reassembly procedure if at least one of the fragments is lost;

wherein segmenting the block of data, assigning the fragment header, ordering the fragments, and invoking the reassembly procedure are performed at an interface of a link layer and a physical layer; and

wherein the respective lengths of the fragments allocated to the respective multiple links for transmission are based on respective dynamically realizable bandwidths for the multiple links.

2. The method of claim 1 , wherein the fragment header further comprises a start-of-packet demarcation flag.

3. The method of claim 2 , wherein the fragment header further comprises a cyclic redundancy check for the sequence number, end-of-packet demarcation flag, and start-of-packet demarcation flag.

4. The method of claim 1 , wherein invoking the reassembly procedure comprises:

setting a timer upon receipt of one of the fragments; and

declaring one of the fragments lost if the timer expires before an expected next sequence numbered fragment arrives.

5. The method of claim 4 , wherein the timer has a timeout value that is a function of the latency of a slowest one of the multiple links.

6. The method of claim 1 , wherein invoking the reassembly procedure comprises determining that a plurality of receive queues that are respectively associated with the multiple links are non-empty and an expected next sequence numbered fragment is not present.

7. The method of claim 1 , wherein invoking the reassembly procedure comprises selecting a smallest sequence numbered fragment from a plurality of receive queues that are respectively associated with the multiple links.

8. A method of processing a packet, comprising:

distributing, at an interface of a link layer and a physical layer, variable length fragments of the packet across multiple links for transmission such that the variable lengths are dynamically adjusted based on respective dynamically realized bandwidths of the links;

wherein differences in the lengths of the variable length fragments are based on differences between the dynamically realized bandwidths of the links.

9. The method of claim 8 , wherein the variable lengths are based on each of the multiple links having a transmit queue associated therewith and sizes of the transmit queues are based on nominal bandwidths of the multiple links.

10. The method of claim 9 , wherein each transmit queue has a full threshold associated therewith that is based on the nominal bandwidth of the respective link, the method further comprising:

filling a respective one of the transmit queues until reaching the full threshold; and

filling another respective one of the transmit queues until reaching the full threshold responsive to filling the respective one of the transmit queues.

11. The method of claim 10 , wherein each transmit queue has an advance threshold such that if the end of the packet is reached in the transmit queue and the advance threshold is exceeded, then the respective transmit queue is not filled to the full threshold and additional fragments from another packet are placed in others of the transmit queues.

12. The method of claim 9 , wherein each transmit queue has an empty threshold associated therewith that is based on the nominal bandwidth of the respective link and a latency associated with servicing the respective transmit queue responsive to notification that the respective transmit queue's fill level has fallen below the empty threshold.

13. A system for processing a packet, comprising:

means for segmenting a block of data into variable length fragments for transmission over multiple links;

means for assigning a fragment header that comprises a sequence number and a end-of-packet demarcation flag that indicates the end of the packet for each respective fragment;

means for ordering the fragments based on the sequence numbers; and

means for invoking a reassembly procedure if at least one of the fragments is lost;

wherein segmenting the block of data, assigning the fragment header, ordering the fragments, and invoking the reassembly procedure are performed at an interface of a link layer and a physical layer; and

wherein the respective lengths of the fragments allocated to the respective multiple links for transmission are based on respective dynamically realizable bandwidths for the multiple links.

14. The system of claim 13 , wherein the fragment header further comprises a start-of-packet demarcation flag.

15. The system of claim 14 , wherein the fragment header further comprises a cyclic redundancy check for the sequence number, end-of-packet demarcation flag, and start-of-packet demarcation flag.

16. The system of claim 13 , wherein the means for invoking the reassembly procedure comprises:

means for setting a timer upon receipt of one of the fragments; and

means for declaring one of the fragments lost if the timer expires before an expected next sequence numbered fragment arrives.

17. The system of claim 16 , wherein the timer has a timeout value that is a function of the latency of a slowest one of the multiple links.

18. The system of claim 13 wherein the means for invoking the reassembly procedure comprises means for determining that a plurality of receive queues that are respectively associated with the multiple links are non-empty and an expected next sequence numbered fragment is not present.

19. The system of claim 13 , wherein the means for invoking the reassembly procedure comprises means for selecting a smallest sequence numbered fragment from a plurality of receive queues that are respectively associated with the multiple links.

20. A system for processing a packet, comprising:

means for distributing, at an interface of a link layer and a physical layer, variable length fragments of the packet across multiple links for transmission such that the variable lengths are dynamically adjusted based on respective dynamically realized bandwidths of the links;

wherein differences in the lengths of the variable length fragments are based on differences between the dynamically realized bandwidths of the links.

21. The system of claim 20 , wherein the variable lengths are based on each of the multiple links having a transmit queue associated therewith and sizes of the transmit queues are based on nominal bandwidths of the multiple links.

22. The system of claim 21 , wherein each transmit queue has a full threshold associated therewith that is based on the nominal bandwidth of the respective link, the system further comprising:

means for filling a respective one of the transmit queues until reaching the full threshold; and

means for filling another respective one of the transmit queues until reaching the full threshold responsive to filling the respective one of the transmit queues.

23. The system of claim 22 , wherein each transmit queue has an advance threshold such that if the end of the packet is reached in the transmit queue and the advance threshold is exceeded, then the respective transmit queue is not filled to the full threshold and additional fragments from another packet are placed in others of the transmit queues.

24. The system of claim 21 , wherein each transmit queue has an empty threshold associated therewith that is based on the nominal bandwidth of the respective link and a latency associated with servicing the respective transmit queue responsive to notification that the respective transmit queue's fill level has fallen below the empty threshold.

25. A computer program product for processing a packet, comprising:

a non-transitory computer readable program medium having computer readable program code embodied therein, the computer readable program code comprising:

computer readable program code configured to segment a block of data into variable length fragments for transmission over multiple links;

computer readable program code configured to assign a fragment header that comprises a sequence number and a end-of-packet demarcation flag that indicates the end of the packet for each respective fragment;

computer readable program code configured to order the fragments based on the sequence numbers; and

computer readable program code configured to invoke a reassembly procedure if at least one of the fragments is lost;

wherein segmenting the block of data, assigning the fragment header, ordering the fragments, and invoking the reassembly procedure are performed at an interface of a link layer and a physical layer; and

wherein the respective lengths of the fragments allocated to the respective multiple links for transmission are based on respective dynamically realizable bandwidths for the multiple links.

26. The computer program product of claim 25 , wherein the fragment header further comprises a start-of-packet demarcation flag.

27. The computer program product of claim 26 , wherein the fragment header further comprises a cyclic redundancy check for the sequence number, end-of-packet demarcation flag, and start-of-packet demarcation flag.

28. The computer program product of claim 25 , wherein the computer readable program code configured to invoke the reassembly procedure comprises:

computer readable program code configured to set a timer upon receipt of one of the fragments; and

computer readable program code configured to declare one of the fragments lost if the timer expires before an expected next sequence numbered fragment arrives.

29. The computer program product of claim 28 , wherein the timer has a timeout value that is a function of the latency of a slowest one of the multiple links.

30. The computer program product of claim 25 wherein the computer readable program code configured to invoke the reassembly procedure comprises computer readable program code configured to determine that a plurality of receive queues that are respectively associated with the multiple links are non-empty and an expected next sequence numbered fragment is not present.

31. The computer program product of claim 25 , wherein the computer readable program code configured to invoke the reassembly procedure comprises computer readable program code configured to select a smallest sequence numbered fragment from a plurality of receive queues that are respectively associated with the multiple links.

32. A computer program product for processing a packet, comprising:

a non-transitory computer readable program medium having computer readable program code embodied therein, the computer readable program code comprising:

computer readable program code configured to distribute, at an interface of a link layer and a physical layer, variable length fragments of the packet across multiple links for transmission such that the variable lengths are dynamically adjusted based on respective dynamically realized bandwidths of the links;

wherein differences in the lengths of the variable length fragments are based on differences between the dynamically realized bandwidths of the links.

33. The computer program product of claim 32 , wherein the variable lengths are based on each of the multiple links having a transmit queue associated therewith and sizes of the transmit queues are based on nominal bandwidths of the multiple links.

34. The computer program product of claim 33 , wherein each transmit queue has a full threshold associated therewith that is based on the nominal bandwidth of the respective link, the computer program product further comprising:

computer readable program code configured to fill a respective one of the transmit queues until reaching the full threshold; and

computer readable program code configured to fill another respective one of the transmit queues until reaching the full threshold responsive to filling the respective one of the transmit queues.

35. The computer program product of claim 34 , wherein each transmit queue has an advance threshold such that if the end of the packet is reached in the transmit queue and the advance threshold is exceeded, then the respective transmit queue is not filled to the full threshold and additional fragments from another packet are placed in others of the transmit queues.

36. The computer program product of claim 33 , wherein each transmit queue has an empty threshold associated therewith that is based on the nominal bandwidth of the respective link and a latency associated with servicing the respective transmit queue responsive to notification that the respective transmit queue's fill level has fallen below the empty threshold.

Assignments (13)
MERGER Recorded Sep 27, 2023
From: ADVA OPTICAL NETWORKING SE
To: ADTRAN NETWORKS SE
Reel/Frame 065054/0936 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2016
From: OVERTURE NETWORKS, INC.
To: ADVA OPTICAL NETWORKING SE
Reel/Frame 040676/0351 →
RELEASE OF SECURITY INTEREST Recorded Jan 19, 2016
From: SILICON VALLEY BANK
To: OVERTURE NETWORKS, INC.
Reel/Frame 037516/0468 →
RELEASE OF SECURITY INTEREST Recorded Jan 19, 2016
From: SILICON VALLEY BANK
To: OVERTURE NETWORKS, INC.
Reel/Frame 037517/0562 →
RELEASE OF SECURITY INTEREST Recorded Jan 19, 2016
From: SILICON VALLEY BANK
To: OVERTURE NETWORKS, INC.
Reel/Frame 037517/0627 →
THIRD AMENDMENT TO AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 29, 2015
From: OVERTURE NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 036991/0957 →
SECURITY INTEREST Recorded Jul 14, 2014
From: OVERTURE NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 033302/0706 →
MERGER Recorded Jun 25, 2014
From: HATTERAS NETWORKS, INC.
To: OVERTURE NETWORKS, INC.
Reel/Frame 033174/0809 →
AMENDED AND RESTATED IPSA Recorded Sep 26, 2013
From: HATTERAS NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 031300/0628 →
CORRECTIVE ASSIGNMENT OF RELEASE ORIGINALLY EXECUTED ON MARCH 10, 2011 AND RECORDED ON REEL: 026142 FRAME: 0234 TO CORRECT ASSIGNOR'S NAME FROM HATTERAS NETWORKS, INC. TO HORIZON TECHNOLOGY FUNDING COMPANY V LLC AND ASSIGNEE'S NAME FROM HORIZON TECHNOLOGY FUNDING COMPANY V LLC TO HATTERAS NETWORKS, INC. Recorded Jul 11, 2013
From: HORIZON TECHNOLOGY FUNDING COMPANY V LLC
To: HATTERAS NETWORKS, INC.
Reel/Frame 030845/0433 →
RELEASE Recorded Apr 7, 2011
From: HATTERAS NETWORKS, INC.
To: HORIZON TECHNOLOGY FUNDING COMPPANY V LLC
Reel/Frame 026142/0234 →
SECURITY AGREEMENT Recorded Jan 13, 2009
From: HATTERAS NETWORKS, INC.
To: HORIZON TECHNOLOGY FUNDING COMPANY V LLC
Reel/Frame 022102/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2003
From: GOODCHILD, GREGORY W.; ROOZE, IAN A.; WARTSKI, MARK CRANE
To: HATTERAS NETWORKS
Reel/Frame 014060/0760 →