BFD
概述
故障检测
-
硬件检测
- 很快发现故障
- 但并不是所有介质都能提供硬件检测
-
慢hello
-
采用路由协议中的Hello报文机制
-
fast hello
- 1秒
- 针对本协议
-
-
测到故障所需时间为秒级
-
依赖于路由协议
-
-
其他检测机制
- 系统间互联互通时,这样的专用检测机制通常难以部署
报文类型
-
控制报文
- 标准定义
-
echo报文
- 非标定义
控制报文的bfd
原理
-
工作原理
-
控制报文
-
BFD 控制报文采用UDP 封装,源端口号的范围为49152 到65535,对于单跳检测其UDP 目的端
口号为3784,对于多跳检测其UDP 目的端口号为4784。 -
报文结构
-
报文头
-
控制报文头
-
字段定义
- Vers BFD协议版本号,目前版本号为1
- Diag 诊断码,表明发送方最近一次会话Down的原因
- Sta
发送方BFD会话当前状态,取值为:
• 0:代表AdminDown
• 1:代表Down
• 2:代表Init
• 3:代表Up - P 会话参数变化时置位
- F
如果收到的BFD控制报文P字段置位,则将下一个发送的BFD控制报文的F字段置位作为
应答 - C 该字段置位表明BFD的实现是独立于控制平面的
- A 该字段置位表明报文包含认证部分,会话需要进行认证
- D
该字段置位表明发送方希望以查询模式运行,不置位表明不希望以查询模式运行或不支
持查询模式 - R 保留位,发送时设为0,接收时忽略该字段
- Detect Mult 检测时间倍数
- Length BFD控制报文长度,单位为字节
- My Discriminator 发送方产生的一个唯一非0值,用来标识不同的BFD会话
- Your Discriminator
如果已经收到会话邻居发送的BFD控制报文则该值为收到报文中的My Discriminator,否
则为0 - Desired Min TX
Interval 发送方支持的最小BFD控制报文发送时间间隔,单位为微秒 - Required Min RX
Interval 发送方支持的最小BFD控制报文接收时间间隔,单位为微秒 - Required Min Echo
RX Interval
发送方支持的最小BFD Echo报文接收时间间隔,单位为微秒。为0表示不支持BFD Echo
报文 - Auth Type 认证类型
- Auth Len 可选认证部分长度,包括Auth Type和Auth Len字段,单位为字节
- Authentication Data 认证数据区
-
-
-
-
-
会话建立方式
-
静态bfd
- 手工创建静态BFD 会话的同时,指定本地标识符和远端标识符
- 将应用程序与BFD 联动时,手工指定本地标识符和远端标识符
-
动态bfd
- 动态 BFD 会话的本端标识符由本端设备分配,远端标识符在BFD 会话协商建立过程中获取。
-
-
会话建立过程
-
状态机
- DOWN:本端会话已经关闭或刚刚创建。DOWN 状态表示转发路径不可用,与BFD 会话联动的上层应用需要采取适当的措施,例如主备路径切换等
- INIT:本端已经可以与对端通信,且本端希望会话进入UP 状态。
- UP:本端会话已经建立成功。UP 状态表示转发路径可用。
-
会话建立
-
模式分类
- 主动模式:在建立会话前不管是否收到对端发来的BFD 控制报文,都会主动发送BFD 控制报
文; - 被动模式:在建立会话前不会主动发送BFD 控制报文,直到收到对端发送来的控制报文。
- 主动模式:在建立会话前不管是否收到对端发来的BFD 控制报文,都会主动发送BFD 控制报
-
建立过程
-
三次握手的机制
- (1) Router A和Router B的BFD 收到上层应用的通知后,发送状态为DOWN的BFD 控制报文。
- (2) Router B 收到对端状态为DOWN 的BFD 控制报文后,本地会话状态由DOWN 迁移到INIT,
随后将待发送的BFD 控制报文中的Sta 字段填为2(表示会话状态为INIT)。Router A 的BFD
状态变化同Router B。 - (3) Router A 收到对端状态为INIT 的BFD 控制报文后,本地会话状态由INIT 迁移到UP,随后将
待发送的BFD 控制报文中的Sta 字段填为3(表示会话状态为UP)。Router B 的BFD 状态
变化同Router A。 - (4) BFD 双方状态都为UP 时,标志会话成功建立,两端开始检测链路状态。
- (5) 如果本端BFD 会话DOWN,将会向对端发送Sta 字段填为1 的BFD 控制报文,通知对端会
话DOWN,对端的BFD 会话也迁移到DOWN 状态。
-
-
-
-
定时器协商
-
定时器值的选取原则
-
BFD 控制报文发送时间间隔
- =MAX(本端Desired Min TX Interval,对端Required Min RX
Interval)
- =MAX(本端Desired Min TX Interval,对端Required Min RX
-
检测时间
- =对端BFD 控制报文中的Detect Mult×MAX(本端Required Min RX Interval,对端Desired Min TX Interval)
-
-
BFD 检测时间协商
- Router A 与Router B 建立BFD 会话,
双方的Desired Min TX Interval 和Required Min RX Interval (下面简称为TX 和RX)都为100ms,
Detect Mult 都为3。根据定时器协商规则,Router A 的发送时间间隔为Router A 的TX 与Router B
的RX 中的最大值也就是100ms,Router B 的发送时间间隔也是100ms,双方的检测超时时间都
为300ms。
如果此时将Router A 的TX 和RX 加大到150 ms。
(1) Router A 比较本端的RX(150ms)和Router B 的TX(100ms),然后将本端检测时间改为
450ms,同时向对端发送P 字段置位的BFD 控制报文(TX 和RX 均为150ms)。
(2) Router B 收到报文后,将收到报文中的RX 与本端的TX 进行比较,由于RX 较大,故Router
B 的发送间隔改为150ms。经过比较本端RX和对端的TX,从而将检测时间也增大到450ms。
调整完成后给Router A 回复F 字段置位的BFD 控制报文(TX 和RX 均为100ms)。
(3) Router A 收到对端发来F 字段置位的控制报文,根据报文中的RX 与本端的TX 进行比较计算
出新的时间间隔为150ms。
(4) 定时器协商完成,双方的发送间隔和检测时间均分别为150ms 和450ms。
- Router A 与Router B 建立BFD 会话,
-
-
会话检测机制
-
异步模式:设备周期性发送BFD 控制报文,如果在检测时间内没有收到对端发送的BFD 控制
报文,则认为会话DOWN。缺省情况下,BFD 会话为异步模式。 -
查询模式:当系统中的BFD 会话数量较多时,采用查询模式可防止周期性发送BFD 控制报文
的开销对系统的正常运行造成影响。- 本端的BFD 会话工作在查询模式时,本端设备会向对端发送D 比特位置1 的BFD 控制报
文,对端(缺省为异步模式)收到该报文后将停止周期性发送BFD 控制报文。 - 如果 BFD 会话两端都是查询模式,则双方在BFD 会话建立后停止周期性发送BFD 控制报
文。仅当需要验证连通性的时候,设备会连续发送P 比特位置1 的BFD 控制报文。如果在
检测时间内没有收到对端回应的F 比特位置1 的报文,就认为会话DOWN;如果在检测时
间内收到对端回应的F 比特位置1 的报文,就认为链路连通,停止发送报文,等待下一次
触发查询。
- 本端的BFD 会话工作在查询模式时,本端设备会向对端发送D 比特位置1 的BFD 控制报
-
-
回声功能
-
单臂回声≠echo报文
- 使用异步模式的BFD 会话检测直连网段的连通性时,可以使用BFD 回声功能辅助进行故障检测。
回声功能启动后,会话的一端周期性地发送BFD echo 报文,同时自动降低控制报文的接收速率,
减少对带宽资源的消耗。对端不对BFD control echo 报文进行处理,而只将此报文转发回发送端。如果发
送端连续几个echo 报文都没有接收到,会话状态将变为DOWN。
- 使用异步模式的BFD 会话检测直连网段的连通性时,可以使用BFD 回声功能辅助进行故障检测。
-
-
-
各种分类
-
会话建立方式
-
静态bfd
-
二层链路检测
-
三层链路检测
- 单挑检测
- 多跳检测
-
聚合口链路检测
-
单臂回声链路检测
-
-
动态bfd
- 静态路由
- ospf
- bgp
- isis
- rip
- vrrp
-
-
链路跳数
- 单跳
- 多跳
-
会话建立模式
- 主动模式
- 被动模式
-
会话建立后操作模式
- 异步模式
- 查询模式
-
参数
-
BFD基础配置功能
-
BFD单挑检测
-
BFD多跳检测
-
静态标识符配置
-
BFD单臂回声功能
-
BFD会话认证信息
-
会话检测机制
-
运行模式
- 主动
- 被动
-
-
BFD参数配置
-
BFD检测时间
(具体啥用)-
检测时间 = 本端检测倍数 × max(本端最短接收间隔,本端最短发送间隔)
- 本端检测倍数
detect-multiplier - 本端最短接收间隔
min-rx-interval - 本端最短发送间隔
min-tx-interval
- 本端检测倍数
-
-
BFD等待恢复时间
wtr
(当BFD会话从状态Down变为状态Up时,BFD等待WTR超时后才将这个变化通知给上层应用) -
BFD会话描述信息
description
(只对静态配置的BFD会话有效,对于动态配置的BFD会话和静态标识符自协商BFD会话无效) -
BFD报文优先级
tos-exp-
功能
- 检测同一链路上不同优先级的报文转发是否畅通
- 将BFD报文设置为高优先级报文后,优先保证BFD报文的转发。
-
-
trap消息定时器时间间隔
snmp-agent bfd trap-interval -
bfd会话震荡抑制功能
dampening timer-interval
(链路质量差时,BFD检测会导致业务频繁切换。通过配置链路震荡抑制时间,可以防止业务频繁切换,有效保护链路资源,降低链路资源消耗。)-
dampening timer-interval maximum maximum-milliseconds initial initial-milliseconds secondary secondary-milliseconds
- initial-milliseconds定时器
- secondary-milliseconds定时器
- maximum-milliseconds定时器
-
-
bfd应用场景
-
BFD检测IP链路
- 单跳检测
- 多跳检测
-
BFD单臂回声功能
- 单臂回声
-
BFD与接口状态联动
- 与接口状态联动
-
bfd与协议联动
-
BFD与静态路由联动
-
BFD与RIP联动
-
BFD与IS-IS联动
-
BFD与BGP联动
-
BFD与MPLS LSP联动
- 暂无需求
-
BFD与MPLS TE联动
- 暂无需求
-
BFD与VRRP联动
-
BFD与PIM联动
-
bfd与vsf联动
-
echo报文的bfd
原理
-
报文
- BFD echo 报文采用UDP 封装,目的端口号为3785,目的IP 地址为发送接口的地址,源IP 地址
由配置产生(配置的源IP 地址要避免产生ICMP 重定向)。 - BFD 协议并没有对BFD echo 报文的格式进行定义,唯一的要求是发送方能够通过报文内容识别会
话。 - 当 BFD 会话工作于echo 报文方式时,仅在隧道应用中支持多跳检测,其他应用中仅支持单跳检测。
- BFD echo 报文采用UDP 封装,目的端口号为3785,目的IP 地址为发送接口的地址,源IP 地址
-
本端周期性发送echo 报文建立BFD 会话,对链路进行单向检测。对端不建立BFD 会话。
-
本端发送echo 报文,对端只需把收到的echo 报文转发回本端。如果本端在检测时间内没有收到对
端转发回的echo 报文,则认为会话DOWN。