Application-controlled network packet classification
First Claim
Patent Images
1. A method for enabling applications to flexibly distribute data packets in a multiprocessing system, the method comprising:
- maintaining a plurality of connection data structures, each connection data structure corresponding to a network thread executed in the multiprocessing system;
using a plurality of algorithms provided by an application to distribute the data packets to a plurality of different network threads; and
accessing, by each network thread of the plurality of different network threads, a corresponding connection data structure to determine how to process one of the data packets arriving on a connection using any algorithm different from the plurality of algorithms provided by the application used to distribute the data packets for the application to the the plurality of different network threads, wherein each network thread only accesses its corresponding connection data structure.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the present invention provide a system, method, and computer program product that enables applications transferring data packets over a network to a multi-processing system to choose how the data packets are going to be processed by, e.g., allowing the applications to pre-assign connections to a particular network thread and migrate a connection from one network thread to another network thread without putting the connection into an inconsistent state.
-
Citations
14 Claims
-
1. A method for enabling applications to flexibly distribute data packets in a multiprocessing system, the method comprising:
-
maintaining a plurality of connection data structures, each connection data structure corresponding to a network thread executed in the multiprocessing system; using a plurality of algorithms provided by an application to distribute the data packets to a plurality of different network threads; and accessing, by each network thread of the plurality of different network threads, a corresponding connection data structure to determine how to process one of the data packets arriving on a connection using any algorithm different from the plurality of algorithms provided by the application used to distribute the data packets for the application to the the plurality of different network threads, wherein each network thread only accesses its corresponding connection data structure. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for enabling applications to flexibly distribute connections in a multiprocessing system, the method comprising:
-
pre-assigning a network connection to a network context to process data packets arriving on the network connection at a source network device; providing an indication as to whether to perform packet classification based on a destination port or a source port of hte multiprocessing system; responsive to the packet classification to be performed based on the destination port as indicated in a data packet, updating a destination port data structure with a source address, the source port, the destination port, and the pre-assigned network context; and responsive to the packet classification to be performed based on the source port as indicated in the data packet, updating a source port data structure with the source address, the source port, the destination port, and the pre-assigned network context.
-
-
7. A system for enabling applications to flexibly distribute data packets in a multiprocessing system including a processor and a memory, the system comprising:
-
a plurality of connection data structures at the multiprocessing system, each connection data structure associated with a network thread executed in the multiprocessing system, the connection data structure storing one or more connections queued to the network thread; a classification module configured to use a plurality of algorithms provided by an application to distribute different connections to a plurality of different network threads; and a transport protocol module configured to access each of the plurality of connection data structures corresponding to each network thread of the plurality of different network threads to determine how to process a data packet arriving on a connection using any algorithm different from the plurality of algorithms provided by the application and used by the classification module to distribute the different connections among the plurality of different network threads. - View Dependent Claims (8, 9)
-
-
10. A non-transitory computer readable medium containing executable program instructions executed by a processor, comprising:
-
program instructions that maintain a plurality of connection data structures, each connection data structure corresponding to a network thread executed in a multiprocessing system; program instructions that use a plurality of algorithms provided by an application executing on the multiprocessing system to distribute data packets to a plurality of different network threads; and program instructions that access, by each network thread of the plurality of different network threads, a corresponding connection data structure to determine how to process a data packet arriving on a connection using any algorithm different from the plurality of algorithms provided by the application used to distribute the data packets for the application to the plurality of different network threads, wherein each network thread of the plurality of different network threads only accesses its corresponding connection data structure. - View Dependent Claims (11, 13)
-
-
12. A non-transitory computer readable medium containing executable program instructions executed by a processor, comprising:
-
program instructions that pre-assign a network connection to a connection data structure to process data packets arriving on the network connection at a source network device; program instructions that provide an indication as to whether packet classification will be performed based on a destination port or a source port; program instructions that, responsive to the packet classification to be performed based on the destination port as indicated in the data packet, update a destination port data structure with a source address, the source port, the destination port, and the pre-assigned network context; and program instructions that, responsive to the packet classification to be performed based on the source port as indicated in the data packet, update a source port data structure with the source address, the source port, the destination port, and the pre-assigned network context.
-
-
14. A system for enabling applications to flexibly distribute data packets in a multiprocessing system including a processor and a memory, the system comprising:
-
a network connection configured to be pre-assigned to a network context to process data packets arriving on the network connection at a source network device; an indication configured to indicate as to whether packet classification will be performed based on a destination port or a source port of the multiprocessing system; responsive to the packet classification to be performed based on the destination port as indicated in a data packet, a destination port data structure configured to be updated with a source address, the source port, the destination port, and the pre-assigned network context; and responsive to the packet classification to be performed based on the source port as indicated in the data packet, a source port data structure configured to be updated with the source address, the source port, the destination port, and the pre-assigned network context.
-
Specification