1.BFD的概述

BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点:

     (1)对相邻转发引擎之间的通道提供轻负荷、快速故障检测。

     (2)用单一的机制对任何介质、任何协议层进行实时检测。

BFD是一个简单的“Hello”协议。两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果某个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。

BFD与VRRP协议_H3C


2.BFD报文结构

BFD检测是通过维护在两个系统之间建立的BFD会话来实现的,系统通过发送BFD报文建立会话。

BFD控制报文根据场景不同封装不同,报文结构由强制部分和可选的认证字段组成。

BFD与VRRP协议_H3C_02


3.BFD工作原理

BFD与VRRP协议_vrrp_03


BFD与VRRP协议_华为_04BFD会话过程中包含有三个状态:init和up两个用来建立会话,down用来断开会话。建立和断开会话都需要三次握手确保两端系统都感知到。另外还有一个特殊状态:管理down,使会话可以通过管理手段down,在状态机中管理down也是down状态。每个系统通过报文中的sta域发送本端状态,接收报文中的sta域了解对端状态,综合起来决定状态机的跳转。


Down状态说明会话down。一个会话会维持在down状态直到收到对端的报文并且该报文的sta字段标志着对端状态不是up。如果收到的是down包,状态机将从down状态跳转到init状态,如果收到的是init包,状态机将从down状态跳转到up状态,如果收到的是up包,状态机维持down状态。


Init状态说明与远端正在通信,并且本地会话期望进入up状态,但是远端还没回应。一个init状态的会话会维持init状态直到收到对端的init包或者up包,就会跳转到up状态,否则等到检测时间超时以后,便会跳转到down状态,意味着与远端的通信丢失。


Up状态说明BFD会话成功建立,并且正在确认链路的联通性,会话会一直保持在up状态直到链路故障或者管理down操作。如果收到远端的down包或者检测时间超时会话就会从up状态跳转到down状态。


管理down意味着会话是被管理操作down的,这会导致远端系统会话进入down状态,并且一直保持down状态直到本端退出管理down。管理down并不意味着转发路径的连通性问题。


BFD与VRRP协议_华为_05


BFD与VRRP协议_华为_06

BFD缺省时间参数

BFD报文发送间隔默认1000毫秒,接受间隔默认1000毫秒,本地检测倍数3次。

BFD会话等待恢复时间0秒,会话延迟Up时间0秒。

检测超时倍数,用于检测方计算检测超时时间。

查询模式:采用本地检测倍数。

异步模式:采用对端检测倍数。


BFD与VRRP协议_H3C_07


BFD与VRRP协议_vrrp_08

监测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块。

Track模块收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。

应用模块根据Track项的状态,进行相应的处理,从而实现联动。


4.BFD配置命令

BFD与VRRP协议_bfd_09R1: 

interface GigabitEthernet0/0/0 

ip address 192.168.1.251 255.255.255.0  

vrrp vrid 1 virtual-ip 192.168.1.254

vrrp vrid 1 priority 150

vrrp vrid 1 preempt-mode timer delay 10 ​                              #抢占延时10秒

vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 60     #追踪接口,故障后优先级减少60

vrrp vrid 1 track bfd-session session-name 1to3 reduced 80    #追踪远端R3(GE0/0/0),故障后优先级减少80

vrrp vrid 2 virtual-ip 192.168.1.253

bfd 1to3 bind peer-ip 13.1.1.3 source-ip 13.1.1.1 auto             #创建BFD会话,标识符自动创建

R2:

interface GigabitEthernet0/0/0

ip address 192.168.1.252 255.255.255.0  

vrrp vrid 1 virtual-ip 192.168.1.254

vrrp vrid 2 virtual-ip 192.168.1.253

vrrp vrid 2 priority 150

vrrp vrid 2 track interface GigabitEthernet0/0/1 reduced 60    #追踪接口,故障后优先级减少60

vrrp vrid 2 track bfd-session session-name 2to3 reduced 80    #追踪远端R3(GE0/0/1),故障后优先级减少80

vrrp vrid 2 track bfd-session 20 reduced 70                             #追踪远端R3(GE0/0/1),指定BFD会话ID   

bfd 2to3 bind peer-ip 23.1.1.3 source-ip 23.1.1.2 auto             #创建BFD会话,标识符自动创建   

bfd r2tor3 bind peer-ip 23.1.1.3 source-ip 23.1.1.2            #创建BFD会话,手动创建标识符

discriminator local 20                             

discriminator remote 30

commit


  [R1]display  bfd session all

--------------------------------------------------------------------------------

Local Remote     PeerIpAddr      State     Type        InterfaceName            

--------------------------------------------------------------------------------

8192  8192       13.1.1.3        Up        S_AUTO_PEER       -                  

--------------------------------------------------------------------------------

    Total UP/DOWN Session Number : 1/0


[R2]display bfd session all

--------------------------------------------------------------------------------

Local Remote     PeerIpAddr      State     Type        InterfaceName            

--------------------------------------------------------------------------------


8193  8194       23.1.1.3        Up        S_AUTO_PEER       -                  

20    30         23.1.1.3        Up        S_IP_PEER         -                  

--------------------------------------------------------------------------------

    Total UP/DOWN Session Number : 2/0


5.所有设备全部配置

[R1]display current-configuration  

[V200R003C00]

#

sysname R1

 

bfd                                      #开启BFD功能

#

acl number 2000  

rule 5 permit source 192.168.1.0 0.0.0.255            #建立ACL,应用在easy-ip NAT技术  

#



#

interface GigabitEthernet0/0/0

ip address 192.168.1.251 255.255.255.0  

vrrp vrid 1 virtual-ip 192.168.1.254

vrrp vrid 1 priority 150

vrrp vrid 1 preempt-mode timer delay 10

vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 60

vrrp vrid 1 track bfd-session session-name 1to3 reduced 80

vrrp vrid 2 virtual-ip 192.168.1.253

#

interface GigabitEthernet0/0/1

ip address 13.1.1.1 255.255.255.0  

nat outbound 2000                                                #将ACL应用在接口上,可以让内网地址访问外面地址

#

interface GigabitEthernet0/0/2

#

interface NULL0

#

bfd 1to3 bind peer-ip 13.1.1.3 source-ip 13.1.1.1 auto

commit

#

ip route-static 0.0.0.0 0.0.0.0 13.1.1.3                       #使用静态默认路由,内网可以访问外面




[R2]display current-configuration  

[V200R003C00]

#

sysname R2


bfd

#

acl number 2000  

rule 5 permit source 192.168.1.0 0.0.0.255                         


interface GigabitEthernet0/0/0

ip address 192.168.1.252 255.255.255.0  

vrrp vrid 1 virtual-ip 192.168.1.254

vrrp vrid 1 preempt-mode timer delay 10

vrrp vrid 2 virtual-ip 192.168.1.253

vrrp vrid 2 priority 150

vrrp vrid 2 preempt-mode timer delay 10

vrrp vrid 2 track interface GigabitEthernet0/0/1 reduced 60

vrrp vrid 2 track bfd-session session-name 2to3 reduced 80

vrrp vrid 2 track bfd-session 20 reduced 70

#

interface GigabitEthernet0/0/1

ip address 23.1.1.2 255.255.255.0  

nat outbound 2000                                  #应用ACL,使用NAT让内网地址可以访问外面地址

#

interface GigabitEthernet0/0/2

#

interface NULL0

#

bfd 2to3 bind peer-ip 23.1.1.3 source-ip 23.1.1.2 auto

commit

#

bfd r2tor3 bind peer-ip 23.1.1.3 source-ip 23.1.1.2

discriminator local 20

discriminator remote 30

commit

#

ip route-static 0.0.0.0 0.0.0.0 23.1.1.3



[R3]display current-configuration  

[V200R003C00]

#

sysname R3


clock timezone China-Standard-Time minus 08:00:00

#

portal local-server load flash:/portalpage.zip

#

drop illegal-mac alarm

#

wlan ac-global carrier id other ac id 0

#

set cpu-usage threshold 80 restore 75

#

bfd


interface GigabitEthernet0/0/0

ip address 13.1.1.3 255.255.255.0  

#

interface GigabitEthernet0/0/1

ip address 23.1.1.3 255.255.255.0  

#

interface GigabitEthernet0/0/2

#

interface NULL0

#

interface LoopBack0

ip address 3.3.3.3 255.255.255.255  

#

bfd 3to1 bind peer-ip 13.1.1.1 source-ip 13.1.1.3 auto

commit

#

bfd 3to2 bind peer-ip 23.1.1.2 source-ip 23.1.1.3 auto

commit

#

bfd r3tor2 bind peer-ip 23.1.1.2 source-ip 23.1.1.3

discriminator local 30

discriminator remote 20

commit



SW1和SW2交换机开启stp edged-port default边缘端口优化故障后迅速恢复故障。