數據中心內負載均衡-ECMP的使用分析


背景

數據中心的網絡拓撲通常采用CLOS結構,主機之間常存在多條路徑。數據中心為滿足吞吐量敏感型流量的需求會提供大量的帶寬資源。那么利用數據中心這種網絡拓撲已知,路徑資源、帶寬資源豐富的特性,可以更好的實現負載均衡,將數據流分布到不同路徑上進行數據傳輸,避免擁塞,提高數據中心內的資源利用率。

ECMP(Equal-cost multi-path)

ECMP是一個逐跳的基於流的負載均衡策略,當路由器發現同一目的地址出現多個最優路徑時,會更新路由表,為此目的地址添加多條規則,對應於多個下一跳。可同時利用這些路徑轉發數據,增加帶寬。ECMP算法被多種路由協議支持,例如:OSPF、ISIS、EIGRP、BGP等。在數據中心架構VL2中也提到使用ECMP作為負載均衡算法。

對於未開啟ECMP的網絡來說,無法充分利用路徑資源。如圖1所示,假設從S0到Server的為S0-S1-S2-S4即圖中橘色路徑,那么即便存在另一條等價路徑,藍色路徑,路由器仍然會每次選擇第一條橘色路徑轉發數據。除非此條路徑發生擁塞,才會重新選擇路徑。

當開啟ECMP功能時,便可同時利用兩條路徑,進行基於流的負載均衡,例如主機A到Server的數據流選擇橘色路徑,主機B到Server的數據流選擇藍色路徑。

ECMP的路徑選擇策略有多種方法:

  • 哈希,例如根據源IP地址的哈希為流選擇路徑。
  • 輪詢,各個流在多條路徑之間輪詢傳輸。
  • 基於路徑權重,根據路徑的權重分配流,權重大的路徑分配的流數量更多。

圖1.使用ECMP進行負載均衡

ECMP面臨的問題

然而ECMP是一種較為簡單的負載均衡策略,其在實際使用中面臨的問題也不容忽視。

1.可能增加鏈路的擁塞
ECMP並沒有擁塞感知的機制,只是將流分散到不同的路徑上轉發。對於已經產生擁塞的路徑來說,很可能加劇路徑的擁塞。而使用哈希的方法,產生哈希碰撞也會增加鏈路的擁塞可能。

2.非對稱網絡使用效果不好
例如圖2中,A與h3之間的通信,ECMP只是均勻的將流通過B,D兩條路徑分別轉發,但實際上,在B處可以承擔更多的流量。因為B后面還有兩條路徑可以到達h3。

圖2. 非對稱網絡

3.基於流的負載均衡效果不好
ECMP對於流大小相差不多的情況效果更好,而對於流大小差異較大,例如大象流和老鼠流並存的情況下,效果不好。如圖2,主機h1到A的流量為15,h2到A的流量為5。那么無論為h1的流量選擇哪條路徑都會發生擁塞。但若將h1的流拆分成兩部分傳輸,可以避免擁塞的情況。

以上,為使用ECMP算法進行負載均衡的分析,在數據中心這種突發性流量多,大象流與老鼠流並存的環境中,需要慎重考慮選擇的負載均衡策略,ECMP簡單易部署但也存在較多問題需要注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM