Niagara: Scalable Load Balancing on Commodity Switches
Internet service providers rely on load balancers to dis-tribute client requests for many web services over backend servers. Dedicated load-balancer appliances are expensive and do not scale easily with traffic demand. Instead, fu-ture load balancers should be built from smaller commod-ity components. Rather than rely exclusively on special-purpose load-balancing software, we argue that data cen-ter switches should be programmed to perform most of the load-balancing function. Commodity switches offer high-speed packet processing, as well as flexible interfaces for installing rules that forward packets. However, hardware switches have small rule tables, and software switches do not forward packets at high speeds. Our Niagara load-balancing architecture combines the per-packet performance of hard-ware and the large rule-space of software switches. The hardware switches approximate the load-balancing weights for each service, and the software switches correct for small errors in the approximation and ensure connection affinity during weight changes. Our main contributions are algo-rithms for (i) approximating the weights for each service,(ii) allocating a limited rule table across many services, and (iii) computing incremental updates to the rules when the weights change. Experiments demonstrate that Niagara can load-balance 10,000 VIPs using only 4000 hardware rules, while having software switches redirect just 3% of traffic.