1.简介
Bidirectional Forewarding Detection(BFD),双向转发检测,一种能快速检测到网络中出现的故障,并且能及时通知其关联的协议和快速建立起备用通道恢复通信,检测错误时间可以达到毫秒级,因此能满足网故障快速检测的需求。
2.工作机制
本身没有发现机制,只能靠上层协议通知
建立BFD会话,周期性发送BFD,控制报文进行检测
检测到故障时,通知上层协议
3.状态机制
down:会话未建立或刚刚建立
init:能够和对端通信
up:会话建立成功
adminDown:会话处于管理性Down状态
创建和拆除都使用3次握手机制
![](https://img-blog.csdnimg.cn/img_convert/1b0820ed8c6956a33e6c80cf2d263d14.png)
4.报文
![](https://img-blog.csdnimg.cn/img_convert/42c907fe44dd77fdd13d747e31b28e6b.png)
Ver:BFD协议版本号,目前为1。
Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因。
Sta:BFD本地状态。
P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文。
F:响应P标志置位的回应报文中必须将F标志置位。
C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测。
A:认证标识,置1代表会话需要进行验证。
D:查询请求,置位代表发送方期望采用查询模式对链路进行监测。
M:为BFD将来支持点对多点扩展而设的预留位。
Detect Mult:检测超时倍数,用于检测方计算检测超时时间。
Length:报文长度,单位为字节。
My Discriminator:BFD会话连接本地标识符(Local Discriminator) 。发送系统产生的一个唯一的、非0鉴别值,用来区分一个系统的多个BFD会话。
Your Discriminator:BFD会话连接远端标识符(Remote Discriminator) 。从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0。
Desired Min TX Interval:本地支持的最小BFD报文发送间隔。
Required Min RX Interval:本地支持的最小BFD报文接收间隔。
Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒(如果本地不支持Echo功能,则设置0)。
![](https://img-blog.csdnimg.cn/img_convert/17d8299a45801212b3af381853a2fd3d.png)
1 协议版本:1
2 诊断字:无
3 当前状态:UP
4 标志位:未配置
5 检测倍率:3(失效时间300毫秒)
6 报文长度:24字节
7 本地标识符:1
8 远端标识符:2
9 发送间隔:100毫秒
10 接收间隔:100毫秒
11 回声功能间隔:0
5.运行模式
会话建立前:
主动模式:主动发送BFD报文,不管对方是否收到BFD报文
被动模式:不会主动发送BFD报文,直到收到对端发来的BFD控制报文
至少有一个是运行在主动模式才能建立起会话
会话建立后:
异步模式:周期性发送BFD报文,如果在检测时间内没有收到报文则会Down掉
查询模式:不会周期性发送报文,而是通过其他机制进行检测,减少对流量的使用,许多都是拨号计费的,一直发送报文会造成大量的开销。
6.应用场景
检测ip链路
单跳:检测直连路线
多跳:绑定IP
BFD单臂回声
用于一端不支持BFD的环境,通过BFD报文中的环回操作(ping)进行检测,只使用于在单跳BFD会话中
与接口状态联动
关联接口状态,和检测链路的区别是能用于二层检测
与静态路由
与动态路由不同的是,静态路由没有检测机制,BFD绑定路由会话后,出现错误会将路由从路由表中删除
与RIP联动
与OSPF联动
与BGP联动
与MPLS联动
与is-is联动
与MPLS联动
与ipv6联动
与Smart Link联动
与VRRP联动
7.检测时间
本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔,对端配置的接收时间间隔 }
本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔,本地配置的接收时间间隔 }
![](https://img-blog.csdnimg.cn/img_convert/4272982199ac5e54b73ecab7e782c90c.png)
8.BFD命令
开启BFD会话,创建BFD会话,配置会话标识符,提交会话
命令 | 备注 |
bfd | 开启bfd功能,默认关闭 |
bfd 1 bind peer-ip default-ip int g0/0/0 | 创建二层端口检测。 |
bfd 1 bind peer-ip 12.0.0.2 [int vlanif 1] | 创建三层接口检测。 |
discriminator local/remote 10/20 | 配置本地标识符和远端标识符。 |
commit | 提交BFD会话配置。 |
min-tx-interval 100 min-rx-interval 100 | 配置BFD报文发送和接收间隔。 默认=1000毫秒。 |
detect-multiplier 3 | 配置本地检测倍数,默认=3。 |
display bfd session all verbose | 验证BFD会话状态。 |
process-interface-status | 配置与接口状态联动。 |
vrrp vrid 1 track bfd-session 10 | 配置与VRRP联动。 |
bfd all-interfaces enable | 配置与OSPF联动。 |
peer x.x.x.x bfd enable | 配置与BFD联动。 |
ip route-static x.x.x.x x x.x.x.x track bfd-session 1 | 配置与静态路由联动。 |