# US 12,010,019 B2 · Concept for segmenting an application buffer into data packets

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,010,019 B2
- Document ID: US12010019B2
- Status: Granted
- Kind: B2
- Application number: 17/648,196
- Filed: 2022-01-18
- Published: 2022-05-05
- Granted: 2024-06-11
- Earliest claimed: 2018-05-18
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Eliel Louzoun; Manasi Deval; Stephen Doyle; Noam Elati; Patrick Fleming; Gregory Bowers
- Web page: https://patentgrep.com/patent/US12010019B2

## CPC

- H04L 49/9042: {Separate storage for different parts of the packet, e.g. header and payload}
- H04L 45/74: Address processing for routing
- H04L 47/365: {Dynamic adaptation of the packet size}
- H04L 49/90: Buffering arrangements
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An apparatus, a method, and a computer program for generating data packets according to a transport protocol from an application buffer comprising a plurality of data streams is provided. The apparatus comprises an input circuit configured to receive metadata comprising at least one of information about data packet types supported by the transport protocol, information about an offset and a length of the supported data packet types, and information about possible stream header start positions, possible payload start positions and possible offsets in the data streams. Further, the apparatus comprises a parsing circuit configured to identify offsets in an application buffer as possible segmentation points based on the metadata, to segment the application buffer at the possible segmentation points into segments for data packets, and to generate data packets according to the transport protocol based on the segments. Furthermore, an apparatus, a method and a computer program for processing the application buffer is provided.

## Claims

### Claim 1

An apparatus for generating data packets according to the Quick User Datagram Protocol Internet Connections (QUIC) protocol, the apparatus comprising:
circuitry configured to provide QUIC segmentation offloading support, by:
identifying offsets in an at least one data stream as possible segmentation points based on metadata, wherein the at least one data stream is to be transmitted using the QUIC protocol;
splitting the at least one data stream at the possible segmentation points into segments for data packets;
generating data packets from the segments; and
prepending a QUIC header to each data packet,
wherein the circuitry comprises input circuitry that is configured to receive the metadata and parsing circuitry configured to split the data stream based on the metadata.

### Claim 2 (depends on 1)

The apparatus according to claim 1, wherein the circuitry is configured to replicate the QUIC header for use in the data packets, and to update a packet number in the QUIC header for each data packet.

### Claim 3 (depends on 2)

The apparatus according to claim 2, wherein the QUIC header being replicated comprises a User Datagram Protocol header.

### Claim 4 (depends on 1)

The apparatus according to claim 1, wherein the circuitry is configured to obtain the at least one data stream from an application buffer.

### Claim 5 (depends on 4)

The apparatus according to claim 4, wherein the application buffer comprises, for each data stream, a stream header, wherein the circuitry is configured to replicate the stream header if a data stream is split across multiple segments, and to update information on the length of the payload in the respective stream headers according to the segmentation.

### Claim 6 (depends on 5)

The apparatus according to claim 5, wherein the circuitry is configured to update information the offset of the payload and/or information on a checksum of the payload in the respective stream headers.

### Claim 7 (depends on 5)

The apparatus according to claim 5, wherein the circuitry is configured to replicate the stream header based on an indication on whether the stream header is to be replicated that is included in metadata being used to perform the QUIC segmentation offloading.

### Claim 8 (depends on 4)

The apparatus according to claim 4, wherein the application buffer comprises a start packet number to be used for the data packets, wherein the circuitry is configured to generate the data packets with packet numbers starting from the start packet number.

### Claim 9 (depends on 1)

The apparatus according to claim 1, wherein the circuitry is configured to split the at least one data stream based on information on a length of data packet types supported by the QUIC protocol.

### Claim 10 (depends on 1)

The apparatus according to claim 1, wherein the metadata comprises at least one of information about data packet types supported by the transport protocol, information about an offset and a length of the supported data packet types, and information about possible stream header start positions, possible payload start positions and possible offsets in data streams.

### Claim 11 (depends on 1)

The apparatus according to claim 1, wherein the circuitry is configured to generate the data packets to comprise information about a checksum for payload in the respective data packet, and to generate the checksum.

### Claim 12 (depends on 1)

A Network Interface Controller (NIC) comprising the apparatus according to claim 1.

### Claim 13

A method for generating data packets according to the Quick User Datagram Protocol Internet Connections (QUIC) protocol, the method comprising:
performing, by a network interface controller, QUIC segmentation offloading, by:
receiving, by input circuitry, metadata,
identifying offsets in an at least one data stream as possible segmentation points based on the metadata, wherein the at least one data stream is to be transmitted using the QUIC protocol,
splitting, by parsing circuitry, the at least one data stream at the possible segmentation points into segments for data packets,
generating data packets from the segments, and
prepending a QUIC header to each data packet.

### Claim 14 (depends on 13)

The method according to claim 13, wherein the method comprises, by the network interface controller, replicating the QUIC header for use in the data packets, and updating a packet number in the QUIC header for each data packet.

### Claim 15 (depends on 14)

The method according to claim 14, wherein the QUIC header being replicated comprises a User Datagram Protocol header.

### Claim 16 (depends on 13)

The method according to claim 13, wherein the method comprises, by the network interface controller, obtaining the at least one data stream from an application buffer, the application buffer comprising, for each data stream, a stream header, replicating the stream header if a data stream is split across multiple segments, and updating information on the length of the payload in the respective stream headers according to the segmentation.

### Claim 17 (depends on 13)

The method according to claim 13, wherein the method comprises, by the network interface controller, generating the data packets with information about a checksum for payload in the respective data packet, and generating the checksum.
