华三-BFD
BFD简介
BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测转发路径的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。BFD可以为各种上层协议(如路由协议)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测。
BFD的基本原理
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有发现机制,而是靠被服务的上层协议通知来建立会话。上层协议在建立新的邻居关系后,将邻居的参数及检测参数(包括目的地址和源地址等)通告给BFD;BFD根据收到的参数建立BFD会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发送了故障,并将故障信息通知给该会话所服务的上层应用,由上层应用采取相应的措施。下面以OSPF与BFD联动为例,简单介绍BFD的工作流程。
如图1-1所示,OSPF与BFD联动触发建立会话的流程为:
- OSPF通过自己的Hello机制发现邻居并建立连接。
- OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。
- BFD根据收到的邻居信息建立会话。
图1-1 BFD会话建立流程图

BFD检测到链路故障通知OSPF的流程为:
- BFD检测到链路故障,BFD会话状态变为Down。
- BFD通知本地OSPF进程BFD邻居不可达。
- 本地OSPF进程中断OSPF邻居关系。
图1-2 BFD故障发现处理流程图

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

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

BFD会话的工作方式
BFD会话通告echo报文和控制报文实现。
- echo报文方式
- echo报文是一种ICMP的报文,ICMP Echo报文主要用于检测IPv6网络连通性,例如Ping操作通过发送Echo请求并接收应答来确认主机或路径状态。
- echo报文封装在UDP报文中传送,该报文IP头中的源IP和目的IP均为本端设备的IP地址,其UDP目的端口号为3785.
- 本端发送echo报文建立BFD会话,对链路进行检测。对端不建立BFD会话,只需把收到的echo报文转发回本端。如果在检测时间内没有收到对端转发回的echo报文,则认为会话down。
- echo报文方式的BFD会话不需要双方均支持BFD功能,不支持BFD功能的设备接收到echo报文后,直接将该报文环回,从而达到快速检测的目的。
- 控制报文方式
- 控制报文封装在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联动
拓扑图

实验需求
实现两端的内网之间的流量实现负载均衡与线路的冗余备份。
实验配置
SW1
接口配置


BFD配置


bfd min-echo-receive-interval 100 //配置发送喝接受单跳BFD控制报文的最小时间间隔都为100ms。
bfd detect-multipler 3 //配置单跳BFD检测时间倍数为3。
静态路由

查看bfd状态

查看路由

SW2
接口配置


BFD配置


静态路由

查看BFD状态

查看路由

模拟断网

查看BFD状态


在SW1上查看路由

测试通信

实验二
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报文单跳检测)
拓扑图

组网需求
- 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

RB

RC

路由配置
RA

RB

RC


BFD配置
RA


查看BFD状态

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

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

可以看到Router A经过Router B到达Router C。
第二种实验:RIP与BFD联动(指定目的地址的echo报文单跳检测)
拓扑图

组网需求
- 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

RB

RC

路由配置
RA


RB

RC


BFD配置
RA


BFD状态

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

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

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

组网需求
- 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

RB

RC

RD

路由配置
RA

peer 192.168.2.2 //缺省情况下,RIP不向任何定点地址发送单播更新报文。配置RIP邻居;功能:通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居。当RIP邻居与当前设备直连时不推荐使用,因为这样可能会造成对端同事收到同一路由信息的组播(或广播)和单播两种形式的报文。
undo validate-source-address //缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查的功能处于开启状态。当指定的邻居和本地路由器非直连接,则必须关闭对更新报文的源地址进行检查的功能。
这两条命令要一起使用

RC

peer 192.168.1.1 //缺省情况下,RIP不向任何定点地址发送单播更新报文。配置RIP邻居;功能:通常情况下,RIP使用广播或组播地址发送报文,如果在不支持广播或组播报文的链路上运行RIP,则必须手工指定RIP的邻居。当RIP邻居与当前设备直连时不推荐使用,因为这样可能会造成对端同事收到同一路由信息的组播(或广播)和单播两种形式的报文。
undo validate-source-address //缺省情况下,对接收到的RIP路由更新报文进行源IP地址检查的功能处于开启状态。当指定的邻居和本地路由器非直连接,则必须关闭对更新报文的源地址进行检查的功能。
这两条命令要一起使用

RD

BFD配置
RA

bfd session init-mode active //设置BFD会话建立前的运行模式为主动模式
BFD会话建立前有两种模式:主动模式和被动模式。
- 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
- 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。
通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。

RC

