Load sharing across flows
First Claim
1. A method for distributing respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, said method comprising the following steps:
- for each packet, associating a respective distribution value therewith, said respective distribution value being based, at least in part, upon a respective hash value generated from packet network layer information;
determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
sharing packet traffic load among the N outgoing data paths in response to the modulus value.
0 Assignments
0 Petitions
Accused Products
Abstract
The invention provides a system and method for sharing packet traffic load among a plurality of possible paths. Each packet is associated with a flow, and a hash value is determined for each flow, so as to distribute the sequence of packets into a set of hash buckets. The hash value has a relatively large number of bits, but is divided by the number of possible paths so as to achieve a relatively small modulus value; the modulus value is used to index into a relatively small table associating one selected path with each entry. The modulus value is determined by a relatively small amount of circuitry, simultaneously for a plurality of moduli, and one such modulus value is selected in response to the number of possible paths.
205 Citations
45 Claims
-
1. A method for distributing respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, said method comprising the following steps:
-
for each packet, associating a respective distribution value therewith, said respective distribution value being based, at least in part, upon a respective hash value generated from packet network layer information;
determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
sharing packet traffic load among the N outgoing data paths in response to the modulus value. - View Dependent Claims (2, 3, 4, 5, 44, 45)
the computer readable media having instructions for execution on a processor for the practice of the method of claim 1 or claim 26 or claim 41.
-
-
45. Electromagnetic signals propagating on a computer network, comprising:
the electromagnetic signals carrying information containing instructions for execution on a processor for the practice of the method of claim 1 or claim 26 or claim 41.
-
6. A system for distributing respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, said system comprising:
-
a distribution value generator for associating with each packet a respective distribution value, the value being generated based, at least in part, upon a respective hash value generated from packet network layer information;
determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
a load-sharing element that shares packet traffic load among the outgoing data paths in response to the modulus value. - View Dependent Claims (7, 8, 9, 10)
said distribution value generator is operative to assign a single distribution value for substantially all packets in a respective one of said flows.
-
-
8. A system as in claim 6, wherein said distribution value is based upon, at least in part, a respective packet source address and a respective packet destination address.
-
9. A system as in claim 6, wherein said distribution value is based, at least in part, upon a respective packet source port and a respective packet destination port.
-
10. A system as in claim 6, wherein said distribution value is based upon, at least in part, a respective packet protocol type.
-
11. A system for distributing respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, the system comprising:
-
means for generating for each packet a respective distribution value, the value being generated based, at least in part, upon a respective hash value generated from packet network layer information;
means for determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
means for sharing packet traffic load among the paths in response to the modulus value. - View Dependent Claims (12, 13, 14, 15)
-
-
16. Computer-readable memory comprising computer-executable program instructions that when executed distribute respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, the instructions when executed also causing:
-
generating for each packet a respective distribution value, the value being generated based, at least in part, upon a respective hash value generated from packet network layer information;
determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
sharing of packet traffic load among the paths in response to the modulus value. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A network device for distributing respective pluralities of packets belonging to respective flows among a number N of outgoing data paths, comprising a network interface and a processor configured to perform the steps of:
-
generating for each packet a respective distribution value, the value being generated based, at least in part, upon a respective hash value generated from packet network layer information;
determining a modulus value of the distribution value, the distribution value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
sharing packet traffic load among the paths in response to the modulus value. - View Dependent Claims (22, 23, 24, 25)
-
-
26. A method for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
for each packet determining a hash value generated from packet network layer information;
determining a modulus value of the hash value, the hash value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
sharing packet traffic load among the N outgoing data paths in response to the modulus value. - View Dependent Claims (27, 28, 29, 30)
determining the modulus value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value.
-
-
28. The method as in claim 27 further comprising:
using as the divisor the number of outgoing data paths.
-
29. The method as in claim 27 further comprising:
using as a divisor a number which yields a desired range for the remainder, the range being comparable to the number of outgoing data paths.
-
30. The method as in claim 26 further comprising:
indexing into a load sharing table by the modulus.
-
31. A system for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
a hash value generator for associating with each packet a hash value generated from packet network layer information;
a modulus element to determine a modulus value of the hash value, the hash value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
a load-sharing element that shares packet traffic load among the outgoing data paths in response to the modulus value. - View Dependent Claims (32, 33, 34, 35)
a division circuit to determine the modulus value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value.
-
-
33. The system as in claim 31 further comprising:
the number of outgoing data paths used as the divisor.
-
34. The system as in claim 31 further comprising:
a number used as the divisor to yield a desired range for the remainder, the range being comparable to the number of outgoing data paths.
-
35. The system as in claim 31 further comprising:
a load sharing table indexed by the modulus.
-
36. A system for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
means for determining for each packet a hash value generated from packet network layer information;
means for determining a modulus value of the hash value, the hash value having a first plurality of bits and the modulus value having a second plurality of bits, the first plurality of bits being greater in number of bits than the second plurality of bits, so that the modulus value has a maximum value comparable to N; and
means for sharing packet traffic load among the N outgoing data paths in response to the modulus value. - View Dependent Claims (37, 38, 39, 40)
means for determining the modulus value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value.
-
-
38. The system as in claim 36, further comprising:
means for using as the divisor the number of outgoing data paths.
-
39. The system as in claim 36 further comprising:
means for using as a divisor a number which yields a desired range for the remainder, the range being comparable to the number of outgoing data paths.
-
40. The system as in claim 37 further comprising:
means for indexing into a load sharing table by the modulus.
-
41. A method for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
for each packet determining a hash value generated from packet network layer information;
determining a modulus value of the hash value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value;
indexing into a load sharing table by the modulus value; and
sharing packet traffic load among the N outgoing data paths in response to an entry in the load sharing table indexed by the modulus value.
-
-
42. A system for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
a hash value generator for associating with each packet a hash value generated from packet network layer information;
a modulus element to determine a modulus value of the hash value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value;
a load sharing table indexed by the modulus value;
a load-sharing element that shares packet traffic load among the outgoing data paths in response to an entry in the load sharing table indexed by the modulus value.
-
-
43. A system for distributing packets belonging to different flows among a number N of outgoing data paths, comprising:
-
means for determining a hash value for each packet, the hash value generated from a packet network layer information;
means for determining a modulus value of the hash value by dividing the hash value by a divisor to obtain a remainder, and using the remainder as the modulus value;
means for indexing into a load sharing table by the modulus value; and
means for sharing packet traffic load among the N outgoing data paths in response to an entry in the load sharing table indexed by the modulus value.
-
Specification