本發明涉及通信技術領域,特別涉及一種故障處理方法及裝置。
背景技術:
BFD(Bidirectional Forwarding Detection,雙向轉發檢測)是一種檢測機制,用于檢測兩個交換設備之間的故障,可以應用于各種上層協議(比如路由協議、BGP(Border Gateway Protocol,邊界網關協議)等)中。
BFD的實現過程可以包括:在待檢測的兩臺交換設備中建立會話,兩臺交換設備互發BFD控制報文,如果交換設備在預設時長內接收到對端設備發送的BFD控制報文,則表示鏈路正常,如果在預設時長內其中一臺交換設備沒有接收到對端設備發送的BFD控制報文,則認為這兩臺交換設備之間發生鏈路故障,通知該上層協議,通過該上層協議進行相應的故障處理。
技術實現要素:
本發明實施例的目的在于提供一種故障處理方法及裝置,提高網絡的穩定性。
為達到上述目的,本發明實施例公開了一種故障處理方法,應用于交換設備,包括:
在檢測到鏈路故障后,確定到達所述鏈路的對端設備的當前路由;
判斷當前路由的下一跳設備是否與原路由的下一跳設備相同;
如果否,則向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;
當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。
可選的,所述方法還可以包括:若確定不存在到達所述鏈路的對端設備的當前路由,刪除通過所述對端設備學習的路由。
可選的,所述當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由,可以包括:
判斷在第一預設時長內,是否接收到所述對端設備發送的檢測回復報文;
如果是,保留通過所述對端設備學習的路由;
如果否,刪除通過所述對端設備學習的路由。
可選的,在所述刪除通過所述對端設備學習的路由之前,還可以包括:
確定到達所述鏈路的對端設備的當前路由;
向所確定的當前路由的下一跳設備發送檢測報文;
判斷在第二預設時長內,是否接收到所述對端設備發送的檢測回復報文;
如果是,保留通過所述對端設備學習的路由;
如果否,返回執行所述確定到達所述鏈路的對端設備的當前路由的步驟,至到達預設的第一檢測總時長時,執行所述刪除通過所述對端設備學習的路由的步驟。
可選的,所述方法還可以包括:
在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,刪除通過所述對端設備學習的路由。
可選的,在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,還可以包括:
第三預設時長后,再次判斷當前路由的下一跳設備是否與原路由的下一跳設備相同,如果是,返回執行第三預設時長后,再次判斷當前路由的下一跳設備是否與原路由的下一跳設備相同的步驟,至到達預設的第二檢測總時長時,執行所述刪除通過所述對端設備學習的路由的步驟。
可選的,所述檢測報文及所述檢測回復報文為包含檢測標記的保活報文。
為達到上述目的,本發明實施例還公開了一種故障處理裝置,應用于交換設備,包括:
第一確定模塊,用于在檢測到鏈路故障后,確定到達所述鏈路的對端設備的當前路由;
第一判斷模塊,用于判斷當前路由的下一跳設備是否與原路由的下一跳設備相同;
第一發送模塊,用于當所述判斷模塊判斷結果為否時,向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;
處理模塊,用于當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。
可選的,所述處理模塊,還可以用于在確定不存在到達所述鏈路的對端設備當前路由的情況下,刪除通過所述對端設備學習的路由。
可選的,所述裝置還可以包括:
第二判斷模塊,用于判斷在第一預設時長內,是否接收到所述對端設備發送的檢測回復報文;
所述處理模塊,還用于當所述第二判斷模塊判斷結果為是時,保留通過所述對端設備學習的路由;當所述第二判斷模塊判斷結果為否時,刪除通過所述對端設備學習的路由。
可選的,所述裝置還可以包括:第二確定模塊、第二發送模塊和第三判斷模塊;
當所述第二判斷模塊判斷結果為否時,還觸發所述第二確定模塊;
所述第二確定模塊,用于重新確定到達所述鏈路的對端設備的當前路由;
所述第二發送模塊,用于向所述第二確定模塊確定的當前路由的下一跳設備發送檢測報文;
所述第三判斷模塊,用于判斷在第二預設時長內,是否接收到所述對端設備發送的檢測回復報文;
所述處理模塊,還用于當所述第三判斷模塊判斷結果為是時,保留通過所述對端設備學習的路由;當所述第三判斷模塊判斷結果為否時,觸發所述第二確定模塊,至到達預設的第一檢測總時長時,刪除通過所述對端設備學習的路由。
可選的,所述處理模塊,還可以用于在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,刪除通過所述對端設備學習的路由。
可選的,所述裝置還可以包括:
定時模塊,用于在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,到達第三預設時長時,觸發所述第一判斷模塊;當判斷結果為是時,再次觸發所述定時模塊,至到達預設的第二檢測總時長時,觸發所述刪除模塊;
所述處理模塊,還用于根據所述定時模塊的觸發刪除通過所述對端設備學習的路由。
應用本發明實施例,當BFD應用于BGP中時,在BFD檢測出鏈路故障的情況下,交換設備并不是立即將該故障鏈路的對端設備從自己的BGP鄰居中刪除,也不立即刪除從該對端設備學習的BGP路由,而是確定到達所述鏈路的對端設備的當前路由;如果當前路由的下一跳設備與原路由的下一跳設備不相同,則向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。接收到該對端設備發送的檢測回復報文,即表示該故障鏈路已經由其它正常鏈路替換掉,該交換設備與該對端設備之間的路由暢通。這樣,便避免了一次網絡震蕩,提高了網絡的穩定性。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為鏈路故障示意圖;
圖2為本發明實施例提供的一種故障處理方法的流程示意圖;
圖3為本發明實施例提供的一種故障處理裝置的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
當BFD應用于BGP中時,如圖1所示,當交換設備A與交換設備C之間發生鏈路故障時,BFD檢測出該鏈路故障,通知BGP,從而使交換設備A將交換設備C從自己的BGP鄰居中刪除,并刪除通過交換設備C學習的BGP路由;同樣的,交換設備C也將交換設備A從自己的BGP鄰居中刪除,并刪除通過交換設備A學習的BGP路由;這樣,A-C鏈路的BGP路由全部不通。當BGP重新進行鄰居檢測時,發現可以通過A-B-C這個路徑保證交換設備A與交換設備C之間的鏈路暢通,這種情況下,交換設備A重新添加交換設備C為自己的BGP鄰居,并通過交換設備C學習BGP路由;同樣的,交換設備C也重新添加交換設備A為自己的BGP鄰居,并通過交換設備A學習BGP路由;這樣,A-C鏈路的BGP路由暢通。
本發明實施例提供了一種故障處理方法及裝置,應用于交換設備,該交換設備可以為交換機、路由器、網關等。下面首先對本發明實施例提供的故障處理方法進行詳細說明。
圖2為本發明實施例提供的一種故障處理方法的流程示意圖,包括:
S201:在檢測到鏈路故障后,確定到達所述鏈路的對端設備的當前路由。
本發明實施例中,以應用BGP協議及BFD機制的交換設備為例進行說明。另外,故障鏈路兩端的交換設備的處理方案相同,這里只對故障鏈路一端的交換設備進行說明。
如圖1所示,假設交換設備A與交換設備C之間的鏈路發生故障,當BFD檢測到該故障時,會上報給BGP協議,下面針對交換設備A進行說明,交換設備C的處理方案與交換設備A相同,在此不做贅述。
此時,應用BGP協議的交換設備A重新進行路由的迭代計算,根據計算結果,確定到達該故障鏈路的對端設備(即交換設備C)的當前路由。
S202:判斷當前路由的下一跳設備是否與原路由的下一跳設備相同。
需要說明的是,如果交換設備所在的網絡為EBGP組網,在EBGP組網中,BGP鄰居之間的路由是唯一的,如果出現鏈路故障,則該唯一的路由失效,故障鏈路兩端的交換設備只能將對方從自己的BGP鄰居中刪除,并刪除通過對方學習的BGP路由。
因此,在本實施例中,若確定不存在到達所述鏈路的對端設備的當前路由,刪除通過所述對端設備學習的路由。也就是說,交換設備A通過重新進行路由的迭代計算,發現不存在到達交換設備C的當前路由,這種情況下,交換設備A將交換設備C從自己的BGP鄰居中刪除,并刪除通過交換設備C學習的路由。
在除EBGP組網以外的其他應用BGP的網絡中,當鏈路發生故障時,通常存在其他備份路由可以替代該故障鏈路的路由,如圖1中,可以用A-B-C替代A-C。這種情況下,交換設備A重新進行路由的迭代計算,根據計算結果,確定到達交換設備C的當前路由為A-B-C。也就是說,當前路由的下一跳設備為交換設備B。而鏈路故障之前,交換設備A到達交換設備C的路由為A-C,也就是說,原路由的下一跳設備為交換設備C。
因此,判斷當前路由的下一跳設備交換設備B與原路由的下一跳設備交換設備C不相同,此時,執行S203:向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備。
檢測報文,即為檢測到達故障鏈路的對端設備的當前路由是否正常的報文。具體的,交換設備A向當前路由的下一跳設備(即交換設備B)發送檢測報文,如果當前路由暢通,則交換設備B能夠將該檢測報文轉發至交換設備C,交換設備C收到該檢測報文后,通過該當前路由,將檢測回復報文發送至交換設備A。
S203:當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。
由上所述,如果交換設備A接收到交換設備C發送的檢測回復報文,則說明該故障鏈路的路由已經由正常的路由替代,這種情況下,交換設備A繼續將交換設備C作為自己的BGP鄰居,保留通過交換設備C學習的路由。
作為一種實施方式,所述檢測報文及所述檢測回復報文為包含檢測標記的保活報文。
在應用BGP的網絡中,交換設備之間會發送keepalive(保活)報文,以檢測與對方之間的鏈路是否正常。上述檢測報文及檢測回復報文可以為擴展的keepalive報文,擴展的keepalive報文中包含檢測標記,以表明這是應對BFD檢測到鏈路故障時的專用keepalive報文。具體的,檢測標記可以為S標記。
應用本發明圖2所示實施例,當BFD應用于BGP中時,在BFD檢測出鏈路故障的情況下,交換設備并不是立即將該故障鏈路的對端設備從自己的BGP鄰居中刪除,也不立即刪除從該對端設備學習的BGP路由,而是確定到達所述鏈路的對端設備的當前路由;如果當前路由的下一跳設備與原路由的下一跳設備不相同,則向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。接收到該對端設備發送的檢測回復報文,即表示該故障鏈路已經由其它正常鏈路替換掉,該交換設備與該對端設備之間的路由暢通。這樣,便避免了一次網絡震蕩,提高了網絡的穩定性。
在本實施例中,交換設備向當前路由的下一跳設備發送檢測報文后,判斷在第一預設時長內,是否接收到所述對端設備發送的檢測回復報文;如果是,保留通過所述對端設備學習的路由;如果否,刪除通過所述對端設備學習的路由。
可以理解的,上述交換設備A向交換設備B發送檢測報文后,不能無限時一直等待交換設備C的回復,應該設定一段時長(第一預設時長,可以為2S、5S等,在此不做限制),如果在第一預設時長內接收到交換設備C發送的檢測回復報文,則保留通過交換設備C學習的路由,如果未接收到,則刪除通過交換設備C學習的路由。
作為一種實施方式,在刪除通過對端設備學習的路由之前,可以確定到達所述鏈路的對端設備的當前路由;向所確定的當前路由的下一跳設備發送檢測報文;判斷在第二預設時長內,是否接收到所述對端設備發送的檢測回復報文;如果是,保留通過所述對端設備學習的路由;如果否,返回執行所述確定到達所述鏈路的對端設備的當前路由的步驟,至到達預設的第一檢測總時長時,執行所述刪除通過所述對端設備學習的路由的步驟。
也就是說,如果在第一預設時長內,交換設備A未接收到交換設備C發送的檢測回復報文,可以再次確定到達交換設備C的當前路由。由于在實際應用中,當前路由可能經常發生改變,所以,此時可以重新確定當前路由,并向新確定的當前路由的下一跳設備發送檢測報文,如果在這之后的第二預設時長內,接收到交換設備C發送的檢測回復報文,則保留通過交換設備C學習的路由。
第二預設時長可以與第一預設時長相同或不同,在這里假設二者都為5S。
如果向新確定的當前路由的下一跳設備發送檢測報文后的5S內仍未接收到交換設備C發送的檢測回復報文,可以再重新確定當前路由,并向新確定的當前路由的下一跳設備發送檢測報文,重復執行這一過程。
當然,重復執行這一過程也應該有時間限制,不能一直重復執行。因此,可以設定一個檢測總時長(第一檢測總時長),該總時長可以為15S,當然也可以為其他,在此不做限制,以檢測到鏈路故障時開始計時,在這15S內,如果接收到交換設備C發送的檢測回復報文,則保留通過交換設備C學習的路由,如果一直未接收到交換設備C發送的檢測回復報文,則到達15S時,刪除通過交換設備C學習的路由。
通常情況下,當出現鏈路故障時,交換設備重新進行路由的迭代計算,確定到達故障鏈路的對端設備的路由都會發生改變。但是,如果交換設備A出現了其他故障,則可能路由迭代錯誤,導致上述S202判斷當前路由的下一跳設備與原路由的下一跳設備相同。這種情況下,刪除通過所述對端設備學習的路由。
當然,上述S202判斷當前路由的下一跳設備與原路由的下一跳設備相同,也有可能是交換設備反應延遲,導致路由迭代錯誤。
作為本發明的一種實施方式,可以在判斷當前路由的下一跳設備與原路由的下一跳設備相同的第三預設時長后,再次判斷當前路由的下一跳設備是否與原路由的下一跳設備相同,如果是,返回執行第三預設時長后,再次判斷當前路由的下一跳設備是否與原路由的下一跳設備相同的步驟,至到達預設的第二檢測總時長時,執行所述刪除通過所述對端設備學習的路由的步驟。
該第三預設時長可以為2S,也可以為其他,在此不做限制。假設交換設備A判斷當前路由的下一跳設備與原路由的下一跳設備相同,則2S后再次判斷當前路由的下一跳設備是否與原路由的下一跳設備相同,如果還相同,則刪除通過交換設備C學習的路由。當然也可以等待2S后再判斷當前路由的下一跳設備是否與原路由的下一跳設備相同。
如上所述,該重復執行的過程應該要有時間限制,可以設定一個檢測總時長(第二檢測總時長),該時長可以為6S、9S等。第二檢測總時長與第一檢測總時長可以相同,也可以不同。
舉例來說,可以在這6S內每隔2S判斷一次當前路由的下一跳設備是否與原路由的下一跳設備相同,如果有一次判斷不相同,則執行S203,如果每次都相同,則表示交換設備A出現其他故障,則刪除通過交換設備C學習的路由。
應用上述方案,可以避免因交換設備反應延遲,導致誤刪路由的情況。
與上述方法實施例相對應,本發明實施例還提供一種故障處理裝置。
圖3為本發明實施例提供的一種故障處理裝置的結構示意圖,包括:
第一確定模塊301,用于在檢測到鏈路故障后,確定到達所述鏈路的對端設備的當前路由;
第一判斷模塊302,用于判斷當前路由的下一跳設備是否與原路由的下一跳設備相同;
第一發送模塊303,用于當所述判斷模塊判斷結果為否時,向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;
處理模塊304,用于當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。
在本實施例中,第一確定模塊301,具體可以用于:
重新進行路由的迭代計算,根據計算結果,確定到達所述鏈路的對端設備的當前路由。
在本實施例中,所述裝置處理模塊304,還可以用于在確定不存在到達所述鏈路的對端設備當前路由的情況下,刪除通過所述對端設備學習的路由。
在本實施例中,還可以包括:
第二判斷模塊(圖中未示出),用于判斷在第一預設時長內,是否接收到所述對端設備發送的檢測回復報文;
處理模塊304,還可以用于當所述第二判斷模塊判斷結果為是時,保留通過所述對端設備學習的路由;當所述第二判斷模塊判斷結果為否時,刪除通過所述對端設備學習的路由。
在本實施例中,所述裝置還可以包括:第二確定模塊、第二發送模塊和第三判斷模塊(圖中未示出);
當所述第二判斷模塊判斷結果為否時,還觸發所述第二確定模塊;
所述第二確定模塊,用于重新確定到達所述鏈路的對端設備的當前路由;
所述第二發送模塊,用于向所述第二確定模塊確定的當前路由的下一跳設備發送檢測報文;
所述第三判斷模塊,用于判斷在第二預設時長內,是否接收到所述對端設備發送的檢測回復報文;
所述處理模塊,還用于當所述第三判斷模塊判斷結果為是時,保留通過所述對端設備學習的路由;當所述第三判斷模塊判斷結果為否時,觸發所述第二確定模塊,至到達預設的第一檢測總時長時,刪除通過所述對端設備學習的路由。
在本實施例中,所述處理模塊,還可以用于在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,刪除通過所述對端設備學習的路由。
在本實施例中,所述裝置還可以包括:
定時模塊(圖中未示出),用于在判斷當前路由的下一跳設備與原路由的下一跳設備相同的情況下,到達第三預設時長時,觸發所述第一判斷模塊;當判斷結果為是時,再次觸發所述定時模塊,至到達預設的第二檢測總時長時,觸發所述刪除模塊;
處理模塊304,還用于根據定時模塊的觸發刪除通過所述對端設備學習的路由。
在本實施例中,所述檢測報文及所述檢測回復報文可以為包含檢測標記的保活報文。
應用本發明圖3所示實施例,當BFD應用于BGP中時,在BFD檢測出鏈路故障的情況下,交換設備并不是立即將該故障鏈路的對端設備從自己的BGP鄰居中刪除,也不立即刪除從該對端設備學習的BGP路由,而是確定到達所述鏈路的對端設備的當前路由;如果當前路由的下一跳設備與原路由的下一跳設備不相同,則向當前路由的下一跳設備發送檢測報文,以使下一跳設備按當前路由將所述檢測報文轉發給對端設備;當接收到所述對端設備發送的檢測回復報文時,保留通過所述對端設備學習的路由。接收到該對端設備發送的檢測回復報文,即表示該故障鏈路已經由其它正常鏈路替換掉,該交換設備與該對端設備之間的路由暢通。這樣,便避免了一次網絡震蕩,提高了網絡的穩定性。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本領域普通技術人員可以理解實現上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于計算機可讀取存儲介質中,這里所稱得的存儲介質,如:ROM/RAM、磁碟、光盤等。
以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。