IP Library Granted Patent US 9,686,117
Granted Patent B2
US 9,686,117 · App. 13/720,770 · Granted Jun 20, 2017

Chimney onload implementation of network protocol stack

Inventors: Steven L. Pope (Costa Mesa, CA); David J. Riddoch (Huntingdon, GB)
Assignee: Solarflare Communications, Inc.
H04L29/06H04L69/161
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,686,117
App. No.
13/720,770
Granted
Jun 20, 2017
Kind
B2
Abstract

A software networking arrangement for operation in a data processing system comprising an OS being operable in: a first mode in which it performs protocol processing of a flow of traffic data and then passes the protocol processed data to a NIC for transmission; and a second mode in which it does not perform protocol processing, the OS being arranged to, on entering the second mode, transmit a message to the NIC indicating that the NIC is to perform protocol processing of the flow of traffic data; the software networking arrangement comprising: a protocol processing entity; and a driver for a NIC configured to receive said message from the OS and in response thereto, configure the protocol processing entity to perform transport-level protocol processing of the flow of traffic data received from an application within the context of that application and then pass the protocol processed data to the NIC.

Claims (110)

1. A system comprising a first data processing system, the first data processing system having access to a network interface device and comprising:

a memory;

a processor subsystem coupled to the memory, the processor subsystem configured to run a kernel and a software networking arrangement,

wherein the kernel is capable of processing a flow of traffic data received from an application supported by the first data processing system, the kernel being operable to:

transmit a message which causes a protocol processing entity in user space to perform protocol processing of the flow of traffic data,

and wherein the software networking arrangement comprises:

said protocol processing entity in user space; and

a driver configured to receive said message from the kernel and in response thereto, to send a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the flow of traffic data received from the application supported by the first data processing system and then pass the protocol processed data to the network interface device for transmission.

2. A system as claimed in claim 1 , wherein the driver is arranged to configure the protocol processing entity to perform transport-level protocol processing of the flow of traffic data received from the application by redirecting said message to the protocol processing entity.

3. A system as claimed in claim 1 , wherein, in response to the driver receiving said message, the software networking arrangement is arranged to create a new instance of the protocol processing entity to process the flow of traffic data received from the application or a socket of the application.

4. A system as claimed in claim 1 , wherein the message is a state handover message including an indication of the state of the flow of the traffic data.

5. A system as claimed in claim 1 , wherein the flow of traffic data is to be sent over an RDMA connection and the driver is arranged to configure the protocol processing entity to perform RDMA protocol processing of the flow of traffic data; and

on being configured to perform RDMA protocol processing, the protocol processing entity is arranged to signal a second data processing system which terminates the RDMA connection to indicate that the software networking arrangement is operating at the first data processing system.

6. A system as claimed in claim 5 , wherein, if the second data processing system responds to the first data processing system with an indication that it is also operating the software networking arrangement, the protocol processing entities at the first and second data processing systems are arranged to take down the RDMA connection and to subsequently process the transport data in accordance with the underlying transport-layer protocol.

7. A system as claimed in claim 1 , wherein the kernel is operable in:

a first mode, in which the kernel performs protocol processing of a flow of traffic data and then passes the protocol processed data to a network interface device for transmission; and

a second mode, in which the kernel does not perform protocol processing of a flow of traffic data,

the kernel being arranged to, on entering the second mode, transmit the message which causes said protocol processing entity in user space to perform protocol processing of the flow of traffic data.

8. A system as claimed in claim 7 , wherein the kernel is operable in the first mode for a first flow of traffic data and in the second mode for a second flow of traffic data, each flow of traffic data being associated with a particular application or socket of an application.

9. A system as claimed in claim 7 , wherein on entering the second mode, the kernel is arranged to:

configure an interface between the application and the protocol processing entity to direct the flow of traffic data from the application to the network interface device; or

cause an interface between the application and the protocol processing entity to direct the flow of traffic data from the application to the protocol processing entity if the protocol processing entity is associated with the driver of the network interface device.

10. A system as claimed in claim 9 , wherein,

on being configured to perform protocol processing of the flow of traffic data from the application, the protocol processing entity is arranged to:

intercept that flow of traffic data from the application to the interface; or

intercept a flow of data from the interface to the network interface device which corresponds to that flow of traffic data from the application; or

subsequent to being configured to perform protocol processing of the flow of traffic data from the application, the protocol processing entity is arranged to intercept all flows of traffic data from that application to the interface.

11. A system as claimed in claim 7 , wherein the kernel is arranged to enter the second mode when the flow of traffic data from the application through the kernel matches one or more predetermined conditions.

12. A system as claimed in claim 11 , wherein one of the predetermined conditions is a member of the group consisting of:

an elapsed time for which the data flow has been active; and

