Apparatus and method for wire-speed classification and pre-processing of data packets in a full duplex network
First Claim
1. A network interface that processes data packets transmitted on a network, comprising:
- a first data path unit that inputs only data packets transmitted upstream on the network, wherein a first data packet input to the first data path unit comprises a first header, said first header comprising a first source address and a first destination address a second data path unit that receives only data packets transmitted downstream on the network, wherein a second data packet received by the second data path unit comprises a second header, said second header comprising a second source address and a second destination address and a classifier unit that inputs the first header from the first data path unit and the second header from the second data path unit, evaluates the first header to determine a flow corresponding to the first data packet, and evaluates the second header to determine a flow corresponding to the second data packet, wherein the first source address is different from the second source address and the first destination address is different from the second destination address, and wherein the first data packet and the second data packet belong to the same flow.
2 Assignments
0 Petitions
Accused Products
Abstract
A network interface that processes data packets transmitted on a network is provided. The network interface includes a first data path, a second data path, a header processor, a classifier unit, and a plurality of packet processors. The first data path unit inputs downstream data packets transmitted downstream on the network, and the second data path unit inputs upstream data packets transmitted upstream on the network. The header processor inputs data packet headers of the downstream and upstream data packets from the first and second data path units and classifies the downstream and upstream data packets by comparing the headers with predetermined rules. The classifier unit also inputs the data packet headers from the first and second data path units and evaluates the headers determine flows corresponding to the downstream and upstream data packets. The classifier unit selects a first packet processor to process both the downstream and upstream data packets corresponding to a first flow and instructs the first and second data path units to output the data packets, which correspond to the first flow, to the first packet processor. Similarly, the classifier unit selects a second packet processor to process both the downstream and upstream data packets corresponding to a second flow and instructs the first and second data path units to output the data packets, which correspond to the second flow, to the second packet processor. The classifier is further capable of balancing loads between the packet processors based on the effective load on each such packet processor.
-
Citations
37 Claims
-
1. A network interface that processes data packets transmitted on a network, comprising:
-
a first data path unit that inputs only data packets transmitted upstream on the network, wherein a first data packet input to the first data path unit comprises a first header, said first header comprising a first source address and a first destination address a second data path unit that receives only data packets transmitted downstream on the network, wherein a second data packet received by the second data path unit comprises a second header, said second header comprising a second source address and a second destination address and a classifier unit that inputs the first header from the first data path unit and the second header from the second data path unit, evaluates the first header to determine a flow corresponding to the first data packet, and evaluates the second header to determine a flow corresponding to the second data packet, wherein the first source address is different from the second source address and the first destination address is different from the second destination address, and wherein the first data packet and the second data packet belong to the same flow. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 37)
a first processor that processes data packets belonging to a first flow; and
a second processor that processes data packets belonging to a second flow, wherein, when the classifier unit determines that the first data packet belongs to the first flow, the classifier unit instructs the first data path unit to output the first data packet to the first processor for processing, and wherein, when the classifier unit determines that the second data packet belongs to the second flow, the classifier unit instructs the second data path unit to output the second data packet to the second processor for processing.
-
-
3. The network interface as claimed in claim 2, wherein, when the classifier unit determines that the first data packet belongs to the second flow, the classifier unit instructs the first data path unit to output the first data packet to the second processor for processing, and
wherein, when the classifier unit determines that the second data packet belongs to the first flow, the classifier unit instructs the second data path unit to output the second data packet to the first processor. -
4. The network interface as claimed in claim 3, wherein the first data packet belongs to the second flow and is output to the second processor, and
wherein the first data path unit outputs first data type information to inform the second processor that the first data packet contains a first type of data. -
5. The network interface as claimed in claim 2;
- further comprising;
a first FIFO unit that receives the data packets belonging to the first flow and outputs the data packets belonging to the first flow to the first processor; and
a second FIFO unit that receives the data packets belonging to the second flow and outputs the data packets belonging to the second flow to the second processor.
- further comprising;
-
6. The network interface as claimed in claim 2, wherein a parent data packet having a corresponding parent header is transmitted on the network and causes a child data packet having a corresponding child header to be transmitted on the network,
wherein the parent data packet and the child data packet correspond to different flows, and wherein the classifier unit determines that the parent data packet and the child data packet correspond to the different flows but are related. -
7. The network interface as claimed in claim 6, wherein the classifier unit causes the parent data packet and the child data packet to be output to the same one of the packet processors after determining that the parent data packet and the child data packet are related.
-
8. The network interface as claimed in claim 2, wherein the first data packet belongs to the first flow and is output to the first processor, and
wherein the first data path unit outputs first data type information to inform the first processor that the first data packet contains a first type of data. -
9. The network interface as claimed in claim 8, wherein the second data packet belongs to the second flow and is output to the second processor, and
wherein the second data path unit outputs second data type information to inform the second processor that the second data packet contains a second type of data. -
10. The network interface as claimed in claim 1, further comprising:
-
a header processor coupled to the first data path unit, wherein the header processor receives the first header from the first data path unit and classifies the first data packet by comparing the first header with predetermined rules.
-
-
11. The network interface as claimed in claim 10, wherein the header processor is coupled to the second data path unit,
wherein the header processor receives the second header from the second data path unit and classifies the second data packet by comparing the second header with the predetermined rules. -
12. The network interface as claimed in claim 10, wherein, when the header processor determines that the first header corresponds to none of the predetermined rules, the header processor at least indirectly outputs a command to the classifier unit to instruct the classifier unit not to evaluate the first header and not to determine a flow corresponding to the first data packet.
-
13. The network interface as claimed in claim 10, wherein, when the header processor determines that the first header corresponds to none of the predetermined rules, the header processor at least indirectly outputs a command to the first data path unit to instruct the first data path unit to discard the first data packet.
-
14. The network interface as claimed in claim 1, wherein the first data path unit performs a packet validity operation to determine whether or not the first data packet is valid, and
wherein the second data path unit performs the packet validity operation to determine whether or not the second data packet is valid. -
15. The network interface as claimed in claim 14, wherein, when the first data path unit determines that the first data packet is not valid, the first data path unit deletes the first data packet, and
wherein, when the second data path unit determines that the second data packet is not valid, the second data path unit deletes the second data packet. -
16. The network interface as claimed in claim 1, further comprising:
-
a first processor and a second processor, wherein, when the classifier unit determines that the first data packet belongs to a first flow, the classifier unit determines whether or not one of the first processor and second processor has been previously designated to process data packets corresponding to the first flow, wherein, when the classifier unit determines that none of the first processor and the second processor has been previously designated to process data packets corresponding to the first flow, the classifier unit designates the first processor to process data packets corresponding to the first flow and instructs the first data path unit to output the first data packet to the first processor for processing, and wherein, when the classifier unit determines that the first processor has been previously designated to process data packets corresponding to the first flow, the classifier unit instructs the first data path unit to output the first data packet to the first processor for processing.
-
-
17. The network interface as claimed in claim 16, wherein, when the classifier unit determines that the second data packet corresponds to the first flow and determines that the first processor has been previously designated to process data packets corresponding to the first flow, the classifier unit instructs the second data path unit to output the second data packet to the first processor for processing.
-
18. The network interface as claimed in claim 1, further comprising a first processor and a second processor,
wherein the classifier evaluates first load information to determine a first load of the first processor and evaluates second load information to determine a second load of the second processor, and wherein, when the classifier determines that one of the first data packet and the second data packet is a new data packet belonging to a new flow, the classifier unit at least indirectly causes the new data packet to be output to the first processor if the first load is less than the second load and at least indirectly causes the new data packet to be output to the second processor if the second load is less than the first load. -
19. The network interface as claimed in claim 1, wherein the first data path unit receives a plurality of headers corresponding to a plurality of data packets,
wherein the plurality of headers include the first header and the plurality of data packets include the first data packet, and wherein the first data path unit sorts the plurality of data packets based on information contained in the plurality of headers. -
20. The network interface as claimed in claim 19, wherein said information contained in the plurality of headers includes the value of at least one IP address contained in each of the headers.
-
37. The network interface as claimed in claim 15, wherein when at least one data packet of the upstream and downstream data packets corresponding to the first flow are output to the first packet processor, and
wherein data type information is output to the first packet processor to inform the first packet processor of the type of data contained in the one data packet.
-
21. A network interface that processes data packets transmitted on a network, comprising:
-
a first data path unit that inputs only downstream data packets transmitted downstream on the network, wherein the downstream data packets comprise downstream headers, respectively;
a second data path unit that inputs only upstream data packets transmitted upstream on the network, wherein the upstream data packets comprise upstream headers, respectively;
a classifier unit that inputs the downstream headers from the first data path unit and the upstream headers from the second data path unit, evaluates the downstream headers to respectively determine flows corresponding to the downstream data packets, and evaluates the upstream headers to respectively determine flows corresponding to the upstream data packets; and
packet processors at least indirectly coupled to the classifier unit, wherein a first data packet is a downstream data packet having a downstream header comprising a first source address and a first destination address, wherein a second data packet is an upstream data packet having an upstream header comprising a second source address and a second destination address, wherein the first source address is different from the second source address and the first destination address is different from the second destination address, wherein the first data packet and the second data packet belong to the same flow, and wherein the classifier unit selects a first packet processor of said packet processors to process the first data packet and the second data packet belonging to the same flow. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
a header processor coupled to the first data path unit and the second data path unit, wherein the header processor receives the downstream headers from the first data path unit, receives the upstream headers from the second data path unit, classifies the downstream data packets by comparing the downstream headers with predetermined rules, and classifies the upstream data packets by comparing the upstream headers with the predetermined rules.
-
-
26. The network interface as claimed in claim 25, wherein, when the header processor determines that a particular header of a particular downstream data packet received by the first data path unit corresponds to none of the predetermined rules, the header processor at least indirectly outputs a command to the classifier unit to instruct the classifier unit not to evaluate the particular header and not to determine a flow corresponding to the particular downstream data packet.
-
27. The network interface as claimed in claim 26, wherein, when the header processor determines that the particular header corresponds to none of the predetermined rules, the header processor at least indirectly outputs a command to the first data path unit to instruct the first data path unit to discard the particular downstream data packet.
-
28. The network interface as claimed in claim 22, wherein the first data path unit is capable of sorting the downstream data packets based on information contained in the downstream headers.
-
29. The network interface as claimed in claim 28, wherein said information contained in the downstream headers includes at least one IP address contained in each downstream header.
-
30. The network interface as claimed in claim 22, wherein the second data path unit is capable of sorting the upstream data packets based on information contained in the upstream headers.
-
31. The network interface as claimed in claim 30, wherein said information contained in the upstream headers includes at least one IP address contained in each upstream header.
-
32. The network interface as claimed in claim 22, further comprising:
a first FIFO unit that receives the data packets corresponding to the first flow and outputs the data packets corresponding to the first flow to the first packet processor.
-
33. The network interface as claimed in claim 22, wherein a parent data packet having a corresponding parent header is transmitted on the network and causes a child data packet having a corresponding child header to be transmitted on the network,
wherein the parent data packet and the child data packet correspond to different flows, and wherein the classifier unit determines that the parent data packet and the child data packet correspond to the different flows but are related. -
34. The network interface as claimed in claim 33, wherein the classifier unit causes the parent data packet and the child data packet to be output to the same one of the packet processors after determining that the parent data packet and the child data packet are related.
-
35. The network interface as claimed in claim 21, further comprising:
-
a header processor coupled to the first data path unit and the second data path unit, wherein the header processor receives the downstream headers from the first data path unit, receives the upstream headers from the second data path unit, classifies the downstream data packets by comparing the downstream headers with predetermined rules, and classifies the upstream data packets by comparing the upstream headers with the predetermined rules.
-
-
36. The network interface as claimed in claim 21, wherein, when the classifier inputs an initial packet header of an initial data packet corresponding to the first flow before the first packet processor has been selected to process both the upstream data packets and the downstream data packets corresponding to the first flow, the classifier evaluates first load information to determine a first load of the first packet processor and evaluates remaining load information to determine remaining loads of remaining ones of the packet processors, respectively, and
wherein, when the classifier determines that first load is less than the remaining loads, the classifier at least indirectly causes the initial data packet to be output to the first packet processor.
Specification