BFD双向转发检测协议

前言:

    BFD(Bidirectional Forwarding Detection)提供了一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状态


BFD概述:(单臂回声)

现代网络对可用性要求的越来越高,如云计算、在线服务、实时通信等应用要求网络中断时间控制在毫秒级,传统检测机制难以达标

传统故障检测机制的局限性:

         动态路由协议速度慢  如OSPF的默认Hello间隔为10秒 无法满足实时业务需求

         冗余协议延迟高 VRRP默认检测时间为3秒,在需要毫秒级切换的场景(如5G核心网)中仍显不足

          静态路由本身没有故障检查机制

复杂网络拓扑,在复杂的网络结构中需要快速故障感知,而非仅依赖物理链路状态

协议依赖性强 各协议(如BGP)自行实现检测逻辑,缺乏统一、轻量的跨协议检测方案

随着技术的增强,对网络的可用性要求也会更高,于是便诞生BFD等支持微秒级报文处理的协议

BFD(Bidirectional Forwarding Detection) 是一种轻量级、快速检测网络链路或路径故障的协议,广泛应用于高可用性网络环境,可显著提升动态路由协议(如OSPF、BGP)或冗余协议(如VRRP、HSRP)的故障收敛速度

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

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


BFD会话

 BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD会话,分别适用于不同场景,核心区别在于本地和远端标识符的配置方式管理方式

静态BFD会话

定义与特点

  手动配置

  • 管理员在两端设备上显式指定会话参数(如本地标识符、远端标识符、检测地址等)

   适用场景

  • 网络拓扑稳定,链路端点固定(如企业专线、核心路由器间直连)
  • 需要独立于上层协议(如OSPF/BGP)的BFD检测(如直接监控物理链路)

    优点

  • 参数完全可控,避免自动协商的不确定性
  • 不依赖上层协议,检测逻辑独立

   缺点

  • 配置繁琐,维护成本高(尤其是大规模网络)
  • 对端信息变更需手动调整,灵活性差

标识符匹配

  • 本端的remote discriminator (远端标识符)必须等于对端的localremote discriminator(本地标识符),否则会话无法建立

动态BFD会话

 定义与特点 

       自动触发:

  • 由上层协议(如OSPF、BGP、VRRP)动态创建BFD会话,参数通过协议交互自动生成

适用场景:

  • 动态路由环境(如OSPF邻居关系自动建立)
  • 需要与协议状态联动的场景(如BGP邻居故障快速感知)

 优点:

  • 自动化程度高,减少手动配置工作量
  • 随协议状态动态调整(如OSPF邻居断开后自动删除BFD会话)

 缺点:

  • 依赖上层协议的稳定性与兼容性
  • 参数由协议自动协商,灵活性较低

标识符分配:

  • 本地标识符由系统动态分配

  • 远端标识符通过对端的BFD协议交互获取


      BFD会话状态和建立

BFD会话状态有四种:Down(不转发流量,尝试建立会话),Init(持续发送 Init 状态报文,等待对端回复Up和Init,超时回复则返回Down),Up(周期性发送 Up 状态报文,维持会话活性)和AdminDown(收到任何非AdminDown报文均不响应)

1. 异步模式建立顺序
  • 初始状态:两端均为 Down

一端发起

  • 设备A发送状态为 Init 的控制报文(携带本地参数)

对端响应

  • 设备B收到 Init 报文后,状态变为 Init,并回复 Init 报文

状态升级

  • 设备A收到设备B的 Init 报文后,状态变为 Up,并发送 Up 报文

  • 设备B收到设备A的 Up 报文后,状态也变为 Up

  • 会话维持:双方周期性发送 Up 状态报文,超时未收到则降级为 Down

2. 故障触发流程

链路故障

  • 设备A未收到设备B的报文,超时时间(Detect Multiplier × RX Interval)到期
  • BFD报文实际发送时间间隔,实际接受时间间隔由BFD会话协商决定

状态降级

  • 设备A状态从 Up 降为 Down,并发送 Down 报文

手动关闭会话

  • 管理员将设备A状态设为 AdminDown,设备A发送 AdminDown 报文
  • 设备B收到后,状态降为 Down,停止检测

重新启用会话

  • 管理员恢复设备A状态为 Down,重新触发会话建立流程

二  

查询模式
  • 工作原理:仅在需要时(如链路状态可疑时)发送控制报文,常态下不发送心跳报文

  • 触发条件:

    • 设备主动发起查询请求(Poll序列)

    • 对端必须立即响应(Final报文),否则判定故障


BFD Echo功能

  • BFD Echo功能也被称为BFD的回声功能,是由本地发送BFD Echo报文,远端系统将报文环回的一种机制

  • 在两台相连的设备(R1和R2)中(回声必须是在两个相连的设备中才能使用),一台设备(R1)支持BFD的功能,另一台(R2)不支持,为了检测这两台设备通信的连通性,则需要在支持BFD功能的设备上配置BFD回声功能,简单来说就是R1向发送R2发送的目的IP地址为自己本身接口的IP地址,R2收到后,发现接收到的地址,发现就是R1的地址,于是直接环回

  • 发送端周期性发送回声报文,若在超时时间内未收到环回报文,判定链路故障


    联动功能:

  • 联动功能由检测模块(如 BFD)、Track和应用模块(如VRRP OSPF 静态路由 接口备份)组成
  • 静态路由本身没有故障检查机制,如果静态路由存在冗余路径,通过静态路由与BFD联动, 当主用路径故障时,实现静态路由的快速切换
  • OSPF在未绑定BFD的情况下,链路故障检测时间由协议Hello机制决定,通常为秒级。通过绑定BFD,可以实现毫秒级的故障检测
  • 只有将BFD与应用进行绑定联动才能真正发挥作用

    BFD的配置

开启BFDBFD enable

在第一次创建静态BFD会话时,必须绑定对端IP和本端相应接口,且创建后不能修改,如果修改只能删除,重建

bfd <session-name>(BFD会话名称) bind peer-ip <对端IP> interface <本地接口> 
bfd bfd1 bind peer-ip 10.1.1.2 interface GigabitEthernet0/0/1
创建多跳BFD会话bfd <session-name>(BFD会话名称) bind peer-ip <对端IP>  

多跳BFD只需要指定对端IP

bfd bfd2 bind peer-ip 192.168.1.1 source-ip 192.168.1.2
配置BFD的本地标识符
 discriminator local 后接值
 discriminator local 100
配置BFD的远端标识符
discriminator remote 后接值
discriminator remote 200
创建BFD Echo 

指定对端ip和本端出接口,后面加上one-arm-echo参数

bfd one-arm(名称) bind peer-ip 10.0.1.2 interface GigabitEthernet0/0/0 one-arm-echo

与OSPF绑定时

所有ospf接口使能bfd

bfd all-interfaces enable  

配置最小发送(tx)和接收(rx)间隔为100毫秒

bfd all-interfaces min-tx-interval 100 min-rx-interval 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值