华三-BFD

BFD简介

  BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测转发路径的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。BFD可以为各种上层协议(如路由协议)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测。

BFD的基本原理

  BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有发现机制,而是靠被服务的上层协议通知来建立会话。上层协议在建立新的邻居关系后,将邻居的参数及检测参数(包括目的地址和源地址等)通告给BFD;BFD根据收到的参数建立BFD会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发送了故障,并将故障信息通知给该会话所服务的上层应用,由上层应用采取相应的措施。下面以OSPF与BFD联动为例,简单介绍BFD的工作流程。

如图1-1所示,OSPF与BFD联动触发建立会话的流程为:

  1. OSPF通过自己的Hello机制发现邻居并建立连接。
  2. OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。
  3. BFD根据收到的邻居信息建立会话。

图1-1 BFD会话建立流程图

image

 BFD检测到链路故障通知OSPF的流程为:

  1. BFD检测到链路故障,BFD会话状态变为Down。
  2. BFD通知本地OSPF进程BFD邻居不可达。
  3. 本地OSPF进程中断OSPF邻居关系。

图1-2 BFD故障发现处理流程图

image

 单跳检测和多跳检测

BFD可以用来进行单跳和多跳检测:

  • 单跳检测:是指对两个直连设备进行IP连通性测试,这里所说的“单跳”是IP的一跳。例如,如图1-3所示,使用BFD检测Device A和Device B之间的IP单跳路径。

   图1-3单跳检测

image

  •  多跳检测:BFD可以检测两个设备间任意路径的链路情况,这些路径可能跨越很多跳。例如,如图1-4所示,使用BFD检测Device A和Device B之间的IP多跳路径。

   图1-4多跳检测

image

 BFD会话的工作方式

BFD会话通告echo报文和控制报文实现。

  1. echo报文方式
    1. echo报文是一种ICMP的报文,ICMP Echo报文主要用于检测IPv6网络连通性,例如Ping操作通过发送Echo请求并接收应答来确认主机或路径状态。
    2. echo报文封装在UDP报文中传送,该报文IP头中的源IP和目的IP均为本端设备的IP地址,其UDP目的端口号为3785.
    3. 本端发送echo报文建立BFD会话,对链路进行检测。对端不建立BFD会话,只需把收到的echo报文转发回本端。如果在检测时间内没有收到对端转发回的echo报文,则认为会话down。
    4. echo报文方式的BFD会话不需要双方均支持BFD功能,不支持BFD功能的设备接收到echo报文后,直接将该报文环回,从而达到快速检测的目的。    
  2. 控制报文方式
    1. 控制报文封装在UDP报文中发送,对于单跳检测其UDP目的端口号为3784,对于多跳检测其UDP目的端口号为4784。链路两端的设备通过控制报文中携带的参数(会话标识符、期望的收发报文最小时间间隔、本端BFD会话状态等)协商建立BFD会话。  

BFD支持的应用

BFD可以和路由协议、MPLS等联合使用。

链路聚合与BFD联动

IPv4静态路由与BFD联动

IPv6静态路由与BFD联动

RIP与BFD联动

OSPF与BFD联动

OSPFv3与BFD联动

IS-IS与BFD联动

BGP与BFD联动

Track与BFD联动

实验

实验一

IPv4静态路由与BFD联动

拓扑图

image

 实验需求

实现两端的内网之间的流量实现负载均衡与线路的冗余备份。

实验配置

SW1

接口配置

image

image

 BFD配置

image

image

bfd min-echo-receive-interval 100  //配置发送喝接受单跳BFD控制报文的最小时间间隔都为100ms。

bfd detect-multipler 3  //配置单跳BFD检测时间倍数为3。

 静态路由

image

 查看bfd状态

image

查看路由

image

SW2

接口配置

image

image

 BFD配置

image

image

 静态路由

image

 查看BFD状态

image

 查看路由

image

 模拟断网

image

 查看BFD状态

image

image

 在SW1上查看路由

image

 测试通信

image

实验二

RIP与BFD联动

理论

RIP协议依赖周期性发送路由更新请求作为检测机制,当在指定时间内没有收到路由更新回应时,认为此条路由不再生效,这种方式不能快速响应链路故障。使用BFD(Bidirectional Forwarding Detection,双向转发检测)检测到链路故障时,RIP能快速撤销失效路由,减少对其他业务的影响。

