Onload network protocol stacks
First Claim
1. A method for transmitting data by means of a data processing system having the Winsock Direct architecture, the system supporting a Microsoft®
- Windows®
operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the method comprising the steps of;
forming by means of the application data to be transmitted;
requesting by means of the application a user-mode Winsock socket library of the data processing system to direct the data to be transmitted, the request including an indication of a protocol by which the data is to be transmitted, said protocol being one of TCP/IP and UDP/IP;
responsive to that request, the user-mode Winsock socket library selecting a transport library in accordance with the indication of said protocol, wherein the primary transport library for said protocol is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system;
forming within the context of the application by means of the Winsock Service Provider the data into packets for transmission in accordance with said protocol and writing by means of the Winsock Service Provider the packets to be transmitted to a buffer allocated by the operating system,wherein said buffer is;
accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system,accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system andnot addressable by entities on the network external to the data processing system;
initiating by means of communication between the Winsock Service Provider and the network interface device a transmission operation of at least some of the packets over the network.
10 Assignments
0 Petitions
Accused Products
Abstract
A method for transmitting data by means of a data processing system, the system supporting an operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the method comprising the steps of: forming by means of the application data to be transmitted; requesting by means of the application a user-mode operating system functionality of the data processing system to direct the data to be transmitted, the request including an indication of a protocol by which the data is to be transmitted; responsive to that request, the user-mode operating system functionality selecting a protocol processing entity in accordance with the indication of a protocol by which the data is to be transmitted; forming within the context of the application by means of the protocol processing entity the data into packets for transmission in accordance with the protocol by which the data is to be transmitted and writing by means of the protocol processing entity the packets to be transmitted to an area of the memory; initiating by means of communication between the protocol processing entity and the network interface device a transmission operation of at least some of the packets over the network.
-
Citations
19 Claims
-
1. A method for transmitting data by means of a data processing system having the Winsock Direct architecture, the system supporting a Microsoft®
- Windows®
operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the method comprising the steps of;forming by means of the application data to be transmitted; requesting by means of the application a user-mode Winsock socket library of the data processing system to direct the data to be transmitted, the request including an indication of a protocol by which the data is to be transmitted, said protocol being one of TCP/IP and UDP/IP; responsive to that request, the user-mode Winsock socket library selecting a transport library in accordance with the indication of said protocol, wherein the primary transport library for said protocol is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; forming within the context of the application by means of the Winsock Service Provider the data into packets for transmission in accordance with said protocol and writing by means of the Winsock Service Provider the packets to be transmitted to a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; initiating by means of communication between the Winsock Service Provider and the network interface device a transmission operation of at least some of the packets over the network. - View Dependent Claims (2, 3, 4, 5, 6, 18)
- Windows®
-
7. A method for transmitting data by means of a data processing system having the Winsock Direct architecture, the system supporting a Microsoft®
- Windows®
operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the method comprising the steps of;forming by means of an application data to be transmitted; requesting by means of the application a user-mode Winsock socket library of the data processing system to direct the data to be transmitted, the request including an indication of a protocol by which the data is to be transmitted, said protocol being one of TCP/IP and UDP/IP; responsive to that request, the Winsock socket library selecting a transport library in accordance with the indication of said protocol, wherein the primary transport library for said protocol is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; creating an instance of the Winsock Service Provider; forming within the context of the application by means of the instance of the Winsock Service Provider the data into packets for transmission in accordance with said protocol and writing by means of the instance of the Winsock Service Provider the packets to be transmitted to a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; initiating by means of communication between the instance of Winsock Service Provider and the network interface device a transmission operation of at least some of the packets over the network.
- Windows®
-
8. A data processing system for transmitting data, the system supporting a Microsoft®
- Windows®
operating system and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the system having the Winsock Direct architecture and comprising;one or more hardware processors executing an application configured to form data to be transmitted and request a user-mode Winsock socket library of the data processing system to direct the data to be transmitted, the request including an indication of a protocol by which the data is to be transmitted, said protocol being one of TCP/IP and UDP/IP; wherein a primary transport library for said protocol by which the data is to be transmitted is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; the user-mode Winsock socket library being configured to select a transport library in accordance with the indication of said protocol in response to the request from the application; wherein the Winsock Service Provider is configured to; form within the context of the application the data into packets for transmission in accordance with said protocol, write the packets to be transmitted to a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; and initiate by means of communication between itself and the network interface device a transmission operation of at least some of the packets over the network.
- Windows®
-
9. A method for receiving data by means of a data processing system having the Winsock Direct architecture, the system supporting a Microsoft®
- Windows®
operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the method comprising the steps of;establishing by means of a transport library of the data processing system a channel for reception of data by an application, the transport library being selected by a user-mode Winsock socket library of the data processing system in accordance with an indication of a protocol by which the data is received, said protocol being one of TCP/IP and UDP/IP, wherein the primary transport library for said protocol is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; and the channel being associated with a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; writing data packets received at the network interface device to the said buffer; the Winsock Service Provider reading the received data packets from the buffer and processing the data packets within the context of an application in accordance with said protocol so as to extract the data therein; and the application receiving the extracted data from the Winsock Service Provider by means of the Winsock socket library. - View Dependent Claims (10, 11, 12, 13, 14)
- Windows®
-
15. A data processing system for transmitting data, the system supporting a Microsoft®
- Windows®
operating system and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the system having the Winsock Direct architecture and comprising;one or more hardware processors executing one or more applications each configured to form data to be transmitted and to request a user-mode Winsock socket library of the data processing system to direct the data to be transmitted, each request including an indication of a protocol by which that data is to be transmitted, said protocol being one of TCP/IP and UDP/IP; wherein a primary transport library for said protocol is a user-level Winsock Service Provider and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; the Winsock socket library being configured to select, in response to each request from an application, a transport library in accordance with the indication of a protocol included in each request; one or more instances of the Winsock Service Provider, each instance being associated with an application and configured to form, within the context of that application, data received from that application into packets for transmission in accordance with the protocol by which that data is to be transmitted, write the packets to be transmitted to a buffer allocated by the operating m wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; and initiate by means of communication between itself and the network interface device a transmission operation of at least some of the packets over the network.
- Windows®
-
16. A data processing system for receiving data, the system supporting a Microsoft®
- Windows®
operating system and having access to a memory, the system having the Winsock Direct architecture and comprising;a transport library configured to establish a channel for reception of data by an application, said application executed by one or more hardware processors, the transport library being selected by a user-mode Winsock socket library of the data processing system in accordance with an indication of a protocol by which the data is received, said protocol being one of TCP/IP and UDP/IP, wherein the primary transport library for said protocol is a user-level Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; and the channel being associated with an area of the memory; a network interface device capable of supporting a communication link over a network with another network interface device and of writing data packets received at the network interface device to the area of the memory, the area of the memory being a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; the Winsock Service Provider being configured to read the received data packets from the buffer and process the data packets within the context of an application in accordance with said protocol so as to extract the data therein; and the application being configured to receive the extracted data from Winsock Service Provider by means of the Winsock socket library.
- Windows®
-
17. A system for installing a Winsock Service Provider into a data processing system having the Winsock Direct architecture, the data processing system executing on one or more hardware processors, supporting a Microsoft®
- Windows®
operating system and at least one application and having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the system comprising;a user-level Winsock Service Provider operable to form data into packets for transmission within the context of an application in accordance with a protocol by which the data is to be transmitted, said protocol being one of TCP/IP and UDP/IP, to write the packets to be transmitted to an area of the memory and to initiate by means of communication between itself and the network interface device a transmission operation of at least some of the packets over the network; and an installer configured to install the transport library into the data processing system; wherein the operating system is one in which an installed transport library communicates with an application by means of a user-mode Winsock socket library, the primary transport library for said protocol is the Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol is a transport library of the operating system; and said area of the memory is a buffer allocated by the operating m wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system.
- Windows®
-
19. A protocol processing entity for performing network-level protocol processing in a data processing system having the Winsock Direct architecture, the data processing system executing on one or more hardware processors, and supporting the Microsoft®
- Windows®
operating system and at least one application and having access to a network interface device capable of supporting a communication link over a network with another network interface device, the protocol processing entity being embodied as a user-level Winsock Service Provider and being configured to;establish a channel for reception of data by an application, the channel being associated with a buffer allocated by the operating system, wherein said buffer is; accessible to the Winsock Service Provider by a memory mapping onto the buffer provided by the operating system, accessible to the network interface device by reference to a virtual address associated with said buffer by the operating system and programmed into the network interface device by the operating system and not addressable by entities on the network external to the data processing system; read the received data packets from the buffer and process the data packets within the context of the application in accordance with a protocol by which the data packets are received so as to extract the data therein, said protocol being one of TCP/IP and UDP/IP, the primary transport library for said protocol being the Winsock Service Provider, and a transport library further down a hierarchy of transport libraries for said protocol being a transport library of the operating system; and sending the extracted data to the application by means of a user-mode Winsock socket library of the data processing system.
- Windows®
Specification