專利名稱:鏈路檢測(cè)方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及IP網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種多跳B(niǎo)FD快速檢測(cè)和切換保護(hù)的實(shí)現(xiàn) 方法和裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,網(wǎng)絡(luò)設(shè)備需要對(duì)相鄰系統(tǒng)之間通信故障進(jìn)行快速檢 測(cè),這樣在出現(xiàn)故障時(shí)可以更快的建立起替代通道或倒換到其他鏈路。BFD (Bidirectional Forwarding Detection,雙向轉(zhuǎn)發(fā)檢測(cè))協(xié)議的出現(xiàn),為上述 問(wèn)題提出了一種解決方案。BFD的主要目標(biāo)是提供一種低負(fù)載的,快速地檢測(cè)在兩個(gè)相鄰的節(jié)點(diǎn)間的故障的 方法,能夠檢測(cè)接口故障,數(shù)據(jù)鏈路斷鏈,甚至節(jié)點(diǎn)本身的失效;此外,BFD也是一種單一的 檢測(cè)機(jī)制,可應(yīng)用于各種媒介或任意的協(xié)議層上。通常情況下,采用BFD的異步模式檢測(cè),即在兩個(gè)節(jié)點(diǎn)間的各條鏈路上分別定期 發(fā)送BFD包,一個(gè)節(jié)點(diǎn)在規(guī)定的時(shí)長(zhǎng)內(nèi)接收不到新的BFD包,就可以確定該節(jié)點(diǎn)到鄰居節(jié)點(diǎn) 間的雙向路徑發(fā)生了問(wèn)題,在某些情況下,系統(tǒng)可以協(xié)商不再周期的發(fā)送BFD包來(lái)減輕負(fù)載。BFD會(huì)話可以是單跳會(huì)話,即在將兩個(gè)直連鏈路端的節(jié)點(diǎn)之間建立BFD鄰居關(guān)系, 檢測(cè)兩個(gè)直連鄰居節(jié)點(diǎn)間的鏈路狀態(tài);也可以是多跳會(huì)話,用于檢測(cè)兩個(gè)非相鄰節(jié)點(diǎn)之間 的連通性。對(duì)于單跳B(niǎo)FD會(huì)話,需要指定收發(fā)報(bào)文的接口,可以是邏輯接口或者物理接口 ; 對(duì)于多跳B(niǎo)FD會(huì)話,不需要指定報(bào)文的收發(fā)接口,收發(fā)報(bào)文以轉(zhuǎn)發(fā)路徑為準(zhǔn)。在實(shí)現(xiàn)通過(guò)BFD會(huì)話進(jìn)行鏈路連通檢測(cè)的過(guò)程中,存在如下問(wèn)題對(duì)于多跳B(niǎo)FD會(huì)話,尤其對(duì)于非相鄰節(jié)點(diǎn)之間的連通性檢測(cè),兩節(jié)點(diǎn)之間建立了 多跳的BFD會(huì)話,如果在BFD檢測(cè)出鏈路之前主備鏈路已經(jīng)切換,此時(shí)若不更新BFD的發(fā)包 和檢測(cè)路徑,BFD仍然檢測(cè)主鏈路的話,就會(huì)向上層報(bào)Down,但此時(shí)兩個(gè)節(jié)點(diǎn)之間可能還是 可達(dá)的,無(wú)法準(zhǔn)確的反應(yīng)當(dāng)前兩節(jié)點(diǎn)之間的鏈路的連通狀態(tài)。此外,當(dāng)路由或者標(biāo)簽等振蕩造成轉(zhuǎn)發(fā)路徑發(fā)生變化,如果BFD報(bào)文的發(fā)送路徑不變的話,也會(huì)造成節(jié)點(diǎn)之間鏈路連通狀態(tài)的誤報(bào)。
發(fā)明內(nèi)容
本發(fā)明提供了一種鏈路檢測(cè)方法、裝置和系統(tǒng),解決了節(jié)點(diǎn)之間鏈路連通狀態(tài)檢 測(cè)不準(zhǔn)確的問(wèn)題。一種鏈路檢測(cè)方法,在使用雙向轉(zhuǎn)發(fā)檢測(cè)BFD報(bào)文進(jìn)行連通檢測(cè)的鏈路上,包括若鏈路路徑發(fā)生變化,更新鏈路路徑信息;根據(jù)更新后的所述鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。進(jìn)一步的,所述若鏈路路徑發(fā)生變化,更新鏈路路徑信息的步驟之前,還包括在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。
進(jìn)一步的,所述若鏈路路徑發(fā)生變化,更新鏈路路徑信息具體為在檢測(cè)到發(fā)生主備鏈路之間的切換時(shí),獲取該鏈路的索引;根據(jù)所述索引獲取該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話;所述鏈路的端節(jié)點(diǎn)將所述雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話發(fā)送和接收?qǐng)?bào)文的鏈路路徑信息更 新為切換后正常工作的鏈路的路徑信息。進(jìn)一步的,所述若鏈路路徑發(fā)生變化,更新鏈路路徑信息具體為當(dāng)發(fā)生路由變化或標(biāo)簽變化或端口變化時(shí),將變化后的路徑信息通知所述鏈路的 端節(jié)點(diǎn);所述端節(jié)點(diǎn)根據(jù)變化后的鏈路路徑,更新鏈路路徑信息。進(jìn)一步的,所述若鏈路路徑發(fā)生變化,更新鏈路路徑信息的步驟之前,還包括通過(guò)FPGA (可編程邏輯模塊)發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,對(duì)鏈路進(jìn)行連通檢 測(cè)。本發(fā)明還提供了一種鏈路檢測(cè)裝置,包括BFD驅(qū)動(dòng)模塊,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息;發(fā)送和檢測(cè)模塊,用于根據(jù)更新后的鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào) 文。進(jìn)一步的,所述BFD驅(qū)動(dòng)模塊包括第一更新單元,用于在檢測(cè)到發(fā)生主備鏈路之間的切換時(shí),將鏈路路徑信息更新 為切換后正常工作的鏈路的路徑信息;第二更新單元,用于在發(fā)生路由變化或標(biāo)簽變化或端口變化時(shí),根據(jù)變化后的鏈 路路徑,更新鏈路路徑信息。進(jìn)一步的,所述BFD驅(qū)動(dòng)模塊,還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè) 會(huì)話之間建立對(duì)應(yīng)關(guān)系。本發(fā)明還提供了一種鏈路檢測(cè)系統(tǒng),包括第一鏈路檢測(cè)裝置和第二鏈路檢測(cè)裝 置,所述第一鏈路檢測(cè)裝置和第二鏈路檢測(cè)裝置之間存在至少一條鏈路,且在該鏈路上承 載著至少一個(gè)雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話;所述第一鏈路檢測(cè)裝置,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息,并根據(jù) 更新后的鏈路路徑信息,向所述第二鏈路檢測(cè)裝置發(fā)送雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,或自所述第二 鏈路檢測(cè)裝置接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。進(jìn)一步的,所述第一鏈路檢測(cè)裝置還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢 測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。本發(fā)明的實(shí)施例提供了一種鏈路檢測(cè)方法、裝置和系統(tǒng),在使用雙向轉(zhuǎn)發(fā)檢測(cè)報(bào) 文進(jìn)行連通檢測(cè)的鏈路上,如果鏈路路徑發(fā)生變化,更新鏈路路徑信息,并根據(jù)更新后的鏈 路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,實(shí)現(xiàn)了在鏈路路徑發(fā)生變化后,對(duì)新的鏈路路 徑進(jìn)行雙向轉(zhuǎn)發(fā)檢測(cè),解決了節(jié)點(diǎn)之間鏈路連通狀態(tài)檢測(cè)不準(zhǔn)確的問(wèn)題。
圖1為本發(fā)明的實(shí)施例提供的一種鏈路檢測(cè)方法的流程圖;圖2為本發(fā)明的實(shí)施例使用的BFD架構(gòu)結(jié)構(gòu)示意圖3為本發(fā)明的實(shí)施例所應(yīng)用的組網(wǎng)環(huán)境示意圖;圖4為本發(fā)明的實(shí)施例所提供的一種鏈路檢測(cè)裝置的結(jié)構(gòu)示意圖;圖5為圖3中BFD驅(qū)動(dòng)模塊301的結(jié)構(gòu)示意圖。
具體實(shí)施例方式對(duì)于多跳B(niǎo)FD會(huì)話,尤其對(duì)于非相鄰節(jié)點(diǎn)之間的連通性檢測(cè),兩節(jié)點(diǎn)之間建立了 多跳的BFD會(huì)話,如果在BFD檢測(cè)出鏈路之前主備鏈路已經(jīng)切換,此時(shí)若不更新BFD的發(fā)包 和檢測(cè)路徑,BFD仍然檢測(cè)主鏈路的話,就會(huì)向上層報(bào)Down,但此時(shí)兩個(gè)節(jié)點(diǎn)之間可能還是 可達(dá)的,無(wú)法準(zhǔn)確的反應(yīng)當(dāng)前兩節(jié)點(diǎn)之間的鏈路的連通狀態(tài)。此外,當(dāng)路由或者標(biāo)簽等振蕩 造成轉(zhuǎn)發(fā)路徑發(fā)生變化,如果BFD報(bào)文的發(fā)送路徑不變的話,也會(huì)造成節(jié)點(diǎn)之間鏈路連通 狀態(tài)的誤報(bào)。此外,BFD報(bào)文的發(fā)送和檢測(cè)一般都是由微引擎(如節(jié)點(diǎn)CPU)實(shí)現(xiàn)。而微引擎的 性能是有限的,而且作為轉(zhuǎn)發(fā)芯片,它還要處理很復(fù)雜的工作。BFD報(bào)文對(duì)發(fā)包速率和檢測(cè) 性能都有極高要求,比如IOms以內(nèi)甚至更小的時(shí)間間隔范圍,如果由微引擎來(lái)處理,其性 能很難滿足要求,可能投入較大的成本設(shè)法也能實(shí)現(xiàn),但這樣勢(shì)必會(huì)增加微引擎的負(fù)擔(dān),對(duì) 其轉(zhuǎn)發(fā)性能也會(huì)造成較大的負(fù)面影響。尤其是當(dāng)流量很大時(shí),微引擎要處理轉(zhuǎn)發(fā)報(bào)文,BFD 報(bào)文的發(fā)送和檢測(cè)可能就會(huì)受到一定程度的影響,甚至?xí)霈F(xiàn)BFD會(huì)話的震蕩,造成狀態(tài) 誤報(bào)。為了解決上述問(wèn)題,本發(fā)明的實(shí)施例一提供了一種鏈路檢測(cè)方法,本發(fā)明的實(shí)施 例中,采用FPGA(可編程邏輯器件)來(lái)取代轉(zhuǎn)發(fā)微引擎,進(jìn)行定時(shí)的發(fā)包和檢測(cè),一方面提 高BFD報(bào)文的發(fā)送頻率和檢測(cè)時(shí)效,另一方面將轉(zhuǎn)發(fā)微引擎從繁重的任務(wù)中解放出來(lái),專 司進(jìn)行正常業(yè)務(wù)數(shù)據(jù)包的轉(zhuǎn)發(fā)處理工作,以減輕微引擎的負(fù)擔(dān),提高轉(zhuǎn)發(fā)微引擎的轉(zhuǎn)發(fā)性 能。使用本發(fā)明的實(shí)施例提供的鏈路檢測(cè)方法完成鏈路檢測(cè)的過(guò)程如圖1所示,包 括步驟101、在兩節(jié)點(diǎn)間創(chuàng)建一個(gè)多跳的BFD會(huì)話;本步驟中,采用BGP協(xié)議(邊界網(wǎng)關(guān)協(xié)議)建立BGP鄰居,在BGP鄰居間使能BFD 會(huì)話,BGP鄰居間使用Ioopback接口。配置發(fā)包間隔可以在10 990ms,由于采用FPGA發(fā) 包和檢測(cè),其發(fā)包間隔甚至可以更小。步驟102、BFD會(huì)話的兩端節(jié)點(diǎn)進(jìn)行參數(shù)協(xié)商;本步驟中,BFD會(huì)話兩端的節(jié)點(diǎn)進(jìn)行BFD參數(shù)的協(xié)商和下發(fā),具體過(guò)程如下會(huì)話建鏈成功后,節(jié)點(diǎn)通過(guò)發(fā)送用于協(xié)商參數(shù)的BFD報(bào)文(通過(guò)一標(biāo)記位P來(lái)標(biāo) 識(shí))到對(duì)端進(jìn)行時(shí)間參數(shù)的協(xié)商,時(shí)間參數(shù)主要包括發(fā)送時(shí)間間隔和檢測(cè)超時(shí)間隔。節(jié)點(diǎn) 在發(fā)出的BFD報(bào)文中都會(huì)攜帶自己的配置參數(shù),對(duì)端節(jié)點(diǎn)根據(jù)接收到的BFD報(bào)文攜帶的參 數(shù)和本端的配置參數(shù),按照協(xié)議規(guī)定的方式進(jìn)行計(jì)算,得到最終的報(bào)文發(fā)送間隔和檢測(cè)超 時(shí)間隔。在參數(shù)協(xié)商成功后,下發(fā)用于檢測(cè)的BFD報(bào)文和相關(guān)信息到轉(zhuǎn)發(fā)層面和FPGA。本發(fā)明實(shí)施例使用的BFD架構(gòu)如圖2所示,包括BFD控制層面201、轉(zhuǎn)發(fā)層面202 以及發(fā)送和檢測(cè)模塊203。轉(zhuǎn)發(fā)層面202包括BFD驅(qū)動(dòng)模塊2021、FRR驅(qū)動(dòng)模塊2022和微 引擎2023,發(fā)送和檢測(cè)模塊203具體為FPGA。BFD驅(qū)動(dòng)模塊2021和FRR驅(qū)動(dòng)模塊2022為微引擎2023以及FPGA配置相關(guān)的信息,維護(hù)相關(guān)表項(xiàng),包括微引擎2023上行轉(zhuǎn)發(fā)需要的 全局會(huì)話表和下行本地BFD會(huì)話表,F(xiàn)PGA發(fā)包和檢測(cè)需要的BFD發(fā)包表和BFD檢測(cè)表。BFD 驅(qū)動(dòng)模塊2021和FRR驅(qū)動(dòng)模塊2022的業(yè)務(wù)處理處于同一個(gè)進(jìn)程,通過(guò)函數(shù)調(diào)用關(guān)系交互。BFD發(fā)包表用于存放本節(jié)點(diǎn)發(fā)送的BFD報(bào)文的相關(guān)信息,如發(fā)包間隔和報(bào)文長(zhǎng)度; BFD檢測(cè)表用于記錄接收到的對(duì)端節(jié)點(diǎn)發(fā)送的BFD報(bào)文的相關(guān)信息,如檢測(cè)超時(shí)間隔等。步驟103、節(jié)點(diǎn)通過(guò)發(fā)送BFD報(bào)文和接收對(duì)端節(jié)點(diǎn)發(fā)送的BFD報(bào)文,對(duì)鏈路的連通 狀態(tài)進(jìn)行檢測(cè);本步驟中,在兩節(jié)點(diǎn)間的BFD會(huì)話UP(表明會(huì)話處于激活態(tài),鏈路連通正常)以 后,下發(fā)BFD控制報(bào)文和檢測(cè)配置信息到轉(zhuǎn)發(fā)層面。一般情況下,BFD控制報(bào)文和檢測(cè)配置信息由主控Cpu下發(fā)。對(duì)于不同的BFD 會(huì)話類型發(fā)起情況不一樣,單跳和IP多跳B(niǎo)FD會(huì)話是雙方都可以發(fā)起,對(duì)于Ldp-lsp和 LDP-rsvp會(huì)話則會(huì)在會(huì)話雙方中指定一個(gè)主動(dòng)方和一個(gè)被動(dòng)方,由主動(dòng)方發(fā)起檢測(cè)。微引擎轉(zhuǎn)發(fā)需要的上行全局會(huì)話表和下行本地會(huì)話表采用HASH的方式實(shí)現(xiàn),上 行全局會(huì)話表的存在是為了解決BFD報(bào)文從其它板接收進(jìn)來(lái)以后能夠正確轉(zhuǎn)發(fā)到會(huì)話的 歸屬板(即會(huì)話所在的單板,該歸屬板的FPGA進(jìn)行發(fā)包和檢測(cè))。下行本地會(huì)話表維護(hù)的 是BFD的本地會(huì)話標(biāo)識(shí)以及遠(yuǎn)端會(huì)話標(biāo)識(shí)與BFD會(huì)話ID之間的關(guān)系。FPGA的發(fā)包表和檢測(cè)表采用直接寫(xiě)寄存器的方式實(shí)現(xiàn)。FPGA內(nèi)部存儲(chǔ)器地址和 每個(gè)會(huì)話ID之間有一個(gè)一一映射關(guān)系,每一個(gè)會(huì)話的報(bào)文、發(fā)送參數(shù)和檢測(cè)參數(shù)都存儲(chǔ)在 對(duì)應(yīng)內(nèi)存或存儲(chǔ)器內(nèi)。FPGA采用100M的系統(tǒng)時(shí)鐘對(duì)各個(gè)會(huì)話進(jìn)行輪詢掃描,其掃描間隔 為ns級(jí),單板1024個(gè)會(huì)話全部掃描在微妙級(jí)即可以完成,相對(duì)10ms的發(fā)包間隔,幾乎可以 忽略不計(jì)。因此,F(xiàn)PGA的發(fā)包精度完全可以保證。進(jìn)行會(huì)話掃描時(shí),對(duì)于使能的會(huì)話,F(xiàn)PGA 會(huì)記下使能一瞬間的時(shí)刻值,每次掃描會(huì)計(jì)算當(dāng)前時(shí)間與使能瞬間的時(shí)間間隔,檢查時(shí)間 間隔是否達(dá)到配置的發(fā)包間隔,若達(dá)到發(fā)送間隔即開(kāi)始發(fā)包處理。FPGA進(jìn)行故障檢測(cè)采用首包觸發(fā)的方式實(shí)現(xiàn),即轉(zhuǎn)發(fā)驅(qū)動(dòng)部分給FPGA配置使能 以后,F(xiàn)PGA并不立即開(kāi)啟檢測(cè),而是當(dāng)收到對(duì)端的第一個(gè)BFD報(bào)文時(shí)才開(kāi)始啟動(dòng)檢測(cè)。根 據(jù)一般的網(wǎng)絡(luò)情況,規(guī)定第一個(gè)檢測(cè)報(bào)文的接收不能超過(guò)5s,否則認(rèn)為首包超時(shí)故障,此時(shí) 可以認(rèn)定為鏈路故障。對(duì)于使能檢測(cè)的會(huì)話,F(xiàn)PGA采用和發(fā)送BFD報(bào)文一樣的方式進(jìn)行系 統(tǒng)時(shí)鐘掃描,每收到一個(gè)報(bào)文FPGA會(huì)記錄其接收時(shí)刻值,如果在一定超時(shí)間隔內(nèi)能夠連續(xù) 收到對(duì)端的報(bào)文,則認(rèn)為鏈路正常;如果在超時(shí)時(shí)間間隔內(nèi)一直沒(méi)有收到對(duì)端的BFD報(bào)文, 則認(rèn)為會(huì)話超時(shí),產(chǎn)生中斷信號(hào)上報(bào)本地微引擎。當(dāng)配置會(huì)話較多時(shí),可能會(huì)出現(xiàn)多個(gè)會(huì)話同時(shí)超時(shí)的情況,為了防止多個(gè)超時(shí)會(huì) 話頻繁上報(bào)中斷導(dǎo)致微引擎過(guò)忙,F(xiàn)PGA采用1ms更新一次中斷的方式處理。所有會(huì)話中 斷狀態(tài)在lms更新周期內(nèi)均處于中斷關(guān)閉狀態(tài),中斷狀態(tài)更新后,打開(kāi)中斷上報(bào)微引擎,微 引擎讀完所有會(huì)話中斷狀態(tài)后清除中斷狀態(tài),從而可以保證不丟失任何一個(gè)會(huì)話的中斷狀 態(tài)。步驟104、在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息;鏈路路徑發(fā)生變化有兩種情況,第一種情況是發(fā)生了 FRR切換,第二種情況是發(fā) 生路由變化或標(biāo)簽變化或端口變化,首先對(duì)第一種情況進(jìn)行說(shuō)明。本步驟以圖3所示組網(wǎng)環(huán)境為例進(jìn)行說(shuō)明,路由器R1和路由器R3之間建立IP節(jié)點(diǎn)間的多跳B(niǎo)FD會(huì)話,用于檢測(cè)設(shè)備Rl和R3之間的鏈路可達(dá)性,Rl和R3作為BFD會(huì)話的 端節(jié)點(diǎn)。Rl到R3之間存在FRR保護(hù),其中R1-S1-R3為主鏈路,R1-R2-R3為備鏈路,Sl為 交換機(jī)(或者路由器設(shè)備)。正常情況下,BFD沿著主鏈路發(fā)包和檢測(cè)。在主鏈路正常工作 時(shí),兩端節(jié)點(diǎn)通過(guò)主鏈路發(fā)送及接收BFD報(bào)文,主鏈路的路徑信息即為鏈路路徑信息。當(dāng)S1-R3之間鏈路故障時(shí),路由器Rl不能及時(shí)感知,只能依賴上層路由的收斂來(lái) 進(jìn)行FRR的保護(hù)切換,這樣可能會(huì)導(dǎo)致很長(zhǎng)時(shí)間的斷流。因此此時(shí)需要BFD檢測(cè)來(lái)盡快地 感知鏈路狀態(tài),并及時(shí)通過(guò)FRR(Fast ReRoute,快速重路由)進(jìn)行保護(hù)切換。BFD檢測(cè)出主 鏈路DOWN,快速通知FRR切換到備鏈路,同時(shí)BFD通知應(yīng)用會(huì)話DOWN。當(dāng)Rl-Sl之間鏈路故障時(shí),路由器Rl通過(guò)底層硬件或者端口狀態(tài)可以及時(shí)感知鏈 路的變化,此時(shí)Rl的BSP或者端口會(huì)及時(shí)通知FRR,觸發(fā)在Rl到R3之間由主鏈路向備鏈路 上的保護(hù)切換。為了更快地將BFD的發(fā)包鏈路路徑信息更新為備鏈路的路徑,轉(zhuǎn)發(fā)層面維 護(hù)一張鏈路、FRR索引和BFD會(huì)話ID之間的對(duì)應(yīng)關(guān)系表,其中FRR索引用于查詢主備路由 的偏移值,可用來(lái)直接定位到主備路由表項(xiàng);BFD會(huì)話ID可以直接索引到對(duì)應(yīng)的會(huì)話信息。當(dāng)節(jié)點(diǎn)Rl的FRR驅(qū)動(dòng)模塊(通過(guò)其他的途徑,如底層硬件或端口狀態(tài))感知到鏈 路故障并進(jìn)行切換時(shí),F(xiàn)RR驅(qū)動(dòng)模塊將FRR索引通知給本節(jié)點(diǎn)的BFD驅(qū)動(dòng)模塊,告知BFD驅(qū) 動(dòng)模塊鏈路路徑信息已經(jīng)發(fā)生變更,指示BFD驅(qū)動(dòng)模塊將鏈路路徑信息由主鏈路更新為備 鏈路,BFD驅(qū)動(dòng)模塊根據(jù)該FRR索引直接對(duì)應(yīng)到相應(yīng)的BFD會(huì)話,將對(duì)應(yīng)BFD會(huì)話的BFD報(bào) 文中的路徑信息更新為備用路徑信息。在主鏈路恢復(fù)后,本節(jié)點(diǎn)會(huì)執(zhí)行FRR或者通過(guò)路由 收斂進(jìn)行路由更新,將業(yè)務(wù)流量由備鏈路倒換回主鏈路,此時(shí)路由模塊會(huì)通知BFD控制模 塊進(jìn)行BFD會(huì)話更新,具體說(shuō)明參見(jiàn)下面對(duì)第二種情況的描述。下面對(duì)第二種情況進(jìn)行說(shuō)明。對(duì)于多跳的BFD檢測(cè),當(dāng)轉(zhuǎn)發(fā)路徑發(fā)生變化,如路由 變化(比如負(fù)荷分擔(dān)鏈路個(gè)數(shù)發(fā)生變化)、標(biāo)簽變化和端口變化(比如SMARTGR0UP接口成 員個(gè)數(shù)發(fā)生變化)時(shí),如果依然沿著原來(lái)的鏈路路徑發(fā)送和接收BFD報(bào)文,就會(huì)導(dǎo)致鏈路狀 態(tài)誤報(bào)。本發(fā)明實(shí)施例中,當(dāng)本節(jié)點(diǎn)檢測(cè)到轉(zhuǎn)發(fā)路徑發(fā)生變化時(shí),本節(jié)點(diǎn)的BFD控制層面對(duì) BFD會(huì)話進(jìn)行下發(fā)更新操作到轉(zhuǎn)發(fā)層面的BFD業(yè)務(wù)驅(qū)動(dòng),由轉(zhuǎn)發(fā)層面的BFD驅(qū)動(dòng)模塊負(fù)責(zé) 將這種變化通知到FPGA,F(xiàn)PGA重新按照更新后的鏈路路徑信息進(jìn)行發(fā)包和檢測(cè),“盡力而 為,,地將本端發(fā)送的BFD報(bào)文沿著當(dāng)前的鏈路路徑發(fā)送到對(duì)端,努力保證BFD會(huì)話的穩(wěn)定, 使BFD會(huì)話狀態(tài)能盡可能準(zhǔn)確地顯示當(dāng)前兩個(gè)節(jié)點(diǎn)之間的鏈路可達(dá)性狀況。需要說(shuō)明的是,由于BFD會(huì)話是雙向的,BFD會(huì)話的兩個(gè)端節(jié)點(diǎn)都會(huì)對(duì)這種變化作 相同的操作,所以,本端的路由模塊只需要將這種變化通知到本端的BFD模塊即可。步驟105、根據(jù)更新后的鏈路路徑信息,發(fā)送和接收雙向檢測(cè)報(bào)文。本發(fā)明的實(shí)施例還提供了一種鏈路檢測(cè)裝置,其結(jié)構(gòu)如圖4所示,包括BFD驅(qū)動(dòng)模塊401,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息;發(fā)送和檢測(cè)模塊402,用于根據(jù)更新后的鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè) 報(bào)文。進(jìn)一步的,所述BFD驅(qū)動(dòng)模塊401的結(jié)構(gòu)如圖5所示,包括第一更新單元4011,用于在檢測(cè)到發(fā)生主備鏈路之間的切換時(shí),將鏈路路徑信息 更新為切換后正常工作的鏈路的路徑信息;第二更新單元4012,用于在發(fā)生路由變化或標(biāo)簽變化或端口變化時(shí),根據(jù)變化后的鏈路路徑,更新鏈路路徑信息。 進(jìn)一步的,所述BFD驅(qū)動(dòng)模塊401,還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢 測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。本發(fā)明的實(shí)施例還提供了一種鏈路檢測(cè)系統(tǒng),包括第一鏈路檢測(cè)裝置和第二鏈路 檢測(cè)裝置,所述第一鏈路檢測(cè)裝置和第二鏈路檢測(cè)裝置之間存在至少一條鏈路,且在該鏈 路上承載著至少一個(gè)雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話;所述第一鏈路檢測(cè)裝置,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息,并根據(jù) 更新后的鏈路路徑信息,向所述第二鏈路檢測(cè)裝置發(fā)送雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,或自所述第二 鏈路檢測(cè)裝置接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。進(jìn)一步的,所述第一鏈路檢測(cè)裝置還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢 測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。綜上所述,采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,采用可編程邏輯器件FPGA進(jìn) 行發(fā)包和檢測(cè),一方面極大地減輕了微引擎的負(fù)擔(dān),提高了其轉(zhuǎn)發(fā)處理效率,另一方面將發(fā) 包速率減小到十分之一毫秒單位,極大地提高了檢測(cè)時(shí)效。同時(shí)本發(fā)明采用BFD與FRR的 關(guān)聯(lián)處理方式,不僅僅實(shí)現(xiàn)了轉(zhuǎn)發(fā)層面快速切換,較大地提高切換效率,而且實(shí)現(xiàn)了保持對(duì) 當(dāng)前有效鏈路進(jìn)行快速實(shí)時(shí)檢測(cè)的目的,大大減小了底層向上層誤報(bào)D0Wn(兩節(jié)點(diǎn)間連通 狀態(tài)為斷開(kāi))的幾率。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可 以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中, 該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以采用硬件的形式實(shí)現(xiàn),也可以采 用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立 的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。以上所述,僅為本發(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)利要求
一種鏈路檢測(cè)方法,其特征在于,在使用雙向轉(zhuǎn)發(fā)檢測(cè)BFD報(bào)文進(jìn)行連通檢測(cè)的鏈路上,包括若鏈路路徑發(fā)生變化,更新鏈路路徑信息;根據(jù)更新后的所述鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。
2.根據(jù)權(quán)利要求1所述的鏈路檢測(cè)方法,其特征在于,所述若鏈路路徑發(fā)生變化,更新 鏈路路徑信息的步驟之前,還包括在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。
3.根據(jù)權(quán)利要求1或2所述的鏈路檢測(cè)方法,其特征在于,所述若鏈路路徑發(fā)生變化, 更新鏈路路徑信息具體為在檢測(cè)到發(fā)生主備鏈路之間的切換時(shí),獲取該鏈路的索引; 根據(jù)所述索引獲取該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話;所述鏈路的端節(jié)點(diǎn)將所述雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話發(fā)送和接收?qǐng)?bào)文的鏈路路徑信息更新為 切換后正常工作的鏈路的路徑信息。
4.根據(jù)權(quán)利要求1所述的鏈路檢測(cè)方法,其特征在于,所述若鏈路路徑發(fā)生變化,更新 鏈路路徑信息具體為當(dāng)發(fā)生路由變化或標(biāo)簽變化或端口變化時(shí),將變化后的路徑信息通知所述鏈路的端節(jié)點(diǎn)所述端節(jié)點(diǎn)根據(jù)變化后的鏈路路徑,更新鏈路路徑信息。
5.根據(jù)權(quán)利要求1所述的鏈路檢測(cè)方法,其特征在于,所述若鏈路路徑發(fā)生變化,更新 鏈路路徑信息的步驟之前,還包括通過(guò)FPGA(可編程邏輯模塊)發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,對(duì)鏈路進(jìn)行連通檢測(cè)。
6.一種鏈路檢測(cè)裝置,其特征在于,包括BFD驅(qū)動(dòng)模塊,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息; 發(fā)送和檢測(cè)模塊,用于根據(jù)更新后的鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。
7.根據(jù)權(quán)利要求6所述的鏈路檢測(cè)裝置,其特征在于,所述BFD驅(qū)動(dòng)模塊包括第一更新單元,用于在檢測(cè)到發(fā)生主備鏈路之間的切換時(shí),將鏈路路徑信息更新為切 換后正常工作的鏈路的路徑信息;第二更新單元,用于在發(fā)生路由變化或標(biāo)簽變化或端口變化時(shí),根據(jù)變化后的鏈路路 徑,更新鏈路路徑信息。
8.根據(jù)權(quán)利要求6所述的鏈路檢測(cè)裝置,其特征在于,所述BFD驅(qū)動(dòng)模塊,還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話之間建立對(duì) 應(yīng)關(guān)系。
9.一種鏈路檢測(cè)系統(tǒng),其特征在于,包括第一鏈路檢測(cè)裝置和第二鏈路檢測(cè)裝置,所述 第一鏈路檢測(cè)裝置和第二鏈路檢測(cè)裝置之間存在至少一條鏈路,且在該鏈路上承載著至少 一個(gè)雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話;所述第一鏈路檢測(cè)裝置,用于在鏈路路徑發(fā)生變化時(shí),更新鏈路路徑信息,并根據(jù)更新 后的鏈路路徑信息,向所述第二鏈路檢測(cè)裝置發(fā)送雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文,或自所述第二鏈路 檢測(cè)裝置接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。
10.根據(jù)權(quán)利要求9所述的鏈路檢測(cè)系統(tǒng),其特征在于,所述第一鏈路檢測(cè)裝置還用于在鏈路索引和該鏈路對(duì)應(yīng)的雙向轉(zhuǎn)發(fā)檢測(cè)會(huì)話之間建立對(duì)應(yīng)關(guān)系。
全文摘要
本發(fā)明提供了一種鏈路檢測(cè)方法、裝置和系統(tǒng)。涉及IP網(wǎng)絡(luò)通信領(lǐng)域;解決了節(jié)點(diǎn)之間鏈路連通狀態(tài)檢測(cè)不準(zhǔn)確的問(wèn)題。該方法包括若鏈路路徑發(fā)生變化,更新鏈路路徑信息;根據(jù)更新后的所述鏈路路徑信息,發(fā)送和接收雙向轉(zhuǎn)發(fā)檢測(cè)報(bào)文。本發(fā)明提供的技術(shù)方案適用于雙向轉(zhuǎn)發(fā)協(xié)議網(wǎng)絡(luò)中。
文檔編號(hào)H04L12/24GK101800676SQ20101011716
公開(kāi)日2010年8月11日 申請(qǐng)日期2010年2月20日 優(yōu)先權(quán)日2010年2月20日
發(fā)明者李愛(ài)民 申請(qǐng)人:中興通訊股份有限公司