Protocol stack using shared memory
View Patent ↗There are disclosed processes and systems relating to optimized network traffic generation and reception. Application programs and a protocol stack may share a memory space. The protocol stack may designate available bandwidth for use by an application program. The application programs may store descriptors from which the protocol stack may form payload data for data units.
1. A computing device comprising
a processor, user memory, kernel memory and a network communications unit
an application program disposed in user space in the user memory
a communications protocol stack configured to interact with the application program,
wherein the communications protocol stack is disposed in kernel space in the kernel memory, the communications protocol stack comprising
a plurality of interfaced layers in which data units are received at the highest layer and logically passed down to and processed by succeeding lower layers
wherein the communications protocol stack is adapted to inform the application program of bandwidth availability on the computing device, the bandwidth availability including timing information and an amount of data that can be sent, wherein the timing information comprises at least one of when a transmit window will open paired with a size of the transmit window and a deadline for action
wherein the communications protocol stack is further adapted to designate at least one region in a shared memory for storage of descriptors of payload data by the application program and to form data units from the descriptors of payload data obtained from the shared memory
wherein the communications protocol stack is adapted to recognize the descriptors indicative that the protocol stack should set the payload data to be one selected from the group including anything, a constant value or constant application data.
2. The computing device of claim 1 wherein
the constant application data is pointed to by a buffer.
3. The computing device of claim 1 , wherein the computing device is a communications apparatus.
4. The computing device of claim 1 wherein the plurality of interfaced layers include at least two of, from highest to lowest, a session layer, a transport layer, a network layer and a data-link layer.
5. The computing device of claim 4 wherein the transport layer is the transmission control protocol of a TCP/IP protocol and the network layer is the Internet Protocol of the TCP/IP protocol.
6. A process for transmitting data using a communications protocol stack on a computing device, the communications protocol stack comprising a plurality of interfaced layers, wherein the communications protocol stack is disposed in kernel space on the computing device, the communications protocol stack for interacting with an application program which is disposed in user space on the computing device, the process comprising
informing the application program of bandwidth availability on the computing device, the bandwidth availability including timing information and an amount of data that can be sent by the computing device, wherein the timing information comprises at least one of a deadline for action and when a transmit window will open paired with a size of the transmit window
designating at least one region in a shared memory for storage of descriptors of payload data by the application program
forming data units from the descriptors of payload data placed in the shared memory by the application program, the forming including
obtaining the descriptors of payload data from the shared memory
recognizing the descriptors of payload data
based on the recognized descriptors performing one of the following actions
setting the payload data to be anything
setting the payload data to be a constant value
setting the payload data to be constant application data.
7. The process of claim 6 wherein
the constant application data is pointed to by a buffer.
8. The process of claim 6 wherein the plurality of interfaced layers include at least two of, from highest to lowest, a session layer, a transport layer, a network layer and a data-link layer.
9. The process of claim 8 wherein the transport layer is the transmission control protocol of a TCP/IP protocol and the network layer is the Internet Protocol of the TCP/IP protocol.