BFD双向转发检测
概述
提供了一种轻量级、通用的轻量化的、介质无关和协议无关的快速故障检测机制,是一种简单的“Hello”协议,通过周期性发送BFD报文,在一定时间如果没有接收到对端的响应报文,则认为通信存在故障
作用
可以实现毫秒级链路检测、IP路由、协议等来你懂性的故障
工作原理
报文结构
-
强制部分
-
version:BFD版本,此处为1
-
sta:BFD本地状态
-
detect mutl:本地检测倍数,默认3倍
-
discriminator:标识符,用于BFD在同一台设备上区分不同的BFD会话
- 源端标识符:remote discriminator
- 本地标识符:local discriminator
-
min-RX-interval:本地支持的最小的BFD报文接收间隔,默认1000ms
-
min-TX-interval:本地支持的最小的BFD报文发送间隔,默认1000ms
-
-
可选部分
- 认证字段:TLV结构
会话建立方式
-
静态建立
- 手工配置本地标识符
-
动态建立
- 协议动态分配本地标识符,通过交互BFD报文动态学习源端标识符
会话状态
-
down
- BFD初始化状态
-
init
- BFD单向通信状态
-
up
- BFD双向通信,会话建立
-
admin down
- 管理员关闭BFD会话,在状态机中还是down状态
-
down状态用来关闭BFD会话,init/up状态用来建立BFD会话
会话建立过程采用三次握手,确保可靠性
本端项对端发送down状态的BFD控制报文
对端接收到本端down状态的BFD控制报文后,状态置位init,并发送init状态的BFD控制报文
本端接收到init状态的BFD控制报文后状态置为UP,会话建立完成
双向同时进行
检测模式
异步模式
- 本端周期性发送BFD控制报文,检测位置是源端,远端检测本端是否周期性发送BFD控制报文
查询模式
- 本端按需发送BFD控制报文森,检测位置是本端,检测本段发送的BFD报文是否得到回应
检测时间
发送时间间隔:TX
接收时间间隔:RX
检测倍数:DM
本端实际发送时间间隔=MAX(本端的发送时间间隔,对端的接收时间间隔)二者取大
本段实际接受间隔=MAX(本端的接收时间间隔,对端的发送时间间隔)二者取大
异步模式下:
- 本端BFD报文实际检测时间间隔=本端实际接受间隔*对端检测倍数
查询模式下
- 本端BFD报文实际检测时间间隔=本端实际接收时间间隔*本端检测倍数
BFD Echo模式(回声模式)
应用场景:一台支持BFD功能,一台不支持BFD
- 支持BFD功能的设备主动发送BFD控制报文,不支持BFD功能的设备将BFD从环回转发回去,支持BFD功能的设备接收到回包后,BFD会话UP,实现转发链路连通性的检测
联动功能
检测模块
- BFD通过见到那的hello机制,对链路状态、网络连通性进行检测、并肩检测结果通知track模块
track模块
- 接收到检测结果后,改变track模块状态,并通知给应用模块
应用模块
-
根据track模块的状态,进行处理,从而实现联动
- 与接口联动
- 静态联动
- 动态协议联动
- 二层协议联动