一種報文轉(zhuǎn)發(fā)方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種報文轉(zhuǎn)發(fā)方法及裝置,通過本發(fā)明能夠在某條等價路由的鏈路故障時,保持正常的等價路由的出端口不變,并使用正常狀態(tài)的出端口替換故障的出端口。在等價路由對應(yīng)的鏈路恢復(fù)時,同樣保持原正常鏈路上的出端口不變,將恢復(fù)鏈路與出端口的對應(yīng)關(guān)系恢復(fù)到原始狀態(tài)。從而避免重新計算出端口導(dǎo)致正常等價路由上的流量瞬間斷流,并且能夠?qū)⒘髁炕謴?fù)到原始轉(zhuǎn)發(fā)路徑。
【專利說明】一種報文轉(zhuǎn)發(fā)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種報文轉(zhuǎn)發(fā)方法及裝置。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時代的到來,用戶對數(shù)據(jù)的穩(wěn)定性要求也越來越高。為了避免因為鏈路中斷給客戶的業(yè)務(wù)帶來中斷并產(chǎn)生不良的影響,等價多路徑(Equal Cost Multipath,ECMP)路由技術(shù)應(yīng)運而生。
[0003]多條去往同一目的地址且路徑開銷相同的路徑構(gòu)成等價路徑,每一條等價路徑對應(yīng)的下一跳,報文轉(zhuǎn)發(fā)設(shè)備在轉(zhuǎn)發(fā)去往該目的地址的報文時,會在各條下一跳路徑間實現(xiàn)負(fù)載分擔(dān)。通過特定的ECMP算法,根據(jù)流量的特定參數(shù)平均分配到不同的出端口。這種情況下,一條等價路徑的鏈路中斷后,流量可以馬上通過其他的等價路徑轉(zhuǎn)發(fā),使鏈路中斷的影響到最小。
[0004]現(xiàn)有的ECMP實現(xiàn)中,如果其中一條或者多條等價路徑故障(包括端口故障、鏈路中斷、中間節(jié)點故障等情況),所有業(yè)務(wù)流量會在剩余的可用路徑間重新進行出端口分配,實現(xiàn)新的負(fù)載均衡。雖然有些流量所走的路徑?jīng)]有故障,但因為ECMP算法的重新計算,使得該流量更換了出端口,對于等價路由的目的端設(shè)備來說,就會產(chǎn)生瞬時的斷流甚至是丟包,從而影響下游業(yè)務(wù)的穩(wěn)定性和持續(xù)性。
【發(fā)明內(nèi)容】
[0005]本申請?zhí)峁┝艘环N基于IRF系統(tǒng)的組播處理方法及裝置,用于解決ECMP實現(xiàn)中,等價路由端口故障和恢復(fù)時,端口重新分配,影響流量的穩(wěn)定性和持續(xù)性的技術(shù)問題。
[0006]為實現(xiàn)本發(fā)明目的,根據(jù)本發(fā)明的實施例的提出如下技術(shù)方案:
[0007]—種報文轉(zhuǎn)發(fā)方法,應(yīng)用于報文轉(zhuǎn)發(fā)設(shè)備上,所述方法包括:
[0008]在通過等價路由轉(zhuǎn)發(fā)報文時,基于報文屬性計算哈希值,通過哈希映射表確定哈希值對應(yīng)的出端口,通過確定的出端口轉(zhuǎn)發(fā)該報文,所述哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系;
[0009]當(dāng)某條等價路由的鏈路故障時,將端口狀態(tài)表中該條等價路由對應(yīng)的端口狀態(tài)置為故障狀態(tài),所述端口狀態(tài)表用于保存多條到達(dá)同一目的地址的等價路由所使用的出端口的端口狀態(tài);
[0010]將所述哈希映射表中所有該條等價路由對應(yīng)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
[0011]進一步地,所述方法還包括以下初始化的步驟:
[0012]在對所述端口狀態(tài)表初始化時,為到達(dá)同一目的地址的每一條等價路由所述使用的出端口建立表項,并將每一表項中的端口狀態(tài)設(shè)置為正常狀態(tài);
[0013]在對所述哈希映射表初始化時,為每一個哈希值建立表項,并依次循環(huán)將端口狀態(tài)表中的出端口填充到哈希映射表中。[0014]進一步地,所述方法還包括:
[0015]當(dāng)產(chǎn)生鏈路故障的等價路由恢復(fù)正常時,將端口狀態(tài)表中該條恢復(fù)正常的等價路由對應(yīng)的出端口的端口狀態(tài)置為正常狀態(tài);
[0016]按初始化時該條恢復(fù)正常的等價路由對應(yīng)的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定出需要處理的哈希映射表表項,將所確定出的需要處理的哈希映射表表項的出端口替換為該條恢復(fù)正常的等價路由對應(yīng)的出端口。
[0017]進一步地,在按初始化時在所述哈希映射表中建立的該條恢復(fù)正常的等價路由對應(yīng)的出端口與哈希值的對應(yīng)關(guān)系完成對應(yīng)哈希值的出端口替換后,該方法還包括:
[0018]判斷所述端口狀態(tài)表中是否還有處于故障狀態(tài)的出端口表項,當(dāng)存在時,針對每一個處于故障狀態(tài)的出端口,執(zhí)行如下動作:
[0019]按初始化時當(dāng)前處于故障的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定需要替換出端口的哈希映射表表項,依次循環(huán)用所述端口狀態(tài)表中處于正常狀態(tài)的出端口替換所確定的需要替換出端口的哈希映射表表項的出端口;
[0020]將所述哈希映射表中所有該當(dāng)前處理的處于故障狀態(tài)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
[0021]進一步地,所述報文轉(zhuǎn)發(fā)設(shè)備為交換設(shè)備或路由設(shè)備。
[0022]基于本發(fā)明的實施例,本發(fā)明還提供一種報文轉(zhuǎn)發(fā)裝置,應(yīng)用于報文轉(zhuǎn)發(fā)設(shè)備上,所述裝置包括:
[0023]轉(zhuǎn)發(fā)模塊,用于在通過等價路由轉(zhuǎn)發(fā)報文時,基于報文屬性計算哈希值,通過哈希映射表確定哈希值對應(yīng)的出端口,通過確定的出端口轉(zhuǎn)發(fā)該報文;所述哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系;
[0024]狀態(tài)維護模塊,用于當(dāng)某條等價路由的鏈路故障時,將端口狀態(tài)表中該條等價路由對應(yīng)的端口狀態(tài)置為故障狀態(tài);所述端口狀態(tài)表用于保存多條到達(dá)同一目的地址的等價路由所使用的出端口的端口狀態(tài);
[0025]哈希映射模塊,用于當(dāng)某條等價路由的鏈路故障時,將所述哈希映射表中所有該條等價路由對應(yīng)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
[0026]進一步地,所述狀態(tài)維護模塊還用于對所述端口狀態(tài)表進行初始化,在初始化時,為到達(dá)同一目的地址的每一條等價路由所述使用的出端口建立表項,并將每一表項中的端口狀態(tài)設(shè)置為正常狀態(tài);
[0027]所述哈希映射模塊還用于對所述哈希映射表進行初始化,在初始化時,為每一個哈希值建立表項,并依次循環(huán)將端口狀態(tài)表中的出端口填充到哈希映射表中。
[0028]進一步地,所述狀態(tài)維護模塊還用于,在產(chǎn)生鏈路故障的等價路由恢復(fù)正常時,將端口狀態(tài)表中該條恢復(fù)正常的等價路由對應(yīng)的出端口的端口狀態(tài)置為正常狀態(tài);
[0029]所述哈希映射模塊還用于,按初始化時該條恢復(fù)正常的等價路由對應(yīng)的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定出需要處理的哈希映射表表項,將所確定出的需要處理的哈希映射表表項的出端口替換為該條恢復(fù)正常的等價路由對應(yīng)的出端口。
[0030]進一步地,所述哈希映射模塊還用于,在按初始化時在所述哈希映射表中建立的該條恢復(fù)正常的等價路由對應(yīng)的出端口與哈希值的對應(yīng)關(guān)系完成對應(yīng)哈希值的出端口替換后,判斷所述端口狀態(tài)表中是否還有處于故障狀態(tài)的出端口表項,當(dāng)存在時,針對每一個處于故障狀態(tài)的出端口,按初始化時當(dāng)前處于故障的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定需要替換的哈希映射表的表項,依次循環(huán)用所述端口狀態(tài)表中處于正常狀態(tài)的出端口替換所確定的需要替換的哈希映射表的表項中的出端口。
[0031]通過本發(fā)明能夠在某條等價路由的鏈路故障時,保持正常的等價路由的出端口不變,并使用正常狀態(tài)的出端口替換故障的出端口。在等價路由對應(yīng)的鏈路恢復(fù)時,同樣保持原正常鏈路上的出端口不變,將恢復(fù)鏈路與出端口的對應(yīng)關(guān)系恢復(fù)到原始狀態(tài)。從而避免重新計算出端口導(dǎo)致正常等價路由上的流量瞬間斷流,并且能夠?qū)⒘髁炕謴?fù)到原始轉(zhuǎn)發(fā)路徑。
【專利附圖】
【附圖說明】
[0032]圖1為本發(fā)明實施例提供的報文轉(zhuǎn)發(fā)方法流程圖;
[0033]圖2為本發(fā)明實施例提供報文轉(zhuǎn)發(fā)裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0034]為使本發(fā)明提供的技術(shù)方案更加清楚,以下結(jié)合附圖對本發(fā)明的實施例進行詳細(xì)描述。
[0035]針對現(xiàn)有技術(shù)中的缺陷提出了一種報文轉(zhuǎn)發(fā)方法及裝置,本發(fā)明通過端口狀態(tài)表和哈希映射表來實現(xiàn)基于等價路由的流量的負(fù)載分擔(dān),在等價路由的鏈路(或稱為等價路徑)故障時,通過預(yù)定的算法保持在未產(chǎn)生故障的等價路由上的流量不改變出端口,在等價路由的鏈路恢復(fù)時,將流量恢復(fù)到原始的等價路徑上。
[0036]圖1為本發(fā)明一實施例提供的報文轉(zhuǎn)發(fā)方法的步驟流程圖,該方法應(yīng)用于報文轉(zhuǎn)發(fā)設(shè)備上,所述報文轉(zhuǎn)發(fā)設(shè)備可以是路由設(shè)備或具有三層轉(zhuǎn)發(fā)功能的交換設(shè)備,該方法包括:
[0037]步驟101、在通過等價路由轉(zhuǎn)發(fā)報文時,基于報文屬性計算哈希值,根據(jù)哈希映射表確定哈希值對應(yīng)的出端口,通過確定的出端口轉(zhuǎn)發(fā)該報文,所述哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系;
[0038]本發(fā)明中,當(dāng)報文轉(zhuǎn)發(fā)設(shè)備接收到一個報文時,會通過報文的目的地址在路由表或轉(zhuǎn)發(fā)表(以下統(tǒng)稱為路由表)中確定出端口,當(dāng)針對同一目的地址存在多條等價路徑時,會在路由表中存在多條等價路由表項。本發(fā)明在通過等價路由轉(zhuǎn)發(fā)報文時,首先基于報文屬性計算哈希值,所述的報文屬性可以是源地址、協(xié)議類型、所屬虛擬專用網(wǎng)絡(luò)(VirtualPrivate Network,VPN)等一種或多種的組合,本發(fā)明不做限定。在獲得哈希值后,通過哈希映射表確定哈希值對應(yīng)的出端口,通過所確定的出端口轉(zhuǎn)發(fā)該報文。
[0039]本發(fā)明中,哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系,該哈希映射表至少包括哈希值字段和出端口字段,如表I所示,哈希值字段取值范圍等于哈希函數(shù)的哈希值的值域空間,即哈希映射表中每一個表項中的哈希字段的值對應(yīng)哈希函數(shù)一個可能的哈希值,整個哈希字段的值的集合構(gòu)成哈希函數(shù)的哈希值的值域空間。
[0040]表I
[0041]
【權(quán)利要求】
1.一種報文轉(zhuǎn)發(fā)方法,應(yīng)用于報文轉(zhuǎn)發(fā)設(shè)備上,其特征在于,所述方法包括: 在通過等價路由轉(zhuǎn)發(fā)報文時,基于報文屬性計算哈希值,通過哈希映射表確定哈希值對應(yīng)的出端口,通過確定的出端口轉(zhuǎn)發(fā)該報文,所述哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系; 當(dāng)某條等價路由的鏈路故障時,將端口狀態(tài)表中該條等價路由對應(yīng)的端口狀態(tài)置為故障狀態(tài),所述端口狀態(tài)表用于保存多條到達(dá)同一目的地址的等價路由所使用的出端口的端口狀態(tài); 將所述哈希映射表中所有該條等價路由對應(yīng)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括以下初始化的步驟: 在對所述端口狀態(tài)表初始化時,為到達(dá)同一目的地址的每一條等價路由所述使用的出端口建立表項,并將每一表項中的端口狀態(tài)設(shè)置為正常狀態(tài); 在對所述哈希映射表初始化時,為每一個哈希值建立表項,并依次循環(huán)將端口狀態(tài)表中的出端口填充到哈希映射表中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)產(chǎn)生鏈路故障的等 價路由恢復(fù)正常時,將端口狀態(tài)表中該條恢復(fù)正常的等價路由對應(yīng)的出端口的端口狀態(tài)置為正常狀態(tài); 按初始化時該條恢復(fù)正常的等價路由對應(yīng)的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定出需要處理的哈希映射表表項,將所確定出的需要處理的哈希映射表表項的出端口替換為該條恢復(fù)正常的等價路由對應(yīng)的出端口。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在按初始化時在所述哈希映射表中建立的該條恢復(fù)正常的等價路由對應(yīng)的出端口與哈希值的對應(yīng)關(guān)系完成對應(yīng)哈希值的出端口替換后,該方法還包括: 判斷所述端口狀態(tài)表中是否還有處于故障狀態(tài)的出端口表項,當(dāng)存在時,針對每一個處于故障狀態(tài)的出端口,執(zhí)行如下動作: 按初始化時當(dāng)前處于故障的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定需要替換出端口的哈希映射表表項,依次循環(huán)用所述端口狀態(tài)表中處于正常狀態(tài)的出端口替換所確定的需要替換出端口的哈希映射表表項的出端口 ; 將所述哈希映射表中所有該當(dāng)前處理的處于故障狀態(tài)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述報文轉(zhuǎn)發(fā)設(shè)備為交換設(shè)備或路由設(shè)備。
6.一種報文轉(zhuǎn)發(fā)裝置,應(yīng)用于報文轉(zhuǎn)發(fā)設(shè)備上,其特征在于,所述裝置包括: 轉(zhuǎn)發(fā)模塊,用于在通過等價路由轉(zhuǎn)發(fā)報文時,基于報文屬性計算哈希值,通過哈希映射表確定哈希值對應(yīng)的出端口,通過確定的出端口轉(zhuǎn)發(fā)該報文;所述哈希映射表用于保存哈希值與等價路由對應(yīng)的出端口之間的對應(yīng)關(guān)系; 狀態(tài)維護模塊,用于當(dāng)某條等價路由的鏈路故障時,將端口狀態(tài)表中該條等價路由對應(yīng)的端口狀態(tài)置為故障狀態(tài);所述端口狀態(tài)表用于保存多條到達(dá)同一目的地址的等價路由所使用的出端口的端口狀態(tài);哈希映射模塊,用于當(dāng)某條等價路由的鏈路故障時,將所述哈希映射表中所有該條等價路由對應(yīng)的出端口,按順序依次循環(huán)替換為端口狀態(tài)表中端口狀態(tài)為正常狀態(tài)的等價路由對應(yīng)的出端口。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述狀態(tài)維護模塊還用于對所述端口狀態(tài)表進行初始化,在初始化時,為到達(dá)同一目的地址的每一條等價路由所述使用的出端口建立表項,并將每一表項中的端口狀態(tài)設(shè)置為正常狀態(tài); 所述哈希映射模塊還用于對所述哈希映射表進行初始化,在初始化時,為每一個哈希值建立表項,并依次循環(huán)將端口狀態(tài)表中的出端口填充到哈希映射表中。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述狀態(tài)維護模塊還用于,在產(chǎn)生鏈路故障的等價路由恢復(fù)正常時,將端口狀態(tài)表中該條恢復(fù)正常的等價路由對應(yīng)的出端口的端口狀態(tài)置為正常狀態(tài); 所述哈希映射模塊還用于,按初始化時該條恢復(fù)正常的等價路由對應(yīng)的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定出需要處理的哈希映射表表項,將所確定出的需要處理的哈希映射表表項的出端口替換為該條恢復(fù)正常的等價路由對應(yīng)的出端口。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述哈希映射模塊還用于,在按初始化時在所述哈希映射表中建立的該條恢復(fù)正常的等價路由對應(yīng)的出端口與哈希值的對應(yīng)關(guān)系完成對應(yīng)哈希值的出端口替換后,判斷所述端口狀態(tài)表中是否還有處于故障狀態(tài)的出端口表項,當(dāng)存在時,針對每一個處于故障狀態(tài)的出端口,按初始化時當(dāng)前處于故障的出端口在所述哈希映射表中與哈希值的對應(yīng)關(guān)系確定需要替換的哈希映射表的表項,依次循環(huán)用所述端口狀態(tài)表中處于正常狀態(tài)的出端口替換所確定的需要替換的哈希映射表的表項中的出端口。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,應(yīng)用所述裝置的報文轉(zhuǎn)發(fā)設(shè)備為交換設(shè)備或路由設(shè)備。
【文檔編號】H04L12/703GK104022952SQ201410244454
【公開日】2014年9月3日 申請日期:2014年6月3日 優(yōu)先權(quán)日:2014年6月3日
【發(fā)明者】李捷, 張雷 申請人:杭州華三通信技術(shù)有限公司