IP Library Granted Patent US 9,485,178
Granted Patent B2
US 9,485,178 · App. 14/229,545 · Granted Nov 1, 2016

Packet coalescing

Inventors: Srihari Makikeni (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 9,485,178
App. No.
14/229,545
Granted
Nov 1, 2016
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 (37)

1. A method, comprising:

receiving a coalesced Transmission Control Protocol/Internet Protocol (TCP/IP) packet for receive processing, the coalesced TCP/IP packet having a single IP header, a single TCP header, and a single TCP payload, the coalesced TCP/IP packet having been coalesced by combination of multiple TCP/IP packets received by a network interface controller (NIC), the multiple TCP/IP packets having multiple, respective, TCP payloads and multiple, respective, TCP headers and multiple, respective, IP headers, the single TCP payload of the coalesced packet corresponding to a collection of the multiple, respective, TCP payloads, the single TCP header of the coalesced TCP/IP packet having, at least, a TCP checksum of the single TCP header based on the multiple TCP/IP packets received by the NIC, the single IP header of the coalesced TCP/IP packet having, at least, an IP length based on the multiple TCP/IP packets received by the NIC;

receiving, for the coalesced TCP/IP packet, a data field to indicate a number of segments coalesced; and

performing the receive processing of the coalesced TCP/IP packet; and

performing receive processing for a TCP/IP packet that was not coalesced from multiple TCP/IP packets;

wherein the coalesced packet comprises a packet stored in a list, different members of the list identifying different respective portions of the single TCP payload.

2. The method of claim 1 , further comprising configuring a packet coalescing window.

3. The method of claim 1 , wherein the receive processing comprises navigation of a TCP state machine.

4. The method of claim 1 , wherein the receive processing comprises reassembly of TCP packets.

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

6. The method of claim 1 , wherein the receiving the coalesced TCP/IP packet comprises receiving by a protocol stack.

7. An article of manufacture, comprising

executable instructions disposed on a non-transitory computer readable medium, the instructions to, when executed:

receive a coalesced Transmission Control Protocol/Internet Protocol (TCP/IP) packet for receive processing, the coalesced TCP/IP packet having a single IP header, a single TCP header, and a single TCP payload, the coalesced TCP/IP packet having been coalesced by combination of multiple TCP/IP packets received by a network interface controller (NIC), the multiple TCP/IP packets having multiple, respective, TCP payloads and multiple, respective, TCP headers and multiple, respective, IP headers, the single TCP payload of the coalesced packet corresponding to a collection of the multiple, respective, TCP payloads, the single TCP header of the coalesced TCP/IP packet having, at least, a TCP checksum of the single TCP header based on the multiple TCP/IP packets received by the NIC, the single IP header of the coalesced TCP/IP packet having, at least, an IP length based on the multiple TCP/IP packets received by the NIC;

receive, for the coalesced TCP/IP packet, a data field to indicate a number of segments coalesced; and

perform the receive processing of the coalesced TCP/IP packet; and

perform receive processing for a TCP/IP packet that was not coalesced from multiple TCP/IP packets received by the NIC;

wherein the coalesced packet comprises a packet stored in a list, different members of the list identifying different respective portions of the single TCP payload.

8. The article of claim 7 , wherein the instructions comprise instructions to configure a packet coalescing window.

9. The article of claim 7 , wherein the receive processing comprises navigation of a TCP state machine.

10. The article of claim 7 , wherein the multiple TCP/IP packets comprise TCP/IP packets in a same TCP/IP flow.

11. The article of claim 7 , wherein the instructions comprise instructions of a protocol stack.

12. The article of claim 7 , wherein the single Internet Protocol header comprises one of (1) an IPv4 header and (2) an IPv6 header.

13. A system, comprising:

memory; and

an article of manufacture, comprising executable instructions disposed on a non-transitory computer readable medium, the instructions to, when executed:

receive a coalesced Transmission Control Protocol/Internet Protocol (TCP/IP) packet for receive processing, the coalesced TCP/IP packet having a single IP header, a single TCP header, and a single TCP payload, the coalesced TCP/IP packet having been coalesced by combination of multiple TCP/IP packets received by a network interface controller (NIC), the multiple TCP/IP packets having multiple, respective, TCP payloads and multiple, respective, TCP headers and multiple, respective, IP headers, the single TCP payload of the coalesced packet corresponding to a collection of the multiple, respective, TCP payloads, the single TCP header of the coalesced TCP/IP packet having, at least, a TCP checksum of the single TCP header based on the multiple TCP/IP packets received by the NIC, the single IP header of the coalesced TCP/IP packet having, at least, an IP length based on the multiple TCP/IP packets received by the NIC;

receive, for the coalesced TCP/IP packet, a data field to indicate a number of segments coalesced; and

perform the receive processing of the coalesced TCP/IP packet; and

perform receive processing for a TCP/IP packet that was not coalesced from multiple TCP/IP packets received by the NIC;

wherein the coalesced packet comprises a packet stored in a list, different members of the list identifying different respective portions of the single TCP payload.

14. The system of claim 13 , wherein the instructions comprise instructions to configure a packet coalescing window.

15. The system of claim 13 , wherein the receive processing comprises navigation of a TCP state machine.

16. The system of claim 13 , wherein the multiple TCP/IP packets comprise TCP/IP packets in a same TCP/IP flow.

17. The system of claim 13 , wherein the instructions comprise instructions of a protocol stack.

18. The system of claim 13 , further comprising the NIC.

19. The system of claim 13 , further comprising a processor.

Continuity (4)
Continuation 12980682 · Dec 29, 2010
Continuation 12586964 · Sep 30, 2009
Continuation 10991239 · Nov 16, 2004
Related Publication 20140211804A1 · Jul 31, 2014