專利名稱:對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,尤其涉及一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法。
背景技術(shù):
隨著通信技術(shù)的發(fā)展,如何保障數(shù)據(jù)傳送質(zhì)量,如何在數(shù)據(jù)傳送出現(xiàn)問題時(shí),快速對(duì)故障進(jìn)行定位,已經(jīng)成為了一個(gè)亟待解決的重要問題,因此,BFD作為一種快速檢測機(jī)制,應(yīng)運(yùn)而生。
BFD是從基礎(chǔ)傳輸技術(shù)中經(jīng)過逐步發(fā)展而來的,因此它可以檢測網(wǎng)絡(luò)中各層的故障。它可以用于檢測以太網(wǎng)、MPLS(多協(xié)議標(biāo)記交換)路徑、普通路由封裝以及IPSec(IP網(wǎng)絡(luò)安全協(xié)議)隧道在內(nèi)的多種類型的傳輸正確性。
BFD的目標(biāo)是在相鄰路由器之間的路徑上,提供一種低開銷、短檢測周期的失敗檢測機(jī)制,該相鄰路由器是指有任意一條或多條邏輯鏈路相連的路由器,路由器之間不限于一跳。BFD可以進(jìn)行包括接口、數(shù)據(jù)鏈路和擴(kuò)展到轉(zhuǎn)發(fā)引擎自身的檢測。
BFD的總體應(yīng)用環(huán)境組網(wǎng)示意圖如圖1所示,在圖1所示的組網(wǎng)中,路由器A和路由器C之間通過鏈路AC相連,路由器B和路由器C之間通過鏈路BC相連,在AC和BC鏈路上,可以應(yīng)用BFD進(jìn)行鏈路檢測。
BFD可以抽象成一個(gè)簡單的服務(wù),它提供的服務(wù)原語包括在給定目的地址以及其它參數(shù)的前提下,創(chuàng)建、刪除、修改一個(gè)BFD會(huì)話。BFD通過提供一個(gè)信號(hào)給操作者表示該BFD會(huì)話已經(jīng)開始或者結(jié)束,或者告訴操作者BFD會(huì)話協(xié)商結(jié)果、修改結(jié)果等;為應(yīng)用層提供檢測鏈路的狀態(tài)信息(UP/DOWN信息)。
BFD類似于“Hello”協(xié)議,當(dāng)一個(gè)BFD會(huì)話建立之后,BFD會(huì)話的雙方周期性地在使能了BFD的鏈路上向?qū)Ψ桨l(fā)送BFD報(bào)文,同時(shí)也在該鏈路上周期性地檢測對(duì)方報(bào)文到達(dá)的情況,如果在一定的時(shí)間間隔內(nèi),某一方?jīng)]有收到來自對(duì)端的BFD報(bào)文,則可以認(rèn)為該鏈路出現(xiàn)故障。因此,便達(dá)到快速發(fā)現(xiàn)鏈路故障的目的。
在一個(gè)BFD會(huì)話生命周期中,主要經(jīng)歷以下幾個(gè)階段1、BFD會(huì)話初始建立階段。
在如圖1所示的組網(wǎng)中,A和C互為BFD會(huì)話鄰居,在初始,沒有BFD會(huì)話在A和C之間的AC鏈路上建立。
首先需要在A和C路由器上分別創(chuàng)建BFD實(shí)例。然后,A和C路由器需要獲得其鄰居的IP地址,由于BFD沒有自動(dòng)發(fā)現(xiàn)鄰居的機(jī)制,它需要靜態(tài)配置或者依賴于其它應(yīng)用協(xié)議告訴它鄰居的IP地址。
當(dāng)BFD實(shí)例得知鄰居IP地址之后,下一步就需要知道對(duì)方分配給該BFD會(huì)話的鑒別符,同時(shí)本地也分配該BFD會(huì)話鑒別符。鑒別符可以通過手工指派、自動(dòng)帶內(nèi)協(xié)商獲得,也可以通過帶外協(xié)商獲得,即通過其它應(yīng)用協(xié)議完成鑒別符的協(xié)商,然后通知BFD實(shí)例。
如果采用自動(dòng)帶內(nèi)協(xié)商的方式,路由器之間通過三次握手的方式建立BFD會(huì)話的時(shí)序示意圖如圖2所示。
2、BFD會(huì)話參數(shù)協(xié)商階段。
當(dāng)鄰居間BFD實(shí)例通過三次握手,將BFD會(huì)話建立起來之后,需要進(jìn)行BFD會(huì)話參數(shù)的協(xié)商,以協(xié)調(diào)雙發(fā)收發(fā)BFD報(bào)文的速度、缺陷確認(rèn)時(shí)間,以及統(tǒng)一會(huì)話模式等。
在BFD會(huì)話參數(shù)協(xié)商開始前,每個(gè)路由器會(huì)估計(jì)出自己發(fā)送和接收BFD報(bào)文的能力,然后同鄰居協(xié)商出最快需要多長時(shí)間可以檢測出失敗,即協(xié)商出缺陷確認(rèn)時(shí)間,而且該協(xié)商出來的缺陷確認(rèn)時(shí)間可以實(shí)時(shí)地進(jìn)行修改。
一旦各種BFD會(huì)話參數(shù)協(xié)商完成后,就將這些BFD參數(shù)立即本地生效,BFD會(huì)話就進(jìn)入缺陷檢測階段。
3、BFD缺陷檢測階段。
本發(fā)明以BFD會(huì)話模式是異步模式為例來說明BFD缺陷檢測階段,在BFD會(huì)話建立完成,并協(xié)商好相關(guān)參數(shù)后,按照異步模式,BFD會(huì)話的鄰居間就按照協(xié)商好的間隔時(shí)間、周期性地向?qū)Χ税l(fā)送BFD控制報(bào)文,這些BFD控制報(bào)文用于進(jìn)行心跳檢測,跟其它路由協(xié)議的HELLO報(bào)文功能和操作方式一樣,只是發(fā)送頻率往往更快。
在BFD會(huì)話的端點(diǎn)在向?qū)Χ税l(fā)送BFD控制報(bào)文的同時(shí),也定時(shí)檢測BFD鄰居發(fā)送過來的BFD報(bào)文,如果檢測到連續(xù)丟失鄰居的BFD報(bào)文,則宣布鏈路出現(xiàn)故障,然后將該鏈路出現(xiàn)故障消息通告給其它應(yīng)用,比如路由模塊等。至于連續(xù)丟失多少個(gè)BFD報(bào)文才能宣布鏈路出現(xiàn)故障,需要根據(jù)BFD會(huì)話協(xié)商的結(jié)果來確定。該參數(shù)在BFD控制報(bào)文格式中通過Detect Mult字段來定義。
BFD草案沒有規(guī)定承載BFD報(bào)文的協(xié)議,只是建議采用UDP來封裝BFD報(bào)文,而且采用UDP的目的端口號(hào)為3784來識(shí)別BFD報(bào)文。采用UDP封裝的BFD報(bào)文的格式如下所示
BFD報(bào)文的各個(gè)字段的含義如下所示
一個(gè)BFD會(huì)話的缺陷檢測時(shí)序示意圖如圖3所示,在圖3所示的BFD會(huì)話的缺陷檢測過程中,根據(jù)參數(shù)協(xié)商階段協(xié)商出的結(jié)果,路由器A按照10MS為時(shí)間間隔發(fā)送BFD報(bào)文,路由器B按照15MS為時(shí)間間隔發(fā)送BFD報(bào)文,并且路由器A檢測到如果連續(xù)丟失3個(gè)路由器B發(fā)出的BFD報(bào)文,路由器A便宣布鏈路出現(xiàn)故障。
在異步模式下,由于BFD需要非??焖俚匕l(fā)送和檢測報(bào)文,因此其報(bào)文的發(fā)送和檢測都是由邏輯很簡單的硬件來完成,往往直接做在轉(zhuǎn)發(fā)平面上,而復(fù)雜的BFD會(huì)話的建立、協(xié)商過程,須由軟件或邏輯等更加復(fù)雜通用的硬件來完成。
本發(fā)明將BFD會(huì)話的建立和協(xié)商模塊簡稱為協(xié)商模塊,將BFD報(bào)文的發(fā)送和檢測模塊簡稱為檢測模塊。
現(xiàn)有技術(shù)中,一種對(duì)BFD會(huì)話進(jìn)行故障檢測的方法為當(dāng)BFD會(huì)話已經(jīng)建立起來,并且協(xié)商完各種BFD會(huì)話參數(shù)后,便將各種協(xié)商的BFD會(huì)話的參數(shù),比如發(fā)送間隔,檢測間隔等通知給檢測模塊,檢測模塊接收到該參數(shù)信息后,立即啟動(dòng)發(fā)送定時(shí)器,然后周期性地向?qū)Χ税l(fā)送BFD報(bào)文,同時(shí)也立即啟動(dòng)定時(shí)檢測的定時(shí)器,檢測對(duì)方BFD報(bào)文的到達(dá)情況,根據(jù)協(xié)商的參數(shù)信息,如果檢測到連續(xù)丟失了預(yù)定數(shù)量的對(duì)方BFD報(bào)文,則宣布鏈路出現(xiàn)故障。
上述對(duì)BFD報(bào)文的傳遞進(jìn)行檢測的方法的缺點(diǎn)為在實(shí)際應(yīng)用過程中,協(xié)商模塊將參數(shù)協(xié)商的結(jié)果通知給檢測模塊需要一個(gè)過程,這個(gè)過程的長短往往受許多因素左右,其中一個(gè)因素為協(xié)商模塊的繁忙狀況,由于協(xié)商模塊往往需要承擔(dān)許多其它BFD會(huì)話的建立和協(xié)商以及路由等任務(wù),所以協(xié)商模塊往往比較繁忙;另一個(gè)因素為協(xié)商模塊和檢測模塊之間的通道擁塞狀況。因此,協(xié)商模塊將BFD參數(shù)傳達(dá)給檢測模塊所需要的延時(shí)具有不可預(yù)知性,該延時(shí)有時(shí)可能很長,有時(shí)可能很短。尤其是在BFD會(huì)話鄰居之間存在性能差異或者負(fù)荷差異時(shí),該延時(shí)的差異性會(huì)更加明顯。該延時(shí)達(dá)到了某個(gè)值后,將不可避免地導(dǎo)致BFD會(huì)話的一端錯(cuò)誤地報(bào)告鏈路出現(xiàn)故障。該錯(cuò)誤報(bào)告鏈路出現(xiàn)故障的情況示意圖如圖4所示。
在圖4所示的檢測過程中,根據(jù)協(xié)商階段協(xié)商出的BFD會(huì)話的結(jié)果,路由器A按照10MS發(fā)送BFD報(bào)文,路由器B按照15MS發(fā)送BFD報(bào)文,路由器A如果檢測到連續(xù)丟失3個(gè)路由器B發(fā)出的BFD報(bào)文,路由器A則可宣布鏈路出現(xiàn)故障。雙方協(xié)商階段的結(jié)束時(shí)刻是TO,路由器A的協(xié)商模塊將BFD會(huì)話屬性下達(dá)檢測模塊的耗時(shí)為Ta,而路由器B的協(xié)商模塊將BFD會(huì)話屬性下達(dá)給檢測模塊的耗時(shí)為Tb。
從圖4可見,只要Tb大于Ta和路由器A的檢測時(shí)間(此處為45MS),將會(huì)導(dǎo)致路由器A誤報(bào)鏈路出現(xiàn)故障。
發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明的目的是提供一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,從而可以解決由于路由器的協(xié)商模塊將BFD會(huì)話參數(shù)下達(dá)給檢測模塊所需要的延時(shí)的差異性,造成路由器誤報(bào)鏈路出現(xiàn)故障的問題。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,包括雙向轉(zhuǎn)發(fā)檢測BFD會(huì)話的端點(diǎn)向?qū)Χ税l(fā)送BFD報(bào)文,并檢測對(duì)端發(fā)送的BFD報(bào)文;當(dāng)本端BFD會(huì)話端點(diǎn)接收到對(duì)端發(fā)來的第一個(gè)BFD報(bào)文時(shí),啟動(dòng)BFD會(huì)話檢測。
所述的方法具體包括A、BFD會(huì)話的兩端在BFD會(huì)話建立完成后,互相協(xié)商確定包括BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長在內(nèi)的各種BFD會(huì)話參數(shù);B、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
所述的BFD會(huì)話的兩端工作在異步模式下。
所述的步驟B具體包括B1、BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,進(jìn)行初始化操作;B2、BFD會(huì)話的端點(diǎn)在初始化操作完成后,周期性向?qū)Χ税l(fā)送BFD報(bào)文,在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文之前,不啟動(dòng)BFD會(huì)話檢測;B3、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
所述的步驟B1具體包括BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,將該參數(shù)下發(fā)給其內(nèi)部的報(bào)文發(fā)送和檢測模塊,該報(bào)文發(fā)送和檢測模塊根據(jù)接收到的BFD會(huì)話參數(shù),進(jìn)行各種初始化操作。
所述的步驟B1具體包括在所述報(bào)文發(fā)送和檢測模塊中設(shè)置一個(gè)標(biāo)記,并將該標(biāo)記的初始值設(shè)置為一個(gè)特定值,該特定值表示此時(shí)沒有收到對(duì)端發(fā)送的第一個(gè)BFD報(bào)文。
所述的步驟B3具體包括B31、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,將所述在報(bào)文發(fā)送和檢測模塊中設(shè)置的標(biāo)記的值改變?yōu)榱硪粋€(gè)特定值,表示此時(shí)已經(jīng)收到了對(duì)端發(fā)送的第一個(gè)BFD報(bào)文;B32、BFD會(huì)話的端點(diǎn)在確定所述在報(bào)文發(fā)送和檢測模塊中設(shè)置的標(biāo)記的值已經(jīng)改變后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
所述的步驟B32具體包括BFD會(huì)話的端點(diǎn)在所述BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)后,仍然沒有收到來自對(duì)端的BFD報(bào)文,則將丟失計(jì)數(shù)器的計(jì)數(shù)增加1,當(dāng)該計(jì)數(shù)器的計(jì)數(shù)累加到預(yù)定數(shù)值后,該端點(diǎn)便報(bào)告BFD鏈路出現(xiàn)故障。
所述的步驟B具體包括B4、BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,進(jìn)行各種初始化操作,將BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長初始化為一個(gè)特定的值;B5、BFD會(huì)話的端點(diǎn)在初始化操作完成后,周期性向?qū)Χ税l(fā)送BFD報(bào)文,在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文之前,按照所述特定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測;B6、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
所述的步驟B5具體包括BFD會(huì)話的端點(diǎn)在所述特定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)后,仍然沒有收到來自對(duì)端的BFD報(bào)文,則報(bào)告BFD鏈路出現(xiàn)故障。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明通過在BFD會(huì)話的一端接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,才開始啟動(dòng)按照BFD協(xié)商確定的定時(shí)時(shí)長的BFD會(huì)話檢測。從而可以解決由于路由器的協(xié)商模塊將BFD會(huì)話屬性下達(dá)給檢測模塊所需要的延時(shí)的差異性,造成路由器誤報(bào)鏈路出現(xiàn)故障的問題。本發(fā)明還可以檢測出BFD會(huì)話的一端的轉(zhuǎn)發(fā)引擎是否出現(xiàn)了故障,可以避免BFD會(huì)話的一端發(fā)出的惡意攻擊。
圖1為BFD的總體應(yīng)用環(huán)境組網(wǎng)示意圖;圖2為現(xiàn)有技術(shù)中路由器之間通過三次握手的方式建立BFD會(huì)話的時(shí)序示意圖;圖3為現(xiàn)有技術(shù)中BFD會(huì)話的缺陷檢測時(shí)序示意圖;圖4為BFD會(huì)話的一端錯(cuò)誤報(bào)告鏈路出現(xiàn)故障的示意圖;圖5為本發(fā)明所述方法的具體處理流程圖;圖6為本發(fā)明所述方法的實(shí)施例的示意圖。
具體實(shí)施例方式
本發(fā)明提供了一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法。本發(fā)明的核心為在路由器的檢測模塊中,引入首包觸發(fā)機(jī)制,即檢測模塊只有在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文之后,才開始啟動(dòng)BFD會(huì)話檢測。
下面結(jié)合附圖來詳細(xì)描述本發(fā)明,本發(fā)明所述方法的具體處理流程圖如圖5所示,包括如下步驟步驟5-1、BFD會(huì)話的檢測模塊在接收到協(xié)商模塊下達(dá)的BFD會(huì)話參數(shù)后,進(jìn)行各種初始化操作。
當(dāng)BFD會(huì)話的兩端路由器的協(xié)商模塊建立了BFD會(huì)話、并協(xié)商完BFD會(huì)話參數(shù)后,兩端路由器的協(xié)商模塊便將該BFD會(huì)話參數(shù)分別下發(fā)給兩端路由器的檢測模塊,下發(fā)的BFD會(huì)話參數(shù)包括BFD會(huì)話檢測周期、BFD報(bào)文發(fā)送周期等。
檢測模塊在接收到協(xié)商模塊下發(fā)的BFD會(huì)話參數(shù)后,立即進(jìn)行各種初始化操作,其中包括1、設(shè)置BFD報(bào)文發(fā)送定時(shí)器的時(shí)長;2、構(gòu)造BFD報(bào)文;3、設(shè)置BFD會(huì)話檢測定時(shí)器的時(shí)長;
4、將bHasReceivedFirstPacket(是否收到對(duì)端首包)標(biāo)記的初始值設(shè)置為FALSE,即代表未收到BFD會(huì)話的對(duì)端發(fā)出的第一個(gè)BFD報(bào)文。
步驟5-2、BFD會(huì)話的一端周期性地向?qū)Ψ桨l(fā)送BFD報(bào)文,并不立即啟動(dòng)BFD會(huì)話檢測功能。
當(dāng)BFD會(huì)話的檢測模塊進(jìn)行完各種初始化操作后,立即按照設(shè)置的BFD報(bào)文發(fā)送定時(shí)器的時(shí)長,周期性地向BFD會(huì)話的對(duì)端發(fā)送BFD報(bào)文。但是,此時(shí)并不立即啟動(dòng)BFD會(huì)話檢測功能,執(zhí)行步驟5-3。
步驟5-3、是否收到對(duì)端發(fā)來的第一個(gè)BFD報(bào)文。
BFD會(huì)話的檢測模塊在周期性地向BFD會(huì)話的對(duì)端發(fā)送BFD報(bào)文的同時(shí),還判斷是否收到BFD會(huì)話的對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,如果收到,則執(zhí)行步驟5-4;否則,執(zhí)行步驟5-5。
步驟5-4、啟動(dòng)BFD會(huì)話檢測功能,周期性地向?qū)Ψ桨l(fā)送BFD報(bào)文。
BFD會(huì)話的檢測模塊如果收到了BFD會(huì)話的對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,則立即將bHasReceivedFirstPacket標(biāo)記的初始值設(shè)置為TRUE,啟動(dòng)BFD會(huì)話檢測功能,同時(shí)繼續(xù)周期性地向?qū)Χ税l(fā)送BFD報(bào)文。
BFD會(huì)話的檢測模塊在啟動(dòng)了BFD會(huì)話檢測功能后,便按照設(shè)置的BFD會(huì)話檢測定時(shí)器的時(shí)長,定時(shí)檢測是否收到對(duì)端發(fā)送的BFD報(bào)文,如果沒有收到對(duì)端發(fā)送的BFD報(bào)文的次數(shù)累加到預(yù)定次數(shù)后,便報(bào)告BFD會(huì)話的鏈路出現(xiàn)故障。
步驟5-5、周期性地向?qū)Ψ桨l(fā)送BFD報(bào)文,不啟動(dòng)BFD會(huì)話檢測功能。
BFD會(huì)話的檢測模塊如果沒有收到BFD會(huì)話的對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,則該檢測模塊繼續(xù)周期性地向?qū)Χ税l(fā)送BFD報(bào)文,不啟動(dòng)BFD會(huì)話檢測功能,在發(fā)送BFD報(bào)文的同時(shí),繼續(xù)判斷是否收到BFD會(huì)話的對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,執(zhí)行步驟5-3。
本發(fā)明還提出了一個(gè)本發(fā)明所述方法的實(shí)施例,如圖6所示。
在圖6所示的實(shí)施例中,路由器A和路由器B在TO時(shí)刻同時(shí)完成BFD會(huì)話參數(shù)的協(xié)商工作,路由器A在TA時(shí)刻開始向路由器B發(fā)送BFD報(bào)文,由于此時(shí)沒有收到路由器B發(fā)出的第一個(gè)BFD報(bào)文,路由器A將bHasReceivedFirstPacket標(biāo)記的值設(shè)置為FALSE。因此,盡管路由器A仍然定時(shí)檢測,但并不因?yàn)闆]有接收到路由器B的BFD報(bào)文而將丟失計(jì)數(shù)器增加,即便檢測時(shí)間超時(shí),也不會(huì)報(bào)告鏈路出現(xiàn)故障,而是依然周期性地向路由器B發(fā)送BFD報(bào)文。
路由器A在Tb時(shí)刻接收到了路由器B發(fā)出的第一個(gè)BFD報(bào)文,立即將標(biāo)志bHasReceivedFirstPacket置為TRUE,于是,便啟動(dòng)BFD會(huì)話檢測,并將BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長設(shè)置為BFD協(xié)商時(shí)確定的值,從此,在后續(xù)的檢測中,如果在BFD會(huì)話檢測定時(shí)器超時(shí)后,路由器A仍然沒有收到來自路由器B的BFD報(bào)文,就將丟失計(jì)數(shù)器增加1,當(dāng)該計(jì)數(shù)器累加到預(yù)定數(shù)值(該值在BFD協(xié)商時(shí)確定),路由器A便報(bào)告BFD鏈路出現(xiàn)故障。
從該實(shí)施例可以看出,即便BFD會(huì)話的鄰居間將BFD會(huì)話參數(shù)下發(fā)所需要的延時(shí)的差異性非常大,都不會(huì)導(dǎo)致BFD會(huì)話的一端錯(cuò)誤地報(bào)告鏈路出現(xiàn)故障。
本發(fā)明還提出了一個(gè)本發(fā)明所述方法的替代方案,具體描述如下在BFD會(huì)話的檢測模塊初始化BFD會(huì)話檢測定時(shí)器時(shí),先將該定時(shí)器的定時(shí)時(shí)長設(shè)置到一個(gè)足夠大的值,該值可以保證在最壞的情況下,協(xié)商模塊都能在該時(shí)間間隔內(nèi)將BFD會(huì)話屬性下達(dá)給檢測模塊,或者,該值為在容忍范圍之內(nèi)的最大值。即在這個(gè)時(shí)間間隔之內(nèi),如果對(duì)端協(xié)商模塊還沒有將BFD會(huì)話屬性下達(dá)給其檢測模塊,則也可以認(rèn)為對(duì)端轉(zhuǎn)發(fā)引擎出現(xiàn)了故障。
然后,BFD會(huì)話的一端在向?qū)Χ税l(fā)送BFD會(huì)話的同時(shí),立即啟動(dòng)BFD會(huì)話檢測,當(dāng)在上述設(shè)定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)后,沒有收到對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,則報(bào)告對(duì)端轉(zhuǎn)發(fā)引擎出現(xiàn)了故障;當(dāng)在上述設(shè)定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)前,接收到了對(duì)端發(fā)來的第一個(gè)BFD報(bào)文,立即將BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長設(shè)置為BFD協(xié)商時(shí)確定的值,并繼續(xù)進(jìn)行BFD會(huì)話檢測。
本替代方案,可以有效地規(guī)避以下情況即如果BFD會(huì)話在剛建立好后,BFD會(huì)話的一端或BFD會(huì)話的鏈路就出現(xiàn)故障,那么BFD會(huì)話的另一端的檢測模塊可能永久性等待對(duì)端發(fā)來的第一個(gè)BFD報(bào)文。
本替代方案也可以避免惡意的對(duì)端發(fā)出的攻擊,比如惡意的對(duì)方在BFD會(huì)話協(xié)商完畢后,并不發(fā)送BFD報(bào)文到受害端,然后在不通知受害端的情況下,拆除本端的BFD會(huì)話,從而導(dǎo)致受害端處于永久等待狀態(tài)。如果惡意端按照這種方式與受害端建立許多個(gè)BFD會(huì)話,會(huì)導(dǎo)致受害端資源被耗盡,而無法接受其它BFD會(huì)話建立請(qǐng)求。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,包括雙向轉(zhuǎn)發(fā)檢測BFD會(huì)話的端點(diǎn)向?qū)Χ税l(fā)送BFD報(bào)文,并檢測對(duì)端發(fā)送的BFD報(bào)文;當(dāng)本端BFD會(huì)話端點(diǎn)接收到對(duì)端發(fā)來的第一個(gè)BFD報(bào)文時(shí),啟動(dòng)BFD會(huì)話檢測。
2.根據(jù)權(quán)利要求1所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的方法具體包括A、BFD會(huì)話的兩端在BFD會(huì)話建立完成后,互相協(xié)商確定包括BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長在內(nèi)的各種BFD會(huì)話參數(shù);B、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
3.根據(jù)權(quán)利要求2所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的BFD會(huì)話的兩端工作在異步模式下。
4.根據(jù)權(quán)利要求1、2或3所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B具體包括B1、BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,進(jìn)行初始化操作;B2、BFD會(huì)話的端點(diǎn)在初始化操作完成后,周期性向?qū)Χ税l(fā)送BFD報(bào)文,在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文之前,不啟動(dòng)BFD會(huì)話檢測;B3、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
5.根據(jù)權(quán)利要求4所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B1具體包括BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,將該參數(shù)下發(fā)給其內(nèi)部的報(bào)文發(fā)送和檢測模塊,該報(bào)文發(fā)送和檢測模塊根據(jù)接收到的BFD會(huì)話參數(shù),進(jìn)行各種初始化操作。
6.根據(jù)權(quán)利要求5所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B1具體包括在所述報(bào)文發(fā)送和檢測模塊中設(shè)置一個(gè)標(biāo)記,并將該標(biāo)記的初始值設(shè)置為一個(gè)特定值,該特定值表示此時(shí)沒有收到對(duì)端發(fā)送的第一個(gè)BFD報(bào)文。
7.根據(jù)權(quán)利要求6所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B3具體包括B31、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,將所述在報(bào)文發(fā)送和檢測模塊中設(shè)置的標(biāo)記的值改變?yōu)榱硪粋€(gè)特定值,表示此時(shí)已經(jīng)收到了對(duì)端發(fā)送的第一個(gè)BFD報(bào)文;B32、BFD會(huì)話的端點(diǎn)在確定所述在報(bào)文發(fā)送和檢測模塊中設(shè)置的標(biāo)記的值已經(jīng)改變后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
8.根據(jù)權(quán)利要求7所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B32具體包括BFD會(huì)話的端點(diǎn)在所述BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)后,仍然沒有收到來自對(duì)端的BFD報(bào)文,則將丟失計(jì)數(shù)器的計(jì)數(shù)增加1,當(dāng)該計(jì)數(shù)器的計(jì)數(shù)累加到預(yù)定數(shù)值后,該端點(diǎn)便報(bào)告BFD鏈路出現(xiàn)故障。
9.根據(jù)權(quán)利要求1、2或3所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B具體包括B4、BFD會(huì)話的端點(diǎn)在協(xié)商完各種BFD會(huì)話參數(shù)后,進(jìn)行各種初始化操作,將BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長初始化為一個(gè)特定的值;B5、BFD會(huì)話的端點(diǎn)在初始化操作完成后,周期性向?qū)Χ税l(fā)送BFD報(bào)文,在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文之前,按照所述特定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測;B6、BFD會(huì)話的端點(diǎn)在接收到對(duì)端發(fā)出的第一個(gè)BFD報(bào)文后,按照所述協(xié)商確定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長,啟動(dòng)BFD會(huì)話檢測。
10.根據(jù)權(quán)利要求9所述對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,其特征在于,所述的步驟B5具體包括BFD會(huì)話的端點(diǎn)在所述特定的BFD會(huì)話檢測定時(shí)器的定時(shí)時(shí)長到達(dá)后,仍然沒有收到來自對(duì)端的BFD報(bào)文,則報(bào)告BFD鏈路出現(xiàn)故障。
全文摘要
本發(fā)明提供了一種對(duì)雙向轉(zhuǎn)發(fā)鏈路進(jìn)行故障檢測的方法,該方法主要包括雙向轉(zhuǎn)發(fā)檢測BFD會(huì)話的端點(diǎn)向?qū)Χ税l(fā)送BFD報(bào)文,并檢測對(duì)端發(fā)送的BFD報(bào)文;當(dāng)本端BFD會(huì)話端點(diǎn)接收到對(duì)端發(fā)來的第一個(gè)BFD報(bào)文時(shí),啟動(dòng)BFD會(huì)話檢測。利用本發(fā)明所述方法,可以解決由于路由器的協(xié)商模塊將BFD會(huì)話參數(shù)下達(dá)給檢測模塊所需要的延時(shí)的差異性,造成路由器誤報(bào)BFD會(huì)話鏈路出現(xiàn)故障的問題。
文檔編號(hào)H04L12/24GK1913457SQ200510089888
公開日2007年2月14日 申請(qǐng)日期2005年8月10日 優(yōu)先權(quán)日2005年8月10日
發(fā)明者譚學(xué)飛 申請(qǐng)人:華為技術(shù)有限公司