RIP支持BFD提供了下面几种检测方式:

  • echo报文单跳检测方式:直连邻居使用。在对端有RIP路由发送时才能建立BFD会话。
  • 指定目的地址的echo报文单跳检测方式:;直连邻居使用,并且在接口上直接指定RIP邻居的IP地址。当该接口使能了RIP功能,会建立到指定目的IP地址的BFD会话。在链路出现单通故障时,本特性可以加快路由收敛速度。链路出现故障时,本端设备不再从该接口收发任何RIP报文,链路恢复后,接口将继续发送RIP报文。
  • control报文双向检测方式:直连邻居和非直连邻居均可以使用。当两端互有RIP路由发送时,且使能BFD的接口与接收接口为同一接口,邻居之间才能建立BFD会话。

第一种实验:RIP与BFD联动(echo报文单跳检测)

拓扑图

image

 组网需求

  • Router A和Router C通过二层交换机互连,它们的接口G0/1都运行RIP进程1。并且Router A的接口G0/1上还开启了BFD检测功能
  • Router A通过Router B与Router C互连,Router A的接口G0/2运行RIP进程2。Router C的接口g0/2、Router B的接口G0/1和G0/2都运行RIP进程1
  • Router C上配置静态路由,并将静态路由引入RIP进程中,使Router C有路由发送至Router A。Router A上学习到Router C发送的静态路由,出接口为与二层交换机相连的接口。
  • 在Router C和二层交换机之间的链路发生故障后,BFD能够快速检测链路中断并通告RIP协议。RIP协议响应BFD会话down,删除与Router C的邻居,并删除从Router C学习的路由。Router A上学习到Router C发送的静态路由,出接口为与Router B连接的接口。

配置

接口配置
RA

image

 RB

image

 RC

image

 路由配置
RA

image

 RB

image

 RC

image

image

 BFD配置
RA

 

image

image

 查看BFD状态

image

 查看120.1.1.0的静态路由从哪里学到的

image

 当Router C和二层交换机之间的链路发生故障时
查看120.1.1.0的静态路由从哪里学到的

image

 可以看到Router A经过Router B到达Router C。

第二种实验:RIP与BFD联动(指定目的地址的echo报文单跳检测)

拓扑图

image

 组网需求

  • Router A和Router B互连,Router A的接口G0/2和Router B的G0/2都运行RIP进程1。Router A的接口G0/2上开启了BFD检测功能,指定目的地址为Router B的接口G0/2的地址
  • Router B与Router C互连,它们的接口G0/1和G0/2都运行RIP进程1
  • Router A和Router C上配置静态路由,并都将静态路由引入RIP进程中,其中Router A引入路由的cost值与Router C引入的Cost值小,这样,当Router B上学习到Router A和Router C发送的路由后,会优选Router A的路由,出接口为与Router A连接的接口。
  • 在Router A和Router B之间的链路发生单通故障(从Router A到Router B方向报文是通的,但是从Router B到Router A方向的链路不通)后,Router A上BFD能够快速检测链路故障并通告RIP协议。Router A上的RIP协议响应BFD会话down,删除从G0/2口学习到的邻居和路由,并不再从该接口接收和发送RIP报文。Router B上在学自Router A的路由老化后,会优选Router C发送的静态路由,出接口为与Router C连接的接口。

配置

接口配置
RA

image

 RB

image

 RC

image

 路由配置
RA

image

image

RB

image

RC

image

image

 BFD配置
RA

image

image

 BFD状态

image

 显示Router B上学到的路由100.1.1.0/24

image

 当Router A和Router B之间的链路发生故障时
显示Router B上学到的路由100.1.1.0/24

image

 第三种实验:RIP与BFD联动(control报文双向检测)

拓扑图

image

 组网需求

  • Router A通过Router B与Router C互连。Router A的接口G0/1和Router C的接口G0/1上都运行RIP进程1。分别再Router A和Router C上配置到达对端的静态路由,并在Router A的接口G0/1和Router C的接口G0/1上开启BFD测试功能。
  • Router A通过Router D与Router C互连。Router A的接口G0/2运行RIP进程2。Router C的接口G0/2、Router D的接口G0/2、G0/1上运行RIP进程1
  • 为使Router A与Router C互有路由发送,Router A与Router C上的RIP协议都要配置引入静态路由。Router A建立至Router C的会话。Router A上学习到Router C发送的静态路由,出接口为与Router B连接的接口。
  • 在Router B与Router C之间的链路发送故障后,BFD能够快速检测链路中断并通告RIP协议。RIP协议响应BFD会话down,删除与Router C的邻居,并删除从Router C学习的路由。Router A上学习到Router C发送的静态路由,出接口为与Router D连接的接口。

配置

接口配置
RA

image

 RB

image

 RC

image

 RD

image

 路由配置
RA

image

peer 192.168.2.2   //缺省情况下,RIP不向任何定点地址发送单播更新报文。配置RIP邻居;功能:通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居。当RIP邻居与当前设备直连时不推荐使用,因为这样可能会造成对端同事收到同一路由信息的组播(或广播)和单播两种形式的报文。

undo validate-source-address  //缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查的功能处于开启状态。当指定的邻居和本地路由器非直连接,则必须关闭对更新报文的源地址进行检查的功能。

这两条命令要一起使用

image

 RC

image

peer 192.168.1.1   //缺省情况下,RIP不向任何定点地址发送单播更新报文。配置RIP邻居;功能:通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居。当RIP邻居与当前设备直连时不推荐使用,因为这样可能会造成对端同事收到同一路由信息的组播(或广播)和单播两种形式的报文。

undo validate-source-address  //缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查的功能处于开启状态。当指定的邻居和本地路由器非直连接,则必须关闭对更新报文的源地址进行检查的功能。

这两条命令要一起使用

image

 RD

image

 BFD配置
RA

image

 bfd session init-mode active   //设置BFD会话建立前的运行模式为主动模式

BFD会话建立前有两种模式:主动模式和被动模式。

  • 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
  • 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。

通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。

image

 RC

image

bfd session init-mode active   //设置BFD会话建立前的运行模式为主动模式

BFD会话建立前有两种模式:主动模式和被动模式。

  • 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
  • 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。

通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。

image

 查看BFD状态

image

 显示Router A上学到的路由100.1.1.0/24

可以看到Router A经过Router B到达Router C

image

 Router B和Router C之间的链路发生故障后
查看Router A上学到的路由100.1.1.0/24

可以看到Router A经过Router D到达Router C

image

实验三

OSPF与BFD联动

理论

  OSPF周期性的向邻居发送Hello报文,如果在设定的时间内没有收到对方发送来的Hello报文,则本地路由器会认为对方路由器无效。这种故障检测所需时间比较长,较长的检测时间会导致数据丢失,无法满足高可靠性需求。

  为了解决上述问题,配置OSPF与BFD(Bidirectional Forwarding Detection,双向转发检测)联动功能,可以快速检测链路的状态,提高链路状态变化时OSPF协议的收敛速度。

OSPF使用BFD来进行快速故障检测时,提供两种检测方式:

  • control报文双向检测:需要建立OSPF邻居的两端设备均支持BFD配置。
  • echo报文单跳检测:仅需要一端设备支持BFD配置。

第一种实验:OSPF与BFD联动(control报文双向检测)

拓扑图

image

 组网需求

  如图所示,某公司通告一台二层交换机作为中继将两个相距较远的部门连接。Device A、Device B、Device C上运行OSPF,建立OSPF邻居关系,保证网络层相互可达。

  已知Device A和Device C都支持BFD功能,要求使用OSPF与BFD联动技术,采用BFD控制报文方式实现当Device A或Device C与二层交换机之间的链路出现故障(如链路down)时,BFD能够快速感知并通告OSPF协议。

现要求通过在Device A和Device C上配置OSPF与BFD联动功能,实现:

  • 监测通过L2 Switch通信的链路
  • 当链路出现故障时设备能够快速感知并通告OSPF协议,快速切换到Device B链路进行通信。

配置

接口配置
SWA

image

image

  SWB

image

image

 SWC

image

image

 SWD

image

 OSPF配置
SWA

image

image

 SWB

image

image

 SWC

image

image

 OSPF状态

image

image

image

 BFD配置
SWA

image

image

bfd min-transmit-interval 500  //设置发送单跳BFD控制报文最小时间间隔为500S

bfd min-receive-interval 500  //设置接收单跳BFD控制报文最小时间间隔为500S

