Patent ID: 8223634

Claim:
A method for implementing dynamic load balancing, comprising: dynamically selecting, by a first component of a plurality of components within a Layer 2 network, a particular path in the Layer 2 network from among a plurality of possible paths between each pair of components of the plurality of components over which to send one or more initial packets associated with a flow from the first component to a second component of the plurality of components, the plurality of possible paths resulting a plurality of overlapping loop-free topologies having been established within the Layer 2 network in which each of the plurality of components is reachable by any other of the plurality of components via each of the plurality of overlapping loop-free topologies; forwarding the one or more initial packets associated with the flow from the first component to the second component via the particular path, wherein the particular path is one of the plurality of possible paths in the Layer 2 network between the first component and the second component; determining a congestion metric for the particular path; determining a congestion metric for a set of one or more other paths, wherein the set of one or more other paths comprise a subset of the plurality of possible paths between the first component and the second component; determining, based at least partially upon the congestion metric for the particular path and the congestion metric for the set of one or more other paths, whether the flow should be moved; and in response to a determination that the flow should be moved, moving the flow from the particular path to an alternate path in the Layer 2 network associated with a second loop-free topology of the plurality of overlapping loop-free topologies such that at least some future packets associated with the flow are forwarded from the first component to the second component via the alternate path instead of the particular path, wherein the alternate path is a path in the set of one or more other paths.