本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種備份鏈路確定方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,語(yǔ)音、視頻等網(wǎng)絡(luò)業(yè)務(wù)的出現(xiàn)對(duì)流量中斷時(shí)間提出了更嚴(yán)格的要求。現(xiàn)有方法中,通??梢圆捎肍RR(Fast Reroute,快速重路由)技術(shù)來(lái)減少流量中斷時(shí)間。即針對(duì)各源節(jié)點(diǎn)和目的節(jié)點(diǎn),計(jì)算出主鏈路和備份鏈路,當(dāng)主鏈路故障后,快速切換至備份鏈路。
SPF(Shortest Path First,最短路徑優(yōu)先)技術(shù)可以用于計(jì)算各節(jié)點(diǎn)到其他節(jié)點(diǎn)的最短路徑。在實(shí)際應(yīng)用中,各節(jié)點(diǎn)可以使用SPF技術(shù),來(lái)確定其到任一目的節(jié)點(diǎn)的主鏈路和備份鏈路。
具體地,各節(jié)點(diǎn)可以根據(jù)每?jī)蓚€(gè)節(jié)點(diǎn)之間鏈路的最短距離(即cost值),確定從自身到任一目的節(jié)點(diǎn)之間,cost值最小的鏈路為主鏈路,cost值僅小于主鏈路的鏈路為備份鏈路。其中,每?jī)蓚€(gè)節(jié)點(diǎn)之間鏈路的cost值為用來(lái)衡量鏈路質(zhì)量的一種無(wú)量綱數(shù)值,鏈路質(zhì)量越好,cost值越小。具體地,其可以體現(xiàn)為多種形式,如,其可以反映鏈路帶寬、鏈路擁塞程度、節(jié)點(diǎn)距離遠(yuǎn)近等。也就是說(shuō),節(jié)點(diǎn)可以?xún)?yōu)先選擇質(zhì)量最好的鏈路作為主鏈路。
但是,鏈路狀態(tài)路由協(xié)議工作時(shí),總是以自身節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。有些情況下,節(jié)點(diǎn)在確定備份鏈路時(shí),可能會(huì)形成環(huán)路。因此要確定無(wú)環(huán)路的備份鏈路,必須獲知鄰居節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)以及起始節(jié)點(diǎn)的最短距離。
具體地,可以采用LFA(Loop Free Alternate,無(wú)環(huán)可選下一跳)技術(shù)。LFA作為一種FRR,其實(shí)就是借助現(xiàn)有的SPF算法,為每條鏈路的下一跳找出不會(huì)形成環(huán)路,真正能保持流量不中斷的備份鏈路的下一跳。
但是,實(shí)際應(yīng)用中,網(wǎng)絡(luò)拓?fù)渲邪ǖ墓?jié)點(diǎn)往往非常多,多達(dá)上千節(jié)點(diǎn)。因此,各節(jié)點(diǎn)以所有的候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF運(yùn)算時(shí),會(huì)導(dǎo)致計(jì)算量非常龐大,占用大量CPU。并且,是否存在備份鏈路,還要滿(mǎn)足LFA無(wú)環(huán)條件。在以候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算前,無(wú)法決策經(jīng)過(guò)該候選鄰居節(jié)點(diǎn)的鏈路是否為備份鏈路。因此,很有可能進(jìn)行了大量SPF計(jì)算,但并沒(méi)有備份鏈路。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種備份鏈路確定方法及裝置,以在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率。具體技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例提供了一種備份鏈路確定方法,應(yīng)用于第一節(jié)點(diǎn),所述方法包括:
在本節(jié)點(diǎn)所在的網(wǎng)絡(luò)拓?fù)渲?,以本?jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行最短路徑優(yōu)先SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路;
識(shí)別所述網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),并根據(jù)各割點(diǎn)將所述網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)洌?/p>
確定所述主鏈路經(jīng)過(guò)的子拓?fù)?,并從本?jié)點(diǎn)的候選鄰居節(jié)點(diǎn)中確定出目標(biāo)鄰居節(jié)點(diǎn),所述目標(biāo)鄰居節(jié)點(diǎn)包含于所述子拓?fù)渲校?/p>
以所述目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到所述目的節(jié)點(diǎn)的備份鏈路。
第二方面,本發(fā)明實(shí)施例提供了一種備份鏈路確定裝置,應(yīng)用于第一節(jié)點(diǎn),所述裝置包括:
執(zhí)行模塊,用于在本節(jié)點(diǎn)所在的網(wǎng)絡(luò)拓?fù)渲校员竟?jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行最短路徑優(yōu)先SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路;識(shí)別所述網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),并根據(jù)各割點(diǎn)將所述網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)?;確定所述主鏈路經(jīng)過(guò)的子拓?fù)?,并從本?jié)點(diǎn)的候選鄰居節(jié)點(diǎn)中確定出目標(biāo)鄰居節(jié)點(diǎn),所述目標(biāo)鄰居節(jié)點(diǎn)包含于所述子拓?fù)渲校?/p>
處理模塊,用于以所述目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到所述目的節(jié)點(diǎn)的備份鏈路。
本發(fā)明實(shí)施例提供了一種備份鏈路確定方法及裝置,節(jié)點(diǎn)可以識(shí)別其所在網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),進(jìn)而根據(jù)各割點(diǎn),將該網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)?,并且,可以確定從自身到目的節(jié)點(diǎn)的主鏈路經(jīng)過(guò)的子拓?fù)?;進(jìn)一步地,可以在自身的候選鄰居節(jié)點(diǎn)中,識(shí)別包含于該子拓?fù)涞哪繕?biāo)鄰居節(jié)點(diǎn),并只以這些目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,從而根據(jù)SPF計(jì)算結(jié)果,確定自身到目的節(jié)點(diǎn)的備份鏈路。在實(shí)際應(yīng)用中,從任一源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路,只可能存在于該源節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路所經(jīng)過(guò)的子拓?fù)渲?。因此,非該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),不可能包含在備份鏈路中,而包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),都可能成為從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路的下一跳。從而,只以包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,能夠在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1(a)、1(b)為任一網(wǎng)絡(luò)拓?fù)涫疽鈭D;
圖2為另一網(wǎng)絡(luò)拓?fù)涫疽鈭D;
圖3為本發(fā)明實(shí)施例的一種備份鏈路確定方法的流程圖;
圖4為本發(fā)明實(shí)施例的一種備份鏈路確定裝置的結(jié)構(gòu)示意圖;
圖5為對(duì)圖2所示的網(wǎng)絡(luò)拓?fù)溥\(yùn)行DFS算法后生成的搜索樹(shù),以及各節(jié)點(diǎn)在搜索樹(shù)中的第一深度值示意圖;
圖6為圖5所示的搜索樹(shù)中針對(duì)各節(jié)點(diǎn),該節(jié)點(diǎn)的第二深度值示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
需要說(shuō)明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。
在實(shí)際應(yīng)用中,節(jié)點(diǎn)在通過(guò)SPF確定備份鏈路時(shí),可能會(huì)產(chǎn)生環(huán)路。例如,如圖1(a)所示的網(wǎng)絡(luò)拓?fù)渲?,S表示源節(jié)點(diǎn),D表示目的節(jié)點(diǎn)。通過(guò)SPF技術(shù)可以確定從節(jié)點(diǎn)S到節(jié)點(diǎn)D的主鏈路為S-E-D,備份鏈路為S-N-D。而當(dāng)S-E鏈路發(fā)生故障時(shí),則需要通過(guò)備份鏈路S-N-D,將節(jié)點(diǎn)S到節(jié)點(diǎn)D的流量發(fā)送給節(jié)點(diǎn)D。
但是,如圖1(b)所示的網(wǎng)絡(luò)拓?fù)渲?,如果N-D的cost不是3而是43,則通過(guò)SPF技術(shù)可以確定從節(jié)點(diǎn)S到節(jié)點(diǎn)D的備份鏈路為S-N-S-E-D。因?yàn)樽逳-S-E-D的鏈路的cost比N-D的cost更小。這樣S-E鏈路一旦發(fā)生故障,即使節(jié)點(diǎn)S將到達(dá)節(jié)點(diǎn)D的流量切換到節(jié)點(diǎn)N上進(jìn)行轉(zhuǎn)發(fā),節(jié)點(diǎn)N也會(huì)把到節(jié)點(diǎn)D的流量重新轉(zhuǎn)發(fā)給節(jié)點(diǎn)S,從而形成環(huán)路。因此,實(shí)際上節(jié)點(diǎn)N是不具備作為節(jié)點(diǎn)S到節(jié)點(diǎn)D的備份鏈路的下一跳的資格的。
如圖1(a)或1(b)所示的網(wǎng)絡(luò)拓?fù)渲校瑹o(wú)環(huán)的條件如下:
cost(N,D)<cost(N,S)+cost(S,D)
也就是說(shuō),當(dāng)從節(jié)點(diǎn)N到節(jié)點(diǎn)D的鏈路的cost值,小于從節(jié)點(diǎn)N到節(jié)點(diǎn)S的cost值與從節(jié)點(diǎn)S到節(jié)點(diǎn)D的主鏈路的cost值的和時(shí),從節(jié)點(diǎn)N到節(jié)點(diǎn)D不會(huì)形成環(huán)路。
但是,鏈路狀態(tài)路由協(xié)議工作時(shí),總是以自身節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。比如圖1(a)中的節(jié)點(diǎn)S,進(jìn)行SPF計(jì)算時(shí),只能算出cost(S,X),即只能獲知節(jié)點(diǎn)S到其他節(jié)點(diǎn)的最短距離。cost(N,D)以及cost(N,S)采用傳統(tǒng)的SPF運(yùn)算無(wú)法獲知。因此要確定備份鏈路,必須獲知鄰居節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)以及起始節(jié)點(diǎn)的最短距離。
為了解決該問(wèn)題,可以采用LFA(Loop Free Alternate,無(wú)環(huán)可選下一跳)技術(shù)。LFA作為一種FRR,其實(shí)就是借助現(xiàn)有的SPF算法,為每條鏈路的下一跳找出不會(huì)形成環(huán)路,真正能保持流量不中斷的備份鏈路的下一跳。
具體地,各節(jié)點(diǎn)在進(jìn)行SPF計(jì)算時(shí),除了以本地節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算外,增加以除主鏈路中的鄰居節(jié)點(diǎn)之外的每個(gè)候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,獲得從每個(gè)候選鄰居節(jié)點(diǎn)出發(fā)到達(dá)其他節(jié)點(diǎn)的最短距離。通過(guò)這些數(shù)據(jù)執(zhí)行LFA方案的備份下一跳選擇算法,確定本地節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的備份鏈路。參照?qǐng)D1(a),針對(duì)節(jié)點(diǎn)S,除了以節(jié)點(diǎn)S為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,仍舊需要以節(jié)點(diǎn)N為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。
但是,實(shí)際應(yīng)用中,網(wǎng)絡(luò)拓?fù)渲邪ǖ墓?jié)點(diǎn)往往非常多,多達(dá)上千節(jié)點(diǎn)。因此,各節(jié)點(diǎn)以所有的候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF運(yùn)算時(shí),會(huì)導(dǎo)致計(jì)算量非常龐大,占用大量CPU。并且,是否存在備份鏈路,還要滿(mǎn)足LFA無(wú)環(huán)條件。在以候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算前,無(wú)法決策經(jīng)過(guò)該候選鄰居節(jié)點(diǎn)的鏈路是否為備份鏈路。因此,很有可能進(jìn)行了大量SPF計(jì)算,但并沒(méi)有備份鏈路。
為了在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率,本發(fā)明實(shí)施例提供了一種備份鏈路確定方法及裝置。
首先結(jié)合一個(gè)具體的網(wǎng)絡(luò)拓?fù)?,?lái)說(shuō)明在實(shí)際應(yīng)用中,針對(duì)任一個(gè)節(jié)點(diǎn),其候選鄰居節(jié)點(diǎn)中,需要以哪些候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,不需要以哪些候選鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。
在實(shí)際應(yīng)用中,網(wǎng)絡(luò)拓?fù)渫ǔ楸容^復(fù)雜的,如圖2所示的網(wǎng)絡(luò)拓?fù)?。在這種網(wǎng)絡(luò)拓?fù)渲?,割點(diǎn)在其中扮演著很重要的角色。其中,在網(wǎng)絡(luò)拓?fù)渲校魟h除某節(jié)點(diǎn)后,該網(wǎng)絡(luò)拓?fù)浔环指顬橹辽賰蓚€(gè)獨(dú)立的子拓?fù)?,則該節(jié)點(diǎn)為割點(diǎn)。
如圖2所示的網(wǎng)絡(luò)拓?fù)渲?,?jié)點(diǎn)C,H,K為割點(diǎn),它們將整個(gè)拓?fù)鋭澐譃樗膫€(gè)子拓?fù)洌簕A,B,C,D,E,R},{C,F,G,H,I,J},{H,K},{K,L,M,N,O,P}。
例如,當(dāng)源節(jié)點(diǎn)為節(jié)點(diǎn)C,目的節(jié)點(diǎn)為節(jié)點(diǎn)A,主鏈路為C-B-A時(shí),主鏈路所跨的子拓?fù)錇閧A,B,C,D,E,R}。在確定備份鏈路時(shí),如果備份鏈路存在,則備份鏈路一定在子拓?fù)鋥A,B,C,D,E,R}中,不可能在其他子拓?fù)渲小?/p>
因此,節(jié)點(diǎn)C在確定C-A的備份鏈路時(shí),針對(duì)其每個(gè)候選鄰居節(jié)點(diǎn)D、F、J,只需要以包含在子拓?fù)鋥A,B,C,D,E,R}中的節(jié)點(diǎn)D為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,而不需要以包含在其他子拓?fù)渲械泥従庸?jié)點(diǎn)F和J為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。
另外,當(dāng)源節(jié)點(diǎn)為節(jié)點(diǎn)H,目的節(jié)點(diǎn)為節(jié)點(diǎn)A,主鏈路為H-G-F-C-B-A時(shí),主鏈路所跨的子拓?fù)浼蠟閧A,B,C,D,E,R}和{C,F,G,H,I,J}。在確定備份鏈路時(shí),如果備份鏈路存在,則備份鏈路一定在子拓?fù)浼蟵A,B,C,D,E,R}和{C,F,G,H,I,J}中,不可能在其他子拓?fù)渲小?/p>
因此,節(jié)點(diǎn)H在確定H-A的備份鏈路時(shí),針對(duì)其每個(gè)候選鄰居節(jié)點(diǎn)I、K,只需要以包含在子拓?fù)鋥A,B,C,D,E,R}和{C,F,G,H,I,J}中的節(jié)點(diǎn)I為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,而不需要以包含在其他子拓?fù)渲械泥従庸?jié)點(diǎn)K為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算。
特殊地,當(dāng)源節(jié)點(diǎn)為節(jié)點(diǎn)H,目的節(jié)點(diǎn)為節(jié)點(diǎn)K,主鏈路為H-K時(shí),主鏈路所跨的子拓?fù)錇閧H,K}。由于節(jié)點(diǎn)H的候選鄰居節(jié)點(diǎn)G、I均不包含在子拓?fù)鋥H,K}中,因此,可以直接確定不需要進(jìn)行SPF計(jì)算,不存在備份鏈路。
通過(guò)上述舉例,可以得出以下結(jié)論:若源節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路所跨的子拓?fù)浼蠟閄,則備份鏈路仍舊在該集合X中。也就是說(shuō),備份鏈路只能出現(xiàn)在主鏈路所跨的子拓?fù)浼现小?/p>
為了在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率,本發(fā)明實(shí)施例提供了一種備份鏈路確定方法過(guò)程,如圖3所示,該過(guò)程可以包括以下步驟:
S301,在本節(jié)點(diǎn)所在的網(wǎng)絡(luò)拓?fù)渲?,以本?jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行最短路徑優(yōu)先SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路。
本發(fā)明實(shí)施例提供的方法,可以應(yīng)用于網(wǎng)絡(luò)中的任一節(jié)點(diǎn)。在本發(fā)明實(shí)施例中,為了便于描述,可以將該節(jié)點(diǎn)稱(chēng)為第一節(jié)點(diǎn)。
在本發(fā)明實(shí)施例中,第一節(jié)點(diǎn)可以在本節(jié)點(diǎn)所在的網(wǎng)絡(luò)拓?fù)渲?,以本?jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路。
例如,第一節(jié)點(diǎn)可以通過(guò)SPF計(jì)算,得到從本節(jié)點(diǎn)到各節(jié)點(diǎn)的鏈路的cost值,進(jìn)而可以將從本節(jié)點(diǎn)到目的節(jié)點(diǎn)中,cost值最小的鏈路確定為主鏈路。
需要說(shuō)明的是,本發(fā)明實(shí)施例僅以確定第一節(jié)點(diǎn)到任一目的節(jié)點(diǎn)的備份鏈路為例,來(lái)說(shuō)明本發(fā)明實(shí)施例提供的備份鏈路確定方法。實(shí)際應(yīng)用中,可以應(yīng)該本發(fā)明實(shí)施例提供的方法,確定第一節(jié)點(diǎn)到各目的節(jié)點(diǎn)的備份鏈路。
S302,識(shí)別所述網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),并根據(jù)各割點(diǎn)將所述網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)洹?/p>
在本發(fā)明實(shí)施例中,為了在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率,第一節(jié)點(diǎn)可以識(shí)別本節(jié)點(diǎn)所在網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),進(jìn)而可以根據(jù)各割點(diǎn),將該網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)洹?/p>
所謂的割點(diǎn)是指:刪除某節(jié)點(diǎn)后,該網(wǎng)絡(luò)拓?fù)浔环指顬橹辽賰蓚€(gè)獨(dú)立的子拓?fù)?,則該節(jié)點(diǎn)為割點(diǎn)。
第一節(jié)點(diǎn)在識(shí)別網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn)之前,可以以網(wǎng)絡(luò)拓?fù)渲械牡诙?jié)點(diǎn)為根節(jié)點(diǎn),對(duì)該網(wǎng)絡(luò)拓?fù)溥\(yùn)行DFS(Deep First Search,深度優(yōu)先搜索)算法,生成搜索樹(shù)。其中,上述第二節(jié)點(diǎn)可以與第一節(jié)點(diǎn)相同,也可以不同。
第一節(jié)點(diǎn)在識(shí)別網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn)時(shí),可以運(yùn)行預(yù)設(shè)算法,獲得所述搜索樹(shù)中各節(jié)點(diǎn)的第一深度值和第二深度值,所述第一深度值表示該節(jié)點(diǎn)在所述搜索樹(shù)中的深度,所述第二深度值為該節(jié)點(diǎn)的子孫節(jié)點(diǎn)在所述搜索樹(shù)中能到達(dá)的最淺深度。其中,上述預(yù)設(shè)算法可以是Tarjan算法。
各節(jié)點(diǎn)在搜索樹(shù)中的深度,即為各節(jié)點(diǎn)在該搜索樹(shù)中的遍歷順序。遍歷順序越靠前的節(jié)點(diǎn),其在搜索樹(shù)中的深度越小。例如,根節(jié)點(diǎn)為遍歷順序最靠前的節(jié)點(diǎn),其在搜索樹(shù)中的深度為0。
確定各節(jié)點(diǎn)在搜索樹(shù)中的第一深度和第二深度后,第一節(jié)點(diǎn)可以確定本節(jié)點(diǎn)以及其他節(jié)點(diǎn)是否為割點(diǎn)。
具體地,當(dāng)?shù)诙?jié)點(diǎn)在該搜索樹(shù)中存在至少兩個(gè)子樹(shù)時(shí),可以確定其為割點(diǎn)。如,從根節(jié)點(diǎn)的任意一個(gè)子節(jié)點(diǎn)開(kāi)始遍歷該搜索樹(shù),如果能夠遍歷到搜索樹(shù)中剩余所有節(jié)點(diǎn)時(shí),可以表明第二節(jié)點(diǎn)在搜索樹(shù)中存在一個(gè)子樹(shù);否則,表明第二節(jié)點(diǎn)在搜索樹(shù)中存在至少兩個(gè)子樹(shù)。
對(duì)于非根節(jié)點(diǎn),在其所在的子拓?fù)渲?,如果該?jié)點(diǎn)存在至少一個(gè)子孫節(jié)點(diǎn)滿(mǎn)足以下條件時(shí),確定該節(jié)點(diǎn)為割點(diǎn):所述子孫節(jié)點(diǎn)的第二深度值大于等于該非根節(jié)點(diǎn)的第一深度值。
需要說(shuō)明的是,第一節(jié)點(diǎn)在確定網(wǎng)絡(luò)拓?fù)渲械母铧c(diǎn)時(shí),除了使用上述方法之外,還可以使用現(xiàn)有的任一種方法,本發(fā)明實(shí)施例對(duì)此不進(jìn)行限定。
確定網(wǎng)絡(luò)拓?fù)渲械母铧c(diǎn)后,第一節(jié)點(diǎn)可以進(jìn)一步地根據(jù)各割點(diǎn),將該網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)洹?/p>
S303,確定所述主鏈路經(jīng)過(guò)的子拓?fù)洌谋竟?jié)點(diǎn)的候選鄰居節(jié)點(diǎn)中確定出目標(biāo)鄰居節(jié)點(diǎn),所述目標(biāo)鄰居節(jié)點(diǎn)包含于所述子拓?fù)渲小?/p>
將網(wǎng)絡(luò)拓?fù)鋭澐譃槎鄠€(gè)子拓?fù)浜?,第一?jié)點(diǎn)可以確定主鏈路經(jīng)過(guò)的一個(gè)或多個(gè)子拓?fù)?。例如,第一?jié)點(diǎn)可以確定主鏈路中包括的每?jī)蓚€(gè)節(jié)點(diǎn)之間的鏈路所在的子拓?fù)洹?/p>
進(jìn)一步地,第一節(jié)點(diǎn)可以針對(duì)各候選鄰居節(jié)點(diǎn),在子拓?fù)浼现胁檎沂欠翊嬖谠摴?jié)點(diǎn),如果是,則確定該節(jié)點(diǎn)為包含于該子拓?fù)渲械哪繕?biāo)鄰居節(jié)點(diǎn)。
其中,第一節(jié)點(diǎn)確定候選鄰居節(jié)點(diǎn)時(shí),可以除本節(jié)點(diǎn)在主鏈路上的鄰居節(jié)點(diǎn)以外,將剩余的鄰居節(jié)點(diǎn)確定為候選鄰居節(jié)點(diǎn)。
S304,以所述目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到所述目的節(jié)點(diǎn)的備份鏈路。
確定目標(biāo)鄰居節(jié)點(diǎn)后,第一節(jié)點(diǎn)可以針對(duì)各目標(biāo)鄰居節(jié)點(diǎn),以該目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,并根據(jù)計(jì)算結(jié)果,確定從自身到目的節(jié)點(diǎn)的備份鏈路。
例如,第一節(jié)點(diǎn)可以針對(duì)各目標(biāo)鄰居節(jié)點(diǎn),計(jì)算該目標(biāo)鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的cost值,以及其到自身的cost值,進(jìn)而可以根據(jù)計(jì)算結(jié)果,確定從自身到目的節(jié)點(diǎn)的鏈路中,cost值最小的鏈路為備份鏈路。
本發(fā)明實(shí)施例提供了一種備份鏈路確定方法,節(jié)點(diǎn)可以識(shí)別其所在網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),進(jìn)而根據(jù)各割點(diǎn),將該網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)?,并且,可以確定從自身到目的節(jié)點(diǎn)的主鏈路經(jīng)過(guò)的子拓?fù)洌贿M(jìn)一步地,可以在自身的候選鄰居節(jié)點(diǎn)中,識(shí)別包含于該子拓?fù)涞哪繕?biāo)鄰居節(jié)點(diǎn),并只以這些目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,從而根據(jù)SPF計(jì)算結(jié)果,確定自身到目的節(jié)點(diǎn)的備份鏈路。在實(shí)際應(yīng)用中,從任一源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路,只可能存在于該源節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路所經(jīng)過(guò)的子拓?fù)渲?。因此,非該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),不可能包含在備份鏈路中,而包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),都可能成為從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路的下一跳。從而,只以包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,能夠在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率。
相應(yīng)于上面的方法實(shí)施例,本發(fā)明實(shí)施例還提供了相應(yīng)的裝置實(shí)施例。
如圖4所示,本發(fā)明實(shí)施例提供了一種備份鏈路確定裝置,應(yīng)用于第一節(jié)點(diǎn),所述裝置包括:
執(zhí)行模塊410,用于在本節(jié)點(diǎn)所在的網(wǎng)絡(luò)拓?fù)渲?,以本?jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行最短路徑優(yōu)先SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路;識(shí)別所述網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),并根據(jù)各割點(diǎn)將所述網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)洌淮_定所述主鏈路經(jīng)過(guò)的子拓?fù)?,并從本?jié)點(diǎn)的候選鄰居節(jié)點(diǎn)中確定出目標(biāo)鄰居節(jié)點(diǎn),所述目標(biāo)鄰居節(jié)點(diǎn)包含于所述子拓?fù)渲校?/p>
處理模塊420,用于以所述目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,根據(jù)計(jì)算結(jié)果,確定從本節(jié)點(diǎn)到所述目的節(jié)點(diǎn)的備份鏈路。
本發(fā)明實(shí)施例提供了一種備份鏈路確定裝置,節(jié)點(diǎn)可以識(shí)別其所在網(wǎng)絡(luò)拓?fù)渲兴械母铧c(diǎn),進(jìn)而根據(jù)各割點(diǎn),將該網(wǎng)絡(luò)拓?fù)鋭澐譃橹辽賰蓚€(gè)子拓?fù)?,并且,可以確定從自身到目的節(jié)點(diǎn)的主鏈路經(jīng)過(guò)的子拓?fù)?;進(jìn)一步地,可以在自身的候選鄰居節(jié)點(diǎn)中,識(shí)別包含于該子拓?fù)涞哪繕?biāo)鄰居節(jié)點(diǎn),并只以這些目標(biāo)鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,從而根據(jù)SPF計(jì)算結(jié)果,確定自身到目的節(jié)點(diǎn)的備份鏈路。在實(shí)際應(yīng)用中,從任一源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路,只可能存在于該源節(jié)點(diǎn)到目的節(jié)點(diǎn)的主鏈路所經(jīng)過(guò)的子拓?fù)渲?。因此,非該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),不可能包含在備份鏈路中,而包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn),都可能成為從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的備份鏈路的下一跳。從而,只以包含在該子拓?fù)渲械母骱蜻x鄰居節(jié)點(diǎn)為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,能夠在減少SPF計(jì)算量的同時(shí),提高備份鏈路確定的成功率。
進(jìn)一步地,所述執(zhí)行模塊410,還用于以所述網(wǎng)絡(luò)拓?fù)渲械牡诙?jié)點(diǎn)為根節(jié)點(diǎn),對(duì)所述網(wǎng)絡(luò)拓?fù)溥\(yùn)行深度優(yōu)先搜索DFS算法,生成搜索樹(shù)。
進(jìn)一步地,所述執(zhí)行模塊410,還用于運(yùn)行預(yù)設(shè)算法,獲得所述搜索樹(shù)中各節(jié)點(diǎn)的第一深度值和第二深度值,所述第一深度值表示該節(jié)點(diǎn)在所述搜索樹(shù)中的深度,所述第二深度值為該節(jié)點(diǎn)的子孫節(jié)點(diǎn)在所述搜索樹(shù)中能到達(dá)的最淺深度;當(dāng)所述根節(jié)點(diǎn)存在至少兩個(gè)子樹(shù)時(shí),確定其為割點(diǎn);對(duì)于非根節(jié)點(diǎn),在其所在的子拓?fù)渲校绻龇歉?jié)點(diǎn)存在至少一個(gè)子孫節(jié)點(diǎn)滿(mǎn)足以下條件時(shí),確定該非根節(jié)點(diǎn)為割點(diǎn):所述子孫節(jié)點(diǎn)的第二深度值大于等于該非根節(jié)點(diǎn)的第一深度值。
進(jìn)一步地,所述預(yù)設(shè)算法為T(mén)arjan算法。
進(jìn)一步地,所述執(zhí)行模塊410,還用于除本節(jié)點(diǎn)在所述主鏈路上的鄰居節(jié)點(diǎn)以外,將剩余的鄰居節(jié)點(diǎn)確定為所述候選鄰居節(jié)點(diǎn)。
下面結(jié)合一個(gè)具體的實(shí)施例,對(duì)本發(fā)明提供的備份鏈路確定方法進(jìn)行詳細(xì)的說(shuō)明。
如圖2所示的網(wǎng)絡(luò)拓?fù)?,本?shí)施例以節(jié)點(diǎn)C確定其到節(jié)點(diǎn)G的備份鏈路為例,來(lái)說(shuō)明本發(fā)明提供的備份鏈路確定方法。
通過(guò)進(jìn)行SPF計(jì)算,節(jié)點(diǎn)C可以確定其到節(jié)點(diǎn)G的主鏈路為C-F-G。
節(jié)點(diǎn)C可以以節(jié)點(diǎn)R為根節(jié)點(diǎn),運(yùn)行DFS算法,生成搜索樹(shù),如圖5所示。并且,節(jié)點(diǎn)C還可以針對(duì)網(wǎng)絡(luò)拓?fù)渲械拿總€(gè)節(jié)點(diǎn),運(yùn)行Tarjan算法,得到每個(gè)節(jié)點(diǎn)在搜索樹(shù)中的深度,以及各節(jié)點(diǎn)的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度。如圖5所示,節(jié)點(diǎn)R在搜索樹(shù)中的深度為0,節(jié)點(diǎn)A在搜索樹(shù)中的深度為1,節(jié)點(diǎn)B在搜索樹(shù)中的深度為2,依次排列,節(jié)點(diǎn)P在搜索樹(shù)中的深度為16。
如圖6所示,其示出了圖5所示的搜索樹(shù)中針對(duì)各節(jié)點(diǎn),該節(jié)點(diǎn)的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度。如,節(jié)點(diǎn)R、A、B、C、D、E的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度均為0;節(jié)點(diǎn)F、G、H、I、J的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度均為3;節(jié)點(diǎn)K、L、M、N、O、P的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度均為11。
確定各節(jié)點(diǎn)在搜索樹(shù)中的深度,以及各節(jié)點(diǎn)的子孫節(jié)點(diǎn)所能到達(dá)的最淺深度后,節(jié)點(diǎn)C可以識(shí)別網(wǎng)絡(luò)拓?fù)渲械母铧c(diǎn)。
節(jié)點(diǎn)R只有一個(gè)子樹(shù),則確定其為非割點(diǎn)。節(jié)點(diǎn)A的各子孫節(jié)點(diǎn)(如子節(jié)點(diǎn)B,孫節(jié)點(diǎn)C、D、E)能到達(dá)的最淺深度0均小于節(jié)點(diǎn)A在搜索樹(shù)中的深度1,則確定節(jié)點(diǎn)A為非割點(diǎn)。節(jié)點(diǎn)C的子孫節(jié)點(diǎn)(如子節(jié)點(diǎn)F,孫節(jié)點(diǎn)G、H、I、J)能到達(dá)的最淺深度3等于節(jié)點(diǎn)C在搜索樹(shù)中的深度3,則確定節(jié)點(diǎn)C為割點(diǎn)。
對(duì)每個(gè)節(jié)點(diǎn)都進(jìn)行判斷后,可以得出該網(wǎng)絡(luò)拓?fù)渲械母铧c(diǎn)為節(jié)點(diǎn)C、H、K。它們將整個(gè)拓?fù)鋭澐譃樗膫€(gè)子拓?fù)洌簕A,B,C,D,E,R},{C,F,G,H,I,J},{H,K},{K,L,M,N,O,P}。
節(jié)點(diǎn)C到節(jié)點(diǎn)G的主鏈路C-F-G所跨的子拓?fù)錇閧C,F,G,H,I,J}。節(jié)點(diǎn)C的候選鄰居節(jié)點(diǎn)B、D、J中,節(jié)點(diǎn)J包含在子拓?fù)鋥C,F,G,H,I,J}中;節(jié)點(diǎn)B、D不包含在子拓?fù)鋥C,F,G,H,I,J}中。因此,可以確定節(jié)點(diǎn)J為目標(biāo)鄰居節(jié)點(diǎn)。
節(jié)點(diǎn)C可以以節(jié)點(diǎn)J為起始節(jié)點(diǎn)進(jìn)行SPF計(jì)算,計(jì)算節(jié)點(diǎn)J到節(jié)點(diǎn)G的cost值,以及節(jié)點(diǎn)J到自身的cost值。并根據(jù)計(jì)算結(jié)果,確定從自身到節(jié)點(diǎn)G的備份鏈路。
可選地,在本發(fā)明實(shí)施例中,當(dāng)節(jié)點(diǎn)C確定其所在網(wǎng)絡(luò)拓?fù)渲械母鞲铧c(diǎn)后,為了減小其他節(jié)點(diǎn)在確定備份鏈路時(shí)的計(jì)算量,節(jié)點(diǎn)C可以將網(wǎng)絡(luò)拓?fù)渲械母鞲铧c(diǎn)通知該網(wǎng)絡(luò)拓?fù)渲械钠渌鞴?jié)點(diǎn)。因此,其他節(jié)點(diǎn)在確定備份鏈路時(shí),可以根據(jù)已知的各割點(diǎn),確定網(wǎng)絡(luò)拓?fù)渲械淖油負(fù)?,進(jìn)而根據(jù)主鏈路和子拓?fù)?,確定通過(guò)哪些鄰居節(jié)點(diǎn)進(jìn)行備份鏈路的計(jì)算。
對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。