BFD快速检测工作原理


前言

  随着网络应用的广泛部署,网络发生中断可能影响业务正常运行并造成重大损失。为了减小链路、设备故障对业务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行。
  双向转发检测BFD(Bidirectional Forwarding Detection)提供了一个通用的标准化的介质无关和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。那么BFD机制具体是如何实现快速检测的呢?它的收敛时间到底是多少呢?


存在的问题

应用场景一:

在这里插入图片描述
  RTA与RTD建立了OSPF邻接关系,hello通告报文周期为10s,当SWB与SWC交换机中间出现故障,RTA与RTD无法感知,等待OSPF协议计时器超时才会,中断OSPF邻接关系。

应用场景二

在这里插入图片描述
  SWA与SWB建立VRRP虚拟路由组,SWB为网关设备,如果上行链路出现故障,SWB虽然可以通过动态路由协议感知,但是无法联动连接下游的网关接口,且继续为主网关。
  用户的数据流还是发送到SWB,SWB再通过三层路由转发给SWA,最后由RTA出口。虽然结果不至于造成业务中断,但是会产生次优路径。

故障检测的方法

在这里插入图片描述
硬件检测:
  例如通过SDH告警检测链路故障。硬件检测的优点是可以很快发现故障,但并不是所有介质都能提供硬件检测。

慢Hello机制:
  通常是指路由协议的Hello机制。这种机制检测到故障所需时间为秒级。对于高速数据传输,例如吉比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟也是不能接受的。并且,这种机制依赖于路由协议。

其他检测机制:
  不同的协议或设备制造商有时会提供专用的检测机制,但在系统间互联互通时,这样的专用检测机制通常难以部署。

BFD协议基本原理

基本概念

在这里插入图片描述
  BFD会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到对端BFD报文则认为该双向转发路径发生了故障,通知被服务的相关层应用进行相应的处理。
  本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。
  不管是物理接口状态、二层链路状态、网络层地址可达性、还是传输层连接状态、应用层协议运行状态,都可以被BFD感知到。

BFD建立会话方式和检测

在这里插入图片描述
BFD的标识符:
  BFD建立会话存在标识符的概念,类似于OSPF建立邻居需要一个路由器的Router ID。
  标识符分为本地标识符和远端标识符,本地标识符用于表示本端设备,远端标识符用于表示对端设备。
   1)静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。
   2)动态建立BFD会话是指由应用程序触发创建BFD会话,当应用程序动态触发创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。当BFD会话的一端收到Remote Discriminator的值为0的BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。

BFD的检测机制:
  BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障,BFD控制报文是UDP报文,端口号3784。
  BFD提供异步检测模式。在这种模式下,系统之间相互周期性地发送BFD控制报文,如果某个系统连续3个报文都没有接收到,就认为此BFD会话的状态是Down。

会话建立状态过程

在这里插入图片描述
  RTA和RTB各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。对于静态配置BFD会话,报文中的Remote Discriminator的值是用户指定的;对于动态创建BFD会话,Remote Discriminator的值是0。
   1)RTB收到状态为Down的BFD报文后,状态切换至Init,并发送状态为Init的BFD报文。
   2)RTB本地BFD状态为Init后,不再处理接收到的状态为Down的报文。
   3)RTB收到状态为Init的BFD报文后,本地状态切换至Up。
   4)RTA的BFD状态变化同RTB。
   5)邻居会话建立成功后,RTA和RTB周期性的向对方发送状态为Up的控制报文。

工作流程

在这里插入图片描述
OSPF的BFD检测故障发现处理流程。
  1)OSPF通过自己的Hello机制发现邻居并建立连接。
  1)OSPF在建立了邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。
  2)BFD根据收到的邻居信息建立会话。
  3)被检测链路出现故障。
  4)BFD快速发送BFD探测报文检测到链路故障,如果在规定时间内无响应,BFD会话状态变为Down。
  5)BFD通知本地OSPF进程BFD邻居不可达。
  6)本地OSPF进程中断OSPF邻居关系。

BFD配置

BFD与OSPF联动

在这里插入图片描述

配置思路:
  配置RTA和RTD的OSPF协议,建立OSPF邻居关系。
  全局下启用BFD功能。
  在RTA和RTB的OSPF进程相应的区域下,启用BFD检测功能。

BFD与VRRP联动

在这里插入图片描述

bfd   		// 系统视图配置全局bfd
bfd 1 bind peer-ip 10.0.24.2 source-ip 10.0.45.5 auto  //因为当中没有任何动态路由协议 所以需要手动指定邻居的IP地址和自己的IP地址 ,后面的auto就是让其动态产生本地标识符
commit 		//有一些交换机里面需要commit一下bfd的配置

配置思路:
  配置SWA与SWB的VRRP备份组。
  配置SWB与RTC间的BFD会话。
  在SWB上的VRRP备份组进程下配置监视BFD会话,当BFD会话状态变化时,通过降低优先级实现主备快速切换。
  SWA将成为VRRP备份组中的Master设备继续转发用户流量。

BFD与静态路由

在这里插入图片描述
静态路由联动原理:
  静态路由自身没有检测机制,当网络发生故障的时候,需要管理员介入。BFD与静态路由联动特性可为公网静态路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态。
  BFD与静态路由联动可为每条静态路由绑定一个BFD会话,当这条静态路由上绑定的BFD会话检测到链路故障(由Up转为Down)后,BFD会将故障上报路由管理系统,由路由管理模块将这条路由设置为“非激活”状态(此条路由不可用,从IP路由表中删除)。当这条静态路由上绑定的BFD会话成功建立或者从故障状态恢复后(由Down转为Up),BFD会上报路由管理模块,由路由管理模块将这条路由设置为“激活”状态(此路由可用,加入IP路由表)。

配置思路:
  配置RTA与RTB全局BFD功能。
  配置RTA与RTB的BFD会话。
  配置RTA通往ISP1的默认路由,优先级保持为默认的60,并联动BFD会话。
  配置RTA通往ISP2的默认路由,优先级比通往ISP1的默认路由要低。

BFD与BGP联动

在这里插入图片描述
配置思路:
  BFD与BGP的联动原理和OSPF基本一致,唯一区别是最后通知状态消息的对象是TCP层的BGP模块。
  配置RTA和RTB网络层路由可达。
  配置RTA和RTB的BGP邻居参数,建立起IBGP的邻居关系。
  在RTA和RTB上全局启用BFD功能。
  在RTA和RTB的BGP进程下启用BFD检测。

BFD单臂回声功能

在这里插入图片描述
  是指通过BFD报文的环回操作检测转发链路的连通性。
  两台直接相连的设备中RTA和RTB,其中一台设备RTA支持BFD功能,另一台设备RTB不支持BFD功能,只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在支持BFD功能的设备RTA上创建单臂回声功能的BFD会话。RTA主动发起回声请求功能,不支持BFD功能的设备RTB接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。
  实现的技术原理就是支持BFD功能的路由器RTA在出接口发送目的地址和源地址都是自己的BFD探测报文,不支持BFD功能的路由器RTB收到探测报文就直接回发给路由器RTA。

BFD默认参数及调整方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

darkqaz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值