本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種報文轉(zhuǎn)發(fā)方法及裝置。
背景技術(shù):
多租戶的overlay網(wǎng)絡(luò)中存在大量與underlay網(wǎng)絡(luò)的通信,均依賴overlay與underlay之間的路由網(wǎng)關(guān),在處理狀態(tài)業(yè)務(wù)時,路由網(wǎng)關(guān)需要部署主設(shè)備和從設(shè)備,以提高可靠性,在需要擴展處理能力時,需要增加路由網(wǎng)關(guān),以提高擴展性。在現(xiàn)有技術(shù)方案中,路由器可以與下一跳集群中的多個路由網(wǎng)關(guān)連接,但是,對于去往同一個目標路由(網(wǎng)絡(luò)地址和掩碼均相同)的報文,只能將報文轉(zhuǎn)發(fā)到下一跳集群中同一路由網(wǎng)關(guān),其它路由網(wǎng)關(guān)處于備份狀態(tài)或無效狀態(tài),并且不支持擴容和容災(zāi),導致流量負載不均衡以及網(wǎng)絡(luò)吞吐量低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種報文轉(zhuǎn)發(fā)方法及裝置??梢越鉀Q現(xiàn)有技術(shù)方案中流量負載不均衡以及網(wǎng)絡(luò)吞吐量低的問題。
本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)方法,包括:
獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種;
根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;
從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
其中,所述根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值包括:
根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值;
根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。
其中,所述根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值包括:
將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。
其中,所述選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,所述N為大于等于1的正整數(shù);
所述使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)包括:
獲取所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值;
根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,將所述多個數(shù)據(jù)包分配到所述N條路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
其中,所述選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,所述N為大于等于1的正整數(shù);
所述使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)包括:
記錄轉(zhuǎn)發(fā)所述多個數(shù)據(jù)包中的第一個數(shù)據(jù)包所使用的所述N條路由網(wǎng)關(guān)中的目標路由網(wǎng)關(guān);
將所述多個數(shù)據(jù)包中的其他數(shù)據(jù)包全部分配到所述目標路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
相應(yīng)地,本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)裝置,包括:
信息獲取模塊,用于獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種;
信息計算模塊,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;
報文轉(zhuǎn)發(fā)模塊,用于從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
其中,所述信息計算模塊包括:
哈希值計算單元,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值;
關(guān)鍵值計算單元,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。
其中,所述關(guān)鍵值計算單元具體用于:
將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。
其中,所述選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,所述N為大于等于1的正整數(shù);
所述報文轉(zhuǎn)發(fā)模塊,還用于獲取所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值;根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,將所述多個數(shù)據(jù)包分配到所述N條路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
其中,所述選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,所述N為大于等于1的正整數(shù);
所述報文轉(zhuǎn)發(fā)模塊,還用于記錄轉(zhuǎn)發(fā)所述多個數(shù)據(jù)包中的第一個數(shù)據(jù)包所使用的所述N條路由網(wǎng)關(guān)中的目標路由網(wǎng)關(guān);將所述多個數(shù)據(jù)包中的其他數(shù)據(jù)包全部分配到所述目標路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
相應(yīng)地,本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)裝置,所述裝置包括接口電路、存儲器以及處理器,其中,存儲器中存儲一組程序代碼,且處理器用于調(diào)用存儲器中存儲的程序代碼,用于執(zhí)行以下操作:
獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種;
根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;
從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
實施本發(fā)明實施例,首先獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù);然后根據(jù)待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;最后從可用的路由條數(shù)的路由網(wǎng)關(guān)中選擇與網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的路由網(wǎng)關(guān)對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),由于每個待轉(zhuǎn)發(fā)報文的特征屬性不同,進而可以計算得到不同的網(wǎng)關(guān)關(guān)鍵值,并選擇不同的路由網(wǎng)關(guān),將流量負載均衡到下一跳集群中的多個路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理,從而實現(xiàn)流量均衡負載,提高網(wǎng)絡(luò)的吞吐量。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的的一種VPC網(wǎng)路的架構(gòu)示意圖;
圖2是本發(fā)明第一實施例提供的一種報文轉(zhuǎn)發(fā)方法的流程圖;
圖3是本發(fā)明實施例提供的的另一種VPC網(wǎng)路的架構(gòu)示意圖;
圖4是本發(fā)明第二實施例提供的一種報文轉(zhuǎn)發(fā)方法的流程圖;
圖5是本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的裝置中信息計算模塊的結(jié)構(gòu)示意圖;
圖7是本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)裝置的架構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,圖1是發(fā)明實施例提供的一種VPC(Virtual Private Cloud,虛擬私云)網(wǎng)絡(luò)的架構(gòu)示意圖,該系統(tǒng)包括控制設(shè)備Controller、代理模塊Agent,虛擬機VM、路由器以及下一跳集群(包括網(wǎng)關(guān)A、網(wǎng)關(guān)B,……,網(wǎng)關(guān)N等等),控制設(shè)備Controller負責路由的切換、分配、管理以及調(diào)整等等,代理模塊Agent負責接收Controller下發(fā)的路由信息,并根據(jù)路由信息將報文轉(zhuǎn)發(fā)到處理模塊進行全網(wǎng)部署。例如,主機Host可以接收源設(shè)備發(fā)送的報文,控制設(shè)備Controller根據(jù)路由信息從下一跳集群中選擇一個網(wǎng)關(guān),并通過選擇的網(wǎng)關(guān)將該報文轉(zhuǎn)發(fā)到目的設(shè)備,從而實現(xiàn)報文轉(zhuǎn)發(fā)的目的?;诖薞PC網(wǎng)絡(luò),本發(fā)明實施例提出了一種報文轉(zhuǎn)發(fā)方法,本發(fā)明實施例的具體步驟如下所示。
請參考圖2,圖2是本發(fā)明第一實施例提供的一種報文轉(zhuǎn)發(fā)方法的流程圖。本發(fā)明實施例的主體可以VPC網(wǎng)絡(luò)中的控制器Controller,本發(fā)明實施例提供一種ECMP(Equal Cost Multi path Routing,等價多路徑)的路由方法,如圖所示,本發(fā)明實施例中的方法包括:
S101,獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種。
具體實現(xiàn)中,如圖1所示,主機Host接收源設(shè)備的發(fā)送的報文,該報文攜帶有源設(shè)備的源地址和源端口號、目的設(shè)備的目的地址和目的端口號和使用協(xié)議(如TCP、UDP)的協(xié)議號,可以根據(jù)不同的應(yīng)用場景選取待轉(zhuǎn)發(fā)報文的特征屬性,例如:特征屬性可以包括五元組(源地址、源端口號、目的地址、目的端口號、協(xié)議號),三元組(源地址、目的地址、協(xié)議號),一元組(源地址)等等,并且,可以統(tǒng)計下一跳集群中的路由網(wǎng)關(guān)的路由條數(shù),如圖1所示,可以統(tǒng)計網(wǎng)關(guān)A、路由B,……,路由N的全部網(wǎng)關(guān)的路由條數(shù)。
S102,根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值。
具體實現(xiàn)中,可以根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值;根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。進一步的,可以將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。其中,哈希值為根據(jù)特征屬性輸出的一個固定長度的數(shù)值,哈希值可以包括信息摘要MD2值、信息摘要MD4值或者信息摘要MD5值等等。
需要說明的是,由于待轉(zhuǎn)發(fā)報文來自不同的源設(shè)備或者發(fā)往不同的地址設(shè)備,所以根據(jù)特征屬性計算得到的哈希值也不同,進而將哈希值除以路由條數(shù)可以得到不同的余數(shù),因而最終得到不同的網(wǎng)關(guān)關(guān)鍵值。
S103,從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。其中,選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,所述N為大于等于1的正整數(shù)。
具體實現(xiàn)中,主機Host可以根據(jù)預(yù)先建立的路由映射表,選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),其中,路由映射表包括路由關(guān)鍵值與網(wǎng)關(guān)標識的對應(yīng)關(guān)系,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
例如,VPC網(wǎng)絡(luò)包括5個路由網(wǎng)關(guān),包括網(wǎng)關(guān)A,網(wǎng)關(guān)B、網(wǎng)關(guān)C、網(wǎng)關(guān)D以及網(wǎng)關(guān)E,路由映射表可以包括1對應(yīng)網(wǎng)關(guān)A、2對應(yīng)網(wǎng)關(guān)B、3對應(yīng)網(wǎng)關(guān)C、4對應(yīng)網(wǎng)關(guān)D、0對應(yīng)網(wǎng)關(guān)E,如果計算得到的哈希值為6,將將哈希值6除以路由條數(shù)5得到余數(shù)為1,則可以選擇網(wǎng)關(guān)A對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),如果計算得到的哈希值為5,將哈希值5除以路由條數(shù)5得到余數(shù)為0,則選擇網(wǎng)關(guān)E對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
可選的,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān)以及與該路由網(wǎng)關(guān)鄰近的多條路由網(wǎng)關(guān),最后使用該查找到的路由網(wǎng)關(guān)以及鄰近的多條路由網(wǎng)關(guān)共同轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文。
進一步可選的,在選擇出N個路由網(wǎng)關(guān)之后,可以記錄轉(zhuǎn)發(fā)所述多個數(shù)據(jù)包中的第一個數(shù)據(jù)包所使用的所述N條路由網(wǎng)關(guān)中的目標路由網(wǎng)關(guān);將所述多個數(shù)據(jù)包中的其他數(shù)據(jù)包全部分配到所述目標路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā),從而在處理狀態(tài)業(yè)務(wù)時可以將同一會話的所有流量全部分配給同一路由網(wǎng)關(guān)。
需要說明的是,由于根據(jù)不同的特征屬性可以計算得到不同的哈希值,待轉(zhuǎn)發(fā)報文的個數(shù)越多,計算得到各種余數(shù)的個數(shù)趨于相同,進而每個路由網(wǎng)關(guān)被選擇轉(zhuǎn)發(fā)報文的次數(shù)也趨于相同,因此可以將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理。
本發(fā)明實施例還可以在下一跳集群的基礎(chǔ)上增加路由網(wǎng)關(guān)。例如,如圖3所示,在下一跳集群中增加路由網(wǎng)關(guān)X和路由網(wǎng)關(guān)Y,因此轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù)增加2,如果計算得到的網(wǎng)關(guān)關(guān)鍵值與路由Y對應(yīng),則可以選擇路由網(wǎng)關(guān)Y對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),從而不僅達到了擴容的目的,而且可以減少路由網(wǎng)關(guān)A、路由網(wǎng)關(guān)B,……,路由網(wǎng)關(guān)N的負載。
在本發(fā)明實施例中,首先獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù);然后根據(jù)待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;最后從可用的路由條數(shù)的路由網(wǎng)關(guān)中選擇與網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的路由網(wǎng)關(guān)對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),由于每個待轉(zhuǎn)發(fā)報文的特征屬性不同,進而可以計算得到不同的網(wǎng)關(guān)關(guān)鍵值,并選擇不同的路由網(wǎng)關(guān),將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理,從而實現(xiàn)流量均衡負載,提高網(wǎng)絡(luò)的吞吐量。
請參考圖4,圖4是本發(fā)明第二實施例提供的一種報文轉(zhuǎn)發(fā)方法的流程圖。本發(fā)明實施例的主體可以VPC網(wǎng)絡(luò)中的控制器Controller,本發(fā)明實施例提供一種ECMP(Equal Cost Multi path Routing,等價多路徑)的路由方法。如圖所示,本發(fā)明實施例中的方法包括:
S401,獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種。
具體實現(xiàn)中,如圖1所示,主機Host接收源設(shè)備的發(fā)送的報文,該報文攜帶有源設(shè)備的源地址和源端口號、目的設(shè)備的目的地址和目的端口號和使用協(xié)議(如TCP、UDP)的協(xié)議號,可以根據(jù)不同的應(yīng)用場景選取待轉(zhuǎn)發(fā)報文的特征屬性,例如:特征屬性可以包括五元組(源地址、源端口號、目的地址、目的端口號、協(xié)議號),三元組(源地址、目的地址、協(xié)議號),一元組(源地址)等等。并且,可以統(tǒng)計下一跳集群中的路由網(wǎng)關(guān)的路由條數(shù),如圖1所示,可以統(tǒng)計網(wǎng)關(guān)A、路由B,……,路由N的全部網(wǎng)關(guān)的路由條數(shù)。
S402,根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值。
具體實現(xiàn)中,可以根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值;根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。進一步的,可以將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。其中,哈希值為根據(jù)特征屬性輸出的一個固定長度的數(shù)值,哈希值可以包括信息摘要MD2值、信息摘要MD4值或者信息摘要MD5值等等。
需要說明的是,由于待轉(zhuǎn)發(fā)報文來自不同的源設(shè)備或者發(fā)往不同的地址設(shè)備,所以根據(jù)特征屬性計算得到的哈希值也不同,進而將哈希值除以路由條數(shù)可以得到不同的余數(shù),因而最終得到不同的網(wǎng)關(guān)關(guān)鍵值。
S403,從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān)。其中,選擇的所述路由網(wǎng)關(guān)包括N條路由網(wǎng)關(guān),所述待轉(zhuǎn)發(fā)報文包括多個數(shù)據(jù)包,N為大于等于1的正整數(shù)。
具體實現(xiàn)中,主機Host可以根據(jù)預(yù)先建立的路由映射表,選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),其中,路由映射表包括路由關(guān)鍵值與網(wǎng)關(guān)標識的對應(yīng)關(guān)系,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
例如,VPC網(wǎng)絡(luò)包括5個路由網(wǎng)關(guān),包括網(wǎng)關(guān)A,網(wǎng)關(guān)B、網(wǎng)關(guān)C、網(wǎng)關(guān)D以及網(wǎng)關(guān)E,路由映射表可以包括1對應(yīng)網(wǎng)關(guān)A、2對應(yīng)網(wǎng)關(guān)B、3對應(yīng)網(wǎng)關(guān)C、4對應(yīng)網(wǎng)關(guān)D、0對應(yīng)網(wǎng)關(guān)E,如果計算得到的哈希值為6,將將哈希值6除以路由條數(shù)5得到余數(shù)為1,則可以選擇網(wǎng)關(guān)A對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),如果計算得到的哈希值為5,將哈希值5除以路由條數(shù)5得到余數(shù)為0,則選擇網(wǎng)關(guān)E對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
可選的,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān)以及與該路由網(wǎng)關(guān)鄰近的多條路由網(wǎng)關(guān),最后使用該查找到的路由網(wǎng)關(guān)以及鄰近的多條路由網(wǎng)關(guān)共同轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文。
需要說明的是,由于根據(jù)不同的特征屬性可以計算得到不同的哈希值,待轉(zhuǎn)發(fā)報文的個數(shù)越多,計算得到各種余數(shù)的個數(shù)趨于相同,進而每個路由網(wǎng)關(guān)被選擇轉(zhuǎn)發(fā)報文的次數(shù)也趨于相同,因此可以將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理。
S404,獲取所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值。
具體實現(xiàn)中,可以預(yù)先根據(jù)下一跳集群中每個路由網(wǎng)關(guān)的承載能力,對下一條集群中的每個路由網(wǎng)關(guān)的權(quán)重值進行配置,進而獲取預(yù)先配置的每條路由網(wǎng)關(guān)的權(quán)重值。
S405,根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,將所述多個數(shù)據(jù)包分配到所述N條路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
具體實現(xiàn)中,可以根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,計算所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)之間的權(quán)重比值,然后根據(jù)該權(quán)重比值,分配承載多個數(shù)據(jù)包的數(shù)量,因此,權(quán)重值大的路由網(wǎng)關(guān)承載轉(zhuǎn)發(fā)的數(shù)據(jù)包越多,權(quán)重小的路由網(wǎng)關(guān)承載轉(zhuǎn)發(fā)的數(shù)據(jù)包越少。
需要說明的是,可以在所有使用該路由方法的相關(guān)主機上,在報文轉(zhuǎn)發(fā)過程中分布式執(zhí)行上述流量均衡負載的方法,從而使得整個路由系統(tǒng)全局達到負載均衡的效果。
需要說明的是,由于根據(jù)不同的特征屬性可以計算得到不同的哈希值,待轉(zhuǎn)發(fā)報文的個數(shù)越多,計算得到各種余數(shù)的個數(shù)趨于相同,進而每個路由網(wǎng)關(guān)被選擇轉(zhuǎn)發(fā)報文的次數(shù)也趨于相同,因此可以將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理。
在本發(fā)明實施例中,首先獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù);然后根據(jù)待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;最后從可用的路由條數(shù)的路由網(wǎng)關(guān)中選擇與網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的路由網(wǎng)關(guān)對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),由于每個待轉(zhuǎn)發(fā)報文的特征屬性不同,進而可以計算得到不同的網(wǎng)關(guān)關(guān)鍵值,并選擇不同的路由網(wǎng)關(guān),將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理,從而實現(xiàn)流量均衡負載,提高網(wǎng)絡(luò)的吞吐量。
請參考圖5,圖5是本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置的結(jié)構(gòu)示意圖。如圖所示,本發(fā)明實施例中的裝置包括:
信息獲取模塊501,用于獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種。
具體實現(xiàn)中,如圖1所示,主機Host接收源設(shè)備的發(fā)送的報文,該報文攜帶有源設(shè)備的源地址和源端口號、目的設(shè)備的目的地址和目的端口號和使用協(xié)議(如TCP、UDP)的協(xié)議號,可以根據(jù)不同的應(yīng)用場景選取待轉(zhuǎn)發(fā)報文的特征屬性,例如:特征屬性可以包括五元組(源地址、源端口號、目的地址、目的端口號、協(xié)議號),三元組(源地址、目的地址、協(xié)議號),一元組(源地址)等等。并且,可以統(tǒng)計下一跳集群中的路由網(wǎng)關(guān)的路由條數(shù),如圖1所示,可以統(tǒng)計網(wǎng)關(guān)A、路由B,……,路由N的全部網(wǎng)關(guān)的路由條數(shù)。
信息計算模塊502,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值。
具體實現(xiàn)中,如圖6所示,信息計算模塊502可以進一步包括:
哈希值計算單元601,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值。
關(guān)鍵值計算單元602,用于根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。
具體實現(xiàn)中,可以將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。其中,哈希值為根據(jù)特征屬性輸出的一個固定長度的數(shù)值,哈希值可以包括信息摘要MD2值、信息摘要MD4值或者信息摘要MD5值等等。
需要說明的是,由于待轉(zhuǎn)發(fā)報文來自不同的源設(shè)備或者發(fā)往不同的地址設(shè)備,所以根據(jù)特征屬性計算得到的哈希值也不同,進而將哈希值除以路由條數(shù)可以得到不同的余數(shù),因而最終得到不同的網(wǎng)關(guān)關(guān)鍵值。
報文轉(zhuǎn)發(fā)模塊503,用于從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
具體實現(xiàn)中,主機Host可以根據(jù)預(yù)先建立的路由映射表,選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),其中,路由映射表包括路由關(guān)鍵值與網(wǎng)關(guān)標識的對應(yīng)關(guān)系,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
例如,VPC網(wǎng)絡(luò)包括5個路由網(wǎng)關(guān),包括網(wǎng)關(guān)A,網(wǎng)關(guān)B、網(wǎng)關(guān)C、網(wǎng)關(guān)D以及網(wǎng)關(guān)E,路由映射表可以包括1對應(yīng)網(wǎng)關(guān)A、2對應(yīng)網(wǎng)關(guān)B、3對應(yīng)網(wǎng)關(guān)C、4對應(yīng)網(wǎng)關(guān)D、0對應(yīng)網(wǎng)關(guān)E,如果計算得到的哈希值為6,將將哈希值6除以路由條數(shù)5得到余數(shù)為1,則可以選擇網(wǎng)關(guān)A對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),如果計算得到的哈希值為5,將哈希值5除以路由條數(shù)5得到余數(shù)為0,則選擇網(wǎng)關(guān)E對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
可選的,在計算得到網(wǎng)關(guān)關(guān)鍵值之后,可以從路由映射表查找與計算得到的網(wǎng)關(guān)關(guān)鍵值對應(yīng)網(wǎng)關(guān)標識,然后選擇查找到的網(wǎng)關(guān)標識對應(yīng)的路由網(wǎng)關(guān)以及與該路由網(wǎng)關(guān)鄰近的多條路由網(wǎng)關(guān),最后使用該查找到的路由網(wǎng)關(guān)以及鄰近的多條路由網(wǎng)關(guān)共同轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文。
進一步可選的,在選擇出N個路由網(wǎng)關(guān)之后,可以記錄轉(zhuǎn)發(fā)所述多個數(shù)據(jù)包中的第一個數(shù)據(jù)包所使用的所述N條路由網(wǎng)關(guān)中的目標路由網(wǎng)關(guān);將所述多個數(shù)據(jù)包中的其他數(shù)據(jù)包全部分配到所述目標路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā),從而在處理狀態(tài)業(yè)務(wù)時可以將同一會話的所有流量全部分配給同一路由網(wǎng)關(guān)。
可選的,可以獲取所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,將所述多個數(shù)據(jù)包分配到所述N條路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
具體實現(xiàn)中,可以預(yù)先根據(jù)下一跳集群中每個路由網(wǎng)關(guān)的承載能力,對下一條集群中的每個路由網(wǎng)關(guān)的權(quán)重值進行配置,進而獲取預(yù)先配置的每條路由網(wǎng)關(guān)的權(quán)重值,然后根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,計算所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)之間的權(quán)重比值,然后根據(jù)該權(quán)重比值,分配承載多個數(shù)據(jù)包的數(shù)量,因此,權(quán)重值大的路由網(wǎng)關(guān)承載轉(zhuǎn)發(fā)的數(shù)據(jù)包越多,權(quán)重小的路由網(wǎng)關(guān)承載轉(zhuǎn)發(fā)的數(shù)據(jù)包越少。
需要說明的是,由于根據(jù)不同的特征屬性可以計算得到不同的哈希值,待轉(zhuǎn)發(fā)報文的個數(shù)越多,計算得到各種余數(shù)的個數(shù)趨于相同,進而每個路由網(wǎng)關(guān)被選擇轉(zhuǎn)發(fā)報文的次數(shù)也趨于相同,因此可以將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理。
在本發(fā)明實施例中,首先獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù);然后根據(jù)待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;最后從可用的路由條數(shù)的路由網(wǎng)關(guān)中選擇與網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的路由網(wǎng)關(guān)對待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā),由于每個待轉(zhuǎn)發(fā)報文的特征屬性不同,進而可以計算得到不同的網(wǎng)關(guān)關(guān)鍵值,并選擇不同的路由網(wǎng)關(guān),將流量負載均衡到多個下一跳集群中的路由網(wǎng)關(guān),每個路由網(wǎng)關(guān)承擔一部分流量的處理,從而實現(xiàn)流量均衡負載,提高網(wǎng)絡(luò)的吞吐量。
請參考圖7,圖7是本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置的架構(gòu)示意圖。如圖所示,該裝置可以包括:至少一個處理器701,例如CPU,至少一個接口電路702,至少一個存儲器703,至少一個總線704。其中,通信總線704用于實現(xiàn)這些組件之間的連接通信。其中,本發(fā)明實施例中的接口電路702可以是有線發(fā)送端口,也可以為無線設(shè)備,例如包括天線裝置,用于與其他節(jié)點設(shè)備進行信令或數(shù)據(jù)的通信。存儲器703可以是高速RAM存儲器,也可以是非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器703可選的還可以是至少一個位于遠離前述處理器701的存儲裝置。存儲器703中存儲一組程序代碼,且處理器701用于調(diào)用存儲器中存儲的程序代碼,用于執(zhí)行以下操作:
獲取待轉(zhuǎn)發(fā)報文的特征屬性以及轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),所述特征屬性包括源地址、目的地址、協(xié)議號、源端口號以及目的端口號中的至少一種;
根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算網(wǎng)關(guān)關(guān)鍵值;
從可用的所述路由條數(shù)的路由網(wǎng)關(guān)中選擇與所述網(wǎng)關(guān)關(guān)鍵值對應(yīng)的路由網(wǎng)關(guān),并使用選擇的所述路由網(wǎng)關(guān)對所述待轉(zhuǎn)發(fā)報文進行轉(zhuǎn)發(fā)。
其中,處理器701用于執(zhí)行如下操作步驟:
根據(jù)所述待轉(zhuǎn)發(fā)報文的特征屬性,計算所述待轉(zhuǎn)發(fā)報文的哈希值;
根據(jù)所述待轉(zhuǎn)發(fā)報文的哈希值以及所述轉(zhuǎn)發(fā)所述待轉(zhuǎn)發(fā)報文的路由條數(shù),計算所述網(wǎng)關(guān)關(guān)鍵值。
其中,處理器701用于執(zhí)行如下操作步驟:
將所述待轉(zhuǎn)發(fā)報文的哈希值除以所述路由條數(shù)取余數(shù),并將所述余數(shù)作為所述網(wǎng)關(guān)關(guān)鍵值。
其中,處理器701用于執(zhí)行如下操作步驟:
獲取所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值;
根據(jù)所述N條路由網(wǎng)關(guān)中每條路由網(wǎng)關(guān)的權(quán)重值,將所述多個數(shù)據(jù)包分配到所述N條路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
其中,處理器701用于執(zhí)行如下操作步驟:
記錄轉(zhuǎn)發(fā)所述多個數(shù)據(jù)包中的第一個數(shù)據(jù)包所使用的所述N條路由網(wǎng)關(guān)中的目標路由網(wǎng)關(guān);
將所述多個數(shù)據(jù)包中的其他數(shù)據(jù)包全部分配到所述目標路由網(wǎng)關(guān)進行轉(zhuǎn)發(fā)。
需要說明的是,對于前述的各個方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某一些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳細描述的部分,可以參見其他實施例的相關(guān)描述。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(英文:Read-Only Memory,簡稱:ROM)、隨機存取器(英文:Random Access Memory,簡稱:RAM)、磁盤或光盤等。
以上對本發(fā)明實施例所提供的內(nèi)容下載方法及相關(guān)設(shè)備、系統(tǒng)進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。