US7564847B2ExpiredUtilityPatentIndex 59
Flow assignment
Est. expiryDec 13, 2024(expired)· nominal 20-yr term from priority
H04L 69/32H04L 69/22H04L 69/12H04L 9/40
59
PatentIndex Score
4
Cited by
16
References
20
Claims
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
exact text as granted — not AI-modified1. 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.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.