本發(fā)明涉及芯片領(lǐng)域,尤其涉及一種基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)方法、裝置及設(shè)備。
背景技術(shù):
1、當(dāng)存在到達(dá)同一個(gè)目標(biāo)的多條通路,應(yīng)用ecmp(equal?cost?multiple?pathrouting,等價(jià)多通路路由)可實(shí)現(xiàn)網(wǎng)絡(luò)的帶寬增加、負(fù)載均衡、通路間的互相保護(hù)等功能。當(dāng)設(shè)備支持ecmp時(shí),發(fā)往目的設(shè)備的二層或者三層流量就可以通過(guò)不同的通路承載,實(shí)現(xiàn)網(wǎng)絡(luò)鏈路的負(fù)載均衡;并在成員鏈路出現(xiàn)故障時(shí),實(shí)現(xiàn)網(wǎng)絡(luò)的快速切換。
2、如圖1所示,承載在ecmp組上的流量,在這些等價(jià)鏈路上平均分配,不會(huì)考慮鏈路帶寬的差異。ecmp算法被多種路由協(xié)議支持,例如:ospf、isis、eigrp、bgp等。在數(shù)據(jù)中心的網(wǎng)絡(luò)架構(gòu)中,其承載的業(yè)務(wù)也廣泛使用ecmp作為負(fù)載均衡算法。
3、ecmp作為一種負(fù)載均衡策略,因其部署簡(jiǎn)單的優(yōu)點(diǎn),在實(shí)際數(shù)據(jù)中心網(wǎng)絡(luò)中獲得了廣泛應(yīng)用。ecmp一個(gè)重要的假設(shè)是——網(wǎng)絡(luò)拓?fù)淦胶?、?guī)則和無(wú)故障,這些假設(shè)在實(shí)踐中都是無(wú)效的,將會(huì)導(dǎo)致性能大幅下降。ecmp在非對(duì)稱網(wǎng)絡(luò)使用效果不好,會(huì)浪費(fèi)大帶寬通路的帶寬資源。針對(duì)上述問(wèn)題,在數(shù)據(jù)中心網(wǎng)絡(luò)中引入了wcmp技術(shù)。
4、wcmp(weight-cost?multi-path?routing,加權(quán)多通路路由),可以根據(jù)不斷變化的網(wǎng)絡(luò)拓?fù)淦胶饬髁浚軌蚍浅l`活地按照比例在鏈路上承載網(wǎng)絡(luò)業(yè)務(wù)。ecmp是wcmp的特例,每條轉(zhuǎn)發(fā)通路均按照1:1的比例傳輸業(yè)務(wù)。到達(dá)同一目的地有多條帶寬不同的等價(jià)通路,wcmp可將流量根據(jù)帶寬按比例分擔(dān)到各條通路上。
5、如圖2所示,采用wcmp技術(shù)以后,所有通路可根據(jù)帶寬比例分擔(dān)流量,以進(jìn)一步提高通路帶寬利用率。wcmp所需的狀態(tài),已作為標(biāo)準(zhǔn)路由協(xié)議的一部分進(jìn)行了支持。在wcmp實(shí)現(xiàn)中,無(wú)需對(duì)硬件進(jìn)行任何修改,即可在支持ecmp的交換芯片中實(shí)現(xiàn)wcmp。
6、當(dāng)?shù)葍r(jià)多通路中的一條鏈路故障時(shí),負(fù)載分擔(dān)默認(rèn)對(duì)所有流量重新hash計(jì)算選路。ecmp負(fù)載分擔(dān)一致性功能,實(shí)現(xiàn)了僅針對(duì)故障鏈路上的流量做hash計(jì)算,對(duì)正常鏈路上的流量轉(zhuǎn)發(fā)通路不產(chǎn)生影響。保證了在發(fā)生鏈路故障時(shí),正常鏈路上的業(yè)務(wù)會(huì)話保持正常。
7、如圖3所示,12個(gè)數(shù)據(jù)包分四條鏈路轉(zhuǎn)發(fā)時(shí),abcd四條鏈路初始分配的流量包如左側(cè)所示,各個(gè)鏈路均分流量。當(dāng)d鏈路故障發(fā)生后,ecmp的一致性功能啟用后,d鏈路流量均分到其余三條鏈路上,原來(lái)abc鏈路承載的流量保持穩(wěn)定。
8、網(wǎng)絡(luò)的高可靠性主要體現(xiàn)在,通信鏈路或者網(wǎng)絡(luò)設(shè)備發(fā)生故障后,網(wǎng)絡(luò)系統(tǒng)可以從故障中快速恢復(fù)。轉(zhuǎn)發(fā)芯片的常規(guī)實(shí)現(xiàn)中,等價(jià)多通路技術(shù)采用專門(mén)的ecmp組實(shí)現(xiàn)。在ecmp的某條成員通路發(fā)生故障后,需盡快將業(yè)務(wù)恢復(fù)。
9、一種傳統(tǒng)的ecmp切換方案為,檢測(cè)到故障鏈路后,將故障的鏈路從ecmp組中刪除,業(yè)務(wù)重新分擔(dān)到其他鏈路中。該方案無(wú)法實(shí)現(xiàn)快速的故障切換,且該方案將會(huì)破壞負(fù)載分擔(dān)的一致性,原來(lái)正常工作的流量將重新哈希到其他鏈路中。
10、另外一種傳統(tǒng)的ecmp切換方案為,檢測(cè)到鏈路故障后,在控制協(xié)議層面,選擇一個(gè)正常的鏈路承載該故障鏈路的業(yè)務(wù)。該方案需要由網(wǎng)絡(luò)系統(tǒng)的控制協(xié)議層面觸發(fā)故障恢復(fù),切換性能無(wú)法得到有效保證。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)上述問(wèn)題,本發(fā)明實(shí)施例的目的在于提供一種基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)方法、裝置及設(shè)備,以改善上述問(wèn)題。
2、本發(fā)明實(shí)施例提供了一種基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)方法,其包括:
3、接收待轉(zhuǎn)發(fā)的報(bào)文,并根據(jù)所述報(bào)文的hash_key,由主用哈希引擎計(jì)算得到第一哈希值后,通過(guò)ecmp組對(duì)應(yīng)的主用通路選擇模塊對(duì)第一哈希值進(jìn)行運(yùn)算,以從全通路成員列表中得到該報(bào)文的第一轉(zhuǎn)發(fā)通路;
4、判斷所述第一轉(zhuǎn)發(fā)通路是否發(fā)生故障;
5、若發(fā)生故障,則使用備用哈希引擎對(duì)所述hash_key進(jìn)行計(jì)算得到第二哈希值,采用備用通路選擇模塊對(duì)第二哈希值進(jìn)行運(yùn)算,以從有效通路成員列表中得到該報(bào)文的第二轉(zhuǎn)發(fā)通路;
6、根據(jù)所述第二轉(zhuǎn)發(fā)通路對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
7、優(yōu)選地,在全通路成員列表中,每個(gè)通路成員的path表項(xiàng)中具有一個(gè)與通路關(guān)聯(lián)的通路id,在轉(zhuǎn)發(fā)芯片在檢測(cè)到通路故障后,使用通路故障聯(lián)動(dòng)機(jī)制,設(shè)置所有與該通路關(guān)聯(lián)的path表項(xiàng)的select開(kāi)關(guān),以指示該通路成員發(fā)生故障。
8、優(yōu)選地,所述備用通路選擇模塊使用的有效通路成員列表與主用通路選擇模塊使用的全通路成員列表相同,只是僅select開(kāi)關(guān)未置位的path參與通路選擇;或者是將select開(kāi)關(guān)置位的path表項(xiàng)移出,將select開(kāi)關(guān)未置位的path表項(xiàng)加入來(lái)獲得有效通路成員列表。
9、優(yōu)選地,在全通路成員列表中,通過(guò)在通路成員的path表項(xiàng)的nexthop表項(xiàng)索引中增加通路id,在轉(zhuǎn)發(fā)通路故障后,使用通路故障聯(lián)動(dòng)機(jī)制,通過(guò)該通路關(guān)聯(lián)的nexthop表項(xiàng),設(shè)置所有與該nexthop表項(xiàng)關(guān)聯(lián)的path表項(xiàng)的select開(kāi)關(guān),以指示該通路成員發(fā)生故障。
10、優(yōu)選地,select開(kāi)關(guān)的設(shè)置和清除,均由通路故障聯(lián)動(dòng)機(jī)制控制,在通路故障后,設(shè)置關(guān)聯(lián)的select開(kāi)關(guān);在通路故障恢復(fù)后,清除設(shè)置的select開(kāi)關(guān)。
11、優(yōu)選地,還包括:
12、通過(guò)增加一個(gè)軟件override的有效位標(biāo)記來(lái)控制對(duì)select開(kāi)關(guān)的操作;其中,override能夠禁止通路故障聯(lián)動(dòng)機(jī)制對(duì)select開(kāi)關(guān)的操作,第一級(jí)別是全部關(guān)閉通路故障聯(lián)動(dòng)機(jī)制,select開(kāi)關(guān)的設(shè)置和恢復(fù)均由軟件控制;第二級(jí)別是關(guān)閉通路故障聯(lián)動(dòng)機(jī)制對(duì)select開(kāi)關(guān)的恢復(fù),select開(kāi)關(guān)的設(shè)置由通路故障聯(lián)動(dòng)機(jī)制在檢測(cè)到故障后設(shè)置,以快速恢復(fù)故障業(yè)務(wù),select開(kāi)關(guān)的恢復(fù)由軟件在檢測(cè)到通路切實(shí)恢復(fù)后進(jìn)行設(shè)置;第三級(jí)別是使能通路故障聯(lián)動(dòng)機(jī)制對(duì)select開(kāi)關(guān)的設(shè)置和恢復(fù)的全部功能,以減少與軟件的交互,在通路故障后快速切換,在通路恢復(fù)后迅速恢復(fù)。
13、優(yōu)選地,主用哈希引擎和備用哈希引擎采用不同的哈希算法和參數(shù),并采用并行方案實(shí)現(xiàn)。
14、優(yōu)選地,還包括:若未發(fā)生故障,則根據(jù)所述第一轉(zhuǎn)發(fā)通路對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
15、本發(fā)明實(shí)施例還提供了一種基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)裝置,其包括:
16、主用通路選擇單元,用于接收待轉(zhuǎn)發(fā)的報(bào)文,并根據(jù)所述報(bào)文的hash_key,由主用哈希引擎計(jì)算得到第一哈希值后,通過(guò)ecmp組對(duì)應(yīng)的主用通路選擇模塊對(duì)第一哈希值進(jìn)行運(yùn)算,以從全通路成員列表中得到該報(bào)文的第一轉(zhuǎn)發(fā)通路;
17、故障判斷單元,用于判斷所述第一轉(zhuǎn)發(fā)通路是否發(fā)生故障;
18、備用通路選擇單元,用于若發(fā)生故障,則使用備用哈希引擎對(duì)所述hash_key進(jìn)行計(jì)算得到第二哈希值,采用備用通路選擇模塊對(duì)第二哈希值進(jìn)行運(yùn)算,以從有效通路成員列表中得到該報(bào)文的第二轉(zhuǎn)發(fā)通路;
19、轉(zhuǎn)發(fā)單元,用于根據(jù)所述第二轉(zhuǎn)發(fā)通路對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
20、本發(fā)明實(shí)施例還提供了一種基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)設(shè)備,其包括存儲(chǔ)器以及處理器,所述存儲(chǔ)器內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序能夠被所述處理器執(zhí)行,以實(shí)現(xiàn)如上述的基于雙哈希引擎的ecmp快速切換實(shí)現(xiàn)方法。
21、綜上所述,本發(fā)明通過(guò)引入備用哈希引擎和備用選路機(jī)制,在ecmp的成員路徑故障后,故障路徑原來(lái)承載的業(yè)務(wù),使用備用哈希引擎的哈希值和備用哈希選路機(jī)制,在新的可用路徑中重新進(jìn)行負(fù)載分擔(dān)承載,如此在保證ecmp成員一致性承載和保護(hù)切換效率的基礎(chǔ)上,可將故障鏈路的業(yè)務(wù)在其他可用鏈路中負(fù)載分擔(dān)承載。