Legal claims defining the scope of protection, as filed with the USPTO.
1. A method comprising: receiving, at a network device, a data packet to be sent via an aggregation group, the aggregation group comprising a plurality of aggregate members; determining a flow set table index, including: determining a first offset based on an identifier for the aggregation group included in the packet; and generating a hash value from the packet, determining a flow identifier of a flow to which the data packet belongs, including: indexing, using the first offset as a first pointer, a portion of a flow set table corresponding with the aggregation group; indexing, using the hash value, a flow set table entry in the portion of the flow set table corresponding with the aggregation group, the flow set table entry including the flow identifier; determining a state of the flow; determining, based on the flow identifier and the state of the flow, an assigned member of the plurality of aggregate members for the flow; and communicating the packet via the assigned member.
2. The method of claim 1 , wherein the plurality of aggregate members comprises a plurality of physical links.
3. The method of claim 1 , wherein: determining the flow set table index further comprises: determining a priority of the packet; and determining a second offset based on the priority; determining the flow identifier further comprises indexing, using the second offset as a second pointer, a sub-portion of the portion of the flow set table corresponding with the aggregation group, the sub-portion corresponding with the determined priority; and the hash value is further used to index the flow set table entry in the sub-portion of the flow set table corresponding with the determined priority.
4. The method of claim 1 , wherein determining the state of the flow comprises determining whether the state of the flow is one of: a new flow; an inactive flow; and an active flow.
5. The method claim 4 , wherein, in the event the state of the flow is one of new and inactive, determining the assigned member comprises determining the assigned member based on respective quality measures for each of the plurality of aggregate members.
6. The method of claim 5 , wherein the respective quality measures are determined based on respective data traffic loading and respective amounts of queued data for each of the plurality of aggregate members.
7. The method of claim 5 , wherein determining the respective quality measure of a given aggregate member comprises: periodically measuring average data traffic loading for the given aggregate member; quantizing the average data traffic loading to a binary loading metric; periodically measuring average queued data for the given aggregate member; quantizing the average queued data to a binary queue size metric; combining the binary loading metric and the binary queue metric to produce a combined quality metric; mapping the combined quality metric to the respective quality measure using a quality mapping function.
8. The method of claim 7 , wherein the quality mapping function is arbitrarily selected, by the network device, for the aggregation group from a plurality of quality mapping functions.
9. The method of claim 5 , wherein determining the assigned member further comprises: grouping the respective quality measures into loading/quality bands, each loading/quality band having a respective upper threshold and a respective lower threshold, wherein the loading/quality bands are contiguous and non-overlapping; and randomly selecting the assigned member from a loading/quality band with largest upper and lower thresholds that includes one or more members of the aggregation group.
10. The method of claim 9 , wherein randomly selecting the assigned member comprises: generating a random number; performing a binary search of a bit-map representing the members of the aggregation group included in the loading/quality band with the largest upper and lower thresholds that includes one or more members of the aggregation group, wherein the random number is used to select a direction for the binary search.
11. The method of claim 4 , wherein determining the state of the flow is new comprises determining whether a flow set entry in the flow set table corresponding with the flow is valid, wherein if the flow set entry is not valid, the state of the flow is new.
12. The method of claim 4 , wherein determining the state of the flow is inactive comprises determining a difference between a previous timestamp associated with the flow in the flow set table and a timestamp corresponding with the packet, wherein if the difference is greater than an inactivity duration, the flow is inactive.
13. The method of claim 12 , wherein the inactivity duration is greater than a path skew associated with multiple paths of the aggregation group.
14. The method of claim 4 , wherein determining the state of the flow is active comprises determining a difference between a previous timestamp associated with the flow in the flow set table and a timestamp corresponding with the packet, wherein if the difference is less than or equal to an inactivity duration, the flow is active.
15. The method of claim 4 , wherein, in the event the state of the flow is active, determining the assigned member comprises determining the assigned member based on a previously assigned member for the flow.
16. A network device comprising: a data port configured to receive a data packet to be sent via an aggregation group of the network device, the aggregation group comprising a plurality of aggregate members; a flow identification module configured to determine, based on the data packet, a flow identifier of a flow to which the data packet belongs, wherein determining the flow identifier includes: determining an offset based on an identifier for the aggregation group included in the packet; and generating a hash value from the packet; a flow state module configured to determine a state of the flow; an aggregate member assignment module configured to determine, based on the flow identifier and the state of the flow, an assigned member of the plurality of aggregate members for communicating the data packet, wherein the flow identifier is used as an index for a flow set table included in the network device.
17. A method comprising: receiving, at a network device, a data packet to be sent via an aggregation group, the aggregation group comprising a plurality of aggregate members; determining, based on the packet, a flow identifier (ID) for a data flow corresponding with the packet, wherein determining the flow identifier includes: determining a first offset based on an identifier for the aggregation group included in the packet; and generating a hash value from the packet; indexing a flow set table using the flow ID; determining a state of the data flow; determining, based on the flow ID and the state of the flow, an assigned member of the plurality of aggregate members for the data flow; and communicating the packet via the assigned member.
18. The method of claim 17 , wherein determining the flow set identifier further comprises: determining a priority of the packet; determining a second offset based on the priority, wherein: the first offset is used as a pointer for indexing a portion of the flow set table corresponding with the aggregation group; the second offset is used as pointer for indexing a sub-portion of the flow set table corresponding with the aggregation group, the sub-portion corresponding with the determined priority, and the hash value is used to index a flow set table entry in the sub-portion of the table corresponding with the aggregation group and the determined priority.
Unknown
January 15, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.