IP Library Granted Patent US 10,382,248
Granted Patent B2
US 10,382,248 · App. 15/611,554 · Granted Aug 13, 2019

Chimney onload implementation of network protocol stack

Inventors: Steven L. Pope (Cambridge, GB); 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 10,382,248
App. No.
15/611,554
Granted
Aug 13, 2019
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 (32)

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

a memory;

a processor subsystem coupled to the memory, the processor subsystem configured to run an operating system, a driver for the network interface device, at least one application and a protocol processing entity capable of performing protocol processing of a traffic data flow within the context of an application with which the data flow is associated, the driver being operable to:

intercept a state handover message sent from the operating system to the network interface device indicating that the network interface device is to take over protocol processing of a traffic data flow; and

direct said message to the protocol processing entity so as to cause the protocol processing entity to take over protocol processing of the traffic data flow.

2. A data processing system as claimed in claim 1 , wherein the operating system is capable of processing the traffic data flow received from the application in a first mode, the operating system being operable to transmit said state handover message to cause the operating system to operate in a second mode in which the protocol processing entity performs said protocol processing.

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

4. A system as claimed in claim 3 , wherein one of the predetermined conditions is one of: an elapsed time for which the data flow has been active, and an amount of data transferred over the data flow.

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

6. A system as claimed in claim 1 , wherein said protocol processing entity is configured to perform transport level protocol processing.

7. A system as claimed in claim 1 , wherein said protocol processing entity and said application are provided in user space.

8. A system as claimed in claim 1 , wherein said driver is configured to indicate to said operating system that said driver is for a network interface device supporting a TCP offload engine.

9. A system as claimed in claim 1 , wherein in response to the driver receiving the state handover message, the processor subsystem is configured to create a new instance of the protocol processing entity to process the traffic data flow.

10. A system as claimed in claim 1 , wherein the operating system is configured to

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

11. A system as claimed in claim 1 , wherein the operating system is configured to configured 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.

12. A system as claimed in claim 1 , wherein when the protocol processing entity is configured to take over the protocol processing, said protocol processing entity is configured to intercept that traffic data flow from the application to an interface.

13. A system as claimed in claim 1 , wherein when the protocol processing entity is configured to take over the protocol processing, said protocol processing entity is configured to intercept a flow of data from an interface to the network interface device which corresponds to that flow of traffic data from the application.

14. A system as claimed in claim 1 , wherein when the protocol processing entity is configured to take over the protocol processing, said protocol processing entity is configured to intercept all traffic data flows from that application to an interface.

15. A system as claimed in claim 1 , wherein the state handover message comprises an indication of the state of the traffic data flow.

16. A method for processing data using a data processing system, the system comprising an operating system, a driver, and at least one application, and having access to a network interface device; the method comprising the steps of:

intercepting a state handover message sent from the operating system, to the network interface device, indicating that the network interface device is to take over protocol processing of a traffic data flow; and

directing said message to a protocol processing entity capable of performing protocol processing of the traffic data flow within the context of the application with which the traffic data flow is associated, so as to cause the protocol processing entity to take over protocol processing of the traffic data flow.

17. A method as claimed in claim 16 , comprising processing the traffic data flow received from the application by the operating system in a first mode, and processing the traffic data flow received from the application by the protocol processing entity in a second mode.

18. A method as claimed in claim 16 , comprising determining 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 matches one or more predetermined conditions.

19. A method as claimed in claim 18 , wherein one of the predetermined conditions is one of: an elapsed time for which the data flow has been active, and an amount of data transferred over the data flow.

20. A method as claimed in claim 16 , comprising performing transport level protocol processing by the protocol processing entity.

21. A method as claimed in claim 16 , comprising in response to the driver intercepting the state handover message, creating a new instance of the protocol processing entity to process the traffic data flow.

22. A method as claimed in claim 16 , wherein the state handover message comprises an indication of the state of the traffic data flow.

23. A computer readable storage medium having stored thereon a plurality of software code portions, for use with a data processing system having a memory and a processor subsystem coupled to the memory, the plurality of software code portions when executed by the data processing system run a driver which is operable to:

intercept a state handover message sent from an operating system running on the data processing system, to a network interface device, indicating that the network interface device is to take over protocol processing of a traffic data flow; and

direct said message to a protocol processing entity capable of performing protocol processing of the traffic data flow within the context of an application with which the data flow is associated, so as to cause the protocol processing entity to take over protocol processing of the traffic data flow.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2017
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042574/0419 →
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 (3)
Division 13720770 · Dec 19, 2012
Continuation In Part 12373173
Related Publication 20170272300A1 · Sep 21, 2017
Cited By (1)
US 12,705,119