BFD技術介紹


一、簡介

  為了減小設備故障對業務的影響、提高網絡的可用性,設備需要能夠盡快檢測到與相鄰設備間的通信故障,以便能夠及時采取措施,從而保證業務繼續進行。

現有的故障檢測方法主要包括以下幾種:

  硬件檢測:例如通過SDH(Synchronous Digital Hierarchy,同步數字體系)告警檢測鏈路故障。硬件檢測的優點是可以很快發現故障,但並不是所有介質都能提供硬件檢測。

  慢Hello機制:通常采用路由協議中的Hello報文機制。這種機制檢測到故障所需時間為秒級。對於高速數據傳輸,例如吉比特速率級,超過1秒的檢測時間將導致大量數據丟失;對於時延敏感的業務,例如語音業務,超過1秒的延遲也是不能接受的。並且,這種機制依賴於路由協議。

  其他檢測機制:不同的協議有時會提供專用的檢測機制,但在系統間互聯互通時,這樣的專用檢測機制通常難以部署。

  BFD(Bidirectional Forwarding Detection,雙向轉發檢測)就是為了解決上述檢測機制的不足而產生的,它是一套全網統一的檢測機制,用於快速檢測、監控網絡中鏈路或者IP路由的轉發連通狀況,保證鄰居之間能夠快速檢測到通信故障,從而快速建立起備用通道恢復通信。

二、工作機制

  BFD提供了一個通用的、標准化的、介質無關、協議無關的快速故障檢測機制,可以為各上層協議如路由協議、MPLS等統一地快速檢測兩台路由器間雙向轉發路徑的故障。

BFD在兩台路由器或路由交換機上建立會話,用來監測兩台路由器間的雙向轉發路徑,為上層協議服務。BFD本身並沒有發現機制,而是靠被服務的上層協議通知其該與誰建立會話,會話建立后如果在檢測時間內沒有收到對端的BFD控制報文則認為發生故障,通知被服務的上層協議,上層協議進行相應的處理。

  1、工作流程

  

 

                     圖1 BFD會話建立流程圖(以OSPF為例)

  BFD會話建立過程:

    (1)  上層協議通過自己的Hello機制發現鄰居並建立連接;

    (2)  上層協議在建立了新的鄰居關系時,將鄰居的參數及檢測參數都(包括目的地址和源地址等)通告給BFD;

    (3)   BFD根據收到的參數進行計算並建立鄰居。

           

  當網絡出現故障時:

    (1) BFD檢測到鏈路/網絡故障;

    (2) 拆除BFD鄰居會話;

    (3) BFD通知本地上層協議進程BFD鄰居不可達;

    (4) 本地上層協議中止上層協議鄰居關系;

    (5) 如果網絡中存在備用路徑,路由器將選擇備用路徑。

三、檢測方式

  單跳檢測:BFD單跳檢測是指對兩個直連系統進行IP連通性檢測,這里所說的“單跳”是IP的一跳。

       多跳檢測:BFD可以檢測兩個系統間的任意路徑,這些路徑可能跨越很多跳,也可能在某些部分發生重疊。

       雙向檢測:BFD通過在雙向鏈路兩端同時發送檢測報文,檢測兩個方向上的鏈路狀態,實現毫秒級的鏈路故障檢測。(BFD檢測LSP是一種特殊情況,只需在一個方向發送BFD控制報文,對端通過其他路徑報告鏈路狀況。)

四、BFD會話工作方式

   控制報文方式:鏈路兩端會話通過控制報文交互監測鏈路狀態。

        Echo報文方式:鏈路某一端通過發送Echo報文由另一端轉發回來,實現對鏈路的雙向監測。

五、運行模式

  BFD會話建立前模式:主動模式和被動模式。

              主動模式:在建立對話前不管是否收到對端發來的BFD控制報文,都會主動發送BFD控制報文;

              被動模式:在建立對話前不會主動發送BFD控制報文,直到收到對端發送來的控制報文;

  在會話初始化過程中,通信雙方至少要有一個運行在主動模式才能成功建立起會話。

  BFD會話建立后模式:異步模式和查詢模式。

              異步模式:以異步模式運行的路由器周期性地發送BFD控制報文,如果在檢測時間內沒有收到BFD控制報文則將會話down。

              查詢模式:假定每個系統都有一個獨立的方法,確認自己連接到其他系統。這樣,只要有一個BFD會話建立,系統停止發送BFD控制報文,除非某個系統需要顯式地驗證連接性。

六、BFD支持的應用

   OSPF與BFD聯動

        OSPFv3與BFD聯動

        IS-IS與BFD聯動

        IPv6 IS-IS與BFD聯動

        RIP與BFD聯動

        靜態路由與BFD聯動

         BGP與BFD聯動

         IPv6 BGP與BFD聯動

         MPLS與BFD聯動

         Track與BFD聯動

          IP快速重路由

七、OSPF與BFD聯動配置舉例

  某公司通過一台二層交換機作為中繼將兩個相距較遠的部門連接。Device A、Device B、Device C上運行OSPF,建立OSPF鄰居關系,保證網絡層相互可達。

已知Device A和Device C都支持BFD功能,要求使用OSPF與BFD聯動技術,采用BFD控制報文方式實現當Device A或Device C與二層交換機之間的鏈路出現故障(如鏈路down)時,BFD能夠快速感知並通告OSPF協議。

  現要求通過在Device A和Device C上配置OSPF與BFD聯動功能,實現:

    監測通過L2 Switch通信的鏈路;

    當鏈路出現故障時設備能夠快速感知並通告OSPF協議,快速切換到Device B鏈路進行通信。

          

設備 接口 IP地址 設備 接口 IP地址
Device A Vlan-int10 10.1.0.101/24 Device B Vlan-int20 192.168.0.102/24
  Vlan-int20 192.168.0.101/24   Vlan-int30 13.1.1.101/24
  Vlan-int100 120.1.1.1/24      
Device C Vlan-int10 10.1.0.102/24      
  Vlan-int30 13.1.1.102/24      
  Vlan-int100 121.1.1.1/24      

 

 

 

 

 

 

 

 

 

Device A和Device C都支持BFD,可以使用BFD控制報文方式,通信雙方至少要有一方運行在主動模式才能成功建立起BFD會話。

  1、配置各接口的IP地址

    配置Device A各接口的IP地址:

<DeviceA> system-view
[DeviceA] vlan 10
[DeviceA-vlan10] port ten-gigabitethernet 3/0/1
[DeviceA-vlan10] quit
[DeviceA] interface vlan-interface10
[DeviceA-Vlan-interface10] ip address 10.1.0.101 24
[DeviceA-Vlan-interface10] quit

  請參考以上方法配置中其它接口的IP地址,配置步驟這里省略

  2、配置OSPF基本功能

    配置Device A的OSPF基本功能,並使能OSPF的BFD功能:

