數(shù)據(jù)中心的網(wǎng)絡(luò)拓?fù)渫ǔ2捎肅LOS結(jié)構(gòu),主機(jī)之間常存在多條路徑。數(shù)據(jù)中心為滿(mǎn)足吞吐量敏感型流量的需求會(huì)提供大量的帶寬資源。那么利用數(shù)據(jù)中心這種網(wǎng)絡(luò)拓?fù)湟阎窂劫Y源、帶寬資源豐富的特性,可以更好的實(shí)現(xiàn)負(fù)載均衡,將數(shù)據(jù)流分布到不同路徑上進(jìn)行數(shù)據(jù)傳輸,避免擁塞,提高數(shù)據(jù)中心內(nèi)的資源利用率。
ECMP(Equal-cost multi-path)
ECMP是一個(gè)逐跳的基于流的負(fù)載均衡策略,當(dāng)路由器發(fā)現(xiàn)同一目的地址出現(xiàn)多個(gè)最優(yōu)路徑時(shí),會(huì)更新路由表,為此目的地址添加多條規(guī)則,對(duì)應(yīng)于多個(gè)下一跳。可同時(shí)利用這些路徑轉(zhuǎn)發(fā)數(shù)據(jù),增加帶寬。ECMP算法被多種路由協(xié)議支持,例如:OSPF、ISIS、EIGRP、BGP等。在數(shù)據(jù)中心架構(gòu)VL2中也提到使用ECMP作為負(fù)載均衡算法。
對(duì)于未開(kāi)啟ECMP的網(wǎng)絡(luò)來(lái)說(shuō),無(wú)法充分利用路徑資源。如圖1所示,假設(shè)從S0到Server的為S0-S1-S2-S4即圖中橘色路徑,那么即便存在另一條等價(jià)路徑,藍(lán)色路徑,路由器仍然會(huì)每次選擇第一條橘色路徑轉(zhuǎn)發(fā)數(shù)據(jù)。除非此條路徑發(fā)生擁塞,才會(huì)重新選擇路徑。
當(dāng)開(kāi)啟ECMP功能時(shí),便可同時(shí)利用兩條路徑,進(jìn)行基于流的負(fù)載均衡,例如主機(jī)A到Server的數(shù)據(jù)流選擇橘色路徑,服務(wù)器租用 免備案服務(wù)器,主機(jī)B到Server的數(shù)據(jù)流選擇藍(lán)色路徑。
ECMP的路徑選擇策略有多種方法:
哈希,例如根據(jù)源IP地址的哈希為流選擇路徑。
輪詢(xún),各個(gè)流在多條路徑之間輪詢(xún)傳輸。
基于路徑權(quán)重,根據(jù)路徑的權(quán)重分配流,權(quán)重大的路徑分配的流數(shù)量更多。
圖1.使用ECMP進(jìn)行負(fù)載均衡
ECMP面臨的問(wèn)題
然而ECMP是一種較為簡(jiǎn)單的負(fù)載均衡策略,其在實(shí)際使用中面臨的問(wèn)題也不容忽視。
1.可能增加鏈路的擁塞
ECMP并沒(méi)有擁塞感知的機(jī)制,只是將流分散到不同的路徑上轉(zhuǎn)發(fā)。對(duì)于已經(jīng)產(chǎn)生擁塞的路徑來(lái)說(shuō),很可能加劇路徑的擁塞。而使用哈希的方法,產(chǎn)生哈希碰撞也會(huì)增加鏈路的擁塞可能。
2.非對(duì)稱(chēng)網(wǎng)絡(luò)使用效果不好
例如圖2中,A與h3之間的通信,ECMP只是均勻的將流通過(guò)B,免備案主機(jī),D兩條路徑分別轉(zhuǎn)發(fā),但實(shí)際上,在B處可以承擔(dān)更多的流量。因?yàn)锽后面還有兩條路徑可以到達(dá)h3.
圖2. 非對(duì)稱(chēng)網(wǎng)絡(luò)
3.基于流的負(fù)載均衡效果不好
ECMP對(duì)于流大小相差不多的情況效果更好,而對(duì)于流大小差異較大,例如大象流和老鼠流并存的情況下,效果不好。如圖2,主機(jī)h1到A的流量為15,h2到A的流量為5.那么無(wú)論為h1的流量選擇哪條路徑都會(huì)發(fā)生擁塞。但若將h1的流拆分成兩部分傳輸,可以避免擁塞的情況。
以上,為使用ECMP算法進(jìn)行負(fù)載均衡的分析,在數(shù)據(jù)中心這種突發(fā)性流量多,大象流與老鼠流并存的環(huán)境中,需要慎重考慮選擇的負(fù)載均衡策略,ECMP簡(jiǎn)單易部署但也存在較多問(wèn)題需要注意。