zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    SQL常用关键字
    SQL 笔记1,left join,group by,having
    SpringIDE的安装
    一些有用的书籍,也许需要看看
    执行力
    Q12问题
    WebCollector Cookbook (WebCollector中文文档):
    SSM配置文件
    wkhtmltopdf Windows下 测试demo 成功
    html2pdf 中文支持问题
  • 原文地址:https://www.cnblogs.com/aqicheng/p/13037992.html
Copyright © 2011-2022 走看看