计算机网络-BFD检测机制

前面我们学习了二层交换机、三层路由的配置,包括静态路由、动态路由、OSPF、BGP等,大部分都会有超时机制与定时器,但是大部分是以秒级为单位进行检测,在当前大规模网络部署情况下,1秒可以造成大范围的网络故障了,因此需要更加精确的网络联通检测机制。

故障检测机制
故障检测机制

就是在非直连的邻居无法感知到邻居状态,或者需要等待动态路由协议超时机制才会断开连接,而如果在大型网络中可能是致命的缺陷,静态路由也无法感知网关是否可用以及执行相应的线路切换,因此出现了相关的检测机制。

一、BFD概念

1.1 BFD基本概念

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

  • 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。
  • 用单一的机制对任何介质、任何协议层进行实时检测。

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

BFD检测
BFD检测

1.2 BFD报文结构

BFD检测是通过维护在两个系统之间建立的BFD会话来实现的,系统通过发送BFD报文建立会话。BFD控制报文根据场景不同封装不同,报文结构由强制部分可选的认证字段组成。

BFD报文
BFD报文
报文示例
报文示例

相关字段说明:

  • Sta:BFD本地状态。
  • Detect Mult:检测超时倍数,用于检测方计算检测超时时间。
  • My Discriminator:BFD会话连接本地标识符(Local Discriminator) 。发送系统产生的一个唯一的、非0鉴别值,用来区分一个系统的多个BFD会话。
  • Your Discriminator:BFD会话连接远端标识符(Remote Discriminator) 。从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0。
  • Desired Min TX Interval:本地支持的最小BFD报文发送间隔。
  • Required Min RX Interval:本地支持的最小BFD报文接收间隔。
  • Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒(如果本地不支持Echo功能,则设置0)。

1.3 BFD会话建立

BFD会话的建立有两种方式,即静态建立BFD会话动态建立BFD会话

BFD通过控制报文中的本地标识符和远端标识符区分不同的会话。静态和动态创建BFD会话的主要区别在于Local Discriminator和Remote Discriminator的配置方式不同。

BFD建立方式
BFD建立方式

静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。

动态建立BFD会话的本地标识符由触发创建BFD会话的系统动态分配,远端标识符从收到对端BFD消息的Local Discriminator的值学习而来。

1.4 BFD会话状态

BFD会话有四种状态:DownInitUpAdminDown

会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变,如左下图所示。BFD状态机的建立和拆除都采用三次握手机制,如右下图所示,以确保两端系统都能知道状态的变化。

BFD会话状态
BFD会话状态

每个系统通过报文中的sta域发送本端状态,接收报文中的sta域了解对端状态,综合起来决定状态机的跳转。

  • Down状态说明会话down。一个会话会维持在down状态直到收到对端的报文并且该报文的sta字段标志着对端状态不是up。如果收到的是down包,状态机将从down状态跳转到init状态,如果收到的是init包,状态机将从down状态跳转到up状态,如果收到的是up包,状态机维持down状态。
  • Init状态说明与远端正在通信,并且本地会话期望进入up状态,但是远端还没回应。一个init状态的会话会维持init状态直到收到对端的init包或者up包,就会跳转到up状态,否则等到检测时间超时以后,便会跳转到down状态,意味着与远端的通信丢失。
  • Up状态说明BFD会话成功建立,并且正在确认链路的联通性,会话会一直保持在up状态直到链路故障或者管理down操作。如果收到远端的down包或者检测时间超时会话就会从up状态跳转到down状态。
状态变化
状态变化

大致就是A先发送Down报文,然后B回复init,然后A发送up,然后A发送一个P置位的flag报文,B回复F置位flag报文,B也发送确认报文,确保双方状态都变为up状态,然后保持在up状态,直到收到down报文,BFD会话状态还可以管理员手动关闭。

1.5 BFD检测模式

BFD的检测机制:两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。BFD的检测模式有异步模式查询模式两种。

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

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

异步模式和查询模式的本质区别:检测的位置不同,异步模式下本端按一定的发送周期发送BFD控制报文,检测位置为远端,远端检测本端是否周期性发送BFD控制报文;查询模式下本端检测自身发送的BFD控制报文是否得到了回应。

异步模式就是一直问一直回复,查询模式就是有需要再问,等待回复,如果没有回复则会话down。

1.6 BFD检测时间

BFD会话检测时长由TX(本地最小发送间隔),RX(本地最小接收间隔),DM(检测倍数)三个参数决定。BFD报文的实际发送时间间隔,实际接受时间间隔由BFD会话协商决定。简单说就是按照双方最大的检测间隔来进行。

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

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

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

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

BFD缺省时间参数

  • BFD报文发送间隔默认1000毫秒,接受间隔默认1000毫秒,本地检测倍数3次。
  • BFD会话等待恢复时间0秒,会话延迟Up时间0秒。

也就是说默认情况下在异步模式下每隔1秒发送一个bfd报文,每隔1秒接收一个报文,如果超过3秒没有接收到报文则状态变更。

检测超时倍数,用于检测方计算检测超时时间。

  • 查询模式:采用本地检测倍数。
  • 异步模式:采用对端检测倍数。
配置
配置

可以通过修改TX、RX和DM来修改BFD检测间隔与失效检测时间。

1.7 BFD Echo功能

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

在两台直接相连的设备中,其中一台设备支持BFD功能(R1);另一台设备不支持BFD功能(R2),只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在支持BFD功能的设备上创建单臂回声功能的BFD会话。支持BFD功能的设备主动发起回声请求功能,不支持BFD功能的设备接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。

BFD Echo功能
BFD Echo功能

简单说就是在不支持BFD的设备或者不方便配置BFD的场景中可以使用。

1.8 联动功能简介

联动功能由检测模块、Track和应用模块三部分组成。

  1. 监测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块 。
  2. Track模块收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。
  3. 应用模块根据Track项的状态,进行相应的处理,从而实现联动。

简单理解就是将BFD状态与静态路由、动态路由或者其它应用功能进行关联,BFD状态down则进行路由切换或者关闭端口,BFD状态up则恢复,而且BFD检测支持毫秒级检测,比原有的路由协议超时机制更加灵活。

BFD与静态路由联动
BFD与静态路由联动
BFD与OSPF联动1
BFD与OSPF联动1
BFD与OSPF联动1
BFD与OSPF联动1

总结:BFD是一直简单的状态检测机制,通过互相发送BFD报文以及回复进行链路间状态确认。BFD状态有:Down、Init、Up、AdminDown,BFD可以设置本地发送与接收报文间隔以及检测超时倍数,通过调整3个参数控制报文发送间隔。BFD还支持单臂回声功能,与不支持BFD功能的设备间进行检测。通过BFD状态检测功能与路由协议等进行联动可以实现毫秒级切换。

本文由 mdnice 多平台发布

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不喜欢热闹的孩子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值