bfd简介

 

 

BFD(双向转发检测)

一、背景

1IGP路由的收敛时间构成:

1. 失效链路检测时间。

2. 报告拓扑变化的新LSA/LSP的泛洪时间。

3. 各路由器的路由表计算时间(包括SPF计算时间和路由表计算及线卡FIB更新时间)。

 

2、一般路由协议的慢Hello机制,故障检测只是其功能之一。比如ospf协议hello报文作用:

1)、  发现 OSPF 邻居并建立相邻关系。

2)、 通告两台路由器建立相邻关系所必需统一的参数。

3)、  在以太网和帧中继网络等多路访问网络中选举指定路由器 (DR) 和备用指定路由器 (BDR)

4)、  故障检测。

hello报文作用多,以及hello包发送采用泛洪方式。因此该报文发送间隔不能到毫秒级。


二、BFD简介

    从本质上讲,BFD是一种高速的独立HELLO协议。

    与以往的其他“Hello”检测机制相比,BFD只检测下一跳设备连接状态,具有轻负荷、灵敏度高、适应范围广的检测特点。BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直接的物理链路、虚电路、隧道、MPLS LSP、多跳路由通道,以及非直接的通道(如跨接二层以太网)。同时正是由于BFD实现故障检测的简单、单一性,致使BFD能够专注于转发故障的快速检测,帮助网络以良好QoS实现各类业务的传输。

目前BFD支持OSPFISISBGP等全部主流路由协议。当邻居关系建立后,路由器将告诉BFD协议去检测邻接连接状态。BFD检测报文在路由器的FIB表中具有高的优先级,并且通过unicast形式相互传播,可保证监测链路拥塞时也不会影响BFD报文的传送。

 

  BFD能够与相邻系统建立对等关系,然后,每个系统以协商的速率监测来自其他系统的BFD速率。监测速率能够以毫秒级增量设定。当对等系统没有接到预先设定数量的数据包时,它推断BFD保护的软件或硬件基础设施发生故障,不管基础设施是标记交换路径、其他类型的隧道还是交换以太网络。BFD部署在路由器和其他系统的控制平面上。BFD检测到的网络故障可以由转发平面恢复或由控制平面恢复。

 

   BFD提供了一个标准化的与介质和上层协议无关的快速故障检测机制,BFD具有以下优点:

1. 对两个网络节点之间的链路进行双向故障检测,链路可以是物理链路也可以是逻辑链路(如LSP、隧道等)

2. 可以为不同的上层应用(如MPLSOSPFIS-IS等)提供故障检测的服务,并提供相同的故障检测时间。

3. BFD的故障检测时间远小于1秒,可以更快地加速网络收敛,减少上层应用中断的时间,提高网络的可靠性和服务质量。

 

    BFD会话建立时,有两种建立模式和一种回声辅助功能

- 异步模式: 在此模式下,网络节点双方会周期性地发送BFD控制报文,如果在检测时间内没有收到对端的BFD控制报文则认为对应的链路出现故障。
- 查询模式: 假定每个系统都有一个独立的方法,确认自己连接到其他系统。这样,只要有一个BFD会话建立,系统就停止发送BFD控制报文,除非某个系统需要显式地验证连接性。如果要显式地验证连接性,系统发送一个短系列的BFD控制包,如果在检测时间内没有收到返回的报文就宣布会话为Down;如果收到对端的回应报文,协议再次保持沉默。
回声功能:本地发送一系列的bfd回声报文,远端系统通过它的转发通道将它们环回回来,如果本
地连续几个回声报文没有收到,会话就会宣布down。

 

BFD报文格式:

BFD会话建立方式:

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

1、静态建立BFD会话

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

2、动态建立BFD会话

      动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:

1)动态分配本地标识符

   当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0BFD控制报文,进行会话协商。

2)自学习远端标识符

     当BFD会话的一端收到Remote Discriminator的值为0BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。

 

BFD会话建立简介:

   BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。下面以OSPF与BFD联动为例,简单介绍会话工作流程。

图:会话建立图

上图所示是一个简单的网络组网,两台设备上同时配置了OSPF与BFD,BFD会话建立过程如下所示:

  1. OSPF通过自己的Hello机制发现邻居并建立连接。

  2. OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。

  3. BFD根据收到的邻居信息建立会话。

  4. 会话建立以后,BFD开始检测链路故障,并做出快速反应

图:BFD发现故障图

 

如上图所示:

  1. 被检测链路出现故障。

  2. BFD快速检测到链路故障,BFD会话状态变为Down。

  3. BFD通知本地OSPF进程BFD邻居不可达。

  4. 本地OSPF进程中断OSPF邻居关系。

 

BFD会话管理:

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

三、应用场景

 1、BFD检测IP链路

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

BFD单跳检测:

是指对两个直连系统进行IP连通性检测,“单跳”是IP链路的一跳。

