目录

BFD的作用

BFD报文

BFD控制报文

BFD Echo报文

BFD工作原理

BFD会话建立过程及状态

BFD的会话建立模式与故障检测模式

BFD会话建立的方式

BFD故障检测方式

BFD检测时间

BFD单臂回声功能

BFD的作用

为什么出现BFD

故障检测方法有硬件检测和协议自带检测报文(OSPF可以通过Hello报文来检测邻居状态

等),硬件检测通用性不强部分场景无法适用,协议自带检测报文又收敛太慢,因此需要一种通用性强而且能快速收敛的机制,因此提出了BFD协议

BFD作用

BFD(Bidirectional Forwarding Detection)双向转发检测协议,是一种全网统一的检测机制,通过检测网络设备间的双向转发路径以此向上层应用提供毫秒级别的故障检测

主要用于快速检测、监控网络中链路或者IP路由的转发连通状况,改善网络性能

BFD为应用层协议,其端口号为UDP—3784

BFD报文

两种报文类型:BFD控制报文、BFD Echo报文

BFD控制报文

 诊断字——标明本地BFD系统最近一次会话状态发生变化的原因

 BFD本地状态

       0——AdminDown状态

       1——Down状态

       2——Init状态

       3——Up状态

信息标志位

Poll(P)

 Final(F)

 Control Plane Independent(C)

转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测

例如:控制平面为IS-IS,当IS-IS重启/GR时,BFD可以继续监测链路状态。

Autentication Present(A)

Demand(D)

Multipoint

检测超时倍数

查询模式:采用本地检测倍数

异步模式:采用对端检测倍数

Required Min Echo Interval——本地支持的最小Echo报文接收间隔

当配置单臂回声时,发送BFD Echo报文此值会有参数

BFD Echo报文

可以理解为特殊的BFD控制报文,在配置单臂回声时使用此报文检测链路状态

此报文与BFD控制报文的不同点在于Echo报文的发送IP源目都是自己,参数含义都一致

BFD工作原理

BFD大致的工作原理

BFD在两台网络设备上建立会话,并周期性的发送BFD检测报文。如果某个系统在规定的时间内没有收到对端的检测报文,则认为该系统的某个部分发生了故障

本端BFD如何发现对端BFD设备

BFD本身并没有邻居发现机制

BFD依靠被服务的上层应用通知其对端BFD信息来建立会话

BFD如何了解自己和谁建立BFD会话

BFD通过本地标识符(My Discriminator)、远端标识符(Your Discriminator)区别不同的会话

只有自己的本地标识和收到的远端标识符一致,才会与对端建立BFD会话

BFD会话建立过程及状态

BFD通过三次握手建立会话

BFD会话状态

Down:初始状态或者链路出现故障状态

Init:   已经能够和对端系统通信,本端希望使会话进入Up状态

Up:      会话已经建立成功

AdminDown:会话处于管理性Down状态

为什么需要AdminDown状态

如果用户需要修改BFD会话配置信息或要终止BFD会话检测链路,但不想影响上层应用时

可以手工配置BFD会话进入AdminDown状态,此状态可以暂停BFD会话检测链路,但不删除BFD会话

等待BFD会话配置修改完毕后再配置BFD会话重新开始检测

BFD的会话建立模式与故障检测模式

会话建立前(BFD会话建立模式)——分为主动模式和被动模式

主动模式:

在建立会话前不论是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文

被动模式:

在建立会话前不会主动发送BFD控制报文,只有收到对端发送过来的控制报文本端才会发送BFD报文

建立BFD会话的两个系统之间必须有一个系统为主动模式,否则会话建立不起来

会话建立后(故障检测模式)——分为异步模式和查询模式

异步模式(主要操作模式)

系统之间相互周期性的发送BFD控制包,如果某个系统在检测时间内没有收到对端发来的BFD控制报文,就宣布会话Down

查询模式(为了防止周期发送BFD报文影响链路运行,可以采用此模式)

BFD会话建立成功后,系统不再周期性的发送BFD控制报文。

在需要验证连接性的情况下,系统会连续发送多个BFD控制包,如果某个系统在检测时间内没有收到返回来的报文,就宣布会话Down

BFD会话建立的方式

假设两端都采用主动模式

静态建立BFD会话

静态BFD时通过命令行手工配置BFD会话参数,根据标识符又可以分为两种

手工指定标识符的静态BFD会话

手工创建BFD会话,手工指定本端、对端BFD标识符

自动协商标识符的静态BFD会话

手工创建BFD,但是不需要指定本地与对端的标识符

动态建立BFD会话

动态BFD主要是由各种路由协议触发而建立BFD会话,系统对本地和远端标识符的处理方式如下

动态分配本端标识符

当应用程序触发动态创建BFD会话时

系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符

然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商

自学习远端标识符

当BFD会话的一端收到Remote Discriminator的值为0的BFD控制报文时

判断该报文是否与本地BFD会话匹配

如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符

BFD故障检测方式

假设采用异步检测模式

单跳故障检测

对两个直连系统进行IP连通性检测,即不能跨越三层建立BFD会话(BFD会话绑定出接口)

目的地址为组播IP地址,缺省组播IP地址为224.0.0.184

多跳故障检测

对任意两个系统间的任意路径进行检测,可以跨三层建立BFD会话(BFD会话绑定对端IP地址)

目的地址为IP单播地址

BFD检测时间

BFD的检测时间由三个值决定:

DMTI(Desired Min TX Interval):最小发送时间间隔

RMRX(Required Min RX Interval):最小接收时间间隔

DM(Detect Mult):BFD检测倍数

本地BFD发送间隔

本地的BFD报文实际发送时间间隔=MAX【本地配置的发送间隔,对端配置的接受间隔】

本地BFD接收间隔

本地的BFD报文实际接收时间间隔=MAX【本端配置的接收间隔,对端配置的发送间隔】

BFD检测时间

不同故障检测模式下BFD检测时间有不同的计算方式

异步模式下

本地BFD检测时间=本地BFD实际接收时间间隔*对端配置的BFD检测倍数

查询模式下

本地BFD检测时间=本地BFD实际接收时间间隔*本端配置的BFD检测倍数

BFD缺省时间参数

发送间隔1000ms,接受间隔1000ms,本地检测倍数3次

BFD单臂回声功能

当有一台设备不支持BFD功能时,两系统之间建立不起BFD会话,此时支持BFD的设备直接发送BFD Echo报文来进行链路检测(单臂回声只适用于单跳BFD会话)

检测方式

支持BFD功能设备发送一系列回声报文,如果本端在检测时间内没有收到环回的回声报文,就会宣告会话Down

华为VRRP、BFD实验配置_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/128689169?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128689169%22%2C%22source%22%3A%22m0_49864110%22%7D

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: