双向转发检测BFD

2021-04-28 10:16:18 8341

一、BFD概述

双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的、与介质和协议无关的快速链路故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况,若出现故障可通知上层应用。BFD由IETF的RFC 5880定义。

BFD是一种提高网络可靠性的非常重要的技术,能实现与接口状态、静态路由、RIP路由、IS-IS路由、OSPF路由和BGP路由、VRRP等的联动。(即根据BFD会话状态实现接口状态改变、路由收敛和VRRP主备切换等。) 

二、BFD检测原理

原先的故障检测方法有SDH告警、慢Hello机制等。SDH告警是通过硬件检测来发现故障的,虽然发现速度快,但并不是所有介质都能提供硬件检测;慢Hello机制检测到故障所需时间为秒级,对于高速数据传输,超过1秒的检测时间将导致大量数据丢失,并且慢Hello机制依赖于路由协议,若网络中没有部署路由协议则无法使用慢Hello机制。

BFD可解决上述机制的不足,BFD可在两台网络设备间建立用来检测设备间双向转发路径的BFD会话,为上层应用服务。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。

 三、BFD会话建立与管理

1.BFD的会话建立

BFD会话的主要区别在于本地标识符和远端标识符,BFD通过控制报文中的本地标识符和远端标识符来区别不同的BFD会话。

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

a)静态建立BFD会话

静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。建立静态BFD会话又可包括两种方式:手动指定标识符的静态BFD会话、标识符自协商的静态BFD会话。

b)动态建立BFD会话

动态BFD联动会话主要是由各种路由协议触发,如RIP、OSPF等。在建立动态BFD会话时,系统对本地标识符和远端标识符所采用的方式不同:动态分配本地标识符、自动学习远端标识符。

2.BFD的检测机制

BFD的检测机制是先在两个系统间建立BFD会话,然后沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到对方发来的BFD控制报文或者自己发送的BFD报文返回(配置单臂回声功能时发送的报文,下文的BFD应用会介绍),则认为路径上发生了故障。BFD提供了两种检测模式,分别是异步模式、查询模式。

异步模式:BFD的主要操作模式为异步模式。在这种模式下,系统之间相互周期性地单独发送BFD控制报文,如果某个系统在既定的时间内没有接收到对方发送过来的BFD报文,就认为BFD会话的状态是Down。

查询模式:当一个系统中存在大量BFD会话时,为防止周期性发送BFD控制报文的开销影响到系统的正常运行,可以采用查询模式。在查询模式下,一旦BFD会话建立,系统就不再周期性发送BFD控制报文,而是通过其他与BFD无关的机制检测连通性(比如路由协议的Hello机制、硬件检测机制等),从而减少BFD会话带来的开销。

3.BFD的会话管理

BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态的变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。


微信图片_20210428101923.jpg


四、BFD的报文格式


2.png

(强制部分的格式)


Vers:Version,BFD协议版本号,目前版本号为1。

Diag:Diagnostic诊断码,表明发送方最近一次会话Down的原因。

Sta:State状态码,表示发送方BFD会话当前状态,0表示AdminDown,1表示Down,2表示Init,3表示Up。

P:Poll,会话参数变化时置位,发送方在BFD报文中置该标志,接收方必须立即响应该报文。1表示发送系统请求进行连接确认,或者发送请求参数改变的确认。0表示发送系统不请求确认。

F:Final,响应P标志置位的回应报文中必须将F标志置位。1表示发送系统响应一个接收到P比特为1的BFD包。0表示发送系统不响应一个P比特为1的包。

C:Control Plane Independent控制/转发分离标志,1表示BFD报文在转发平面传输,即使控制平面失效,BFD仍然能够起作用。0表示BFD报文在控制平面传输。

A:Authentication,认证标识,置1代表会话需要进行验证。

D:Demand,查询请求,置1表示发送系统希望工作在查询模式。置0表示发送系统不希望、或不能工作在查询模式。

M:Multipoint,为BFD将来支持点对多点扩展而设的预留位。

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

Length:报文长度,单位为字节。

My Discriminator:BFD会话连接本地标识符。发送系统产生的一个唯一的、非0鉴别值,用来区分一个系统的多个BFD会话。

Your Discriminator:BFD会话连接远端标识符。从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0。

Desired Min TX Interval:本地支持的最小BFD报文发送间隔,单位为微秒。

Required Min RX Interval:本地支持的最小BFD报文接收间隔,单位为微秒。

Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒(如果本地不支持Echo功能,则设置0)。


3.jpg

(控制报文可选部分的格式)


Auth Type:认证类型。

Auth Len:认证字段的长度。

Authentication Data:认证字段净荷。

五、BFD的应用场景

1.BFD检测IP链路

在IP链路上建立BFD会话,可以利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测。

单跳检测:是指对两个直连系统进行IP连通性检测。

多跳检测:是指BFD可以检测两个系统间的任意路径,这些路径可能跨越很多跳,也可能在某些部分发生重叠。

2.BFD单臂回声

单臂回声功能是指通过BFD报文的环回来检测转发链路的连通性,主要应用于两台直连设备中只有一台支持BFD功能的情况,具体的机制是:在支持BFD功能的设备上配置单臂回声功能,向对端主动发起回声请求,对端不支持BFD功能的设备收到请求报文后直接将其环回(即只作环回转发,不作其他任何处理),从而实现转发链路的连通性检测功能。

3.BFD与各种路由的联动

BFD可以与静态路由、RIP路由、OSPF路由、IS-IS路由、BGP路由等进行联动(联动指的是互相快速响应、配合工作)。

a)BFD与静态路由联动

BFD与静态路由联动特性可为公网静态路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态。

b)BFD与OSPF联动

BFD与OSPF联动是通过BFD对链路故障的快速感应来通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。(BFD相对于OSPF的快速检测体现在BFD的检测速度是毫秒级的,OSPF只是秒级,IS-IS、BGP等都是秒级。)

c)BFD与IS-IS联动

BFD与IS-IS联动是指BFD会话由IS-IS协议动态创建,不再依靠手动配置。当BFD检测到有故障时,通过路由管理模块通知IS-IS协议,由协议进行相应邻居Down处理,快速更新LSP信息和重新进行路由计算,从而实现IS-IS路由的快速收敛。

d)BFD与BGP联动

BGP传输的速率会比较大,当发生故障时会导致大量数据丢失,所以通过BFD的快速检测可迅速发现BGP对等体间链路的故障,从而实现BGP路由的快速收敛。



提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: