bf是什么意思的缩写(你知道什么是BFD吗?)

BFD,Bidirectional Forwarding Detection,双向转发检测,是一种快速故障检测机制,主要用于加快检测发现网络中的故障,从而可以尽快解决故障,恢复网络的正常业务转发。

那么,第一个问题?为什么需要BFD,网络中就没有其它协议可以检测故障的吗?

答案是否定的,某些协议是可以通过Keepalive机制来检测网络中的连接是否还正常的,比如OSPF,它就可以通过周期性的发送Hello报文来发现链路中的故障从而自动切换链路,但提到这里,就不得不提OSPF发现故障的检测时间,首先OSPF的周期性发送是每隔10S发送一次Hello报文,然后要等到4倍HelloTime,也就是40S移动大流量卡,一直没有收到邻居路由器发送的Hello报文后,才会认为网络中发生了故障,再开始切换报文转发路径。所以,在这40S的时间里,本路由器发送的报文永远是无法到达邻居路由器,也就无法通信。而这个40S的时间太长了,所以我们需要一个机制来更快的发现故障,这个机制就是BFD,所以,BFD的主要作用不是检测故障,而是加快检测。

BFD检测的大概过程就是在两个系统之间建立BFD会话通道,然后周期性发送BFD检测报文,当某方系统在规定时间内没有收到对方的检测报文,就认为链路故障了。和OSPF的Hello检测机制比较类似,实质上,BFD就是一个简单的Hello协议,不过它检测故障的用时更短而已。

那么接下来,我们就移动大流量卡认识一下BFD究竟是怎么工作的?

不过在这之前,我们有一点不得不提及了,因为BFD是一个与协议无关的检测机制,所以它是不能独立运行的,一般是作为辅助与其它路由协议联动使用,比如静态路由、OSPF、ISIS、BGP等,本章中主要讲述静态路由和OSPF。

前面提过BFD是需要建立BFD会话通道的,那么BFD建立会话主要有两种方式:

一是静态建立BFD会话,静态建立就是由管理员手工配置本地标识符和远端标识符来建立BFD会话,适用于没有Hello机制的协议当中,比如静态路由。

本地标识符和远端标识符就是系统间用来建立和区分不同的BFD会话的。本地标识符是标识本地路由器上某个会话的,而远端标识符是标识远端路由器移动大流量卡的某个会话的,路由器之间只有在发现本地标识符和远端标识符匹配无误之后,才可以建立起BFD会话。

接下来我们通过以下拓扑看看BFD怎么静态建立BFD会话:

这里是BFD与静态路由联动,PC1—AR1—HUB1—AR2—PC2这条路径上运行静态路由来实现PC1与PC2之间的通信。

因为静态路由自身是无法检测链路故障的,所以需要BFD辅助。

首先,分别在AR1和AR2上配置静态路由:

[AR1]ip route-static 192.168.3.0 24 192.168.2.2

[AR2]ip route-static 192.168.1.0 24 192.168.2.1

接着先全局开启BFD,再静态建立BFD会移动大流量卡话:

[AR1]bfd

[AR1-bfd]q

[AR1]bfd StaticBFD bind peer-ip 192.168.2.2 source-ip 192.168.2.1

创建名为StaticBFD的会话,对端和本路由器建立会话的接口地址为192.168.2.2,本地路由器用于和对端建立会话的接口地址为192.168.2.1

[AR1-bfd-session-staticbfd]discriminator local 10

本地标识符,标识为10

[AR1-bfd-session-staticbfd]discriminator remote 20

远端标识符,标识为20

[AR1-bfd-session-移动大流量卡staticbfd]commit 提交

这里只是建立了会话,但还没有和静态路由联动,所以还需要把该会话和静态路由进行绑定:

[AR1]ip route-static 192.168.3.0 24 192.168.2.2 track bfd-session StaticBFD

至此,AR1上静态路由和BFD的联动配置完成,

配置完成后,抓AR1的G0/0/1接口报文:

可可以发现,AR1开始不断发送BFD检测报文,但因为此时AR2还没有运行BFD,所以会话通道还没有建立,链路中只存在AR1报文,并且该报文会提示警报消息。

那么接下来完成AR2的配置:

再次抓AR1的G0/0/1接口报文:

这时候,AR1和AR2移动大流量卡都会发送BFD检测报文来检测链路是否故障,当把HUB1和AR2之间的线路连接删除:

再抓包:

可以看到BFD快速发现会话被关闭,同时在AR1和AR2上也出现了警告消息:

至此,AR1就快速检测出了链路故障,这就是BFD与静态路由的联动。

二是动态建立BFD会话,动态分配本地和远端标识符,适用IGP协议,也就是内部网关路由协议。主要是BFD作为动态路由协议的辅助协议来帮助动态路由快速发现故障。

BFD与动态路由协议的联动配置较为简单,因为本地和远端标识符都不再需要管理员手动配置。

这里以同一拓扑演示OSPF与BFD的联动:

拓扑中,AR1、AR2和AR3上不再运行静态路由协议,而是运行OSPF路由协议来自动发移动大流量卡现和学习路由,同时修改AR1到AR3的OSPF路径开销为10,让PC1去往PC2优选经过HUB1的路径。

配置OSPF后,查看AR1路由表:

此时,AR1路径优选下一跳为AR2的路径,即经过HUB1。

现在开始配置BFD:

AR1:

