IP Library › Granted Patent US 10,652,147
Granted Patent B2
US 10,652,147 · App. 15/859,301 · Granted May 12, 2020

Packet coalescing

Inventors: Srihari Makineni (Portland, OR); Ravi Iyer (Portland, OR); Dave Minturn (Hillsboro, OR); Sujoy Sen (Portland, OR); Donald Newell (Portland, OR); Li Zhao (Riverside, CA)
Assignee: Intel Corporation
H04L45/74H04L49/20H04L69/16H04L69/161H04L69/166
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 10,652,147
App. No.
15/859,301
Granted
May 12, 2020
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 (50)

1. At least one non-transitory machine accessible storage medium having instructions stored thereon, wherein the instructions when executed on a machine, causes the machine to:

parse multiple TCP/IP packets, wherein the multiple TCP/IP packets comprise respective headers and payloads;

strip the respective header from each one of the multiple packets;

join the payloads of the multiple packets to form a combined payload for inclusion in a coalesced packet, wherein stripped headers of the multiple packets are excluded from the coalesced packet;

set header fields for a header of the coalesced packet based at least in part on the combined payload, wherein the header of the coalesced packet comprises a TCP/IP header and comprises the only header for the combined payload; and

send the coalesced packet to a network stack for delivery to an application based on fields in the header of the coalesced packet.

2. The storage medium of claim 1 , wherein the TCP/IP header comprises a single TCP segment header and a single IP header for the combined payload.

3. The storage medium of claim 1 , wherein the multiple TCP/IP packets comprise TCP/IP packets in a same TCP/IP flow.

4. The storage medium of claim 1 , wherein the respective headers comprise one of an IPv4 header and an IPv6 header.

5. The storage medium of claim 1 , wherein the instructions, when executed, further cause the machine to determine a coalesce window, and the multiple TCP/IP packets are received within the coalesce window, wherein the payloads of the multiple packets are combined to form the combined payload based on determining that the multiple packets correspond to the coalesce window.

6. The storage medium of claim 5 , wherein the coalesce window is defined according to a particular number of packets.

7. The storage medium of claim 5 , wherein the coalesce window comprises a duration of time.

8. A method comprising:

parsing multiple TCP/IP packets, wherein the multiple TCP/IP packets comprise respective headers and payloads;

stripping headers from the multiple packets;

joining the payloads of the multiple packets to form a combined payload for inclusion in a coalesced packet, wherein stripped headers of the multiple packets are excluded from the coalesced packet;

setting header fields for a header of the coalesced packet based at least in part on the combined payload, wherein the header of the coalesced packet comprises a TCP/IP header and comprises the only header for the combined payload; and

sending the coalesced packet to a network stack for delivery to an application based on fields in the header of the coalesced packet.

9. The method of claim 8 , wherein the multiple TCP/IP packets comprise TCP/IP packets in a same TCP/IP flow.

10. The method of claim 8 , wherein the respective headers comprise one of an IPv4 header and an IPv6 header.

11. The method of claim 8 , further comprising determining a coalesce window, wherein the multiple TCP/IP packets are received within the coalesce window.

12. An apparatus comprising:

a network interface controller comprising circuitry to:

parse multiple TCP/IP packets, wherein the multiple TCP/IP packets comprise respective headers and payloads;

strip headers from the multiple packets;

join the payloads of the multiple packets to form a combined payload for inclusion in a coalesced packet, wherein stripped headers of the multiple packets are excluded from the coalesced packet;

set header fields for a header of the coalesced packet based at least in part on the combined payload, wherein the header of the coalesced packet comprises a TCP/IP header and comprises the only header for the combined payload; and

send the coalesced packet to a network stack for delivery to an application based on fields in the header of the coalesced packet.

13. The apparatus of claim 12 , wherein the circuitry comprises an Application Specific Integrated Circuitry (ASIC).

14. The apparatus of claim 12 , further comprising protocol stack circuitry to receive the multiple TCP/IP packets.

15. The apparatus of claim 14 , wherein the protocol stack circuitry comprises physical layer (PHY) circuitry and a media access controller (MAC).

16. A system comprising:

a processor;

a memory;

a network interface controller (NIC) to:

receive a plurality of TCP/IP packets from computing devices on a network, wherein the multiple TCP/IP packets comprise respective headers and payloads;

strip headers from the multiple packets;

join the payloads of the multiple packets to form a combined payload for inclusion in a coalesced packet, wherein stripped headers of the multiple packets are excluded from the coalesced packet;

set header fields of a header for the coalesced packet based at least in part on the combined payload, wherein the header of the coalesced packet comprises a TCP/IP header and comprises the only header for the combined payload; and

send the coalesced packet to a network stack for delivery to an application based on fields in the header of the coalesced packet.

17. The system of claim 16 , further comprising a particular at least one of the computing devices on the network.

18. The system of claim 16 , wherein the NIC is further to revise a TCP checksum for the coalesced packet.

19. The system of claim 16 , wherein the payloads of the multiple payloads are joined contiguously.

20. The system of claim 16 , wherein the NIC is integrated with the processor.

21. A system comprising:

means for parsing multiple TCP/IP packets, wherein the multiple TCP/IP packets comprise respective headers and payloads;

means for stripping headers from the multiple packets;

means for joining the payloads of the multiple packets to form a combined payload for inclusion in a coalesced packet, wherein stripped headers of the multiple packets are excluded from the coalesced packet;

means for generating a header for the coalesced packet, wherein generating the header comprises setting header fields for the coalesced packet based at least in part on the combined payload, wherein the header of the coalesced packet comprises a TCP/IP header and comprises the only header for the combined payload; and

means for sending the coalesced packet to a network stack for delivery to an application based on fields in the header of the coalesced packet.

Continuity (6)
Continuation 15339354 · Oct 31, 2016
Continuation 14229545 · Mar 28, 2014
Continuation 12980682 · Dec 29, 2010
Continuation 12586964 · Sep 30, 2009
Continuation 10991239 · Nov 16, 2004
Related Publication 20180198709A1 · Jul 12, 2018
Cited By (2)
US 12,538,170 US 12,538,171