IP Library Granted Patent US 9,304,825
Granted Patent B2
US 9,304,825 · App. 12/866,435 · Granted Apr 5, 2016

Processing, on multiple processors, data flows received through a single socket

Inventors: Steve Pope (Costa Mesa, CA); David Riddoch (Cambridge, GB)
Assignee: SOLARFLARE COMMUNICATIONS, INC.
G06F9/5033H04L67/02H04L67/14
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,304,825
App. No.
12/866,435
Granted
Apr 5, 2016
Kind
B2
Abstract

A data processing system supporting a network interface device and comprising: a plurality of sets of one or more data processing cores; and an operating system arranged to support at least one socket operable to accept data received from the network, the data belonging to one of a plurality of data flows; wherein the socket is configured to provide an instance of at least some of the state associated with the data flows per said set of data processing cores.

Claims (32)

1. A data processing system supporting a network interface device for connection to a network, the data processing system comprising:

a plurality of sets of one or more data processing cores configured to receive process data received from the network, via the network interface device; and

an operating system arranged to support at least one socket configured to accept said receive processed data, the data belonging to one of a plurality of data flows;

wherein at least one socket is configured to have a plurality of queues, each queue of the plurality of queues dedicated to a respective one of the sets of data processing cores, a particular one of the sets of data processing cores including a processing core which receive processed said data of said one of the data flows, wherein state associated with said one data flow is provided in one of the queues dedicated to the particular set of data processing cores; and

wherein an application thread executing at a particular processing core of the data processing system invokes an operation on the socket using state provided in a queue for the set of processing cores that includes the particular processing core.

2. A data processing system as in claim 1 , wherein the socket is a listening socket.

3. A data processing system as claimed in claim 1 , wherein said queues comprise accept queues.

4. A data processing system as claimed in claim 1 , wherein said queues comprise syn-rccv queues.

5. A data processing system as claimed in claim 1 , wherein, on receiving one or more data packets of a data flow, the system is configured to select a particular data processing core of the data processing system to perform packet processing of the received data packets, the selected data processing core belonging to one of the sets of one or more data processing cores.

6. A data processing system as claimed in claim 5 , wherein the selection is performed in accordance with a receive side scaling algorithm.

7. A data processing system as claimed in claim 5 , wherein the selected processing core is selected in dependence on one or more characteristics of the received data packets.

8. A data processing system as claimed in claim 7 , wherein the characteristic comprises a field of the data packet header.

9. A data processing system as claimed in claim 8 , wherein the field of the data packet header contains a destination address or port number.

10. A data processing system as claimed in claim 1 , wherein the operation is to accept a new connection.

11. A data processing system as claimed in claim 1 , wherein, when the application thread invokes an operation on the socket relating to a particular data flow, the data processing system is configured to use in the operation state provided for the set of processing cores which includes the data processing core selected to perform processing of data belonging to that data flow.

12. A data processing system as claimed in claim 1 , wherein the operation invoked on the socket is an operation arranged to: cause a new connection to be accepted, receive data, transmit data, or to query a status of the socket.

13. A data processing system as claimed in claim 1 , further comprising a plurality of packet processing entities, each arranged to execute at a particular one of the processing cores allocated for performing packet processing and each maintaining at least some of the state of the socket.

14. A data processing system as claimed in claim 1 , wherein each set of processing cores comprises processing cores that share a cache and/or a die.

15. A data processing system as claimed in claim 14 , wherein the cores in each set of processing cores are members of the same non-uniform memory architecture node.

16. A data processing system as claimed in claim 1 , wherein the operating system is arranged to support a plurality of sockets and each socket is configured to provide an instance of at least some of the state associated with the data flows of the respective socket per said set of processing cores.

17. A method for receiving data packets at a data processing system supporting a network interface device and having a plurality of sets of data processing cores, the method comprising the steps of:

receiving at the network interface device a data packet belonging to one of a plurality of data flows;

performing receive processing at a first data processing core of the plurality of sets of data processing cores;

selecting a socket supported by an operating system of the data processing system, the socket having a plurality of queues and configured to accept said receive processing data, each queue of the plurality of queues dedicated to a respective one of the sets of data processing cores, a particular one of the sets of data processing cores including the first data processing core which receive processed said data packet, state associated with said data packet being provided in a respective queue dedicated to the particular set of data processing core; and

wherein an application thread executing at a particular processing core of the data processing system invokes an operation on the socket using state provided in a queue for the set of processing cores that includes the particular processing core.

18. A method according to claim 17 , wherein the socket is a listening socket.

19. A method as claimed in claim 18 , further comprising the steps of:

an application thread executing at a second processing core checking whether the listening socket has any new connections ready to be accepted;

selecting for use in the operation only the state provided for the set of processing cores to which that second processing core belongs; and

using the selected state in the operation.

20. A method as claimed in claim 19 , wherein the step of invoking an operation on the socket comprises checking whether the listening socket has any new connections ready to be accepted, and the step of using the selected state causes only those new connections represented by state in the queue associated with the second processing core to be indicated to the application thread.

21. A method as claimed in claim 19 , wherein the first and second processing cores are the same processing core.

Assignments (11)
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 →
RELEASE OF SECURITY INTEREST Recorded Nov 24, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 034255/0140 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 033716/0073 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TYPOGRAPHICAL ERRORS IN THREE OF THE APPLICATION NUMBERS (12/158,176, 12/864,435 AND 13/347,454) IN THE CHANGE OF ADDRESS PREVIOUSLY RECORDED ON REEL 029636 FRAME 0295. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECT APPICATION NUMBERS ARE 13/158,176, 12/866,435 AND 13/347,545, RESPECTIVELY. Recorded Mar 19, 2013
From: SOLARFLARE COMMUNICATIONS INC.
To: SOLARFLARE COMMUNICATIONS INC.
Reel/Frame 030046/0542 →
CHANGE OF ADDRESS OF THE ASSIGNEE Recorded Jan 8, 2013
From: SOLARFLARE COMMUNICATIONS INC.
To: SOLARFLARE COMMUNICATIONS INC.
Reel/Frame 029636/0295 →
SECURITY AGREEMENT Recorded Jan 5, 2012
From: SOLARFLARE COMMUNICATIONS, INC., A DELAWARE CORPORATION
To: COMERICA BANK, AS AGENT, A TEXAS BANKING ASSOCIATION
Reel/Frame 027487/0097 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2010
From: POPE, STEVE; RIDDOCH, DAVID
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 024886/0951 →
Priority Claims (1)
GB 0802126.3 · Feb 5, 2008 · national
Continuity (1)
Related Publication 20110023042A1 · Jan 27, 2011