目前數(shù)據(jù)中心網(wǎng)絡(luò)廣泛應(yīng)用的Fabric架構(gòu)中會應(yīng)用大量的ECMP(Equal-Cost Multipath Routing,簡寫ECMP),其優(yōu)點主要體現(xiàn)在可以提高網(wǎng)絡(luò)冗余性和可靠性,同時也提高了網(wǎng)絡(luò)資源利用率;大量的ECMP鏈路在特定場景下運行過程中會引發(fā)其他問題。例如,當(dāng)某條ECMP鏈路斷開后,ECMP組內(nèi)所有鏈路流量都會被重新HASH,在有狀態(tài)的服務(wù)器區(qū)域(如LVS)中將導(dǎo)致雪崩現(xiàn)象,又或者會出現(xiàn)多級ECMP的HASH極化導(dǎo)致鏈路擁塞等。本文將結(jié)合ECMP運行原理針對以上問題進(jìn)行分析,并探討如何優(yōu)化ECMP的運用。
等價多路徑路由
等價多路徑路由,即存在多條到達(dá)同一個目的地址的相等開銷的路徑。當(dāng)設(shè)備支持等價路由時,發(fā)往該目的IP 或者目的網(wǎng)段的三層轉(zhuǎn)發(fā)流量就可以通過不同的路徑分擔(dān),實現(xiàn)網(wǎng)絡(luò)鏈路的負(fù)載均衡,并在鏈路出現(xiàn)故障時,實現(xiàn)快速切換。
ECMP實現(xiàn)流程:
圖例1:ECMP流程圖
步驟一:HASH因子的選擇
首先數(shù)據(jù)報文轉(zhuǎn)發(fā)查詢路由表,確認(rèn)存在多個等價路由,再根據(jù)當(dāng)前用戶配置的流量均衡算法,提取參與 HASH 計算的關(guān)鍵字段,即HASH因子。ECMP 流量均衡可選擇的 HASH 因子如下表:
圖表1:流量均衡模式對應(yīng)HASH因子表
注:因ECMP為三層轉(zhuǎn)發(fā),即使配置基于源MAC、目的MAC或者源目MAC作為HASH因子,系統(tǒng)也會默認(rèn)選擇源IP作為HASH因子。另外,在選擇提取HASH因子為目的IP時ECMP會默認(rèn)選擇源目IP作為HASH因子。
步驟二:HASH計算
基于步驟一提取的 HASH 因子,根據(jù) HASH 算法進(jìn)行計算,得出相應(yīng)的 HASH lb-key(load-balance key)。 ECMP 流量均衡支持的 HASH 算法包括異或(XOR)、CRC、 CRC+擾碼等。
HASH算法有很多種,我們以XOR算法為例做出說明。XOR運算法則為兩個輸入比特位相同時為0,不同則為1。HASH因子不同,運算結(jié)果也不盡相同。
1、 HASH因子為IP address source(SIP):
a) SIP XOR 0 ,得出一個32bit的數(shù)值a
b) 將數(shù)值a再進(jìn)行高16bit和低16bit做XOR計算得出16bit數(shù)值b
c) 數(shù)值b的15~12bit與11~8bit再做XOR計算,得出4bit數(shù)值c
d) 數(shù)值c替換數(shù)值b的11~8bit,得出數(shù)值d
e) 數(shù)值d截取低位10bit即為lb key
2、 HASH因子為SIP+DIP/DIP:
a) DIP XOR SIP ,得出一個32bit的數(shù)值a
b) 剩余運算步驟與SIP運算一致
3、 HASH因子為SIP+DIP+SP+DP:
a) SIP XOR DIP得到32bit的數(shù)值a
b) 數(shù)值a的低16bit XOR SP 得到32bit的數(shù)值b
c) 數(shù)值b的低 16bit XOR DP 得到 32bit 的數(shù)值c
d) 數(shù)值c的高16bit XOR 低16bit得到16bit的數(shù)值d
e) 數(shù)值d的15~12bit XOR 11~8bit,得到4bit的數(shù)值e
f) 數(shù)值e替換數(shù)值d的11~8bit,得出數(shù)值f
g) 數(shù)值f截取低10bit,即為lb-key
步驟三:確認(rèn)轉(zhuǎn)發(fā)下一跳
數(shù)據(jù)報文經(jīng)過路由查表后找到對應(yīng)ECMP 基值(base-ptr),根據(jù) HASH 因子通過 HASH 算法計算獲得 HASH lb-key 后,進(jìn)行 ECMP 下一跳鏈路數(shù)(Member-count)求余計算,再與ECMP基值進(jìn)行加法運算得出轉(zhuǎn)發(fā)下一跳index,即確定了下一跳轉(zhuǎn)發(fā)路由。
計算公式:Next-hop =(lb-key % Member-count)+ base-ptr
上述流程為ECMP常規(guī)轉(zhuǎn)發(fā)流程,但在特定網(wǎng)絡(luò)環(huán)境下運行過程中就會出現(xiàn)問題,接下來繼續(xù)分析數(shù)據(jù)中心網(wǎng)絡(luò)中ECMP遇到的2個常見問題。
問題一 單鏈路故障導(dǎo)致ECMP組所有數(shù)據(jù)流被重新HASH計算
當(dāng)Leaf交換機(jī)發(fā)送6條數(shù)據(jù)流到LVS服務(wù)器,Leaf先進(jìn)行HASH運算負(fù)載均衡到每一臺LVS服務(wù)器上,正常流量轉(zhuǎn)發(fā)如圖例2所示:
圖例2:ECMP轉(zhuǎn)發(fā)圖
當(dāng)某臺LVS服務(wù)器網(wǎng)卡出現(xiàn)故障或者鏈路出現(xiàn)故障,Leaf交換機(jī)會將ECMP組內(nèi)數(shù)據(jù)流將重新HASH計算,再進(jìn)行負(fù)載均衡到剩余有效鏈路上,進(jìn)而導(dǎo)致TCP會話斷開,發(fā)生雪崩現(xiàn)象,例如一些支付類業(yè)務(wù),同一個用戶的一次支付過程會調(diào)用多個業(yè)務(wù)服務(wù),業(yè)務(wù)側(cè)要求一次支付的過程都落在同一個處理服務(wù)器上,當(dāng)出現(xiàn)單條鏈路故障后不僅影響該鏈路所在LVS承載的用戶,同時還影響該ECMP組下其他LVS承載的用戶,如圖例3所示:
圖例3:故障后ECMP轉(zhuǎn)發(fā)圖
優(yōu)化方案:
為避免單臺LVS服務(wù)器故障或者單鏈路故障導(dǎo)致整個ECMP組內(nèi)流量全部被重新HASH,ECMP可采用彈性HASH算法來優(yōu)化。采用彈性HASH算法后,僅將故障鏈路的流量重新HASH到其他活躍鏈路上,而非故障鏈路上的數(shù)據(jù)流則無需改變下一跳。實現(xiàn)效果如圖例4所示:
圖例4:ECMP彈性HASH算法
彈性HASH具體實現(xiàn)原理:
圖例5:彈性HASH流程
在交換機(jī)上生成一張索引表(RH Flow Set Table),用于存放相關(guān)索引值對應(yīng)下一跳路由地址。數(shù)據(jù)報文經(jīng)過路由查表后找到對應(yīng)ECMP 基值,提取HASH因子進(jìn)行HASH運算,在HASH Key與ECMP數(shù)量取余數(shù)時無論是否出現(xiàn)故障鏈路,均以最初數(shù)量進(jìn)行取余運算,因此運算結(jié)果一致,非故障鏈路數(shù)據(jù)依然按照原有鏈路轉(zhuǎn)發(fā)。如下圖中,鏈路3故障后軟件CPU將及時更新RH flow table,將失效鏈路用正常鏈路均勻替換。
圖例6:彈性HASH索引表替換示意圖
問題二 HASH極化問題
如圖例7所示,在Leaf設(shè)備和Spine設(shè)備均采用上聯(lián)鏈路數(shù)為偶數(shù)且ECMP算法及HASH因子一致的情況下,數(shù)據(jù)流在Leaf設(shè)備上經(jīng)過一次HASH計算,將數(shù)據(jù)流負(fù)載分擔(dān)到兩臺Spine上,均衡后效果為數(shù)據(jù)流1、2、3轉(zhuǎn)發(fā)至Spine-1,數(shù)據(jù)流4、5、6轉(zhuǎn)發(fā)至Spine-2,Spine再進(jìn)行HASH計算負(fù)載分擔(dān)到兩臺DCI核心上,因在Spine層采用的HASH算法與Leaf的HASH算法一致,最終Spine-1的數(shù)據(jù)流1、2、3均轉(zhuǎn)發(fā)至DCI-1上,未負(fù)載分擔(dān)到DCI-2上任何數(shù)據(jù)流,而Spine-2的數(shù)據(jù)流4、5、6均轉(zhuǎn)發(fā)至DCI-2上,未負(fù)載分擔(dān)到DCI-1上任何數(shù)據(jù)流,同理Leaf-2發(fā)送的數(shù)據(jù)流也是如此,進(jìn)而產(chǎn)生HASH極化問題,導(dǎo)致SPINE和DCI之間鏈路有一條空閑,極大的浪費了網(wǎng)絡(luò)資源,甚至?xí)?dǎo)致流量擁塞。
圖例7:HASH極化
優(yōu)化方案:
同廠商Leaf設(shè)備和Spine設(shè)備均采用相同上聯(lián)鏈路數(shù)場景下,應(yīng)避免在相鄰的兩臺設(shè)備上使用相同的負(fù)載均衡算法;
設(shè)備在運行HASH計算時,除傳統(tǒng)的五元組外,可以增添擾動因子,避免HASH計算結(jié)果相同。
HASH擾動的計算過程中HASH因子仍然正常提取,再增加用戶自定義隨機(jī)擾動因子,經(jīng)過HASH算法運算時,不同交換機(jī)HASH計算結(jié)果就將不一致,以達(dá)到避免HASH極化現(xiàn)象的出現(xiàn)。
圖例8:HASH擾動計算過程
動態(tài)負(fù)載均衡技術(shù)實現(xiàn)
在數(shù)據(jù)中心網(wǎng)絡(luò)中,突發(fā)流量多,并且存在大象流和老鼠流并存現(xiàn)象,本文所描述的基于數(shù)據(jù)流五元組的HASH算法,并結(jié)合HASH擾動因子技術(shù)實現(xiàn)流量負(fù)載均衡,但無法實現(xiàn)大象流和老鼠流并存的網(wǎng)絡(luò)中多鏈路之間的流量負(fù)載均衡。
銳捷網(wǎng)絡(luò)新一代25G數(shù)據(jù)中心網(wǎng)絡(luò)解決方案中所采用的最新芯片,已能夠支持DLB(Dynamic load balance,動態(tài)鏈路負(fù)載)特性,可基于流量負(fù)載狀態(tài)實現(xiàn)動態(tài)的HASH負(fù)載均衡。具體實現(xiàn)方法是交換機(jī)為每條進(jìn)行負(fù)載均衡的數(shù)據(jù)流創(chuàng)建一個流表,基于流表記錄流量統(tǒng)計信息,根據(jù)流量統(tǒng)計信息動態(tài)調(diào)整鏈路負(fù)載均衡。
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
8204瀏覽量
93647 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
17文章
5593瀏覽量
74813
發(fā)布評論請先 登錄
無線Mesh網(wǎng)多路徑混合包的傳輸方法
多路徑DSR和AODV路由協(xié)議性能研究
Ad Hoc網(wǎng)絡(luò)多路徑需求路由及路徑熵選擇算法
一種累計多路徑的移動自組網(wǎng)絡(luò)路由策略
超寬帶粒子群多路徑選擇算法
基于網(wǎng)絡(luò)編碼的無線傳感網(wǎng)多路徑傳輸方法
基于覆蓋網(wǎng)絡(luò)的多路徑流量均衡研究
基于視覺導(dǎo)航AGV的多路徑快速檢測算法
多路徑纏繞模型及其容錯路由機(jī)制
數(shù)據(jù)中心網(wǎng)絡(luò)中的流量均衡
融合網(wǎng)絡(luò)的多路徑Bandit優(yōu)化算法
基于SDN的云計算數(shù)據(jù)中心網(wǎng)絡(luò)將是未來云數(shù)據(jù)中心網(wǎng)絡(luò)的發(fā)展趨勢
多路徑解決方案介紹及優(yōu)勢說明
多路徑和iSCSI SAN存儲技術(shù)介紹
數(shù)據(jù)中心網(wǎng)絡(luò)等價多路徑(ECMP)技術(shù)應(yīng)用研究
評論