Zero copy socket splicing

US11363124B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11363124-B2
Application numberUS-202017085916-A
CountryUS
Kind codeB2
Filing dateOct 30, 2020
Priority dateJul 30, 2020
Publication dateJun 14, 2022
Grant dateJun 14, 2022

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Some embodiments provide a novel method for splicing Transmission Control Protocol (TCP) sockets on a computing device that processes a kernel of an operating system. The method receives a set of packets at a first TCP socket of the kernel. The method stores the set of packets at a kernel memory location sends the set of packets directly from the kernel memory location out through a second TCP socket of the kernel.

First claim

Opening claim text (preview).

We claim: 1. A method of splicing Transmission Control Protocol (TCP) sockets on a computing device that processes a kernel of an operating system, the method comprising: receiving a set of packets at a first TCP socket of the kernel; storing the set of packets at a kernel memory location; sending the set of packets directly from the kernel memory location out through a second TCP socket of the kernel, the kernel memory location comprising a location of a buffer of a particular size; sending an indicator of a receive window size of the first TCP socket to a source of the set of packets; when the buffer is full beyond a threshold level, sending an indicator of a reduced size of the receive window to the source of the set of packets. 2. A method of splicing Transmission Control Protocol (TCP) sockets on a computing device that processes a kernel of an operating system, the method comprising: receiving a set of packets at a first TCP socket of the kernel; storing the set of packets at a kernel memory location; sending the set of packets directly from the kernel memory location out through a second TCP socket of the kernel, the kernel memory location comprising a location of a buffer of a particular size; sending an indicator of a receive window size of the first TCP socket to a source of the set of packets; when the buffer is full, sending an indicator that the receive window size is zero to the source of the set of packets. 3. The method of claim 2 , wherein the indicator is a first indicator, the method further comprising: emptying the buffer by sending packets from the second TCP socket; and sending a second indicator that the receive window size is no longer zero. 4. The method of claim 1 wherein the set of packets is a first set of packets, the method further comprising waiting for the first set of packets to be sent by the second TCP socket before allowing a second set of packets to be received by the first TCP socket. 5. The method of claim 4 , wherein the kernel memory location comprises a set of memory pages, the method further comprising freeing the memory pages with a driver completion handler after the pages are sent. 6. The method of claim 1 , wherein: the first TCP socket writes data comprising the set of packets to the kernel memory location upon first receiving the set of packets, and the second TCP socket reads the data from the same kernel memory location. 7. The method of claim 1 , wherein the receiving, storing, and sending are performed without a system call. 8. A non-transitory machine readable medium storing a program which when executed by at least one processing unit splices sockets on a computing device that processes a kernel of an operating system, the program comprising sets of instructions for: receiving a set of packets at a first socket of the kernel; storing the set of packets at a kernel memory location; sending the set of packets directly from the kernel memory location out through a second socket of the kernel, the kernel memory location comprising a location of a buffer of a particular size; sending an indicator of a receive window size of the first socket to a source of the set of packets; when the buffer is full beyond a threshold level, sending an indicator of a reduced size of the receive window to the source of the set of packets. 9. A non-transitory machine readable storing a program which when executed by at least one processing unit splices sockets on a computing device that processes a kernel of an operating system, the program comprising sets of instructions for: receiving a set of packets at a first socket of the kernel; storing the set of packets at a kernel memory location; sending the set of packets directly from the kernel memory location out through a second socket of the kernel, the kernel memory location comprising a location of a buffer of a particular size; sending an indicator of a receive window size of the first socket to a source of the set of packets; when the buffer is full, sending an indicator that the receive window size is zero to the source of the set of packets. 10. The non-transitory machine readable medium of claim 9 , wherein the indicator is a first indicator, the program further comprising sets of instructions for: emptying the buffer by sending packets from the second socket; and sending a second indicator that the receive window size is no longer zero. 11. The non-transitory machine readable medium of claim 8 wherein the set of packets is a first set of packets, the program further comprising a set of instructions for waiting for the first set of packets to be sent by the second socket before allowing a second set of packets to be received by the first socket. 12. The non-transitory machine readable medium of claim 11 , wherein the kernel memory location comprises a set of memory pages, the program further comprising a set of instructions for freeing the memory pages with a driver completion handler after the pages are sent. 13. The non-transitory machine readable medium of claim 8 , wherein: the first socket writes data comprising the set of packets to the kernel memory location upon first receiving the set of packets, and the second socket reads the data from the same kernel memory location. 14. The non-transitory machine readable medium of claim 8 , wherein the sets of instructions for receiving, storing, and sending are performed without a system call.

Assignees

Inventors

Classifications

  • at the transport layer, e.g. TCP related · CPC title

  • Virtual address space management · CPC title

  • G06F9/5016Primary

    the resource being the memory · CPC title

  • Pool · CPC title

  • Peripheral units, e.g. input or output ports · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11363124B2 cover?
Some embodiments provide a novel method for splicing Transmission Control Protocol (TCP) sockets on a computing device that processes a kernel of an operating system. The method receives a set of packets at a first TCP socket of the kernel. The method stores the set of packets at a kernel memory location sends the set of packets directly from the kernel memory location out through a second TCP …
Who is the assignee on this patent?
Vmware Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/5016. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 14 2022 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).