同样先全局开启BFD:

[AR1]bfd

[AR1-bfd]q

然后再进入到OSPF中,使能接口的BFD功能:

[AR1]ospf

[AR1-ospf-1]bfd all-interfaces enable

至此,AR1配置完成,再抓AR1的G0/0/1报文:

AR1接口开始发送BFD控制报文,因为AR2还未配置,所以会话未建立。

现在完成AR2的配置后,再看AR1的抓包:

可以看到,AR1移动大流量卡和AR2都往链路中发送BFD控制报文,并且发送的时间间隔远远小于Hello报文的时间间隔,从而可以更快的发现链路故障。

当把HUB1和AR2之间的线路连接删除:

再抓包:

AR1就已经快速检测到会话被更关闭了。

再看AR1:

先是BFD检测到会话被关闭,接着告知OSPF邻居关闭,再继而切换邻居状态为down。

所以BFD辅助了OSPF发现邻居状态的改变。

再看路由表:

AR1前往192.168.3.0网段的路由下一跳也被快速切换为优选经过AR3的路由。

这就是BFD与OSPF的联动。

以上就是BFD创建会话的两种方式。

接下来是BFD的状态机:

BFD具有四种状态:

Down:BFD的初始状态,如果路由器在这个状态中收移动大流量卡到了状态为down的BFD报文,就会进入到init状态

Init:BFD的初始化状态,如果路由器在这个状态中收到了状态为Init的BFD报文,那么就进入到UP状态;同时发送状态为Init的BFD报文;

UP:BFD的建立状态,标志BFD会话已经建立完毕,如果定时器超时(在一定时间内没有收到对方回应的BFD报文)后,那么就会进入到down状态或者admin down状态。

Admin down:由管理员手工配置的down状态,如果会话是被管理员down掉的话,就处于该状态中。

BFD同时还具有两种检测模式,用于检测判断链路是否发生故障:

异步模式:系统之间相互周期性地发送BFD控制报文,如果某个系统在检测移动大流量卡时间内没有收到对端发来的BFD控制报文,就宣布会话为Down。

查询模式:在需要验证连接性的情况下,系统连续发送多个BFD控制包,如果在检测时间内没有收到返回的报文就宣布会话为Down。(更多的是应用在两台设备之间,然后其中一台设备可以运行BFD,另一台设备无法运行BFD的场景中)

以上是BFD的检测判断,那么接下来是BFD的检测时间。

BFD的检测时间具有固定的公式,不过我们首先要理解三个参数的含义——TX,RX和DM:

BFD会话检测时长由TX(Desired Min TX Interval),RX(Required Min RX Interval),DM(Detect Multi)三个参数决定:移动大流量卡

TX:最小发送报文的时间间隔;

RX:最小接收报文的时间间隔;

DM:检测超时倍数,用于检测方计算检测超时时间。默认情况下,该值为3;

BFD报文的实际发送时间间隔,实际接受时间间隔由BFD会话协商决定。

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

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

MAX{a,b},就代表取a,b中的最大值。

所以,本地BFD报文实际检测时间:

异步模式:本地BFD报文实际检测时间=本地BFD报文实际接收时间间隔×对端配置的BFD检测倍数;

查询模式:本地BFD报文实际检测时间 =移动大流量卡 本地BFD报文实际接收时间间隔×本端配置的BFD检测倍数。

以上就是BFD的主要功能,但除此之外,BFD还有一个特殊的单臂回声功能,也叫做BFD ECHO,这是由本地发送BFD Echo报文,远端系统将报文环回的一种检测机制。该功能主要适用于对端的路由器不支持BFD协议的场景当中。

该功能中,运行了BFD协议的路由器发送源IP和目的IP都是自己的BFD报文,该BFD控制报文在链路正常的情况下是可以被“弹”回来的,也就是路由器可以收到“弹”回来的自己发送的BFD控制报文,但如果链路异常,发生了故障,网络不通了,那么该报文就无法“弹”回来,BFD路由器在一定时间内都没有收到该BFD控制报文,就认为对移动大流量卡端失效,链路故障了。

接下来,就是该BFD ECHO的配置:

采用同一张拓扑:

但该拓扑中,只有AR1运行BFD,AR2不运行BFD。

那么在AR1上:

先确保邻居之间是路由可达,也就是AR1和AR2之间是可以正常通信,这里因为AR1和AR2之间的链路正常,所以这一步没问题。

接着全局开启BFD

[AR1]bfd

[AR1-bfd]q

然后就是配置单臂回声

[AR1]bfd EchoBFD bind peer-ip 192.168.2.2 interface g0/0/1 one-arm-echo

interface g0/0/1:本地路由器的出接口

[AR1-bfd-session-echobfd]discrimi移动大流量卡nator local 10 本地标识符,因为邻居不运行BFD,所以不需要配置远端标识符

[AR1-bfd-session-echobfd]commit

至此,配置完成。

现在再抓AR1的G0/0/1接口报文:

可以看到,AR1不断发送源和目的IP都是自己的BFD控制报文,并且会话状态为UP状态。

当把HUB1和AR2之间的线路连接删除:

再抓包:

可以看到,BFD比OSPF更快检测到故障。

并且也快速提示BFD会话被关闭。

以上,就是本章BFD的所有内容。


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/46541.html

(0)
sunyaqunsunyaqun
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐

发表回复

登录后才能评论