Virtual memory protocol segmentation offloading
First Claim
1. A method comprising:
- requesting, by a user process running on a host processor of a computer system, a network driver to store payload data within a system memory of the computer system;
storing within the system memory, by the network driver, (i) one or more payload buffers each containing therein at least a subset of the payload data and (ii) one or more buffer descriptors each containing therein information indicative of a starting address of a corresponding payload buffer of the one or more payload buffers within a user memory space of the system memory;
transmitting, by a network processor of the computer system onto a network, the payload data within a plurality of transport layer protocol packets bycausing to be retrieved, by a network interface of the computer system, the payload data from the one or more payload buffers by performing direct virtual memory addressing of the user memory space using the one or more buffer descriptors and information contained within a translation data structure stored within the system memory; and
segmenting the payload data across the plurality of transport layer protocol packets.
0 Assignments
0 Petitions
Accused Products
Abstract
Methods and systems for a more efficient transmission of network traffic are provided. According to one embodiment, a user process of a host processor requests a network driver to store payload data within a system memory. The network driver stores (i) payload buffers each containing therein at least a subset of the payload data and (ii) buffer descriptors each containing therein information indicative of a starting address of a corresponding payload buffer within a user memory space. A network processor transmits onto a network the payload data within multiple transport layer protocol packets by (i) causing a network interface to retrieve the payload data from the payload buffers by performing direct virtual memory addressing of the user memory space using the buffer descriptors and information contained within a translation data structure stored within the system memory; and (ii) segmenting the payload data across the transport layer protocol packets.
21 Citations
16 Claims
-
1. A method comprising:
-
requesting, by a user process running on a host processor of a computer system, a network driver to store payload data within a system memory of the computer system; storing within the system memory, by the network driver, (i) one or more payload buffers each containing therein at least a subset of the payload data and (ii) one or more buffer descriptors each containing therein information indicative of a starting address of a corresponding payload buffer of the one or more payload buffers within a user memory space of the system memory; transmitting, by a network processor of the computer system onto a network, the payload data within a plurality of transport layer protocol packets by causing to be retrieved, by a network interface of the computer system, the payload data from the one or more payload buffers by performing direct virtual memory addressing of the user memory space using the one or more buffer descriptors and information contained within a translation data structure stored within the system memory; and segmenting the payload data across the plurality of transport layer protocol packets. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory program storage device readable by one or more processors of a computer system, tangibly embodying a program of instructions executable by the one or more processors to perform method steps for performing transport layer protocol segmentation offloading, the method comprising:
-
requesting, by a user process running on a host processor of the one or more processors, a network driver to store payload data within a system memory of the computer system; storing within the system memory, by the network driver, (i) one or more payload buffers each containing therein at least a subset of the payload data and (ii) one or more buffer descriptors each containing therein information indicative of a starting address of a corresponding payload buffer of the one or more payload buffers within a user memory space of the system memory; transmitting, by a network processor of the one or more processors onto a network, the payload data within a plurality of transport layer protocol packets by causing to be retrieved, by a network interface of the computer system, the payload data from the one or more payload buffers by performing direct virtual memory addressing of the user memory space using the one or more buffer descriptors and information contained within a translation data structure stored within the system memory; and segmenting the payload data across the plurality of transport layer protocol packets. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer system comprising:
-
a host processor configured to execute one or more kernel processes and one or more user processes; a system memory, coupled to the host processor, having stored therein a translation data structure containing information to facilitate translation of virtual memory addresses to physical memory addresses, the system memory having a kernel memory space used by the one or more kernel processes and a user memory space used by the one or more user processes; a network processor operable to segment payload data across one or more network packets and to transmit the one or more network packets to a destination via a network; an interconnect bus coupled to the host processor and the system memory; and a network interface, coupled to the network processor and the interconnect bus, operable to; retrieve a buffer descriptor from the system memory, the buffer descriptor containing (i) a virtual memory address of corresponding payload data in the user memory space and (ii) a base address of a page directory of a page table data structure; and fetch the corresponding payload data from the user memory space on behalf of the network processor by performing direct virtual memory addressing of the system memory based on the virtual memory address and the base address by using a directory entry of the page directory identified by the base address to translate the virtual memory address to a physical address within the user memory space. - View Dependent Claims (16)
-
Specification