Network Interface Virtual Memory Segmentation Offloading
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional TCP segmentation offloading (TSO) implementations require CPU-intensive copying of payload data from user space to kernel space, reducing outbound TCP traffic throughput due to the need for contiguous memory access.
Innovation Solution
The method involves direct virtual memory addressing by a network interface, allowing payload data to be distributed across noncontiguous buffers and segmented into TCP packets without copying, using scatter-gather functionality and buffer descriptors that point to either physical or virtual memory, thereby eliminating the need for user-to-kernel memory copying.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Extent of automation
If payload data is copied from user space to kernel space to enable TSO processing, then TCP segmentation offloading can be performed, but CPU overhead increases and outbound throughput decreases
Solution Approach 1:
The patent segments the memory address space into distinct regions (first memory region for user-space payload data, second memory region for kernel-space TCP headers) that can be independently managed and accessed. This segmentation allows the network interface controller to directly access payload data in user space without requiring CPU-mediated copying to kernel space, thereby maintaining TSO automation while improving throughput.
Solution Approach 2:
The patent introduces buffer descriptors as an intermediary data structure that contains address information pointing to both the payload data in user space and the TCP headers in kernel space. This intermediary mechanism enables the network interface controller to autonomously retrieve data from both regions and assemble packets without CPU intervention, resolving the contradiction between automation and throughput.
2Ease of operation
If payload data is stored in contiguous kernel space for TSO processing, then memory access is simplified, but CPU-intensive copying from user space is required
Solution Approach 1:
The patent transitions from a single contiguous memory model to a multi-dimensional memory addressing scheme where buffer descriptors store address information pointing to payload data located in user space and TCP headers in kernel space. This dimensional change in memory organization allows the network interface controller to directly access non-contiguous data regions without CPU-mediated copying, eliminating data copying time while maintaining operational simplicity through structured address management.
3Productivity
If the network interface directly addresses user space memory, then CPU overhead is reduced, but memory security boundaries are compromised
Solution Approach 1:
The patent applies local quality by granting the network interface controller selective access rights to specific memory regions (user-space payload data and kernel-space TCP headers) through buffer descriptors, while maintaining protection of other memory regions. This localized access permission structure enables high throughput direct memory access to authorized regions without compromising overall system memory security boundaries.
Data Source
AI summary
Methods and systems for a more efficient transmission of network traffic are provided. According to one embodiment, presence of outbound payload data, distributed across a first and second payload buffer, within a user memory space of a network device that has been generated by a user process is determined by a bus/memory interface or a network interface unit. The payload data is fetched by performing direct virtual memory addressing of the user memory space including mapping virtual addresses of the payload buffers to corresponding physical addresses, including: (i) when the payload buffers are noncontiguous, then retrieving the outbound payload data with reference to multiple buffer descriptors having starting virtual addresses of the payload buffers and (ii) when they are contiguous, then retrieving the outbound payload data with reference to a single buffer descriptor. The outbound payload data is then segmented across one or more TCP packets.


