加入收藏 設為首頁 聯(lián)系我們 歡迎光臨本網(wǎng)站!
郵箱:support@zcecs.com
地址:北京市西城區(qū)南濱河路27號貴都國際中心A座1111室
數(shù)據(jù)中心的網(wǎng)絡拓撲通常采用CLOS結構,主機之間常存在多條路徑。數(shù)據(jù)中心為滿足吞吐量敏感型流量的需求會提供大量的帶寬資源。那么利用數(shù)據(jù)中心這種網(wǎng)絡拓撲已知,路徑資源、帶寬資源豐富的特性,可以更好的實現(xiàn)負載均衡,將數(shù)據(jù)流分布到不同路徑上進行數(shù)據(jù)傳輸,避免擁塞,提高數(shù)據(jù)中心內的資源利用率。
ECMP(Equal-cost multi-path)
ECMP是一個逐跳的基于流的負載均衡策略,當路由器發(fā)現(xiàn)同一目的地址出現(xiàn)多個最優(yōu)路徑時,會更新路由表,為此目的地址添加多條規(guī)則,對應于多個下一跳?赏瑫r利用這些路徑轉發(fā)數(shù)據(jù),增加帶寬。ECMP算法被多種路由協(xié)議支持,例如:OSPF、ISIS、EIGRP、BGP等。在數(shù)據(jù)中心架構VL2中也提到使用ECMP作為負載均衡算法。
對于未開啟ECMP的網(wǎng)絡來說,無法充分利用路徑資源。如圖1所示,假設從S0到Server的為S0-S1-S2-S4即圖中橘色路徑,那么即便存在另一條等價路徑,藍色路徑,路由器仍然會每次選擇第一條橘色路徑轉發(fā)數(shù)據(jù)。除非此條路徑發(fā)生擁塞,才會重新選擇路徑。
當開啟ECMP功能時,便可同時利用兩條路徑,進行基于流的負載均衡,例如主機A到Server的數(shù)據(jù)流選擇橘色路徑,主機B到Server的數(shù)據(jù)流選擇藍色路徑。
ECMP的路徑選擇策略有多種方法:
哈希,例如根據(jù)源IP地址的哈希為流選擇路徑。
輪詢,各個流在多條路徑之間輪詢傳輸。
基于路徑權重,根據(jù)路徑的權重分配流,權重大的路徑分配的流數(shù)量更多。
圖1.使用ECMP進行負載均衡
ECMP面臨的問題
然而ECMP是一種較為簡單的負載均衡策略,其在實際使用中面臨的問題也不容忽視。
1.可能增加鏈路的擁塞
ECMP并沒有擁塞感知的機制,只是將流分散到不同的路徑上轉發(fā)。對于已經(jīng)產(chǎn)生擁塞的路徑來說,很可能加劇路徑的擁塞。而使用哈希的方法,產(chǎn)生哈希碰撞也會增加鏈路的擁塞可能。
2.非對稱網(wǎng)絡使用效果不好
例如圖2中,A與h3之間的通信,ECMP只是均勻的將流通過B,D兩條路徑分別轉發(fā),但實際上,在B處可以承擔更多的流量。因為B后面還有兩條路徑可以到達h3.
圖2. 非對稱網(wǎng)絡
3.基于流的負載均衡效果不好
ECMP對于流大小相差不多的情況效果更好,而對于流大小差異較大,例如大象流和老鼠流并存的情況下,效果不好。如圖2,主機h1到A的流量為15,h2到A的流量為5.那么無論為h1的流量選擇哪條路徑都會發(fā)生擁塞。但若將h1的流拆分成兩部分傳輸,可以避免擁塞的情況。
以上,為使用ECMP算法進行負載均衡的分析,在數(shù)據(jù)中心這種突發(fā)性流量多,大象流與老鼠流并存的環(huán)境中,需要慎重考慮選擇的負載均衡策略,ECMP簡單易部署但也存在較多問題需要注意。