Packet spraying for load balancing across multiple packet processors
First Claim
Patent Images
1. A load balancing device, comprising:
- a plurality of queues designated to process packets from a stream of packets; and
spray logic configured to select one of the plurality of queues to receive a packet based on a random selection function, wherein the spray logic includes;
weight compute components configured to calculate a probability value associated with each of the queues;
a series of summers configured to receive the probability values and generate a series of cumulative probability values;
a random generator configured to generate a random number; and
a series of comparators configured to select one of the series of cumulative probability values based on the random number.
1 Assignment
0 Petitions
Accused Products
Abstract
A network device includes multiple packet processing engines implemented in parallel with one another. A spraying component distributes incoming packets to the packet processing engines using a spraying technique that load balances the packet processing engines. In particular, the spraying component distributes the incoming packets based on queue lengths associated with the packet processing engines and based on a random component. In one implementation, the random component is a random selection from all the candidate processing engines. In another implementation, the random component is a weighted random selection in which the weights are inversely proportional to the queue lengths.
-
Citations
19 Claims
-
1. A load balancing device, comprising:
-
a plurality of queues designated to process packets from a stream of packets; and spray logic configured to select one of the plurality of queues to receive a packet based on a random selection function, wherein the spray logic includes; weight compute components configured to calculate a probability value associated with each of the queues; a series of summers configured to receive the probability values and generate a series of cumulative probability values; a random generator configured to generate a random number; and a series of comparators configured to select one of the series of cumulative probability values based on the random number. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A circuit for selecting from among a plurality of queues, the circuit comprising:
-
a series of weight compute components configured to calculate a probability value associated with each of the queues; a series of summers configured to receive the probability values and generate a series of cumulative probability values; a random generator configured to generate a random number; a multiplication component configured to multiply the random number by a final value in the series of cumulative probability values to obtain a multiplied value; and a series of comparators configured to determine whether the multiplied value is less than the values of the series of cumulative probability values, wherein one of the queues is selected based on the comparison by the series of comparators. - View Dependent Claims (12, 13, 14, 15)
-
-
16. An apparatus comprising:
-
means for calculating a series of probability values each based on a length of a plurality of queues that store packet data; means for converting the series of probability values into a series of cumulative probability values; means for generating a random number; and means for selecting one of the plurality of queues as a function of the random number and the series of probability values, wherein the means for selecting includes; means for multiplying the random number by one of the series of cumulative probability values to generate a multiplied value, and means for comparing the multiplied values to the values in the series of cumulative probability values.
-
-
17. An apparatus comprising:
-
means for calculating a series of probability values each based on a length of a plurality of queues that store packet data, wherein the means for calculating the series of probability values calculates each probability value in the series of probability values as a predetermined threshold value minus the length of one of the queues minus a length of the packet; means for generating a random number; means for selecting one of the plurality of queues as a function of the random number and the series of probability values; and means for transmitting a packet to the selected one of the plurality of queues.
-
-
18. A method of selecting from among a plurality of queues, the method comprising:
-
calculating a probability value associated with respective ones of the queues; generating a series of cumulative probability values based on the respective probability values; generating a random number; multiplying the random number by a final value in the series of cumulative probability values to obtain a multiplied value; determining whether the multiplied value is less than values of the series of cumulative probability values; and selecting one of the queues based on the determination. - View Dependent Claims (19)
-
Specification