bfd detect-multiplier 7  //设置单跳BFD检测时间倍数为7

SWB

image

image

bfd min-transmit-interval 500  //设置发送单跳BFD控制报文最小时间间隔为500S

bfd min-receive-interval 500  //设置接收单跳BFD控制报文最小时间间隔为500S

bfd detect-multiplier 7  //设置单跳BFD检测时间倍数为7

BFD状态

image

image

 在SWA先查看200.200.200.200的路由走那一条线路,发现是走的SWD的线路

image

 断开SWD的线路,发现200.200.200.200的路由走了SWC的线路

image

第二种实验:OSPF与BFD联动(echo报文单跳检测)

拓扑图

image

组网需求

  如图所示,某公司通告一台二层交换机作为中继将两个相距较远的部门连接。Device A、Device B、Device C上运行OSPF,建立OSPF邻居关系,保证网络层相互可达。

  已知Device A和Device C都支持BFD功能,要求使用OSPF与BFD联动技术,采用BFD控制报文方式实现当Device A或Device C与二层交换机之间的链路出现故障(如链路down)时,BFD能够快速感知并通告OSPF协议。

现要求通过在Device A和Device C上配置OSPF与BFD联动功能,实现:

  • 监测通过L2 Switch通信的链路
  • 当链路出现故障时设备能够快速感知并通告OSPF协议,快速切换到Device B链路进行通信。

配置

接口配置
SWA

image

image

  SWB

image

image

 SWC

image

image

 SWD

image

 OSPF配置
SWA

image

image

 SWB

image

image

 SWC

image

image

 OSPF状态

image

image

image

 BFD配置
SWA

image

image

bfd min-transmit-interval 500  //设置发送单跳BFD控制报文最小时间间隔为500S

bfd min-receive-interval 500  //设置接收单跳BFD控制报文最小时间间隔为500S

bfd detect-multiplier 7  //设置单跳BFD检测时间倍数为7

SWB

image

image

bfd min-transmit-interval 500  //设置发送单跳BFD控制报文最小时间间隔为500S

bfd min-receive-interval 500  //设置接收单跳BFD控制报文最小时间间隔为500S

bfd detect-multiplier 7  //设置单跳BFD检测时间倍数为7

BFD状态

image

image

在SWA先查看200.200.200.200的路由走那一条线路

发现是走的SWD的线路

image

 断开SWD的线路

发现200.200.200.200的路由走了SWC的线路

image

实验四

配置IS-IS与BFD联动

理论

BFD(Bidirectional Forwarding Detection,双向转发检测)能够为IS-IS邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时,BFD能够快速检测到该故障,以加快IS-IS协议的收敛速度。

拓扑图

image

组网需求

如图所示,某公司通过一台二层交换机作为中继将两个相距较远的部门连接。Device A、Device B、Device C上运行IS-IS,建立IS-IS邻居关系,保证网络层相互可达。

已知Device A和Device C都支持BFD功能,公司希望使用IS-IS与BFD联动技术,采用BFD控制报文方式实现当Device A或Device C与二层交换机之间的链路出现故障(如链路down)时,BFD能够快速感知并通告IS-IS协议。

现要求通告在Device A和Device C上配置IS-IS与BFD联动功能,实现:

  • 监测通告L2 Switch通信的链路;
  • 当链路出现故障时设备能够快速感知并通告IS-IS协议,快速切换到Device B链路进行通信。

配置

接口配置

SWA

image

image

  SWB

image

image

 SWC

image

image

 SWD

image

is-is配置

SWA

image

image

 SWB

image

image

 SWC

image

image

 BFD配置

SWA

image

 SWB

image

 查看BFD状态
SWA

image

 SWB

image

在SWA先查看200.200.200.200的路由走那一条线路

发现是走的SWD的线路

image

断开SWD的线路

发现200.200.200.200的路由走了SWC的线路

image

实验五

配置BGP与BFD联动

理论

  BGP协议通告存活时间(keepalive)定时器和保持时间(Holdtime)定时器来维护邻居关系。但这些定时器都是秒级的,而且根据协议规定,设置的保持时间应该至少为存活时间间隔的三倍。这样使得BGP邻居关系的检测比较慢,对于报文收发速度快的接口会导致大量报文丢失。通过配置BGP与BFD联动,可以使用BFD来检测本地路由器和BGP对等体之间的链路。

  配置通过BFD检测本地路由器和指定BGP对等体/对等体组之间的链路之前,需要先在本地路由器和指定BGP对等体/对等体组之间建立BGP会话。

