IP Library Granted Patent US 8,824,508
Granted Patent B2
US 8,824,508 · App. 13/529,745 · Granted Sep 2, 2014

High-speed CLD-based TCP assembly offload

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,824,508
App. No.
13/529,745
Granted
Sep 2, 2014
Kind
B2
Abstract

A method offloading data intensive tasks from a processor comprises receiving at a configurable logic device (CLD) a network packet, parsing the network packet to determine that the packet is a TCP segment, searching a partially assembled packet table to locate an associated partially assembled packet data structure, inserting the network packet into the associated partially assembled packet data structure, recognizing that the partially assembled packet data structure contains every segment produced from an original TCP packet, assembling a fully assembled TCP packet from the data in the partially assembled packet data structure, and transmitting the fully assembled TCP packet to a processor in the same computer system as the CLD.

Claims (76)

1. A method offloading data intensive tasks from a processor, comprising:

receiving at a configurable logic device (CLD) a network packet, the CLD being coupled to a memory having a packet table including a plurality packet data structures for packet assembly;

parsing the network packet to determine that the packet is a TCP segment;

searching the packet table to locate an associated partially assembled packet data structure;

when an associated partially assembled packet data structure is found, inserting the network packet into the associated partially assembled packet data structure;

when an associated partially assembled packet data structure is not found, adding the network packet to an unused packet data structure within the packet table;

determining whether the partially assembled packet data structure contains every segment produced from an original TCP packet;

when every segment is contained in the data structure:

assembling a fully assembled TCP packet from the data in the partially assembled packet data structure; and

transmitting the fully assembled TCP packet to a processor in the same computer system as the CLD; and

when every segment is not contained in the data structure:

determining whether a threshold number of the plurality of packet data structures are in use; and

when a threshold number are in use:

identifying the oldest partially assembled packet data structure;

transmitting without assembling each TCP segment packet contained in the oldest partially assembled packet data structure to the processor; and

clearing the oldest partially assembled packet data structure for subsequent reuse.

2. The method of claim 1 , further comprising, at a regular interval:

inspecting each of the partially assembled packet data structures;

determining that a particular partially assembled packet data structure is older than a predetermined threshold;

transmitting without assembling each TCP segment packet contained in the particular partially assembled packet data structure to the processor; and

clearing the particular partially assembled packet data structure for subsequent reuse.

3. The method of claim 1 , wherein the memory is not shared with the processor.

4. The method of claim 1 , wherein a total number of packet data structures within the memory is controlled by the processor.

5. The method of claim 1 , wherein the threshold number is one less than a total number of packet data structures included within the memory.

6. The method of claim 1 , further comprising applying a bypass filter to the packet to determine whether or not to proceed to the searching step.

7. A tangible, non-transitory computer-readable media comprising a configuration file that when loaded by a configurable logic device (CLD) configures the CLD to:

receive at a CLD a network packet, the CLD being coupled to a memory having a packet table including a plurality packet data structures for packet assembly;

parse the network packet to determine that the packet is a TCP segment;

search the packet table to locate an associated partially assembled packet data structure;

when an associated partially assembled packet data structure is found, insert the network packet into the associated partially assembled packet data structure;

when an associated partially assembled packet data structure is not found, add the network packet to an unused packet data structure within the packet table;

determine whether the partially assembled packet data structure contains every segment produced from an original TCP packet;

when every segment is contained in the data structure:

assemble a fully assembled TCP packet from the data in the partially assembled packet data structure; and

transmit the fully assembled TCP packet to a processor in the same computer system as the CLD; and

when every segment is not contained in the data structure:

determine whether a threshold number of the plurality of packet data structures are in use; and

when a threshold number are in use:

identify the oldest partially assembled packet data structure;

transmit without assembling each TCP segment packet contained in the oldest partially assembled packet data structure to the processor; and

clear the oldest partially assembled packet data structure for subsequent reuse.

8. The media of claim 7 , wherein the configuration file further configures the CLD to, at a regular interval:

inspect each of the partially assembled packet data structures;

determine that a particular partially assembled packet data structure is older than a predetermined threshold;

transmit without assembling each TCP segment packet contained in the particular partially assembled packet data structure to the processor; and

clear the particular partially assembled packet data structure for subsequent reuse.

9. The method of claim 7 , wherein the memory is not shared with the processor.

10. The method of claim 7 , wherein a total number of packet data structures within the memory is controlled by the processor.

11. The method of claim 7 , wherein the threshold number is one less than a total number of packet data structures included within the memory.

12. The method of claim 7 , wherein the configuration file further configures the CLD to apply a bypass filter to the packet to determine whether or not to search the packet table.

13. A computing system, comprising:

a configurable logic device (CLD) configured to:

receive at a CLD a network packet, the CLD being coupled to a memory having a packet table including a plurality packet data structures for packet assembly;

parse the network packet to determine that the packet is a TCP segment;

search the packet table to locate an associated partially assembled packet data structure;

when an associated partially assembled packet data structure is found, insert the network packet into the associated partially assembled packet data structure;

when an associated partially assembled packet data structure is not found, add the network packet to an unused packet data structure within the packet table;

determine whether the partially assembled packet data structure contains every segment produced from an original TCP packet;

when every segment is contained in the data structure:

assemble a fully assembled TCP packet from the data in the partially assembled packet data structure; and

transmit the fully assembled TCP packet to a processor in the same computer system as the CLD; and

when every segment is not contained in the data structure:

determine whether a threshold number of the plurality of packet data structures are in use; and

when a threshold number are in use:

identify the oldest partially assembled packet data structure;

transmit without assembling each TCP segment packet contained in the oldest partially assembled packet data structure to the processor; and

clear the oldest partially assembled packet data structure for subsequent reuse.

14. The computing system of claim 13 , wherein the CLD is further configured to, at a regular interval:

inspect each of the partially assembled packet data structures;

determine that a particular partially assembled packet data structure is older than a predetermined threshold;

transmit without assembling each TCP segment packet contained in the particular partially assembled packet data structure to the processor; and

clear the particular partially assembled packet data structure for subsequent reuse.

15. The method of claim 13 , wherein the memory is not shared with the processor.

16. The method of claim 13 , wherein a total number of packet data structures within the memory is controlled by the processor.

17. The method of claim 13 , wherein the threshold number is one less than a total number of packet data structures included within the memory.

18. The method of claim 13 , wherein the CLD is further configured to apply a bypass filter to the packet to determine whether or not to search the packet table.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2018
From: KEYSIGHT TECHNOLOGIES SINGAPORE (HOLDINGS) PTE. LTD.
To: KEYSIGHT TECHNOLOGIES SINGAPORE (SALES) PTE. LTD.
Reel/Frame 048225/0065 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2017
From: BREAKINGPOINT SYSTEMS, INC.
To: KEYSIGHT TECHNOLOGIES SINGAPORE (HOLDINGS) PTE. LTD.
Reel/Frame 043898/0980 →
RELEASE OF SECURITY INTEREST Recorded Apr 24, 2017
From: SILICON VALLEY BANK, AS SUCCESSOR ADMINISTRATIVE AGENT
To: BREAKINGPOINT SYSTEMS, INC.
Reel/Frame 042126/0181 →
NOTICE OF SUBSTITUTION OF ADMINISTRATIVE AGENT Recorded Feb 2, 2015
From: BANK OF AMERICA, N.A., RESIGNING ADMINISTRATIVE AGENT
To: SILICON VALLEY BANK, AS SUCCESSOR ADMINISTRATIVE AGENT
Reel/Frame 034870/0598 →
SECURITY AGREEMENT Recorded Jan 25, 2013
From: BREAKINGPOINT SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 029698/0136 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2012
From: STROUD, JONATHAN; COOK, BRENT AARON
To: BREAKINGPOINT SYSTEMS, INC.
Reel/Frame 029411/0238 →