BFD基础

BFD概述 BFD(Bidirectional Forwarding Detection,双向转发检测),一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制 BFD是一个简单的“Hello”协议,两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果一个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。 工作原理 报文格式 BFD报文由强制部分和可选的认证字段组成 Ver:BFD协议版本号 Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因 Sta:BFD本地状态 P:参数发生变化时,发送方在BFD报文中置该标志,接受方必须立即响应该报文 F:响应P标志置位的回应报文中必须将F标志置位 C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测 A:认证标识,置1代表会话需要验证 D:查询请求:置位代表发送方期望采用查询模式对链路进行监测 M:为BFD将来支持点到多点扩展的预留位 Detect Mult:检测超时倍数,用于检测方计算检测超时时间 Length:报文长度,单位为字节 My discriminator:BFD会话连接本地标识符。发送系统产生的唯一的、非0鉴别值,用来区分一个系统的多个BFD会话 Your discriminator:BFD会话远端标识符。从远端系统接受到的鉴别值,即远端系统的“My discriminator” Desired Min Tx Interval:本地支持的最小BFD发送间隔 Required Min RX Interval:本地支持的最小BFD报文接收间隔 Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒 (如本地不支持Echo,则设置为0) BFD会话建立 会话建立分为静态建立和动态建立,区别主要在Local Discriminator和Remote Discriminator的配置方式不同。(即报文格式中提到的My Discriminator和Your Discriminator) 静态建立中是手工配置BFD参数(包括本地和远端标识符),然后手动下发BFD会话建立请求;动态建立中本地标识符由本地系统分配,远端标识符通过接收对端BFD消息学习而来。 BFD会话状态 BFD有四种状态:Down、Init、Up、AdminDown。会话状态通过BFD报文的State字段来传递。 而在BFD会话过程中主要包含前三个状态,Init和Up用来建立会话,Down用来断开会话。建立和断开会话都需要三次握手确保两端系统都能感知到。AdminDown是通过管理手段down,也属于donw状态。 Down状态: 表明当前会话down。当本机处于down状态时,收到了Down包,则状态机跳转到Init状态;而如果收到了Init报文,则跳转到Up报文;如果收到Up报文,则维持Down状态 Init状态: 表明与远端正在通信,并且本地会话期望进入Up状态,但是远端仍未回应。当处于Init状态时,收到了对端的Init或Up包,则状态机进入Up状态,否则等到检测时间超时后,进入Down状态 Up状态: 说明BFD会话建立成功,并且正在确认链路的连通性。当处于Up状态时,发生链路故障或进行了管理down操作,或收到远端的down包或者检测时间超时,则进入down状态 BFD检测模式 两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没收到BFD控制报文,则认为路径上发生了故障。 BFD检测模式有异步模式和查询模式: 异步模式:系统之间相互发送BFD控制包,如果某个系统在检测时间内没有收到对端发来的BFD控制报文,则认为会话Down 查询模式:在需要验证的情况下,系统连续发送多个BFD控制报文,如果在检测时间内没有收到返回的报文,则认为会话Down 两个模式的区别在于是否存在主动方,异步模式中两端系统都为主动方,主动发送BFD控制报文,而查询模式是由一方主动发起查询,对端被动回应。...

更新: 2022-04-17 · 创建: 2022-04-13 · 1 分钟 · McLsk888