Google的网络负载均衡方案(在FlowBender想法基础上,实际大规模部署的方案)
Motivation
现实中的hot spot:
Obliviously spreading traffic? flowlet是17年思科提出的想法,(交换机)对网络中自动出现的flowlet随机撒,但发现并不能使流量更加均衡,只是位置上变换了过载和低载的链路
PLB
PLB增强了Flowbender两个架构上的问题:
1. 使用Ipv6 Flow label来repath: 交换机ECMP加上Ipv6 Flow label,非常容易部署
2. PLB repath after idle periods: defer repathing a congested flow until it becomes idle(假设small RPCs on long lasting TCP connections), 避免了乱序等与CC交互的问题。同时充分利用CC本身的拥塞探测能力。
具体包括两个核心算法:congstion detection 和 re-pathing
亮点:与congestion control interaction 的考虑与分析
: When a flow experiences congestion, PLB waits several round trips (configured by $M$ , $N$ in Algorithm 2) before repathing. This gives congestion control time to react to transient issues. If PLB were to repath immediately, then congestion control would become an open-loop, with every round-trip potentially measuring a different path. Similarly, PLB prefers to repath after idle, at the start of an application duty cycle. Congestion state is likely stale at this time and probing is already required to acquire fresh state. On the other hand, we do not want to endure prolonged heavy congestion (i.e. large $N$ , $K$ in Algorithm 1). This could lower performance as congestion control may slow the flows down instead of PLB seeking more available bandwidth.
PLB IN PRODUCTION
LI: $max$−$min$ utilization over the switch ports
Thinking
Load Balancing 是前几年 (12~18年左右)相对较热的topic, 学术界提出了各式的方案,基于网络内Switch的CONGA/LetFlow/Drill/HULA/Vertigo,基于controller集中调度的Hedera/MicroTE,基于边缘主机或者软件层的FlowBender/Presto/RPS/Clove,修改主机协议栈的MPTCP等等,PLB这篇论文从工业界的视角,介绍了在实际部署中的尝试和发现,认为更加务实的随机repath具有良好的效果。
Solutions that are simple and general will always have a strong value proposition because of the combination of reduced costs with broad applicability
参考文献
PLB:Congestion Signals are Simple and Effective for Network Load Balancing