IP Library Granted Patent US 9,584,628
Granted Patent B2
US 9,584,628 · App. 14/660,934 · Granted Feb 28, 2017

Zero-copy data transmission system

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,584,628
App. No.
14/660,934
Granted
Feb 28, 2017
Kind
B2
Abstract

A data transmission system for transmitting a data file from a server to a client device includes a processor, a memory and a network interface device. The memory includes a user space and a kernel space. The data file is stored in the kernel space. The processor receives a transmission request from the client device for transmitting the data file. The processor maps a set of virtual addresses corresponding to the data file to the user space as a mapped data file, and stores a set of physical addresses corresponding to the set of virtual addresses in a set of meta-buffers of a socket created in the user space. The network interface device retrieves the data file from the kernel space based on the set of physical addresses from the set of meta-buffers, and transmits the data file to the client device.

Claims (41)

1. A data transmission system, comprising:

a memory comprising a plurality of memory locations each having a corresponding physical address associated therewith, wherein the memory further includes:

a kernel space for storing a plurality of data files and a page table, wherein the page table includes a mapping between a plurality of virtual addresses and corresponding physical addresses; and

a user space;

a processor in communication with the memory and configured for:

creating a socket in the user space, wherein the socket includes a set of meta-buffers,

receiving a data file transmission request,

mapping a set of the virtual addresses corresponding to the data file to the user space as a mapped data file,

retrieving a set of the physical addresses that correspond to the set of virtual addresses from the page table, and

storing the set of physical addresses in the meta-buffers; and

a network interface device, connected to the processor and the memory, for retrieving the set of physical addresses from the meta-buffers, retrieving the data file from the kernel space using the set of physical addresses, and transmitting the data file to a client device.

2. The data transmission system of claim 1 , wherein the processor further stores a set of flag values corresponding to the meta-buffers in the user space, and wherein each flag value indicates a position of a corresponding one of the meta-buffers.

3. The data transmission system of claim 2 , wherein the data file includes a set of data frames, each data frame being stored at a corresponding one of the physical addresses, thereby associating each meta-buffer with a corresponding one of the data frames.

4. The data transmission system of claim 3 , wherein the processor further performs the steps of:

receiving a set of acknowledgement messages corresponding to the set of meta-buffers, wherein the acknowledgement messages indicate reception of the data frames corresponding to the meta-buffers at the client device, and

deleting the mapped data file from the user space based on the flag values and the acknowledgement messages.

5. The data transmission system of claim 4 , wherein the network interface device includes:

a direct memory access (DMA) system, connected to the processor and the memory, for retrieving the set of physical addresses from the meta-buffers and retrieving the data file from the kernel space based on the set of physical addresses; and

a network interface port connected to the DMA system and a communication network that includes the client device, wherein the network interface port transmits the data file to the client device and receives the set of acknowledgement messages corresponding to the data file.

6. The data transmission system of claim 5 , wherein the processor creates the socket by reading a page size of the kernel space and generates the meta-buffers based on the page size and the page table.

7. The data transmission system of claim 6 , wherein the user space has a user space based network stack that includes a plurality of instructions.

8. The data transmission system of claim 7 , wherein the processor executes the plurality of instructions to transmit the data file.

9. The data transmission system of claim 8 , wherein the kernel space comprises a first set of the plurality of memory locations that store the data files and the page table, and wherein the user space comprises a second set of the plurality of memory locations that store the plurality of instructions, the mapped data file, the socket, the set of flag values, and the user space based network stack.

10. A method for transmitting a plurality of data files in a data transmission system that includes a memory, a processor, and a network interface device, wherein the memory includes a plurality of memory locations having a plurality of physical addresses associated therewith, and wherein the memory further includes a kernel space for storing the plurality of data files and a page table, and a user space, the method comprising:

creating a socket in the user space, wherein the socket includes a set of meta-buffers;

receiving a transmission request for transmitting a data file of the plurality of data files;

mapping a set of the plurality of virtual addresses corresponding to the data file to the user space as a mapped data file;

retrieving a set of the plurality of physical addresses corresponding to the set of virtual addresses from the page table, wherein the page table includes a mapping between the virtual addresses and the physical addresses;

storing the set of physical addresses in the set of meta-buffers;

retrieving the set of physical addresses from the set of meta-buffers;

retrieving the data file from the kernel space based on the set of physical addresses; and

transmitting the data file to a client device.

11. The method of claim 10 , further comprising storing a set of flag values corresponding to the set of meta-buffers in the user space, wherein each flag value indicates a position of a corresponding one of the meta-buffers.

12. The method of claim 11 , wherein the data file includes a set of data frames, each data frame being stored at a corresponding physical address, thereby associating the meta-buffers with corresponding data frames.

13. The method of claim 12 , further comprising:

receiving a set of acknowledgement messages corresponding to the set of meta-buffers, wherein the set of acknowledgement messages indicate reception of the set of data frames corresponding to the set of meta-buffers at the client device; and

deleting the mapped data file from the user space based on the set of flag values and the set of acknowledgement messages.

14. The method of claim 13 , further comprising reading a page size of the kernel space and generating the set of meta-buffers based on the page size and the page table.

15. The method of claim 14 , wherein the user space includes a user space based network stack that includes a plurality of instructions.

16. The method of claim 15 , wherein the processor executes the instructions to transmit the data file.

17. The method of claim 16 , wherein the kernel space comprises a first set of the plurality of memory locations that store the plurality of data files and the page table, and the user space comprises a second set of the plurality of memory locations that store the plurality of instructions, the mapped data file, the socket, the set of flag values, and the user space based network stack.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →