华为双向转发检测BFD应用的11个场景

科技   2025-01-02 17:20   河北  

1. BFD检测IP链路

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

  • BFD单跳检测是指对两个直连系统进行IP连通性检测,“单跳”是IP链路的一跳。
  • BFD多跳检测是指BFD可以检测两个系统间的任意路径,这些路径可能跨越很多跳,也可能在某些部分发生重叠。

# 组网应用

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

BFD检测多跳链路BFD检测SwitchASwitchC之间的IP多跳路径,BFD会话绑定对端IP但不绑定出接口。

2. BFD单臂回声功能

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

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

# 组网应用

如下图,SwitchA支持BFD功能,SwitchB不支持BFD功能。在SwitchA上配置单臂回声功能的BFD会话,检测SwitchASwitchB之间的单跳路径。SwitchB接收到SwitchA发送的BFD报文后,直接在网络层将该报文环回,从而快速检测SwitchASwitchB之间的直连链路的连通性。

3.BFD与接口状态联动

BFD与接口状态联动提供一种简单的机制,使得BFD检测行为可以关联接口状态,提高了接口感应链路故障的灵敏度,减少了非直连链路故障导致的问题。BFD检测到链路故障会立即上报Down消息到相应接口,使得接口进入一种特殊的Down状态:BFD Down状态。该状态等效于链路协议Down状态,在该状态下只有BFD的报文可以正常处理,从而使接口也可以快速感知链路故障。

# 组网应用

链路中间存在其他设备,虽然三层仍是直连,但由于实际物理线路分段,一旦链路故障,两端设备需要比较长的时间才能检测到,导致直连路由收敛慢,网络中断时间长。在SwitchASwitchB上配置BFD会话,配置接口联动后,当BFD检测到链路出现故障,立即上报Down消息到相应接口,使接口进入BFD Down状态。

4.BFD与静态路由联动

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

BFD for静态路由可为每条静态路由绑定一个BFD会话,在自身满足参与选路条件的前提下,静态路由最终是否能参与选路还受BFD会话检测状态影响。

  • 当某条静态路由上的BFD会话检测到链路故障(BFD会话检测状态为Down)时,BFD会将故障上报系统,系统将这条路由从IP路由表中删除。
  • 当某条静态路由上的BFD会话检测到故障的链路重新建立成功(BFD会话检测状态为Up)时,BFD会上报系统,系统将这条路由加入IP路由表。
  • 缺省情况下,当BFD会话状态处于Admin downshutdown命令触发)或邻居Admin down时,与该BFD会话绑定的静态路由可以参与选路。但是在系统整机重启场景下,BFD会话需要重新协商,静态路由是否能参与选路以BFD重新协商状态为准。

BFD for静态路由有单跳检测和多跳检测两种方式。

  • 单跳检测

    对于非迭代的静态路由,所配置的出接口和下一跳就是直连下一跳信息。这样,BFD会话的出接口即静态路由的出接口,对端地址即路由的下一跳。

  • 多跳检测

    对于迭代的静态路由,仅配置了下一跳,需要迭代出直连下一跳和出接口。这样,BFD会话的对端地址为路由的原始下一跳,出接口则不限。一般情况下,迭代的原始下一跳是多跳的,非直接可达,故支持迭代的静态路由进行多跳检测。

5.BFD与OSPF联动

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

BFDOSPF联动就是将BFDOSPF协议关联起来,通过BFD对链路故障的快速感应进而通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。下表显示了OSPF协议是否绑定BFD时收敛速度的数据:

是否绑定BFD链路故障检测机制收敛速度
未绑定BFDOSPF HELLO keepalive定时器超时秒级
绑定BFDBFD会话Down毫秒级

# 组网应用

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

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

6.BFD与IS-IS联动

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

BFDIS-IS联动是指BFD会话由IS-IS协议动态创建,不再依靠手工配置,当BFD检测到故障时,通过路由管理通知IS-IS协议,由协议进行相应邻居Down处理,快速更新LSP信息和进行增量路由计算,从而实现IS-IS路由的快速收敛。使用BFD并不是代替IS-IS协议本身的Hello机制,而是配合IS-IS协议更快的发现邻居方面出现的故障,并及时通知IS-IS重新计算相关路由以便正确指导报文的转发。

下表显示了IS-IS协议是否绑定BFD时收敛速度的数据:

是否绑定BFD链路故障检测机制收敛速度
未绑定BFDhello报文机制秒级
绑定BFDBFD会话Down毫秒级

# 组网应用

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

7.BFD与BGP联动

BGP协议通过周期性的向对等体发送Keepalive报文来实现邻居检测机制,但这种机制检测到故障所需时间比较长,超过1秒钟。当数据达到吉比特速率级别时,将会导致大量的数据丢失。因此,BGP协议通过引入BFDBGP联动功能,利用BFD的快速检测机制,迅速发现BGP对等体间链路的故障,并报告给BGP协议,从而实现BGP路由的快速收敛。

下表显示了BGP协议是否绑定BFD时收敛速度的数据:

是否绑定BFD链路故障检测机制收敛速度
未绑定BFDkeepalive报文机制秒级
绑定BFDBFD会话Down毫秒级

# 组网应用

如下图,SwitchASwitchB分别属于AS100AS200,两台交换机直接相连并建立EBGP连接。使用BFD检测SwitchASwitchB之间的BGP邻居关系,当SwitchASwitchB之间的链路发生故障时,BFD能够快速检测到故障并通告给BGP协议。

8.BFD与MPLS LSP联动

LSP链路上建立BFD会话,利用BFD检测机制快速检测LSP链路的故障,可以提供端到端的保护。使用BFD检测单向LSP路径时,反向链路可以是IP链路、LSPTE隧道。检测MPLS LSP的连通性时,BFD会话协商有静态配置BFD和动态创建BFD两种方式,其中,动态创建BFD方式只支持动态LSP,静态配置BFD方式则支持静态和动态LSP

BFD检测LSP的连通性,即IngressEgress之间相互周期性地发送BFD报文。如果任何一端在检测时间内没有收到对端发来的BFD报文,就认为LSP状态为Down,并向LSPM上报LSP Down消息。

# 组网应用

如下图,为简化起见,只考虑从PE1CE2的流量。当PE1P1之间的链路发生故障时,PE1可以通过和P1相连的接口感知到故障。但是如果P1PE2之间的链路发生故障,则PE1无法通过接口感知,这时需要结合BFD与动态LSP联动来进行快速故障检测。

PE1上有到PE2的动态LSP,配置BFD与动态LSP联动为这条动态LSP建立BFD会话并进行检测,同时在PE1上配置VPN FRR的相关策略,指定保护路径为PE1PE3。当PE1P1或者P1PE2之间的链路发生故障时,PE1上能迅速感知到LSP故障,并触发VPN FRR切换,使流量切换到PE1PE3PE3CE2,实现保护。

9.BFD与MPLS TE联动

BFDMPLS TE联动是MPLS TE中的一种端到端的快速检测机制,用于快速检测隧道所经过的链路中所发生的故障。传统的检测机制依靠RSVP Hello或者RSVP刷新超时等进行检测,都有检测速度慢的缺点。BFD检测机制采用快速收发报文的机制,完成这些隧道链路故障的快速检测,从而引导承载业务的快速切换,达到保护业务的目的。

BFD支持的MPLS TE类型有:

  • 静态BFD与TE CR-LSP联动

    静态BFDTE CR-LSP联动使用BFD检测CR-LSP,做到快速发现LSP故障。BFD会话需要手动配置。

  • 静态BFD与TE Tunnel联动

    静态BFDTE Tunnel联动使用BFD检测整条TE隧道,触发VPN FRR等应用进行流量切换。

  • 动态BFD与TE CR-LSP联动

    动态BFDTE CR-LSP联动的作用和静态BFDTE CR-LSP联动相同。所不同的是建立BFD会话的方式,动态BFDTE CR-LSP联动的BFD会话动态触发。

其中,BFDTE Tunnel联动与BFDCR-LSP联动的区别是故障通告的对象不同。BFDTE Tunnel联动是向VPN等应用通告故障,触发业务流在不同隧道接口上的切换;BFDCR-LSP联动是向TE隧道通告故障,触发业务流在同一TE隧道内的不同CR-LSP上的切换。

通过和LSP绑定,在IngressEgress之间建立BFD会话。BFD报文从源端开始经过LSP到达宿端,宿端再对该BFD报文进行回应,通过此方式在源端可以快速检测出LSP所经过链路的故障状态。当检测出链路故障以后,BFD将此信息上报给承载在该LSP上面的应用模块,应用再将流量切换到备份路径上。

# 组网应用

  • BFD与TE CR-LSP联动

如下图所示,在设备S1和设备S2之间建立一条主Tunnel,同时配置热备份LSP。在设备S1上建立一个到设备S2BFD会话,用于检测该Tunnel中的主LSP。当主LSP链路出现故障时,BFD会快速通知设备S1。收到故障信息以后,设备S1会立即将流量切换到热备份LSP上,从而保证流量的不中断性。

  • BFD与TE Tunnel联动

如上图所示,在设备S1P2P2到设备S2之间建立一条主Tunnel,同时在设备S1P3P3到设备S2之间建立一条备份Tunnel。在路径设备S1P2P2到设备S2上建立一个BFD会话,用于检测主Tunnel的路径。当主链路出现故障时,BFD会快速通知设备S1。收到故障信息以后,S1会立即将流量切换到备份Tunnel上,从而保证了流量的不中断。

10.BFD与VRRP联动

VRRP的协议关键点是当Master出现故障时,Backup能够快速接替Master的转发工作,保证数据流的中断时间尽量短。

Master出现故障时,VRRP依靠Backup设置的超时时间来判断是否应该抢占,切换速度在1秒以上。将BFD应用于BackupMaster的检测,可以实现对Master故障的快速检测,缩短用户流量中断时间。BFDBackupMaster之间的实际地址通信情况进行检测,如果通信不正常,Backup就认为Master已经不可用,升级成MasterVRRP通过监视BFD会话状态实现主备快速切换,切换时间控制在50毫秒以内。

# 组网应用

如下图所示,SwitchASwitchB之间配置VRRP备份组建立主备关系,SwitchA为主用设备,SwitchB为备用设备,用户过来的流量从SwitchA出去。在SwitchASwitchB之间建立BFD会话,VRRP备份组监视该BFD会话,当BFD会话状态变化时,通过修改备份组优先级实现主备快速切换。

备份组优先级实现主备快速切换流程如下:

1)BFD检测到SwitchASwitchC之间的链路故障时,上报给VRRP一个BFD检测Down事件。

2)SwitchBVRRP备份组的优先级增加,增加后的优先级大于SwitchA上的VRRP备份组的优先级。

3)于是SwitchB立刻升为Master,后继的用户流量就会通过SwitchB转发,SwitchA成为备用设备。

11.BFD与PIM联动

正常情况下,如果共享网段上的当前DRDesignate Router)出现故障,其他PIM邻居会等到邻居关系超时才触发新一轮的DR竞选过程,组播数据传输中断的时间将会不小于邻居关系的超时时间,通常是秒级。

BFDPIM联动的特点是可以进行快速故障检测,能够在毫秒级别内通知PIM模块触发新一轮的DR竞选,而不是等到邻居关系超时。

BFDPIM联动同时也适用于共享网段上Assert竞选的过程,可以快速响应Assert Winner接口故障。

下表显示了PIM协议是否绑定BFD时收敛速度的数据:

是否绑定BFD链路故障检测机制收敛速度
未绑定BFD邻居关系超时秒级
绑定BFDBFD会话Down毫秒级

# 组网应用

如下图,在与用户主机相连的共享网段上,SwitchC的下游接口Interface1SwitchD的下游接口Interface2之间建立PIM BFD会话,通过在链路两端发送BFD检测报文检测链路状态。

SwitchC作为当前DR,下游接口Interface1负责接收端组播数据的转发。若接口Interface1发生故障,BFD快速把会话状态通告给RM,再由RM通告给PIMPIM模块触发新一轮的DR竞选,SwitchD作为新当选的DR,下游接口Interface2在短时间内向接收端转发组播数据,从而缩小组播数据传输的中断时间。


Python运维实践
Python运维实践,专注于互联网技术的总结与交流,内容涉及Python自动化运维、Django框架、园区网络技术、linux云计算、系统架构及网络空间安全等知识的实践与分享。
 最新文章