IP Library Granted Patent US 8,848,741
Granted Patent B2
US 8,848,741 · App. 13/529,786 · Granted Sep 30, 2014

High-speed CLD-based TCP segmentation 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,848,741
App. No.
13/529,786
Granted
Sep 30, 2014
Kind
B2
Abstract

A method of offloading data intensive tasks from a processor, comprises, at a processor, preparing a TCP packet comprising a TCP header and a data payload, transmitting the TCP packet to a configurable logic device (CLD); and at the CLD, receiving the TCP packet, generating set of TCP segment packets containing, a copy of the TCP header, an incrementing segment sequence identifier, and a portion of the data payload, and transmitting the set of TCP segment packets on an external network interface.

Claims (54)

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

at a processor:

preparing a plurality of TCP packets, each TCP packet comprising a TCP header and a data payload,

adding a prepend header to each of the TCP packets, the prepend header comprising a TCP segmentation flag and a maximum segment size value indicating a maximum segment size for TCP segmentation; and

transmitting each TCP packet to a configurable logic device (CLD); and

at the CLD:

receiving a TCP packet from the processor;

determining whether to generate a set of TCP segment packets based on the TCP segmentation flag for the TCP packet;

generating a set of TCP segment packets if the TCP segmentation flag indicates that TCP segment packets are to be generated, each TCP segment packet being no longer than the maximum segmentation size for the TCP packet and comprising:

a copy of the TCP header,

an incrementing segment sequence identifier, and

a portion of the data payload;

transmitting the set of TCP segment packets to an external network interface; and

repeating the receiving, determining, generating, and transmitting steps for a plurality of TCP packets received from the processor.

2. The method of claim 1 , wherein the CLD is a field programmable gate array.

3. A tangible, non-transitory computer-readable media comprising:

instructions that when executed by a processor are operable to:

prepare a plurality of TCP packets, each TCP packet comprising a TCP header and a data payload,

adding a prepend header to each of the TCP packets, the prepend header comprising a TCP segmentation flag and a maximum segment size value indicating a maximum segment size for TCP segmentation, and

transmit each TCP packet to a configurable logic device (CLD); and

a configuration file that when loaded by a configurable logic device (CLD) configures the CLD to receive a plurality of TCP packets from the processor and for each received TCP packet to:

determine whether to generate a set of TCP segment packets based on the TCP segmentation flag for the TCP packet;

generate a set of TCP segment packets if the TCP segmentation flag indicates that TCP segment packets are to be generated, each TCP segment packet being no longer than the maximum segmentation size for the TCP packet and comprising:

a copy of the TCP header,

an incrementing segment sequence identifier, and

a portion of the data payload; and

transmit the set of TCP segment packets to an external network interface.

4. The media of claim 3 , wherein the configuration file is targeted for a field programmable gate array.

5. A computing system comprising:

a processor programmed to:

prepare a plurality of TCP packets, each TCP packet comprising a TCP header and a data payload,

add a prepend header to each of the TCP packets, the prepend header comprising a TCP segmentation flag and a maximum segment size value indicating a maximum segment size for TCP segmentation; and

transmit each TCP packet to a configurable logic device (CLD); and

a configurable logic device (CLD) configured to receive a plurality of annotated TCP packets from the processor and for each received annotated TCP packet to:

determine whether to generate a set of TCP segment packets based on the TCP segmentation flag for the TCP packet;

generate a set of TCP segment packets if the TCP segmentation flag indicates that TCP segment packets are to be generated, each TCP segment packet being no longer than the maximum segmentation size for the TCP packet and comprising:

a copy of the TCP header,

an incrementing segment sequence identifier, and

a portion of the data payload; and

transmit the set of TCP segment packets to an external network interface.

6. The system of claim 5 , wherein the CLD is a field programmable gate array.

7. The method of claim 1 , further comprising queuing the TCP segment packets at the CLD prior to transmitting the TCP segment packets to the external network interface.

8. The method of claim 1 , wherein the transmitting step at the CLD comprises transmitting the TCP segment packets to a plurality of different external network interfaces.

9. The method of claim 1 , wherein the steps performed at the processor are performed at a plurality of processors.

10. The method of claim 1 , wherein the wherein the steps performed at the CLD are performed at a plurality of CLDs.

11. The method of claim 1 , further comprising stripping the prepend header from the TCP packet at the CLD.

12. The tangible, non-transitory computer-readable media of claim 3 , wherein the CLD is further configured to transmit the TCP segment packets to a plurality of different external network interfaces.

13. The tangible, non-transitory computer-readable media of claim 3 , wherein the CLD is further configured to queue the TCP segment packets prior to transmitting the TCP segment packets to the external network interface.

14. The tangible, non-transitory computer-readable media of claim 3 , wherein the CLD is further configured to strip the prepend header from the TCP packet.

15. The computing system of claim 5 , wherein the CLD is further configured to queue the TCP segment packets at the CLD prior to transmitting the TCP segment packets to the external network interface.

16. The computing system of claim 5 , wherein the CLD is further configured to transmit the TCP segment packets to a plurality of different external network interfaces.

17. The computing system of claim 5 , wherein the system comprises a plurality of the processors.

18. The computing system of claim 5 , wherein the system comprises a plurality of the CLDs.

19. The computing system of claim 5 , wherein the CLD is further configured to strip the prepend header from the TCP packet.

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: COOK, BRENT AARON; MORIARTY, MICHAEL
To: BREAKINGPOINT SYSTEMS, INC.
Reel/Frame 029411/0138 →