HULA: Scalable Load Balancing Using Programmable Data Planes
Datacenter networks employ multi rooted topologies (e.g. Leaf Spine, Fat Tree) to provide large bisection bandwidth. These topologies use a large degree of multipathing, and need a data plane load balancing mechanism to effectively utilize their bisection bandwidth. The canonical load balancing mechanism is equal cost multi path routing (ECMP) which spreads traffic uniformly across multiple paths. Motivated by ECMP's shortcomings, congestion aware load balancing techniques such as CONGA have been developed. These techniques have two limitations. First, because switch memory is limited, they can only maintain a small amount of congestion tracking state at the edge switches, and do not scale to large topologies. Second, because they are implemented in custom hardware, they cannot be modified in the field. This paper presents HULA, a data plane load balancing algorithm that overcomes both limitations. First, instead of having the leaf switches track congestion on all paths to a destination, each HULA switch tracks congestion for the best path to a destination through a neighboring switch. Second, we design HULA for emerging programmable switches and program it in P4 to demonstrate that HULA could be run on such programmable chipsets, without requiring custom hardware. We evaluate HULA extensively in simulation, showing that it outperforms a scalable extension to CONGA in average flow completion time (1.6 x at 50% load, 3 x at 90% load)
SOSR