an amount of data transferred over the data flow.

13. A system as claimed in claim 7 , wherein the kernel is arranged to operate in the first mode for a first flow of traffic data and in the second mode for a second flow of traffic data, each flow of traffic data being associated with a particular application or socket of an application.

14. A system as claimed in claim 7 , wherein, on entering the first mode, the kernel is arranged to configure an interface between the application and the protocol processing entity to direct the flow of traffic data from the application to the kernel.

15. A system as claimed in claim 1 , wherein the operating system is arranged to

direct the message which causes said protocol processing entity in user space to perform protocol processing of the flow of traffic data to the network interface device,

wherein the driver is configured to intercept said message.

16. A computer readable storage medium having stored thereon a plurality of software code portions which when executed by a first data processing system run a kernel and a software networking arrangement,

wherein the first data processing system has access to a network interface device,

wherein the kernel is capable of processing a flow of traffic data received from an application supported by the first data processing system, the kernel being operable to:

transmit a message which causes a protocol processing entity in user space to perform protocol processing of the flow of traffic data, and wherein the software networking arrangement comprises:

said protocol processing entity in user space; and

a driver configured to receive said message from the kernel and in response thereto, to send a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the flow of traffic data received from an application supported by the first data processing system and then pass the protocol processed data to the network interface device for transmission.

17. A system comprising a first data processing system, the first data processing system having access to a network interface device and comprising:

a memory;

a processor subsystem coupled to the memory, the processor subsystem configured to run a kernel and a software networking arrangement,

wherein the kernel is capable of processing a flow of data packets received at the network interface device for an application supported by the first data processing system, the kernel being operable to:

transmit a message which causes a protocol processing entity in user space to perform protocol processing of the flow of data packets, and wherein the software networking arrangement comprises:

said protocol processing entity in user space; and

a driver configured to receive said message from the kernel and, in response thereto, to send a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the flow of data packets received at the network interface device and then pass the protocol processed data to the application associated with the flow of data packets.

18. A system as claimed in claim 17 , wherein the kernel is arranged to be operable in:

a first mode, in which the kernel performs protocol processing of a flow of data packets and then passes the protocol processed data to the application; and

a second mode, in which the kernel does not perform protocol processing of a flow of data packets, the operating system being arranged to, on entering the second mode, transmit the message which causes said protocol processing entity in user space to perform protocol processing of the flow of data packets.

19. A system as claimed in claim 18 , wherein the kernel is arranged to operate in the first mode for a first flow of data packets and in the second mode for a second flow of data packets, each flow of data packets being associated with a particular application or socket of an application.

20. A computer readable storage medium having stored thereon in a non-transitory manner a plurality of software code portions which when executed by a first data processing system run a kernel and a software networking arrangement,

wherein the first data processing system has access to a network interface device,

wherein the kernel is capable of processing a flow of data packets received at the network interface device for an application supported by the first data processing system, the kernel being operable to:

transmit a message which causes a protocol processing entity in user space to perform protocol processing of the flow of data packets, and wherein the software networking arrangement comprises:

said protocol processing entity in user space; and

a driver configured to receive said message from the kernel and, in response thereto, to send a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the flow of data packets received at the network interface device and then pass the protocol processed data to the application associated with the flow of data packets.

21. A method for processing data by means of a data processing system, the system supporting a kernel, a driver, and at least one application, and having access to a network interface device; the method comprising the steps of:

the kernel:

receiving a flow of traffic data from an application supported by the data processing system;

performing protocol processing of the flow of traffic data;

passing the protocol processed data to the network interface device for transmission; and

transmitting a message which causes a protocol processing entity in user space to perform protocol processing of subsequent traffic data in the flow of traffic data,

the driver receiving said message from the kernel and in response thereto sending a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the subsequent traffic data in the flow of traffic data.

22. A method as claimed in claim 21 , wherein the kernel is arranged to determine that the network interface device is to perform protocol processing of the flow of traffic data when the flow of traffic data from the application through the kernel matches one or more predetermined conditions.

23. A method as claimed in claim 22 , wherein one of the predetermined conditions is:

an elapsed time for which the data flow has been active; or

an amount of data transferred over the data flow.

24. A method as claimed in claim 21 , wherein the driver is arranged to configure the protocol processing entity to perform transport-level protocol processing of the flow of traffic data received from the application by redirecting said message to the protocol processing entity.

25. A method as claimed in claim 21 , wherein, in response to the driver receiving said message, the software networking arrangement is arranged to create a new instance of the protocol processing entity to process the flow of traffic data received from the application.

26. A method as claimed in claim 21 , wherein the kernel is arranged to configure an interface between the application and the protocol processing entity to direct the flow of traffic data from the application to the network interface device.