BFD多跳检测:

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

 典型应用一:

图:BFD检测单跳链路

如图所示,BFD检测两台设备之间的IP单跳路径,BFD会话绑定出接口。

图:BFD检测多跳链路

如图所示,BFD检测SwtichA和SwtichC之间的IP多跳路径,BFD会话绑定对端IP但不绑定出接口。

 

2、BFD单臂回声功能

单臂回声功能是指通过BFD报文的环回操作检测转发链路的连通性。

在两台直接相连的设备中,其中一台设备支持BFD功能,另一台设备不支持BFD功能,只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在支持BFD功能的设备上创建单臂回声功能的BFD会话。

支持BFD功能的设备主动发起回声请求功能,不支持BFD功能的设备接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。

单臂回声功能只适用于单跳BFD会话中。

图:BFD单臂回声

如上图所示,SwitchA支持BFD功能,SwitchB不支持BFD功能。在SwitchA上配置单臂回声功能的BFD会话,检测SwitchA到SwitchB之间的单跳路径。

SwitchB接收到SwitchA发送的BFD报文后,直接在网络层将该报文环回,从而快速检测SwitchA和SwitchB之间的直连链路的连通性。

 3、BFD与接口状态联动

BFD与接口状态联动提供一种简单的机制,使得BFD检测行为可以关联接口状态,提高了接口感应链路故障的灵敏度,减少了非直连链路故障导致的问题。

BFD检测到链路故障会立即上报Down消息到相应接口,使得接口进入一种特殊的Down状态:BFD Down状态。该状态等效于链路协议Down状态,在该状态下只有BFD的报文可以正常处理,从而使接口也可以快速感知链路故障

图:BFD与接口状态联动

如上图所示,链路中间存在其他设备,虽然三层仍是直连,但由于实际物理线路分段,一旦链路故障,两端设备需要比较长的时间才能检测到,导致直连路由收敛慢,网络中断时间长。

在SwitchA和SwitchB上配置BFD会话,配置接口联动后,当BFD检测到链路出现故障,立即上报Down消息到相应接口,使接口进入BFD Down状态。

4、BFD与静态路由联动

与动态路由协议不同,静态路由自身没有检测机制,当网络发生故障的时候,需要管理员介入。BFD与静态路由联动特性可为公网静态路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态。

BFD与静态路由联动可为每条静态路由绑定一个BFD会话,当这条静态路由上绑定的BFD会话检测到链路故障(由Up转为Down)后,BFD会将故障上报路由管理系统,由路由管理模块将这条路由设置为“非激活”状态(此条路由不可用,从IP路由表中删除)。

当这条静态路由上绑定的BFD会话成功建立或者从故障状态恢复后(由Down转为Up),BFD会上报路由管理模块,由路由管理模块将这条路由设置为“激活”状态(此路由可用,加入IP路由表)。

 

5、BFD与OSPF联动

    网络上的链路故障或拓扑变化都会导致路由的重新计算,要提高网络的可用性,缩短路由协议的收敛时间非常重要。由于链路故障无法完全避免,因此,加快故障感知速度并将故障快速通告给路由协议是一种可行的方案。

    BFD与OSPF联动就是将BFD和OSPF协议关联起来,通过BFD对链路故障的快速感应进而通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。

图:BFD与OSPF联动

如上图所示,SwitchA分别与SwitchC和SwitchD建立OSPF邻居关系,SwitchA到SwitchB的路由出接口为Interface 1,经过SwitchC到达SwitchB。邻居状态到达FULL状态时通知BFD建立BFD会话。

    当SwitchA和SwitchC之间链路出现故障,BFD首先感知到并通知SwitchA。SwitchA处理邻居Down事件,重新进行路由计算,新的路由出接口为Interface 2,经过SwitchD到达SwitchB。

6、BFD与IS-IS联动

    通常情况下,IS-IS设定发送Hello报文的时间间隔为10秒钟,相邻设备失效的时间一般配置为Hello报文间隔的3倍。若在相邻设备失效时间内没有收到邻居发来的Hello报文,将会删除邻居。设备能感知到邻居故障的时间最小也是秒级。在高速的网络环境中,这将导致报文大量丢失。

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

    使用BFD并不是代替IS-IS协议本身的Hello机制,而是配合IS-IS协议更快的发现邻居方面出现的故障,并及时通知IS-IS重新计算相关路由以便正确指导报文的转发。

图:BFD与IS-IS联动

    如上图所示,在各设备上使能了IS-IS功能,在SwitchA和SwitchB上配置了BFD与IS-IS联动。当SwitchA和SwitchB之间的链路故障时,BFD能够快速检测到故障并通告给IS-IS协议,IS-IS Down掉此接口的邻居,从而触发拓扑计算,同时更新LSP使得其他邻居(如SwitchB的邻居SwitchC)及时收到SwitchB的更新LSP,实现了网络拓扑的快速收敛。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页