Patent ID: 9740523
Date: 2017-08-22
CPC Classifications: G06F,H04L

Claim:
1. A computing system for transferring data from an input stream to an output stream, comprising: at least one processor component; at least one memory component; a first kernel buffer, referred to as an input buffer, configured to receive and store the data from the input stream; a second kernel buffer, referred to as an output buffer, configured to store and send the data to the output stream; a third kernel buffer, referred to as a read cache, configured to store the data as cache; and a data structure, referred to as a pipe, implemented as an elastic array of kernel memory units, comprising a first pointer (referred to as an input pointer) pointing to a first block of data, and a second pointer (referred to as an output pointer) pointing a second block of data, while the pipe is configured to hold only pointers to data; wherein the computing system is configured to generate a first pipe, having a said input pointer pointing to the first block of data in the input buffer, and a said output pointer pointing to the second block of data in the output buffer; wherein the computing system is further configured to move the data from the input buffer to the output buffer, using the first pipe as data transfer path, without employing any intermediate buffer in either kernel space or user space, whereby said input pointer in the first pipe, pointing to the first block of data in the input buffer, is moved and becomes the input pointer in the second pipe pointing to the second block of data in the output buffer; wherein the computing system is further configured to generate a second pipe, in which said input pointer in the second pipe is identical to said input pointer in the first pipe; wherein the computing system is further configured to do a partial read on the data in the input buffer using the second pipe, at the same time when the computing system is moving the data from the input buffer to the output buffer using the first pipe; wherein the computing system is further configured to copy the data from the input buffer to the read cache, using the second pipe as a new data transfer path, without employing any intermediate buffer in either kernel space or user space, at the same time when the computing system is moving the data from the input buffer to the output buffer using the first pipe; wherein the computing system is further configured to provide TCP (transmission control protocol) splicing between a plurality of TCP senders and a plurality of TCP receivers.