Terabit-scale network packet processing via flow-level parallelization
AssigneeAT&T Intellectual Property I, L.P.
InventorsArthur L. Zaifman, John M. Mocenigo
Life of this patent
Estimating the term…
Abstract
In one example, the present disclosure describes a device, computer-readable medium, and method for organizing terabit-scale packet volumes into flows for downstream processing stages. For instance, in one example, a method includes extracting a first flow key from a first data packet, inputting the first flow key into a hash function to obtain a first output value, selecting a first partition in a memory to which to store the first data packet, wherein the first partition is selected based on the first output value, and storing the first data packet to the first partition.
Claims20
A method comprising:
- extracting, by a network interface card, a first flow key from a first data packet, wherein the first flow key comprises a tuple extracted from a header of the first data packet, wherein the tuple extracted from the header of the first data packet comprises at least two of:
- a source internet protocol address of the first data packet;
- a destination internet protocol address of the first data packet;
- a source port number of the first data packet;
- a destination port number of the first data packet;
- or
- a type of service associated with the first data packet;
- inputting, by the network interface card, the first flow key into a hash function to obtain a first output value;
- selecting, by the network interface card, a first partition in a memory distinct from the network interface card to which to store the first data packet, wherein the first partition is selected based on the first output value;
- and
- storing, by the network interface card, the first data packet to the first partition.
A device comprising:
- a processor;
- and
- a non-transitory computer-readable medium storing instructions which, when executed by the processor, cause the processor to perform operations, the operations comprising:
- extracting a first flow key from a first data packet, wherein the first flow key comprises a tuple extracted from a header of the first data packet, wherein the tuple extracted from the header of the first data packet comprises at least two of:
- a source internet protocol address of the first data packet;
- a destination internet protocol address of the first data packet;
- a source port number of the first data packet;
- a destination port number of the first data packet;
- or
- a type of service associated with the first data packet;
- inputting the first flow key into a hash function to obtain a first output value;
- selecting a first partition in a memory distinct from the device to which to store the first data packet, wherein the first partition is selected based on the first output value;
- and
- storing the first data packet to the first partition.
An apparatus comprising:
- a first network interface card, wherein the first network interface card is configured to identify, by applying a hash function to a first flow key extracted from a first data packet, a first flow of packets of a plurality of flows of packets to which the first data packet belongs, wherein the first flow key comprises a tuple extracted from a header of the first data packet, wherein the tuple extracted from the header of the first data packet comprises at least two of:
- a source internet protocol address of the first data packet;
- a destination internet protocol address of the first data packet;
- a source port number of the first data packet;
- a destination port number of the first data packet;
- or
- a type of service associated with the first data packet;
- a second network interface card, wherein the second network interface card is configured to identify, by applying the hash function to a second flow key extracted from a second data packet, a second flow of packets of the plurality of flows of packets to which the second data packet belongs, wherein the second flow key comprises a tuple extracted from a header of the second data packet, wherein the tuple extracted from the header of the second data packet comprises at least two of:
- a source internet protocol address of the second data packet;
- a destination internet protocol address of the second data packet;
- a source port number of the second data packet;
- a destination port number of the second data packet;
- or
- a type of service associated with the second data packet;
- a memory distinct from the first network interface card and the second network interface card, wherein a first partition of the memory is assigned to the first flow of packets and a second partition of the memory is assigned to the second flow of packets;
- and
- a plurality of processors configured to execute a plurality of threads including a first thread and a second thread, wherein the first thread is programmed to retrieve data packets from the first partition and the second thread is programmed to retrieve data packets from the second partition.
Dependencies are inferred from the claim text.