專利名稱::一種距離向量路由協(xié)議自愈的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
,特別涉及一種距離向量路由協(xié)議自愈的方法和系統(tǒng)。
背景技術(shù):
:因特網(wǎng)在現(xiàn)代生活中扮演越來(lái)越重要的角色,但是頻繁發(fā)生的鏈路和節(jié)點(diǎn)故障嚴(yán)重影響了因特網(wǎng)的服務(wù)質(zhì)量。當(dāng)出現(xiàn)鏈路或節(jié)點(diǎn)故障時(shí),動(dòng)態(tài)路由協(xié)議通過(guò)路由器偵察連接鏈路的故障,然后將故障信息散布到整個(gè)網(wǎng)絡(luò)。網(wǎng)絡(luò)中的節(jié)點(diǎn)按照更新的網(wǎng)絡(luò)拓樸信息重新計(jì)算路由表。但是網(wǎng)絡(luò)從一個(gè)故障中恢復(fù)至少需要幾秒的時(shí)間。在這個(gè)恢復(fù)時(shí)間段內(nèi),一些網(wǎng)絡(luò)地址是不可達(dá)的,所以到達(dá)這些網(wǎng)絡(luò)地址的數(shù)據(jù)包將全部被丟棄。當(dāng)前的高速網(wǎng)絡(luò)中,很短的恢復(fù)時(shí)間都會(huì)導(dǎo)致大量的數(shù)據(jù)包丟失。例如,一個(gè)OC-48(2.4Gbit/secbandwidth)鏈路的損壞,IO秒的恢復(fù)時(shí)間將會(huì)導(dǎo)致30,000,000個(gè)數(shù)據(jù)包被丟失。這種數(shù)據(jù)包的丟失反過(guò)來(lái)會(huì)影響傳輸控制協(xié)議(TCP,TransmissionControlProtocol)的l丸行。嚴(yán)重的是,這種影響對(duì)于傳_互耳關(guān)網(wǎng)十辦i義i吾音4支術(shù)(VoIP,VoiceDeliveredUsingtheInternetProtocol)這種連續(xù)的多媒體應(yīng)用服務(wù)來(lái)說(shuō)這樣的中斷是不允許的。為了應(yīng)對(duì)轉(zhuǎn)發(fā)被中斷直至最優(yōu)路徑被重新計(jì)算出來(lái)之前仍然能夠保持網(wǎng)絡(luò)的可用,目前有兩種方案1、反應(yīng)式旨在提高應(yīng)對(duì)故障的能力,可以分為完全泛洪和有限泛洪。完全泛洪是指路由更新被泛洪到全網(wǎng);有限泛洪是指路由更新被限制在有限數(shù)目的路由器內(nèi)泛洪。但是由于目前網(wǎng)絡(luò)中大多數(shù)的故障都是短暫的,太過(guò)頻繁地觸發(fā)重收斂可能引發(fā)路由抖動(dòng),增加網(wǎng)絡(luò)的不穩(wěn)定性。因此,通過(guò)加快路由協(xié)議的收斂時(shí)間來(lái)減小故障引發(fā)的丟包率從這種意義上講已經(jīng)達(dá)到了極限。2006年Cisco公司的研究顯示,可以實(shí)現(xiàn)內(nèi)部網(wǎng)關(guān)協(xié)議(IGP,InteriorGatewayProtocol)的收斂時(shí)間接近500ms,要達(dá)到VoIP、網(wǎng)絡(luò)電視或視頻會(huì)議等實(shí)時(shí)業(yè)務(wù)要求的50ms以下的延遲是不可能的。2、先應(yīng)式旨在提前計(jì)算備份下一跳,在故障發(fā)生時(shí)對(duì)故障進(jìn)行本地處理。主要有IP快速重-各由(IPfastrerouting)、故障遲緩i洛由(FailureInsensitiveRouting)、偏轉(zhuǎn)路由(Deflection-BasedAlternateRouting)、每目的多可行下一跳(MultipleViableNextHopsperDestination)、多拓樸路由(Multi-topologyrouting)、多配置^各由(Multi-configurationrouting)及彈性路由層(Resilientroutinglayers)等。但是先應(yīng)式的缺點(diǎn)是只能夠抵抗網(wǎng)絡(luò)中單節(jié)點(diǎn)或單鏈路的故障,并且在各種拓樸條件下采用不同的方法,復(fù)雜度相對(duì)較高。綜上所述,現(xiàn)有技術(shù)還不存在有效處理多鏈路或多節(jié)點(diǎn)同時(shí)或相繼故障的距離向量路由協(xié)議的快速自愈方法。
發(fā)明內(nèi)容本發(fā)明要解決的問(wèn)題是提供一種距離向量路由協(xié)議自愈的方法和系統(tǒng),能夠在多鏈路或多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)快速進(jìn)行自愈。本發(fā)明提供一種距離向量路由協(xié)議自愈的方法,包括當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在所述故障信息抑制時(shí)間內(nèi),從備份下一跳集合中選取備用下一跳進(jìn)行本i也重路由;如果所述故障信息抑制時(shí)間已經(jīng)達(dá)到,所述故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。優(yōu)選地,所述當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間之前還包括生成鄰居路由數(shù)據(jù)庫(kù);由上述鄰居路由數(shù)據(jù)庫(kù)中的路由信息為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合。優(yōu)選地,所述生成鄰居路由數(shù)據(jù)庫(kù)具體為接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表;按照鄰居路由數(shù)據(jù)庫(kù)的格式修改鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息;查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息;如果是,則刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù);如果否,則將修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。優(yōu)選地,所述由上述鄰居路由數(shù)據(jù)庫(kù)中的路由信息為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合具體為從所述鄰居路由數(shù)據(jù)庫(kù)中選出到達(dá)目的節(jié)點(diǎn)的所有路由信息;按照度量值將所述路由信息進(jìn)行升序排序;從排好序的路由信息中依次選出對(duì)應(yīng)的鄰居節(jié)點(diǎn),其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表;剩下的鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備份下一跳集合。優(yōu)選地,所述從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由,具體為A:檢查備用下一跳集合是否為空,如果是,則丟棄轉(zhuǎn)發(fā)的數(shù)據(jù)包;如果否,則從備份下一跳集合中選取第一個(gè)備用節(jié)點(diǎn);B:判斷所述第一個(gè)備用節(jié)點(diǎn)是否可達(dá),如果否,則從所述備用下一跳集合中刪除該節(jié)點(diǎn),返回步驟A;如果是,則將故障節(jié)點(diǎn)的信息添加到故障信息中,將所述數(shù)據(jù)包轉(zhuǎn)發(fā)到所述第一個(gè)備用節(jié)點(diǎn)。優(yōu)選地,所述度量值是鄰居節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)的距離加1。本發(fā)明還提供一種距離向量路由協(xié)議自愈的系統(tǒng),包括定時(shí)器、本地重路由單元和更新單元;所述定時(shí)器,用于當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在所述定時(shí)器設(shè)置的節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)之前,所述本地重路由單元,用于從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果所述節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)時(shí),所述故障節(jié)點(diǎn)還未恢復(fù)正常,所述更新單元,用于進(jìn)行觸發(fā)路由更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。優(yōu)選地,還包括與所述本地重路由單元連接的鄰居路由數(shù)據(jù)庫(kù)生成單元和備^f分下一跳集合生成單元;所述鄰居路由數(shù)據(jù)庫(kù)生成單元,用于生成鄰居路由數(shù)據(jù)庫(kù);所述備份下一跳集合生成單元,用于根據(jù)所述鄰居路由數(shù)據(jù)庫(kù)生成單元中的路由信息生成備份下一跳集合。優(yōu)選地,所述鄰居路由數(shù)據(jù)庫(kù)生成單元具體包括接收模塊、修改模塊和更新模塊;所述接收模塊,用于接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表;所述修改模塊,用于按照鄰居路由數(shù)據(jù)庫(kù)的格式修改接收模塊接收的鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息;所述更新模塊,用于查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息;如果是,則刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改模塊修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù);如果否,則將修改模塊修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。優(yōu)選地,所述備份下一跳集合生成單元具體包括選擇模塊、排序模塊和生成模塊;所述選擇模塊,用于從所述鄰居路由數(shù)據(jù)庫(kù)中選出到達(dá)目的節(jié)點(diǎn)的所有路由信息;所述排序模塊,用于按照度量值將所述選擇模塊選擇出的路由信息進(jìn)行升序排序;所述生成模塊,用于從所述排序模塊排好序的路由信息中依次選出對(duì)應(yīng)的鄰居節(jié)點(diǎn),其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表;剩下的鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備份下一跳集合。優(yōu)選地,所述本地重路由單元具體包括檢查模塊、丟棄模塊、選擇模塊、判斷模塊、刪除模塊、添加模塊和轉(zhuǎn)發(fā)模塊;所述檢查模塊,用于檢查備用下一跳集合是否為空;當(dāng)檢查模塊檢查備用下一跳集合為空時(shí),所述丟棄模塊,用于丟棄數(shù)據(jù)包;當(dāng)檢查模塊檢查備用下一跳集合非空時(shí),所述選擇模塊,用于從所述備份下一跳集合中選取第一個(gè)備用節(jié)點(diǎn);所述判斷模塊,用于判斷所述第一個(gè)備用節(jié)點(diǎn)是否可達(dá);當(dāng)所述判斷模塊判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),所述刪除模塊,用于從所述備用下一跳集合中刪除該節(jié)點(diǎn),所述檢查模塊重新檢查備用下一跳集合是否為空;當(dāng)所述判斷模塊判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),所述添加模塊,用于將該故障節(jié)點(diǎn)的信息添加到故障信息中;所述轉(zhuǎn)發(fā)模塊,用于將所述數(shù)據(jù)包轉(zhuǎn)發(fā)到所述第一個(gè)備用節(jié)點(diǎn)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明提供的距離向量路由協(xié)議快速自愈的方法,當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在故障信息抑制時(shí)間到達(dá)之前,如果故障節(jié)點(diǎn)還未恢復(fù),則從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果故障信息抑制時(shí)間已經(jīng)達(dá)到,故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。本發(fā)明提供的自愈方法,當(dāng)網(wǎng)絡(luò)中有節(jié)點(diǎn)出現(xiàn)故障時(shí),不立即觸發(fā)更新,而是設(shè)置一個(gè)故障信息抑制時(shí)間,在這段時(shí)間內(nèi),可以通過(guò)備用下一跳集合選取可用的下一跳節(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),這樣可以避免頻繁觸發(fā)更新而導(dǎo)致網(wǎng)絡(luò)抖動(dòng),造成網(wǎng)絡(luò)不穩(wěn)定。由于本發(fā)明提供了備份下一跳集合,因此可以在多鏈路和多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)選取可達(dá)節(jié)點(diǎn)進(jìn)行快速自愈。圖l是基于本發(fā)明方法第一實(shí)施例流程圖;圖2是基于本發(fā)明方法第二實(shí)施例流程圖;圖3是基于本發(fā)明生成鄰居^各由數(shù)據(jù)庫(kù)的流程圖;圖4是基于本發(fā)明為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合的流程圖;圖5是基于本發(fā)明節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)流程圖;圖6是基于本發(fā)明節(jié)點(diǎn)發(fā)現(xiàn)鄰居節(jié)點(diǎn)發(fā)生故障時(shí)的處理流程圖;圖7是基于本發(fā)明系統(tǒng)第一實(shí)施例結(jié)構(gòu)圖;圖8是基于本發(fā)明系統(tǒng)第二實(shí)施例結(jié)構(gòu)圖;圖9是基于本發(fā)明鄰居路由數(shù)據(jù)庫(kù)的結(jié)構(gòu)圖;圖IO是基于本發(fā)明備份下一跳集合生成單元的結(jié)構(gòu)圖;圖ll是基于本發(fā)明本地重路由單元的結(jié)構(gòu)圖。具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式做詳細(xì)的說(shuō)明。于本發(fā)明方法第一實(shí)施例流程圖。S101:當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間。一般節(jié)點(diǎn)故障都是短暫故障,大約40s左右時(shí)間會(huì)自動(dòng)恢復(fù)正常。故障信息抑制時(shí)間設(shè)置稍微大于故障節(jié)點(diǎn)自動(dòng)恢復(fù)正常的時(shí)間段即可。S102:在所述故障信息抑制時(shí)間內(nèi),從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由。當(dāng)節(jié)點(diǎn)發(fā)生故障時(shí),不是立即進(jìn)行觸發(fā)更新,而是在故障信息抑制時(shí)間內(nèi),進(jìn)行本地重路由。這樣可以避免頻繁觸發(fā)更新造成網(wǎng)絡(luò)不穩(wěn)定。S103:如果所述故障信息抑制時(shí)間已經(jīng)達(dá)到,所述故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。本發(fā)明提供的距離向量路由協(xié)議自愈的方法,提供了備份下一跳集合,當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),可以從備份下一跳集合中選取可達(dá)備用下一跳轉(zhuǎn)發(fā)數(shù)據(jù)包。因此可以在多鏈路和多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)選取可達(dá)節(jié)點(diǎn)進(jìn)行快速自愈。參見(jiàn)圖2,該圖為基于本發(fā)明方法第二實(shí)施例流程圖。方法第二實(shí)施例與方法第一實(shí)施例的區(qū)別是在S101之前增加了預(yù)處理步驟S201和S202,S203-S205與S101-S103相同,在此不再贅述。S201:節(jié)點(diǎn)生成鄰居路由數(shù)據(jù)庫(kù)。需要說(shuō)明的是,上述節(jié)點(diǎn)可以為任意一個(gè)節(jié)點(diǎn)。S202:由上述鄰居路由數(shù)據(jù)庫(kù)中的路由信息為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合。鄰居路由數(shù)據(jù)庫(kù)的格式參見(jiàn)表1。表1dest一idneighbournexthopcostdestjd代表目的節(jié)點(diǎn)的地址。neighbour代表發(fā)送更新消息(update)創(chuàng)建了這個(gè)條目的鄰居節(jié)點(diǎn),即這個(gè)路由的下一跳。nexthcjp代表鄰居節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)的下一跳。cost代表該節(jié)點(diǎn)到目的節(jié)點(diǎn)的距離,其等于鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的距離加1。下面結(jié)合圖3說(shuō)明如何生成鄰居路由數(shù)據(jù)庫(kù)。參見(jiàn)圖3,該圖為基于本發(fā)明生成鄰居路由數(shù)據(jù)庫(kù)的流程圖。S301:接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表。S302:按照鄰居路由數(shù)據(jù)庫(kù)的格式修改鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息。S303:查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息,如果是,則執(zhí)行S304;如果否,則執(zhí)行S305。S304:刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。S305:將修文后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。下面以路由信息協(xié)議(RIP,RoutingInformationProtocol)為例介紹其鄰居路由數(shù)據(jù)庫(kù)的生成過(guò)程(1)節(jié)點(diǎn)Fo接收鄰居節(jié)點(diǎn)F"w發(fā)送的路由更新消息,其格式均為<dest—id,nexthop,costl>。需要說(shuō)明的是,costl代表鄰居節(jié)點(diǎn)F^到目的節(jié)點(diǎn)的距離。(2)將上述路由更新消息》務(wù)改為〈dest—id,neighbour,nexthop,cost>。其中dest—id是目的節(jié)點(diǎn)的地址。neighbour表示發(fā)送update創(chuàng)建了這個(gè)條目的鄰居節(jié)點(diǎn),即這個(gè)路由的下一跳。nexthop表示鄰居節(jié)點(diǎn)&到達(dá)目的節(jié)點(diǎn)的下一跳。cost^C表節(jié)點(diǎn)Fo到達(dá)目的節(jié)點(diǎn)的3巨離,cost=cost1+1。(3)將鄰居路由數(shù)據(jù)庫(kù)中neighbour為^的所有項(xiàng)都刪除。(4)將修改后的路由更新消息存入鄰居路由數(shù)據(jù)庫(kù)。下面結(jié)合圖4說(shuō)明如何生成備份下一跳集合。參見(jiàn)圖4,該圖為基于本發(fā)明為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合的流程圖。S401:從鄰居路由數(shù)據(jù)庫(kù)中取出可以到達(dá)目的節(jié)點(diǎn)的所有路由信息。S402:按照度量值將這些路由信息進(jìn)行升序排序。iiS403:從這些排過(guò)序的路由信息中依次取出對(duì)應(yīng)的鄰居節(jié)點(diǎn);其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表。其他鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備份下一跳集合。下面以RIP為例介紹節(jié)點(diǎn)Fo為目的節(jié)點(diǎn)Fo生成備份下一跳集合的過(guò)程。(1)節(jié)點(diǎn)K從其鄰居路由數(shù)據(jù)庫(kù)中取出所有dest—id為J^的路由信息(Ri,R2,……,Rn)。(2)將路由信息(RpR2,......,Rn)按照其度量值升序進(jìn)行排列,得到(R',,R'2,......,R'n),這些路由消息中的neighbour為(N,,N2,......,Nn)。(3)將鄰居節(jié)點(diǎn)N!設(shè)置為主要下一跳,(N2,......,Nn)為到達(dá)目的節(jié)點(diǎn)J^的備份下一跳集合。圖3和圖4所述實(shí)施例是本發(fā)明提供的距離向量路由協(xié)議自愈方法中預(yù)先的處理工作,下面介紹在這些工作準(zhǔn)備完以后的數(shù)據(jù)處理流程。參見(jiàn)圖5,該圖為基于本發(fā)明節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)流程圖。S501:檢查數(shù)據(jù)包中攜帶的故障信息,如果故障信息非空,對(duì)故障節(jié)點(diǎn)采取避讓策略。在進(jìn)行路由選擇時(shí),不選擇這些故障節(jié)點(diǎn)作為下一跳,也不選擇以這些故障節(jié)點(diǎn)作為下一跳的節(jié)點(diǎn)。S502:判斷主要下一跳是否可達(dá),如果主要下一跳可達(dá),將數(shù)據(jù)包轉(zhuǎn)發(fā)至主要下一跳;如果主要下一跳不可達(dá),則執(zhí)行S503。S503:進(jìn)入本地重路由,檢查備用下一跳集合是否為空,如果是,則丟棄該數(shù)據(jù)包;如果否,則從對(duì)應(yīng)目的節(jié)點(diǎn)的備用下一跳集合中取出第一個(gè)備用節(jié)點(diǎn)。S504:判斷第一個(gè)備用節(jié)點(diǎn)是否可達(dá),如果否,則從備用下一跳集合中刪除該節(jié)點(diǎn),并返回S503;如果是,則執(zhí)行S505。S505:將故障節(jié)點(diǎn)的信息加入到故障信息中,并將數(shù)據(jù)包轉(zhuǎn)發(fā)到可達(dá)的備用節(jié)點(diǎn)。故障信息的格式如表2所示。表212<table>tableseeoriginaldocumentpage13</column></row><table>dest一id代表目的節(jié)點(diǎn)的地址。err—nodes代表出現(xiàn)故障的節(jié)點(diǎn),但是還沒(méi)有被其鄰居節(jié)點(diǎn)通告出來(lái)。下面以RIP為例,介紹節(jié)點(diǎn)Fo轉(zhuǎn)發(fā)到達(dá)目的節(jié)點(diǎn)Fd的數(shù)據(jù)包的流程。分五種情況分別介紹轉(zhuǎn)發(fā)數(shù)據(jù)包的流程情況一數(shù)據(jù)包中攜帶的故障信息為空,主要下一跳可達(dá),節(jié)點(diǎn)Fo依照RIP協(xié)議的轉(zhuǎn)發(fā)流程轉(zhuǎn)發(fā)該數(shù)據(jù)包。情況二數(shù)據(jù)包中攜帶的故障信息非空,主要下一跳可達(dá),此時(shí)節(jié)點(diǎn))^轉(zhuǎn)發(fā)數(shù)據(jù)包具體為(1)提取故障信息中發(fā)生故障的節(jié)點(diǎn)化,……,F(xiàn)^;(2)從鄰居路由數(shù)據(jù)庫(kù)中查看主要下一跳的路由信息<&,KM,F(xiàn)/v,coW〉中的f^和Fw是否屬于AO,K,......,PW,如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá)。這里假設(shè)都不屬于,即主要下一跳可達(dá),此時(shí)節(jié)點(diǎn)J^將數(shù)據(jù)包連其攜帶的故障信息一起轉(zhuǎn)發(fā)到主要下一跳^。情況三數(shù)據(jù)包攜帶的故障信息非空,主要下一跳不可達(dá),第一個(gè)備用下一跳可達(dá),此時(shí)節(jié)點(diǎn)Fo轉(zhuǎn)發(fā)數(shù)據(jù)包具體為(1)提取故障信息中發(fā)生故障的節(jié)點(diǎn)W,K2,......,(2)從鄰居路由數(shù)據(jù)庫(kù)中查看主要下一跳的路由信息<^),F(xiàn)M,F(xiàn)w,co">中的Fm和rw是否屬于fK,&如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá)。這里假設(shè)其中之一屬于,這時(shí)需要進(jìn)行本地重路由;(3)取出第一個(gè)備用下一跳VB1及其在鄰居路由數(shù)據(jù)庫(kù)中的路由信息<&,F(xiàn)w,F(xiàn)V,coW〉,查看其中的^和是否屬于%,K,......,F(xiàn)V,如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá)。這里假設(shè)都不屬于,即第一個(gè)備用下一跳可達(dá);(4)修改故障信息,將自己檢測(cè)出來(lái)的但是并不屬于f^K,......,rj的故障節(jié)點(diǎn)添加到故障信息中去,然后將數(shù)據(jù)包連同修改后的故障信息一起轉(zhuǎn)發(fā)到第一個(gè)備用下一跳Ffi7。情況四數(shù)據(jù)包攜帶的故障信息非空,主要下一跳不可達(dá),第一個(gè)備用下一跳不可達(dá),第二個(gè)備用下一跳可達(dá)。(1)才是取故障信息中發(fā)生故障的節(jié)點(diǎn)^0,K,……,(2)從鄰居路由數(shù)據(jù)庫(kù)中查看主要下一跳的路由信息<&,li,F(xiàn)w,coW>中的P^和^v是否屬于fK,K,......,如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá),這里假設(shè)其中之一屬于,這時(shí)需要進(jìn)行本地重路由;(3)取出第一個(gè)備用下一跳及其在鄰居路由數(shù)據(jù)庫(kù)中的路由信息<J^,F(xiàn)^,F(xiàn)V,coW〉,查看其中的Fs/和Fw是否屬于A^,F2,……,如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá)。這里假設(shè)FV屬于,即第一個(gè)備用下一if兆不可達(dá);(4)取出第二個(gè)備用下一跳^2及其在路由數(shù)據(jù)庫(kù)中的路由信息<^),F(xiàn)w,coW〉,查看其中的&2和"V是否屬于f^K,......,4,如果其中一個(gè)或全部都屬于,則說(shuō)明主要下一跳不可達(dá)。這里假設(shè)都不屬于,即第二個(gè)備用下一跳可達(dá);(5)修改故障信息,將自己檢測(cè)出來(lái)的但是并不屬于^0,K,......,fW的故障節(jié)點(diǎn)添加到故障信息中去,然后將數(shù)據(jù)包連同修改后的故障信息一起轉(zhuǎn)發(fā)到第二個(gè)備用下一跳F£2。情況五數(shù)據(jù)包攜帶的故障信息非空,主要下一跳不可達(dá),所有備用下一跳均不可達(dá),此時(shí)節(jié)點(diǎn)Fo丟棄該數(shù)據(jù)包。下面介紹節(jié)點(diǎn)發(fā)現(xiàn)鄰居節(jié)點(diǎn)發(fā)生故障時(shí)的處理流程。參見(jiàn)圖6,該圖為基于本發(fā)明節(jié)點(diǎn)發(fā)現(xiàn)鄰居節(jié)點(diǎn)發(fā)生故障時(shí)的處理流程圖。S601:節(jié)點(diǎn)發(fā)現(xiàn)鄰居節(jié)點(diǎn)故障時(shí),啟動(dòng)定時(shí)器。所述定時(shí)器用于設(shè)置故障信息抑制時(shí)間。此時(shí),節(jié)點(diǎn)并不立即向其鄰居節(jié)點(diǎn)發(fā)送Update消息。S602:在定時(shí)器重啟之前,節(jié)點(diǎn)不修改任何關(guān)于鄰居節(jié)點(diǎn)的路由信息,判斷定時(shí)器重啟之前是否收到鄰居節(jié)點(diǎn)的Update消息,如果是,則執(zhí)行S603;如果否,則才丸行S604。S603:關(guān)閉定時(shí)器,不修改路由表中該鄰居節(jié)點(diǎn)對(duì)應(yīng)的路由表項(xiàng),節(jié)點(diǎn)按照原先的時(shí)間間隔將Update消息發(fā)送至該鄰居節(jié)點(diǎn)。S604:節(jié)點(diǎn)修改自己的路由表,等待下一個(gè)路由更新周期到來(lái)將路由更新消息發(fā)送至該鄰居節(jié)點(diǎn)。需要說(shuō)明的是,所述下一個(gè)路由更新周期是指原始的路由協(xié)議本身的定時(shí)器的周期。下面以RIP協(xié)議為例,介紹節(jié)點(diǎn)K。發(fā)現(xiàn)鄰居節(jié)點(diǎn)Fw發(fā)生故障時(shí)的處理流程。(1)節(jié)點(diǎn)Fo發(fā)現(xiàn)鄰居節(jié)點(diǎn)PV發(fā)生故障時(shí),啟動(dòng)定時(shí)器開(kāi)始計(jì)時(shí)。此時(shí)節(jié)點(diǎn)F。并不立即向其鄰居節(jié)點(diǎn)!^發(fā)送Update消息,而是啟動(dòng)定時(shí)器。定時(shí)器用于設(shè)定故障信息抑制時(shí)間,故障信息抑制時(shí)間設(shè)置稍微大于故障節(jié)點(diǎn)需要恢復(fù)的時(shí)間段即可,例如定時(shí)器的定時(shí)周期為60s,—般故障節(jié)點(diǎn)在40s左右可以自動(dòng)恢復(fù)正常。統(tǒng)計(jì)數(shù)據(jù)結(jié)果顯示在節(jié)點(diǎn)所有類型的故障中,只有10%的故障持續(xù)時(shí)間超過(guò)20分鐘,40%的故障持續(xù)時(shí)間介于1到20分鐘之間,50%的故障持續(xù)時(shí)間不到1分鐘。如果將故障信息抑制時(shí)間設(shè)置為60s,那么可以使將近50%的網(wǎng)絡(luò)錯(cuò)誤不會(huì)被通告出去。(2)在定時(shí)器重啟之前,節(jié)點(diǎn)Fo不修改任何關(guān)于鄰居節(jié)點(diǎn)J^的路由信息,判斷定時(shí)器重啟之前,節(jié)點(diǎn)^是否收到鄰居節(jié)點(diǎn)J^的Update消息;如果是,則關(guān)閉定時(shí)器,不修改路由表中鄰居節(jié)點(diǎn)PV對(duì)應(yīng)的路由表項(xiàng),按照原先的時(shí)間間隔將Update消息發(fā)送至鄰居節(jié)點(diǎn)&。(3)如果定時(shí)器重啟之前沒(méi)有收到鄰居節(jié)點(diǎn)&的Update消息,節(jié)點(diǎn)^修改自己的路由表,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)&?;谏鲜鲆环N距離向量路由協(xié)議自愈的方法,本發(fā)明還提供了一種距離向量路由協(xié)議自愈的系統(tǒng),下面結(jié)合具體實(shí)施例來(lái)詳細(xì)說(shuō)明其組成部分。參見(jiàn)圖7,該圖為基于本發(fā)明系統(tǒng)第一實(shí)施例結(jié)構(gòu)圖。本發(fā)明提供一種距離向量路由協(xié)議自愈的系統(tǒng)包括定時(shí)器701、本地重路由單元702和更新單元703。定時(shí)器701,用于當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間。一般節(jié)點(diǎn)故障都是短暫故障,大約40s左右時(shí)間會(huì)自動(dòng)恢復(fù)正常。故障信息抑制時(shí)間設(shè)置稍微大于故障節(jié)點(diǎn)自動(dòng)恢復(fù)正常的時(shí)間-險(xiǎn)即可。在定時(shí)器701設(shè)置的節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)之前,本地重路由單元702,用于從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由。如果節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)時(shí),故障節(jié)點(diǎn)還未恢復(fù)正常,更新單元703,用于進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。本發(fā)明提供的距離向量路由協(xié)議自愈的方法,提供了備份下一跳集合,當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),可以從*下一跳集合中選取可達(dá)備用下一跳轉(zhuǎn)發(fā)數(shù)據(jù)包。因此可以在多鏈路和多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)選取可達(dá)節(jié)點(diǎn)進(jìn)行快速自愈。參見(jiàn)圖8,該圖為基于本發(fā)明系統(tǒng)第二實(shí)施例結(jié)構(gòu)圖。系統(tǒng)第二實(shí)施例與系統(tǒng)第一實(shí)施例的區(qū)別是增加了與所述本地重路由單元連接的鄰居路由數(shù)據(jù)庫(kù)生成單元801和備份下一跳集合生成單元802。鄰居路由數(shù)據(jù)庫(kù)生成單元801,用于生成鄰居路由數(shù)據(jù)庫(kù)。需要說(shuō)明的是,每個(gè)節(jié)點(diǎn)均生成一個(gè)鄰居路由數(shù)據(jù)庫(kù)。備份下一跳集合生成單元802,用于根據(jù)鄰居路由數(shù)據(jù)庫(kù)生成單元801中的路由信息生成備份下一跳集合。參見(jiàn)圖9,該圖為基于本發(fā)明鄰居路由數(shù)據(jù)庫(kù)的結(jié)構(gòu)圖。鄰居路由數(shù)據(jù)庫(kù)生成單元801具體包括接收模塊別la、修改模塊801b和更新纟莫塊801c。接收模塊801a,用于接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表。修改模塊801b,用于按照鄰居路由數(shù)據(jù)庫(kù)的格式修改接收模塊801a接收的鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息。更新模塊801c,用于查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息;如果是,則刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改模塊801b修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù);如果否,則將修改模塊801b修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。參見(jiàn)圖10,該圖為基于本發(fā)明備份下一跳集合生成單元的結(jié)構(gòu)圖。備份下一跳集合生成單元具體包括選擇模塊802a、排序模塊802b和生成才莫塊802c。選擇模塊802a,用于從所述鄰居路由數(shù)據(jù)庫(kù)中選出到達(dá)目的節(jié)點(diǎn)的所有路由信息。排序模塊802b,用于按照度量值將所述選擇模塊選擇出的路由信息進(jìn)行升序排序。生成模塊802c,用于從所述排序模塊排好序的路由信息中依次選出對(duì)應(yīng)的鄰居節(jié)點(diǎn),其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表;剩下的鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備除下一跳集合。參見(jiàn)圖11,該圖為基于本發(fā)明本地重路由單元的結(jié)構(gòu)圖。本地重路由單元702具體包括檢查模塊702a、丟棄模塊702b、選擇模塊702c、判斷模塊702d、刪除模塊702e、添加模塊702f和轉(zhuǎn)發(fā)模塊702g。檢查模塊702a,用于檢查備用下一跳集合是否為空。當(dāng)檢查模塊702a檢查備用下一跳集合為空時(shí),丟棄模塊702b,用于丟棄數(shù)據(jù)包。當(dāng)檢查模塊702a檢查備用下一跳集合非空時(shí),選擇模塊702c,用于從所述備份下一跳集合中選取第一個(gè)備用節(jié)點(diǎn)。判斷模塊702d,用于判斷所述第一個(gè)備用節(jié)點(diǎn)是否可達(dá)。當(dāng)判斷模塊702d判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),刪除模塊702e,用于從所述備用下一跳集合中刪除該節(jié)點(diǎn),檢查模塊702a重新檢查備用下一跳集合是否為空。當(dāng)判斷模塊702d判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),添加模塊702f,用于將該故障節(jié)點(diǎn)的信息添加到故障信息中;轉(zhuǎn)發(fā)模塊702g,用于將數(shù)據(jù)包轉(zhuǎn)發(fā)到所述第一個(gè)備用節(jié)點(diǎn)。本發(fā)明實(shí)施例提供的距離向量路由協(xié)議自愈系統(tǒng),當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在故障信息抑制時(shí)間到達(dá)之前,如果故障節(jié)點(diǎn)還未恢復(fù),則從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果故障信息抑制時(shí)間已經(jīng)達(dá)到,故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路17由更新消息發(fā)送至鄰居節(jié)點(diǎn)。本發(fā)明提供的自愈系統(tǒng),可以在網(wǎng)絡(luò)中有節(jié)點(diǎn)出現(xiàn)故障時(shí),不立即觸發(fā)更新,而是設(shè)置一個(gè)故障信息抑制時(shí)間,在這^a時(shí)間內(nèi),可以通過(guò)備用下一跳集合選取可用的下一跳節(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),這樣可以避免頻繁觸發(fā)更新而導(dǎo)致網(wǎng)絡(luò)抖動(dòng),造成網(wǎng)絡(luò)不穩(wěn)定。由于本發(fā)明提供了備份下一跳集合,因此可以在多鏈路和多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)選取可達(dá)節(jié)點(diǎn)進(jìn)行快速自愈。本領(lǐng)域技術(shù)人員可以理解,可以使用許多不同的工藝和技術(shù)中的任意一種來(lái)表示信息、消息和信號(hào)。例如,上述說(shuō)明中提到過(guò)的消息、信息都可以表示為電壓、電流、電磁波、磁場(chǎng)或磁性粒子、光場(chǎng)或以上任意組合。專業(yè)人員還可以進(jìn)一步應(yīng)能意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或
技術(shù)領(lǐng)域:
內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。18權(quán)利要求1、一種距離向量路由協(xié)議自愈的方法,其特征在于,包括當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在所述故障信息抑制時(shí)間內(nèi),從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果所述故障信息抑制時(shí)間已經(jīng)達(dá)到,所述故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。2、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間之前還包括生成鄰居路由數(shù)據(jù)庫(kù);由上述鄰居路由數(shù)據(jù)庫(kù)中的路由信息為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合。3、根據(jù)權(quán)利要求2所述的方法,其特征在于,所述生成鄰居路由數(shù)據(jù)庫(kù)具體為接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表;按照鄰居路由數(shù)據(jù)庫(kù)的格式修改鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息;查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息;如果是,則刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù);如果否,則將修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。4、根據(jù)權(quán)利要求3所述的方法,其特征在于,所述由上述鄰居路由數(shù)據(jù)庫(kù)中的路由信息為每個(gè)目的節(jié)點(diǎn)生成備份下一跳集合具體為從所述鄰居路由數(shù)據(jù)庫(kù)中選出到達(dá)目的節(jié)點(diǎn)的所有路由信息;按照度量值將所述路由信息進(jìn)行升序排序;從排好序的路由信息中依次選出對(duì)應(yīng)的鄰居節(jié)點(diǎn),其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表;剩下的鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備份下一跳集合。5、根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由,具體為A:檢查備用下一跳集合是否為空,如果是,則丟棄轉(zhuǎn)發(fā)的數(shù)據(jù)包;如果否,則從備份下一跳集合中選取第一個(gè)備用節(jié)點(diǎn);B:判斷所述第一個(gè)備用節(jié)點(diǎn)是否可達(dá),如果否,則從所述備用下一跳集合中刪除該節(jié)點(diǎn),返回步驟A;如果是,則將故障節(jié)點(diǎn)的信息添加到故障信息中,將所述數(shù)據(jù)包轉(zhuǎn)發(fā)到所述第一個(gè)備用節(jié)點(diǎn)。6、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述度量值是鄰居節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)的距離加1。7、一種距離向量路由協(xié)議自愈的系統(tǒng),其特征在于,包括定時(shí)器、本地重路由單元和更新單元;所述定時(shí)器,用于當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在所述定時(shí)器設(shè)置的節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)之前,所述本地重路由單元,用于從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果所述節(jié)點(diǎn)故障信息抑制時(shí)間到達(dá)時(shí),所述故障節(jié)點(diǎn)還未恢復(fù)正常,所述更新單元,用于進(jìn)行觸發(fā)路由更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。8、才艮據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,還包括與所述本地重路由單元連接的鄰居路由數(shù)據(jù)庫(kù)生成單元和備份下一跳集合生成單元;所述鄰居路由數(shù)據(jù)庫(kù)生成單元,用于生成鄰居路由數(shù)據(jù)庫(kù);所述備份下一跳集合生成單元,用于根據(jù)所述鄰居路由數(shù)據(jù)庫(kù)生成單元中的路由信息生成備份下一跳集合。9、根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述鄰居路由數(shù)據(jù)庫(kù)生成單元具體包括接收模塊、修改模塊和更新模塊;所述接收模塊,用于接收鄰居節(jié)點(diǎn)發(fā)送的路由信息表;所述修改模塊,用于按照鄰居路由數(shù)據(jù)庫(kù)的格式修改接收模塊接收的鄰居節(jié)點(diǎn)發(fā)送過(guò)來(lái)的路由信息;所述更新模塊,用于查看鄰居數(shù)據(jù)庫(kù)中是否有該鄰居節(jié)點(diǎn)的路由信息;如果是,則刪除鄰居路由數(shù)據(jù)庫(kù)中該節(jié)點(diǎn)前一次發(fā)送的路由信息,將修改模塊修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù);如果否,則將修改模塊修改后的路由信息保存至所述鄰居路由數(shù)據(jù)庫(kù)。10、根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述備份下一跳集合生成單元具體包括選擇模塊、排序模塊和生成模塊;所述選擇模塊,用于從所述鄰居路由數(shù)據(jù)庫(kù)中選出到達(dá)目的節(jié)點(diǎn)的所有路由信息;所述排序模塊,用于按照度量值將所述選擇模塊選擇出的路由信息進(jìn)行升序排序;所述生成模塊,用于從所述排序模塊排好序的路由信息中依次選出對(duì)應(yīng)的鄰居節(jié)點(diǎn),其中第一個(gè)鄰居節(jié)點(diǎn)為主要下一跳,將其存入路由表;剩下的鄰居節(jié)點(diǎn)組成到達(dá)目的節(jié)點(diǎn)的備份下一跳集合。11、根據(jù)權(quán)利要求7至IO任一項(xiàng)權(quán)利要求所述的系統(tǒng),其特征在于,所述本地重路由單元具體包括檢查模塊、丟棄模塊、選擇模塊、判斷模塊、刪除模塊、添加模塊和轉(zhuǎn)發(fā)模塊;所述檢查模塊,用于檢查備用下一跳集合是否為空;當(dāng)檢查模塊檢查備用下一跳集合為空時(shí),所述丟棄模塊,用于丟棄數(shù)據(jù)包;當(dāng)檢查模塊檢查備用下一跳集合非空時(shí),所述選擇模塊,用于從所述備份下一跳集合中選取第一個(gè)備用節(jié)點(diǎn);所述判斷模塊,用于判斷所述第一個(gè)備用節(jié)點(diǎn)是否可達(dá);當(dāng)所述判斷模塊判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),所述刪除模塊,用于從所述備用下一跳集合中刪除該節(jié)點(diǎn),所述檢查模塊重新檢查備用下一跳集合是否為空;當(dāng)所述判斷模塊判斷所述第一個(gè)備用節(jié)點(diǎn)不可達(dá)時(shí),所述添加模塊,用于將該故障節(jié)點(diǎn)的信息添加到故障信息中;所述轉(zhuǎn)發(fā)模塊,用于將所述數(shù)據(jù)包轉(zhuǎn)發(fā)到所述第一個(gè)備用節(jié)點(diǎn)。全文摘要本發(fā)明提供一種距離向量路由協(xié)議自愈的方法,包括當(dāng)節(jié)點(diǎn)的下一跳出現(xiàn)故障時(shí),設(shè)置節(jié)點(diǎn)故障信息抑制時(shí)間;在所述故障信息抑制時(shí)間內(nèi),從備份下一跳集合中選取備用下一跳進(jìn)行本地重路由;如果所述故障信息抑制時(shí)間已經(jīng)達(dá)到,所述故障節(jié)點(diǎn)還未恢復(fù)正常,則進(jìn)行觸發(fā)更新,將路由更新消息發(fā)送至鄰居節(jié)點(diǎn)。本發(fā)明提供的自愈方法,當(dāng)網(wǎng)絡(luò)中有節(jié)點(diǎn)出現(xiàn)故障時(shí),不立即觸發(fā)更新,而是設(shè)置一個(gè)故障信息抑制時(shí)間,在這段時(shí)間內(nèi),可以通過(guò)備用下一跳集合選取可用的下一跳節(jié)點(diǎn)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),這樣可以避免頻繁觸發(fā)更新而導(dǎo)致網(wǎng)絡(luò)抖動(dòng),造成網(wǎng)絡(luò)不穩(wěn)定。由于本發(fā)明提供了備份下一跳集合,因此可以在多鏈路和多節(jié)點(diǎn)同時(shí)或相繼故障時(shí)選取可達(dá)節(jié)點(diǎn)進(jìn)行快速自愈。文檔編號(hào)H04L12/24GK101483548SQ200910009268公開(kāi)日2009年7月15日申請(qǐng)日期2009年2月26日優(yōu)先權(quán)日2009年2月26日發(fā)明者鵬伊,佳周,李向濤,濱王,雨王,程?hào)|年,郭云飛申請(qǐng)人:中國(guó)人民解放軍信息工程大學(xué)