APP下载

用BFD技术检测网络故障

2017-11-08

网络安全和信息化 2017年10期
关键词:路由器交换机报文

为提升网络的可靠性,网络设备需要尽可能快地检测到与相邻设备间的通信故障,降低设备故障对业务的影响。在当前网络中,有些链路通过硬件检测信号,但并不是所有的介质都能够提供硬件检测,如DLDP技术,它只能在以太网链路上提供探测机制。此时,就可能需要依靠上层路由协议自身的Hello报文机制来进行故障检测,如OSPF路由协议。但路由协议的Hello包间隔检测时间都在1秒以上,这样的故障检测时间对部分网络环境和应用需求来说是不能接受的,而且如果网络中没有部署路由协议,则无法使用路由协议的Hello报文机制来检测故障。本文通过实例,介绍如何用BFD技术快速检测网络故障。

BFD技术

BFD(Bidirectional Forwarding Detection,双向转发检测)协议是一个专门用于检测两个转发设备之间故障的网络协议,它是一种双向转发检测机制,提供一种轻负载、快速检测两台邻接路由器之间转发路径连通状态的方法,可以为网络链路提供毫秒级的快速检测。它类似于常见动态路由协议中的“Hello”报文,在和邻居间所建立的会话通道上周期性发送检测报文,如果在定义的时间内没有收到对端的检测报文,则认为在这条双向通道的某个部分发生了故障。因此,BFD技术通过与上层路由协议联动,可以协商邻居通过BFD技术快速检测到转发路径的链路故障,以此实现路由的快速收敛,加快启用备份转发路径,确保业务的高可靠性。

BFD报文采用UDP封装,提供的检测机制与所应用的接口介质类型、封装格式、以及关联的上层协议如OSPF、BGP等无关。检测的链路不仅是物理链路,甚至还包括隧道技术等在内的逻辑链路。BFD是双向联动探测行为,两端都要启用,它应用在三层接口上,但交换机不允许在三层聚合端口下进行配置。

BFD工作原理

BFD技术在两台网络设备中建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD技术本身没有发现邻居的能力,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文,则认为该双向转发路径发生了故障,通过快速发送检测故障消息给正在运行的上层协议,通知被服务的上层应用进行相应的处理,以此来触发路由器重新计算路由表,大大减少整个网络的收敛时间。

图1 BFD会话建立流程图

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

1. BFD与OSPF建立会话工作过程

假设上层运行的是OSPF路由协议,两台三层交换机之间由一台交换机实现相连,那么BFD与OSPF建立会话工作过程如图1所示。

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

(2)OSPF在建立邻居关系后,将邻居信息通告给BFD。

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

2. 链路故障检测

当会话建立后,BFD开始进行链路故障检测,如果检测到链路出现故障,就迅速做出反应(如图2)。

(1)三层交换机B和二层交换机之间链路出现故障。

(2)三层交换机A和三层交换机B之间的BFD会话快速检测到链路故障,BFD会话状态变为Down。

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

(4)本地OSPF进程中断OSPF邻居关系,路由信息快速收敛,如果存在备份转发路径,启用备份路径。

BFD会话建立模式

1.主动模式

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

2.被动模式

在建立对话前,不会主动发送建立BFD会话的控制报文,直到收到对端发送来建立BFD会话的控制报文。

BFD检测模式

1.异步模式

网络设备之间相互周期性地发送BFD控制报文,如果某个设备在规定的检测时间内没有收到对端发来的BFD控制报文,就宣布会话状态为Down。

2.查询模式

假定每个设备都有一个独立的方法用来确认连接到其他系统,这样,一旦BFD会话建立起来,设备停止发送BFD控制报文,除非某个设备需要显式地验证连接性,设备才发送一个BFD控制包。如果在检测时间内没有收到返回的报文,就认为会话Down,如果收到对端的回应报文,表示转发路径正常。

3.回声功能

建立会话的一端周期性发送BFD回声报文,对端不对此报文进行处理,而只将此报文转发再发回给发送端。如果发送端在检测周期内连续几个回声报文都没有接收到,会话就被宣布为Down。采用回声报文的检测功能,不需要远端设备的控制面参与,报文通过远端设备的转发面转回,减少了延迟,相对于发送控制报文可以更快的检测到故障。

BFD回声功能可以和上面两种检测模式一起使用。如果在异步模式下启用回声功能,可以大大减少控制报文的发送,因为检测工作由回声功能完成。如果在查询模式下启用回声功能,在会话建立后可以完全取消发送控制报文。但是必须注意BFD会话双方同时启用回声功能,否则回声功能将不生效。此外,回声报文只能用来检测直连网段的链路状态,而BFD控制报文还能检测非直连网段的链路状态。

图3 BFD与静态路由直连网段联动

BFD与静态路由直连网段联动

如图3所示,路由器RA分别连接到两台交换机,形成两条链路连接到路由器RB,通过配置静态路由访问RB上的网段。这里希望让交换机SA作为主链路,当SA不可用情况下,使用浮动静态路由技术,切换到交换机SB备用链路。假设SA和RB中间链路通信中断,由于本端路由器RA无法检测到静态路由的下一跳是否可达,导致静态路由无法收敛,备用链路无法生效,通信出现故障。此时需要在路由器上使用BFD协议作为链路探测协议,开启静态路由和BFD联动来解决该问题,它可以检测出中间网络的中断,并及时切换到备份线路,从而保证网络正常通信。

注:这里使用的设备为锐捷RSR20系列路由器,系统版本为10.3(5b6)p2。

路由器RA的BFD与静态路由联动配置:

路由器RB的BFD与静态路由联动配置

查看路由表,可以看到路由器RA默认使用主链路转发。

在RB上关闭fa0/0接口,模拟交换机SA到RB上的链路故障;然后在RA上再次查看路由表,确认转发路径已经切换到SB上。

同时RA上出现有BFD邻居会话状态关闭的提示,当RB上fa0/0接口恢复正常后,路由器RA又会自动选择到主链路上转发数据。

BFD与OSPF动态路由联动

图4 BFD与OSPF动态路由联动

如图4所示,路由器RA和RB通过二层交换机互连,通过运行OSPF路由协议来建立路由,同时通过在双方接口上关联BFD应用,在RB和二层交换机之间链路发生故障后,BFD能够快速检测并通告OSPF协议,触发协议快速收敛。

路由器RA的BFD与OSPF动态路由联动部分配置

路由器RB的BFD与OSPF动态路由联动部分配置

此时,在路由器RA上通过show bfd neighbers确认BFD邻居状态。

在RA上可以查看OSPF动态路由协议学习到的网段信息。

当交换机和RB上的链路断开后,RA上学习到的OSPF动态路由信息会很快删除,实现了网络路由信息的快速收敛。而如果没有开启BFD功能的话,RA上通过OSPF学习到的相关网段信息仍然存在,直到OSPF协议规定的广播型网络中40秒dead周期到达后,路由信息才会清除。

猜你喜欢

路由器交换机报文
基于J1939 协议多包报文的时序研究及应用
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于地铁交换机电源设计思考
修复损坏的交换机NOS
使用链路聚合进行交换机互联