27. A method as claimed in claim 21 , wherein the kernel is arranged to cause an interface between the application and the protocol processing entity to direct the flow of traffic data from the application to the protocol processing entity if the protocol processing entity is associated with the driver of the network interface device.

28. A method for processing data by means of a data processing system, the system supporting a kernel, a driver, and at least one application, and having access to a network interface device; the method comprising the steps of:

the kernel:

receiving a flow of data packets from the network interface device for an application supported by the data processing system;

performing protocol processing of the flow of data packets;

passing the protocol processed data to the application; and

transmitting a message which causes a protocol processing entity in user space to perform protocol processing of subsequent traffic data in the flow of data packets,

the driver receiving said message from the kernel and in response thereto sending a message to user space to configure the protocol processing entity to perform, in user space within the context of the application, transport-level protocol processing of the subsequent traffic data of the flow of data packets.

29. A system comprising a data processing system, the data processing system having access to a network interface device and comprising:

a memory;

a processor subsystem coupled to the memory, the processor subsystem configured to run a kernel and a software networking arrangement,

wherein the kernel is capable of processing a flow of traffic data received from an application supported by the data processing system, the kernel being operable to:

transmit a message indicating that the kernel is to perform protocol processing of the flow of traffic data, and wherein the software networking arrangement comprises:

a protocol processing entity operable to perform, in user space within the context of the application, transport-level protocol processing of a flow of traffic data received from an application and then pass the protocol processed data to the network interface device for transmission; and

a driver configured to receive said message from the kernel and, if the protocol processing entity is performing protocol processing of the flow of traffic data, to configure the protocol processing entity to cease performing protocol processing of that flow of traffic data.

30. A system as claimed in claim 29 , wherein the driver is arranged to configure the protocol processing entity to cease performing protocol processing of the flow of traffic data by redirecting said message to the protocol processing entity.

31. A system as claimed in claim 29 , wherein the kernel is arranged to be operable in:

a first mode, in which the kernel performs protocol processing of a flow of traffic data and then passes the protocol processed data to a network interface device for transmission; and

a second mode, in which the kernel does not perform protocol processing of a flow of traffic data,

wherein the operating system is arranged to, on entering the first mode, transmit the message indicating that the kernel is to perform protocol processing of the flow of traffic data.

32. A system as claimed in claim 29 , wherein the kernel is arranged to

direct the message indicating that the kernel is to perform protocol processing of the flow of traffic data to the network interface device,

wherein the driver is configured to intercept said message.

33. A computer readable storage medium having stored thereon in a non-transitory manner a plurality of software code portions which when executed by a data processing system run a kernel and a software networking arrangement,

wherein the data processing system has access to a network interface device,

wherein the kernel is capable of processing a flow of traffic data received from an application supported by the data processing system, the kernel being operable to:

transmit a message indicating that the kernel is to perform protocol processing of the flow of traffic data, and wherein the software networking arrangement comprises:

a protocol processing entity operable to perform, in user space within the context of the application, transport-level protocol processing of a flow of traffic data received from an application and then pass the protocol processed data to the network interface device for transmission; and

a driver configured to receive said message from the kernel and, if the protocol processing entity is performing protocol processing of the flow of traffic data, to configure the protocol processing entity to cease performing protocol processing of that flow of traffic data.

34. A method for processing data by means of a data processing system, the system supporting a kernel, a driver, a protocol processing entity, at least one application, and having access to a network interface device; the method comprising the steps of:

the protocol processing entity:

receiving a flow of traffic data from an application supported by the data processing system;

performing, in user space within the context of the application, transport-level protocol processing of the flow of traffic data;

passing the protocol processed data to the network interface device for transmission;

determining by means of the operating system that the kernel is to perform protocol processing of the flow of traffic data received from the application;

transmitting a message indicating that the kernel is to perform protocol processing of the flow of traffic data; and

the driver receiving said message and in response thereto configuring the protocol processing entity to cease performing protocol processing of the flow of traffic data for the application.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
RELEASE OF SECURITY INTEREST Recorded Jun 15, 2017
From: PACIFIC WESTERN BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042820/0890 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
SECURITY INTEREST Recorded Apr 6, 2016
From: SOLARFLARE COMMUNICATIONS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 038363/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2013
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 029814/0512 →
CHANGE OF ADDRESS OF THE ASSIGNEE Recorded Jan 8, 2013
From: SOLARFLARE COMMUNICATIONS INC.
To: SOLARFLARE COMMUNICATIONS INC.
Reel/Frame 029636/0295 →
Priority Claims (3)
GB 0613684.0 · Jul 10, 2006 · national
GB 0613687.3 · Jul 10, 2006 · national
GB 0613976.0 · Jul 13, 2006 · national
Continuity (2)
Continuation In Part 12373173
Related Publication 20130111059A1 · May 2, 2013