IP Library Granted Patent US 8,718,096
Granted Patent B2
US 8,718,096 · App. 12/980,682 · Granted May 6, 2014

Packet coalescing

Inventors: Srihari Makineni (Hillsboro, OR); Ravishankar Iyer (Portland, OR); David Minturn (Hillsboro, OR); Sujoy Sen (Portland, OR); Donald Newell (Portland, OR); Li Zhao (Beaverton, OR)
Assignee: Intel Corporation
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,718,096
App. No.
12/980,682
Granted
May 6, 2014
Kind
B2
Abstract

In general, in one aspect, the disclosures describes a method that includes receiving multiple ingress Internet Protocol packets, each of the multiple ingress Internet Protocol packets having an Internet Protocol header and a Transmission Control Protocol segment having a Transmission Control Protocol header and a Transmission Control Protocol payload, where the multiple packets belonging to a same Transmission Control Protocol/Internet Protocol flow. The method also includes preparing an Internet Protocol packet having a single Internet Protocol header and a single Transmission Control Protocol segment having a single Transmission Control Protocol header and a single payload formed by a combination of the Transmission Control Protocol segment payloads of the multiple Internet Protocol packets. The method further includes generating a signal that causes receive processing of the Internet Protocol packet.

Claims (66)

1. A method, comprising:

receiving network packets transmitted over a network, multiple ones of the network packets having the same set of multiple header structures within, each of the multiple ones of the network packets belonging to a respective flow of network packets;

for multiple respective flows of network packets, maintaining, at least:

(1) data of payloads of network packets being coalesced for the multiple respective flows; and

(2) a respective number of packets being coalesced for the multiple respective flows;

determining a first of the received network packets is of a flow matching a one of the multiple respective flows;

adding the data of the payload of the first of the received network packets to the data of payloads of network packets being coalesced for the one of the multiple respective flows;

incrementing the respective number of packets being coalesced for the one of the multiple respective flows;

determining a second of the received network packets is of a flow matching the one of the multiple respective flows;

determining that a protocol stack should process data of the network packets corresponding to at least one of the respective flows;

based on the determining that the protocol stack should process data of the network packets corresponding to the at least one of the respective flows, generating data corresponding to a network packet having:

(1) the same set of multiple header structures found within each of the multiple network packets; and

(2) a payload corresponding to a combination of the data of the payloads of the network packets being coalesced for the respective flow; and

causing protocol stack processing of the generated data corresponding to a network packet instead of the multiple received network packets associated with the flow; and

not adding data of the payload of the second of the received network packets to the payloads of network packets being coalesced for the one of the multiple respective flows.

2. The method of claim 1 ,

wherein the multiple header structures comprise an Internet Protocol (IP) header and a Transmission Control Protocol (TCP) header; and

wherein the flows comprise flows determined by data within the header structures.

3. The method of claim 1 ,

wherein the multiple header structures comprise at least two header structures.

4. The method of claim 1 ,

wherein the generating the network packet comprises determining new values for fields within the header structures.

5. A computer program, disposed on a non-transitory computer readable storage medium, comprising instructions for causing a device to:

receive network packets transmitted over a network, multiple ones of the network packets having the same set of multiple header structures within, each of the multiple ones of the network packets belonging to a respective flow of network packets;

for multiple respective flows of network packets, maintain, at least:

(1) data of payloads of network packets being coalesced for the multiple respective flows; and

(2) a respective number of packets being coalesced for each of multiple respective flows;

determine a first of the received network packets is of a flow matching a one of the multiple respective flows;

add the data of the payload of the first of the received network packets to data of payloads of network packets being coalesced for the one of the multiple respective flows;

increment the respective number of packets being coalesced for the one of the multiple respective flows;

determine a second of the received network packets is of a flow matching the one of the multiple respective flows;

determine that a protocol stack should process data of the network packets corresponding to at least one of the respective flows;

based on a determination that the protocol stack should process data of the network packets corresponding to the at least one of the respective flows, generate data corresponding to a network packet having:

(1) the same set of multiple header structures found within each of the multiple network packets; and

(2) a payload corresponding to a combination of the data of the payloads of the network packets being coalesced for the respective flow; and

cause protocol stack processing of the generated data corresponding to a network packet instead of the multiple received network packets associated with the flow; and

not add data of the payload of the second of the received network packets to the payloads of network packets being coalesced for the one of the multiple respective flows.

6. The computer program of claim 5 ,

wherein the multiple header structures comprise an Internet Protocol (IP) header and a Transmission Control Protocol (TCP) header; and

wherein the flows comprise flows determined by data within the header structures.

7. The computer program of claim 5 ,

wherein the multiple header structures comprise at least two header structures.

8. The computer program of claim 5 ,

wherein the instructions to cause the device to generate the network packet comprise instructions to determine new values for fields within the header structures.

9. A network device, comprising circuitry configured to, when in operation:

receive network packets transmitted over a network, multiple ones of the network packets having the same set of multiple header structures within, each of the multiple ones of the network packets belonging to a respective flow of network packets;

for multiple respective flows of network packets, maintain, at least:

(1) data of payloads of network packets being coalesced for each of the multiple respective flows; and

(2) a respective number of packets being coalesced for each of multiple respective flows;

determine a first of the received network packets is of a flow matching a one of the multiple respective flows;

add data of the payload of the first of the received network packets to the data of payloads of network packets being coalesced for the one of the multiple respective flows;

increment the respective number of packets being coalesced for the one of the multiple respective flows;

determine a second of the received network packets is of a flow matching the one of the multiple respective flows; and

determine that a protocol stack should process data of the network packets corresponding to at least one of the respective flows;

based on a determination that the protocol stack should process data of the network packets corresponding to the at least one of the respective flows, generate data corresponding to a network packet having:

(1) the same set of multiple header structures found within each of the multiple network packets; and

(2) a payload corresponding to a combination of the data of the payloads of the network packets being coalesced for the respective flow; and

cause the protocol stack processing of the generated data corresponding to the network packet instead of the multiple received network packets associated with the flow; and

not add data of the payload of the second of the received network packets to the payloads of network packets being coalesced for the one of the multiple respective flows.

10. The network device of claim 9 ,

wherein the multiple header structures comprise an Internet Protocol (IP) header and a Transmission Control Protocol (TCP) header; and

wherein the flows comprise flows determined by data within the header structures.

11. The network device of claim 9 ,

wherein the multiple header structures comprise at least two header structures.

12. The network device of claim 9 ,

wherein the circuitry configured to generate the network packet comprises circuitry configured to determine new values for fields within the header structures.

Continuity (3)
Continuation 12586964 · Sep 30, 2009
Continuation 10991239 · Nov 16, 2004
Related Publication 20110090920A1 · Apr 21, 2011