bfd session init-mode active //设置BFD会话建立前的运行模式为主动模式
BFD会话建立前有两种模式:主动模式和被动模式。
- 主动模式:在建立会话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。
- 被动模式:在建立会话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。
通信双方至少要有一方运行在主动模式才能成功建立起BFD会话。

查看BFD状态

显示Router A上学到的路由100.1.1.0/24
可以看到Router A经过Router B到达Router C

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

实验三
OSPF与BFD联动
理论
OSPF周期性的向邻居发送Hello报文,如果在设定的时间内没有收到对方发送来的Hello报文,则本地路由器会认为对方路由器无效。这种故障检测所需时间比较长,较长的检测时间会导致数据丢失,无法满足高可靠性需求。
为了解决上述问题,配置OSPF与BFD(Bidirectional Forwarding Detection,双向转发检测)联动功能,可以快速检测链路的状态,提高链路状态变化时OSPF协议的收敛速度。
OSPF使用BFD来进行快速故障检测时,提供两种检测方式:
- control报文双向检测:需要建立OSPF邻居的两端设备均支持BFD配置。
- echo报文单跳检测:仅需要一端设备支持BFD配置。
第一种实验:OSPF与BFD联动(control报文双向检测)
拓扑图

组网需求
如图所示,某公司通告一台二层交换机作为中继将两个相距较远的部门连接。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


SWB


SWC


SWD

OSPF配置
SWA


SWB


SWC


OSPF状态



BFD配置
SWA


bfd min-transmit-interval 500 //设置发送单跳BFD控制报文最小时间间隔为500S
bfd min-receive-interval 500 //设置接收单跳BFD控制报文最小时间间隔为500S
bfd detect-multiplier 7 //设置单跳BFD检测时间倍数为7
SWB


bfd min-transmit-interval 500 //设置发送单跳BFD控制报文最小时间间隔为500S
bfd min-receive-interval 500 //设置接收单跳BFD控制报文最小时间间隔为500S
bfd detect-multiplier 7 //设置单跳BFD检测时间倍数为7
BFD状态


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

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

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

组网需求
如图所示,某公司通告一台二层交换机作为中继将两个相距较远的部门连接。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


SWB


SWC


SWD

OSPF配置
SWA


SWB


SWC


OSPF状态



BFD配置
SWA


bfd min-transmit-interval 500 //设置发送单跳BFD控制报文最小时间间隔为500S
bfd min-receive-interval 500 //设置接收单跳BFD控制报文最小时间间隔为500S
bfd detect-multiplier 7 //设置单跳BFD检测时间倍数为7
SWB


bfd min-transmit-interval 500 //设置发送单跳BFD控制报文最小时间间隔为500S
bfd min-receive-interval 500 //设置接收单跳BFD控制报文最小时间间隔为500S
bfd detect-multiplier 7 //设置单跳BFD检测时间倍数为7
BFD状态


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

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

实验四
配置IS-IS与BFD联动
理论
BFD(Bidirectional Forwarding Detection,双向转发检测)能够为IS-IS邻居之间的链路提供快速检测功能。当邻居之间的链路出现故障时,BFD能够快速检测到该故障,以加快IS-IS协议的收敛速度。
拓扑图

组网需求
如图所示,某公司通过一台二层交换机作为中继将两个相距较远的部门连接。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


SWB


SWC


SWD

is-is配置
SWA


SWB


SWC


BFD配置
SWA

SWB

查看BFD状态
SWA

SWB

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

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

实验五
配置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检测参数而言,总是以最后一次的配置为准,无论该配置是通过直接配置获得还是同步对等体组的配置获得。
拓扑图

组网需求
如图,某公司的两个部门相距较远,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

Device B

Device C

Device D

Device E

Device F

OSPF路由配置
Device B

Device C

Device D

Device E

BGP路由配置
Device A

Device B

Device D

Device F

路由策略
Device B


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

preference 255 100 130 //配置BGP路由的优先级。缺省情况下,EBGP路由的优先级为255,IBGP路由的优先级为255,本地产生的BGP路由的优先级为130。
peer 10.2.0.2 route-policy local-pre export //为ipv4对等体设置基于路由策略的路由修改下一跳策略为出口。
Device D


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

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

Device D

验证
Device B查看BGP邻居

Device B查看BFD会话信息

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


在Device B<->Device C<->Device D链路发生故障后
可以看出Device B通过Device B<->Device E<->Device D这条路径与120.2.0.0/24网段通信。



实验六
策略路由与BFD联动

浙公网安备 33010602011771号