Packet coalescing
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
exact text as granted — not AI-modified1 . A method comprising:
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, the multiple packets belonging to a same Transmission Control Protocol/Internet Protocol flow; 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; and generating a signal that causes receive processing of the Internet Protocol packet.
2 . The method of claim 1 , further comprising
initiating at least one direct memory access to store the single Transmission Control Protocol header, the single Internet Protocol header, and the payloads of the Transmission Control Protocol segments to a memory.
3 . The method of claim 2 ,
further comprising contiguously storing the payloads in the memory.
4 . The method of claim 1 ,
wherein the preparing comprises: determining a Transmission Control Protocol checksum to store in the single Transmission Control Protocol header, and determining a byte length to store in the single Internet Protocol header.
5 . The method of claim 1 ,
wherein the preparing comprises adjusting at least one value of at least one header of one of the multiple packets received.
6 . The method of claim 1 , wherein the preparing comprises determining an acknowledged sequence number of the single Transmission Control Protocol header.
7 . The method of claim 1 ,
wherein the flow comprises a flow identified, at least in part, by the received Internet Protocol packet's Internet Protocol source and destination addresses included in the Internet Protocol packet's Internet Protocol header, and the Transmission Control Protocol source and destination port numbers of the Transmission Control Protocol segment header included within the Internet Protocol packet.
8 . The method of claim 1 ,
wherein the receiving, preparing, and generating comprises receiving, preparing, and generating by a network interface controller.
9 . The method of claim 1 , further comprising excluding at least one packet belonging to the same flow from the multiple packets based on at least one selected from the following group:
the at least one packet includes an invalid Transmission Control Protocol checksum; the at least one packet does not include a Transmission Control Protocol data segment; the at least one packet includes a Transmission Control Protocol segment received out-of order; and the at least one packet includes a Transmission Control Protocol urgent flag set.
10 . The method of claim 1 , further comprising:
maintaining a table identifying different flows, the table associating a respective flow with at least one selected from the following group: a sequence number, a number of payload bytes, an address of a packet descriptor, an address of a payload, and an address of a header.
11 . The method of claim 1 , wherein the preparing comprises preparing based on a window of time that is less than an interrupt moderation window of time.
12 . The method of claim 1 , further comprising indicating a number of Transmission Control Protocol segment payloads combined via a descriptor.
13 . The method of claim 12 , further comprising indicating a number of ACKs coalesced via the descriptor.
14 . A network interface controller, the controller comprising:
at least one interface to a communications medium; at least one media access controller; and circuitry to:
receive 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, the multiple packets belonging to a same Transmission Control Protocol/Internet Protocol flow;
prepare 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 payload formed by a combination of the Transmission Control Protocol segment payloads of the multiple Internet Protocol packets; and
generate a signal that causes receive processing of the Internet Protocol packet.
15 . The controller of claim 14 , further comprising
circuitry to initiate at least one direct memory access to store the single Transmission Control Protocol header, the single Internet Protocol header, and the payloads of the Transmission Control Protocol segments to a memory.
16 . The controller of claim 14 ,
wherein the circuitry to prepare comprises circuitry to:
determine a Transmission Control Protocol checksum to store in the single Transmission Control Protocol header, and
determine a byte length to store in the single Internet Protocol header.
17 . The controller of claim 14 ,
wherein the circuitry to prepare comprises circuitry to adjust at least one value of at least one header of one of the multiple packets received.
18 . The controller of claim 14 , wherein the circuitry to prepare comprises circuitry to determine an acknowledged sequence number of the single Transmission Control Protocol header.
19 . The controller of claim 14 ,
wherein the flow comprises a flow identified, at least in part, by the received Internet Protocol packet's Internet Protocol source and destination addresses included within the Internet Protocol header and the Transmission Control Protocol source and destination port numbers of the Transmission Control Protocol segment header included within the Internet Protocol packet.
20 . The controller of claim 14 ,
wherein the received ingress packets comprise packets received within a period of time that is less than a network interface controller's interrupt moderation period of time.Join the waitlist — get patent alerts
Track US2017048142A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.