本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其是涉及一種基于MTR(MultiTopologyRouting,多拓?fù)渎酚桑┑臄?shù)據(jù)傳輸方法和設(shè)備。
背景技術(shù):目前單播路由協(xié)議(如:OSPF(OpenShortestPathFirst,開(kāi)放式最短路徑優(yōu)先),IS-IS(IntermediateSystemtoIntermediateSystemRoutingProtocol,中間系統(tǒng)到中間系統(tǒng)的路由選擇協(xié)議)和BGP(BorderGatewayProtocol,邊界網(wǎng)關(guān)協(xié)議)等)都支持MTR技術(shù),MTR技術(shù)是指在一個(gè)物理拓?fù)湎聞澐侄鄠€(gè)邏輯拓?fù)?,這些邏輯拓?fù)淇赡苁墙徊婊蛘咧丿B的,網(wǎng)絡(luò)設(shè)備在發(fā)送數(shù)據(jù)時(shí),不同的數(shù)據(jù)可以被劃分到不同的邏輯拓?fù)渲?,以?shí)現(xiàn)對(duì)數(shù)據(jù)的轉(zhuǎn)發(fā)處理。如圖1所示,為將一個(gè)物理拓?fù)鋭澐譃槎鄠€(gè)邏輯拓?fù)涞慕M網(wǎng)示意圖,對(duì)于由路由器A、路由器B、路由器C和路由器D組成的物理拓?fù)洌粍澐殖捎陕酚善鰽、路由器B和路由器D組成的邏輯拓?fù)?,以及由路由器A、路由器C和路由器D組成的邏輯拓?fù)?。其中,對(duì)于邏輯拓?fù)?來(lái)說(shuō),路由器C并不存在于該邏輯拓?fù)?中;對(duì)于邏輯拓?fù)?來(lái)說(shuō),路由器B并不存在于該邏輯拓?fù)?中。進(jìn)一步的,每一個(gè)單獨(dú)的邏輯拓?fù)涠夹枰鶕?jù)路由協(xié)議計(jì)算出本邏輯拓?fù)渌鶎?duì)應(yīng)的路由表(即RIB(RoutingInformationBase,路由信息庫(kù))),且屬于本邏輯拓?fù)涞臄?shù)據(jù)需要基于本邏輯拓?fù)涞穆酚杀恚碦IB)進(jìn)行路由轉(zhuǎn)發(fā)?;贛TR劃分的多個(gè)邏輯拓?fù)洌W(wǎng)絡(luò)設(shè)備在發(fā)送數(shù)據(jù)時(shí),首先選擇數(shù)據(jù)對(duì)應(yīng)的邏輯拓?fù)洌ㄈ缁贒SCP(DifferentiatedServicesCodePoint,差分服務(wù)代碼點(diǎn))值和邏輯拓?fù)涞膶?duì)應(yīng)關(guān)系進(jìn)行選擇;當(dāng)數(shù)據(jù)的DSCP值為1時(shí),選擇邏輯拓?fù)?,當(dāng)數(shù)據(jù)的DSCP值為2時(shí),選擇邏輯拓?fù)?);然后根據(jù)數(shù)據(jù)的目的地址在本邏輯拓?fù)涞穆酚杀碇羞M(jìn)行路由匹配,并根據(jù)匹配結(jié)果發(fā)送數(shù)據(jù)。在圖1所示的應(yīng)用場(chǎng)景下,路由器A在需要發(fā)送數(shù)據(jù)給路由器D時(shí),會(huì)選擇基于邏輯拓?fù)?或者邏輯拓?fù)?的路由表進(jìn)行路由匹配,假設(shè)路由器A基于邏輯拓?fù)?的路由表進(jìn)行路由匹配,則當(dāng)路由器A與路由器B之間的路徑發(fā)生故障時(shí),路由器A仍然會(huì)基于邏輯拓?fù)?的路由表進(jìn)行路由匹配,從而導(dǎo)致流量丟失。只有當(dāng)路由器A的路由協(xié)議(如OSPF、IS-IS或BGP等)感知到路由器A與路由器B之間的路徑發(fā)生故障后,才會(huì)刪除邏輯拓?fù)?的路由表,繼而使得路由器A能夠基于邏輯拓?fù)?的路由表進(jìn)行路由匹配,完成流量的切換。在上述實(shí)施方式下,當(dāng)發(fā)生路徑故障時(shí),流量收斂時(shí)間為故障檢測(cè)時(shí)間+路由協(xié)議重新計(jì)算并下發(fā)路由表的時(shí)間,其流量收斂速度慢。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種基于MTR的數(shù)據(jù)傳輸方法和設(shè)備,以實(shí)現(xiàn)流量的快速收斂,并可以減少路徑故障所導(dǎo)致的丟包情況。為了達(dá)到上述目的,本發(fā)明實(shí)施例提供一種基于多拓?fù)渎酚蒑TR的數(shù)據(jù)傳輸方法,該方法應(yīng)用于包括多個(gè)邏輯拓?fù)涞木W(wǎng)絡(luò)中,該方法包括以下步驟:網(wǎng)絡(luò)設(shè)備生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表,所述主路由為所述邏輯拓?fù)鋬?nèi)的路由,所述備路由為其它邏輯拓?fù)鋬?nèi)的路由,所述主路由和所述備路由對(duì)應(yīng)有相同的目的地址,并對(duì)應(yīng)有不同的出接口和下一跳;所述網(wǎng)絡(luò)設(shè)備在通過(guò)所述邏輯拓?fù)浒l(fā)送數(shù)據(jù)時(shí),利用所述數(shù)據(jù)的目的地址在所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中進(jìn)行路由匹配;如果匹配到的主路由的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由發(fā)送數(shù)據(jù);如果匹配到的主路由的路徑發(fā)生故障,則通過(guò)路由表中匹配到的主路由對(duì)應(yīng)的備路由發(fā)送數(shù)據(jù)。本發(fā)明實(shí)施例提供一種基于多拓?fù)渎酚蒑TR的數(shù)據(jù)傳輸設(shè)備,作為網(wǎng)絡(luò)設(shè)備應(yīng)用于包括多個(gè)邏輯拓?fù)涞木W(wǎng)絡(luò)中,所述網(wǎng)絡(luò)設(shè)備具體包括:生成模塊,用于生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表;其中,所述主路由為所述邏輯拓?fù)鋬?nèi)的路由,所述備路由為其它邏輯拓?fù)鋬?nèi)的路由,且所述主路由和所述備路由對(duì)應(yīng)有相同的目的地址,且所述主路由和所述備路由對(duì)應(yīng)有不同的出接口和下一跳;發(fā)送模塊,用于在通過(guò)所述邏輯拓?fù)浒l(fā)送數(shù)據(jù)時(shí),利用所述數(shù)據(jù)的目的地址在所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中進(jìn)行路由匹配;如果匹配到的主路由的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由發(fā)送數(shù)據(jù);如果匹配到的主路由的路徑發(fā)生故障,則通過(guò)路由表中匹配到的主路由對(duì)應(yīng)的備路由發(fā)送數(shù)據(jù)。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例至少具有以下優(yōu)點(diǎn):本發(fā)明實(shí)施例中,網(wǎng)絡(luò)設(shè)備通過(guò)生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由(邏輯拓?fù)鋬?nèi)的路由)和備路由(其它邏輯拓?fù)鋬?nèi)的路由)的路由表,從而在通過(guò)本邏輯拓?fù)浒l(fā)送數(shù)據(jù)時(shí),能夠在主路由對(duì)應(yīng)的路徑發(fā)生故障時(shí),通過(guò)路由表中其它邏輯拓?fù)鋬?nèi)的備路由發(fā)送數(shù)據(jù),繼而可以實(shí)現(xiàn)流量的快速收斂(其流量收斂時(shí)間為故障檢測(cè)時(shí)間),并可以減少路徑故障所導(dǎo)致的丟包情況和丟包率。附圖說(shuō)明圖1是現(xiàn)有技術(shù)中將一個(gè)物理拓?fù)鋭澐譃槎鄠€(gè)邏輯拓?fù)涞慕M網(wǎng)示意圖;圖2是本發(fā)明實(shí)施例提供的一種基于MTR的數(shù)據(jù)傳輸方法流程示意圖;圖3是本發(fā)明實(shí)施例中采用邏輯拓?fù)溟g插入路由方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表的流程示意圖;圖4是本發(fā)明實(shí)施例中采用邏輯拓?fù)溟g插入SPF節(jié)點(diǎn)方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表的流程示意圖;圖5是本發(fā)明實(shí)施例提供的一種基于MTR的數(shù)據(jù)傳輸設(shè)備結(jié)構(gòu)示意圖。具體實(shí)施方式針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明實(shí)施例提供一種基于MTR的數(shù)據(jù)傳輸方法,該方法應(yīng)用于包括多個(gè)邏輯拓?fù)涞木W(wǎng)絡(luò)中,以圖1為本發(fā)明實(shí)施例的應(yīng)用場(chǎng)景示意圖,對(duì)于由路由器A、路由器B、路由器C和路由器D組成的物理拓?fù)?,被劃分成由路由器A、路由器B和路由器D組成的邏輯拓?fù)?,以及由路由器A、路由器C和路由器D組成的邏輯拓?fù)?。其中,每一個(gè)單獨(dú)的邏輯拓?fù)涠夹枰鶕?jù)路由協(xié)議計(jì)算出本邏輯拓?fù)渌鶎?duì)應(yīng)的路由表,且屬于本邏輯拓?fù)涞臄?shù)據(jù)需要基于本邏輯拓?fù)涞穆酚杀磉M(jìn)行路由轉(zhuǎn)發(fā)。具體的,在圖1所示的應(yīng)用場(chǎng)景下,以O(shè)SPF協(xié)議為例,路由器A、路由器B、路由器C和路由器D之間建立OSPF鄰居。在路由器A、路由器B和路由器D上分別配置邏輯拓?fù)?,在路由器A和路由器B之間的接口使能邏輯拓?fù)?,在路由器B和路由器D之間的接口使能邏輯拓?fù)?。在路由器A、路由器C和路由器D上分別配置邏輯拓?fù)?,在路由器A和路由器C之間的接口使能邏輯拓?fù)?,在路由器C和路由器D之間的接口使能邏輯拓?fù)?。此外,路由器D上發(fā)布所有目的地址分別為D1、D2...Dn的n條路由,并將這n條路由分別發(fā)布到邏輯拓?fù)?以及邏輯拓?fù)?中;在路由器A上,對(duì)于邏輯拓?fù)?中到路由器D發(fā)布的這n條路由的下一跳為路由器B,對(duì)于邏輯拓?fù)?中到路由器D發(fā)布的這n條路由的下一跳為路由器C。如圖2所示,該基于MTR的數(shù)據(jù)傳輸方法包括以下步驟:步驟201,網(wǎng)絡(luò)設(shè)備生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表;其中,主路由為邏輯拓?fù)鋬?nèi)的路由,備路由為其它邏輯拓?fù)鋬?nèi)的路由,且主路由和備路由對(duì)應(yīng)有相同的目的地址,并對(duì)應(yīng)有不同的出接口和下一跳。在圖1所示的應(yīng)用場(chǎng)景下,網(wǎng)絡(luò)設(shè)備生成邏輯拓?fù)?對(duì)應(yīng)的包括主路由和備路由的路由表,并生成邏輯拓?fù)?對(duì)應(yīng)的包括主路由和備路由的路由表。路由器A在生成邏輯拓?fù)?對(duì)應(yīng)的路由表時(shí),路由器D所發(fā)布的所有目的地址分別為D1、D2...Dn,則該邏輯拓?fù)?對(duì)應(yīng)的路由表中,主路由1的目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址,主路由1對(duì)應(yīng)的備路由1的目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址;主路由2的目的地址為D2,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址,主路由2對(duì)應(yīng)的備路由2的目的地址為D2,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址;以此類推,主路由N的目的地址為Dn,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址,主路由N對(duì)應(yīng)的備路由N的目的地址為Dn,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址。路由器A在生成邏輯拓?fù)?對(duì)應(yīng)的路由表時(shí),路由器D所發(fā)布的所有目的地址分別為D1、D2...Dn,則該邏輯拓?fù)?對(duì)應(yīng)的路由表中,主路由1的目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址,主路由1對(duì)應(yīng)的備路由1的目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址;主路由2的目的地址為D2,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址,主路由2對(duì)應(yīng)的備路由2的目的地址為D2,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址;以此類推,主路由N的目的地址為Dn,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址,主路由N對(duì)應(yīng)的備路由N的目的地址為Dn,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址。步驟202,網(wǎng)絡(luò)設(shè)備在通過(guò)邏輯拓?fù)浒l(fā)送數(shù)據(jù)時(shí),利用數(shù)據(jù)的目的地址在邏輯拓?fù)鋵?duì)應(yīng)的路由表中進(jìn)行路由匹配;如果匹配到的主路由的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由發(fā)送數(shù)據(jù);如果匹配到的主路由的路徑發(fā)生故障,則通過(guò)路由表中匹配到的主路由對(duì)應(yīng)的備路由發(fā)送數(shù)據(jù)。在圖1所示的應(yīng)用場(chǎng)景下,假設(shè)數(shù)據(jù)的目的地址為D1,且基于邏輯拓?fù)?的路由表對(duì)數(shù)據(jù)進(jìn)行路由轉(zhuǎn)發(fā);基于此,路由器A在通過(guò)邏輯拓?fù)?發(fā)送該數(shù)據(jù)時(shí),利用該數(shù)據(jù)的目的地址在邏輯拓?fù)?對(duì)應(yīng)的路由表中進(jìn)行路由匹配,并匹配到邏輯拓?fù)?對(duì)應(yīng)的路由表中的主路由1(目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址),此時(shí)如果匹配到的主路由1的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由1發(fā)送數(shù)據(jù);如果匹配到的主路由1的路徑發(fā)生故障(如通過(guò)BFD(BidirectionalForwardingDetection,雙向轉(zhuǎn)發(fā)檢測(cè))報(bào)文快速檢測(cè)到主路由1的路徑發(fā)生故障),則通過(guò)匹配到的主路由1對(duì)應(yīng)的備路由1(目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址)發(fā)送數(shù)據(jù),從而快速將故障路徑發(fā)送的流量切換到另一路徑中發(fā)送,實(shí)現(xiàn)流量快速收斂。假設(shè)數(shù)據(jù)的目的地址為D1,且基于邏輯拓?fù)?的路由表對(duì)數(shù)據(jù)進(jìn)行路由轉(zhuǎn)發(fā);路由器A在通過(guò)邏輯拓?fù)?發(fā)送數(shù)據(jù)時(shí),利用數(shù)據(jù)的目的地址在邏輯拓?fù)?對(duì)應(yīng)的路由表中進(jìn)行路由匹配,并匹配到邏輯拓?fù)?對(duì)應(yīng)的路由表中的主路由1(目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址),如果匹配到的主路由1的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由1發(fā)送數(shù)據(jù);如果匹配到的主路由1的路徑發(fā)生故障,則通過(guò)匹配到的主路由1對(duì)應(yīng)的備路由1(目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址)發(fā)送數(shù)據(jù),從而快速將故障路徑發(fā)送的流量切換到另一路徑中發(fā)送,實(shí)現(xiàn)流量快速收斂。本發(fā)明實(shí)施例的優(yōu)選實(shí)施方式中,為了生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表,可以采用邏輯拓?fù)溟g插入路由方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表,或者,采用邏輯拓?fù)溟g插入SPF(ShortestPathFirst,最短路徑優(yōu)先)節(jié)點(diǎn)方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表;其中,采用邏輯拓?fù)溟g插入路由方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表的流程可以如圖3所示,采用邏輯拓?fù)溟g插入SPF節(jié)點(diǎn)方式生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表的流程可以如圖4所示。其中,采用邏輯拓?fù)溟g插入路由方式可以適用于所有單播路由協(xié)議,如:靜態(tài)路由,OSPF,IS-IS,BGP等;采用邏輯拓?fù)溟g插入SPF節(jié)點(diǎn)方式可以適用于鏈路狀態(tài)協(xié)議,如:OSPF和IS-IS。步驟301,網(wǎng)絡(luò)設(shè)備從其它邏輯拓?fù)鋵?duì)應(yīng)的路由表中選擇未被選擇過(guò)的路由,并判斷本邏輯拓?fù)鋵?duì)應(yīng)的路由表中是否存在當(dāng)前選擇路由的目的地址;如果是,則執(zhí)行步驟302;如果否,則執(zhí)行步驟303。進(jìn)一步的,在各邏輯拓?fù)涞穆酚捎?jì)算過(guò)程完成之后,如果本網(wǎng)絡(luò)設(shè)備支持邏輯拓?fù)溟g插入路由方式(即支持本發(fā)明實(shí)施例提供的實(shí)施方式),則執(zhí)行邏輯拓?fù)溟g插入路由的過(guò)程,即本網(wǎng)絡(luò)設(shè)備執(zhí)行上述步驟301。步驟302,網(wǎng)絡(luò)設(shè)備將本邏輯拓?fù)鋵?duì)應(yīng)的路由表中與當(dāng)前選擇路由具有相同目的地址的路由設(shè)置為主路由,將當(dāng)前選擇路由記錄到主路由備份列表;之后執(zhí)行步驟303。其中,主路由備份列表可以為單獨(dú)列表或?yàn)槁酚杀硪徊糠帧2襟E303,網(wǎng)絡(luò)設(shè)備判斷該其它邏輯拓?fù)鋵?duì)應(yīng)的路由表中是否有未被選擇過(guò)的路由;如果是,則執(zhí)行步驟301;如果否,則執(zhí)行步驟304。步驟304,網(wǎng)絡(luò)設(shè)備判斷是否還有本邏輯拓?fù)渲獾奈催x擇過(guò)路由的其它邏輯拓?fù)洌蝗绻?,則執(zhí)行步驟301;如果否,則執(zhí)行步驟305。步驟305,網(wǎng)絡(luò)設(shè)備從本邏輯拓?fù)鋵?duì)應(yīng)的路由表中選擇主路由,并從主路由備份列表中選擇路由作為該主路由的備路由,之后執(zhí)行步驟306。本發(fā)明實(shí)施例中,對(duì)于本邏輯拓?fù)鋵?duì)應(yīng)的路由表中的每條路由,如果步驟302中已經(jīng)設(shè)置某個(gè)路由為主路由,則該主路由在主路由備份列表中會(huì)有對(duì)應(yīng)的路由作為備路由;如果步驟302中沒(méi)有設(shè)置某個(gè)路由為主路由,則該路由在主路由備份列表中不會(huì)有對(duì)應(yīng)的路由作為備路由。進(jìn)一步的,對(duì)于本邏輯拓?fù)鋵?duì)應(yīng)的路由表中的每條主路由,當(dāng)主路由備份列表中只有對(duì)應(yīng)于該主路由的一個(gè)路由時(shí),網(wǎng)絡(luò)設(shè)備選擇該路由作為主路由的備路由;當(dāng)主路由備份列表中有對(duì)應(yīng)于該主路由的多個(gè)路由時(shí),網(wǎng)絡(luò)設(shè)備利用多個(gè)路由分別對(duì)應(yīng)的邏輯拓?fù)鋸亩鄠€(gè)路由中選擇一個(gè)路由作為主路由的備路由(如:當(dāng)邏輯拓?fù)?的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇邏輯拓?fù)?內(nèi)的路由作為主路由的備路由);或者,網(wǎng)絡(luò)設(shè)備利用多個(gè)路由分別對(duì)應(yīng)的出接口從多個(gè)路由中選擇一個(gè)路由作為主路由的備路由(如:當(dāng)出接口1的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇對(duì)應(yīng)于出接口1的路由作為主路由的備路由);或者,網(wǎng)絡(luò)設(shè)備利用多個(gè)路由分別對(duì)應(yīng)的下一跳從多個(gè)路由中選擇一個(gè)路由作為主路由的備路由(如:當(dāng)路由器B的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇對(duì)應(yīng)于路由器B的路由作為主路由的備路由);或者,網(wǎng)絡(luò)設(shè)備利用多個(gè)路由分別對(duì)應(yīng)的路徑開(kāi)銷值從多個(gè)路由中選擇一個(gè)路由作為主路由的備路由(如網(wǎng)絡(luò)設(shè)備優(yōu)先選擇路徑開(kāi)銷值最小的路由作為主路由的備路由)。步驟306,網(wǎng)絡(luò)設(shè)備在本邏輯拓?fù)鋵?duì)應(yīng)的路由表中記錄備路由的目的地址、出接口和下一跳,設(shè)置該備路由為主路由對(duì)應(yīng)的備路由。在圖1所示的應(yīng)用場(chǎng)景下,假設(shè)網(wǎng)絡(luò)設(shè)備為路由器A,本邏輯拓?fù)錇檫壿嬐負(fù)?,則圖3所示的處理流程可以具體如下所示。在步驟301中,路由器A從邏輯拓?fù)?對(duì)應(yīng)的路由表中選擇路由1(目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址),并確定邏輯拓?fù)?對(duì)應(yīng)的路由表中存在當(dāng)前選擇路由1的目的地址(目的地址D1),執(zhí)行步驟302。在步驟302中,路由器A將邏輯拓?fù)?對(duì)應(yīng)的路由表中與當(dāng)前選擇路由1具有相同目的地址的路由(目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址)設(shè)置為主路由1,并將當(dāng)前選擇路由1記錄到主路由備份列表。在步驟303中,路由器A確定邏輯拓?fù)?對(duì)應(yīng)的路由表中有未被選擇過(guò)的路由,繼續(xù)執(zhí)行步驟301,以此類推,當(dāng)路由器A從邏輯拓?fù)?對(duì)應(yīng)的路由表中選擇路由N(目的地址為Dn,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址)時(shí),確定邏輯拓?fù)?對(duì)應(yīng)的路由表中存在當(dāng)前選擇路由N的目的地址(目的地址Dn),將邏輯拓?fù)?對(duì)應(yīng)的路由表中與當(dāng)前選擇路由N具有相同目的地址的路由(目的地址為Dn,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址)設(shè)置為主路由N,并將當(dāng)前選擇路由N記錄到主路由備份列表。之后,路由器A確定邏輯拓?fù)?對(duì)應(yīng)的路由表中沒(méi)有未被選擇過(guò)的路由,并執(zhí)行步驟304。在步驟304中,路由器A確定沒(méi)有邏輯拓?fù)?之外的未選擇過(guò)路由的其它邏輯拓?fù)洌床淮嬖谖磮?zhí)行上述流程的邏輯拓?fù)?等),并執(zhí)行步驟305。在步驟305中,路由器A在邏輯拓?fù)?對(duì)應(yīng)的路由表中選擇主路由1(目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址),并從主路由備份列表中選擇路由1(目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址)作為該主路由1的備路由;以此類推,路由器A在邏輯拓?fù)?對(duì)應(yīng)的路由表中選擇主路由N(目的地址為Dn,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址),并從主路由備份列表中選擇路由N(目的地址為Dn,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址)作為該主路由N的備路由;之后執(zhí)行步驟306。在步驟306中,路由器A在邏輯拓?fù)?對(duì)應(yīng)的路由表中記錄路由1的目的地址(目的地址為D1)、出接口(路由器A上路由器A與路由器C之間接口)和下一跳(路由器C上路由器C與路由器A之間接口的地址),并設(shè)置該路由1為主路由1對(duì)應(yīng)的備路由;以此類推,路由器A在邏輯拓?fù)?對(duì)應(yīng)的路由表中記錄路由N的目的地址(目的地址為Dn)、出接口(路由器A上路由器A與路由器C之間接口)和下一跳(路由器C上路由器C與路由器A之間接口的地址),并設(shè)置該路由N為主路由N對(duì)應(yīng)的備路由。步驟401,網(wǎng)絡(luò)設(shè)備從其它邏輯拓?fù)渲羞x擇未被選擇過(guò)的SPF節(jié)點(diǎn),并判斷本邏輯拓?fù)渲惺欠翊嬖诋?dāng)前選擇的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟402;如果否,則執(zhí)行步驟403。進(jìn)一步的,如果本網(wǎng)絡(luò)設(shè)備支持邏輯拓?fù)溟g插入SPF節(jié)點(diǎn)方式(即支持本發(fā)明實(shí)施例提供的實(shí)施方式),則執(zhí)行邏輯拓?fù)溟g插入SPF節(jié)點(diǎn)的過(guò)程,即本網(wǎng)絡(luò)設(shè)備執(zhí)行上述步驟401。步驟402,網(wǎng)絡(luò)設(shè)備將當(dāng)前選擇的SPF節(jié)點(diǎn)以及當(dāng)前選擇的SPF節(jié)點(diǎn)在該其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳記錄到備份下一跳列表中;之后執(zhí)行步驟403。其中,備份下一跳列表可以為單獨(dú)列表或?yàn)槁酚杀硪徊糠帧2襟E403,網(wǎng)絡(luò)設(shè)備判斷該其它邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟401;如果否,則執(zhí)行步驟404。步驟404,網(wǎng)絡(luò)設(shè)備判斷是否還有本邏輯拓?fù)渲獾奈催x擇過(guò)SPF節(jié)點(diǎn)的其它邏輯拓?fù)?;如果是,則執(zhí)行步驟401;如果否,則執(zhí)行步驟405。步驟405,網(wǎng)絡(luò)設(shè)備從本邏輯拓?fù)渲羞x擇未被選擇過(guò)的SPF節(jié)點(diǎn),并判斷備份下一跳列表中是否存在該SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳;如果是,則執(zhí)行步驟406;如果否,則執(zhí)行步驟407。步驟406,網(wǎng)絡(luò)設(shè)備設(shè)置該SPF節(jié)點(diǎn)(即當(dāng)前選擇的SPF節(jié)點(diǎn))在本邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為該SPF節(jié)點(diǎn)的主出接口和主下一跳,并從備份下一跳列表中選擇該SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為該SPF節(jié)點(diǎn)的備出接口和備下一跳;之后執(zhí)行步驟407。本發(fā)明實(shí)施例的優(yōu)選實(shí)施方式中,網(wǎng)絡(luò)設(shè)備從備份下一跳列表中選擇SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳,具體包括:當(dāng)備份下一跳列表中只有對(duì)應(yīng)于SPF節(jié)點(diǎn)的一個(gè)出接口和下一跳時(shí),網(wǎng)絡(luò)設(shè)備選擇該出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳;當(dāng)備份下一跳列表中有對(duì)應(yīng)于SPF節(jié)點(diǎn)的多個(gè)出接口和下一跳時(shí),網(wǎng)絡(luò)設(shè)備利用各出接口和下一跳分別對(duì)應(yīng)的邏輯拓?fù)鋸亩鄠€(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳(如:當(dāng)邏輯拓?fù)?的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇邏輯拓?fù)?對(duì)應(yīng)的出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳);或者,網(wǎng)絡(luò)設(shè)備利用各出接口的權(quán)重情況(即優(yōu)先級(jí)情況)從多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳(如:當(dāng)出接口1的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇對(duì)應(yīng)于出接口1的出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳);或者,網(wǎng)絡(luò)設(shè)備利用各下一跳的權(quán)重情況(即優(yōu)先級(jí)情況)從多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳(如:當(dāng)路由器B的優(yōu)先級(jí)最高時(shí),網(wǎng)絡(luò)設(shè)備會(huì)優(yōu)先選擇對(duì)應(yīng)于路由器B的出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳);或者,網(wǎng)絡(luò)設(shè)備利用各出接口和下一跳分別對(duì)應(yīng)的路徑開(kāi)銷值從多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳(如網(wǎng)絡(luò)設(shè)備優(yōu)先選擇路徑開(kāi)銷值最小的出接口和下一跳為SPF節(jié)點(diǎn)的備出接口和備下一跳)。步驟407,網(wǎng)絡(luò)設(shè)備判斷本邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟405;如果否,則執(zhí)行步驟408。步驟408,網(wǎng)絡(luò)設(shè)備在生成本邏輯拓?fù)鋵?duì)應(yīng)的路由表時(shí),重新從本邏輯拓?fù)渲羞x擇未被選擇過(guò)的SPF節(jié)點(diǎn),并判斷該SPF節(jié)點(diǎn)是否對(duì)應(yīng)有備出接口和備下一跳;如果是,則執(zhí)行步驟409,如果否,則執(zhí)行步驟410。步驟409,網(wǎng)絡(luò)設(shè)備利用該SPF節(jié)點(diǎn)發(fā)布的所有目的地址的路由生成本邏輯拓?fù)鋵?duì)應(yīng)的路由表;每個(gè)目的地址與主出接口和主下一跳組成的路由為本邏輯拓?fù)鋵?duì)應(yīng)的路由表中的主路由,每個(gè)目的地址與備出接口和備下一跳組成的路由為本邏輯拓?fù)鋵?duì)應(yīng)的路由表中的備路由;之后執(zhí)行步驟411。步驟410,網(wǎng)絡(luò)設(shè)備利用SPF節(jié)點(diǎn)發(fā)布的所有目的地址的路由生成本邏輯拓?fù)鋵?duì)應(yīng)的路由表;每個(gè)目的地址與SPF節(jié)點(diǎn)在邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳組成的路由為邏輯拓?fù)鋵?duì)應(yīng)的路由表中的路由;之后執(zhí)行步驟411。步驟411,網(wǎng)絡(luò)設(shè)備判斷本邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟408;如果否,則路由表生成過(guò)程結(jié)束。在圖1所示的應(yīng)用場(chǎng)景下,假設(shè)網(wǎng)絡(luò)設(shè)備為路由器A,本邏輯拓?fù)錇檫壿嬐負(fù)?,其它邏輯拓?fù)錇檫壿嬐負(fù)?,邏輯拓?fù)?中的SPF節(jié)點(diǎn)為路由器A、路由器B和路由器D,邏輯拓?fù)?中的SPF節(jié)點(diǎn)為路由器A、路由器C和路由器D,基于此,則圖4所示的處理流程可以具體如下所示。在步驟401中,路由器A從邏輯拓?fù)?中選擇SPF節(jié)點(diǎn)為路由器C,并確定邏輯拓?fù)?的SPF節(jié)點(diǎn)中沒(méi)有路由器C,執(zhí)行步驟403。在步驟403中,路由器A確定邏輯拓?fù)?中有未被選擇過(guò)的SPF節(jié)點(diǎn),該未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器D,執(zhí)行步驟401。在步驟401中,路由器A從邏輯拓?fù)?中選擇SPF節(jié)點(diǎn)為路由器D,并確定邏輯拓?fù)?的SPF節(jié)點(diǎn)中有路由器D,執(zhí)行步驟402。在步驟402中,路由器A將當(dāng)前選擇的路由器D以及路由器D在邏輯拓?fù)?中對(duì)應(yīng)的出接口(出接口為路由器A上路由器A與路由器C之間接口)和下一跳(下一跳為路由器C上路由器C與路由器A之間接口的地址)記錄到備份下一跳列表中;之后執(zhí)行步驟403。在步驟403中,路由器A確定邏輯拓?fù)?中沒(méi)有未被選擇過(guò)的SPF節(jié)點(diǎn),執(zhí)行步驟404。在步驟404中,路由器A確定沒(méi)有邏輯拓?fù)?之外的未選擇過(guò)SPF節(jié)點(diǎn)的其它邏輯拓?fù)洌床淮嬖谖磮?zhí)行上述流程的邏輯拓?fù)?等),執(zhí)行步驟405。在步驟405中,路由器A從本邏輯拓?fù)?中選擇未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器B,并確定上述備份下一跳列表中不存在該路由器B在其它邏輯拓?fù)洌ㄟ壿嬐負(fù)?)中對(duì)應(yīng)的出接口和下一跳,需要執(zhí)行步驟407。在步驟407中,路由器A確定邏輯拓?fù)?中有未被選擇過(guò)的SPF節(jié)點(diǎn),該未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器D,需要執(zhí)行步驟405。在步驟405中,路由器A從本邏輯拓?fù)?中選擇未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器D,并確定備份下一跳列表中存在該路由器D在其它邏輯拓?fù)洌催壿嬐負(fù)?)中對(duì)應(yīng)的出接口和下一跳;需要執(zhí)行步驟406。在步驟406中,路由器A設(shè)置該路由器D在本邏輯拓?fù)?中對(duì)應(yīng)的出接口(出接口為路由器A上路由器A與路由器B之間接口)和下一跳(下一跳為路由器B上路由器B與路由器A之間接口的地址)為該路由器D對(duì)應(yīng)的主出接口和主下一跳,并從備份下一跳列表中選擇該路由器D在其它邏輯拓?fù)洌ㄟ壿嬐負(fù)?)中對(duì)應(yīng)的出接口(出接口為路由器A上路由器A與路由器C之間接口)和下一跳(下一跳為路由器C上路由器C與路由器A之間接口的地址)為該路由器D對(duì)應(yīng)的備出接口和備下一跳;之后執(zhí)行步驟407。在步驟407中,路由器A確定邏輯拓?fù)?中沒(méi)有未被選擇過(guò)的SPF節(jié)點(diǎn)(即所有SPF節(jié)點(diǎn)均執(zhí)行過(guò)上述流程),需要執(zhí)行步驟408。在步驟408中,路由器A在生成本邏輯拓?fù)?對(duì)應(yīng)的路由表時(shí),需要重新從本邏輯拓?fù)?中選擇未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器B,并確定該路由器B沒(méi)有備出接口和備下一跳;需要執(zhí)行步驟410。步驟410的處理為現(xiàn)有技術(shù),在此不再贅述;步驟410之后執(zhí)行步驟411。在步驟411中,路由器A確定邏輯拓?fù)?中有未被選擇過(guò)的SPF節(jié)點(diǎn),該未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器D,需要繼續(xù)執(zhí)行步驟408。在步驟408中,路由器A在生成本邏輯拓?fù)?對(duì)應(yīng)的路由表時(shí),需要重新從本邏輯拓?fù)?中選擇未被選擇過(guò)的SPF節(jié)點(diǎn)為路由器D,并確定該路由器D有備出接口和備下一跳;需要執(zhí)行步驟409。在步驟409中,路由器A利用該路由器D發(fā)布的所有目的地址的路由生成本邏輯拓?fù)?對(duì)應(yīng)的路由表;其中,在生成本邏輯拓?fù)?對(duì)應(yīng)的路由表時(shí),每個(gè)目的地址與主出接口(出接口為路由器A上路由器A與路由器B之間接口)和主下一跳(下一跳為路由器B上路由器B與路由器A之間接口的地址)組成的路由為本邏輯拓?fù)?對(duì)應(yīng)的路由表中的主路由,每個(gè)目的地址與備出接口(出接口為路由器A上路由器A與路由器C之間接口)和備下一跳(下一跳為路由器C上路由器C與路由器A之間接口的地址)組成的路由為本邏輯拓?fù)?對(duì)應(yīng)的路由表中的備路由;之后執(zhí)行步驟411。具體的,對(duì)于路由器D發(fā)布的目的地址D1,主路由為目的地址為D1,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址,備路由為目的地址為D1,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址;以此類推,對(duì)于路由器D發(fā)布的目的地址Dn,主路由為目的地址為Dn,出接口為路由器A上路由器A與路由器B之間接口,下一跳為路由器B上路由器B與路由器A之間接口的地址,備路由為目的地址為Dn,出接口為路由器A上路由器A與路由器C之間接口,下一跳為路由器C上路由器C與路由器A之間接口的地址。在步驟411中,路由器A確定邏輯拓?fù)?中沒(méi)有未被選擇過(guò)的SPF節(jié)點(diǎn)(即所有SPF節(jié)點(diǎn)均執(zhí)行過(guò)上述流程),路由表生成過(guò)程結(jié)束。本發(fā)明的上述實(shí)施例中,可以通過(guò)策略控制邏輯拓?fù)溟g插入的路由或者SPF節(jié)點(diǎn);例如,在BGP網(wǎng)絡(luò)下,可以只需要插入鄰居需要迭代依賴的路由。本發(fā)明的上述實(shí)施例中,可以應(yīng)用在三層MTR路由上,也適用于二層的MTR路由,如:IS-IS在二層上的應(yīng)用,通過(guò)SPB(ShortestPathBridging,最短路徑橋接)或TRILL(TransparentInterconnectionofLotsofLinks,多鏈接半透明互聯(lián))協(xié)議來(lái)發(fā)布MAC(MediaAccessControl,介質(zhì)訪問(wèn)控制)地址,計(jì)算二層的轉(zhuǎn)發(fā)表(即MAC表),以實(shí)現(xiàn)二層MAC表的邏輯多拓?fù)湎嗷浞?,并?shí)現(xiàn)MAC地址的主備路徑。此外,IS-IS的三層MTR技術(shù)也適用于SPB或TRILL中實(shí)現(xiàn)MTR技術(shù)?;谂c上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種基于多拓?fù)渎酚蒑TR的數(shù)據(jù)傳輸設(shè)備,作為網(wǎng)絡(luò)設(shè)備應(yīng)用于包括多個(gè)邏輯拓?fù)涞木W(wǎng)絡(luò)中,如圖5所示,所述網(wǎng)絡(luò)設(shè)備具體包括:生成模塊11,用于生成邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表;其中,所述主路由為所述邏輯拓?fù)鋬?nèi)的路由,所述備路由為其它邏輯拓?fù)鋬?nèi)的路由,且所述主路由和所述備路由對(duì)應(yīng)有相同的目的地址,且所述主路由和所述備路由對(duì)應(yīng)有不同的出接口和下一跳;發(fā)送模塊12,用于在通過(guò)所述邏輯拓?fù)浒l(fā)送數(shù)據(jù)時(shí),利用所述數(shù)據(jù)的目的地址在所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中進(jìn)行路由匹配;如果匹配到的主路由的路徑?jīng)]有發(fā)生故障,則通過(guò)匹配到的主路由發(fā)送數(shù)據(jù);如果匹配到的主路由的路徑發(fā)生故障,則通過(guò)路由表中匹配到的主路由對(duì)應(yīng)的備路由發(fā)送數(shù)據(jù)。所述生成模塊11,具體用于通過(guò)如下步驟生成所述邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表:步驟A1、從其它邏輯拓?fù)鋵?duì)應(yīng)的路由表中選擇未被選擇過(guò)的路由,并判斷所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中是否存在當(dāng)前選擇路由的目的地址;如果是,則執(zhí)行步驟B1;如果否,則執(zhí)行步驟C1;步驟B1、將所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中與所述當(dāng)前選擇路由具有相同目的地址的路由設(shè)置為主路由,并將所述當(dāng)前選擇路由記錄到主路由備份列表中;之后執(zhí)行步驟C1;步驟C1、判斷所述其它邏輯拓?fù)鋵?duì)應(yīng)的路由表中是否有未被選擇過(guò)的路由;如果是,則執(zhí)行步驟A1;如果否,則執(zhí)行步驟D1;步驟D1、判斷是否還有所述邏輯拓?fù)渲獾奈催x擇過(guò)路由的其它邏輯拓?fù)?;如果是,則執(zhí)行步驟A1;如果否,則執(zhí)行步驟E1;步驟E1、從所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中選擇主路由,從所述主路由備份列表中選擇路由作為所述主路由的備路由;之后執(zhí)行步驟F1;步驟F1、在所述邏輯拓?fù)鋵?duì)應(yīng)的路由表中記錄所述備路由的目的地址、出接口和下一跳,設(shè)置所述備路由為所述主路由對(duì)應(yīng)的備路由。所述生成模塊11,進(jìn)一步用于在從所述主路由備份列表中選擇路由作為所述主路由的備路由時(shí),當(dāng)所述主路由備份列表中有對(duì)應(yīng)于所述主路由的多個(gè)路由時(shí),利用所述多個(gè)路由分別對(duì)應(yīng)的邏輯拓?fù)鋸乃龆鄠€(gè)路由中選擇一個(gè)路由作為所述主路由的備路由;或者,利用所述多個(gè)路由分別對(duì)應(yīng)的出接口從所述多個(gè)路由中選擇一個(gè)路由作為所述主路由的備路由;或者,利用所述多個(gè)路由分別對(duì)應(yīng)的下一跳從所述多個(gè)路由中選擇一個(gè)路由作為所述主路由的備路由;或者,利用所述多個(gè)路由分別對(duì)應(yīng)的路徑開(kāi)銷值從所述多個(gè)路由中選擇一個(gè)路由作為所述主路由的備路由。所述生成模塊11,具體用于通過(guò)如下步驟生成所述邏輯拓?fù)鋵?duì)應(yīng)的包括主路由和備路由的路由表:步驟A2、從其它邏輯拓?fù)渲羞x擇未被選擇過(guò)的最短路徑優(yōu)先SPF節(jié)點(diǎn),并判斷所述邏輯拓?fù)渲惺欠翊嬖诋?dāng)前選擇的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟B2;如果否,則執(zhí)行步驟C2;步驟B2、將所述當(dāng)前選擇的SPF節(jié)點(diǎn)以及所述當(dāng)前選擇的SPF節(jié)點(diǎn)在所述其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳記錄到備份下一跳列表中;之后執(zhí)行步驟C2;步驟C2、判斷所述其它邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟A2;如果否,則執(zhí)行步驟D2;步驟D2、判斷是否還有所述邏輯拓?fù)渲獾奈催x擇過(guò)SPF節(jié)點(diǎn)的其它邏輯拓?fù)?;如果是,則執(zhí)行步驟A2;如果否,則執(zhí)行步驟E2;步驟E2、從所述邏輯拓?fù)渲羞x擇未被選擇過(guò)的SPF節(jié)點(diǎn),并判斷所述備份下一跳列表中是否存在所述SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳;如果是,則執(zhí)行步驟F2;如果否,則執(zhí)行步驟G2;步驟F2、設(shè)置所述SPF節(jié)點(diǎn)在所述邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為所述SPF節(jié)點(diǎn)的主出接口和主下一跳,并從所述備份下一跳列表中選擇所述SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳;之后執(zhí)行步驟G2;步驟G2、判斷所述邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟E2;如果否,則執(zhí)行步驟H2;步驟H2、在生成所述邏輯拓?fù)鋵?duì)應(yīng)的路由表時(shí),重新從所述邏輯拓?fù)渲羞x擇未被選擇過(guò)的SPF節(jié)點(diǎn),并判斷該SPF節(jié)點(diǎn)是否對(duì)應(yīng)有備出接口和備下一跳;如果是,則執(zhí)行步驟I2,如果否,則執(zhí)行步驟J2;步驟I2、利用該SPF節(jié)點(diǎn)發(fā)布的所有目的地址的路由生成所述邏輯拓?fù)鋵?duì)應(yīng)的路由表;其中,每個(gè)目的地址與主出接口和主下一跳組成的路由為邏輯拓?fù)鋵?duì)應(yīng)的路由表中的主路由,每個(gè)目的地址與備出接口和備下一跳組成的路由為邏輯拓?fù)鋵?duì)應(yīng)的路由表中的備路由;之后執(zhí)行步驟K2;步驟J2、利用該SPF節(jié)點(diǎn)發(fā)布的所有目的地址的路由生成所述邏輯拓?fù)鋵?duì)應(yīng)的路由表;每個(gè)目的地址與該SPF節(jié)點(diǎn)在所述邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳組成的路由為邏輯拓?fù)鋵?duì)應(yīng)的路由表中的路由;之后執(zhí)行步驟K2;步驟K2、判斷所述邏輯拓?fù)渲惺欠裼形幢贿x擇過(guò)的SPF節(jié)點(diǎn);如果是,則執(zhí)行步驟H2;如果否,則路由表生成過(guò)程結(jié)束。所述生成模塊11c,進(jìn)一步用于在從所述備份下一跳列表中選擇所述SPF節(jié)點(diǎn)在其它邏輯拓?fù)渲袑?duì)應(yīng)的出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳時(shí),當(dāng)所述備份下一跳列表中有對(duì)應(yīng)于所述SPF節(jié)點(diǎn)的多個(gè)出接口和下一跳時(shí),利用各出接口和下一跳分別對(duì)應(yīng)的邏輯拓?fù)鋸乃龆鄠€(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳;或者,利用各出接口的權(quán)重情況從所述多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳;或者,利用各下一跳的權(quán)重情況從所述多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳;或者,利用各出接口和下一跳分別對(duì)應(yīng)的路徑開(kāi)銷值從所述多個(gè)出接口和下一跳中選擇一個(gè)出接口和下一跳為所述SPF節(jié)點(diǎn)的備出接口和備下一跳。其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開(kāi)的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。