通过本功能配置echo报文方式的BFD检测时,需要注意:

  • echo报文方式的BFD会话只能用于检测与直连对等体之间的链路状态。
  • 通过LoopBack接口建立的BGP会话无法通过echo报文方式检测对等体之间的链路。
  • 需要配置bfd echo-source-ip或bfd echo-source-ipv6命令为echo报文指定源地址,否则本端无法建立BFD会话。

通过链路本地地址建立的BGP会话只能通过控制报文方式的单挑BFD会话检测对等体之间的链路。

  采用控制报文方式的BFD会话检测链路时,本地路由器和BFD对等体采用的BFD检测方式(单跳和多跳)必须相同,否则无法建立BFD会话。

  配置BGP GR功能后,请慎用BGP与BFD联动功能。因为当链路故障时,系统可能还没来得及启用GR处理流程,BFD已经检测到链路故障了,从而导致GR失败。如果设备上同时配置了BGP GR和BGP BFD,则在BGP GR期间请勿关闭BGP BFD,否则可能导致GR失败。

为指定对等体/对等体组配置BFD检测参数(BFD检测时间倍数、接收/发送BFD控制报文的时间间隔)时,需要注意:

  • 对等体在加入对等体组时将同步所加入对等体组的BFD检测参数配置。
  • 配置对等体组的BFD检测参数时,相应配置将同步给组内所有的对等体。
  • 如果对同一个对等体/对等体组的某项BFD检测参数多次进行配置,则以最后一次的配置为准。
  • 对于一个对等体的一项BFD检测参数而言,总是以最后一次的配置为准,无论该配置是通过直接配置获得还是同步对等体组的配置获得。

拓扑图

image

 组网需求

如图,某公司的两个部门相距较远,Device A和Device F分别作为这两个部门的出口设备,则通过部署BGP,使两个部门可以进行业务通信。已知Device B和Device D都支持BFD功能,公司希望使用BGP与BFD联动技术,采用BFD控制报文方式检测AS 200与AS 300之间通信的主链路状态,实现当Device B或Device D之间的链路出现故障(如链路down时),BFD能够快速感知并通告BGP协议。具体要求如下:

  • 在AS 100内使用OSPF作为IGP;
  • 配置Device B< - >Device C< - >Device D链路作为主链路,负责转发Device A和Device F之间的流量,并采用BFD控制报文的方式检测主链路;
  • 当主链路发生故障时,BFD能够快速检测并通告BGP协议,使得迅速切换到Device B< - >Device E< - >Device D这条路径进行通信。

配置

接口配置

Device A

image

 Device B

image

 Device C

image

 Device D

image

 Device E

image

 Device F

image

 OSPF路由配置

Device B

image

 Device C

image

 Device D

image

 Device E

image

BGP路由配置

Device A

image

 Device B

image

 Device D

image

 Device F

image

路由策略

Device B

image

image

 apply local-preference 200  //设置本地优先级为200

image

preference 255 100 130   //配置BGP路由的优先级。缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。

peer 10.2.0.2 route-policy local-pre export   //为ipv4对等体设置基于路由策略的路由修改下一跳策略为出口。

Device D

image

image

 apply local-preference 200  //设置本地优先级为200

image

preference 255 100 130   //配置BGP路由的优先级。缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。

peer 10.1.0.1 route-policy local-pre export   //为ipv4对等体设置基于路由策略的路由修改下一跳策略为出口。

BFD配置

Device B

image

 Device D

image

 验证

Device B查看BGP邻居

image

 Device B查看BFD会话信息

image

 Device B查看120.2.0.0的路由

可以看出Device B通过Device B<->Device C<->Device D这条路径与120.2.0.0/24网段通信

image

image

 在Device B<->Device C<->Device D链路发生故障后

可以看出Device B通过Device B<->Device E<->Device D这条路径与120.2.0.0/24网段通信。

image

image

image

 实验六

策略路由与BFD联动

 

posted @ 2025-08-15 16:10  乐泉1  阅读(61)  评论(0)    收藏  举报