IP Library Granted Patent US 7,564,847
Granted Patent B2
US 7,564,847 · App. 11/011,800 · Granted Jul 21, 2009

Flow assignment

Assignee: Intel Corporation
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 7,564,847
App. No.
11/011,800
Granted
Jul 21, 2009
Kind
B2
Abstract

In general, in one aspect, the disclosure describes assigning a flow of network packets to a thread of a multi-threaded processor core in a set of multiple multi-threaded processor cores integrated on a single die. Based on the assigning, a packet in the flow is processed by the assigned processor core thread.

Claims (49)

1. A method, comprising:

assigning a flow of network packets to a thread of a multi-threaded processor core in a set of multiple multi-threaded processor cores integrated on a single die, the flow identified by a tuple of packet header fields comprising an Internet Protocol source address and an Internet Protocol destination address;

based on the assigning, processing a packet in the flow by the assigned processor core thread.

2. The method of claim 1 , wherein the packet comprises an Internet Protocol packet including a Transmission Control Protocol segment.

3. The method of claim 2 , wherein the flow comprises a flow identified by, at least, the packet's Internet Protocol source address, Internet protocol destination address, Transmission Control Protocol segment source port, and Transmission Control Protocol segment destination port.

4. The method of claim 1 , further comprising determining whether each packet in the flow that has been scheduled to be processed by the core thread has been processed.

5. The method of claim 1 , further comprising reading data associated with the flow into a local memory associated with the processor core.

6. The method of claim 5 , wherein the data comprises a Transmission Control Block (TCB) of a Transmission Control Protocol (TCP) connection.

7. The method of claim 1 , further comprising:

determining at a first processor core, the processor core assigned to the flow;

determining at the assigned processor core one thread assigned to the flow from a set of threads provided by the assigned processor core.

8. The method of claim 1 ,

wherein the assigning the flow of the network packets to the thread of the multiple multi-threaded processor cores comprises:

assigning the flow of the network packets to a one of the set of multiple multi-threaded processor cores; and

at the assigned one of the multiple multi-threaded processor cores, assigning the flow to a one of multiple threads provided by the one of multiple multi-threaded processor cores.

9. The method of claim 8 ,

wherein the assigning the flow of network packets to the one of the multiple multi-threaded processor cores comprises assigning the flow at a first one of the set of multi-threaded processor cores;

wherein the assigned multi-threaded processor core comprises a second, different one of the set of multi-threaded processor cores for at least some packet flows.

10. The method of claim 9 ,

wherein the assigned multi-threaded processor comprises the first one of the set of multiple multi-threaded processor cores for at least some of some packet flows.

11. The method of claim 9 , further comprising:

in response to receipt of a packet, incrementing a packet count for the packet's flow by the first one of the set of multiple multi-threaded processor cores;

in response to processing the packet, decrementing the packet count for the packet's flow by the second, different one of the set of multiple multi-threaded processor cores; and

deleting an assignment for a flow by the first one of the set of multiple multi-threaded processor cores based on the packet count.

12. An article of manufacture, comprising instructions for causing a multi-core processor to:

assign a flow of network packets to a thread of a multi-threaded processor core in a set of multiple multi-threaded processor cores integrated on a single die, the flow identified by a tuple of packet header fields comprising an Internet Protocol source address and an Internet Protocol destination address; and

based on the assignment, process a packet in the flow by the assigned processor core thread.

13. The article of claim 12 , wherein the packet comprises an Internet Protocol packet including a Transmission Control Protocol segment.

14. The article of claim 12 , further comprising instructions to determine whether each packet in the flow that has been scheduled to be processed by the core thread has been processed.

15. The article of claim 12 , further comprising reading data associated with the flow into a local memory associated with processor core.

16. The article of claim 15 , wherein the data comprises a Transmission Control Block (TCB) of a Transmission Control Protocol (TCP) connection.

17. The article of claim 12 , further comprising instructions to:

determine at a first processor core, the processor core assigned to the flow;

determine at the assigned processor core one thread assigned to the flow from a set of threads provided by the assigned processor core.

18. An apparatus, comprising:

multiple multi-threaded processor cores integrated on a single die; and

instructions to cause at least some of the multiple multi-threaded processor cores to:

assign a Transmission Control Protocol/Internet Protocol (TCP/IP) flow to a one of the threads of the processor cores; and

based on the assignment, process a TCP segment in the flow by the assigned processor core thread.

19. The apparatus of claim 18 ,

wherein the processor comprises at least one Content Addressable Memory; and

wherein the instructions to assign the TCP/IP flow to the one of the threads comprises instructions to write a flow identifier into the at least one Content Addressable Memory.

20. A method, comprising:

receiving Internet Protocol packets encapsulating respective Transmission Control Protocol segments, the received Internet Protocol packets having respective packet flow identifiers, each of the respective packet flow identifiers comprising a tuple formed by, at least, Internet Protocol source address and destination address header fields of the respective Internet Protocol packets; and

distributing the respective Internet Protocol packets to respective threads assigned to respective packet flows for, at least, Transmission Control Protocol processing of the Transmission Control Protocol segments encapsulated within the respective Internet Protocol packets, the threads being from a set of multiple threads provided by multiple cores integrated on a die, different respective cores providing different respective ones of the respective threads assigned to respective packet flows;

wherein the distributing comprises:

determining respective hash values for the respective Internet Protocol packets based on respective hashes of, at least, the Internet Protocol source address and destination address of the respective Internet Protocol packets;

performing respective lookups in a Content Addressable Memory (CAM) of the respective hash values for the respective Internet Protocol packets; and

determining the respective assigned threads based on the respective lookups.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2005
From: LI, YUNHONG; KHOBARE, ABHIJIT S.
To: INTEL CORPORATION
Reel/Frame 016207/0910 →
Continuity (1)
Related Publication 20060126628A1 · Jun 15, 2006