[DeviceA] ospf
[DeviceA-ospf-1] area 0
[DeviceA-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255
[DeviceA-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[DeviceA-ospf-1-area-0.0.0.0] network 120.1.1.0 0.0.0.255
[DeviceA-ospf-1-area-0.0.0.0] quit
[DeviceA-ospf-1] quit
[DeviceA] interface vlan-interface 10
[DeviceA-Vlan-interface10] ospf bfd enable
[DeviceA-Vlan-interface10] quit

    配置Device B的OSPF基本功能:

[DeviceB] ospf
[DeviceB-ospf-1] area 0
[DeviceB-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[DeviceB-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255
[DeviceB-ospf-1-area-0.0.0.0] quit
[DeviceB-ospf-1] quit

    配置Device C的OSPF基本功能,並使能OSPF的BFD功能:

[DeviceC] ospf
[DeviceC-ospf-1] area 0
[DeviceC-ospf-1-area-0.0.0.0] network 10.1.0.0 0.0.0.255
[DeviceC-ospf-1-area-0.0.0.0] network 13.1.1.0 0.0.0.255
[DeviceC-ospf-1-area-0.0.0.0] network 121.1.1.0 0.0.0.255
[DeviceC-ospf-1-area-0.0.0.0] quit
[DeviceC-ospf-1] quit
[DeviceC] interface vlan-interface 10
[DeviceC-Vlan-interface10] ospf bfd enable
[DeviceC-Vlan-interface10] quit

  3、配置BFD功能

    配置BFD會話建立前的運行模式為主動模式(缺省為主動模式)

[DeviceA] bfd session init-mode active
    配置發送和接收單跳BFD控制報文的最小時間間隔都為100ms,單跳BFD檢測時間倍數為3。
[DeviceA] interface vlan-interface 10
[DeviceA-Vlan-interface10] bfd min-transmit-interval 100
[DeviceA-Vlan-interface10] bfd min-receive-interval 100
[DeviceA-Vlan-interface10] bfd detect-multiplier 3
[DeviceA-Vlan-interface10] quit

    配置BFD會話建立前的運行模式為主動模式(缺省為主動模式)。

[DeviceC] bfd session init-mode active

    配置發送和接收單跳BFD控制報文的最小時間間隔都為100ms,單跳BFD檢測時間倍數為3。

[DeviceC] interface vlan-interface 10
[DeviceC-Vlan-interface10] bfd min-transmit-interval 100
[DeviceC-Vlan-interface10] bfd min-receive-interval 100
[DeviceC-Vlan-interface10] bfd detect-multiplier 3
[DeviceC-Vlan-interface10] quit

  4、驗證配置

    檢查Device A連接的主機host A(120.1.1.2)到Device C連接的主機host C(121.1.1.2)是否可達。

<host A> ping 121.1.1.2
PING 121.1.1.2 (121.1.1.2): 56 data bytes
56 bytes from 121.1.1.2: seq=0 ttl=128 time=22.43 ms
56 bytes from 121.1.1.2: seq=1 ttl=128 time=7.17 ms
56 bytes from 121.1.1.2: seq=2 ttl=128 time=8.91 ms
56 bytes from 121.1.1.2: seq=3 ttl=128 time=7.45 ms
56 bytes from 121.1.1.2: seq=4 ttl=128 time=9.11 ms
--- 121.1.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 7.17/11.01/22.43 ms

    查看Device A 上OSPF鄰居信息,顯示Device A和Device C已建立OSPF鄰居關系。

[DeviceA] display ospf peer verbose
          OSPF Process 1 with Router ID 2.2.2.2
                  Neighbors
 Area 0.0.0.0 interface 10.1.0.101(Vlan-interface10)'s neighbors
 Router ID: 1.1.1.1          Address: 10.1.0.102       GR State: Normal
   State: Full  Mode: Nbr is Slave  Priority: 1
   DR: 10.1.0.101  BDR: 10.1.0.102  MTU: 0
   Options is 0x42 (-|O|-|-|-|-|E|-)
   Dead timer due in 39  sec
   Neighbor is up for 00:09:01
   Authentication Sequence: [ 0 ]
   Neighbor state change count: 5
   BFD status: Enabled(Control mode)

    查看 Device A和Device C上BFD會話信息,顯示BFD會話已被創建,且狀態為Up。

[DeviceA] display bfd session verbose
 Total Session Num: 1     Up Session Num: 1     Init Mode: Active
 IPv4 Session Working Under Ctrl Mode:
       Local Discr: 2049                 Remote Discr: 2049
         Source IP: 10.1.0.101         Destination IP: 10.1.0.102
     Session State: Up                      Interface: Vlan-interface10
      Min Tx Inter: 100ms                Act Tx Inter: 100ms
  Min Rx Inter: 100ms                Detect Inter: 300ms
  Rx Count: 536                      Tx Count: 536
      Connect Type: Direct             Running Up for: 00:04:48
         Hold Time: 300ms                   Auth mode: None
  Detect Mode: Async                        Slot: 0
          Protocol: OSPF
         Diag Info: No Diagnostic

[DeviceC] display bfd session verbose
 Total Session Num: 1    Up Session Num: 1    Init Mode: Active
 IPv4 Session Working Under Ctrl Mode:
       Local Discr: 2049                 Remote Discr: 2049
         Source IP: 10.1.0.102         Destination IP: 10.1.0.101
     Session State: Up                      Interface: Vlan-interface10
      Min Tx Inter: 100ms                Act Tx Inter: 100ms
      Min Rx Inter: 100ms                Detect Inter: 300ms
          Rx Count: 3971                     Tx Count: 3776
      Connect Type: Direct             Running Up for: 00:06:52
         Hold Time: 300ms                   Auth mode: None
       Detect Mode: Async                        Slot: 0
          Protocol: OSPF
         Diag Info: No Diagnostic

    在Device A上查看121.1.1.0/24的路由信息,可以看出Device A和Device C是通過L2 Switch進行通信的。

<DeviceA> display ip routing-table 121.1.1.0 verbose
Summary Count : 1
Destination: 121.1.1.0/24
   Protocol: OSPF            Process ID: 1
  SubProtID: 0x1                    Age: 04h20m37s
       Cost: 1               Preference: 10
        Tag: 0                    State: Active Adv
  OrigTblID: 0x0                OrigVrf: default-vrf
    TableID: 0x2                 OrigAs: 0
      NBRID: 0x26000002          LastAs: 0
     AttrID: 0xffffffff        Neighbor: 0.0.0.0
      Flags: 0x1008c        OrigNextHop: 10.1.0.102
      Label: NULL           RealNextHop: 10.1.0.102
    BkLabel: NULL             BkNextHop: N/A
  Tunnel ID: Invalid          Interface: Vlan-interface10
BkTunnel ID: Invalid        BkInterface: N/A

    當Device C和二層交換機之間的鏈路狀態變為Down,BFD快速檢測到鏈路發生變化並立刻通告OSPF。

%Oct  9 15:22:23:154 2013 DeviceC BFD/5/BFD_CHANGE_FSM: -MDC=1; Sess[10.1.0.1
02/10.1.0.101, LD/RD:2049/2049, Interface:Vlan10, SessType:Ctrl, LinkType:INET] ,
 Sta: UP-> DOWN, Diag: 1
%Oct  9 15:22:23:155 2013 DeviceC OSPF/5/OSPF_NBR_CHG: -MDC=1; OSPF 1 Neighbor 10.1
.0.101(Vlan-interface10) from FULL to DOWN.

    在Device A上查看121.1.1.0/24的路由信息,可以看出Device A和Device C已經切換到Device B進行通信。

<DeviceA> display ip routing-table 121.1.1.0 verbose
Summary Count : 1
Destination: 121.1.1.0/24
   Protocol: OSPF            Process ID: 1
  SubProtID: 0x1                    Age: 04h20m37s
       Cost: 2               Preference: 10
        Tag: 0                    State: Active Adv
  OrigTblID: 0x0                OrigVrf: default-vrf
    TableID: 0x2                 OrigAs: 0
      NBRID: 0x26000002          LastAs: 0
     AttrID: 0xffffffff        Neighbor: 0.0.0.0
      Flags: 0x1008c        OrigNextHop: 192.168.0.102
      Label: NULL           RealNextHop: 192.168.0.102
    BkLabel: NULL             BkNextHop: N/A
  Tunnel ID: Invalid          Interface: Vlan-interface20
BkTunnel ID: Invalid        BkInterface: N/A

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM