BFD原理介紹

定義

雙向轉發檢測BFD(Bidirectional Forwarding Detection)是一種全網統一的檢測機制,用於快速檢測、監控網絡中鏈路或者IP路由的轉發連通狀況。

BFD控制報文封裝在UDP報文中傳送,對於單跳檢測其UDP目的端口號為3784,對於多跳檢測其UDP目的端口號為4784或3784。

目的

為了減小設備故障對業務的影響,提高網絡的可靠性,網絡設備需要能夠儘快檢測到與相鄰設備間的通信故障,以便及時採取措施,保證業務繼續進行。在現有網絡中,有些鏈路通常通過硬件檢測信號,如SDH告警,檢測鏈路故障,但並不是所有的介質都能夠提供硬件檢測。此時,應用就要依靠上層協議自身的Hello報文機制來進行故障檢測。上層協議的檢測時間都在1秒以上,這樣的故障檢測時間對某些應用來說是不能容忍的。同時,在一些小型三層網絡中,如果沒有部署路由協議,則無法使用路由協議的Hello報文機制來檢測故障。

BFD協議就是在這種背景下產生的,BFD提供了一個通用的標準化的介質無關和協議無關的快速故障檢測機制。具有以下優點:

· 對相鄰轉發引擎之間的通道提供輕負荷、快速故障檢測。這些故障包括接口、數據鏈路,甚至有可能是轉發引擎本身。

· 用單一的機制對任何介質、任何協議層進行實時檢測。

受益

BFD可以實現快速檢測並監控網絡中鏈路或IP路由的轉發連通狀態,改善網絡性能。相鄰系統之間通過快速檢測發現通信故障,可以更快地幫助用戶建立起備份通道以便恢復通信,保證網絡可靠性。

原理描述

原理簡介

BFD在兩臺網絡設備上建立會話,用來檢測網絡設備間的雙向轉發路徑,為上層應用服務。BFD本身並沒有鄰居發現機制,而是靠被服務的上層應用通知其鄰居信息以建立會話。會話建立後會週期性地快速發送BFD報文,如果在檢測時間內沒有收到BFD報文則認為該雙向轉發路徑發生了故障,通知被服務的上層應用進行相應的處理。下面以OSPF與BFD聯動為例,簡單介紹會話工作流程。

BFD原理介紹

圖1 BFD會話建立流程圖

上圖所示是一個簡單的網絡組網,兩臺設備上同時配置了OSPF與BFD,BFD會話建立過程如下所示:

· OSPF通過自己的Hello機制發現鄰居並建立連接。

· OSPF在建立了新的鄰居關係後,將鄰居信息(包括目的地址和源地址等)通告給BFD。

· BFD根據收到的鄰居信息建立會話。

· 會話建立以後,BFD開始檢測鏈路故障,並做出快速反應。

BFD原理介紹

如上圖所示:

· 被檢測鏈路出現故障。

· BFD快速檢測到鏈路故障,BFD會話狀態變為Down。

· BFD通知本地OSPF進程BFD鄰居不可達。

· 本地OSPF進程中斷OSPF鄰居關係。

BFD會話建立方式

BFD會話的建立有兩種方式,即靜態建立BFD會話和動態建立BFD會話。靜態和動態創建BFD會話的主要區別在於本地標識符(Local Discriminator)和遠端標識符(Remote Discriminator)的配置方式不同。BFD通過控制報文中的Local Discriminator和Remote Discriminator區分不同的會話。

· 靜態建立BFD會話

靜態建立BFD會話是指通過命令行手工配置BFD會話參數,包括配置本地標識符和遠端標識符等,然後手工下發BFD會話建立請求。

· 動態建立BFD會話

動態建立BFD會話時,系統對本地標識符和遠端標識符的處理方式如下:

· 動態分配本地標識符

當應用程序觸發動態創建BFD會話時,系統分配屬於動態會話標識符區域的值作為BFD會話的本地標識符。然後向對端發送Remote Discriminator的值為0的BFD控制報文,進行會話協商。

· 自學習遠端標識符

當BFD會話的一端收到Remote Discriminator的值為0的BFD控制報文時,判斷該報文是否與本地BFD會話匹配,如果匹配,則學習接收到的BFD報文中Local Discriminator的值,獲取遠端標識符。

BFD檢測機制

BFD的檢測機制是兩個系統建立BFD會話,並沿它們之間的路徑週期性發送BFD控制報文,如果一方在既定的時間內沒有收到BFD控制報文,則認為路徑上發生了故障。

BFD提供兩種檢測模式:

· 異步模式:BFD的主要操作模式為異步模式。在這種模式下,系統之間相互週期性地發送BFD控制報文,如果某個系統連續幾個報文都沒有接收到,就認為此BFD會話的狀態是Down。

· 查詢模式:BFD的第二種操作模式稱為查詢模式。當一個系統中存在大量BFD會話時,為防止週期性發送BFD控制報文的開銷影響到系統的正常運行,可以採用查詢模式。在查詢模式下,一旦BFD會話建立,系統就不再週期性發送BFD控制報文,而是通過其他與BFD無關的機制檢測連通性(比如路由協議的Hello機制、硬件檢測機制等),從而減少BFD會話帶來的開銷。

BFD會話管理

BFD會話有四種狀態:Down、Init、Up和AdminDown。會話狀態變化通過BFD報文的State字段傳遞,系統根據自己本地的會話狀態和接收到的對端BFD報文驅動狀態改變。BFD狀態機的建立和拆除都採用三次握手機制,以確保兩端系統都能知道狀態的變化。以BFD會話建立為例,簡單介紹狀態機的遷移過程。

BFD原理介紹

圖3 BFD會話建立流程圖

· SwitchA和SwitchB各自啟動BFD狀態機,初始狀態為Down,發送狀態為Down的BFD報文。對於靜態配置BFD會話,報文中的Remote Discriminator的值是用戶指定的;對於動態創建BFD會話,Remote Discriminator的值是0。

· SwitchB收到狀態為Down的BFD報文後,狀態切換至Init,併發送狀態為Init的BFD報文。

· SwitchB本地BFD狀態為Init後,不再處理接收到的狀態為Down的報文。

· SwitchA的BFD狀態變化同SwitchB。

· SwitchB收到狀態為Init的BFD報文後,本地狀態切換至Up。

· SwitchA的BFD狀態變化同SwitchB。


分享到:


相關文章: