云计算中数据中心内部负载均衡策略ECMP
背景
数据中心的内部网络拓扑通常采用的是Leaf-Spine结构(也称CLOT结构)。这种结构区别于传统的3-Tier结构,任意主机之间两跳可达。主机之间常常存在多条路径。数据中心为了满足吞吐量敏感型流量的需求会提供大量带宽资源。利用SDN控制器对全局网络拓扑感知、路径组员、带宽资源丰富的特性,可以更好的实现负载均衡,将数据流分不到不同路径上进行数据传输,避免用赛,提高数据中心内的资源利用率。
ECMP
ECMP(Equal-cost multi-path)是一个逐跳的基于流的负载均衡策略,目前被BGP/OSFP等传统三层协议支持,也被TRILL这种大二层协议支持。在数据中心架构VL2中也使用ECMP作为负载均衡算法。
对于未开启ECMP的网络来说,无法充分利用路径资源。如图1所示,假设从S0到Server的为S0-S1-S2-S4即图中橙色路径,那么即便存在另一条等价路径,蓝色路径,路由器仍然会每次选择第一条橙色路径转发数据。除非此条路径发生拥塞,才会重新选择路径。
当开启ECMP功能时,便可同时利用两条路径,进行基于流的负载均衡,例如主机A到Server的数据流选择橙色路径,主机B到Server的数据流选择蓝色路径。
ECMP的路径选择策略有多种方法:
1.哈希,例如根据源IP地址的哈希为流选择路径。
2.轮询,各个流在多条路径之间轮询传输。
3.基于路径权重,根据路径的权重分配流,权重打的路径分配的流数量更多。
图1.使用ECMP进行负载均衡
图2.非对称网络
ECMP面临的问题
ECMP是一种较为简单的负载均衡策略,其在实际中面临的问题也不容忽视。
- 可能增加链路的拥塞 ,ECMP并没有拥塞感知的机制,只是将流分散到不同的路径上转发。对于已经产生拥塞的路径来说,很可能加剧路径的拥塞。而使用哈希的方法,产生哈皮碰撞也会增加链路拥塞的可能。
- 非对称网络使用效果不好,例如在图2中,A与h3之间的通信,ECMP只是均匀的将流通过B,D两条路径分别转发,但实际上,在B处可以承担更多的流量。因为B后面还有两条路径可以到达h3;
- 基于流的负载均衡效果不好,ECMP对于流大小相差不多的情况效果更好,而对于流大小差异较大,例如大象流和老鼠流并存的情况下,效果不好。如图2,主机h1到A的流量为15,h2到A的流量为5.那么无论为h1的流量选择哪条路径都会发生拥塞。但若将h1的流拆分成为两部分传输,可以避免拥塞的情况;